# High-Level Notes: Auto-Routing for Integrated Circuits

We're implementing auto-routing for photonic and RF integrated circuits. The problem space has the following features:

    - **Single Layer:** All paths are on a single layer; multi-layer routing is not supported.
    - **No Crossings:** Crossings are to be avoided and are not supported by the router's automatic placement. The user must manually handle any required crossings.
    - **Large Bend Radii:** Bends use large radii ($R$), and are usually pre-generated (e.g. 90-degree cells).
    - **Proximity Sensitivity:** Paths are sensitive to proximity to other paths and obstacles (crosstalk/coupling).
    - **Manhattan Preference:** Manhattan pathing is sufficient for most cases; any-angle is rare.
    - **S-Bends:** S-bends are necessary for small lateral offsets ($O < 2R$).
    - **Hybrid Search:** A* state-lattice search is used for discrete component placement.
    - **Dilation:** A $Clearance/2$ dilation is applied to all obstacles and paths for efficient collision avoidance.
    - **Negotiated Congestion:** A multi-net "PathFinder" loop iteratively reroutes nets to resolve congestion.
