创建在 Verilog 中设置的定期任务



我想在verilog模块中创建一组具有不同周期和执行时间的定期任务,该任务将创建,因此将操作某种操作,并应在一定时间段后执行...

所以,在更高级的语言中,比如在c中

func()
{
for(;;)
}
and sleep()

我想,我会使用那个func()作为操作和睡眠()之后。这个 func() 应该再次调用...这是在Verilog中这样做的正确方法吗?我还可以测量测试平台中的执行时间和周期吗?模拟后..任何建议都会非常有帮助

问候

像...

`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时钟脉冲的数量。

最新更新