我的 System-Verilog 代码很大一部分使用参数来定义不同的等待时间,例如:
int unsigned HALF_SPI_CLOCK = ((SYSTEM_CLK_PERIOD/2)*DIVISION_FACTOR); //DEFINES THE TIME
Run Code Online (Sandbox Code Playgroud)
现在,由于我在文件中定义了时间刻度,我可以直接使用这些参数来引入等待周期:
`timescale 1ns/1ns
initial begin
#HALF_SPI_CLOCK;
end
Run Code Online (Sandbox Code Playgroud)
现在我希望各地都有指定时间的延误。意味着即使我更改时间尺度,模拟仍然会尊重所有计时。我想保留参数,但只要有等待语句,我就需要指定时间。就像是
#(HALF_SPI_CLOCK) ns;
Run Code Online (Sandbox Code Playgroud)
但这不被 Modelsim 接受。有没有办法在 System-Verilog 中将参数或 Unsigned int 转换为时间类型的变量?有没有办法指定时间单位?我环顾四周但找不到任何解决方法。我想控制时间并使其独立于timescale is because I intend to change the时间尺度的原因是为了让我的模拟更快。非常欢迎其他建议或想法*
可以在 SystemVerilog 中将时间作为参数传递,例如:
module my_module #(time MY_TIME = 100ns);
initial begin
#MY_TIME;
$display("[%t] End waiting", $time);
end
endmodule
Run Code Online (Sandbox Code Playgroud)
或者使用乘法来获得正确的时间单位,例如:
module my_module2 #(longint MY_TIME = 100);
initial begin
# (MY_TIME * 1us);
$display("[%t] End waiting 2", $time);
end
endmodule
Run Code Online (Sandbox Code Playgroud)
请参阅 EDA Playground 上的可运行示例:http ://www.edaplayground.com/x/m2
| 归档时间: |
|
| 查看次数: |
9526 次 |
| 最近记录: |