The document describes the functional verification of a CAN controller design. It discusses verifying that the design meets the CAN specification through the creation of a flexible verification environment using a combination of black box, white box and grey box verification approaches. The environment contains test cases, emulators to simulate the microcontroller and CAN nodes, and a response checker. A variety of test categories and procedures are used to verify behaviors like message framing, arbitration, error detection and signaling.