I don't understand how timings are calculated in genus. Below is the synthesis timing report of one of my design, it mentions that critical path is met with 0 slack but the calculation does not make any sense to me because the datapath is 567 ps and the capture time is at 350 ps. So how is it that the timing is met? Usually there are some kind of negative slack if the timing is not met.
There seems to be some ambiguity going on here when one flop is launched at rising edge and captured at the falling edge.
I am targeting 1 GHz, hence target clock period is constrained to 1000ps.
============================================================ Generated by: Genus(TM) Synthesis Solution 17.20-p003_1 Generated on: Jan 03 2020 05:55:41 pm Module: top Operating conditions: TT_0P80V_0P00V_0P00V_0P00V_25C (balanced_tree) Wireload mode: enclosed Area mode: timing library============================================================
Path 1: MET (0 ps) Group: l2clk Startpoint: (R) lsu_stbuf/stbuf_fwdbyteen_lo_dc3ff_dout_reg/CLK Clock: (R) l2clk Endpoint: (R) dec_decode_illegal_any_ff_clkhdr_clkhdr_en_ff_reg/D Clock: (F) l2clk
Capture Launch Clock Edge:+ 500 0 Src Latency:+ 0 0 Net Latency:+ 0 (I) 0 (I) Arrival:= 500 0
Uncertainty:- 150 Required Time:= 350 Launch Clock:- 0 Data Path:- 567 Slack:= 0