我正在使用iverilog模拟器,我想在编译期间传递值N。我需要使用哪个命令,有人可以帮助我使用 吗`define?
`define N
module Nbcd(A, B ,S);
input [N*4-1:0] A,B;
output[N*4-1:0] S;
genvar i;
generate
for(i=0; i<=N-1; i=i+1)
bcd (.A(A[4*i+3:i*4]),
.B(B[4*i+3:i*4]).
.S(S[4*i+3:i*4])
);
endgenerate
endmodule
Run Code Online (Sandbox Code Playgroud)
试验台
module Nbcd();
reg [N*4-1:0] A,B;
wire [N*4-1:0] S;
integer i;
Nbcd U1 (.A(A),.B(B),.S(S));
initial begin
for (i=o; i<=N-1; i=i+1)
begin
A=i;
b=i+1;
end
endmodule
Run Code Online (Sandbox Code Playgroud)
我相信大多数模拟器都允许-define命令行选项。
irun test.sv -define N=0
Run Code Online (Sandbox Code Playgroud)
iverilog使用略有不同,-Dkey=value即
-DN=0
Run Code Online (Sandbox Code Playgroud)
要使用`define(勾选定义),您需要在其前面放置一个勾选,因此`N当您想要使用命令行提供的值时使用,例如:
module Nbcd(A, B ,S);
input [`N*4-1:0] A,B;
output[`N*4-1:0] S;
Run Code Online (Sandbox Code Playgroud)
我在 EDA Playground 上有一个工作示例,iverilog 版本为 0.9.7。该值通过命令行提供-DN=10,并使用在模拟中显示该值$display("N : %d", `N);。
您可能还想添加以下代码,以便它可以在没有命令行选项的情况下运行或提醒用户这是必需的:
`ifndef N
`define N 0
`endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4646 次 |
| 最近记录: |