The-OpenROAD-Project / The-OpenROAD-Project/OpenROAD
repair_timing -hold ignores registers sampling clocks
Open
Nobody has claimed this yet.
rsz
- Dominant language
- Verilog
- Stars
- 3.1k
- Forks
- 1k
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 136
Description
Describe the bug
The command:
report_checks -path_delay min -sort_by_slack -format full_clock_expanded
says:
Startpoint: STUSB_ISO_i/ftp_ctl_i/nvm_sect3_s_reg_0_
(rising edge-triggered flip-flop clocked by clock_32k)
Endpoint: NVM_512bE2LTa_H9A_i
(rising edge-triggered flip-flop clocked by clock_32k)
Path Group: clock_32k
Path Type: min
-4.39 slack (VIOLATED)
After several call to repair_timing, I get:
[INFO RSZ-0100] Repair move sequence: UnbufferMove SizeUpMove SwapPinsMove BufferMove CloneMove SplitLoadMove
[INFO RSZ-0098] No setup violations found
[INFO RSZ-0046] Found 2 endpoints with hold violations.
Iteration | Resized | Buffers | Cloned Gates | Area | WNS | TNS | Endpoint
--------------------------------------------------------------------------------------
0 | 5 | 0 | 0 | +0.0% | -3.738 | -10.139 | STUSB_ISO_i/i2c_top_i/u_i2c_state/sda_in_d1_reg/D
final | 5 | 2 | 0 | +0.0% | -3.738 | -9.839 | STUSB_ISO_i/i2c_top_i/u_i2c_state/sda_in_d1_reg/D
--------------------------------------------------------------------------------------
[INFO RSZ-0032] Inserted 2 hold buffers.
[INFO RSZ-0100] Repair move sequence: UnbufferMove SizeUpMove SwapPinsMove BufferMove CloneMove SplitLoadMove
[INFO RSZ-0098] No setup violations found
[INFO RSZ-0033] No hold violations found.
Then the command:
report_checks -path_delay min -sort_by_slack -format full_clock_expanded
says:
Startpoint: i_sda_in (clock source 'clock_sda_clk')
Endpoint: STUSB_ISO_i/i2c_top_i/u_i2c_state/sda_in_d1_reg
(rising edge-triggered flip-flop clocked by clock_i2c_1m)
Path Group: clock_i2c_1m
Path Type: min
...
-3.74 slack (VIOLATED)
Expected Behavior
Hold violations should be fixed.
Environment
OpenROAD v2.0-23570-g3fd4e08b52
To Reproduce
Test case repair_timing.zip uploaded to PII sftp server.
Relevant log output
Screenshots
No response
Additional Context
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.