Expand description
Atoll: Automatic transformation of logical layout.
§Grid structure
Atoll assumes that you have a set of metal layers M0, M1, M2, ...
, where each metal
layer can be connected to the layer immediately above or below.
Atoll also assumes that each metal layer has a preferred direction, and that
horizontal and vertical metals alternate.
Suppose that P(i)
is the pitch of the i-th routing layer.
Each ATOLL tile must pick an integer X such that:
- A complete block can be assembled from layers
M0, M1, ..., MX
- In particular, tiles contain no routing layers above
MX
. - The width of all tiles is an integer multiple of
LCM { P(0), P(2), ... }
, assumingM0
is vertical. - The height of all tiles is an integer multiple of
LCM { P(1), P(3), ... }
, assumingM0
is vertical (and therefore thatM1
is horizontal).
The line and space widths must each be even integers, so that the center of any track or space is also an integer.
For symmetry guarantees, each routing layer can declare having no offset or a half-pitch offset. Half-pitch offset routing layers have one more track available as tiles may not use tracks that straddle ATOLL tile boundaries. These tracks may be used by encompassing tiles, however.
§Track numbering
Track coordinates have the form (layer, x, y)
.
Each track coordinate references an intersection point between a track
on layer
and a track on layer + 1
.
If layer
runs horizontally, x
indexes the (vertical) tracks on layer + 1
and y
indexes the horizontal tracks on layer
.
The origin is the lower-left corner of the tile.
§Routing
Each routing layer can only travel in one direction. Therefore, we can assume that if two adjacent coordinates are of the same net are adjacent in the routing direction, they are connected. In the perpendicular direction, they are not connected.
Endcaps may be specified, but should not cause DRC violations if there is a cut between tracks. These only affect how track coordinates are converted to physical rectangles by ATOLL’s APIs.
§Post layout hooks
ATOLL should have a way of passing layout information such as instantiations of “primitive” tiles to the plugin in an un-typed manner such that the plugin can run post-processing on the layout before actually drawing it to GDS.
§Filler cells
Filler cells (e.g. tap and decap cells) must have a width equal to the GCD of the widths of all device cells. Note that this GCD must be an integer multiple of the LCMs of track pitches over all vertical running routing layers. A similar requirement holds for filler cell height.
§Power strapping
Atoll can be configured to insert power straps on tracks available after routing.
Modules§
- Generate abstract views of layout cells.
- Uniform routing grids and layer stacks.
- Routing interfaces and implementations.
- ATOLL strap routing APIs.
Structs§
- A drawn ATOLL instance.
- An ATOLL instance representing both a schematic and layout instance.
- A builder for an ATOLL tile’s IOs.
- Identifies nets in a routing solver.
- The layer indicating the outline of an ATOLL tile.
- An ATOLL instance with typed components stripped out.
- A builder for ATOLL tiles.
- A wrapper of a block implementing
Tile
that can be instantiated in Substrate schematics and layouts. - Virtual layers for use in ATOLL.
Enums§
- The orientation of an instance.
- The state of a point on a routing grid.
- Allowed track directions on a routing layer.
Traits§
- A tile that can be instantiated in ATOLL.