Closed wuheng01 closed 1 month ago
I looks like it because there are ideal clocks (with zero arrival) used as the data input. Please repost the test case with a verilog file so I don't have to use openroad to run it?
case.tar.gz I added a verilog file in the attachment.
fixed by 128deaa7 issue66 set_min/max_delay -ignore_clock_latency on clock path
Note that the libraries and corners are not matched (ff with slow lib). It doesn't make much sense to use set_min_delay -ignore_clock_latency for a clock path that in this case is used as a data input.
This design is from piece of customer case. It is a gated clock path, we just remove the gates that is not needed to reproduce the bug. The clock path detecting methodology still have issues. Other tools will mark the pin not a clock pin if lib say it is not clock, openSTA mark the pin as clock pin. You can see this reg2/D pin is marked as clock pin.
Clock tree will stop at n5_n1
case.tar.gz when checking hold violation, we found a strange path which pathend always carray a 0.0 as AT. An example is provided in the attachment. the path is from
[get_ports {i_CLK_RTC}] to [get_pins {reg2/D}]
which other tools shows: