Verilog - spice bus signal interface #11
Replies: 3 comments 2 replies
-
Good question! This hasn't been solved, but hasn't yet been practically necessary to solve either. I've used this tool extensively to turn a digital design (post PAR) from Verilog + SPEF into Spice, augmented by the Spice descriptions of the standard cells for the library in which it was implemented (e.g. sky130 hd). The Verilog description of the module contains bus information so this is trivially mapped to a unique Spice node:
etc. The reverse mapping is tricky. As long as there is a Verilog description of the subckt as well as the Spice description, it should be possible to map the elaborated names of bus wires. If the input dialect makes this hard to guess, then we have an error. I don't know of any Spice dialects that explicitly annotate buses. If they do we can augment the parser to understand them. For those that don't you simply lose information about which wires form a bus and what their position in that bus is, so inferring buses can be heuristic at best. Perhaps if you know something else about the circuit you can provide it as a hint, but otherwise I think we should avoid trying to come up with a canonical heuristic to guess the reverse association. |
Beta Was this translation helpful? Give feedback.
-
I ran into a problems during device level LVS with verilog and spice on the sky130 Google/efabless chips with the SRAM modules.
It appears that
The workaround I did was to rearrange the spice subckt signals into decreasing order like the verilog signals. This is based on the assumption that the verilog buses were defined in reverse order (however reverse order is not mandatory in verilog). Here's the verilog rtl
The SRAM LEF has expanded buses, (i.e. |
Beta Was this translation helpful? Give feedback.
-
Since spice connections are always by order it sounds like a problem with netgen if it doesn't map verilog ports to the correct position in the Spice instantiation? I'm a bit confused though, you've only shown verilog snippets. How do you know the connections are wrong in Spice?
|
Beta Was this translation helpful? Give feedback.
-
How did you handle the verilog - spice bus signal interface? Non-bus signal correspondence can be determined by name, but bus signal order can be tricky. Spice often has the buses in alphabetical order, but verilog generally has them in reverse numerical order.
Beta Was this translation helpful? Give feedback.
All reactions