I am trying to synthesize a combinational logic block in verilog using Xilinx Vivado. I am trying to reduce the number of luts and still try to find the critical path of the circuit.
Many solutions tell that the timing analysis is done from register to register. However if the output are made as registers the area of my design increases.
Is there a way to find the critical path of the behavioural design without using output registers?
Best Answer
How to constrain the paths without registers?
Yes, there is a way. Timing paths don't have to be from register to register. A port also can be a startpoint or endpoint. If your block is completely combinational, all paths will be from input ports to output ports.
The most important thing here is to define a virtual clock and input/output delays in an XDC file. Then you must add the file to the Vivado project.
The example above tells that
IN1
signal arrives to the block 1ns afterVCLK
rises. In addition,OUT1
has to be set 2ns beforeVCLK
rises. Since our clock period is 10ns, the path fromIN1
toOUT1
has 7ns (10-1-2) to finish the operation.How to see the critical path in Vivado?
Once the implementation is completed, click "Reports" at the bottom of Vivado GUI. Then click "Timing Summary Report" under "Route Design". As an alternative, you may also search blabla_timing_summary_routed.rpt file in the project directory.
This report shows the critical paths for all clock domains. Since you have only one clock domain, you should see something like below.
Then find the section "Max Delay Paths". You will see the critical path below it.