2. Pre-Defined Flows#

The following are examples are pre-built flows that come with SiliconCompiler which you can use for your own builds.

See the pre-built targets for examples on how these are used in conjunction with pdks, tools and libraries.

2.1. asicflow#

A configurable ASIC compilation flow.

The ‘asicflow’ includes the stages below. The steps syn, floorplan, physyn, place, cts, route, and dfm have minimization associated with them. To view the flowgraph, see the .png file.

  • import: Sources are collected and packaged for compilation

  • syn: Translates RTL to netlist using Yosys

  • floorplan: Floorplanning

  • physyn: Physical Synthesis

  • place: Global and detailed placement

  • cts: Clock tree synthesis

  • route: Global and detailed routing

  • dfm: Metal fill, atenna fixes and any other post routing steps

  • export: Export design from APR tool and merge with library GDS

  • sta: Static timing analysis (signoff)

  • lvs: Layout versus schematic check (signoff)

  • drc: Design rule check (signoff)

The syn, physyn, place, cts, route steps supports per process options that can be set up by setting ‘<step>_np’ arg to a value > 1, as detailed below:

  • syn_np : Number of parallel synthesis jobs to launch

  • floorplan_np : Number of parallel floorplan jobs to launch

  • physyn_np : Number of parallel physical synthesis jobs to launch

  • place_np : Number of parallel place jobs to launch

  • cts_np : Number of parallel clock tree synthesis jobs to launch

  • route_np : Number of parallel routing jobs to launch

Setup file: asicflow.py

../../_images/asicflow.svg

2.1.1. Configuration#

2.1.1.1. import.verilog#

2.1.1.2. import.convert#

2.1.1.3. import.chisel#

2.1.1.4. import.c#

2.1.1.5. import.bluespec#

2.1.1.6. import.vhdl#

2.1.1.7. import.combine#

Keypath

Value

['flowgraph', 'asicflow', 'import.combine', '0', 'input']

  • ('import.convert', '0')
  • ('import.chisel', '0')
  • ('import.c', '0')
  • ('import.bluespec', '0')
  • ('import.vhdl', '0')

['flowgraph', 'asicflow', 'import.combine', '0', 'tool']

builtin

['flowgraph', 'asicflow', 'import.combine', '0', 'task']

concatenate

['flowgraph', 'asicflow', 'import.combine', '0', 'taskmodule']

siliconcompiler.tools.builtin.concatenate

2.1.1.8. syn#

2.1.1.9. syn.min#

2.1.1.10. floorplan.init#

Keypath

Value

['flowgraph', 'asicflow', 'floorplan.init', '0', 'input']

('syn.min', '0')

['flowgraph', 'asicflow', 'floorplan.init', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.init', '0', 'task']

init_floorplan

['flowgraph', 'asicflow', 'floorplan.init', '0', 'taskmodule']

siliconcompiler.tools.openroad.init_floorplan

['flowgraph', 'asicflow', 'floorplan.init', '1', 'input']

('syn.min', '0')

['flowgraph', 'asicflow', 'floorplan.init', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.init', '1', 'task']

init_floorplan

['flowgraph', 'asicflow', 'floorplan.init', '1', 'taskmodule']

siliconcompiler.tools.openroad.init_floorplan

['flowgraph', 'asicflow', 'floorplan.init', '2', 'input']

('syn.min', '0')

['flowgraph', 'asicflow', 'floorplan.init', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.init', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.init', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.init', '2', 'task']

init_floorplan

['flowgraph', 'asicflow', 'floorplan.init', '2', 'taskmodule']

siliconcompiler.tools.openroad.init_floorplan

2.1.1.11. floorplan.macro_placement#

Keypath

Value

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'input']

('floorplan.init', '0')

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'task']

macro_placement

['flowgraph', 'asicflow', 'floorplan.macro_placement', '0', 'taskmodule']

siliconcompiler.tools.openroad.macro_placement

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'input']

('floorplan.init', '1')

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'task']

macro_placement

['flowgraph', 'asicflow', 'floorplan.macro_placement', '1', 'taskmodule']

siliconcompiler.tools.openroad.macro_placement

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'input']

('floorplan.init', '2')

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'task']

macro_placement

['flowgraph', 'asicflow', 'floorplan.macro_placement', '2', 'taskmodule']

siliconcompiler.tools.openroad.macro_placement

2.1.1.12. floorplan.tapcell#

Keypath

Value

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'input']

('floorplan.macro_placement', '0')

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'task']

endcap_tapcell_insertion

['flowgraph', 'asicflow', 'floorplan.tapcell', '0', 'taskmodule']

siliconcompiler.tools.openroad.endcap_tapcell_insertion

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'input']

('floorplan.macro_placement', '1')

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'task']

endcap_tapcell_insertion

['flowgraph', 'asicflow', 'floorplan.tapcell', '1', 'taskmodule']

siliconcompiler.tools.openroad.endcap_tapcell_insertion

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'input']

('floorplan.macro_placement', '2')

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'task']

endcap_tapcell_insertion

['flowgraph', 'asicflow', 'floorplan.tapcell', '2', 'taskmodule']

siliconcompiler.tools.openroad.endcap_tapcell_insertion

2.1.1.13. floorplan.power_grid#

Keypath

Value

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'input']

('floorplan.tapcell', '0')

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'task']

power_grid

['flowgraph', 'asicflow', 'floorplan.power_grid', '0', 'taskmodule']

siliconcompiler.tools.openroad.power_grid

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'input']

('floorplan.tapcell', '1')

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'task']

power_grid

['flowgraph', 'asicflow', 'floorplan.power_grid', '1', 'taskmodule']

siliconcompiler.tools.openroad.power_grid

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'input']

('floorplan.tapcell', '2')

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'task']

power_grid

['flowgraph', 'asicflow', 'floorplan.power_grid', '2', 'taskmodule']

siliconcompiler.tools.openroad.power_grid

2.1.1.14. floorplan.pin_placement#

Keypath

Value

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'input']

('floorplan.power_grid', '0')

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'task']

pin_placement

['flowgraph', 'asicflow', 'floorplan.pin_placement', '0', 'taskmodule']

siliconcompiler.tools.openroad.pin_placement

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'input']

('floorplan.power_grid', '1')

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'task']

pin_placement

['flowgraph', 'asicflow', 'floorplan.pin_placement', '1', 'taskmodule']

siliconcompiler.tools.openroad.pin_placement

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'input']

('floorplan.power_grid', '2')

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'task']

pin_placement

['flowgraph', 'asicflow', 'floorplan.pin_placement', '2', 'taskmodule']

siliconcompiler.tools.openroad.pin_placement

2.1.1.15. floorplan.min#

Keypath

Value

['flowgraph', 'asicflow', 'floorplan.min', '0', 'input']

  • ('floorplan.pin_placement', '0')
  • ('floorplan.pin_placement', '1')
  • ('floorplan.pin_placement', '2')

['flowgraph', 'asicflow', 'floorplan.min', '0', 'tool']

builtin

['flowgraph', 'asicflow', 'floorplan.min', '0', 'task']

minimum

['flowgraph', 'asicflow', 'floorplan.min', '0', 'taskmodule']

siliconcompiler.tools.builtin.minimum

2.1.1.16. place.global#

Keypath

Value

['flowgraph', 'asicflow', 'place.global', '0', 'input']

('floorplan.min', '0')

['flowgraph', 'asicflow', 'place.global', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.global', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.global', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.global', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.global', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.global', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.global', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'place.global', '0', 'task']

global_placement

['flowgraph', 'asicflow', 'place.global', '0', 'taskmodule']

siliconcompiler.tools.openroad.global_placement

['flowgraph', 'asicflow', 'place.global', '1', 'input']

('floorplan.min', '0')

['flowgraph', 'asicflow', 'place.global', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.global', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.global', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.global', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.global', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.global', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.global', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'place.global', '1', 'task']

global_placement

['flowgraph', 'asicflow', 'place.global', '1', 'taskmodule']

siliconcompiler.tools.openroad.global_placement

['flowgraph', 'asicflow', 'place.global', '2', 'input']

('floorplan.min', '0')

['flowgraph', 'asicflow', 'place.global', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.global', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.global', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.global', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.global', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.global', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.global', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'place.global', '2', 'task']

global_placement

['flowgraph', 'asicflow', 'place.global', '2', 'taskmodule']

siliconcompiler.tools.openroad.global_placement

2.1.1.17. place.repair_design#

Keypath

Value

['flowgraph', 'asicflow', 'place.repair_design', '0', 'input']

('place.global', '0')

['flowgraph', 'asicflow', 'place.repair_design', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'place.repair_design', '0', 'task']

repair_design

['flowgraph', 'asicflow', 'place.repair_design', '0', 'taskmodule']

siliconcompiler.tools.openroad.repair_design

['flowgraph', 'asicflow', 'place.repair_design', '1', 'input']

('place.global', '1')

['flowgraph', 'asicflow', 'place.repair_design', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'place.repair_design', '1', 'task']

repair_design

['flowgraph', 'asicflow', 'place.repair_design', '1', 'taskmodule']

siliconcompiler.tools.openroad.repair_design

['flowgraph', 'asicflow', 'place.repair_design', '2', 'input']

('place.global', '2')

['flowgraph', 'asicflow', 'place.repair_design', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.repair_design', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.repair_design', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'place.repair_design', '2', 'task']

repair_design

['flowgraph', 'asicflow', 'place.repair_design', '2', 'taskmodule']

siliconcompiler.tools.openroad.repair_design

2.1.1.18. place.detailed#

Keypath

Value

['flowgraph', 'asicflow', 'place.detailed', '0', 'input']

('place.repair_design', '0')

['flowgraph', 'asicflow', 'place.detailed', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.detailed', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.detailed', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.detailed', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.detailed', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.detailed', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.detailed', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'place.detailed', '0', 'task']

detailed_placement

['flowgraph', 'asicflow', 'place.detailed', '0', 'taskmodule']

siliconcompiler.tools.openroad.detailed_placement

['flowgraph', 'asicflow', 'place.detailed', '1', 'input']

('place.repair_design', '1')

['flowgraph', 'asicflow', 'place.detailed', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.detailed', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.detailed', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.detailed', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.detailed', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.detailed', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.detailed', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'place.detailed', '1', 'task']

detailed_placement

['flowgraph', 'asicflow', 'place.detailed', '1', 'taskmodule']

siliconcompiler.tools.openroad.detailed_placement

['flowgraph', 'asicflow', 'place.detailed', '2', 'input']

('place.repair_design', '2')

['flowgraph', 'asicflow', 'place.detailed', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'place.detailed', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'place.detailed', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'place.detailed', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'place.detailed', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'place.detailed', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'place.detailed', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'place.detailed', '2', 'task']

detailed_placement

['flowgraph', 'asicflow', 'place.detailed', '2', 'taskmodule']

siliconcompiler.tools.openroad.detailed_placement

2.1.1.19. place.min#

Keypath

Value

['flowgraph', 'asicflow', 'place.min', '0', 'input']

  • ('place.detailed', '0')
  • ('place.detailed', '1')
  • ('place.detailed', '2')

['flowgraph', 'asicflow', 'place.min', '0', 'tool']

builtin

['flowgraph', 'asicflow', 'place.min', '0', 'task']

minimum

['flowgraph', 'asicflow', 'place.min', '0', 'taskmodule']

siliconcompiler.tools.builtin.minimum

2.1.1.20. cts.clock_tree_synthesis#

Keypath

Value

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'input']

('place.min', '0')

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'task']

clock_tree_synthesis

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '0', 'taskmodule']

siliconcompiler.tools.openroad.clock_tree_synthesis

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'input']

('place.min', '0')

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'task']

clock_tree_synthesis

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '1', 'taskmodule']

siliconcompiler.tools.openroad.clock_tree_synthesis

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'input']

('place.min', '0')

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'task']

clock_tree_synthesis

['flowgraph', 'asicflow', 'cts.clock_tree_synthesis', '2', 'taskmodule']

siliconcompiler.tools.openroad.clock_tree_synthesis

2.1.1.21. cts.repair_timing#

Keypath

Value

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'input']

('cts.clock_tree_synthesis', '0')

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'task']

repair_timing

['flowgraph', 'asicflow', 'cts.repair_timing', '0', 'taskmodule']

siliconcompiler.tools.openroad.repair_timing

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'input']

('cts.clock_tree_synthesis', '1')

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'task']

repair_timing

['flowgraph', 'asicflow', 'cts.repair_timing', '1', 'taskmodule']

siliconcompiler.tools.openroad.repair_timing

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'input']

('cts.clock_tree_synthesis', '2')

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'task']

repair_timing

['flowgraph', 'asicflow', 'cts.repair_timing', '2', 'taskmodule']

siliconcompiler.tools.openroad.repair_timing

2.1.1.22. cts.fillcell#

Keypath

Value

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'input']

('cts.repair_timing', '0')

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'task']

