Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dummy pins generated for dummy gates #425

Closed
klayoutmatthias opened this issue Nov 21, 2019 · 1 comment
Closed

Dummy pins generated for dummy gates #425

klayoutmatthias opened this issue Nov 21, 2019 · 1 comment
Assignees

Comments

@klayoutmatthias
Copy link
Collaborator

@klayoutmatthias klayoutmatthias commented Nov 21, 2019

Overlapping dummy gates shared between two cells will create dummy pins which are not removed by "netlist.simplify".

For details see here: https://www.klayout.de/forum/discussion/1375/extra-pins-are-extracted-at-dummy-poly-data#latest

@klayoutmatthias

This comment has been minimized.

Copy link
Collaborator Author

@klayoutmatthias klayoutmatthias commented Nov 21, 2019

issue-425.zip

The attached layout demonstrates the issue with this netlist extraction script (run as LVS - does not product a cross-reference, but only a netlist):


# Enable hierarchical mode
deep

report_lvs

# -------------------------------------------------------------------
# Layers

# Drawing layers
nwell       = input(1, 0)
active      = input(2, 0)
poly        = input(3, 0)
poly_lbl    = input(3, 1)
diffcont    = input(4, 0)
polycont    = input(5, 0)
metal1      = input(6, 0)
metal1_lbl  = input(6, 1)
via1        = input(7, 0)
metal2      = input(8, 0)
metal2_lbl  = input(8, 1)

# Bulk layer for terminal provisioning
bulk        = polygon_layer

# Computed layers
pactive               = active & nwell
pgate                 = pactive & poly
psd                   = pactive - pgate

nactive               = active - nwell
ngate                 = nactive & poly
nsd                   = nactive - ngate

# -------------------------------------------------------------------
# Device extraction

# PMOS transistor device extraction
extract_devices(mos3("PMOS"), { "SD" => psd, "G" => pgate, 
                                "tS" => psd, "tD" => psd, "tG" => poly })

# NMOS transistor device extraction
extract_devices(mos3("NMOS"), { "SD" => nsd, "G" => ngate, 
                                "tS" => nsd, "tD" => nsd, "tG" => poly })

# -------------------------------------------------------------------
# Connectivity

# Inter-layer
connect(psd,        diffcont)
connect(nsd,        diffcont)
connect(poly,       polycont)
connect(poly,       poly_lbl)
connect(polycont,   metal1)
connect(diffcont,   metal1)
connect(metal1,     metal1_lbl)
connect(metal1,     via1)
connect(via1,       metal2)
connect(metal2,     metal2_lbl)

# -------------------------------------------------------------------
# Netlist and compare

# Netlist normalization
netlist.simplify

The effect is: the INV2X cell will have four dummy pins corresponding to the four dummy gates inside each INV2X.

@klayoutmatthias klayoutmatthias self-assigned this Nov 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.