4.2 KiB
4.2 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 in open space. |
bend_radii |
list[float] |
[10.0] |
Available radii for 90-degree turns (µm). Multiple values allow the router to pick the best fit. |
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 | Margin (µm) for the "clipped_bbox" collision model. |
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 uses the bounding box but clips corners that are far from the waveguide.
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) are faster but may produce longer paths. |
congestion_penalty |
float |
10,000.0 | Multiplier for overlaps in the multi-net Negotiated Congestion loop. |
3. 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 to allow 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.
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.