fillercell_insertion

['flowgraph', 'asicflow', 'cts.fillcell', '0', 'taskmodule']

siliconcompiler.tools.openroad.fillercell_insertion

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'input']

('cts.repair_timing', '1')

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'task']

fillercell_insertion

['flowgraph', 'asicflow', 'cts.fillcell', '1', 'taskmodule']

siliconcompiler.tools.openroad.fillercell_insertion

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'input']

('cts.repair_timing', '2')

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'task']

fillercell_insertion

['flowgraph', 'asicflow', 'cts.fillcell', '2', 'taskmodule']

siliconcompiler.tools.openroad.fillercell_insertion

2.1.1.23. cts.min#

Keypath

Value

['flowgraph', 'asicflow', 'cts.min', '0', 'input']

  • ('cts.fillcell', '0')
  • ('cts.fillcell', '1')
  • ('cts.fillcell', '2')

['flowgraph', 'asicflow', 'cts.min', '0', 'tool']

builtin

['flowgraph', 'asicflow', 'cts.min', '0', 'task']

minimum

['flowgraph', 'asicflow', 'cts.min', '0', 'taskmodule']

siliconcompiler.tools.builtin.minimum

2.1.1.24. route.global#

Keypath

Value

['flowgraph', 'asicflow', 'route.global', '0', 'input']

('cts.min', '0')

['flowgraph', 'asicflow', 'route.global', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.global', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.global', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.global', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.global', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.global', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.global', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'route.global', '0', 'task']

global_route

['flowgraph', 'asicflow', 'route.global', '0', 'taskmodule']

siliconcompiler.tools.openroad.global_route

['flowgraph', 'asicflow', 'route.global', '1', 'input']

('cts.min', '0')

['flowgraph', 'asicflow', 'route.global', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.global', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.global', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.global', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.global', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.global', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.global', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'route.global', '1', 'task']

global_route

['flowgraph', 'asicflow', 'route.global', '1', 'taskmodule']

siliconcompiler.tools.openroad.global_route

['flowgraph', 'asicflow', 'route.global', '2', 'input']

('cts.min', '0')

['flowgraph', 'asicflow', 'route.global', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.global', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.global', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.global', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.global', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.global', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.global', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'route.global', '2', 'task']

global_route

['flowgraph', 'asicflow', 'route.global', '2', 'taskmodule']

siliconcompiler.tools.openroad.global_route

2.1.1.25. route.antenna_repair#

Keypath

Value

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'input']

('route.global', '0')

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'task']

antenna_repair

['flowgraph', 'asicflow', 'route.antenna_repair', '0', 'taskmodule']

siliconcompiler.tools.openroad.antenna_repair

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'input']

('route.global', '1')

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'task']

antenna_repair

['flowgraph', 'asicflow', 'route.antenna_repair', '1', 'taskmodule']

siliconcompiler.tools.openroad.antenna_repair

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'input']

('route.global', '2')

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'task']

antenna_repair

['flowgraph', 'asicflow', 'route.antenna_repair', '2', 'taskmodule']

siliconcompiler.tools.openroad.antenna_repair

2.1.1.26. route.detailed#

Keypath

Value

['flowgraph', 'asicflow', 'route.detailed', '0', 'input']

('route.antenna_repair', '0')

['flowgraph', 'asicflow', 'route.detailed', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.detailed', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.detailed', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.detailed', '0', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.detailed', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.detailed', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.detailed', '0', 'tool']

openroad

['flowgraph', 'asicflow', 'route.detailed', '0', 'task']

detailed_route

['flowgraph', 'asicflow', 'route.detailed', '0', 'taskmodule']

siliconcompiler.tools.openroad.detailed_route

['flowgraph', 'asicflow', 'route.detailed', '1', 'input']

('route.antenna_repair', '1')

['flowgraph', 'asicflow', 'route.detailed', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.detailed', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.detailed', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.detailed', '1', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.detailed', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.detailed', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.detailed', '1', 'tool']

openroad

['flowgraph', 'asicflow', 'route.detailed', '1', 'task']

detailed_route

['flowgraph', 'asicflow', 'route.detailed', '1', 'taskmodule']

siliconcompiler.tools.openroad.detailed_route

['flowgraph', 'asicflow', 'route.detailed', '2', 'input']

('route.antenna_repair', '2')

