5.3. Flow Control

Physical design is necessarily an iterative process, and designers will often require fine control of the flow within any given action. This allows for rapid testing of new changes in the Hammer IR to improve the quality of results (QoR) after certain steps.

Given the flow defined by tool steps and hooks (described in the next section), users can select ranges of these to run. The tool script will then be generated with commands corresponding to only the steps that are to be run.

5.3.1. Command-line Interface

Flow control is specified with the following optional Hammer command-line flags, which must always target a valid step/hook:

  • --start_before_step <target>: this starts the tool from (inclusive) the target step. Alternate flag: --from_step
  • --start_after_step <target>: this starts the tool from (exclusive) the target step. Alternate flag: --after_step
  • --stop_after_step: this stops the tool at (inclusive) the target step. Alternate flag: --to_step
  • --stop_before_step: this stops the tool at (exclusive) the target step. Alternate flag: --until_step
  • --only_step: this only runs the target step

As hammer-vlsi is parsing through the steps for a given tool, it will print debugging information indicating which steps are skipped and which are run.

Certain combinations are not allowed:

  • --only_step is not compatible with any of the other flags
  • --start_before_step and start_after_step may not be specified together
  • --stop_after_step and --stop_before_step may not be specified together
  • --start_before_step and --stop_before_step may not be the same step
  • --start_after_step and --stop_after_step may not be the same step
  • --start_after_step and --stop_before_step may not be the same or adjacent steps

Logically, a target of stop_{before|after}_step before start_{before|after}_step will also not run anything (though it is not explicitly checked).