This page of the documentation explains the technology setup of OpenRAM.
- Technology Directories
- Technology Configuration:
- Environment variable OPENRAM_TECH specifies list of technology directories
- Similar to
*nix $PATH
- Similar to
- 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
- Layer map contains mapping of layer names to GDS layers
- Layer names are used in OpenRAM code directly
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
- 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
# 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:
- Creates the design_rule class with several parts:
- 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
# 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})
- 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
- 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
- E.g. device capacitance and "on" resistance