['flowgraph', 'asicflow', 'route.detailed', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'asicflow', 'route.detailed', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'asicflow', 'route.detailed', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'asicflow', 'route.detailed', '2', 'goal', 'errors']

0.0

['flowgraph', 'asicflow', 'route.detailed', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'asicflow', 'route.detailed', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'asicflow', 'route.detailed', '2', 'tool']

openroad

['flowgraph', 'asicflow', 'route.detailed', '2', 'task']

detailed_route

['flowgraph', 'asicflow', 'route.detailed', '2', 'taskmodule']

siliconcompiler.tools.openroad.detailed_route

2.1.1.27. route.min#

Keypath

Value

['flowgraph', 'asicflow', 'route.min', '0', 'input']

  • ('route.detailed', '0')
  • ('route.detailed', '1')
  • ('route.detailed', '2')

['flowgraph', 'asicflow', 'route.min', '0', 'tool']

builtin

['flowgraph', 'asicflow', 'route.min', '0', 'task']

minimum

['flowgraph', 'asicflow', 'route.min', '0', 'taskmodule']

siliconcompiler.tools.builtin.minimum

2.1.1.28. dfm.metal_fill#

2.1.1.29. write.gds#

2.1.1.30. write.views#

2.2. asictopflow#

A flow for stitching together hardened blocks without doing any automated place-and-route.

This flow generates a GDS and a netlist for passing to a verification/signoff flow.

Setup file: asictopflow.py

../../_images/asictopflow.svg

2.2.1. Configuration#

2.2.1.1. import#

2.2.1.2. syn#

2.2.1.3. export#

2.3. drcflow#

Perform a DRC run on an input GDS

Setup file: drcflow.py

../../_images/drcflow.svg

2.3.1. Configuration#

2.3.1.1. drc#

2.4. dvflow#

A configurable constrained random stimulus DV flow.

The verification pipeline includes the following steps:

  • compile: RTL sources are compiled into object form (once)

  • sim: Compiled RTL is exercised using generated test

The dvflow can be parametrized using a single ‘np’ parameter. Setting ‘np’ > 1 results in multiple independent verification pipelines to be launched.

Supported tools are:

  • icarus

  • verilator

  • xyce

  • xdm-xyce

This flow is a WIP

Setup file: dvflow.py

../../_images/dvflow.svg

2.4.1. Configuration#

2.4.1.1. compile#

2.4.1.2. sim#

2.5. fpgaflow#

A configurable FPGA compilation flow.

The ‘fpgaflow’ module is a configurable FPGA flow with support for open source and commercial tool flows.

The following step convention is recommended for VPR.

  • import: Sources are collected and packaged for compilation

  • syn: Synthesize RTL into an device specific netlist

  • place: FPGA specific placement step

  • route: FPGA specific routing step

  • bitstream: Bitstream generation

Note that nextpnr does not appear to support breaking placement, routing, and bitstream generation into individual steps, leading to the following recommended step convention

  • import: Sources are collected and packaged for compilation

  • syn: Synthesize RTL into an device specific netlist

  • apr: One-step execution of place, route, bitstream with nextpnr

Args:
  • fpgaflow_type (str): this parameter can be used to select a specific fpga flow instead of one selected from the partname.

  • partname (str): this parameter can be used to select a specific fpga flow instead of one selected from the partname set in the schema.

Setup file: fpgaflow.py

../../_images/fpgaflow.svg

2.5.1. Configuration#

2.5.1.1. import.verilog#

2.5.1.2. import.convert#

2.5.1.3. import.chisel#

2.5.1.4. import.c#

2.5.1.5. import.bluespec#

2.5.1.6. import.vhdl#

2.5.1.7. import.combine#

Keypath

Value

['flowgraph', 'fpgaflow', 'import.combine', '0', 'input']

  • ('import.convert', '0')
  • ('import.chisel', '0')
  • ('import.c', '0')
  • ('import.bluespec', '0')
  • ('import.vhdl', '0')

['flowgraph', 'fpgaflow', 'import.combine', '0', 'tool']

builtin

['flowgraph', 'fpgaflow', 'import.combine', '0', 'task']

concatenate

['flowgraph', 'fpgaflow', 'import.combine', '0', 'taskmodule']

siliconcompiler.tools.builtin.concatenate

2.5.1.8. syn#

2.5.1.9. place#

2.5.1.10. route#

2.5.1.11. bitstream#

2.6. generate_openroad_rcx#

