Hello, I have 3 separate circuits that interface w...
# lvs
s
Hello, I have 3 separate circuits that interface with wire bond pads, I'm struggling to pass LVS checks for each individually. I'm using the
test_io.gds
shared by @Tim Edwards , eventually I'd like to get multiples of the 3 circuits and bond pads in the user area, but have one instance of each and 14 total pads. I've attached the lvs report as well as the extracted spice netlist from my gds. Additionally, I'm getting a
Klayout Metal Minimum Clear Area Density
violation that I've not seen before, looking at the xml report in klayout shows messages like
0.4 min li1 ca pattern density
, or
0.4 min m3 ca pattern density
, as well as
0.4 min m4 ca pattern density, m4 ca density is -38.36204247422786
, how are these issues best resolved, how is the negative density to be interpreted? Thank you.
t
Negative density means that something did an incorrect calculation. : ) There are density checks on the user area to make sure that too much metal isn't being used. But I think there are issues where the klayout density checks are counting non-mask purpose layers, and they are counting them independently of actual mask purpose layers that are overlapping, resulting in measures of density exceeding 100% (or clear area below 0%). That's how the negative numbers (and other density errors) come to be. You might have an outdated density rule deck, or you might have non-mask layer numbers that have not been defined in the klayout deck.
For the LVS report: (1) Ignore the property error. Or you can adjust the netgen setup deck to have netgen ignore the "pj" property on the diode. I think the schematic is not defining "pj", or might be specifying it as "perim". (2) test_io was hastily put together. It does not define pins, which is why you get a pin mismatch at the top level. You should probably just compare the "minesd_pad_and_pg" cell by itself. Or in this case, don't instantiate "test_io" in your design, but instantiate the pad. However, such errors resolve at the next hierarchy level up, so it's not a fatal error. (3) There are cells which I assume are yours, like "ROIC_align". . . They need defined ports. Without defined ports, you will always get pin mismatches and the cell will get flattened into the next level of hierarchy. At the hierarchy top, that will make it harder to debug. (4) I'm a bit bothered by entries on the schematic side like "|PMOS_S_61436961_X10_Y1_1712773682[[0]]". The "[[0]]" at the end indicates that netgen has seen multiple cells with the same name and is trying to disambiguate them. (5) Start debugging with things that are easier to track down. In the summary of user_analog_project_wrapper, the schematic side says that there are two independent MiM caps. The layout side says that there were two MiM caps merged into one because they were found to be connected in parallel. Seems like a good place to start.
s
Thank you for the response. Regarding defining ports; these are defined with polygons on the .pin layers overlapping the corresponding metal latyer in the subcells of the analog wrapper .gds as well as pins in the xschem schematic that appear on the symbols, correct? Does text on a .label layer overlapping a .pin polygon define a port in the schematic? I have some of these set in the layout and schematic, but not for each net. Does each net in both layout and schematic need a port?
t
A port in the schematic is defined by an
ipin
,
opin
or
iopin
, assuming those appear both in the schematic and on the corresponding symbol.
s
Sorry I meant to ask about defining the port in the layout, how are the .pin, and .label layers intended to be used? My schematic has ports defined for all the inputs and output from the esd pads.
t
I never can remember how the ports are done. Just look at how it's done in one of the standard cells. Assuming you're doing this in klayout and have to do it the hard way. In magic you just specify that the label is a port.