如何在verilog中使用带数组的force?
我想通过verilog中派生的多个实例强制一些信号,如下所示如何在verilog中使用带数组的force?,verilog,Verilog,我想通过verilog中派生的多个实例强制一些信号,如下所示 integer ii; initial begin for (ii=0; ii<19; ii=ii+1) begin force sydnney.top.vx1.mpg.jpg[ii].trig.be[3] = 1
integer ii;
initial begin
for (ii=0; ii<19; ii=ii+1) begin
force sydnney.top.vx1.mpg.jpg[ii].trig.be[3] = 1'b1;
end
end
这是不可能的使用方式吗
更新
我使用下面的方法时出现了一些错误
generate
wire val;
genvar xidx;
for(val=0; val<3; val=val+1) begin : force_be3y_loop
#10
for(xidx=0; xidx<3; xidx=xidx+1) begin : force_be3x_loop
initial force top.comp.img.tc[xidx].t1c.b2tc = val;
initial force top.comp.img.tc[xidx].t1c.b2tc[23] = val;
initial force top.comp.img.tc[xidx].t1c.b2tc[22] = val;
initial force top.comp.img.tc[xidx].t1c.b2tc[21] = val;
initial force top.comp.img.tc[xidx].t1c.b2tc[20] = val;
end
end
endgenerate
我做错什么了吗
更新2
我的原始概念如下:
整数二
initial begin
for (bb=0; bb<3; bb=bb+1) begin
#10
for (ii=0; ii<19; ii=ii+1) begin
force sydnney.top.vx1.mpg.jpg[ii].trig.be[3] = bb;
...
end
end
初始开始
对于(bb=0;bb层次引用的模块部分必须是常量。您不能在模拟时循环遍历阵列模块实例的索引或生成for循环。您可以在编译的细化阶段使用生成for循环遍历它们
generate
genvar gidx;
for(gidx=0; gidx<19; gidx=gidx+1) begin : force_be3_loop
initial force sydnney.top.vx1.mpg.jpg[gidx].trig.be[3] = 1'b1;
end
endgenerate
生成
genvar-gidx;
对于(gidx=0;gidxCan't我不能在generate语句中使用wire吗?我已经更新了问题。您不能使用wire作为循环索引。#10
需要位于过程块内;generate for循环的begin
-end
不是过程。您需要解释为什么需要强制内部信号以及您的意图是什么在此之前,我可以建议一个更完整的解决方案。我需要在程序块中运行它。运行覆盖率。强制内部信号以改进覆盖率收集是完全错误的方法。覆盖率是通过端口上的刺激来实现的。如果你无法获得所需的覆盖率,那么你没有应用足够的刺激,或者条件是不真实的我知道这是完全理解的,但这是我们唯一的选择。
initial begin
for (bb=0; bb<3; bb=bb+1) begin
#10
for (ii=0; ii<19; ii=ii+1) begin
force sydnney.top.vx1.mpg.jpg[ii].trig.be[3] = bb;
...
end
end
generate
genvar gidx;
for(gidx=0; gidx<19; gidx=gidx+1) begin : force_be3_loop
initial force sydnney.top.vx1.mpg.jpg[gidx].trig.be[3] = 1'b1;
end
endgenerate