image

image
image
image

image


Our Design Methodology

Verien stands for "Verified Engineering", and the check mark in our logo is no accident. At Verien, we simulate at a much higher level than other engineers. This means providing behavioral models for all of the off-the-shelf system elements and using pseudo-code models as the stimulus source for the simulation. In some cases, we've converted diagnostics written in C to VHDL and used these to verify the design.


Pseudo-Code Modeling
Verien has developed intellectual property in the form of templates used to quickly produce bus-functional models of processors and standard busses with stimulus generated by pseudo-code. For example, the following VHDL code could be used to generate the bus cycles to initialize a block of memory:


FOR i IN MEM_START TO MEM_END LOOP
      burst_read(address);
      write(address, data);
END LOOP;


A much more elaborate example can be found here. This is the pseudo-code test for a two chip frame grabber. The simulation testbench for this project consists of the frame grabber board along with four cameras, and PCI target, initiator interfaces, and a PCI bus monitor. In this simulation we acquire from four "cameras" into host memory using scatter/gather DMA and with all data checked at the destination. The cameras are a behavioral model with separate timing parameters for each instance and which generate the selected data pattern (random, incrementing, etc.). The source of stimulus for the project is a behavioral PCI initiator model (a bus functional model) which executes the cycles specified in the above file.


The advantages of pseudo-code models are:

  • Stimulus is generated from a high-level language and is more readable.


  • The pseudo-code model can access a common project package for address map and bit field definitions. Changes made in the device are instantly reflected in the testbench.


  • Pseudo-code models are less prone to errors because of heavy use of symbolic representations of addresses and data.


  • The pseudo-code allows the testing of some of the software algorithms on the simulated hardware.


  • Switches are provided to enable and disable functions in the testbench (read data checking, type of data pattern generation, etc.). Interrupts and context switches are supported.
In summary, pseudo-code based testbenches reduce simulation test time and provide a better test environment, which in turn produces a better product.




image