mirror of https://github.com/KLayout/klayout.git
Updated Deep Verification Base (markdown)
parent
54f9f00fef
commit
86a91539bb
|
|
@ -97,11 +97,73 @@ Connectivity layers are either taken from their original layers or derived using
|
|||
|
||||
After device recognition, schematic extraction can proceed bottom-up to connect shape by shape and form growing clusters of connected shapes. The incremental nature of the connection extraction forms sub-circuits for each cell. When moving up in the hierarchy, nets from these sub-circuits are connected with nets either from the parent cell or with nets from sibling cells. The result is a hierarchical netlist.
|
||||
|
||||
Here is a rough idea for a schematic extraction script:
|
||||
|
||||
```(ruby)
|
||||
# device definitions
|
||||
|
||||
class MOSDevice < DeviceExtractor
|
||||
|
||||
def extract(layout, seed, body)
|
||||
|
||||
body.size == 1 || raise("MOS device requires exactly one body layer")
|
||||
|
||||
sd = body[0]
|
||||
sd.size == 2 || raise("Exactly two body shapes (S,D) are required for MOS devices")
|
||||
|
||||
sides = seed.edges * sd.edges
|
||||
width = sides.length * 0.5 * layout.dbu
|
||||
|
||||
faces = seed.edges - sd.edges
|
||||
length = faces.length * 0.5 * layout.dbu
|
||||
|
||||
params = { "W" => width, "L" => length }
|
||||
|
||||
ports = [
|
||||
Port::new(SEED, "G", seed),
|
||||
Port::new(BODY1, "S", sd[0]),
|
||||
Port::new(BODY1, "D", sd[1])
|
||||
]
|
||||
|
||||
return Device::new(self.DEVICE_NAME, params, ports)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class NMOSDevice < MOSDevice
|
||||
self.DEVICE_NAME = "NMOS"
|
||||
end
|
||||
|
||||
class PMOSDevice < MOSDevice
|
||||
self.DEVICE_NAME = "PMOS"
|
||||
end
|
||||
|
||||
# body
|
||||
|
||||
deep
|
||||
|
||||
# generation rules
|
||||
sd = active - poly
|
||||
gate = active * poly
|
||||
pmos = gate * nwell
|
||||
nmos = gate - nwell
|
||||
|
||||
# net extraction
|
||||
extract_nets do
|
||||
|
||||
connect metal2, via1
|
||||
connect via1, metal1
|
||||
connect metal1, contact
|
||||
connect contact, sd
|
||||
connect contact, poly
|
||||
connect contact, gate
|
||||
|
||||
label metal1, metal1_texts
|
||||
label metal2, metal2_texts
|
||||
|
||||
device NMOSDevice, nmos, sd
|
||||
device PMOSDevice, pmos, sd
|
||||
|
||||
end
|
||||
```
|
||||
Loading…
Reference in New Issue