Hello, I'm just testing the LVS with a circuit tha...
# lvs
c
Hello, I'm just testing the LVS with a circuit that I know has a correct LVS. If I send this message, you can imagine the LVS didn't pass. When I check the log, I have no problem with vias and nets. The final result says: 'LVS result: Final result: Circuits match uniquely.' In checking ext.log, I saw this: _Reading "sky130_ef_sc_hd__decap_12$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 1718): Cell "sky130_ef_sc_hd__decap_12$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 1718): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__decap_8$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 5514): Cell "sky130_fd_sc_hd__decap_8$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 5514): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__decap_3$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 9054): Cell "sky130_fd_sc_hd__decap_3$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 9054): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__fill_1$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 11730): Cell "sky130_fd_sc_hd__fill_1$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 11730): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__tapvpwrvgnd_1$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 13046): Cell "sky130_fd_sc_hd__tapvpwrvgnd_1$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 13046): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__decap_6$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 14724): Cell "sky130_fd_sc_hd__decap_6$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 14724): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__fill_2$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 17880): Cell "sky130_fd_sc_hd__fill_2$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 17880): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__clkbuf_1$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 19320): Cell "sky130_fd_sc_hd__clkbuf_1$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 19320): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__dfxtp_1$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 23140): Cell "sky130_fd_sc_hd__dfxtp_1$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 23140): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__decap_4$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 35272): Cell "sky130_fd_sc_hd__decap_4$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 35272): Ignoring duplicate definition_ _Reading "sky130_fd_sc_hd__buf_2$1"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 38074): Cell "sky130_fd_sc_hd__buf_2$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 38074): Ignoring duplicate definition_ _Reading "vias_gen"._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 42562): Cell "vias_gen" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 42562): Ignoring duplicate definition_ Reading "Dff$1". _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 42988): Cell "Dff$1" was already defined in this file._ _Error while reading cell "$$$CONTEXT_INFO$$$" (byte position 42988): Ignoring duplicate definition_ _Reading "user_analog_project_wrapper"._ _Processing sky130_ef_sc_hd__decap_12$1_ Processing Dff$1 Do you think this is the cause of the LVS failing in the percheck process?
m
@Charly Meyer Looks like the
$$$CONTEXT_INFO$$$
cell has duplicate definitions of some cells that are being ignored. If you’re getting a
Copy code
'LVS result: Final result: Circuits match uniquely.'
message, where is LVS failing? Could it be failing because there are missing cells in the source? Can you share your
LVS_check.log
file?
c
The error is mentioned in the precheck: 'ERROR LVS FAILED'. This is the result placed here: precheck_results/02_JUL_2024___14_24_17 If the LVS precheck failed, it is for a reason (not necessarily a good reason). It is important to understand why. If it is only a warning, how do I skip it?
m
@Charly Meyer See this message.
Copy code
LVS Done.
Warning: device level LVS may be incomplete because 2 cell(s) was/were ignored: see /opt/input/myproject/test_lvs_d/precheck_results/02_JUL_2024___14_24_17/tmp/ignore.glob
LVS problem: check the following files
/opt/input/myproject/test_lvs_d/precheck_results/02_JUL_2024___14_24_17/logs/ext.log
/opt/input/myproject/test_lvs_d/precheck_results/02_JUL_2024___14_24_17/logs/lvs.log
/opt/input/myproject/test_lvs_d/precheck_results/02_JUL_2024___14_24_17/outputs/reports/lvs.report
LVS ends with a non-zero error code if there are cells that ignored. What is in
ignore.glob
?
c
There is something I didn't mention before. The extracted netlist gives
sky130_fd_pr__special_nfet_01v8
instead of
sky130_fd_pr__nfet_01v8
because the size of the transistors is too small. I ignored the subcircuit containing
sky130_fd_pr__special_nfet_01v8
, and the LVS showed no errors in the log, but it failed in the precheck. Then I decided to change the name of the transistor to
sky130_fd_pr__special_nfet_01v8
(in another SPICE file), and the same thing happened. The log said the circuit matched, but the LVS in the precheck failed.
Also, I forgot to connect
io_eob[i]
to Vss and Vdd. I added a resistance on the layout to avoid pin conflicts and included this resistance in the netlist. I removed the subcircuit from "LVS_IGNORE". The log indicates that the circuit matches uniquely, but the LVS fails in the precheck. The log says, "The following cells had property errors: {Dff$1}" but I don't know if this is important. Above all, I don't know how or where to change this property. And thanks for your help again 😉
t
_`$$$CONTEXT_INFO$$$`_ is a metadata cell generated by, I think, gdsfactory. I think there is an option when you write out GDS from klayout to not write metadata; that will help avoid confusing tools downstream (but you'll lose the metadata, so that's a one-way street).
m
@Charly Meyer
I ignored the subcircuit containing
sky130_fd_pr__special_nfet_01v8
, and the LVS showed no errors in the log, but it failed in the precheck.
precheck LVS finishes with no errors if the layout and the schematic match. When you use ignore cells, LVS might finish with no errors, but precheck does not consider this to be a true match (because cells were ignored).
The log says, “The following cells had property errors: {Dff$1}”
but I don’t know if this is important. Above all, I don’t know how or where to change this property.
Search the LVS report for the
Dff$1
. It should list the devices that have mismatched properties.
c
@Tim Edwards Thanks for the advice. I reopened and rewrote the GDS file with Magic, and now I have no errors _$$$CONTEXT_INFO$$$_
t
If the layout was done in klayout, then I would advise against piping through magic to get GDS. Magic may not parse the hierarchy properly and can alter the layout in ways that break the circuit. In this case, I really think it is just a matter of selecting an option in klayout to remove the metadata when writing final GDS.