Flow to generate the OpenRCX decks needed by OpenROAD to do parasitic extraction.

Setup file: generate_openroad_rcx.py

../../_images/generate_openroad_rcx.svg

2.6.1. Configuration#

2.6.1.1. bench#

2.6.1.2. pex#

2.6.1.3. extract#

Keypath

Value

['flowgraph', 'generate_rcx', 'extract', '0', 'input']

  • ('pex', '0')
  • ('bench', '0')

['flowgraph', 'generate_rcx', 'extract', '0', 'tool']

openroad

['flowgraph', 'generate_rcx', 'extract', '0', 'task']

rcx_extract

['flowgraph', 'generate_rcx', 'extract', '0', 'taskmodule']

siliconcompiler.tools.openroad.rcx_extract

['flowgraph', 'generate_rcx', 'extract', '1', 'input']

  • ('pex', '1')
  • ('bench', '0')

['flowgraph', 'generate_rcx', 'extract', '1', 'tool']

openroad

['flowgraph', 'generate_rcx', 'extract', '1', 'task']

rcx_extract

['flowgraph', 'generate_rcx', 'extract', '1', 'taskmodule']

siliconcompiler.tools.openroad.rcx_extract

['flowgraph', 'generate_rcx', 'extract', '2', 'input']

  • ('pex', '2')
  • ('bench', '0')

['flowgraph', 'generate_rcx', 'extract', '2', 'tool']

openroad

['flowgraph', 'generate_rcx', 'extract', '2', 'task']

rcx_extract

['flowgraph', 'generate_rcx', 'extract', '2', 'taskmodule']

siliconcompiler.tools.openroad.rcx_extract

['flowgraph', 'generate_rcx', 'extract', '3', 'input']

  • ('pex', '3')
  • ('bench', '0')

['flowgraph', 'generate_rcx', 'extract', '3', 'tool']

openroad

['flowgraph', 'generate_rcx', 'extract', '3', 'task']

rcx_extract

['flowgraph', 'generate_rcx', 'extract', '3', 'taskmodule']

siliconcompiler.tools.openroad.rcx_extract

['flowgraph', 'generate_rcx', 'extract', '4', 'input']

  • ('pex', '4')
  • ('bench', '0')

['flowgraph', 'generate_rcx', 'extract', '4', 'tool']

openroad

['flowgraph', 'generate_rcx', 'extract', '4', 'task']

rcx_extract

['flowgraph', 'generate_rcx', 'extract', '4', 'taskmodule']

siliconcompiler.tools.openroad.rcx_extract

2.7. interposerflow#

A flow to perform RDL routing and generate a GDS

Setup file: interposerflow.py

../../_images/interposerflow.svg

2.7.1. Configuration#

2.7.1.1. rdlroute#

2.7.1.2. write_gds#

2.8. lintflow#

An RTL linting flow.

Setup file: lintflow.py

../../_images/lintflow.svg

2.8.1. Configuration#

2.8.1.1. lint#

2.9. screenshotflow#

Flow to generate a high resolution design image from a GDS or OAS file.

The ‘screenshotflow’ includes the stages below.

  • prepare: Prepare the stream file, such as flattening design, removing layers, and merging shapes

  • screenshot: Generate a set of screenshots tiled across the design

  • merge: Merge tiled images into a single image

Setup file: screenshotflow.py

../../_images/screenshotflow.svg

2.9.1. Configuration#

2.9.1.1. prepare#

2.9.1.2. screenshot#

2.9.1.3. merge#

2.10. showflow#

A flow to show the output files generated from other flows.

Required settings for this flow are below:

  • filetype : Type of file to show

Optional settings for this flow are below:

  • np : Number of parallel show jobs to launch

  • screenshot : true/false, indicate if this should be configured as a screenshot

  • showtools: dictionary of file extensions with the associated show and screenshot tasks

Setup file: showflow.py

../../_images/showflow.svg

2.10.1. Configuration#

2.10.1.1. show#

2.11. signoffflow#

A flow for running LVS/DRC signoff on a GDS layout.

Inputs must be passed to this flow as follows:

flow.input('<path-to-layout>.gds')
flow.input('<path-to-netlist>.vg')

Setup file: signoffflow.py

../../_images/signoffflow.svg

2.11.1. Configuration#

2.11.1.1. import#

2.11.1.2. extspice#

2.11.1.3. drc#

2.11.1.4. lvs#

2.11.1.5. signoff#

