ASIC/FPGA  Design and Verification Out Source Services 
                            Post synthesis/NGD simulation
                            This page explains how to simulate a post NGD VHDL net-list.Once functional simulation ends, timing verification may help to determine if the design meets timing and performance requirement.
                            
                              - First we open the VHDL net-list file, which was previously generated during the NGD step.
 
                              - The net-list uses the following library from XILINX: library UNISIM; So we need to compile it by GHDL simulator.
 
                              - 
							  UNISIM library files don't compile with GHDL. So I copy the original files and slightly modified one file. The file unisim_VITAL.vhd requires some minor changes. Please note changing vendor libraries is bad practice.
                              
 This change is required in a few places.
							   
                              - The xilinx unisim library compile-script is the following unisim compile link.
 
                              - To compile the test-bench files including the memory model and the XILINX generated VHDL net-list, see the following  test-bench compile link.
 
                              - After the simulation ends, there are a few topics to consider: visual inspection of VCD waves, compare transmit data of the current post synthesis (NGD) simulation with the one of the RTL and CPU run time.
 
                              - Visual inspection of the VCD wave is first done only for the primary outputs. I noticed that the DUT does not transmit any data. This can be the result of:
							  Some violation caused an X on some internal device in the VHDL net-list.
							  An error in synthesis or NGD process breaks the DUT.
							  GHDL is free simulator and sometimes, although very rare, it malfunctions. Also bear in mind that we had to modify the UNISIM library.
							  Other reason.
							  The first thing to debug is to fire up the keep hierarchy option both for XST synthesis and the NGD step, which follows:
							  "-keep_hierarchy YES" for XST constraint file.
							  
 
                              - Usually the problem is in the test-bench. This was the case this time too. One of the inputs in the test-bench connected to DUT was not initialized and the X propagated and stalled the DUT. The fix was easy and is shown below:signal rx_dv_b      : std_logic := '0';
 
                              - 
							  Last it is interesting to note the CPU run-time taken for compilation and simulation at RTL and for the post-synthesis (NGD) net-list. From the synthesis report, the following line gives an estimation on the number of  flip-flop devices.
							  
							  Number of Slice Flip Flops:           1448
                              
                              compilation 
                                      post NGD  RTL
                              real    1m 0.051s  0m6.100s
                              user    0m40.670s  0m3.000s
                              sys     0m17.880s  0m3.030s
                              simulation
                                      1m45.282s 0m6.450s
                                      1m43.770s 0m5.410s
				                      0m 0.560s 0m0.540s
                              
							  
 
							  To go back to the main page:  VHDL IP top 
							  To go to post layout gate-level + SDF simulation page:  post PAR sim 
                             
                           Contact me now at: |