关于tb中force signal的问题?
时间:10-02
整理:3721RD
点击:
假如在tb中有如下instantiation,wire b;
module_a module_a(
.a_in(b);
);
然后
force module_a.a_in = 0;
这样的话, b的值会不会也被force为0啊?
module_a module_a(
.a_in(b);
);
然后
force module_a.a_in = 0;
这样的话, b的值会不会也被force为0啊?
若a_in是输module_a的输入,b不会被force
是输出则会一同被force
当然会了,因为你是force net,所以与之相连的线网都会被强制赋值的,不过该输入信号的输出源头不受影响
比如:
module xx_top();
wire b;
initial
force block1.in = 0;
block0 block0 (
.out(b), //output port
);
block1 block1 (
.in(b), //input port
);
endmodule
那么,结果就是:
xxx_top.b, xxx_top.block1.in被强制赋值为0;而xxx_top.block0.out仍然保持原值
谢谢回复啊,懂了!那如果是在同一个module里的应该也是会被force为0的对吧?
比如
module xx_top();
wire b;
initial
force block1.in_1 = 0;
block0 block0 (
.out(b), //output port
);
block1 block1 (
.in_1(b), //input port
.in_2(b),//input port
);
endmodule
那么,结果就是:
xxx_top.b, xxx_top.block1.in_1, xxx_top.block1.in_2被强制赋值为0;而xxx_top.block0.out仍然保持原值
对吧?
其实只要理解了force的含义及其作用域,就很容易了