An unconstrained path reports a comfortable slack while failing in place and route. The tool optimised nothing because the ask said nothing.
Suspect a missing constraint when slack is near zero yet the path was never a target. Check clocks, input and output delays, and false paths first.
Missing piece | Symptom | Check |
|---|---|---|
Clock | Whole domain looks untimed | Every endpoint in the domain lacks a clock ask. |
Input or output delay | Boundary paths pass too easily | Port delays exist for each interface group. |
False or multicycle intent | An impossible path dominates the worst list | The exception is written down and reviewed, not assumed. |
An impossible ask spreads damage beyond its own path. The tool duplicates logic and grows area along many paths to chase one unclosable number.
EXAMPLE parameters make the arithmetic plain. A path arrives at 4.9 ns against a 4.0 ns ask, then the ask relaxes to 5.0 ns.
EXAMPLE parameters: arrival time 4.9 ns
ask 4.0 ns: slack = 4.0 - 4.9 = -0.9 ns (misses)
ask 5.0 ns: slack = 5.0 - 4.9 = +0.1 ns (closes)
lesson: the same logic passes or fails on the ask aloneShallow logic with a large violation points at the ask. Deep logic with a proportional violation points at the structure.
The sketch below is illustrative SDC-style text, invented for this lesson and not tool output. Real constraint syntax and defaults vary between tools.
illustrative SDC-style sketch, not a runnable script
create_clock -period 10.0 [get_ports clk]
set_input_delay 2.0 -clock clk [all_inputs]
set_output_delay 2.0 -clock clk [all_outputs]
set_false_path -from [get_ports scan_en]
set_max_fanout 32 [current_design]Each line states one intent: the clock, the boundary budget, the paths to ignore, and the fanout bound. Unexplained lines do not belong in the file.
The 32 in the sketch is this topic's EXAMPLE ask. The classifier in a later lesson treats 50 or more loads as a coarse suspect ranker, not a sign-off bound.
The port delays. A missing input or output delay makes synthesis grade a path the chip never sees.
-0.9 ns against 4.0 ns and +0.1 ns against 5.0 ns. The same arrival passes or fails on the ask.