Expand description
The clock period every hardened block is signed off at — held here, derived from its measured
SLOW corner, and the only period emit_flow_config accepts for a registered block.
Signoff means every corner closes (ss_100C_1v60 / tt_025C_1v80 / ff_n40C_1v95 x min/nom/max RC),
at a period set to what the slow corner actually meets. A period chosen at the typical corner is a
frequency the part does not guarantee: measured 2026-09-23, 16 of 18 blocks then recorded clean
failed setup at the slow corner, fabric_soc by 121.40 ns on a 300 ns clock.
Structs§
- Signoff
Block - One hardened block’s signoff clock.
Constants§
- SLOW_
CORNER_ MARGIN - Headroom kept above the measured slow-corner requirement. Lengthening the period relaxes timing-driven synthesis and resizing, so the rebuilt critical path can come out a little slower than the one measured; 5% absorbs that without a second round.
Statics§
- SIGNOFF_
BLOCKS - Every hardened block, with the run its measurement came from: the period that run was built at and its worst setup slack across every corner, so the derivation is visible, not just its result. A block iterates: when a run at the derived period still misses, its entry moves to THAT run.
Functions§
- honest_
period_ ns - The period a block must be built at, given the period it was measured at and the worst setup
slack across every corner of that run. A block that met every corner keeps its period; one that
missed gets the miss plus
SLOW_CORNER_MARGIN, rounded UP to the 0.5 ns grid. - registered_
period_ ns - The registered signoff period for
name, if the block is registered. - registered_
synth_ strategy - The synthesis strategy
name’s period was measured under (Some(None)for OpenLane’s default), if the block is registered. - resolve_
synth_ strategy - The strategy
nameis synthesized under, given the one asked for (None: none asked;Some(None): OpenLane’s default). A registered block takes its registered strategy and refuses any other; an unregistered block takes what was asked.