Need a "simple" connectivity report
Added by easily confused about 1 year ago
I have not used verilog-perl yet.
I have a hierarchical design with connectivity only down to leaf-cells (structural only). There are no assigns, and no concatenated signals. I want a connectivity report showing all nets and all leaf ports. It could be of the form:top.net1: top.foo2.port1 output leaf top.foo.port1 input passthrough top.foo.leaf1.port1 input leaf top.foo.leaf2.port2 input leaf etcThis would provide a list of all ports, and show all name changes.
I can't imagine that I'll be the first person to ever want this, so maybe something similar exists? But, if not, can I get some pointers for the best way to proceed using verilog-perl tools? Is verilog-perl suitable for this problem?
Thanks
Replies (7)
RE: Need a "simple" connectivity report - Added by Wilson Snyder about 1 year ago
Given the structural & no concats & presumably no cell arrays etc, yes it can do this. Someone probably has, but I don't have an example.
You'd just need to iterate on each cell recursively, building a cell scope ("top.foo") then in that routine loop over each signal putting into a hash everything that connects. At pins you'd connect the hashes of the submodule and module together ("top.sub.pin" -> "top.signal_from_pin"), then recurse over the signal hash to print your report.
RE: Need a "simple" connectivity report - Added by easily confused about 1 year ago
I'm not quite sure what all that means yet, but I'm sure it will help once I get started.
While I'm waiting for IT to get the package installed, I have a question about the Verilog options. Does Verilog::Netlist parse the standard command line options, such as -f and -v and define? (you show -y and and incdir, so I'm hoping it does).
I'm not sure how to get the file reading started if all my files come from the -f filelist option.
Typically I use a command like verilog -f filelist.f and it all happens automagically.
Thanks for the help.
RE: Need a "simple" connectivity report - Added by Wilson Snyder about 1 year ago
You can install it yourself, see Installing.
Then download the kit and look at the Verilog::Getopt manpage and the t/41_example.t file.
RE: Need a "simple" connectivity report - Added by easily confused about 1 year ago
I don't have root access, and didn't want to mess with setting it up otherwise, so I waited for IT to do it.
I'm trying to parse a large design just to better understand the limitations of the tools. It seemed to do very well.
It only got the following error:parameter tpw_PGM = 25000.0:50000.0:100000.0; %Error: ../../../design/otp/rtl/slp/vlg/slp_tsmc180g33_8kx8_cm16d_ae.v:63: syntax error, unexpected ':', expecting ';'This parameter is a 3 part delay delay parameter which needs :.
I haven't started traversing yet.
Thanks
RE: Need a "simple" connectivity report - Added by easily confused about 1 year ago
I'm playing with the show_hier example in Verilog::Netlist. I'm a bit confused regarding the best way to eliminate modules with `celldefine from the report. I can see that there is a callback in Verilog::Parser, and also in Verilog::Preproc.
If I decided I wanted to use the callbacks from Verilog::Parser (for that or any other reason), would I have to parse each file in addition to the parsing already done by Verilog::Netlist? Or is there a way to get those callbacks through Verilog::Netlist.
Thanks
RE: Need a "simple" connectivity report - Added by easily confused about 1 year ago
I got the preproc define callback to work. I guess I went down the wrong path since the define callback won't help me with `celldefine. Can you point me in the best direction to determine which modules have `celldefine when using Verilog::Netlist?
Thanks
RE: Need a "simple" connectivity report - Added by Wilson Snyder about 1 year ago
$module->is_libcell will be set if it's inside a `celldefine. Sorry it seems to be missing from the docs, I'll add it.
(1-7/7)
![[logo]](/img/veripool_small.png)