Skip to content

make lvs-gds-<macro> fails but may say that it passed. #30

Open
@d-m-bailey

Description

@d-m-bailey

Running make lvs-gds<macro> in the caravel directory aborts with an error that it can not find the top cell in the extracted spice netlist.

However, the result file from a previous clean lvs run (make lvs-<macro>) may still exist stating that there were no errors.

bash-4.2$ make lvs-digital_pll
echo "Extracting digital_pll"
Extracting digital_pll
...
LVS reports no net, device, pin, or property mismatches.
...
LVS: ./spi/lvs/digital_pll.spice vs. ./verilog/gl/digital_pll.v
Comparison result: ./spi/lvs/tmp/digital_pll.v_comp.out

bash-4.2$ ls -ltr ./spi/lvs/tmp/digital_pll.v_comp.out
-rw-r--r--. 1 1000 1001 65625 Jul  1 11:04 ./spi/lvs/tmp/digital_pll.v_comp.out

This is the result of the clean LVS run.

bash-4.2$ make lvs-gds-digital_pll
echo "Extracting digital_pll"
Extracting digital_pll
...
Creating placeholder cell definition for module sky130_fd_sc_hd__einvp_1.
Cannot find cell digital_pll in file ./spi/lvs/digital_pll.spice

python3 /mnt/mpw/2/caravel_user_project/caravel/scripts/count_lvs.py -f ./verilog/gl/digital_pll.v_comp.json | tee ./spi/lvs/tmp/digital_pll.lvs.summary.log
Traceback (most recent call last):
  File "/mnt/mpw/2/caravel_user_project/caravel/scripts/count_lvs.py", line 116, in <module>
    failures = count_LVS_failures(args.file)
  File "/mnt/mpw/2/caravel_user_project/caravel/scripts/count_lvs.py", line 38, in count_LVS_failures
    with open(filename, 'r') as cfile:
FileNotFoundError: [Errno 2] No such file or directory: './verilog/gl/digital_pll.v_comp.json'
...
LVS: ./spi/lvs/digital_pll.spice vs. ./verilog/gl/digital_pll.v
Comparison result: ./spi/lvs/tmp/digital_pll.v_comp.out

bash-4.2$ ls -ltr ./spi/lvs/tmp/digital_pll.v_comp.out
-rw-r--r--. 1 1000 1001 65625 Jul  1 11:04 ./spi/lvs/tmp/digital_pll.v_comp.out

The gds LVS run has aborted, but the comparison result from the last run still exists.

magic does not wrap the top level of the extracted spice file in a subckt definition which causes LVS to fail.

See RTimothyEdwards/magic#82

@RTimothyEdwards says that this is because openlane does not input/output the port definitions to gds correctly.

Metadata

Metadata

Assignees

Labels

flowChanges in Makefile and process flow

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions