Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tools:layout:start [2025/09/01 19:09] – [Coordinate system] rajit | tools:layout:start [2025/09/21 11:52] (current) – rajit | ||
---|---|---|---|
Line 14: | Line 14: | ||
ACT also generates the LEF for each cell along with the technology LEF. When the unrouted cells are used, ACT uses dummy pin locations for this purpose. Once the cell is routed (step 2), the generated LEFs will includes pin information, | ACT also generates the LEF for each cell along with the technology LEF. When the unrouted cells are used, ACT uses dummy pin locations for this purpose. Once the cell is routed (step 2), the generated LEFs will includes pin information, | ||
- | ===== The rect file format ===== | + | '' |
- | + | ||
- | Preliminary layout files for cells required for place and route are generated in the '' | + | |
- | + | ||
- | An example '' | + | |
- | + | ||
- | < | + | |
- | bbox 0 0 24 72 | + | |
- | rect in[0] polysilicon 15 2 16 5 | + | |
- | rect in[0] polysilicon 13 6 15 8 | + | |
- | rect out ndiffusion 19 24 20 27 | + | |
- | rect # polysilicon 13 65 15 67 | + | |
- | rect in[0] polysilicon 13 28 15 35 | + | |
- | outrect out m1 19 24 21 27 | + | |
- | outrect out m1 18 28 21 30 | + | |
- | inrect in[0] m2 11 1 16 2 | + | |
- | inrect in[0] m2 15 2 16 5 | + | |
- | ... | + | |
- | </code> | + | |
- | + | ||
- | The file begins with the bounding box ('' | + | |
- | + | ||
- | An '' | + | |
- | + | ||
- | A rectangle specifier ('' | + | |
- | + | ||
- | A rectangle can be followed by an optional string that is '' | + | |
- | + | ||
- | ==== Coordinate system ==== | + | |
- | + | ||
- | The internal coordinate system used by rectangles in this file are designed to work directly with '' | + | |
- | < | + | |
- | :box 0 0 10 20 | + | |
- | </ | + | |
- | is of size 10 by 20 units. If we view a box as a collection of 1 by 1 pixels, then this box occupies pixels starting from (0,0) to (9,19). All '' | + | |
- | + | ||
- | The rect command is specifed by 2 coordinate pairs, following the above example: | + | |
- | < | + | |
- | rect < | + | |
- | + | ||
- | rect # m1 0 0 10 20 | + | |
- | </ | + | |
- | + | ||
- | This would occupy the pixels at coordinates (0,0) to (9,19). | + | |
- | ==== Bounding box ==== | + | |
- | + | ||
- | This bounding box corresponds to the place and route boundary for the cell. Note that this is for convenience only; this box is automatically re-computed by the ACT layout library based on the geometry of the cell. The '' | + | |
- | + | ||
- | A user-specified place and route boundary and bounding box can be specified using the '' | + | |
- | + | ||
- | ==== Abutment and alignment ==== | + | |
- | + | ||
- | The layout library has support for manipulating layout. To aid in this, a '' | + | |
- | + | ||
- | A aliment box is required to mark the boundary the next cell is abutted to: | + | |
- | + | ||
- | < | + | |
- | rect # $align 2 2 8 8 | + | |
- | </ | + | |
- | This means that the box used for abutting this cell with another has the specified coordinates. | + | |
- | + | ||
- | The layout engine checks if it can abut 2 cells by looking up if they have a matching label, so next to the abutmentbox you need to specify abutment markers: | + | |
- | these markers are just a single coordinate thus the first coordinate pair is just repeated. | + | |
- | + | ||
- | < | + | |
- | rect $l:name1 $align 2 2 2 2 | + | |
- | </ | + | |
- | This means that a left edge alignment marker called '' | + | |
- | + | ||
- | < | + | |
- | rect $r:name2 $align 2 8 2 8 | + | |
- | </ | + | |
- | This means that a right edge alignment marker called '' | + | |
- | + | ||
- | Similarly, '' | + | |