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

0 投票
2 回答
7523 浏览

verilog - `define 宏的范围

这个问题是关于系统verilog宏的。
我有一个顶级模块、子模块和一个子子模块。在子模块中实例化的子模块在顶层模块中实例化。

如果我在子模块中定义一个宏`define abc ,里面写的代码`ifndef abc会在顶层模块/子子模块中编译吗

0 投票
2 回答
482 浏览

verilog - Verilog 中的可合成延迟

我想合成一个 SystemVerilog 代码,它的延迟写为 ##1 但合成器会给出语法错误,因为延迟是不可合成的。我想知道有什么方法可以给延迟合成吗?例如,这是代码中带有延迟的 SystemVerilog 断言

断言属性 ( ( req1 == 0 ) ##1( req1 == 1 ) ##1 !( req2 == 1 ) || ( gnt1 == 0 ) );

我怎样才能在不丢失其行为的情况下合成它?

0 投票
1 回答
213 浏览

delay - 将 SystemVerilog 断言与延迟转换为 invarspec

我想将延迟的 SystemVerilog 断言转换为形式验证器的 invarspec。合成器在下面的代码行中给出 ##1 的语法错误。

有几个属性需要验证并且有延迟。我目前正在尝试使用合成器将它们转换为正式(SMV)模型规范,该合成器适用于不涉及延迟的属性。我可以为这个正式的验证工具建模延迟吗?如果是这样,怎么做?

0 投票
1 回答
181 浏览

system-verilog - 对于具有相似序列的系统verilog功能覆盖箱会有问题吗?

  • zzzz 是一个计数器寄存器,根据其输入从 0 计数到 3、4、9、17、18 或 19
  • 在对这个功能覆盖进行编码时,想法是如果发生一系列特定的转换,则命中任一 bin,仅命中一个 bin。

  • 因此,例如,如果像在 sequence_2 中那样从 0 到 4 的转换,那也会命中 sequence_1,因为 0 到 3 序列存在于 sequence_1 中

谢谢

0 投票
1 回答
763 浏览

arrays - 将整数数组约束在一定范围内

全部,

我正在尝试提出一个 SystemVerilog 约束,例如byte my_array [0:8]循环遍历数组中的所有元素以将它们的值限制在 1 到 9 的范围内。类似于:

解析器不接受上述内容。请帮忙!我可以在一个循环中生成 9 个约束,但想要更优雅的东西。因此,以下是当前的解决方法。

谢谢!

0 投票
1 回答
259 浏览

system-verilog - 如果出现一个序列,则在 System-Verilog 断言中出现一个子序列

我想说:“如果序列A发生,那么序列就B出现在该序列中”。我怎样才能做到这一点?

我原以为我可以使用断言:

但这似乎不适用于我的示例。

我读过:

如果第一个布尔表达式在第一个时钟节拍处计算为真,第二个布尔表达式在第二个时钟节拍处计算为真,以此类推,直到并包括最后一个布尔表达式在最后一个时钟滴答时计算为真。

但我怀疑|->当我希望它成为第一个时钟滴答时,时钟滴答传递到了最后一个时钟滴答的另一侧。

我的特定示例是一个累加器,如果我添加足够多的正数,我希望它会溢出,所以我想要A = (input == 1)[*MAX_SIZE]and B = (output == 0),所以这B是一个长度为 1 的序列,我不知道这是否会导致问题。

我对 system-verilog 很陌生,所以它可能是我的代码的其他部分出错了,但我没有看到这个例子在任何地方完成。

0 投票
1 回答
325 浏览

system-verilog - 系统 verilog 2012 参考指南中关于 always_comb 中非阻塞的错误?和延迟断言属性标记?

2个问题

  1. 在系统 verilog 2012 参考指南中,有一个参考在 中编码时序逻辑always_comb,这可能吗,因为没有always_comb块的时钟参考 - 如此处所示 -> [在中的时序逻辑always_comb]

在此处输入图像描述

  1. 在 Synopsys Verdi 中使用系统 verilog 断言时,是否有可能在满足属性后半个或一个时钟周期后触发绿色箭头(表示满足断言的属性)

感谢:D

0 投票
1 回答
852 浏览

system-verilog - $past 带有输入信号

我想验证如果事件发生,那么在过去的“num_ticks”处,应该已经断言了一些信号。

例如,我写的属性是:

这里的问题在于num_ticks. 如果num_ticks是写入属性的模块的输入信号,则断言失败。如果我声明num_ticks为 int,并将其分配给常量,则它通过。

$past 仅适用于常量值吗?LRM 中没有提到这一点。

我正在使用 Questasim 10.3

0 投票
2 回答
726 浏览

system-verilog - 如何在序列块中使用 $display 语句,在 System Verilog Assertions (SVA) 中显示一些信息?

我希望序列块在执行时显示一些信息。

例如:

我尝试了这段代码,但遇到了以下错误:

任务 $display 在需要函数的地方调用。请更正任务调用并重新编译。

我该如何克服呢?

0 投票
1 回答
404 浏览

system-verilog - 系统verilog中连接数组的位宽

我有多个函数可以生成 1 位变量/定义/枚举的串联数组。每次发生连接时,我都想确保最终大小为 32 位宽。如果小于或大于 32 位,则标记错误。我尝试过 $bits、$size,但他们似乎想要一个变量并提供变量宽度而不是连接的宽度。这违背了目的。

任何帮助表示赞赏。

谢谢!

这就是我的想法:-例如。