CIRCT

Circuit IR Compilers and Tools

-abc-runner 

Run ABC on AIGER files

This pass runs ABC on AIGER files. It is a wrapper around AIGERRunner that uses ABC as the external solver. It runs the following ABC commands:

  • read <inputFile>: Read the AIGER file
  • for each command in abcCommands, run -q <command>
  • write <outputFile>: Write the AIGER file

Options 

-continue-on-failure : Don't fail even if the AIGER exporter, external solver, or AIGER importer fail
-abc-path            : Path to the ABC executable
-abc-commands        : 

-aig-lower-variadic 

Lower variadic AndInverter operations to binary AndInverter

-aig-lower-word-to-bits 

Lower multi-bit AndInverter to single-bit ones

-aig-print-longest-path-analysis 

Print longest path analysis results with detailed timing statistics

This pass performs longest path analysis on AIG circuits and outputs detailed timing information including:

  • Delay distribution statistics showing timing levels and path counts
  • Critical path details for the top N fanout points
  • Path history with intermediate debug points for detailed analysis

The analysis considers each AIG and-inverter operation to have unit delay and computes maximum delays through combinational paths across module hierarchies.

Options 

-output-file        : Output file for analysis results (use '-' for stdout)
-test               : Emit longest paths as diagnostic remarks for testing
-show-top-k-percent : The size of the longest paths to show.
-emit-json          : Output analysis results in JSON format

-aig-runner 

Run external logic solvers on AIGER files

This pass exports the current hardware module to AIGER format, runs an external logic solver on the exported file, and imports the optimized results back into the MLIR module.

The solver command arguments must contain placeholder tokens that are replaced at runtime:

  • <inputFile>: Replaced with the path to the temporary AIGER input file
  • <outputFile>: Replaced with the path where the solver should write results.

ABCRunner is a wrapper around AIGERRunner that uses ABC as the external solver. Hence if the user wants to use ABC, they should use ABCRunner instead of AIGERRunner.

Options 

-continue-on-failure : Don't fail even if the AIGER exporter, external solver, or AIGER importer fail
-solver-path         : Path to the external solver executable
-solver-args         :