问题标签 [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.
system-verilog - SVA - 有没有办法使用系统verilog断言检查可变长度串行输出中的可变变量模式?
例如,我有一个模式 pt=1101 需要在串行输出 s_out= 1011101110111011 (LSB 优先)中进行检查。我试图检查“s_out”中的“pt”只使用SVA而不使用always块。注意:pt 和 s_out 的长度都是可变的。
我正在尝试对 pt 和 s_out 长度使用两个计数器,但我不知道如何在 SVA 中使用它们。
任何建议都会很有帮助。谢谢你,苏珊
system-verilog - 何时在断言中使用带有信号的 $rose 系统任务
我试图了解何时$rose
在断言中使用信号。例如,以下两个断言将以什么方式表现不同?
是$rose
要与异步信号一起使用吗?
system-verilog - SystemVerilog 断言错误:非法使用非常量表达式
SLV_DCR_TIMEOUT_WAIT 是寄存器中编程的值,因此它不是一个常数值。我如何在断言中使用它。
错误信息 :
错误-[SVA-INCE] 非法使用非常数表达式
/lsi/designs/rsd_megatron/team/singhs/megatron/sim/testbench/mss_tb/interfaces/mss_internal_signal_if.sv, 41
mss_internal_signal_if, "DCR_TIMEOUT_WAIT"
使用非-对于延迟和重复范围等情况,属性、序列和断言中不允许使用常量表达式。
请用精化时间常数替换有问题的表达式。
system-verilog - SystemVerilog 中的 $stable 是否在总线上运行?
我想验证总线在断言中是否稳定。例如,如果在下降沿data
之后时钟发生变化,我希望以下断言标记错误。re
我相信$rose
它只在总线的 LSB(链接)上运行。是否$stable
也只在 LSB 上运行,还是支持任何宽度的信号?
system-verilog - 断言以验证信号中的毛刺
可以说有一个信号a
。当信号变高时,它必须至少在三个正时钟沿保持高电平。
我们可以将属性写为
对于以下情况,该属性失败。
时钟_ _ _ | = = = | _ _ _ | = = = | _ _ _ | = = = | _ _ _ | = = = |
一个_ _ | = = = | _ _ | = = = = = = = = = = = = = = = = = =
这不符合规范,其中 a 在中间变低,但会被下一个姿势拉高,因此上述断言不会抓住这一点。
谁能告诉是否有任何方法可以编写断言来捕获这个错误?
谢谢
fpga - Can I access delayed value in SystemVerilog assertion
I want to use an old value of a signal in a SystemVerilog assertion.
This is what I am currently doing
Is this how is should be done, or can I somehow use an old version of rdaddress
directly in the assertion?
verilog - 我如何将 PSL 或 SVA 活性断言/属性翻译成 Verilog?
如何手动或使用(开源)工具自动将 PSL 或 SVA 活性断言翻译成 verilog?我可以做简单的安全属性,但我对活性属性一无所知。我知道一些商业工具有这个功能来检查 Verilog 设计,但我无权访问它们。
例如,我想将 PSL 中的活性断言翻译assert always req -> eventually! ack;
成等效的 Verilog 电路,以便我可以使用一些工具来模型检查该属性是否存在。
- 进行了编辑,将“是否可以翻译...”改写为“我如何翻译”,谢谢 ira!
system-verilog - 宽度可配置时如何编写脉冲宽度systemverilog断言
场景是:信号active
可以是 1 个周期、2 个周期、3 个周期或 4 个周期宽,具体取决于config[1:0]
模块的输入
为此编写属性的最简单方法是:
但它在语法上是错误的。写这个断言的正确方法是什么?
system-verilog - 如何在 systemverilog 断言中使用整个运算符
这是一个规范:如果信号a
被断言,那么它必须被断言直到信号b
被断言,然后它应该在下一个时钟沿取消断言。我正在阅读 LRM 的 16.9.9 (以及http://www.testbench.in/AS_06_SEQUENCES.html)以及我理解它的方式,上面提到的规范可以写成
然而,这在启动后的第二个时钟边沿立即失败,我不知道为什么。
system-verilog - 系统verilog断言禁用条件
我有这个断言是为了检查 clk 频率:
在 disable_check 被置位后,fast_clk 在仿真期间(而不是从开始)开始切换。问题是断言似乎忽略了disable_iff
问题:即使断言被禁用(或者我是否遗漏了其他东西?),是否“注册”了一个 $rose(clk_1Mhz) 事件