Skip to content

[OpenSTA] Updated SDF Generation with Internal Registers #3230

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

AlexandreSinger
Copy link
Contributor

Fixed an issue with how the post-implementation SDF annotations are generated for black boxes with internal registers on the input or output ports (but not both).

When neither of the input or output ports are registered, then the circuit would be fully combinatorial. This behavior is unchanged.

mae-timing-model-combinational

When both of the input and output ports are registered, then the input ports would have setup and hold constraints. The output ports would have clock to Q delays. This did not annotate correctly for multi-bit ports, so I updated the code to apply the annotations per pin in the port.

mae-timing-model-full-registered

When the input port is registered and the output port is not, then the input ports would have setup and hold constraints; however originally the output ports did not have clock to Q delays. In a black-box model, the output ports would have a clock to Q delay equal to the clock to Q delay of the input ports plus the combinatorial delays from the input ports to the output ports. I have added this logic to the SDF generation code to include these delays.

mae-timing-model-input-registered

When the output port is registered and the input port is not, then the output ports would have clock to Q delays (as normal); however originally the input ports were not given setup or hold constraints (these were applied to the output ports by how the architecture file traditionally defines these ports). For a black-box, the input ports would have setup and hold constraints, there is just a bit of delay before the timing arc hits the registers. Added the proper setup and hold constraints and applied port delays on the input ports equal to their propagation delay to the output ports.

mae-timing-model-output-registered

Fixed an issue with how the post-implementation SDF annotations are
generated for black boxes with internal registers on the input or output
ports (but not both).

When neither of the input or output ports are registered, then the
circuit would be fully combinatorial. This behavior is unchanged.

When both of the input and output ports are registered, then the input
ports would have setup and hold constraints. The output ports would have
clock to Q delays. This did not annotate correctly for multi-bit ports,
so I updated the code to apply the annotations per pin in the port.

When the input port is registered and the output port is not, then the
input ports would have setup and hold constraints; however originally
the output ports did not have clock to Q delays. In a black-box model,
the output ports would have a clock to Q delay equal to the clock to Q
delay of the input ports plus the combinatorial delays from the input
ports to the output ports. I have added this logic to the SDF generation
code to include these delays.

When the output port is registered and the input port is not, then the
output ports would have clock to Q delays (as normal); however
originally the input ports were not given setup or hold constraints
(these were applied to the output ports by how the architecture file
traditionally defines these ports). For a black-box, the input ports
would have setup and hold constraints, there is just a bit of delay
before the timing arc hits the registers. Added the proper setup and
hold constraints and applied port delays on the input ports equal to
their propagation delay to the output ports.
@github-actions github-actions bot added VPR VPR FPGA Placement & Routing Tool lang-cpp C/C++ code labels Aug 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lang-cpp C/C++ code VPR VPR FPGA Placement & Routing Tool
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant