我想要创建一组周期任务集,具有不同的周期和执行时间,在verilog模块中,该任务将创建这样将操作某种操作,并将在一定时期后执行。
所以,在高级语言中,如c
func()
{
for(;;)
}
and sleep()我想,我会用那个func()作为操作,然后再调用..this func() .在verilog这样做是正确的吗??同时也可以测量testbench...after仿真中的执行时间和执行周期。任何建议都是非常有用的。
问候
发布于 2013-12-28 14:08:23
就像..。
`timescale 1ns/1ns
always begin
// do stuff
# amount of nanoseconds to wait until next execution
end例如:这个周期性任务每1.5微秒增加一次变量counter。
`timescale 1ns/1ns
integer counter = 0;
always begin
counter = counter + 1;
#1500;
end如果不需要纳秒精度,可以使用不同的`timescale。例如,可以将前一个块编写如下:
`timescale 1us/1ns
integer counter = 0;
always begin
counter = counter + 1;
#1.5;
end编辑
重要的是要弄清楚,用#{insert_delay}表示的模拟延迟不能被合成。它们只应在测试工作台中用于模拟来自驱动程序的延迟。因此,您的func()和sleep()不是在一个测试平台中,它们需要被建模为某种计数器,然后重新设置,然后计算x的时钟脉冲数。
https://stackoverflow.com/questions/20811899
复制相似问题