问题标签 [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.

0 投票
1 回答
2850 浏览

system-verilog - 我可以从字符串派生一个寄存器名称(在 regmodel 中可用)吗

我有一个简单的序列

让我们考虑一下我在 regmodel 下有 8 个寄存器。REG0, REG1, REG2,....,REG7 我想将数字作为测试加参数传递,比如 +NUM=4

使用 $sformat 或 $psprintf,我可以创建具有正确寄存器名称的字符串变量,例如

现在我有 regName 但我不能使用以下内容:

regName 是字符串类型,而 regmodel 没有任何寄存器名称 regName,还有其他方法可以实现吗?我正在查看 get_name, get_full_name 但在这种情况下这些都无济于事。

现在我可以有 if - else 8 次或一个 case 语句,但是对于大量寄存器来说真的很不方便。

0 投票
1 回答
563 浏览

verification - 在 UVM 中组合驱动输入信号(在同一周期中)

如果我想根据 UVM 驱动器中设计的某些输出组合驱动设计输入信号,最好的方法是什么?如果我在运行阶段实现它并查看设计输出信号,我会在时钟的下一个上升沿看到它,对吗?这会浪费一个周期。

例如 rd 输入信号被随机置位设计;除非空为高,否则应在同一周期中取消断言。

0 投票
3 回答
3754 浏览

system-verilog - 如何检查是否连接了UVM分析端口?

通常,我们的 UVM 模拟会因签名而失败,我们最终会调试到未连接的分析端口。

有没有办法预先检查分析端口是否在之前连接run_phase

0 投票
3 回答
1630 浏览

inner-classes - UVM 是否支持嵌套/内部类?

我们验证环境的代码指南是每个文件一个类。

有时 auvm_object只有 1 other 需要uvm_component,因此,遵循面向对象的理论,我们应该使用嵌套/内部类。

SystemVerilog 完全支持嵌套类。但是,它们是否受 UVM 支持?

是否可以编译如下内容:

目前上面的代码给出了一个编译错误:

完整代码示例:http ://www.edaplayground.com/x/3r8

0 投票
1 回答
10967 浏览

printing - 如何使用 UVM 实用程序功能打印整个队列/数组?

对于使用`uvm_field_queue_int实用程序宏的 UVM 对象,UVM 在调用时不会打印出整个队列my_object.print()

让 UVM 打印整个队列的最佳方法是什么?

EDA Playground 上的示例代码:http ://www.edaplayground.com/x/rS

0 投票
1 回答
3422 浏览

system-verilog - 我们如何在使用 NCSIM 运行仿真时增加功能覆盖率

我正在尝试使用 Cadence 的 NC 工具运行覆盖回归。我可以看到 RTL 覆盖,但记分板上的功能覆盖缺失。如何将此记分板添加到covdutNCSIM 参数中的选项?记分牌包含封面组。

0 投票
2 回答
1721 浏览

class - SystemVerilog:向工厂注册 UVM 测试

我对以下用于向工厂注册 UVM 测试的 SystemVerilog 构造感到困惑:

这里我们有一个类 random_test 的定义,在定义内部我们调用一个方法,而它的参数是正在定义的类。所以这是我的问题:

  1. 甚至在从random_test`uvm_component_utils类构造任何对象之前就在时间 0 调用?
  2. 我们如何`uvm_component_utils在该类定义中传递一个类?

谢谢。

0 投票
1 回答
3215 浏览

system-verilog - 限制对类中虚拟接口信号的访问

我想知道是否有可能以某种方式确定开发人员是否错误地在 UVM 驱动程序内部写入 DUT 输出信号而不是输入信号。我已经尝试过了,没有编译/运行时错误消息。示例在这里(试用是在我的机器上用 Incisive 完成的,后来上传了代码):

http://www.edaplayground.com/x/386

'some_signal' 上的分配模拟 DUT 输出(连续驱动器)。每当我尝试从类中驱动“some_signal”时说信号是多重驱动的,但类驱动程序“获胜”并更新信号时,我会预料到会出现运行时错误。

前段时间,当我刚开始做 SV 时,我玩过 modports。我会在 modport 中声明一些信号作为输入,但我注意到驱动它们仍然是合法的。之后我停止使用它们。显然这是众所周知的事情,正如这篇文章所说:https ://verificationacademy.com/forums/systemverilog/modports-sv

我最近从一位同事那里继承了一些在类中使用 modports 的代码。我制作了以下示例来说明该代码的作用:

http://www.edaplayground.com/x/2W_

我尝试在这两个类中使用 modports,但 ModelSim 抱怨不应该在分层路径中使用 modports。Incisive 的代码没有问题,也没有发出任何警告。ModelSim 错误,以及 2012 年标准中的这句话“为了限制模块内的接口访问,有 modport 列表以及在接口内声明的方向。” 有点暗示 modports 并不是真的打算在类中使用。

有人可以确认 modports 不是去这里的方式吗?另外,有谁知道是否可以以任何方式捕获此类错误(从类中驱动 DUT 输出)?

0 投票
1 回答
1069 浏览

system-verilog - UVM 相位单例

在浏览了一下 UVM 源代码后,我注意到每个阶段都存在单例。对于运行阶段,这可以通过调用来访问uvm_run_phase::get()

我尝试uvm_run_phase::get()从 run_phase 和 end_of_elaboration 阶段调用,并且正如预期的那样,两个调用都返回了同一个对象的句柄。我有点困惑,因为此方法返回的对象与传递给run_phase(...)任务的对象不同,因为它是阶段参数。

我在 EDA Playground 上创建了一个示例:http ://www.edaplayground.com/x/2PL

有谁知道传递给阶段方法的阶段参数是什么以及为什么它不是单例?

0 投票
2 回答
1894 浏览

verilog - SVA:SV 断言期间的时钟门控

我有一个 SV 断言,它检查如下属性

我有如下断言:

在这里,场景是,前件为真,后件在 1 到 100 个时钟周期之间进行检查。在先行之后,由于时钟门控,时钟停止了一段时间,然后时钟再次开始滴答作响。信号my_prio[rx_prio]在时钟门控之后但在 100 个时钟周期内再次置位。但我仍然得到断言失败。

无法弄清楚失败的问题。断言检查之间的时钟门控是否有问题?还是其他原因失败?谢谢。