MERGE: documentation enhancements for LVS/DRC

This commit is contained in:
Matthias Koefferlein 2020-03-28 12:29:53 +01:00
parent a47932a79e
commit 666cdeadc5
11 changed files with 795 additions and 542 deletions

View File

@ -160,9 +160,9 @@ HEAD
item.name || raise("Missing @name for item #{item_key}")
item.brief || raise("Missing @brief for item #{item_key}")
doc += "<a name=\"" + escape(self.mod, item.name) + "\"/>"
doc += "<h2>\"" + escape(self.mod, item.name) + "\" - " + escape(self.mod, item.brief) + "</h2>\n"
doc += "<keyword name=\"" + escape(self.mod, item.name) + "\"/>\n"
doc += "<a name=\"" + escape(self.mod, item.name) + "\"/>"
if ! item.synopsis.empty?
doc += "<p>Usage:</p>\n"
doc += "<ul>\n"

View File

@ -421,13 +421,31 @@ Class<db::NetlistDeviceExtractorMOS3Transistor> decl_NetlistDeviceExtractorMOS3T
"conductive layer.\n"
"\n"
"The device class produced by this extractor is \\DeviceClassMOS3Transistor.\n"
"The extractor extracts the six parameters of this class: L, W, AS, AD, PS and PD.\n"
"\n"
"In strict mode, the device recognition layer names are 'S' (source), 'D' (drain) and 'G' (gate).\n"
"Otherwise, they are 'SD' (source/drain) and 'G' (gate).\n"
"The terminal output layer names are 'tS' (source), 'tG' (gate) and 'tD' (drain).\n"
"The extractor delivers six parameters:\n"
"\n"
"The diffusion area is distributed on the number of gates connecting to\n"
"@ul\n"
"@li 'L' - the gate length in micrometer units @/li\n"
"@li 'W' - the gate width in micrometer units @/li\n"
"@li 'AS' and 'AD' - the source and drain region areas in square micrometers @/li\n"
"@li 'PS' and 'PD' - the source and drain region perimeters in micrometer units @/li\n"
"@/ul\n"
"\n"
"The device layer names are:\n"
"\n"
"@ul\n"
"@li In strict mode: 'S' (source), 'D' (drain) and 'G' (gate). @/li\n"
"@li In non-strict mode: 'SD' (source and drain) and 'G' (gate). @/li\n"
"@/ul\n"
"\n"
"The terminals are output on these layers:\n"
"@ul\n"
"@li 'tS' - source. Default output is 'S' (strict mode) or 'SD' (otherwise). @/li\n"
"@li 'tD' - drain. Default output is 'D' (strict mode) or 'SD' (otherwise). @/li\n"
"@li 'tG' - gate. Default output is 'G'. @/li\n"
"@/ul\n"
"\n"
"The source/drain (diffusion) area is distributed on the number of gates connecting to\n"
"the particular source or drain area.\n"
"\n"
"This class is a closed one and methods cannot be reimplemented. To reimplement "
@ -451,12 +469,23 @@ Class<db::NetlistDeviceExtractorMOS4Transistor> decl_NetlistDeviceExtractorMOS4T
"It is based on the \\DeviceExtractorMOS3Transistor class with the extension of a bulk terminal "
"and corresponding bulk terminal output (annotation) layer.\n"
"\n"
"The bulk terminal layer ('tB') can be an empty layer representing the substrate.\n"
"In this use mode the bulk terminal shapes will be produced on the 'tB' layer. This\n"
"layer then needs to be connected to a global net to establish the net connection.\n"
"The parameters of a MOS4 device are the same than for MOS3 devices. For the device "
"layers the bulk layer is added.\n"
"\n"
"@ul\n"
"@li 'B' (bulk) - currently this layer is not used and can be empty. @/li\n"
"@/ul\n"
"\n"
"The bulk terminals are output on this layer:\n"
"@ul\n"
"@li 'tB' - bulk terminal (a copy of the gate shape). Default output is 'B'. @/li\n"
"@/ul\n"
"\n"
"The bulk terminal layer can be empty. In this case, it needs \n"
"to be connected to a global net to establish the net connection.\n"
"\n"
"The device class produced by this extractor is \\DeviceClassMOS4Transistor.\n"
"The "
"\n"
"This class is a closed one and methods cannot be reimplemented. To reimplement "
"specific methods, see \\DeviceExtractor.\n"
"\n"
@ -487,10 +516,25 @@ Class<db::NetlistDeviceExtractorResistor> decl_NetlistDeviceExtractorResistor (d
"'R = L / W * sheet_rho'.\n"
"\n"
"The device class produced by this extractor is \\DeviceClassResistor.\n"
"The extractor extracts the three parameters of this class: R, A and P.\n"
"The extractor produces three parameters:\n"
"\n"
"The device recognition layer names are 'R' (resistor) and 'C' (contacts).\n"
"The terminal output layer names are 'tA' (terminal A) and 'tB' (terminal B).\n"
"@ul\n"
"@li 'R' - the resistance in Ohm @/li\n"
"@li 'A' - the resistor's area in square micrometer units @/li\n"
"@li 'P' - the resistor's perimeter in micrometer units @/li\n"
"@/ul\n"
"\n"
"The device layer names are:\n"
"\n"
"@ul\n"
"@li 'R' - resistor path. This is the geometry that defines the resistor's current path. @/li\n"
"@li 'C' - contacts. These areas form the contact regions at the ends of the resistor path. @/li\n"
"@/ul\n"
"\n"
"The terminals are output on these layers:\n"
"@ul\n"
"@li 'tA', 'tB' - the two terminals of the resistor. @/li\n"
"@/ul\n"
"\n"
"This class is a closed one and methods cannot be reimplemented. To reimplement "
"specific methods, see \\DeviceExtractor.\n"
@ -512,16 +556,30 @@ Class<db::NetlistDeviceExtractorResistorWithBulk> decl_NetlistDeviceExtractorRes
"This class supplies the generic extractor for a resistor device including a bulk terminal.\n"
"The device is defined the same way than devices are defined for \\DeviceExtractorResistor.\n"
"\n"
"In addition, a bulk terminal layer must be provided.\n"
"The bulk terminal layer can be an empty layer representing the substrate.\n"
"In this use mode the bulk terminal shapes will be produced on the 'tW' layer. This\n"
"layer then needs to be connected to a global net to establish the net connection.\n"
"\n"
"The device class produced by this extractor is \\DeviceClassResistorWithBulk.\n"
"The extractor extracts the three parameters of this class: R, A and P.\n"
"The extractor produces three parameters:\n"
"\n"
"The device recognition layer names are 'R' (resistor), 'C' (contacts) and 'W' (well, bulk).\n"
"The terminal output layer names are 'tA' (terminal A), 'tB' (terminal B) and 'tW' (well, bulk).\n"
"@ul\n"
"@li 'R' - the resistance in Ohm @/li\n"
"@li 'A' - the resistor's area in square micrometer units @/li\n"
"@li 'P' - the resistor's perimeter in micrometer units @/li\n"
"@/ul\n"
"\n"
"The device layer names are:\n"
"\n"
"@ul\n"
"@li 'R' - resistor path. This is the geometry that defines the resistor's current path. @/li\n"
"@li 'C' - contacts. These areas form the contact regions at the ends of the resistor path. @/li\n"
"@li 'W' - well, bulk. Currently this layer is ignored for the extraction and can be empty. @/li\n"
"@/ul\n"
"\n"
"The terminals are output on these layers:\n"
"@ul\n"
"@li 'tA', 'tB' - the two terminals of the resistor. @/li\n"
"@li 'tW' - the bulk terminal (copy of the resistor area). @/li\n"
"@/ul\n"
"\n"
"The bulk terminal layer can be an empty layer representing the substrate. In this case, it needs to be connected globally.\n"
"\n"
"This class is a closed one and methods cannot be reimplemented. To reimplement "
"specific methods, see \\DeviceExtractor.\n"
@ -545,11 +603,28 @@ Class<db::NetlistDeviceExtractorCapacitor> decl_NetlistDeviceExtractorCapacitor
"The capacitance is computed from the overlapping area of the plates "
"using 'C = A * area_cap' (area_cap is the capacitance per square micrometer area).\n"
"\n"
"The device class produced by this extractor is \\DeviceClassCapacitor.\n"
"The extractor extracts the three parameters of this class: C, A and P.\n"
"Although 'area_cap' can be given in any unit, Farad should be preferred as this is the "
"convention used for output into a netlist.\n"
"\n"
"The device recognition layer names are 'P1' (plate 1) and 'P2' (plate 2).\n"
"The terminal output layer names are 'tA' (terminal A) and 'tB' (terminal B).\n"
"The device class produced by this extractor is \\DeviceClassCapacitor.\n"
"The extractor produces three parameters:\n"
"\n"
"@ul\n"
"@li 'C' - the capacitance @/li\n"
"@li 'A' - the capacitor's area in square micrometer units @/li\n"
"@li 'P' - the capacitor's perimeter in micrometer units @/li\n"
"@/ul\n"
"\n"
"The device layer names are:\n"
"\n"
"@ul\n"
"@li 'P1', 'P2' - the two plates. @/li\n"
"@/ul\n"
"\n"
"The terminals are output on these layers:\n"
"@ul\n"
"@li 'tA', 'tB' - the two terminals. Defaults to 'P1' and 'P2'. @/li\n"
"@/ul\n"
"\n"
"This class is a closed one and methods cannot be reimplemented. To reimplement "
"specific methods, see \\DeviceExtractor.\n"
@ -571,16 +646,29 @@ Class<db::NetlistDeviceExtractorCapacitorWithBulk> decl_NetlistDeviceExtractorCa
"This class supplies the generic extractor for a capacitor device including a bulk terminal.\n"
"The device is defined the same way than devices are defined for \\DeviceExtractorCapacitor.\n"
"\n"
"In addition, a bulk terminal layer must be provided.\n"
"The bulk terminal layer can be an empty layer representing the substrate.\n"
"In this use mode the bulk terminal shapes will be produced on the 'tW' layer. This\n"
"layer then needs to be connected to a global net to establish the net connection.\n"
"\n"
"The device class produced by this extractor is \\DeviceClassCapacitorWithBulk.\n"
"The extractor extracts the three parameters of this class: C, A and P.\n"
"The extractor produces three parameters:\n"
"\n"
"The device recognition layer names are 'P1' (plate 1), 'P2' (plate 2) and 'W' (well, bulk).\n"
"The terminal output layer names are 'tA' (terminal A), 'tB' (terminal B) and 'tW' (well, bulk).\n"
"@ul\n"
"@li 'C' - the capacitance @/li\n"
"@li 'A' - the capacitor's area in square micrometer units @/li\n"
"@li 'P' - the capacitor's perimeter in micrometer units @/li\n"
"@/ul\n"
"\n"
"The device layer names are:\n"
"\n"
"@ul\n"
"@li 'P1', 'P2' - the two plates. @/li\n"
"@li 'W' - well, bulk. Currently this layer is ignored for the extraction and can be empty. @/li\n"
"@/ul\n"
"\n"
"The terminals are output on these layers:\n"
"@ul\n"
"@li 'tA', 'tB' - the two terminals. Defaults to 'P1' and 'P2'. @/li\n"
"@li 'tW' - the bulk terminal (copy of the resistor area). @/li\n"
"@/ul\n"
"\n"
"The bulk terminal layer can be an empty layer representing the substrate. In this case, it needs to be connected globally.\n"
"\n"
"This class is a closed one and methods cannot be reimplemented. To reimplement "
"specific methods, see \\DeviceExtractor.\n"
@ -612,10 +700,28 @@ Class<db::NetlistDeviceExtractorBJT3Transistor> decl_dbNetlistDeviceExtractorBJT
"to form the net connection.\n"
"\n"
"The device class produced by this extractor is \\DeviceClassBJT3Transistor.\n"
"The extractor extracts the two parameters of this class: AE and PE.\n"
"The extractor delivers these parameters:\n"
"\n"
"The device recognition layer names are 'C' (collector), 'B' (base) and 'E' (emitter).\n"
"The terminal output layer names are 'tC' (collector), 'tB' (base) and 'tE' (emitter).\n"
"@ul\n"
"@li 'AE', 'AB' and 'AC' - the emitter, base and collector areas in square micrometer units @/li\n"
"@li 'PE', 'PB' and 'PC' - the emitter, base and collector perimeters in micrometer units @/li\n"
"@li 'NE' - emitter count (initially 1 but increases when devices are combined) @/li\n"
"@/ul\n"
"\n"
"The device layer names are:\n"
"\n"
"@ul\n"
"@li 'E' - emitter. @/li\n"
"@li 'B' - base. @/li\n"
"@li 'C' - collector. @/li\n"
"@/ul\n"
"\n"
"The terminals are output on these layers:\n"
"@ul\n"
"@li 'tE' - emitter. Default output is 'E'. @/li\n"
"@li 'tB' - base. Default output is 'B'. @/li\n"
"@li 'tC' - collector. Default output is 'C'. @/li\n"
"@/ul\n"
"\n"
"This class is a closed one and methods cannot be reimplemented. To reimplement "
"specific methods, see \\DeviceExtractor.\n"
@ -638,6 +744,13 @@ Class<db::NetlistDeviceExtractorBJT4Transistor> decl_NetlistDeviceExtractorBJT4T
"It is based on the \\DeviceExtractorBJT3Transistor class with the extension of a substrate terminal "
"and corresponding substrate terminal output (annotation) layer.\n"
"\n"
"Two new layers are introduced:\n"
"\n"
"@ul\n"
"@li 'S' - the bulk (substrate) layer. Currently this layer is ignored and can be empty. @/li"
"@li 'tS' - the bulk terminal output layer (defaults to 'S'). @/li"
"@/ul\n"
"\n"
"The bulk terminal layer ('tS') can be an empty layer representing the wafer substrate.\n"
"In this use mode the substrate terminal shapes will be produced on the 'tS' layer. This\n"
"layer then needs to be connected to a global net to establish the net connection.\n"
@ -666,13 +779,29 @@ Class<db::NetlistDeviceExtractorDiode> decl_NetlistDeviceExtractorDiode (decl_db
"the diode. The p-type layer forms the anode, the n-type layer\n"
"the cathode.\n"
"\n"
"The device class produced by this extractor is DeviceClassDiode.\n"
"The extractor extracts the two parameters of this class: A and P.\n"
"A is the area of the overlap area and P is the perimeter.\n"
"The device class produced by this extractor is \\DeviceClassDiode.\n"
"The extractor extracts the two parameters of this class:\n"
"\n"
"The layers are \"P\" and \"N\" for the p and n region respectively.\n"
"The terminal output layers are \"tA\" and \"tC\" for anode and \n"
"cathode respectively.\n"
"@ul\n"
"@li 'A' - the diode area in square micrometer units. @/li\n"
"@li 'P' - the diode perimeter in micrometer units. @/li\n"
"@/ul\n"
"\n"
"The device layers are:\n"
"\n"
"@ul\n"
"@li 'P' - the p doped area. @/li\n"
"@li 'N' - the n doped area. @/li\n"
"@/ul\n"
"\n"
"The diode region is defined by the overlap of p and n regions.\n"
"\n"
"The terminal output layers are:\n"
"\n"
"@ul\n"
"@li 'tA' - anode. Defaults to 'P'. @/li\n"
"@li 'tC' - cathode. Defaults to 'N'. @/li\n"
"@/ul\n"
"\n"
"This class is a closed one and methods cannot be reimplemented. To reimplement "
"specific methods, see \\DeviceExtractor.\n"

View File

@ -147,7 +147,10 @@ module DRC
# @name mos3
# @synopsis mos3(name)
# Use this class with \extract_devices to specify extraction of a
# three-terminal MOS transistor
# three-terminal MOS transistor.
#
# See RBA::DeviceExtractorMOS3Transistor for more details
# about this extractor (non-strict mode applies for 'mos3').
def mos3(name)
RBA::DeviceExtractorMOS3Transistor::new(name)
@ -158,7 +161,10 @@ module DRC
# @name mos4
# @synopsis mos4(name)
# Use this class with \extract_devices to specify extraction of a
# four-terminal MOS transistor
# four-terminal MOS transistor.
#
# See RBA::DeviceExtractorMOS4Transistor for more details
# about this extractor (non-strict mode applies for 'mos4').
def mos4(name)
RBA::DeviceExtractorMOS4Transistor::new(name)
@ -172,6 +178,9 @@ module DRC
# three-terminal DMOS transistor. A DMOS transistor is essentially
# the same than a MOS transistor, but source and drain are
# separated.
#
# See RBA::DeviceExtractorMOS3Transistor for more details
# about this extractor (strict mode applies for 'dmos3').
def dmos3(name)
RBA::DeviceExtractorMOS3Transistor::new(name, true)
@ -185,6 +194,9 @@ module DRC
# four-terminal DMOS transistor. A DMOS transistor is essentially
# the same than a MOS transistor, but source and drain are
# separated.
#
# See RBA::DeviceExtractorMOS4Transistor for more details
# about this extractor (strict mode applies for 'dmos4').
def dmos4(name)
RBA::DeviceExtractorMOS4Transistor::new(name, true)
@ -196,6 +208,9 @@ module DRC
# @synopsis bjt3(name)
# Use this class with \extract_devices to specify extraction of a
# bipolar junction transistor
#
# See RBA::DeviceExtractorBJT3Transistor for more details
# about this extractor.
def bjt3(name)
RBA::DeviceExtractorBJT3Transistor::new(name)
@ -207,6 +222,9 @@ module DRC
# @synopsis bjt4(name)
# Use this class with \extract_devices to specify extraction of a
# bipolar junction transistor with a substrate terminal
#
# See RBA::DeviceExtractorBJT4Transistor for more details
# about this extractor.
def bjt4(name)
RBA::DeviceExtractorBJT4Transistor::new(name)
@ -218,6 +236,9 @@ module DRC
# @synopsis diode(name)
# Use this class with \extract_devices to specify extraction of a
# planar diode
#
# See RBA::DeviceExtractorDiode for more details
# about this extractor.
def diode(name)
RBA::DeviceExtractorDiode::new(name)
@ -228,7 +249,12 @@ module DRC
# @name resistor
# @synopsis resistor(name, sheet_rho)
# Use this class with \extract_devices to specify extraction of a resistor.
# The sheet_rho value is the sheet resistance in ohms/square.
#
# The sheet_rho value is the sheet resistance in ohms/square. It is used
# to compute the resistance from the geometry.
#
# See RBA::DeviceExtractorResistor for more details
# about this extractor.
def resistor(name, sheet_rho)
RBA::DeviceExtractorResistor::new(name, sheet_rho)
@ -241,6 +267,9 @@ module DRC
# Use this class with \extract_devices to specify extraction of a resistor
# with a bulk terminal.
# The sheet_rho value is the sheet resistance in ohms/square.
#
# See RBA::DeviceExtractorResistorWithBulk for more details
# about this extractor.
def resistor_with_bulk(name, sheet_rho)
RBA::DeviceExtractorResistorWithBulk::new(name, sheet_rho)
@ -252,6 +281,9 @@ module DRC
# @synopsis capacitor(name, area_cap)
# Use this class with \extract_devices to specify extraction of a capacitor.
# The area_cap argument is the capacitance in Farad per square micrometer.
#
# See RBA::DeviceExtractorCapacitor for more details
# about this extractor.
def capacitor(name, area_cap)
RBA::DeviceExtractorCapacitor::new(name, area_cap)
@ -264,6 +296,9 @@ module DRC
# Use this class with \extract_devices to specify extraction of a capacitor
# with a bulk terminal.
# The area_cap argument is the capacitance in Farad per square micrometer.
#
# See RBA::DeviceExtractorCapacitorWithBulk for more details
# about this extractor.
def capacitor_with_bulk(name, area_cap)
RBA::DeviceExtractorCapacitorWithBulk::new(name, area_cap)

View File

@ -135,11 +135,27 @@ module DRC
# class object and the new extractor's name is given.
#
# The device extractor is either an instance of one of the predefined extractor
# classes (e.g. obtained from the utility methods such as \mos4) or a custom class.
# classes (e.g. obtained from the utility methods such as \global#mos4) or a custom class.
# It provides the
# algorithms for deriving the device parameters from the device geometry. It needs
# several device recognition layers which are passed in the layer hash.
#
# Predefined device extractors are:
#
# @ul
# @li \global#mos3 - A three-terminal MOS transistor @/li
# @li \global#mos4 - A four-terminal MOS transistor @/li
# @li \global#dmos3 - A three-terminal MOS asymmetric transistor @/li
# @li \global#dmos4 - A four-terminal MOS asymmetric transistor @/li
# @li \global#bjt3 - A three-terminal bipolar transistor @/li
# @li \global#bjt4 - A four-terminal bipolar transistor @/li
# @li \global#diode - A planar diode @/li
# @li \global#resistor - A resistor @/li
# @li \global#resistor_with_bulk - A resistor with a separate bulk terminal @/li
# @li \global#capacitor - A capacitor @/li
# @li \global#capacitor_with_bulk - A capacitor with a separate bulk terminal @/li
# @/ul
#
# Each device class (e.g. n-MOS/p-MOS or high Vt/low Vt) needs it's own instance
# of device extractor. The device extractor beside the algorithm and specific
# extraction settings defines the name of the device to be built.

View File

@ -13,38 +13,44 @@ Most of them are convenience functions that basically act on some default object
or provide function-like alternatives for the methods.
</p>
<h2-index/>
<h2>"antenna_check" - Performs an antenna check</h2>
<a name="antenna_check"/><h2>"antenna_check" - Performs an antenna check</h2>
<keyword name="antenna_check"/>
<a name="antenna_check"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>antenna_check(gate, metal, ratio, [ diode_specs ... ])</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_netter.xml#antenna_check">Netter#antenna_check</a> for a description of that function.
</p>
<h2>"bjt3" - Supplies the BJT3 transistor extractor class</h2>
<a name="bjt3"/><h2>"bjt3" - Supplies the BJT3 transistor extractor class</h2>
<keyword name="bjt3"/>
<a name="bjt3"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>bjt3(name)</tt></li>
</ul>
<p>
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a
bipolar junction transistor
</p><p>
See <class_doc href="DeviceExtractorBJT3Transistor">DeviceExtractorBJT3Transistor</class_doc> for more details
about this extractor.
</p>
<h2>"bjt4" - Supplies the BJT4 transistor extractor class</h2>
<a name="bjt4"/><h2>"bjt4" - Supplies the BJT4 transistor extractor class</h2>
<keyword name="bjt4"/>
<a name="bjt4"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>bjt4(name)</tt></li>
</ul>
<p>
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a
bipolar junction transistor with a substrate terminal
</p><p>
See <class_doc href="DeviceExtractorBJT4Transistor">DeviceExtractorBJT4Transistor</class_doc> for more details
about this extractor.
</p>
<h2>"box" - Creates a box object</h2>
<a name="box"/><h2>"box" - Creates a box object</h2>
<keyword name="box"/>
<a name="box"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>box(...)</tt></li>
</ul>
@ -52,19 +58,22 @@ bipolar junction transistor with a substrate terminal
This function creates a box object. The arguments are the same than for the
<class_doc href="DBox">DBox</class_doc> constructors.
</p>
<h2>"capacitor" - Supplies the capacitor extractor class</h2>
<a name="capacitor"/><h2>"capacitor" - Supplies the capacitor extractor class</h2>
<keyword name="capacitor"/>
<a name="capacitor"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>capacitor(name, area_cap)</tt></li>
</ul>
<p>
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a capacitor.
The area_cap argument is the capacitance in Farad per square micrometer.
</p><p>
See <class_doc href="DeviceExtractorCapacitor">DeviceExtractorCapacitor</class_doc> for more details
about this extractor.
</p>
<h2>"capacitor_with_bulk" - Supplies the capacitor extractor class that includes a bulk terminal</h2>
<a name="capacitor_with_bulk"/><h2>"capacitor_with_bulk" - Supplies the capacitor extractor class that includes a bulk terminal</h2>
<keyword name="capacitor_with_bulk"/>
<a name="capacitor_with_bulk"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>capacitor_with_bulk(name, area_cap)</tt></li>
</ul>
@ -72,10 +81,13 @@ The area_cap argument is the capacitance in Farad per square micrometer.
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a capacitor
with a bulk terminal.
The area_cap argument is the capacitance in Farad per square micrometer.
</p><p>
See <class_doc href="DeviceExtractorCapacitorWithBulk">DeviceExtractorCapacitorWithBulk</class_doc> for more details
about this extractor.
</p>
<h2>"cell" - Selects a cell for input on the default source</h2>
<a name="cell"/><h2>"cell" - Selects a cell for input on the default source</h2>
<keyword name="cell"/>
<a name="cell"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>cell(args)</tt></li>
</ul>
@ -92,9 +104,9 @@ cell("MACRO")
l1 = input(1, 0)
</pre>
</p>
<h2>"cheat" - Hierarchy cheats</h2>
<a name="cheat"/><h2>"cheat" - Hierarchy cheats</h2>
<keyword name="cheat"/>
<a name="cheat"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>cheat(args) { block }</tt></li>
</ul>
@ -184,18 +196,18 @@ cheat("UNIT_CELL{1,2}") { ... }
For LVS applications, it's usually sufficient to cheat in the device extraction step.
Cheats have been introduced in version 0.26.1.
</p>
<h2>"clear_connections" - Clears all connections stored so far</h2>
<a name="clear_connections"/><h2>"clear_connections" - Clears all connections stored so far</h2>
<keyword name="clear_connections"/>
<a name="clear_connections"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>clear_connections</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_netter.xml#clear_connections">Netter#clear_connections</a> for a description of that function.
</p>
<h2>"clip" - Specifies clipped input on the default source</h2>
<a name="clip"/><h2>"clip" - Specifies clipped input on the default source</h2>
<keyword name="clip"/>
<a name="clip"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>clip(args)</tt></li>
</ul>
@ -211,36 +223,36 @@ clip(0.mm, 0.mm, 0.5.mm, 0.6.mm)
l1 = input(1, 0)
</pre>
</p>
<h2>"connect" - Specifies a connection between two layers</h2>
<a name="connect"/><h2>"connect" - Specifies a connection between two layers</h2>
<keyword name="connect"/>
<a name="connect"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>connect(a, b)</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_netter.xml#connect">Netter#connect</a> for a description of that function.
</p>
<h2>"connect_global" - Specifies a connection to a global net</h2>
<a name="connect_global"/><h2>"connect_global" - Specifies a connection to a global net</h2>
<keyword name="connect_global"/>
<a name="connect_global"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>connect_global(l, name)</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_netter.xml#connect_global">Netter#connect_global</a> for a description of that function.
</p>
<h2>"connect_implicit" - Specifies a label pattern for implicit net connections</h2>
<a name="connect_implicit"/><h2>"connect_implicit" - Specifies a label pattern for implicit net connections</h2>
<keyword name="connect_implicit"/>
<a name="connect_implicit"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>connect_implicit(label_pattern)</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_netter.xml#connect_implicit">Netter#connect_implicit</a> for a description of that function.
</p>
<h2>"dbu" - Gets or sets the database unit to use</h2>
<a name="dbu"/><h2>"dbu" - Gets or sets the database unit to use</h2>
<keyword name="dbu"/>
<a name="dbu"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>dbu(dbu)</tt></li>
<li><tt>dbu</tt></li>
@ -257,9 +269,9 @@ for two layouts (i.e. take the largest common denominator).
When the database unit is set, it must be set at the beginning
of the script and before any operation that uses it.
</p>
<h2>"deep" - Enters deep (hierarchical) mode</h2>
<a name="deep"/><h2>"deep" - Enters deep (hierarchical) mode</h2>
<keyword name="deep"/>
<a name="deep"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>deep</tt></li>
</ul>
@ -277,28 +289,31 @@ implied always. Sometimes cell variants will be created.
</p><p>
Deep mode can be cancelled with <a href="#tiles">tiles</a> or <a href="#flat">flat</a>.
</p>
<h2>"device_scaling" - Specifies a dimension scale factor for the geometrical device properties</h2>
<a name="device_scaling"/><h2>"device_scaling" - Specifies a dimension scale factor for the geometrical device properties</h2>
<keyword name="device_scaling"/>
<a name="device_scaling"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>device_scaling(factor)</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_netter.xml#device_scaling">Netter#device_scaling</a> for a description of that function.
</p>
<h2>"diode" - Supplies the diode extractor class</h2>
<a name="diode"/><h2>"diode" - Supplies the diode extractor class</h2>
<keyword name="diode"/>
<a name="diode"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>diode(name)</tt></li>
</ul>
<p>
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a
planar diode
</p><p>
See <class_doc href="DeviceExtractorDiode">DeviceExtractorDiode</class_doc> for more details
about this extractor.
</p>
<h2>"dmos3" - Supplies the DMOS3 transistor extractor class</h2>
<a name="dmos3"/><h2>"dmos3" - Supplies the DMOS3 transistor extractor class</h2>
<keyword name="dmos3"/>
<a name="dmos3"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>dmos3(name)</tt></li>
</ul>
@ -307,10 +322,13 @@ Use this class with <a href="#extract_devices">extract_devices</a> to specify ex
three-terminal DMOS transistor. A DMOS transistor is essentially
the same than a MOS transistor, but source and drain are
separated.
</p><p>
See <class_doc href="DeviceExtractorMOS3Transistor">DeviceExtractorMOS3Transistor</class_doc> for more details
about this extractor (strict mode applies for 'dmos3').
</p>
<h2>"dmos4" - Supplies the MOS4 transistor extractor class</h2>
<a name="dmos4"/><h2>"dmos4" - Supplies the MOS4 transistor extractor class</h2>
<keyword name="dmos4"/>
<a name="dmos4"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>dmos4(name)</tt></li>
</ul>
@ -319,10 +337,13 @@ Use this class with <a href="#extract_devices">extract_devices</a> to specify ex
four-terminal DMOS transistor. A DMOS transistor is essentially
the same than a MOS transistor, but source and drain are
separated.
</p><p>
See <class_doc href="DeviceExtractorMOS4Transistor">DeviceExtractorMOS4Transistor</class_doc> for more details
about this extractor (strict mode applies for 'dmos4').
</p>
<h2>"edge" - Creates an edge object</h2>
<a name="edge"/><h2>"edge" - Creates an edge object</h2>
<keyword name="edge"/>
<a name="edge"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>edge(...)</tt></li>
</ul>
@ -330,9 +351,9 @@ separated.
This function creates an edge object. The arguments are the same than for the
<class_doc href="DEdge">DEdge</class_doc> constructors.
</p>
<h2>"edge_layer" - Creates an empty edge layer</h2>
<a name="edge_layer"/><h2>"edge_layer" - Creates an empty edge layer</h2>
<keyword name="edge_layer"/>
<a name="edge_layer"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>edge_layer</tt></li>
</ul>
@ -340,27 +361,27 @@ This function creates an edge object. The arguments are the same than for the
The intention of that method is to create an empty layer which can be
filled with edge objects using <a href="/about/drc_ref_layer.xml#insert">Layer#insert</a>.
</p>
<h2>"error" - Prints an error</h2>
<a name="error"/><h2>"error" - Prints an error</h2>
<keyword name="error"/>
<a name="error"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>error(message)</tt></li>
</ul>
<p>
Similar to <a href="#log">log</a>, but the message is printed formatted as an error
</p>
<h2>"extent" - Creates a new layer with the bounding box of the default source</h2>
<a name="extent"/><h2>"extent" - Creates a new layer with the bounding box of the default source</h2>
<keyword name="extent"/>
<a name="extent"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>extent</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_source.xml#extent">Source#extent</a> for a description of that function.
</p>
<h2>"extract_devices" - Extracts devices for a given device extractor and device layer selection</h2>
<a name="extract_devices"/><h2>"extract_devices" - Extracts devices for a given device extractor and device layer selection</h2>
<keyword name="extract_devices"/>
<a name="extract_devices"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>extract_devices(extractor, layer_hash)</tt></li>
<li><tt>extract_devices(extractor_class, name, layer_hash)</tt></li>
@ -368,18 +389,18 @@ See <a href="/about/drc_ref_source.xml#extent">Source#extent</a> for a descripti
<p>
See <a href="/about/drc_ref_netter.xml#extract_devices">Netter#extract_devices</a> for a description of that function.
</p>
<h2>"flat" - Disables tiling mode</h2>
<a name="flat"/><h2>"flat" - Disables tiling mode</h2>
<keyword name="flat"/>
<a name="flat"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>flat</tt></li>
</ul>
<p>
Disables tiling mode. Tiling mode can be enabled again with <a href="#tiles">tiles</a> later.
</p>
<h2>"info" - Outputs as message to the logger window</h2>
<a name="info"/><h2>"info" - Outputs as message to the logger window</h2>
<keyword name="info"/>
<a name="info"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>info(message)</tt></li>
</ul>
@ -388,9 +409,9 @@ Prints the message to the log window in verbose mode.
In non-verbose more, nothing is printed.
<a href="#log">log</a> is a function that always prints a message.
</p>
<h2>"input" - Fetches the shapes from the specified input from the default source</h2>
<a name="input"/><h2>"input" - Fetches the shapes from the specified input from the default source</h2>
<keyword name="input"/>
<a name="input"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>input(args)</tt></li>
</ul>
@ -399,48 +420,48 @@ See <a href="/about/drc_ref_source.xml#input">Source#input</a> for a description
polygons and labels. See <a href="#polygons">polygons</a> and <a href="#labels">labels</a> for more specific versions of
this method.
</p>
<h2>"is_deep?" - Returns true, if in deep mode</h2>
<a name="is_deep?"/><h2>"is_deep?" - Returns true, if in deep mode</h2>
<keyword name="is_deep?"/>
<a name="is_deep?"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>is_deep?</tt></li>
</ul>
<h2>"is_tiled?" - Returns true, if in tiled mode</h2>
<a name="is_tiled?"/><h2>"is_tiled?" - Returns true, if in tiled mode</h2>
<keyword name="is_tiled?"/>
<a name="is_tiled?"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>is_tiled?</tt></li>
</ul>
<h2>"l2n_data" - Gets the internal <class_doc href="LayoutToNetlist">LayoutToNetlist</class_doc> object for the default <a href="#Netter">Netter</a></h2>
<a name="l2n_data"/><h2>"l2n_data" - Gets the internal <class_doc href="LayoutToNetlist">LayoutToNetlist</class_doc> object for the default <a href="#Netter">Netter</a></h2>
<keyword name="l2n_data"/>
<a name="l2n_data"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>l2n_data</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_netter.xml#l2n_data">Netter#l2n_data</a> for a description of that function.
</p>
<h2>"labels" - Gets the labels (text) from an original layer</h2>
<a name="labels"/><h2>"labels" - Gets the labels (text) from an original layer</h2>
<keyword name="labels"/>
<a name="labels"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>labels</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_source.xml#labels">Source#labels</a> for a description of that function.
</p>
<h2>"layers" - Gets the layers contained in the default source</h2>
<a name="layers"/><h2>"layers" - Gets the layers contained in the default source</h2>
<keyword name="layers"/>
<a name="layers"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>layers</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_source.xml#layers">Source#layers</a> for a description of that function.
</p>
<h2>"layout" - Specifies an additional layout for the input source.</h2>
<a name="layout"/><h2>"layout" - Specifies an additional layout for the input source.</h2>
<keyword name="layout"/>
<a name="layout"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>layout</tt></li>
<li><tt>layout(what)</tt></li>
@ -475,9 +496,9 @@ l2 = layout("second_layout.gds")
</p><p>
For further methods on the source object see <a href="#Source">Source</a>.
</p>
<h2>"log" - Outputs as message to the logger window</h2>
<a name="log"/><h2>"log" - Outputs as message to the logger window</h2>
<keyword name="log"/>
<a name="log"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>log(message)</tt></li>
</ul>
@ -486,9 +507,9 @@ Prints the message to the log window.
<a href="#info">info</a> is a function that prints a message only if
verbose mode is enabled.
</p>
<h2>"log_file" - Specify the log file where to send to log to</h2>
<a name="log_file"/><h2>"log_file" - Specify the log file where to send to log to</h2>
<keyword name="log_file"/>
<a name="log_file"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>log_file(filename)</tt></li>
</ul>
@ -496,9 +517,9 @@ verbose mode is enabled.
After using that method, the log output is sent to the
given file instead of the logger window or the terminal.
</p>
<h2>"make_layer" - Creates an empty polygon layer based on the hierarchical scheme selected</h2>
<a name="make_layer"/><h2>"make_layer" - Creates an empty polygon layer based on the hierarchical scheme selected</h2>
<keyword name="make_layer"/>
<a name="make_layer"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>make_layer</tt></li>
</ul>
@ -514,63 +535,69 @@ delivered by <a href="#polygon_layer">polygon_layer</a> is not.
On the other hand, a layer created by the <a href="#make_layer">make_layer</a> method is not intended to be
filled with <a href="/about/drc_ref_layer.xml#insert">Layer#insert</a>.
</p>
<h2>"mos3" - Supplies the MOS3 transistor extractor class</h2>
<a name="mos3"/><h2>"mos3" - Supplies the MOS3 transistor extractor class</h2>
<keyword name="mos3"/>
<a name="mos3"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>mos3(name)</tt></li>
</ul>
<p>
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a
three-terminal MOS transistor
three-terminal MOS transistor.
</p><p>
See <class_doc href="DeviceExtractorMOS3Transistor">DeviceExtractorMOS3Transistor</class_doc> for more details
about this extractor (non-strict mode applies for 'mos3').
</p>
<h2>"mos4" - Supplies the MOS4 transistor extractor class</h2>
<a name="mos4"/><h2>"mos4" - Supplies the MOS4 transistor extractor class</h2>
<keyword name="mos4"/>
<a name="mos4"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>mos4(name)</tt></li>
</ul>
<p>
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a
four-terminal MOS transistor
four-terminal MOS transistor.
</p><p>
See <class_doc href="DeviceExtractorMOS4Transistor">DeviceExtractorMOS4Transistor</class_doc> for more details
about this extractor (non-strict mode applies for 'mos4').
</p>
<h2>"netlist" - Obtains the extracted netlist from the default <a href="#Netter">Netter</a></h2>
<a name="netlist"/><h2>"netlist" - Obtains the extracted netlist from the default <a href="#Netter">Netter</a></h2>
<keyword name="netlist"/>
<a name="netlist"/><p>
<p>
The netlist is a <class_doc href="Netlist">Netlist</class_doc> object. If no netlist is extracted
yet, this method will trigger the extraction process.
See <a href="/about/drc_ref_netter.xml#netlist">Netter#netlist</a> for a description of this function.
</p>
<h2>"netter" - Creates a new netter object</h2>
<a name="netter"/><h2>"netter" - Creates a new netter object</h2>
<keyword name="netter"/>
<a name="netter"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>netter</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_netter.xml">Netter</a> for more details
</p>
<h2>"no_borders" - Reset the tile borders</h2>
<a name="no_borders"/><h2>"no_borders" - Reset the tile borders</h2>
<keyword name="no_borders"/>
<a name="no_borders"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>no_borders</tt></li>
</ul>
<p>
Resets the tile borders - see <a href="#tile_borders">tile_borders</a> for a description of tile borders.
</p>
<h2>"output" - Outputs a layer to the report database or output layout</h2>
<a name="output"/><h2>"output" - Outputs a layer to the report database or output layout</h2>
<keyword name="output"/>
<a name="output"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>output(layer, args)</tt></li>
</ul>
<p>
This function is equivalent to "layer.output(args)". See <a href="/about/drc_ref_layer.xml#output">Layer#output</a> for details about this function.
</p>
<h2>"output_cell" - Specifies a target cell, but does not change the target layout</h2>
<a name="output_cell"/><h2>"output_cell" - Specifies a target cell, but does not change the target layout</h2>
<keyword name="output_cell"/>
<a name="output_cell"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>output_cell(cellname)</tt></li>
</ul>
@ -579,9 +606,9 @@ This method switches output to the specified cell, but does not
change the target layout nor does it switch the output channel to
layout if is report database.
</p>
<h2>"p" - Creates a point object</h2>
<a name="p"/><h2>"p" - Creates a point object</h2>
<keyword name="p"/>
<a name="p"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>p(x, y)</tt></li>
</ul>
@ -594,9 +621,9 @@ x = polygon_layer
x.insert(polygon([ p(0, 0), p(16.0, 0), p(8.0, 8.0) ]))
</pre>
</p>
<h2>"path" - Creates a path object</h2>
<a name="path"/><h2>"path" - Creates a path object</h2>
<keyword name="path"/>
<a name="path"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>path(...)</tt></li>
</ul>
@ -604,9 +631,9 @@ x.insert(polygon([ p(0, 0), p(16.0, 0), p(8.0, 8.0) ]))
This function creates a path object. The arguments are the same than for the
<class_doc href="DPath">DPath</class_doc> constructors.
</p>
<h2>"polygon" - Creates a polygon object</h2>
<a name="polygon"/><h2>"polygon" - Creates a polygon object</h2>
<keyword name="polygon"/>
<a name="polygon"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>polygon(...)</tt></li>
</ul>
@ -614,9 +641,9 @@ This function creates a path object. The arguments are the same than for the
This function creates a polygon object. The arguments are the same than for the
<class_doc href="DPolygon">DPolygon</class_doc> constructors.
</p>
<h2>"polygon_layer" - Creates an empty polygon layer</h2>
<a name="polygon_layer"/><h2>"polygon_layer" - Creates an empty polygon layer</h2>
<keyword name="polygon_layer"/>
<a name="polygon_layer"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>polygon_layer</tt></li>
</ul>
@ -626,18 +653,18 @@ filled with polygon-like objects using <a href="/about/drc_ref_layer.xml#insert"
A similar method which creates a hierarchical layer in deep mode is
<a href="#make_layer">make_layer</a>. This other layer is better suited for use with device extraction.
</p>
<h2>"polygons" - Fetches the polygons (or shapes that can be converted to polygons) from the specified input from the default source</h2>
<a name="polygons"/><h2>"polygons" - Fetches the polygons (or shapes that can be converted to polygons) from the specified input from the default source</h2>
<keyword name="polygons"/>
<a name="polygons"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>polygons(args)</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_source.xml#polygons">Source#polygons</a> for a description of that function.
</p>
<h2>"report" - Specifies a report database for output</h2>
<a name="report"/><h2>"report" - Specifies a report database for output</h2>
<keyword name="report"/>
<a name="report"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>report(description [, filename [, cellname ] ])</tt></li>
</ul>
@ -658,9 +685,9 @@ By default this is the cell name of the default source. If there
is no source layout you'll need to give the cell name in the
third parameter.
</p>
<h2>"report_netlist" - Specifies an extracted netlist report for output</h2>
<a name="report_netlist"/><h2>"report_netlist" - Specifies an extracted netlist report for output</h2>
<keyword name="report_netlist"/>
<a name="report_netlist"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>report_netlist([ filename [, long ] ])</tt></li>
</ul>
@ -675,19 +702,24 @@ will also be written to the given file.
If a file name is given and "long" is true, a verbose
version of the L2N DB format will be used.
</p>
<h2>"resistor" - Supplies the resistor extractor class</h2>
<a name="resistor"/><h2>"resistor" - Supplies the resistor extractor class</h2>
<keyword name="resistor"/>
<a name="resistor"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>resistor(name, sheet_rho)</tt></li>
</ul>
<p>
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a resistor.
The sheet_rho value is the sheet resistance in ohms/square.
</p><p>
The sheet_rho value is the sheet resistance in ohms/square. It is used
to compute the resistance from the geometry.
</p><p>
See <class_doc href="DeviceExtractorResistor">DeviceExtractorResistor</class_doc> for more details
about this extractor.
</p>
<h2>"resistor_with_bulk" - Supplies the resistor extractor class that includes a bulk terminal</h2>
<a name="resistor_with_bulk"/><h2>"resistor_with_bulk" - Supplies the resistor extractor class that includes a bulk terminal</h2>
<keyword name="resistor_with_bulk"/>
<a name="resistor_with_bulk"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>resistor_with_bulk(name, sheet_rho)</tt></li>
</ul>
@ -695,28 +727,31 @@ The sheet_rho value is the sheet resistance in ohms/square.
Use this class with <a href="#extract_devices">extract_devices</a> to specify extraction of a resistor
with a bulk terminal.
The sheet_rho value is the sheet resistance in ohms/square.
</p><p>
See <class_doc href="DeviceExtractorResistorWithBulk">DeviceExtractorResistorWithBulk</class_doc> for more details
about this extractor.
</p>
<h2>"select" - Specifies cell filters on the default source</h2>
<a name="select"/><h2>"select" - Specifies cell filters on the default source</h2>
<keyword name="select"/>
<a name="select"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>select(args)</tt></li>
</ul>
<p>
See <a href="/about/drc_ref_source.xml#select">Source#select</a> for a description of that function.
</p>
<h2>"silent" - Resets verbose mode</h2>
<a name="silent"/><h2>"silent" - Resets verbose mode</h2>
<keyword name="silent"/>
<a name="silent"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>silent</tt></li>
</ul>
<p>
This function is equivalent to "verbose(false)" (see <a href="#verbose">verbose</a>)
</p>
<h2>"source" - Specifies a source layout</h2>
<a name="source"/><h2>"source" - Specifies a source layout</h2>
<keyword name="source"/>
<a name="source"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source</tt></li>
<li><tt>source(what)</tt></li>
@ -751,9 +786,9 @@ l2 = layout("second_layout.gds")
</p><p>
For further methods on the source object see <a href="#Source">Source</a>.
</p>
<h2>"target" - Specify the target layout</h2>
<a name="target"/><h2>"target" - Specify the target layout</h2>
<keyword name="target"/>
<a name="target"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>target(what [, cellname])</tt></li>
</ul>
@ -778,9 +813,9 @@ Except if the argument is a <class_doc href="Cell">Cell</class_doc> object, a ce
stating the cell name under which the results are saved. If no cellname is
specified, either the current cell or "TOP" is used.
</p>
<h2>"target_netlist" - With this statement, an extracted netlist is finally written to a file</h2>
<a name="target_netlist"/><h2>"target_netlist" - With this statement, an extracted netlist is finally written to a file</h2>
<keyword name="target_netlist"/>
<a name="target_netlist"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>target_netlist(filename [, format [, comment ] ])</tt></li>
</ul>
@ -794,9 +829,9 @@ The format parameter specifies the writer to use. You can use nil
to use the standard format or produce a SPICE writer with <a href="#write_spice">write_spice</a>.
See <a href="#write_spice">write_spice</a> for more details.
</p>
<h2>"threads" - Specifies the number of CPU cores to use in tiling mode</h2>
<a name="threads"/><h2>"threads" - Specifies the number of CPU cores to use in tiling mode</h2>
<keyword name="threads"/>
<a name="threads"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>threads(n)</tt></li>
</ul>
@ -805,9 +840,9 @@ If using threads, tiles are distributed on multiple CPU cores for
parallelization. Still, all tiles must be processed before the
operation proceeds with the next statement.
</p>
<h2>"tile_borders" - Specifies a minimum tile border</h2>
<a name="tile_borders"/><h2>"tile_borders" - Specifies a minimum tile border</h2>
<keyword name="tile_borders"/>
<a name="tile_borders"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>tile_border(b)</tt></li>
<li><tt>tile_border(bx, by)</tt></li>
@ -826,9 +861,9 @@ given range, although not necessarily all.
</p><p>
To reset the tile borders, use <a href="#no_borders">no_borders</a> or "tile_borders(nil)".
</p>
<h2>"tiles" - Specifies tiling</h2>
<a name="tiles"/><h2>"tiles" - Specifies tiling</h2>
<keyword name="tiles"/>
<a name="tiles"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>tiles(t)</tt></li>
<li><tt>tiles(w, h)</tt></li>
@ -851,9 +886,9 @@ To disable tiling mode use <a href="#flat">flat</a> or <a href="#deep">deep</a>.
</p><p>
Tiling mode will disable deep mode (see <a href="#deep">deep</a>).
</p>
<h2>"verbose" - Sets or resets verbose mode</h2>
<a name="verbose"/><h2>"verbose" - Sets or resets verbose mode</h2>
<keyword name="verbose"/>
<a name="verbose"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>verbose</tt></li>
<li><tt>verbose(m)</tt></li>
@ -861,18 +896,18 @@ Tiling mode will disable deep mode (see <a href="#deep">deep</a>).
<p>
In verbose mode, more output is generated in the log file
</p>
<h2>"verbose?" - Returns true, if verbose mode is enabled</h2>
<a name="verbose?"/><h2>"verbose?" - Returns true, if verbose mode is enabled</h2>
<keyword name="verbose?"/>
<a name="verbose?"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>verbose?</tt></li>
</ul>
<p>
In verbose mode, more output is generated in the log file
</p>
<h2>"write_spice" - Defines SPICE output format (with options)</h2>
<a name="write_spice"/><h2>"write_spice" - Defines SPICE output format (with options)</h2>
<keyword name="write_spice"/>
<a name="write_spice"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>write_spice([ use_net_names [, with_comments ] ])</tt></li>
</ul>

File diff suppressed because it is too large Load Diff

View File

@ -61,9 +61,9 @@ Further functionality of the Netter object:
More methods will be added in the future to support network-related features.
</p>
<h2-index/>
<h2>"antenna_check" - Performs an antenna check</h2>
<a name="antenna_check"/><h2>"antenna_check" - Performs an antenna check</h2>
<keyword name="antenna_check"/>
<a name="antenna_check"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>antenna_check(gate, metal, ratio, [ diode_specs ... ])</tt></li>
</ul>
@ -137,18 +137,18 @@ The error shapes produced by the antenna check are copies
of the metal shapes on the metal layers of each network
violating the antenna rule.
</p>
<h2>"clear_connections" - Clears all connections stored so far</h2>
<a name="clear_connections"/><h2>"clear_connections" - Clears all connections stored so far</h2>
<keyword name="clear_connections"/>
<a name="clear_connections"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>clear_connections</tt></li>
</ul>
<p>
See <a href="#connect">connect</a> for more details.
</p>
<h2>"connect" - Specifies a connection between two layers</h2>
<a name="connect"/><h2>"connect" - Specifies a connection between two layers</h2>
<keyword name="connect"/>
<a name="connect"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>connect(a, b)</tt></li>
</ul>
@ -167,9 +167,9 @@ joins.
Connections are accumulated. The connections defined so far
can be cleared with <a href="#clear_connections">clear_connections</a>.
</p>
<h2>"connect_global" - Connects a layer with a global net</h2>
<a name="connect_global"/><h2>"connect_global" - Connects a layer with a global net</h2>
<keyword name="connect_global"/>
<a name="connect_global"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>connect_global(l, name)</tt></li>
</ul>
@ -179,9 +179,9 @@ Global nets are common to all cells. Global nets automatically connect to parent
cells throughs implied pins. An example is the substrate (bulk) net which connects
to shapes belonging to tie-down diodes.
</p>
<h2>"connect_implicit" - Specifies a search pattern for labels which create implicit net connections</h2>
<a name="connect_implicit"/><h2>"connect_implicit" - Specifies a search pattern for labels which create implicit net connections</h2>
<keyword name="connect_implicit"/>
<a name="connect_implicit"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>connect_implicit(label_pattern)</tt></li>
<li><tt>connect_implicit(cell_pattern, label_pattern)</tt></li>
@ -205,9 +205,9 @@ combined.
The implicit connections are applied on the next net extraction and cleared
on "clear_connections".
</p>
<h2>"device_scaling" - Specifies a dimension scale factor for the geometrical device properties</h2>
<a name="device_scaling"/><h2>"device_scaling" - Specifies a dimension scale factor for the geometrical device properties</h2>
<keyword name="device_scaling"/>
<a name="device_scaling"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>device_scaling(factor)</tt></li>
</ul>
@ -216,9 +216,9 @@ Specifying a factor of 2 will make all devices being extracted as if the
geometries were two times larger. This feature is useful when the drawn layout
does not correspond to the physical dimensions.
</p>
<h2>"extract_devices" - Extracts devices based on the given extractor class, name and device layer selection</h2>
<a name="extract_devices"/><h2>"extract_devices" - Extracts devices based on the given extractor class, name and device layer selection</h2>
<keyword name="extract_devices"/>
<a name="extract_devices"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>extract_devices(extractor, layer_hash)</tt></li>
<li><tt>extract_devices(extractor_class, name, layer_hash)</tt></li>
@ -229,11 +229,27 @@ form, the extractor object is given. In the second form, the extractor's
class object and the new extractor's name is given.
</p><p>
The device extractor is either an instance of one of the predefined extractor
classes (e.g. obtained from the utility methods such as <a href="#mos4">mos4</a>) or a custom class.
classes (e.g. obtained from the utility methods such as <a href="/about/drc_ref_global.xml#mos4">global#mos4</a>) or a custom class.
It provides the
algorithms for deriving the device parameters from the device geometry. It needs
several device recognition layers which are passed in the layer hash.
</p><p>
Predefined device extractors are:
</p><p>
<ul>
<li><a href="/about/drc_ref_global.xml#mos3">global#mos3</a> - A three-terminal MOS transistor </li>
<li><a href="/about/drc_ref_global.xml#mos4">global#mos4</a> - A four-terminal MOS transistor </li>
<li><a href="/about/drc_ref_global.xml#dmos3">global#dmos3</a> - A three-terminal MOS asymmetric transistor </li>
<li><a href="/about/drc_ref_global.xml#dmos4">global#dmos4</a> - A four-terminal MOS asymmetric transistor </li>
<li><a href="/about/drc_ref_global.xml#bjt3">global#bjt3</a> - A three-terminal bipolar transistor </li>
<li><a href="/about/drc_ref_global.xml#bjt4">global#bjt4</a> - A four-terminal bipolar transistor </li>
<li><a href="/about/drc_ref_global.xml#diode">global#diode</a> - A planar diode </li>
<li><a href="/about/drc_ref_global.xml#resistor">global#resistor</a> - A resistor </li>
<li><a href="/about/drc_ref_global.xml#resistor_with_bulk">global#resistor_with_bulk</a> - A resistor with a separate bulk terminal </li>
<li><a href="/about/drc_ref_global.xml#capacitor">global#capacitor</a> - A capacitor </li>
<li><a href="/about/drc_ref_global.xml#capacitor_with_bulk">global#capacitor_with_bulk</a> - A capacitor with a separate bulk terminal </li>
</ul>
</p><p>
Each device class (e.g. n-MOS/p-MOS or high Vt/low Vt) needs it's own instance
of device extractor. The device extractor beside the algorithm and specific
extraction settings defines the name of the device to be built.
@ -256,9 +272,9 @@ gate = nactive &amp; poly # gate area
extract_devices(mos4("NMOS4"), { :SD =&gt; nsd, :G =&gt; gate, :P =&gt; poly, :W =&gt; bulk })
</pre>
</p>
<h2>"l2n_data" - Gets the internal <class_doc href="LayoutToNetlist">LayoutToNetlist</class_doc> object</h2>
<a name="l2n_data"/><h2>"l2n_data" - Gets the internal <class_doc href="LayoutToNetlist">LayoutToNetlist</class_doc> object</h2>
<keyword name="l2n_data"/>
<a name="l2n_data"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>l2n_data</tt></li>
</ul>
@ -266,9 +282,9 @@ extract_devices(mos4("NMOS4"), { :SD =&gt; nsd, :G =&gt; gate, :P =&gt; poly, :W
The <class_doc href="LayoutToNetlist">LayoutToNetlist</class_doc> object provides access to the internal details of
the netter object.
</p>
<h2>"netlist" - Gets the extracted netlist or triggers extraction if not done yet</h2>
<a name="netlist"/><h2>"netlist" - Gets the extracted netlist or triggers extraction if not done yet</h2>
<keyword name="netlist"/>
<a name="netlist"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>netlist</tt></li>
</ul>

View File

@ -13,9 +13,9 @@ A source specifies where to take layout from. That includes the actual layout,
the top cell and options such as clip/query boxes, cell filters etc.
</p>
<h2-index/>
<h2>"cell" - Specifies input from a specific cell</h2>
<a name="cell"/><h2>"cell" - Specifies input from a specific cell</h2>
<keyword name="cell"/>
<a name="cell"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.cell(name)</tt></li>
</ul>
@ -23,21 +23,21 @@ the top cell and options such as clip/query boxes, cell filters etc.
This method will create a new source that delivers shapes from the
specified cell.
</p>
<h2>"cell_name" - Returns the name of the currently selected cell</h2>
<a name="cell_name"/><h2>"cell_name" - Returns the name of the currently selected cell</h2>
<keyword name="cell_name"/>
<a name="cell_name"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>cell_name</tt></li>
</ul>
<h2>"cell_obj" - Returns the <class_doc href="Cell">Cell</class_doc> object of the currently selected cell</h2>
<a name="cell_obj"/><h2>"cell_obj" - Returns the <class_doc href="Cell">Cell</class_doc> object of the currently selected cell</h2>
<keyword name="cell_obj"/>
<a name="cell_obj"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>cell_obj</tt></li>
</ul>
<h2>"clip" - Specifies clipped input</h2>
<a name="clip"/><h2>"clip" - Specifies clipped input</h2>
<keyword name="clip"/>
<a name="clip"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.clip(box)</tt></li>
<li><tt>source.clip(p1, p2)</tt></li>
@ -54,9 +54,9 @@ This method will create a new source which delivers the shapes
from that region clipped to the rectangle. A method doing the
same but without clipping is <a href="#touching">touching</a> or <a href="#overlapping">overlapping</a>.
</p>
<h2>"extent" - Returns a layer with the bounding box of the selected layout</h2>
<a name="extent"/><h2>"extent" - Returns a layer with the bounding box of the selected layout</h2>
<keyword name="extent"/>
<a name="extent"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.extent</tt></li>
</ul>
@ -67,9 +67,9 @@ The extent function is useful to invert a layer:
inverse_1 = extent.sized(100.0) - input(1, 0)
</pre>
</p>
<h2>"input" - Specifies input from a source</h2>
<a name="input"/><h2>"input" - Specifies input from a source</h2>
<keyword name="input"/>
<a name="input"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.input(layer)</tt></li>
<li><tt>source.input(layer, datatype)</tt></li>
@ -108,9 +108,9 @@ only. If you only want to see texts, use <a href="#labels">labels</a> to create
</p><p>
Use the global version of "input" without a source object to address the default source.
</p>
<h2>"labels" - Gets the labels (texts) from an input layer</h2>
<a name="labels"/><h2>"labels" - Gets the labels (texts) from an input layer</h2>
<keyword name="labels"/>
<a name="labels"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.labels(layer)</tt></li>
<li><tt>source.labels(layer, datatype)</tt></li>
@ -125,9 +125,9 @@ layer.
</p><p>
Use the global version of "labels" without a source object to address the default source.
</p>
<h2>"layers" - Gets the layers the source contains</h2>
<a name="layers"/><h2>"layers" - Gets the layers the source contains</h2>
<keyword name="layers"/>
<a name="layers"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.layers</tt></li>
</ul>
@ -149,24 +149,24 @@ clip_box.insert(box(0.um, -4.um, 4.um, 0.um))
layers.each { |l| (input(l) &amp; clip_box).output(l) }
</pre>
</p>
<h2>"layout" - Returns the <class_doc href="Layout">Layout</class_doc> object associated with this source</h2>
<a name="layout"/><h2>"layout" - Returns the <class_doc href="Layout">Layout</class_doc> object associated with this source</h2>
<keyword name="layout"/>
<a name="layout"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>layout</tt></li>
</ul>
<h2>"make_layer" - Creates an empty polygon layer based on the hierarchy of the layout</h2>
<a name="make_layer"/><h2>"make_layer" - Creates an empty polygon layer based on the hierarchy of the layout</h2>
<keyword name="make_layer"/>
<a name="make_layer"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>make_layer</tt></li>
</ul>
<p>
This method delivers a new empty original layer.
</p>
<h2>"overlapping" - Specifies input selected from a region in overlapping mode</h2>
<a name="overlapping"/><h2>"overlapping" - Specifies input selected from a region in overlapping mode</h2>
<keyword name="overlapping"/>
<a name="overlapping"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.overlapping(...)</tt></li>
</ul>
@ -180,15 +180,15 @@ the specified rectangle.
<a href="#touching">touching</a> is a similar method which delivers shapes touching
the search region with their bounding box (without the requirement to overlap)
</p>
<h2>"path" - Gets the path of the corresponding layout file or nil if there is no path</h2>
<a name="path"/><h2>"path" - Gets the path of the corresponding layout file or nil if there is no path</h2>
<keyword name="path"/>
<a name="path"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>path</tt></li>
</ul>
<h2>"polygons" - Gets the polygon shapes (or shapes that can be converted polygons) from an input layer</h2>
<a name="polygons"/><h2>"polygons" - Gets the polygon shapes (or shapes that can be converted polygons) from an input layer</h2>
<keyword name="polygons"/>
<a name="polygons"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.polygons(layer)</tt></li>
<li><tt>source.polygons(layer, datatype)</tt></li>
@ -204,9 +204,9 @@ This method is identical to <a href="#input">input</a> with respect to the optio
</p><p>
Use the global version of "polygons" without a source object to address the default source.
</p>
<h2>"select" - Adds cell name expressions to the cell filters</h2>
<a name="select"/><h2>"select" - Adds cell name expressions to the cell filters</h2>
<keyword name="select"/>
<a name="select"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.select(filter1, filter2, ...)</tt></li>
</ul>
@ -249,9 +249,9 @@ l1 = layout_with_selection.input(1, 0)
...
</pre>
</p>
<h2>"touching" - Specifies input selected from a region in touching mode</h2>
<a name="touching"/><h2>"touching" - Specifies input selected from a region in touching mode</h2>
<keyword name="touching"/>
<a name="touching"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>source.touching(box)</tt></li>
<li><tt>source.touching(p1, p2)</tt></li>

View File

@ -19,90 +19,90 @@ layers or specification of the layout source.
For more details about the DRC functions see <a href="/about/drc_ref_global.xml">DRC::global</a>.
</p>
<h2-index/>
<h2>"align" - Aligns the extracted netlist vs. the schematic by flattening circuits where required</h2>
<a name="align"/><h2>"align" - Aligns the extracted netlist vs. the schematic by flattening circuits where required</h2>
<keyword name="align"/>
<a name="align"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>align</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#align">Netter#align</a> for a description of that function.
</p>
<h2>"compare" - Compares the extracted netlist vs. the schematic</h2>
<a name="compare"/><h2>"compare" - Compares the extracted netlist vs. the schematic</h2>
<keyword name="compare"/>
<a name="compare"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>compare</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#compare">Netter#compare</a> for a description of that function.
</p>
<h2>"equivalent_pins" - Marks pins as equivalent</h2>
<a name="equivalent_pins"/><h2>"equivalent_pins" - Marks pins as equivalent</h2>
<keyword name="equivalent_pins"/>
<a name="equivalent_pins"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>equivalent_pins(circuit, pins ...)</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#equivalent_pins">Netter#equivalent_pins</a> for a description of that function.
</p>
<h2>"join_symmetric_nets" - Joins symmetric nets of selected circuits on the extracted netlist</h2>
<a name="join_symmetric_nets"/><h2>"join_symmetric_nets" - Joins symmetric nets of selected circuits on the extracted netlist</h2>
<keyword name="join_symmetric_nets"/>
<a name="join_symmetric_nets"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>join_symmetric_nets(circuit_filter)</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#join_symmetric_nets">Netter#join_symmetric_nets</a> for a description of that function.
</p>
<h2>"max_branch_complexity" - Configures the maximum branch complexity for ambiguous net matching</h2>
<a name="max_branch_complexity"/><h2>"max_branch_complexity" - Configures the maximum branch complexity for ambiguous net matching</h2>
<keyword name="max_branch_complexity"/>
<a name="max_branch_complexity"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>max_branch_complexity(n)</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#max_branch_complexity">Netter#max_branch_complexity</a> for a description of that function.
</p>
<h2>"max_depth" - Configures the maximum search depth for net match deduction</h2>
<a name="max_depth"/><h2>"max_depth" - Configures the maximum search depth for net match deduction</h2>
<keyword name="max_depth"/>
<a name="max_depth"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>max_depth(n)</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#max_depth">Netter#max_depth</a> for a description of that function.
</p>
<h2>"max_res" - Ignores resistors with a resistance above a certain value</h2>
<a name="max_res"/><h2>"max_res" - Ignores resistors with a resistance above a certain value</h2>
<keyword name="max_res"/>
<a name="max_res"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>max_res(threshold)</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#max_res">Netter#max_res</a> for a description of that function.
</p>
<h2>"min_caps" - Ignores capacitors with a capacitance below a certain value</h2>
<a name="min_caps"/><h2>"min_caps" - Ignores capacitors with a capacitance below a certain value</h2>
<keyword name="min_caps"/>
<a name="min_caps"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>min_caps(threshold)</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#min_caps">Netter#min_caps</a> for a description of that function.
</p>
<h2>"netter" - Creates a new netter object</h2>
<a name="netter"/><h2>"netter" - Creates a new netter object</h2>
<keyword name="netter"/>
<a name="netter"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>netter</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml">Netter</a> for more details
</p>
<h2>"report_lvs" - Specifies an LVS report for output</h2>
<a name="report_lvs"/><h2>"report_lvs" - Specifies an LVS report for output</h2>
<keyword name="report_lvs"/>
<a name="report_lvs"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>report_lvs([ filename [, long ] ])</tt></li>
</ul>
@ -121,27 +121,27 @@ extracted netlist.
</p><p>
report_lvs is only effective if a comparison step is included.
</p>
<h2>"same_circuits" - Establishes an equivalence between the circuits</h2>
<a name="same_circuits"/><h2>"same_circuits" - Establishes an equivalence between the circuits</h2>
<keyword name="same_circuits"/>
<a name="same_circuits"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>same_circuits(circuit_a, circuit_b)</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#same_circuits">Netter#same_circuits</a> for a description of that function.
</p>
<h2>"same_device_classes" - Establishes an equivalence between the device_classes</h2>
<a name="same_device_classes"/><h2>"same_device_classes" - Establishes an equivalence between the device_classes</h2>
<keyword name="same_device_classes"/>
<a name="same_device_classes"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>same_device_classes(class_a, class_b)</tt></li>
</ul>
<p>
See <a href="/about/lvs_ref_netter.xml#same_device_classes">Netter#same_device_classes</a> for a description of that function.
</p>
<h2>"same_nets" - Establishes an equivalence between the nets</h2>
<a name="same_nets"/><h2>"same_nets" - Establishes an equivalence between the nets</h2>
<keyword name="same_nets"/>
<a name="same_nets"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>same_nets(circuit, net_a, net_b)</tt></li>
<li><tt>same_nets(circuit_a, net_a, circuit_b, net_b)</tt></li>
@ -149,9 +149,9 @@ See <a href="/about/lvs_ref_netter.xml#same_device_classes">Netter#same_device_c
<p>
See <a href="/about/lvs_ref_netter.xml#same_nets">Netter#same_nets</a> for a description of that function.
</p>
<h2>"schematic" - Reads the reference netlist</h2>
<a name="schematic"/><h2>"schematic" - Reads the reference netlist</h2>
<keyword name="schematic"/>
<a name="schematic"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>schematic(filename)</tt></li>
<li><tt>schematic(filename, reader)</tt></li>
@ -160,9 +160,9 @@ See <a href="/about/lvs_ref_netter.xml#same_nets">Netter#same_nets</a> for a des
<p>
See <a href="/about/lvs_ref_netter.xml#schematic">Netter#schematic</a> for a description of that function.
</p>
<h2>"tolerance" - Specifies compare tolerances for certain device parameters</h2>
<a name="tolerance"/><h2>"tolerance" - Specifies compare tolerances for certain device parameters</h2>
<keyword name="tolerance"/>
<a name="tolerance"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>tolerance(device_class_name, parameter_name, absolute_tolerance [, relative_tolerance])</tt></li>
<li><tt>tolerance(device_class_name, parameter_name [, :absolute =&gt; absolute_tolerance] [, :relative =&gt; relative_tolerance])</tt></li>

View File

@ -43,9 +43,9 @@ end
</pre>
</p>
<h2-index/>
<h2>"align" - Aligns the extracted netlist vs. the schematic</h2>
<a name="align"/><h2>"align" - Aligns the extracted netlist vs. the schematic</h2>
<keyword name="align"/>
<a name="align"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>align</tt></li>
</ul>
@ -68,9 +68,9 @@ are other (explicit) ways to flatten circuits.
Please note that flattening circuits has some side effects such
as loss of details in the cross reference and net layout.
</p>
<h2>"compare" - Compares the extracted netlist vs. the schematic</h2>
<a name="compare"/><h2>"compare" - Compares the extracted netlist vs. the schematic</h2>
<keyword name="compare"/>
<a name="compare"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>compare</tt></li>
</ul>
@ -85,9 +85,9 @@ corresponding circuits: the unpaired circuit will be flattened then.
This method will return true, if the netlists are equivalent and false
otherwise.
</p>
<h2>"equivalent_pins" - Marks pins as equivalent</h2>
<a name="equivalent_pins"/><h2>"equivalent_pins" - Marks pins as equivalent</h2>
<keyword name="equivalent_pins"/>
<a name="equivalent_pins"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>equivalent_pins(circuit, pin ...)</tt></li>
</ul>
@ -110,9 +110,9 @@ If the netlist provides named pins, names can be used instead of numbers.
Before this method can be used, a schematic netlist needs to be loaded with
<a href="#schematic">schematic</a>.
</p>
<h2>"join_symmetric_nets" - Joins symmetric nets of selected circuits on the extracted netlist</h2>
<a name="join_symmetric_nets"/><h2>"join_symmetric_nets" - Joins symmetric nets of selected circuits on the extracted netlist</h2>
<keyword name="join_symmetric_nets"/>
<a name="join_symmetric_nets"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>join_symmetric_nets(circuit_filter)</tt></li>
</ul>
@ -133,9 +133,9 @@ those circuits for which this feature is required.
For the symmetry detection, the specified constraints (e.g. tolerances,
device filters etc.) apply.
</p>
<h2>"lvs_data" - Gets the internal <class_doc href="LayoutVsSchematic">LayoutVsSchematic</class_doc> object</h2>
<a name="lvs_data"/><h2>"lvs_data" - Gets the internal <class_doc href="LayoutVsSchematic">LayoutVsSchematic</class_doc> object</h2>
<keyword name="lvs_data"/>
<a name="lvs_data"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>lvs_data</tt></li>
</ul>
@ -143,9 +143,29 @@ device filters etc.) apply.
The <class_doc href="LayoutVsSchematic">LayoutVsSchematic</class_doc> object provides access to the internal details of
the netter object.
</p>
<h2>"max_depth" - Configures the maximum search depth for net match deduction</h2>
<a name="max_branch_complexity"/><h2>"max_branch_complexity" - Configures the maximum branch complexity for ambiguous net matching</h2>
<keyword name="max_branch_complexity"/>
<p>Usage:</p>
<ul>
<li><tt>max_branch_complexity(n)</tt></li>
</ul>
<p>
The netlist compare algorithm is basically a backtracing algorithm.
With ambiguous nets, the algorithm picks possible net pairs and
tries whether they will make a good match. Following the deduction
path for this nets may lead to further branches if more ambiguous
nets are encountered. To avoid combinational explosion, the maximum
branch complexity is limited to the value configured with this
function. The default value is 500 which means not more than
500 combinations are tried for a single seed pair. For networks
with inherent ambiguity such as decoders, the complexity
can be increased at the expense of potentially larger runtimes.
The runtime penality is roughly proportional to the branch
complexity.
</p>
<a name="max_depth"/><h2>"max_depth" - Configures the maximum search depth for net match deduction</h2>
<keyword name="max_depth"/>
<a name="max_depth"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>max_depth(n)</tt></li>
</ul>
@ -160,9 +180,9 @@ pursues this "deduction path" in greater depth while with
smaller values, the algorithm prefers picking nets in a random fashion
as the seeds for this deduction path. The default value is 8.
</p>
<h2>"max_res" - Ignores resistors with a resistance above a certain value</h2>
<a name="max_res"/><h2>"max_res" - Ignores resistors with a resistance above a certain value</h2>
<keyword name="max_res"/>
<a name="max_res"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>max_res(threshold)</tt></li>
</ul>
@ -170,9 +190,9 @@ as the seeds for this deduction path. The default value is 8.
After using this method, the netlist compare will ignore resistor devices
with a resistance value above the given threshold (in Farad).
</p>
<h2>"min_caps" - Ignores capacitors with a capacitance below a certain value</h2>
<a name="min_caps"/><h2>"min_caps" - Ignores capacitors with a capacitance below a certain value</h2>
<keyword name="min_caps"/>
<a name="min_caps"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>min_caps(threshold)</tt></li>
</ul>
@ -180,9 +200,9 @@ with a resistance value above the given threshold (in Farad).
After using this method, the netlist compare will ignore capacitance devices
with a capacitance values below the given threshold (in Farad).
</p>
<h2>"same_circuits" - Establishes an equivalence between the circuits</h2>
<a name="same_circuits"/><h2>"same_circuits" - Establishes an equivalence between the circuits</h2>
<keyword name="same_circuits"/>
<a name="same_circuits"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>same_circuits(circuit_a, circuit_b)</tt></li>
</ul>
@ -197,9 +217,9 @@ other circuit is mapped to "nothing", i.e. ignored.
Before this method can be used, a schematic netlist needs to be loaded with
<a href="#schematic">schematic</a>.
</p>
<h2>"same_device_classes" - Establishes an equivalence between the device classes</h2>
<a name="same_device_classes"/><h2>"same_device_classes" - Establishes an equivalence between the device classes</h2>
<keyword name="same_device_classes"/>
<a name="same_device_classes"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>same_device_classes(class_a, class_b)</tt></li>
</ul>
@ -215,9 +235,9 @@ other device class is mapped to "nothing", i.e. ignored.
Before this method can be used, a schematic netlist needs to be loaded with
<a href="#schematic">schematic</a>.
</p>
<h2>"same_nets" - Establishes an equivalence between the nets</h2>
<a name="same_nets"/><h2>"same_nets" - Establishes an equivalence between the nets</h2>
<keyword name="same_nets"/>
<a name="same_nets"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>same_nets(circuit, net_a, net_b)</tt></li>
<li><tt>same_nets(circuit_a, net_a, circuit_b, net_b)</tt></li>
@ -237,9 +257,9 @@ resolve otherwise.
Before this method can be used, a schematic netlist needs to be loaded with
<a href="#schematic">schematic</a>.
</p>
<h2>"schematic" - Gets, sets or reads the reference netlist</h2>
<a name="schematic"/><h2>"schematic" - Gets, sets or reads the reference netlist</h2>
<keyword name="schematic"/>
<a name="schematic"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>schematic(filename)</tt></li>
<li><tt>schematic(filename, reader)</tt></li>
@ -257,9 +277,9 @@ If no reader is provided, Spice format will be assumed. The reader object is a
Alternatively, a <class_doc href="Netlist">Netlist</class_doc> object can be given which is obtained from any other
source.
</p>
<h2>"tolerance" - Specifies compare tolerances for certain device parameters</h2>
<a name="tolerance"/><h2>"tolerance" - Specifies compare tolerances for certain device parameters</h2>
<keyword name="tolerance"/>
<a name="tolerance"/><p>Usage:</p>
<p>Usage:</p>
<ul>
<li><tt>tolerance(device_class_name, parameter_name, absolute_tolerance [, relative_tolerance])</tt></li>
<li><tt>tolerance(device_class_name, parameter_name [, :absolute =&gt; absolute_tolerance] [, :relative =&gt; relative_tolerance])</tt></li>

View File

@ -37,7 +37,7 @@
<pre>sheet_rho = 0.5
model_name = "RES"
extract_devices(resistor(model_name, sheet_rho), { "R" => res_layer, "C" => cap_layer })</pre>
extract_devices(resistor(model_name, sheet_rho), { "R" => res_layer, "C" => contact_layer })</pre>
<p>
The plain resistor offers two terminals which it outputs on "tA" and "tB" terminal layers.
@ -62,6 +62,13 @@ extract_devices(resistor(model_name, sheet_rho), { "R" => res_layer, "C" => cap_
<img src="/manual/res_ex_tw.png"/>
</p>
<p>
<b>Note:</b> The resistance computation is based on a simple approximation. It computes the number
of squares by tracing the perimeter of the "R" polygon. The perimeter length is separated
in parts where the perimeter touches the "C" layer and parts where it does not. The number
of squares is computed from the non-touching length divided by the touching length.
</p>
<h2>Capacitor extractors (<a href="/about/drc_ref_global.xml#capacitor">capacitor</a>
and <a href="/about/drc_ref_global.xml#capacitor_with_bulk">capacitor_with_bulk</a>)</h2>
@ -119,11 +126,6 @@ extract_devices(capacitor(model_name, area_cap), { "P1" => metal1, "P2" => metal
<img src="/manual/diode_ex_layout.png"/>
</p>
<p>
The extractor will compute the capacitance from the area of the
overlap and the capacitance per area (F/µm²) value.
</p>
<pre>model_name = "DIODE"
extract_devices(diode(model_name), { "P" => pplus, "N" => nwell })</pre>