RTimothyEdwards / netgen

Netgen complete LVS tool for comparing SPICE or verilog netlists
Other
109 stars 25 forks source link

Netgen isn't case sensitive #17

Open Manarabdelaty opened 3 years ago

Manarabdelaty commented 3 years ago

In the attached test case, the design has two ports with the same name but one is uppercase and the other is lower case. Netgen reports one pin mismatch because it sees both ports as lower-case.

output p; 
output P;

spm.zip

RTimothyEdwards commented 3 years ago

This is a problem with the SPICE format, not with netgen. SPICE is case insensitive. So if you wish to compare a SPICE netlist to a verilog netlist, then the verilog netlist has to be case insensitive as well. You can subvert this by running the LVS with the netlists swapped ("SVL", I guess. . .). By reading the verilog first, it will force SPICE to be case sensitive. But of course, that may have its own issues.

Manarabdelaty commented 3 years ago

In the SPICE netlist, I can see that one port is uppercase and the other is lowercase. So, I think in this example the SPICE is case sensitive.

.subckt spm P clk p rst x[0] x[10] x[11] x[12] x[13] x[14] x[15] x[16] x[17] x[18]
+ x[19] x[1] x[20] x[21] x[22] x[23] x[24] x[25] x[26] x[27] x[28] x[29] x[2] x[30]
+ x[31] x[3] x[4] x[5] x[6] x[7] x[8] x[9] y VPWR VGND
RTimothyEdwards commented 3 years ago

SPICE is by definition case-insensitive, so the above is an invalid SPICE netlist.

dmcmahill commented 2 years ago

I think the confusion is in how the term "SPICE netlist" is used. There is "SPICE netlist"and then "SPICE-like netlist". CDL that is used by some of the commercial tools is SPICE-like but not strictly SPICE. It has much of the same syntax but is case sensitive and supports some other constructs that are not part of true SPICE format. And then, at least some commercial tools have options to make the reading of these files case sensitive or not. To make matters worse, some simulators have similar options for at least some input files which of course leads to a huge danger of a typo causing an unintended short or open between what the simulator thinks and what LVS thinks.