Ich suchte auf SO, und im Web, nirgendwo gefunden die ans. Ich habe folgenden Code, wo es erfolgreich geparst `define und generieren Sie die erwarteten Ergebnisse, aber wenn die Anzahl der Aufrufe von Makro ist dann groß, Können wir Looping Construct?.For loop in `define Makro
`define myreg(name) \
addr_``name
`define para(i) \
parameter `myreg(i) = i
module register;
`para(1);
`para(2);
`para(3);
`para(4);
initial
begin
$display("ADDR1 = %d, ADDR2 = %d", addr_1, addr_2);
$display("ADDR3 = %d, ADDR4 = %d", addr_3, addr_4);
#100 $finish;
end
endmodule
Simulation Ergebnis:
// # Loading work.register(fast)
// # run -all
// # ADDR1 = 1, ADDR2 = 2
// # ADDR3 = 3, ADDR4 = 4
// # ** Note: $finish : reg.v(18)
Nun, wenn ich for-Schleife verwenden, wie in folgenden Code,
`define myreg(name) \
addr_``name
`define para(i) \
parameter `myreg(i) = i
module register;
genvar i;
generate
for (i = 1; i<=4; i=i+1)
begin
`para(i);
end
endgenerate
initial
begin
$display("ADDR1 = %d, ADDR2 = %d", addr_1, addr_2);
$display("ADDR3 = %d, ADDR4 = %d", addr_3, addr_4);
#100 $finish;
end
endmodule
In diesem Fall ist es zeigt einen Fehler beim Anzeige oder Verwendung, Simulationsergebnis:
// # vsim -lib work register -c -do "run -all; quit -f" -appendlog -l qverilog.log -vopt
// # ** Note: (vsim-3813) Design is being optimized due to module recompilation...
// # ** Error (suppressible): (vopt-7063) reg.v(24): Failed to find 'addr_1' in hierarchical name '/addr_1'.
// # ** Error (suppressible): (vopt-7063) reg.v(24): Failed to find 'addr_2' in hierarchical name '/addr_2'.
// # ** Error (suppressible): (vopt-7063) reg.v(25): Failed to find 'addr_3' in hierarchical name '/addr_3'.
// # ** Error (suppressible): (vopt-7063) reg.v(25): Failed to find 'addr_4' in hierarchical name '/addr_4'.
// # Optimization failed
// # Error loading design
Es wird mehrmals gefragt, aber die richtige Lösung wird von niemandem gegeben, jede Hilfe wird sehr geschätzt.
"Verwenden Sie einen anderen Makro-Präprozessor, um Ihren Code zu generieren. Dies kann das Debuggen erschweren, da Sie zwei Gruppen von Quellcodedateien verwalten müssen." Können Sie ein Beispiel oder einen Code angeben? –
http://en.nothingisreal.com/wiki/GPP –
Können Sie mir bitte sagen, wie kann ich das verwenden * vlog -E *? –