Merge pull request 'Removing mxpic_forge from dependency' (#2) from main into pengkun_main #3

Merged
PotatoMaxwell merged 16 commits from pengkun_main into qinyue_main 2026-06-10 11:34:17 +00:00
Showing only changes of commit 4d17ec7e9e - Show all commits
+54
View File
@@ -39,3 +39,57 @@ The routing method selection logic was updated so perpendicular port-angle cases
mxpic_router/mxpic_router/builder.py
mxpic_router/tests/test_eda_router_contract.py
## 2026-06-04
### Scope
Backend routing spacing behavior and automatic S-bend refinement in `mxpic_router`.
### Summary
Recent work focused on reducing overlap and crossing risks for grouped automatic S-bend connections while keeping the generated GDS impact limited.
### Completed Work
#### 1. S-Bend Spacing Issue Investigation
A route overlap issue was investigated for layouts containing multiple parallel or near-parallel automatic S-bend routes.
The issue was most visible when several component output ports were connected to several port elements. In these cases, the initial straight section of multiple S-bends could overlap or become too close when source and target ports were arranged in parallel.
#### 2. Conservative `Lstart`-Based S-Bend Adjustment
Spacing control was implemented through the native Nazca `sbend_p2p` `Lstart` parameter.
The backend now groups compatible automatic S-bend routes and assigns different `Lstart` values before route generation. This preserves the native S-bend route style and avoids manually constructed detours.
The adjustment applies only to automatic `sbend_p2p` routes. Manual-point routes, U-bends, perpendicular `strt_bend_strt_p2p` routes, and generic bend routes are left unchanged.
#### 3. Bundle-Level Route Grouping and Ordering
Compatible S-bend routes are grouped by routing direction, xsection, width, and radius. The `Lstart` assignment logic was refined for both same-direction fan-out/fan-in routes and symmetric convergence/divergence routes, so outer routes can receive larger offsets when needed.
#### 4. Width-Aware Spacing Step
The base step is now calculated as:
```text
route width + 10um
```
For example, a 0.5um-wide route uses a 10.5um `Lstart` step, while a 40um-wide route uses a 50um `Lstart` step.
#### 5. Test Coverage Update
Contract tests were added and updated to cover automatic S-bend `Lstart` assignment, bundle-level grouping behavior, route ordering, width-aware spacing, and preservation of earlier rotation and perpendicular-routing fixes.
### Modified Files
mxpic_router/mxpic_router/builder.py
mxpic_router/tests/test_eda_router_contract.py