问题标签 [uvm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
system-verilog - 如何摆脱 uvm-1.2 中的 tr_db.log?
默认情况下,UVM-1.2 会生成一个文件“tr_db.log”。
在生成此文件时运行长时间模拟非常不方便。
我怎样才能禁用它?
system-verilog - UVM:将序列拆分到不同的子序列器上
在 DUT 上,我有两个通道,每个通道由一个数据接口和一个边带接口组成。沿着这些通道发送的事务必须按顺序发送,但一个通道可能会在另一个通道赶上时停止。IE:我在通道 0 下发送交易 A,在通道 1 下发送交易 C,但在通道 0 收到交易 B 之前,通道 1 不会接受交易 C。
此外,数据接口可能比每个通道上的边带接口慢,并且某些边带事务不需要与它们一起发送数据。
目前,测试设置为创建单独的数据和边带序列,将它们放入队列中,然后将队列拆分为多个通道并发送它们。然而,随着通道上的接口变化和每个配置的通道数量变化,这变得难以维护。所以理想情况下,我想编写测试序列,以便它不知道有多少通道或者什么接口需要抽象事务的数据。
顶部序列应该只生成这样的序列:
这种方法的问题是我不希望一个通道阻塞另一个或一个接口阻塞另一个,除非两者都被阻止。如果我使用像上面这样的虚拟序列,open_data_stream_sequence
当我想将数据传输到另一个通道时,该单个通道可能会停止,send_data_sequence
或者它可能会在边带接口上停止,但我想将send_data_sequence
数据事务传输到同一通道的数据接口。
但是,我正在努力弄清楚如何在子序列器之间实施仲裁。我考虑过序列分层和使用fifos,仅当所有接口都在一种中间层饱和时才停止。我缺少什么 UVM 技巧吗?
verilog - 在 VCS 中获取系统时间
有没有办法在 VCS/UVM 中获取系统时间?我正在寻找类似于 Perl 的东西localtime(time)
。有没有办法为每个uvm_info
打印的打印系统时间?
system-verilog - 用于序列的 uvm set_inst_override
我正在尝试按实例覆盖序列。一个示例代码将最好地描述它:
我的目标是只覆盖seq2
(seq3
其类型扩展seq2
的类型)。我没有收到任何错误,但原始序列运行,我做错了什么?
提前致谢,
伊扎尔
system-verilog - UVM_INFO 返回一个 HEX 值
我使用这个命令在 Questasim 中打印事务类的内容:
我的交易有一个变量ans
。问题是它打印为十六进制而不是十进制。
表明:
ans integral 8 'h1c
我怎样才能让它显示为:
uvm - 在 Questasim 10.2 窗口中安装 UVM 1.2
我已经从 Accellera 网站下载了 UVM 1.2。我使用的是 Questasim 10.2,我的 UVM 版本是 1.1d。
现在我将 UVM 1.2 文件夹复制到C:\questasim_10.2c
. 然后我改变了
排队modelsim.ini
到
但是现在 Questasim 显示找不到库的错误。如何解决这个问题并在 Questasim 中安装 UVM 1.2?
system-verilog - UVM 共享变量
我对UVM有疑问。假设我有一个带有两个接口的 DUT,每个接口都有它的代理,用相同的时钟生成事务。这些事务由记分板上的分析导入(和写入函数)处理。我的问题是这两个事务都读取/修改记分牌的共享变量。
我的问题是:
1)我是否必须通过信号量明确地保证互斥?(我想是的)
2) 一般来说,这是一种正确的方法吗?
3)和主要问题,可以以某种方式固定执行顺序吗?
根据该顺序,共享变量的值可能会发生变化,从而产生不一致。此外,该顺序由规范固定。
提前致谢。
specman - Specman e vr_ad:如何使用 read_reg_field?
在UVM e Reference
文件中写道:
但是没有使用read_reg_field的例子......你能解释一下它应该如何使用吗?
(我尝试了下一个代码,但它给出了编译错误
some_var = read_reg_field my_reg_file.my_reg {.my_reg_field}
:)谢谢你的帮助。
specman - Specman UVM:直接访问寄存器和使用 read_reg_val() 有什么区别?
我正在为 e 使用 vr_ad 包。我在以下位置定义了一个my_reg
寄存器vr_ad_reg_file my_reg_file
:
我想访问寄存器的值。直接访问寄存器有什么区别(如果有的话):
并使用以下方式访问寄存器read_reg_val()
:
谢谢您的帮助。
system-verilog - UVM virtual sequencer: choose the right child sequencer
I have a question about virtual sequencer in UVM. Let's think that I have N equal interfaces driven by N equal drivers, each one connected to its own sequencer. What I want to do is to have a transaction like:
that when executed with `uvm_do() is sent to the driver number num_if. My idea is that for this kind of work I need a virtual sequencer that "forward" the transaction to the right sequencer (the number num_if). Is this right? If yes, how it could be done? Thanks.