That error message usually means the number of pins for a .SUBCKT definition is different than the number of pins for the "call" of that .SUBCKT.
If the .SUBCKT definition looks something like this:
.SUBCKT mycell pin1 pin2 pin3 pin4 pin5 pin6 pin7 pin8 pin9
and if the subcircuit call looks something like this:
X1 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 mycell
then Calibre would expect to see 10 pins in the subcircuit, because the call for that subcircuit shows 10 net names, but in this example the subcircuit definition only has 9 pin names. In this example we would get an error such as:
Error: Wrong pin count in file "layout.spi" at line 123: expected 10 pins, but found 9
There can be different causes for this problem. Sometimes it's a result of slash characters, sometimes it's a conflict between *.GLOBAL names and pin names, sometimes it's a result of v2lvs conversion where the same library wasn't used during the conversion as during LVS.
Looking at those lines in the netlist (the line number reported as an error, and then comparing it to the .SUBCKT line that should relate to it) and counting the net names manually to see if the error message makes sense compared to what you see visually on the lines can often help narrow the problem down.
I am facing the same issue. I was wondering if you could tell me the possible ways of fixing this issue? I used v2lvs to create my netlist and there are '/'s where the errors occur. Thanks.
Does technote 6045 help? It suggests using LVS SPICE SLASH IS SPACE NO in the SVRF file.
Another alternative is the -c command in v2lvs:
Specifies the substitution for char1 by the string. The char1 argument may only be \$ (the escape identifier is required before $), comma (,), =, or /. The string may be any string allowed in SPICE. Note there is no whitespace between char1 and string.
By default, V2LVS substitutes a hash (#) character for comma (,), equals (=), and leading dollar ($…) characters, which are disallowed in SPICE. The leading $ is only replaced if it would follow whitespace in the output SPICE netlist. The other characters are replaced anywhere they appear.
The slash (/) is not replaced by default. If you desire to have / characters replaced with # characters, use -c ##."
(Bolding is mine.)
The -c option can be set at either the command line or in Calibre Interactive, if Inputs > Netlist > Format is set to Verilog. The procedure is given at http://supportnet.mentor.com/docs/201206054/docs/htmldocs/calbr_inter_user/lvs_app11.html .
Hope this was useful-
Thanks for the help! I used the first method and it worked. Actually, last night I manually replaced all the '/' with '_', but your method is much easier.