现在我试图了解一些verilog代码,如下所示,
dataproc #(10) proc01
(
.dout (dout01[9:0]),
.clk (clkin01),
.rst_n (rst_in01_n),
.din (dout[9:0])
);
实际上我没有达到这个目的
这是什么? verilog的目的是什么?#(10)
我通常按以下方式使用
dataproc u_dataproc
(
...
...
)
但我以前从未见过
#(10)
我已经更新了模块。
module dataproc
#(parameter w = 1)
(
input clk,
input rst_n,
input [w-1:0] din,
output wire [w-1:0] dout
);
reg [w-1:0] NP_dout;
assign dout = NP_dout;
endmodule
答案 0 :(得分:0)
它是parameter
,您在制作模块实例时会覆盖它。
假设你有一个类似下面的模块。
module temp();
parameter a = 2;
bit [a-1:0] b1;
endmodule
现在,如果您获取上述模块的实例并想要更改默认参数值(这反过来会更改该模块的底层硬件),那么您可以执行以下操作。
module abc();
temp t1();
temp #(4) t2(); // Changes the default parameter value
initial
begin
$display("Size of t1.b1 - %0d", $size(t1.b1));
$display("Size of t2.b1 - %0d", $size(t2.b1));
end
endmodule
// Output
Size of t1.b1 - 2
Size of t2.b1 - 4
请注意,参数必须在运行时或之前具有值 在详细阐述时间。因此,您无法在模拟过程中更改参数 运行