繁体   English   中英

SystemVerilog 计算就在写入时钟块之前

SystemVerilog calculations right before writing to clocking block

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个任务,它的工作是通过时钟块将数据驱动到总线上。 见片段:

task effects_driver::ReadQueueData();
  stream_intf_.cycles(); // clocking block event
  if (sample_q_.size() >= 2) // check to see if there is enough data in the queue
    begin
      automatic bit [31:0] sample0, sample1;
      sample0 = sample_q_.pop_front(); // read from queue
      sample1 = sample_q_.pop_front(); // read from queue
      stream_intf_.cb.AXIS_TDATA <= {sample1, sample0}; // drive two samples at once
      stream_intf_.cb.AXIS_TVALID <= 1;
    end
  else
    ...
endtask

您会注意到,在将其写入时钟块之前,我需要从队列中读取几个项目。 这是正确的方法吗? 我是否保证模拟器会在将自动变量写入时钟块之前对自动变量执行这些阻塞分配?

谢谢!

PS 我半频繁地遇到这种情况——在写入时钟块之前,我需要即时进行一些快速计算。

1 个回复

我相信您的意思是问“我是否保证模拟器会在将自动变量写入时钟块之前对自动变量执行这些阻塞分配?” 因为这就是您的代码正在做的事情。

答案是肯定的,保证在执行后面的语句之前完成阻塞赋值。

另请注意,无需使用自动生命周期声明sample0sample1 ,因为类方法始终具有自动生命周期。 在其中声明的变量是隐式自动的。

1 Systemverilog中时钟块的使用

System Verilog中Clocking Blocks的确切用法是什么?它与正常的@(posedge clk)块有什么不同? 一些差异,我知道: Clocking Block对来自Preponed Region的输入数据进行采样,而在正常的始终阻塞中,始终存在竞争条件的可能 ...

2 Systemverilog中的多个时钟断言

这是设计代码: 如何为“Out”写Assertion,因为它是一个多时钟设计。 我试过一个,但仍然有一些错误。 请帮我修改这个断言或写另一个断言: 注意 :使用always block和单个时钟断言,我们可以验证输出端口。 但是如果可能的话,我希望通过多锁断言来实现它, ...

3 驱动输入时钟输出

我有一个具有8位输入和串行输出的模块,我想对输入数据进行序列化并将其与时钟同步。 我想在下降沿设置数据,然后在时钟上升时等待,当时钟再次下降时,我设置另一个数据。 我不想将直接参考时钟连接到输出,因为当我不使用此模块时,我希望时钟输出为1状态。 我已经试过这段代码: 合成器 ...

5 移植SystemVerilog风格的时钟分区并驱动到SystemC

我正在将System Verilog模型移植到SystemC,我不确定模拟这种锁相环时钟驱动方案的最佳方法。 在我看来,在SV中驱动时钟是一个手动过程,SystemC为内核提供了一种方法。 但我不知道SystemC如何支持在我正在研究的S​​V模型中手动完成的那种时钟分频。 考虑这个简 ...

6 SystemVerilog:使用写指针写入数组

想象一下,我有一个特定的字节缓冲区和该缓冲区的写指针,例如: 其中wptr指向缓冲区中我要存储传入数据的下一个位置。 现在,假设我的输入数据也是一个字节块,例如: 与M &lt; N 。 如果我编码如下: 一切正常,除了wptr &gt; NM的明显例外,这在我的应用程序中永远不会发 ...

7 systemverilog比较两种等待信号的方式; 1)@(时钟条件),2)while(!条件)@(时钟);

我正在寻找对系统接口方法的直觉理解,该方法等待接口上的某些信号,以便1)在监视器中捕获事务,或2)响应来自DUT的某些信号来驱动事务。 假设DUT声明就绪信号,并且驱动程序必须在声明有效信号的同时背对背驱动两个数据拍(值1和2),以便DUT知道何时捕获数据。 我知道有两种方法等待DUT的 ...

9 在施加力之前分离 SystemVerilog 网络

我想从我的测试台强制一个信号向下一个层次结构。 模块是根据原理图自动创建的(无法更改设计),并且它们主要基于wire类型。 可以在EDA playground上找到代码示例。 如果我在dummy3强制A ,它将改变dummy2和dummy1 A ,这是预期的。 我想知道如果有分离的方式A在du ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM