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 routingRecognized Steps
sizingparseplacementrouting_inputsrouting
What Each Step Does
| Step | Action |
|---|---|
sizing | Runs the hybrid optimizer and maps the selected values into the sized netlist |
parse | Parses the sized netlist, generates primitive layouts, and exports stage 2 JSON |
placement | Runs the Gurobi-based placer and creates placement JSON and placement GDS |
routing_inputs | Converts primitive GDS files into LEF and combines them for routing |
routing | Runs 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, androuting - 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.
