The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Jul 18th, 2024, 12:35pm
Pages: 1
Send Topic Print
Netlisting failed using Verilog-A block (Read 8994 times)
aliasnikhil
New Member
*
Offline



Posts: 9

Netlisting failed using Verilog-A block
Jan 27th, 2013, 2:41pm
 
Hi,

I am trying to run simulations on a mixed-signal design using Verilog-A block behaviour modelling. But when I try to netlist, I get the following error:
"Netlisting failed as function hnlNetNameOnTerm was called on currect instance ... in design ... Ensure that argument to this function is a valid terminal name and netlist again."

My design contains 2 instances on same multi-bit registers (I6 & I7) and this error message is shown after each time I netlist after modifying the Verilog-A code. I also have one more Register (I12) instantiated which is also a Verilog-A block but has different bit width. They all have different inputs.
I am not using any `define statements in these instances that may cause problems. the other flipflop (I12) of different width on modifying and netlisting again doesn't show this error but then my original flipflop instances (I6 and I7) now behave as having same bit-width as the I12.
They have same terminal names but different bit-widths. Isn't it okay to use "D<1:N>" as terminal name for all registers? I mean many blocks have same names like "clk" on them. Shouldn't thatt cause same conflicts too, in case that my current problem is on similar lines.

Thanks

-Nikhil
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: Netlisting failed using Verilog-A block
Reply #1 - Jan 29th, 2013, 6:12am
 
How are you specifying the different bit-width of the different instances?

Perhaps you should show us at least the declaration lines of your module:

module XXXX ( terminals )
inout terminals;

etc.  What is "N" in the "D<1:N>" -- a number or a parameter?
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
aliasnikhil
New Member
*
Offline



Posts: 9

Re: Netlisting failed using Verilog-A block
Reply #2 - Jan 29th, 2013, 9:44am
 
My module is defined this way:
{
`include "constants.vams"
`include "disciplines.vams"
`define N 20  //Number of D Flipflops in this register array

module DFF_Array_20bits(q, qb, clk, d);
output [N:1] q, qb;
electrical [N:1] q, qb;

input [N:1] d;
electrical [N:1] d;

input clk; electrical clk;
...
....
...
...

endmodule
}

Now, I instantiate 3 such modules in my schematic. Two of them have 20 bit-width and the third one having bit-width of 6. But soon I realised that the `define was global and was taking the smallest value i.e. 6 from the 3rd Flipflop instance. So I replaced N everywhere with the number of bits and I was now left with 2 separate modules. One with bit-width of 20 and another with bit-width of 6 with no global `define to mess around.

Now, I instantiate 2 flipflop arrays with 20 bit-width each (same module twice) since I need a total of 40 bit-width and the other module (with different terminal and part names) for 6 bit-width. I could have changed the bit-width inside the module to 40 directly, but I wanted to know the reason for this happening so that I can figure out if the like happens in the future.

Here is my take on the issue: The 2 modules of bit-width 20 each have same terminal names (d<20:1> and q<20:1>) but have different wires connected at the input.
The function called 'hnlNetNameOnTerm' mentioned in the netlisting error is said to do the following: "Returns the signal name of the net attached to the given bit of the terminal of the given name on the current instance being expanded. This function guarantees the same name is returned even if the net is aliased, and this function is later called with a terminal attached to one of the aliases of this net"

I think the 2 instances of same module might be causing the problem. Both have input terminal name as (d<20:1>) where as the wires attached to them are P<20:1> and P<40:21> respectively. But don't many instances have same terminal names? like 'clk' and other such common names? What seems to be the real problem and how do I fix it?

-Nikhil
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: Netlisting failed using Verilog-A block
Reply #3 - Jan 31st, 2013, 5:57am
 
It sounds to me that your netlisting code is broken.

I would suggest testing this with a very simple subcircuit: make a schematic with 20 inputs, all tied with a resistor to ground, and then make the corresponding symbol and instantiate it twice, in place of the Verilog-A modules (one getting P<20:1> and the other P<40:21>).  Does this netlist correctly?

If you take out the 20-bit modules and just have the 6-bit, does that netlist properly?  Do you have a symbol for this Verilog-A module?  Do the pins of the symbol have the correct bit-width?  (How did you set that?)
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.