Hello I have a verilogA module using multi-terminal ports and where I want to use for loops to assign all currents. I took care to use genvars, and I don't get any syntax error during the check after saving the verilogA view. However during simulation, spectre is aborting (very laconically, even if I use option +debug).
** Below the header of my module :
module qnrmesh2d(majport,minport);
// Majority carriers terminals
inout [1:`QNRMESH2D_NPORTS] majport;
electrical [1:`QNRMESH2D_NPORTS] majport;
// Minority carriers terminals
inout [1:`QNRMESH2D_NPORTS] minport;
electrical [1:`QNRMESH2D_NPORTS] minport;
...
** Below the declarations of my genvars :
genvar thisPort, otherPort, refPort;
** Below a typical set of loops
// Trick to define the reference port
for (refPort = `QNRMESH2D_NPORTS; refPort == `QNRMESH2D_NPORTS; refPort = refPort + 1) begin
// Generate the charge balance equations at all ports
for (thisPort = 1; thisPort < `QNRMESH2D_NPORTS; thisPort = thisPort + 1) begin
// Extract the quasi-Fermi potential and evaluate its exponential
Imref_min[thisPort] = sq_min*V(minport[thisPort],majport[thisPort]);
LimExpImref = limexp(Imref_min[thisPort]/$vt);
...
// Loop over all ports to compute the current in the selected port (thisPort)
for (otherPort = 1; otherPort < `QNRMESH2D_NPORTS; otherPort = otherPort + 1) begin
// Assign the drift majority current
I(majport[thisPort],majport[refPort]) <+ Gdrift_maj[`index2D(`QNRMESH2D_NPORTS,thisPort,otherPort)]
*V(majport[otherPort],majport[refPort]);
...
end
end
end
** ICFB message when saving :
veriloga Diagnostics: Warnings exist in veriloga text of cell qnrmesh2d.
Abort
** Spectre.out contains nothing beyond the lines "Loading ..lib...so"