2.12. synflow#

A configurable ASIC synthesys flow with static timing.

The ‘synflow’ includes the stages below. The steps syn have minimization associated with them. To view the flowgraph, see the .png file.

  • import: Sources are collected and packaged for compilation

  • syn: Translates RTL to netlist using Yosys

  • timing: Create timing reports of design

The syn and timing steps supports per process options that can be set up by setting ‘syn_np’ or ‘timing_np’ arg to a value > 1, as detailed below:

  • syn_np : Number of parallel synthesis jobs to launch

  • timing_np : Number of parallel timing jobs to launch

Setup file: synflow.py

../../_images/synflow.svg

2.12.1. Configuration#

2.12.1.1. import.verilog#

2.12.1.2. import.convert#

2.12.1.3. import.chisel#

2.12.1.4. import.c#

2.12.1.5. import.bluespec#

2.12.1.6. import.vhdl#

2.12.1.7. import.combine#

Keypath

Value

['flowgraph', 'synflow', 'import.combine', '0', 'input']

  • ('import.convert', '0')
  • ('import.chisel', '0')
  • ('import.c', '0')
  • ('import.bluespec', '0')
  • ('import.vhdl', '0')

['flowgraph', 'synflow', 'import.combine', '0', 'tool']

builtin

['flowgraph', 'synflow', 'import.combine', '0', 'task']

concatenate

['flowgraph', 'synflow', 'import.combine', '0', 'taskmodule']

siliconcompiler.tools.builtin.concatenate

2.12.1.8. syn#

2.12.1.9. synmin#

2.12.1.10. timing#

Keypath

Value

['flowgraph', 'synflow', 'timing', '0', 'input']

('synmin', '0')

['flowgraph', 'synflow', 'timing', '0', 'weight', 'cellarea']

1.0

['flowgraph', 'synflow', 'timing', '0', 'weight', 'peakpower']

1.0

['flowgraph', 'synflow', 'timing', '0', 'weight', 'leakagepower']

1.0

['flowgraph', 'synflow', 'timing', '0', 'goal', 'errors']

0.0

['flowgraph', 'synflow', 'timing', '0', 'goal', 'setupwns']

0.0

['flowgraph', 'synflow', 'timing', '0', 'goal', 'setuptns']

0.0

['flowgraph', 'synflow', 'timing', '0', 'tool']

opensta

['flowgraph', 'synflow', 'timing', '0', 'task']

timing

['flowgraph', 'synflow', 'timing', '0', 'taskmodule']

siliconcompiler.tools.opensta.timing

['flowgraph', 'synflow', 'timing', '1', 'input']

('synmin', '0')

['flowgraph', 'synflow', 'timing', '1', 'weight', 'cellarea']

1.0

['flowgraph', 'synflow', 'timing', '1', 'weight', 'peakpower']

1.0

['flowgraph', 'synflow', 'timing', '1', 'weight', 'leakagepower']

1.0

['flowgraph', 'synflow', 'timing', '1', 'goal', 'errors']

0.0

['flowgraph', 'synflow', 'timing', '1', 'goal', 'setupwns']

0.0

['flowgraph', 'synflow', 'timing', '1', 'goal', 'setuptns']

0.0

['flowgraph', 'synflow', 'timing', '1', 'tool']

opensta

['flowgraph', 'synflow', 'timing', '1', 'task']

timing

['flowgraph', 'synflow', 'timing', '1', 'taskmodule']

siliconcompiler.tools.opensta.timing

['flowgraph', 'synflow', 'timing', '2', 'input']

('synmin', '0')

['flowgraph', 'synflow', 'timing', '2', 'weight', 'cellarea']

1.0

['flowgraph', 'synflow', 'timing', '2', 'weight', 'peakpower']

1.0

['flowgraph', 'synflow', 'timing', '2', 'weight', 'leakagepower']

1.0

['flowgraph', 'synflow', 'timing', '2', 'goal', 'errors']

0.0

['flowgraph', 'synflow', 'timing', '2', 'goal', 'setupwns']

0.0

['flowgraph', 'synflow', 'timing', '2', 'goal', 'setuptns']

0.0

['flowgraph', 'synflow', 'timing', '2', 'tool']

opensta

['flowgraph', 'synflow', 'timing', '2', 'task']

timing

['flowgraph', 'synflow', 'timing', '2', 'taskmodule']

siliconcompiler.tools.opensta.timing