问题标签 [e]
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.
specman - Specman e:如何将变量中的详细信息传递给 message() 操作?
我需要使用变量设置消息详细程度,例如:
此代码导致下一个编译错误:
但实际上即使我将详细程度定义为常量字段:
我有同样的编译错误。
如何将消息详细程度通过变量传递给message()
操作?
谢谢您的帮助
specman - Specman e:有没有办法将 simple_port 的 hdl_path 连接到否定的 verilog 端口?
我有一个signal_map
带复位端口。许多环境都使用本signal_map
机。问题是复位端口总是低电平有效,但在一种环境中它是高电平有效。对于所有将复位端口称为低电平有效的环境,已经有很多通用逻辑,我想按原样使用。我可以将端口连接到否定的verilog端口(它将解决我所有的问题)?像这样的东西:
附加的复杂性:signal_map
单位已经有hdl_path
,即实际reset_port.hdl_paht()
是"~my_design_module.some_long_path.reset_port_in_verilog"
你会怎么做?感谢您的任何帮助
verification - Specman 对变量、十进制与十六进制值的软选择
这里有两个类似的约束块,一个使用十进制表示法,另一个使用十六进制表示法。第一个按预期工作,但第二个仅在 5 个可用值中生成正值(包括 0):
如何使第二个示例与第一个示例一样,但保留十六进制表示法。我不想写大的十进制数。
specman - Specman e:“keep type .. is a”无法细化字段的类型
我的验证环境中有下一个代码:
请注意,keep type driver is a..
由于没有必要在driver
' 行开始var foo..
但是,keep type driver is a..
不影响some_event
,即如果as_a
从行中删除强制转换,则会出现编译错误'driver' does not have 'some_event' though its subtype do. use driver.as_a(SPECIFIC_TYPE sequence_driver)
。
为什么keep type driver is a..
无法投driver
下线some_event..
?
谢谢您的帮助
specman - Specman e:如何打印变量的地址?
是否可以在 Specman e 中打印变量的地址,因为它可以在 c 中完成:
谢谢您的帮助
specman - Specman e:如何从序列中锁定驱动程序的项目队列?
在我的验证环境中,很少有序列在同一个驱动程序上同时运行(与其他序列的项目相关的项目何时获得总线无关)。
但是,现在我需要添加额外的序列,它将与其他序列同时运行,执行原子读取-修改-写入。我的新序列看起来像这样:
问题是在read_item
和之间write_item
,来自其他序列的项目得到总线。您知道如何从序列中锁定驱动程序的项目队列吗?所以我可以防止其他序列在我的读写项目之间添加他们的项目?
谢谢您的帮助
verification - 写入两个不同寄存器之一但具有相同字段的序列
我正在使用与 UVM 不兼容的旧环境,但使用 vr_ad_reg。这个旧环境的一个问题是,不是为其中一个模块实例化 regfile 两次(在 RTL 中确实实例化了两次),而是对整个 regfile 和其中的寄存器进行双重定义。
例如,我有两个 regfile:“GAD”和“GAD_RX”,它们都有一个这样定义的寄存器:
如您所见,regs 是相同的。我不希望替换整个定义,因为它基于也生成 RTL 的脚本,并且尝试重写它们太麻烦和风险。但是,我确实希望能够通过将它们约束到任一 GAD 来编写一个可以写入它们的序列。
我为写入这些寄存器的所有序列定义了一个结构成员:
我尝试用宏声明寄存器变量但完全失败:
宏应该在序列主体内以这种方式使用:
我希望能翻译成:
或者:
它适用于 GAD,但不适用于 RX_GAD,经过多次调试,我推断出 gad_type 没有正确匹配,并且宏只是在条件赋值中使用 else 子句。
我决定尝试一种不同的方法而不使用宏,我尝试在序列本身中使用“when”子句:
这不会编译,因为编译器无法识别 'when' 子句之外的 gad_seq_r 。
我不知道在为 GAD 和 RX_GAD 复制代码之外是否有解决方案,但我想我可以在这里试一试。无论哪种方式,下一个项目我们将构建一个更可重用的寄存器数据库。
如果你能活到现在,谢谢你的关注。
aop - Specman/e 约束(对于每个 in)迭代
我可以在约束中仅遍历 e 中列表的一部分吗?例如,此代码将遍历整个 layer_l 列表:
但是,我只想通过例如 2 个项目来迭代 for each。我尝试了下面的代码,但它不起作用:
我也不想使用暗示,所以这不是我想要的:
specman - 如何逐个运行e文件?不平行测试
我是 Specman 的新手,我现在正在编写一个测试平台,我想提供许多特定的测试用例来调试计算器。
例如,
我有两个文件,第一个名为“test1”,第二个名为“test2”。这是我的“test1”代码:
这是我的“test2”代码:
但是,当我尝试测试我的代码时,specman 显示错误,看来我不能那样做。有什么可能的方法可以让specman先执行“test1”文件然后运行“test2”文件?或者如果有其他方法可以实现我的目标?
谢谢你的帮助。
specman - 如何将 32 位数字的每个位与另一个 32 位数字进行比较?
我正在考虑将 32 位数字的每个位与另一个 32 位数字进行比较。
其中dout_1、din1_1 和din2_1 都是32 位无符号整数。我想检查 dout_1 的 12 位到 7 位的每一位是否等于 (ins.din1_1 + ins.din2_1) 结果的 12 位到 7 位的每一位。
我怎样才能做到这一点?