| 
        
       | 
      
        
          
            
              
                        
|                        
   | 
                 
                        
                                                      ASIC/FPGA  Design and Verification Out Source Services 
                            A simple system C test-bench for an AIS detect DUT 
                            
                            - For me system C is a great, license-free and high performance hardware simulator with the C++ as a verification engine.
 
                            - The purpose of this verification project is to verify an AIS detect DUT. The DUT detects AIS as explained below:
 
                            - The DUT declares an AIS if there are less than two zero bits in last two sequences of 512 bits in an input stream.
 
                            - The input stream is recieved via a simple interface: data byte and data byte valid.
 
                            - Once getting into an AIS state, at least six zero bits out of the last 1024 input bits are required to exit a formerly declared AIS state.
 
                            - The test bench is built of the following verification modules:
 
                            - Since the DUT interface is fairly simple, there is no seperate layer responsible for collecting the data from the DUT. Instead data collection is done in the monitor module.
 
                            - This simple monitor has a single positive edge clock method. Data is collected and according to the detected state (AIS or not AIS) a decision is taken. After reset, the module waits for the appropriate bits of data to arrive and than checks every cycle on last collected 512 or 1024 bits.
 
                             
                            - The monitor has also one non time consuming function, which calculates the number of zero bits in a given input data byte.
 
                            - The generator of the test bench generates the following items:
 
                            - It generates a clock for both DUT and the assorted modules in the test bench.
 
                            - It has a data generator, to generate specific cases of getting into AIS or out of AIS. This module was initially tested in a stand alone mode as described in 
  SCV data GEN 
                            - The scoreboard module checks that DUT data behaves in a same way as the expected data coming out of a reference model with the following features.
 
                            - Comparison made via a scoreboard to achieve a non cycle by cycle accurate DUT to expected test. This model of score boarding allows DUT design flexibility by self adjustment of the verification environement to DUT processing delay.
 
                            - Check alive mechanism. A simple counter implementation checks that both DUT and the expected AIS toggle. This is to say that each expected AIS state toggle must be followed by a DUT one.
 
                            - A pair of ignore counters, with programmable startup values, to eliminate a possible false alarm, until DUT setup.
 
                            - Error report on failure and optionally a simulation stop the test on fatal error, saving disk space and simulation run time during regression. Once an error is detected, the simulation can be stopped after a programmable number of cycles.
 
                             
                             
                             
                            - The sample module is a specific requirement of this very AIS detect DUT.
 
                            - The DUT is fully combinatorial. It is designed to be used in multiple places in the chip, with higher hierarchies of the design doing the sampling.
 
                            - The top's module task is to connect the assorted verification modules.
 
                            - The main runs the test and record waves.
 
                            - The systemc main module also handles the seed. If an argument is given on the command line, it is treated as seed otherwise a seed of one is used.
 
                            - Coverage is a way to tell if we have done enough tests during regression. The covergae specification for the AIS detect verilog DUT is explained in the following page:  coverage. 
  
                            - A regression script is also available at  regression script. 
  
                            - A regression how to run guide also exists at  
  coverage.  
                            - The code is available at the download area. Look for the tar ball: pdh_ais_e1_m_main.cpp.gz.
 
                             
                             
                         |  
 
                               
                               
                                 
                       
 
    Search This Site
 
    Feedback This Site
 
    new pages on this site
  
             | 
           
         
       |