- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 SystemVerilog 中的竞争条件有疑问,尤其是在 UVM 中。在标准情况下,我们拥有多个驱动程序,它们在时钟的同一前端驱动我们的任务,在记分板中生成一些函数调用。这些调用是同时发生的,它们检查/修改黄金引用模型中的一些共享变量是现实的。如果这些操作是用非阻塞赋值来完成的,那就没有问题,但是阻塞赋值可能会出现竞争条件。克服这个问题的最佳方法是什么?要实现不在类中的黄金引用模型?
提前致谢
记分板的伪代码示例可以是:
function void write_A(input TrA A);
if(GRF.b >= 100 && A.a==1)
GRF.c = 1;
endfunction
function void write_B(input TrB B);
GRF.b+=B.b;
endfunction
最佳答案
这里的问题是您正在尝试使用行为代码模拟 RTL 行为。您在多个线程中使用多个函数,并以随机顺序在同一时钟沿调用它们。除了对您的操作强制执行命令外,此问题没有任何解决方案。
最简单的方法是将记分板中的所有@(posedge clk) 线程合并为一个线程。这将迫使您每次都以相同的顺序调用函数。
所以代替
@(posedge clk)
write_A(A);
@(posedge clk)
write_B(B);
@(posedge clk) begin
write_A(A);
write_B(B);
end
关于system-verilog - UVM 阻塞赋值竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26940115/
在我的 Testbench 中,我有一个需要驱动的接口(interface)。该接口(interface)可以在 2 种不同的模式下驱动,每种模式都有自己的驱动程序协议(protocol)和事务类型。
您能否帮助理解以下功能和之间的明显区别: uvm_analysis_export uvm_analysis_port uvm_analysis_imp 我在网上查了一下,有一些解释,比如: https
我对UVM有疑问。假设我有一个带有两个接口(interface)的 DUT,每个接口(interface)都有它的代理,用相同的时钟生成事务。这些事务由记分板上的分析导入(和写入函数)处理。我的问题是
我的芯片中有一个小块的 UVM 测试台。其中有一个带有驱动程序的代理,该驱动程序在虚拟接口(interface)上驱动数据,如下所示: interface my_if (input bit clk);
我对 SystemVerilog 中的竞争条件有疑问,尤其是在 UVM 中。在标准情况下,我们拥有多个驱动程序,它们在时钟的同一前端驱动我们的任务,在记分板中生成一些函数调用。这些调用是同时发生的,它
我有以下代码块,其中触发了语法错误: virtual task body(); forever begin my_transaction m_req; // Blockin
是否有一种简单的方法可以在不操作 UVM 库的情况下将自定义函数搭载到 UVM_ERROR 宏中?(即,每当在环境中的任何位置调用 UVM 错误时,我希望我的函数一起被调用与它。) 最佳答案 我自己还
我在 uvm_agent 中实现了一个从模型。 “奴隶”是指它不能自己发起交易。事务始终由另一方(主 DUT)发起。所以它是一种被动代理(尽管它仍然能够传输回复数据包)。 当从设备检测到来自 DUT
对于使用 `uvm_field_queue_int 实用程序宏的 UVM 对象,调用 my_object.print() 时,UVM 不会打印出整个队列 # ---------------------
对于使用 `uvm_field_queue_int 实用程序宏的 UVM 对象,调用 my_object.print() 时,UVM 不会打印出整个队列 # ---------------------
我在 uvm-systemc-1.0-alpha1 库的 objdir 中的 make check 中遇到以下错误。 ../configure make make install 命令工作正常。另外,
我需要调用哪些函数才能在 Systemverilog/UVM 中使用正则表达式? 注意:我不是问如何使用正则表达式,只是问方法名。 最佳答案 首先,如果您想使用正则表达式,您需要确保您使用的是与其 D
我正在阅读以下指南: https://colorlesscube.com/uvm-guide-for-beginners/chapter-3-top-block/ 代码 3.2 第 24 行- run
我正在阅读以下指南: https://colorlesscube.com/uvm-guide-for-beginners/chapter-3-top-block/ 代码 3.2 第 24 行- run
我有一个用 RAL 建模的大寄存器映射,我想随机化一些寄存器。如果我想单独限制寄存器,那么这很简单: reg_model.register_a.randomize() with {value > 5;
我对 UVM 中的虚拟音序器有疑问。假设我有 N 个由 N 个相等的驱动程序驱动的接口(interface),每个接口(interface)都连接到自己的音序器。我想要做的是进行如下交易: c
我在 DUT 中有 5 个 SRAM 实例(== 5 个不同的二维数组)(全部在 verilog 中)。我想从 UVM 测试平台对这些阵列进行后门加载。 SRAM 阵列上有多个驱动程序,来自 DUT
我正在为 e 使用 vr_ad 包。我在 vr_ad_reg_file my_reg_file 中定义了一个寄存器 my_reg: reg_def MY_REG MY_REG_FILE 20'h000
我正在寻找方法来禁用 side uvm 组件中的断言以进行某些测试。下面的简单代码代表我的环境,并附有要求注释。我以为我可以使用 $assertoff。如果需要额外的仪器来实现这一点,我可以修改 uv
我从 Intel 下载了 Modelsim,免费版(Modelsim-Intel FPGA 版)。免费版本是 Ubuntu 64 位 LTS 上的 32 位 Modelsim 版本。我通过安装 apt
我是一名优秀的程序员,十分优秀!