Flow

Full Flow

COmPOSER is organized around hybrid analytical sizing, primitive block layout generation, layout synthesis, and post-layout verification. The public repo exposes the synthesis side of this architecture through composer.sh and the stage scripts.

Main Driver

./composer.sh
./composer.sh <config.json>
./composer.sh <config.json> placement
./composer.sh <config.json> only routing

Recognized Steps

  • sizing
  • parse
  • placement
  • routing_inputs
  • routing

What Each Step Does

StepAction
sizingRuns the hybrid optimizer and maps the selected values into the sized netlist
parseParses the sized netlist, generates primitive layouts, and exports stage 2 JSON
placementRuns the Gurobi-based placer and creates placement JSON and placement GDS
routing_inputsConverts primitive GDS files into LEF and combines them for routing
routingRuns signal routing. When pdn_routing is configured, it also exports hierarchical signal nets, generates the grid and PDN inputs, runs the dedicated power router, and writes the hierarchical final GDS.

Flow Mapping

  • Hybrid optimizer maps mostly to sizing
  • Primitive generation maps mostly to parse
  • Layout synthesis maps mostly to placement, routing_inputs, and routing
  • Verification closes the loop beyond the open synthesis scripts bundled here

Automatic Connected-PDN Routing

composer.sh is the only required stage driver. It inspects the selected config.json: configurations containing pdn_routing use perform_routing_with_pdn.py, while configurations without it use the legacy signal-only perform_routing.py. The combined script runs signal routing, exports per-net signal GDS, generates the mesh and PDN-specific placement/LEF, invokes ROUTER/pdn_router/pdn_router, and assembles stage_3/pdn/<top>_final.gds. Power-specific endpoint behavior remains isolated from the original Hanan router.