gpt4 book ai didi

system-verilog - 在 System Verilog 中检测时间刻度

转载 作者:行者123 更新时间:2023-12-03 14:16:32 25 4
gpt4 key购买 nike

如何从源代码中检测模拟中使用的时间刻度精度?
考虑我有一个配置参数(cfg_delay_i),它是用户以时间单位给出的一些延迟值,如 fs .如果用户给出 1000 ,我的代码要等 1000fs 或 1ps 在进一步执行之前。

#(cfg_delay_i * 1fs );//will wait only if timescale is 1ps/1fs
do_something();

如果时间刻度精度为 1fs , 不会有任何问题,但如果精度高于它,它不会等待,它将作为 工作0 延迟 .
所以我想编写一个代码来确定用户使用的时间刻度并相应地给出延迟。我预期的伪代码如下所示,
if(timeprecision == 1fs )#(cfg_delay_i * 1fs ) ; 
else if(timeprecision == 1ps )#(cfg_delay_i/1000 * 1ps ) ;

请帮助我确定内部时间刻度单位和精度的逻辑。

最佳答案

你可以写if (int'(1fs)!=0) // the time precision is 1fs等等。但是没有必要这样做。

#(cfg_delay_i/1000.0 * 1ps)

无论精度是 1ps 还是更小,以上都有效。请注意实际文字 1000.0 的使用保持 split 真实。 1ps 已经是实数,所以整个表达式的结果都是实数。你也可以这样做
#(cfg_delay_i/1.e6 * 1ns)

如果此代码所在点的时间精度大于 1fs,则结果将四舍五入到最接近的精度单位。例如,如果 cfg_delay是 500,当前精度是 1ps,这将被四舍五入为 #1ps .

请注意用户设置 cfg_delay必须采取同样的措施以确保它们的值设置为正确的缩放/精度。

关于system-verilog - 在 System Verilog 中检测时间刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58178155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com