| 
 
  
  
  
  
  
   |  | Testbenches
  
    | Description | Synthesizable Circuit
 | Testbench |  
    | Simple demonstration of testbench technique | demo.v | demo_TB.v |  
    | Use a "for" loop to efficiently test all 
    possible input combinations of a combinational circuit | combi_ckt.v | combi_ckt_TB.v |  
    | Include text comments in your waveform output 
    to facilitate interpretation |  | comments.v |  
    | Use a "task" to automate the production of 
    waveforms |  | taskdemo.v |  Finite State Machines
  
    | Description | Synthesizable Circuit
 | Testbench |  
    | FSM using separate 'always' blocks for next-state decoder, 
    output decoder, and state register | fsm_example.v | fsm_example_TB.v |  Sequential Circuits
  
    | Description | Synthesizable Circuit
 | Testbench |  
    | Counter with variable step size, and controls for count 
    direction, count enable, and initial value | seq4.v | seq4_TB.v |   Compiler Directives
  
    | Description | Synthesizable Circuit
 | Testbench |  
    | Use an "`ifdef" compiler directive to set a parameter to one 
    value for simulation and another value for synthesis. 
    Particularly  useful for clock divider circuits that require a small 
    value for simulation and a large value for synthesis. | ifdef.v |  |  |