gf180mcuD process magic 8.3.602
The expected connectivity is traced
With one level of hierarchy shown, you can see the driver cell with a Y text placed over it, but no metal. The Y text is a port on the driver cell's parent xor2.
With all levels shown, the metal1 connection is apparent (Y of xor2 is DOUT of driver).
However, the extracted netlist shows a disconnect.
driver is as expected.
.subckt driver DIN VSS DOUT VDD
X0 a_245_256# DIN VSS VSS nfet_03v3 ad=0.1936p pd=1.76u as=0.1936p ps=1.76u w=0.44u l=0.28u
X1 VDD a_245_256# DOUT VDD pfet_03v3 ad=0.1872p pd=1.24u as=0.1872p ps=1.24u w=0.72u l=0.28u M=4
X2 a_245_256# DIN VDD VDD pfet_03v3 ad=0.3168p pd=2.32u as=0.3168p ps=2.32u w=0.72u l=0.28u
X3 DOUT a_245_256# VSS VSS nfet_03v3 ad=0.2288p pd=1.4u as=0.3872p ps=2.64u w=0.88u l=0.28u M=2
.ends
xor2 however, has a floating Y port (it should be connected to driver_0/DOUT.
.subckt xor2 Y VSS VDD B A
Xdriver_0 driver_0/DIN VSS driver_0/DOUT VDD driver
Xinv_s_0 VDD VSS inv_s_0/Y B inv_s
Xinv_s_1 VDD VSS inv_s_1/Y A inv_s
X0 VDD A a_1605_618# VDD pfet_03v3 ad=0.1584p pd=1.6u as=93.59999f ps=0.88u w=0.36u l=0.28u
X1 VSS inv_s_0/Y a_1605_100# VSS nfet_03v3 ad=0.1584p pd=1.6u as=93.59999f ps=0.88u w=0.36u l=0.28u
X2 driver_0/DIN B a_1042_618# VDD pfet_03v3 ad=0.1584p pd=1.6u as=93.59999f ps=0.88u w=0.36u l=0.28u
X3 driver_0/DIN A a_1042_100# VSS nfet_03v3 ad=0.1584p pd=1.6u as=93.59999f ps=0.88u w=0.36u l=0.28u
X4 a_1605_618# inv_s_0/Y driver_0/DIN VDD pfet_03v3 ad=93.59999f pd=0.88u as=0.1584p ps=1.6u w=0.36u l=0.28u
X5 a_1605_100# inv_s_1/Y driver_0/DIN VSS nfet_03v3 ad=93.59999f pd=0.88u as=0.1584p ps=1.6u w=0.36u l=0.28u
X6 a_1042_618# inv_s_1/Y VDD VDD pfet_03v3 ad=93.59999f pd=0.88u as=0.1584p ps=1.6u w=0.36u l=0.28u
X7 a_1042_100# B VSS VSS nfet_03v3 ad=93.59999f pd=0.88u as=0.1584p ps=1.6u w=0.36u l=0.28u
.ends
The parent puf_readout_v2 has a VALID_OUT connection to the "floating" xor2 terminal Y, but no connection to the underlying driver terminal DOUT.
.subckt puf_readout_v2 VSS VDD DIN1 DOUTB RST_N DIN0 SELB<5> SELB<0> DOUT SEL<7> SELB<1>
+ SELB<4> SEL<6> SEL<4> SEL<1> SEL<3> SEL<2> VALID_OUT SELB<2> SELB<6> SEL<5> SELB<3>
+ SELB<7> SEL<0>
Xxor2_0 VALID_OUT VSS VDD DOUTB DOUT xor2
-
Adding a small metal1 square under the floating Y text on the xor2 results in a correct extraction.
-
Removing the Y text also results in a correct extraction. (The driver/DOUT net is promoted to an xor2 port and connected to VALID_OUT).
magic-test.tgz
# set PDK_ROOT
export PDK=gf180mcuD
tar xzf magic-test.tgz
cd magic-test
magic -dnull -noc -rcfile $PDK_ROOT/$PDK/libs.tech/magic/$PDK.magicrc < extract.tcl
The resulting spice file is puf_readout_v2.layout.spice. I've included puf_readout_v2.602.layout.spice as a reference for the file generated in my environment.
gf180mcuD process magic
8.3.602The expected connectivity is traced
With one level of hierarchy shown, you can see the
drivercell with aYtext placed over it, but no metal. TheYtext is a port on thedrivercell's parentxor2.With all levels shown, the metal1 connection is apparent (
Yofxor2isDOUTofdriver).However, the extracted netlist shows a disconnect.
driveris as expected.xor2however, has a floatingYport (it should be connected todriver_0/DOUT.The parent
puf_readout_v2has aVALID_OUTconnection to the "floating"xor2terminalY, but no connection to the underlyingdriverterminalDOUT.Adding a small metal1 square under the floating
Ytext on thexor2results in a correct extraction.Removing the
Ytext also results in a correct extraction. (Thedriver/DOUTnet is promoted to anxor2port and connected toVALID_OUT).magic-test.tgz
The resulting spice file is
puf_readout_v2.layout.spice. I've includedpuf_readout_v2.602.layout.spiceas a reference for the file generated in my environment.