2022-10-15 03:27:39 +02:00
|
|
|
### [Go Back](./index.md#table-of-contents)
|
2022-10-05 06:58:49 +02:00
|
|
|
|
|
|
|
|
# Technology Setup
|
|
|
|
|
This page of the documentation explains the technology setup of OpenRAM.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Table of Contents
|
|
|
|
|
1. [Technology Directories](#technology-directories)
|
2022-11-12 01:16:38 +01:00
|
|
|
1. Technology Configuration:
|
2022-10-05 06:58:49 +02:00
|
|
|
1. [Layer Map](#technology-configuration-layer-map)
|
2022-11-12 01:16:38 +01:00
|
|
|
1. [GDS](#technology-configuration-gds)
|
|
|
|
|
1. [DRC](#technology-configuration-drc)
|
|
|
|
|
1. [SPICE](#technology-configuration-spice)
|
|
|
|
|
1. [Parameters](#technology-configuration-parameters)
|
2022-10-05 06:58:49 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Technology Directories
|
2022-11-12 01:16:38 +01:00
|
|
|
* Environment variable OPENRAM\_TECH specifies list of technology directories
|
2022-10-05 06:58:49 +02:00
|
|
|
* Similar to `*nix $PATH`
|
|
|
|
|
* Directory structure:
|
|
|
|
|
```
|
|
|
|
|
techname/
|
|
|
|
|
__init__.py -- Sets up PDK environment
|
|
|
|
|
tech/ -- Contains technology configuration
|
|
|
|
|
__init__.py -- Loads all modules
|
|
|
|
|
tech.py -- SPICE, DRC, GDS, and layer config
|
|
|
|
|
gds_lib/ -- Contains .gds files for each lib cell
|
|
|
|
|
sp_lib/ -- Contains .sp file for each lib cell
|
|
|
|
|
models/ -- Contains SPICE device corner models
|
|
|
|
|
(tf/) -- May contain some PDK material
|
|
|
|
|
(mag_lib/) -- May contain other layout formats
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Technology Configuration: Layer Map
|
|
|
|
|
* Layer map contains mapping of layer names to GDS layers
|
|
|
|
|
* Layer names are used in OpenRAM code directly
|
|
|
|
|
```python
|
|
|
|
|
layer={}
|
|
|
|
|
layer["vtg"] = -1
|
|
|
|
|
layer["vth"] = -1
|
|
|
|
|
layer["contact"] = 47
|
|
|
|
|
layer["pwell"] = 41
|
|
|
|
|
...
|
|
|
|
|
layer["metal4"] = 31
|
|
|
|
|
layer["text"] = 63
|
|
|
|
|
layer["boundary"] = 63
|
|
|
|
|
layer["blockage"] = 83
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Technology Configuration: GDS
|
|
|
|
|
* OpenRAM uses the gdsMill library (included and heavily modified)
|
|
|
|
|
* Units defined for GDS format
|
|
|
|
|
* First number is DB units per user units
|
|
|
|
|
* Second number is DB unit in meters
|
|
|
|
|
```python
|
|
|
|
|
# GDS file info
|
|
|
|
|
GDS={}
|
|
|
|
|
# gds units
|
|
|
|
|
GDS["unit"]=(0.001,1e-6)
|
|
|
|
|
# default label zoom
|
|
|
|
|
GDS["zoom"] = 0.5
|
|
|
|
|
```
|
|
|
|
|
* Zoom defines default zoom for labels
|
|
|
|
|
* More info on the GDS format at:
|
|
|
|
|
* http://boolean.klaasholwerda.nl/interface/bnf/gdsformat.html
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Technology Configuration: DRC
|
2022-11-12 01:16:38 +01:00
|
|
|
* Creates the design\_rule class with several parts:
|
2022-10-05 06:58:49 +02:00
|
|
|
* Grid size
|
|
|
|
|
* Location of DRC, LVS, PEX rules and layer map
|
|
|
|
|
* Subset of design rules for FEOL and BEOL
|
|
|
|
|
* Design rules have common naming scheme (names used in OpenRAM)
|
|
|
|
|
* `minwidth_<layer>`
|
|
|
|
|
* `<layer>_to_<layer>`
|
|
|
|
|
* `<layer>_extend_<layer>`
|
|
|
|
|
* `minarea_<layer>`
|
|
|
|
|
* Allows rule tables for complex rules
|
|
|
|
|
```python
|
|
|
|
|
# Minimum spacing of metal3 wider than 0.09 & longer than 0.3 = 0.09
|
|
|
|
|
# Minimum spacing of metal3 wider than 0.27 & longer than 0.9 = 0.27
|
|
|
|
|
# Minimum spacing of metal3 wider than 0.5 & longer than 1.8 = 0.5
|
|
|
|
|
# Minimum spacing of metal3 wider than 0.9 & longer than 2.7 = 0.9
|
|
|
|
|
# Minimum spacing of metal3 wider than 1.5 & longer than 4.0 = 1.5
|
|
|
|
|
drc["metal3_to_metal3"] = drc_lut({(0.00, 0.0) : 0.07,
|
|
|
|
|
(0.09, 0.3) : 0.09,
|
|
|
|
|
(0.27, 0.9) : 0.27,
|
|
|
|
|
(0.50, 1.8) : 0.5,
|
|
|
|
|
(0.90, 2.7) : 0.9,
|
|
|
|
|
(1.50, 4.0) : 1.5})
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Technology Configuration: SPICE
|
|
|
|
|
* Device models (and corners)
|
|
|
|
|
* Defaults simulation values
|
|
|
|
|
* Voltage
|
|
|
|
|
* Temperature
|
|
|
|
|
* Feasible period for simulation
|
|
|
|
|
* Rise/fall input slews
|
|
|
|
|
* Analytical parameters
|
|
|
|
|
* For example, device capacitance and "on" resistance
|
|
|
|
|
* Used for analytical delay and power estimation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Technology Configuration: Parameters
|
|
|
|
|
* Default design parameters
|
|
|
|
|
* Being cleaned up and standardized...
|
|
|
|
|
* Defaults simulation values
|
|
|
|
|
* Voltage
|
|
|
|
|
* Temperature
|
|
|
|
|
* Feasible period for simulation
|
|
|
|
|
* Rise/fall input slews
|
|
|
|
|
* Analytical parameters
|
|
|
|
|
* Used for analytical delay and power estimation
|
2022-11-12 01:16:38 +01:00
|
|
|
* E.g. device capacitance and "on" resistance
|