This patch extensively modifies DSENT so that it can be accessed using Python. To access the Python interface, DSENT needs to compiled as a shared library. For this purpose a CMakeLists.txt file has been added. Some of the code that is not required is being removed.
188 lines
7.1 KiB
Text
188 lines
7.1 KiB
Text
# Copyright (c) 2012 Massachusetts Institute of Technology
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
# of this software and associated documentation files (the "Software"), to deal
|
|
# in the Software without restriction, including without limitation the rights
|
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
# copies of the Software, and to permit persons to whom the Software is
|
|
# furnished to do so, subject to the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be included in
|
|
# all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
# THE SOFTWARE.
|
|
|
|
# WARNING: Most commercial fabs will not be happy if you release their exact
|
|
# process information! If you derive these numbers through SPICE models,
|
|
# the process design kit, or any other confidential material, please round-off
|
|
# the values and leave the process name unidentifiable by fab (i.e. call it
|
|
# Bulk90LVT instead of TSMC90LVT) if you release parameters publicly. This
|
|
# rule may not apply for open processes, but you may want to check.
|
|
|
|
# All units are in SI, (volts, meters, kelvin, farads, ohms, amps, etc.)
|
|
|
|
# This file contains the model for a bulk 45nm LVT process
|
|
Name = Bulk45LVT
|
|
|
|
# Supply voltage used in the circuit and for characterizations (V)
|
|
Vdd = 1.0
|
|
# Temperature (K)
|
|
Temperature = 340
|
|
|
|
# =============================================================================
|
|
# Parameters for transistors
|
|
# =============================================================================
|
|
|
|
# Contacted gate pitch (m)
|
|
Gate->PitchContacted = 0.200e-6
|
|
|
|
# Min gate width (m)
|
|
Gate->MinWidth = 0.160e-6
|
|
|
|
# Gate cap per unit width (F/m)
|
|
Gate->CapPerWidth = 1.000e-9
|
|
# Source/Drain cap per unit width (F/m)
|
|
Drain->CapPerWidth = 0.600e-9
|
|
|
|
# Parameters characterization temperature (K)
|
|
Nmos->CharacterizedTemperature = 300.0
|
|
Pmos->CharacterizedTemperature = 300.0
|
|
|
|
#------------------------------------------------------------------------------
|
|
# I_Eff definition in Na, IEDM 2002
|
|
# I_EFF = (I(VG = 0.5, VD = 1.0) + I(VG = 1.0, VD = 0.5))/2
|
|
# R_EFF = VDD / I_EFF * 1 / (2 ln(2))
|
|
# This is generally accurate for when input and output transition times
|
|
# are similar, which is a reasonable case after timing optimization
|
|
#------------------------------------------------------------------------------
|
|
# Effective resistance (Ohm-m)
|
|
Nmos->EffResWidth = 1.100e-3
|
|
Pmos->EffResWidth = 1.500e-3
|
|
|
|
#------------------------------------------------------------------------------
|
|
# The ratio of extra effective resistance with each additional stacked
|
|
# transistor
|
|
# EffResStackRatio = (R_EFF_NAND2 - R_EFF_INV) / R_EFF_INV)
|
|
# For example, inverter has an normalized effective drive resistance of 1.0.
|
|
# A NAND2 (2-stack) will have an effective drive of 1.0 + 0.7, a NAND3 (3-stack)
|
|
# will have an effective drive of 1.0 + 2 * 0.7. Use NORs for Pmos. This fit
|
|
# works relatively well up to 4 stacks. This value will change depending on the
|
|
# VDD used.
|
|
#------------------------------------------------------------------------------
|
|
# Effective resistance stack ratio
|
|
Nmos->EffResStackRatio = 0.7
|
|
Pmos->EffResStackRatio = 0.6
|
|
|
|
#------------------------------------------------------------------------------
|
|
# I_OFF defined as |I_DS| for |V_DS| = V_DD and |V_GS| = 0.0
|
|
# Minimum off current is used as a second fit point, since I_OFF often
|
|
# stops scaling with transistor width below some threshold
|
|
#------------------------------------------------------------------------------
|
|
# Off current per width (A/m)
|
|
Nmos->OffCurrent = 100e-3
|
|
Pmos->OffCurrent = 100e-3
|
|
|
|
# Minimum off current (A)
|
|
Nmos->MinOffCurrent = 100e-9
|
|
Pmos->MinOffCurrent = 20e-9
|
|
|
|
# Subthreshold swing (V/dec)
|
|
Nmos->SubthresholdSwing = 0.100
|
|
Pmos->SubthresholdSwing = 0.100
|
|
|
|
# DIBL factor (V/V)
|
|
Nmos->DIBL = 0.150
|
|
Pmos->DIBL = 0.150
|
|
|
|
# Subthreshold leakage temperature swing (K/dec)
|
|
Nmos->SubthresholdTempSwing = 100
|
|
Pmos->SubthresholdTempSwing = 100
|
|
#------------------------------------------------------------------------------
|
|
|
|
# =============================================================================
|
|
# Parameters for interconnect
|
|
# =============================================================================
|
|
|
|
Wire->AvailableLayers = [Metal1,Local,Intermediate,Global]
|
|
|
|
# Metal 1 Wire (used for std cell routing only)
|
|
# Min width (m)
|
|
Wire->Metal1->MinWidth = 80e-9
|
|
# Min spacing (m)
|
|
Wire->Metal1->MinSpacing = 80e-9
|
|
# Resistivity (Ohm-m)
|
|
Wire->Metal1->Resistivity = 3.00e-8
|
|
# Metal thickness (m)
|
|
Wire->Metal1->MetalThickness = 140.0e-9
|
|
# Dielectric thickness (m)
|
|
Wire->Metal1->DielectricThickness = 130.0e-9
|
|
# Dielectric constant
|
|
Wire->Metal1->DielectricConstant = 3.2
|
|
|
|
# Local wire, 1.0X of the M1 pitch
|
|
# Min width (m)
|
|
Wire->Metal1->MinWidth = 80e-9
|
|
# Min spacing (m)
|
|
Wire->Metal1->MinSpacing = 80e-9
|
|
# Resistivity (Ohm-m)
|
|
Wire->Metal1->Resistivity = 3.00e-8
|
|
# Metal thickness (m)
|
|
Wire->Metal1->MetalThickness = 140.0e-9
|
|
# Dielectric thickness (m)
|
|
Wire->Metal1->DielectricThickness = 130.0e-9
|
|
# Dielectric constant
|
|
Wire->Metal1->DielectricConstant = 3.2
|
|
|
|
# Intermediate wire, 1.4X the M1 pitch
|
|
# Min width (m)
|
|
Wire->Intermediate->MinWidth = 110e-9
|
|
# Min spacing (m)
|
|
Wire->Intermediate->MinSpacing = 110e-9
|
|
# Resistivity (Ohm-m)
|
|
Wire->Intermediate->Resistivity = 2.60e-8
|
|
# Metal thickness (m)
|
|
Wire->Intermediate->MetalThickness = 200e-9
|
|
# Dielectric thickness (m)
|
|
Wire->Intermediate->DielectricThickness = 170e-9
|
|
# Dielectric constant
|
|
Wire->Intermediate->DielectricConstant = 3.00
|
|
|
|
# Global wire, 2.0X the M1 pitch
|
|
# Min width (m)
|
|
Wire->Global->MinWidth = 160e-9
|
|
# Min spacing (m)
|
|
Wire->Global->MinSpacing = 160e-9
|
|
# Resistivity (Ohm-m)
|
|
Wire->Global->Resistivity = 2.30e-8
|
|
# Metal thickness (m)
|
|
Wire->Global->MetalThickness = 280e-9
|
|
# Dielectric thickness (m)
|
|
Wire->Global->DielectricThickness = 250e-9
|
|
# Dielectric constant
|
|
Wire->Global->DielectricConstant = 2.80
|
|
|
|
# =============================================================================
|
|
# Parameters for Standard Cells
|
|
# =============================================================================
|
|
|
|
# The height of the standard cell is usually a multiple of the vertical
|
|
# M1 pitch (tracks). By definition, an X1 size cell has transistors
|
|
# that fit exactly in the given cell height without folding, or leaving
|
|
# any wasted vertical area
|
|
|
|
# Reasonable values for the number of M1 tracks that we have seen are 8-14
|
|
StdCell->Tracks = 11
|
|
# Height overhead due to supply rails, well spacing, etc. Note that this will grow
|
|
# if the height of the standard cell decreases!
|
|
StdCell->HeightOverheadFactor = 1.400
|
|
|
|
# Sets the available sizes of each standard cell. Keep in mind that
|
|
# 1.0 is the biggest cell without any transistor folding
|
|
StdCell->AvailableSizes = [1.0, 1.4, 2.0, 3.0, 4.0, 6.0, 8.0, 10.0, 12.0, 16.0]
|
|
|