Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

vyges loom hold-fix — CLI reference

Generated from vyges loom hold-fix --help — this page is the tool’s own output, verbatim.

vyges loom hold-fix — post-route hold-fix ECO (insert series delay on hold-violating capture pins)

usage:
  vyges loom hold-fix run   JOB  [-o OUT] [--json] [--fail-on-violation]   hold-fix -> delayed netlist
  vyges loom hold-fix check JOB                                            validate the job
  vyges loom hold-fix demo                                                 hold-fix a built-in example (no files)

flags:
  -o FILE              write the hold-fixed netlist to FILE (default: stdout)
  --json               emit the before/after report as JSON
  --eco FILE           write the ECO manifest (insertions) as JSON — for a physical applier
  --fail-on-violation  exit 3 if the result still has negative hold slack (CI gate)
  -q, --quiet          suppress non-essential output
  -v, --verbose        extra detail on stderr
  --describe           print a machine-readable JSON description of the command
  -h, --help           show this help
  -V, --version        show version

Contract

Generated from vyges loom hold-fix --describe.

hold-fix

post-route hold-fix ECO (insert series delay on hold-violating capture pins)

Maturity: structured

run {job}
InputTypeRequiredDescription
jobstringyespath to the hold-fix job file (design, netlist, lib, clock, buffer, hold margin)
outstringnowrite the hold-fixed netlist to FILE (default: stdout)
ecostringnowrite the ECO manifest (insertions) as JSON, for a physical applier

Consumes: netlist, liberty, timing_report

Artifacts: netlist (out), eco_manifest (eco)

Assertion: hold-eco — none; this operation establishes no engineering claim

Provenance limitations

  • The job names the netlist, Liberty and timing report; input_hash covers the job path and arguments, not their contents.
  • KNOWN DEFECT: on at least one real block this toolchain reports hold violations that OpenSTA and sign-off both say do not exist, and the CAUSE IS NOT YET IDENTIFIED. Measured on a routed sky130 block with the same netlist, SDC, SPEF and liberty given to both: setup WNS 6.7322 against OpenSTA 6.85 (1.7% apart), but hold WHS -1.0682 against OpenSTA +0.88 and sign-off +0.8821 – out by 1.95 ns and disagreeing about the sign. Asked about the endpoint this toolchain calls worst, OpenSTA answers No paths found. On that block this engine inserts 599 delay cells into a design already hold-clean by 0.88 ns.
  • Two explanations have been tested and REJECTED, recorded so they are not re-run: it is not the async check taxonomy, since vyges-sta-si implements recovery and removal, reads the removal table rather than the data hold table, and has a test asserting it; and it is not unconstrained input ports, since that block’s SDC constrains the port in question at 12 ns and varying the job-level input_delay does not move the result at all.
  • Until the cause is found: cross-check the worst hold endpoints against your sign-off timer before applying a plan; treat async reset endpoints as suspect, since that is where this has been seen; and exclude instances with dont_touch, which accepts globs. The plan-and-apply split keeps it recoverable – this engine emits a plan and never mutates a design – but the plan must be reviewed.