Hi, our team has achieved LVS clean with klayout, ...
# ieee-sscs-dc-23
a
Hi, our team has achieved LVS clean with klayout, but magic has problems extracting the netlist. On the OTA subckt there’s a bad connection with the bulk of the pfets. Those should be connected to VDD, but are being interpreted as another net. This problem could suggest that klayout is unable to detect a problem, or magic requires a patch. Another issue we’d found is with the mimcaps ports. Is there a polarity assigned for the bottom and top of the mimcaps? @Tim Edwards @Mitch Bailey
This link references the latest OTA layout version
m
@aquiles viza mimcaps do have polarity. There’s a slight difference in the parasitic capacitance.
a
Thanks David, I didn't know that. What do you think about the bulk problem? The pfets are over a nwell with guard ring, magic should be able to detect that
m
@aquiles viza magic doesn’t handle cross hierarchy layouts well. For example, make sure your implants are on the same hierarchy as your diffusion. Poly and diffusion must be on the same hierarchy to be recognized.
a
I instructed magic to flatten the entire circuit before generate the netlist, it doesn't have any problem on the nmos which also uses a guard ring
t
@Mitch Bailey: This layout appears to have been done with magic.
@aquiles viza: Looking at your layout, the nwell under the pFETs in the OTA is not connected to anything. There is a ring of diffusion around the pFET area, but it has no contacts to metal1. And the metal1 in the top cell is touching the position of the diffusion, but since there is no metal over the diffusion there, it isn't connecting to anything.
a
The layout was made with klayout, magic was only used to extract and see if everything is ok. The N-diffusion ring has a lot of contacts to metal1 so it should be powered. Does the nwell require a tap inside the nwell area? should it be an N-COMP or P-COMP?
t
Okay, I get it. Klayout saves contact cuts in their own subcells to make more efficient contact arrays; that interferes with magic's handling of contacts. To read the GDS in for LVS, do:
Copy code
gds flatten true
gds flatglob via*
gds read ldo
You should not need to flatten the layout for LVS extraction.