6.3 KiB
Inire Configuration & API Documentation
This document describes the user-tunable parameters for the inire auto-router.
1. AStarRouter Parameters
The AStarRouter is the core pathfinding engine. It can be configured directly through its constructor.
| Parameter | Type | Default | Description |
|---|---|---|---|
node_limit |
int |
1,000,000 | Maximum number of states to explore per net. Increase for very complex paths. |
straight_lengths |
list[float] |
[1.0, 5.0, 25.0] |
Discrete step sizes for straight waveguides (µm). Larger steps speed up search. |
bend_radii |
list[float] |
[10.0] |
Available radii for 90-degree turns (µm). Multiple values allow best-fit selection. |
sbend_offsets |
list[float] |
[-5, -2, 2, 5] |
Lateral offsets for parametric S-bends (µm). |
sbend_radii |
list[float] |
[10.0] |
Available radii for S-bends (µm). |
snap_to_target_dist |
float |
20.0 | Distance (µm) at which the router attempts an exact bridge to the target port. |
bend_penalty |
float |
50.0 | Flat cost added for every 90-degree bend. Higher values favor straight lines. |
sbend_penalty |
float |
100.0 | Flat cost added for every S-bend. Usually higher than bend_penalty. |
bend_collision_type |
str |
"arc" |
Collision model for bends: "arc", "bbox", or "clipped_bbox". |
bend_clip_margin |
float |
10.0 | Extra space (µm) around the waveguide before the bounding box corners are clipped. |
Bend Collision Models
"arc": High-fidelity model following the exact curved waveguide geometry."bbox": Conservative model using the axis-aligned bounding box of the bend. Fast but blocks more space."clipped_bbox": A middle ground that starts with the bounding box but applies 45-degree linear cuts to the inner and outer corners. Thebend_clip_margindefines the extra safety distance from the waveguide edge to the cut line.
2. CostEvaluator Parameters
The CostEvaluator defines the "goodness" of a path.
| Parameter | Type | Default | Description |
|---|---|---|---|
unit_length_cost |
float |
1.0 | Cost per µm of wire length. |
greedy_h_weight |
float |
1.1 | Heuristic weight. 1.0 is optimal; higher values (e.g. 1.5) speed up search. |
congestion_penalty |
float |
10,000.0 | Multiplier for overlaps in the multi-net Negotiated Congestion loop. |
3. PathFinder Parameters
The PathFinder orchestrates multi-net routing using the Negotiated Congestion algorithm.
| Parameter | Type | Default | Description |
|---|---|---|---|
max_iterations |
int |
10 | Maximum number of rip-up and reroute iterations to resolve congestion. |
base_congestion_penalty |
float |
100.0 | Starting penalty for overlaps. Multiplied by 1.5 each iteration if congestion remains. |
4. CollisionEngine Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
clearance |
float |
(Required) | Minimum required distance between any two waveguides or obstacles (µm). |
safety_zone_radius |
float |
0.0021 | Radius (µm) around ports where collisions are ignored for PDK boundary incidence. |
4. Physical Units & Precision
- Coordinates: Micrometers (µm).
- Grid Snapping: The router internally operates on a 1nm grid for final ports and a 1µm lattice for expansion moves.
- Search Space: Assumptions are optimized for design areas up to 20mm x 20mm.
- Design Bounds: The boundary limits defined in
DangerMapstrictly constrain the physical edges (dilated geometry) of the waveguide. Any move that would cause the waveguide or its required clearance to extend beyond these bounds is rejected with an infinite cost.
5. Best Practices & Tuning Advice
Speed vs. Optimality
The greedy_h_weight is your primary lever for search performance.
1.0: Dijkstra-like behavior. Guarantees the shortest path but is very slow.1.1to1.2: Recommended range. Balances wire length with fast convergence.> 1.5: Extremely fast "greedy" search. May produce zig-zags or suboptimal detours.
Avoiding "Zig-Zags"
If the router produces many small bends instead of a long straight line:
- Increase
bend_penalty(e.g., set to100.0or higher). - Ensure
straight_lengthsincludes larger values like25.0or100.0. - Decrease
greedy_h_weightcloser to1.0.
Handling Congestion
In multi-net designs, if nets are overlapping:
- Increase
congestion_penaltyinCostEvaluator. - Increase
max_iterationsinPathFinder. - If a solution is still not found, check if the
clearanceis physically possible given the design's narrowest bottlenecks.
S-Bend Usage
Parametric S-bends are triggered by the sbend_offsets list. If you need a specific lateral shift (e.g., 5.86µm for a 45° switchover), add it to sbend_offsets. The router will only use an S-bend if it can reach a state that is exactly on the lattice or the target.