- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个打包的信号数组,我需要为该属性创建一个属性和关联的断言,以证明这两个数组在某些条件下是相同的。我正在正式验证并且该工具无法在单个属性中证明两个完整数组,因此我需要将其拆分为单个元素。那么有没有一种方法可以使用循环为数组的每个元素生成属性?目前我的代码非常冗长且难以导航。
我的代码目前看起来像这样:
...
property bb_3_4_p;
@(posedge clk)
bb_seq
|=>
bb_exp [3][4] == bb_rtl [3][4] ;
endproperty
property bb_3_5_p;
@(posedge clk)
bb_seq
|=>
bb_exp [3][5] == bb_rtl [3][5] ;
endproperty
property bb_3_6_p;
@(posedge clk)
bb_seq
|=>
bb_exp [3][6] == bb_rtl [3][6] ;
endproperty
...
...
assert_bb_3_4: assert property (bb_3_4_p);
assert_bb_3_5: assert property (bb_3_5_p);
assert_bb_3_6: assert property (bb_3_6_p);
...
for (int i = 0; i < 8; i++)
for (int j = 0; j < 8; j++)
begin
property bb_[i]_[j]_p;
@(posedge clk)
bb_seq
|=>
bb_exp [i][j] == bb_rtl [i][j] ;
endproperty
assert_bb_[i]_[j]: assert property (bb_[i]_[j]_p);
end
最佳答案
您可以尝试使用端口声明该属性,以便您可以将其重用于多个断言。然后使用生成循环声明您的断言。
module
...
property prop1(signal1,signal2);
@(posedge clk)
bb_seq
|=>
signal1 == signal2 ;
endproperty
...
generate
for (genvar i = 0; i < 8; i++)
for (genvar j = 0; j < 8; j++)
begin : assert_array
assert property (prop1(bb_exp[i][j],bb_rtl[i][j]));
end
endgenerate
...
endmodule
module
...
generate
for (genvar i = 0; i < 8; i++)
for (genvar j = 0; j < 8; j++)
begin : assert_array
assert property (@(posedge clk) bb_seq |=> bb_exp[i][j] == bb_rtl[i][j]);
end
endgenerate
...
endmodule
关于properties - 我可以在一个循环中生成多个 SystemVerilog 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12929887/
我为连接编写了如下代码,但显示错误: module main ; bit [4:0] a; reg b,c,d; initial begin b = 0; c =
我正在尝试创建一个 for 循环,在给定循环迭代的情况下将不同的值分配给逻辑数组。 因此,例如,假设我正在尝试实例化两个不同的积木,宽度均为 10,高度均为 5。我们还假设这些值中的每一个都是 10
我有一个 systemverilog 模块,它引用一个生成的头文件,其中包含各种类型定义和函数。这是可合成的代码。该模块之前工作正常,因为头文件是使用预处理器包含的。 现在我的架构发生了变化,我需要实
我将两种设计组合成一个单芯片设计。 RTL 代码是用 SystemVerilog 编写的,用于综合。不幸的是,这两种设计包含许多名称相同但逻辑略有不同的模块。 SystemVerilog 中是否有 n
我正在尝试在系统verilog中随机化3个不同的变量,但以循环方式。我的意思是,我有以下 3 个变量 rand int a; rand int b; rand int c; constraint c_
默认情况下,SystemVerilog 是按值还是按引用传递数组? 例如: int array[5] = '{0,1,2,3,4}; some_function(array); // <-- val
SystemVerilog 是否支持向下转型(将基础对象转型为派生对象)?如果是这样,怎么办? 下面的沮丧示例不起作用: class base; int a = 5; endclass class
这是设计代码: module mul_clock (input clkA, clkB, in, output out); bit temp; reg x[2:0]; always @ (p
我有 Verilog-95 背景,我正在尝试找出我不再需要跳过的 Verilog-95 障碍。 在 Verilog-95 中编写具有异步设置和复位功能的触发器的明显方法是: always @(pose
我在寄存器 block Regblock 中实例化了寄存器,如下所示: DUT.Regblock.Register1 DUT.Regblock.RegisterA DUT.Regblock.Regis
我正在尝试理解 SystemVerilog 中的向上转型和向下转型。向上转型是转换为父类(super class)型,而向下转型是转换为子类型。向上转型总是被允许的,但向下转型涉及类型检查。 所以我做
在 SystemVerilog 中有没有一种方法可以分析压缩结构并确定它的整体大小(以位为单位)? typedef struct packed unsigned { logic [15:0]
我经常使用 systemverilog。 我正在使用 UltraEdit 作为文本编辑器。我也使用 VIM。 有时我必须从其他地方复制代码并将其粘贴到我的代码中。 它可能没有正确缩进。再次正确缩进是一
我有两个打包的信号数组,我需要为该属性创建一个属性和关联的断言,以证明这两个数组在某些条件下是相同的。我正在正式验证并且该工具无法在单个属性中证明两个完整数组,因此我需要将其拆分为单个元素。那么有没有
有什么方法可以获取它在 SystemVerilog 中操作的对象的名称? 就像实现 object1.printName() 应该打印字符串 object1 最佳答案 不,语言中没有为类执行此操作的机
我正在尝试创建一个像这样的解包数组: logic [3:0] AAA[0:9]; 我想将此数组初始化为以下值: AAA = '{1, 1, 1, 1, 2, 2, 2, 3, 3, 4}; 为了提高效
我将一些 systermverilog 代码重写为 chisel,但我找不到在 chisel 中表达 systemverilog 的打包联合的好方法。例如, typedef struct packed
我正在尝试了解在 SystemVerilog 中应如何定义引脚。 我有: 一个普通的dataBus 一个 ramController 模块,可以在其 ioData 引脚上发送或接收数据。 一个可以写入
以下两个属性有何不同? property p1; @(posedge clk) disable iff (Reset) b ##1 c; endproperty property p2;
我正在尝试将一些 SystemVerilog 代码移植到 C++/SystemC,并且在我看到奇怪的数组索引的几行上有点卡住了。这是我所看到的简化版本。 typedef enum bit [2:0]
我是一名优秀的程序员,十分优秀!