问题标签 [system-verilog-assertions]
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.
properties - 我可以在一个循环中生成多个 SystemVerilog 属性吗?
我有两个打包的信号数组,我需要为该属性创建一个属性和相关的断言,以证明这两个数组在某些条件下是相同的。我正在正式验证,该工具无法证明单个属性中的两个完整数组,因此我需要将其拆分为单个元素。那么有没有一种方法可以使用循环为数组的每个元素生成一个属性?目前,我的代码非常冗长且难以导航。
我的代码目前如下所示:
这就是我希望我的代码看起来像的样子:
system-verilog - 如何避免最后的断言(如果我理解正确的话)
我正在关注http://verificationguild.com/modules.php?name=Forums&file=viewtopic&p=5019来检查特定信号的周期。该方法效果很好,但是在模拟的最后,如果断言被posedge(活动边缘)踢出,它基本上会失败,因为没有下一个边缘。
请考虑以下示例:测试台时钟以 2MHz 运行,更新时钟(我已经写过断言)以 5Hz(周期 200ms)运行以进行特定测试。假设模拟运行了 500 毫秒,断言在 400 毫秒时被踢失败。
我应该如何避免这种情况?
verilog - SVA(SystemVerilog 断言):$assertoff 和 $assertkill 之间的区别?
$assertoff;
SystemVerilog Assertions和有什么区别$assertkill;
?
他们似乎都停止了断言的执行。
system-verilog - SVA:使用暗示(|=>)与序列?
SystemVerilog 断言属性可以使用隐含运算符|=>
和序列构建##1
例如 :
上面我们使用A ##1 B
了作为启动序列(前件)和C ##1 D
完成序列(后件)。
我不明白为什么它不能被重写为:
您何时以及为什么会选择暗示|=>
而不是序列##1
?
testing - 使用 System-Verilog 进行串行测试和断言
我有一个 verilog 模块的串行输出,我想使用 system-verilog 进行测试。
给定正确的串行输入“SI”,其值为 8'h9A,称为“SO”的输出将输出类似 8'hC6 的内容。
有没有一种简单的方法来编码/解码串行 IO,而不必明确描述每个信号?
例如:
它看起来像一团乱麻,几乎不可读。我很想写
但显然这不起作用。任何建议或示例都将受到欢迎。提前致谢。
verilog - 在递归属性中使用队列
我有一些来自 1 位串行端口的数据,这些数据以不同长度的字节的倍数出现,如下所示:
在每个正时钟沿,发送一位。我需要测试数百个序列(将来可能有数千个),所以我想用系统 verilog 中的断言来自动化这个过程。新的 2012 标准允许将队列传递给属性,但是可以通过递归属性发送队列吗?我收到了一些关于分层参考的错误。
这就是我到目前为止所拥有的(在@Greg here的帮助下):
在我的测试台中调用断言应该像这样简单:
错误消息如下:
我对断言长可变长度串行序列的其他想法持开放态度。
system-verilog - 用于握手的 SVA
我正在尝试为握手过程编写 SVA 断言。
在我的搜索中,我发现了以下内容:
但是,在有效周期变高后,允许我的“完成”信号出现多个周期。您如何做出此声明以确保在断言valid 之后的任何时候都断言“done”,而不会取消断言 valid?
system-verilog - verilog 断言:暗示的前件永远不满足
如果模块被禁用,我会收到以下消息:
暗示的前件永远不满足
是否有标志(或任何其他方式)来关闭上述消息?
system-verilog - 系统verilog断言触发器==1 信号断言前4个周期
我将如何编写 SVA 来检查 sig 是否变高,触发器是否在 4 个周期之前trigger [*4] |-> signal
为高还不够好,因为它没有检查信号在 3 个周期内没有变高。我应该$past
如何使用?
system-verilog - 我可以在生成块中使用绑定吗
我有一个简单的断言:让我们说
我通常使用单独的绑定模块将它与设计信号连接起来
我有一个情况:dut 有一个 45 位的总线,每个位都是单独生成/驱动的,但它们都遵循相同的断言。
我可以在生成块中使用绑定语句吗?(范围为 0 到 44)然后代替 .* 使用.a (in_bus[i]), .b (out_bus[i])