如何判断SystemVerilog中某个模块的输出是否与其中一个输入直接相连?如何将模块的输出连接到其输入?
它取决于使用的建模级别吗?如果是,切换级别的正确方法是什么?
module abc (input in1, in2, output out1, out2, out3);
// out3 needs to be directly connected to in1
// ...
endmodule
如何判断SystemVerilog中某个模块的输出是否与其中一个输入直接相连?如何将模块的输出连接到其输入?
它取决于使用的建模级别吗?如果是,切换级别的正确方法是什么?
module abc (input in1, in2, output out1, out2, out3);
// out3 needs to be directly connected to in1
// ...
endmodule
有很多方法可以做到这一点。但并非所有下游工具(如综合物理工具)都可以支持它。
这是做它的SystemVerilog
module abc (input in1, in2, output out1, out2, out3);
// out3 needs to be directly connected to in1
// ...
alias out3 = in1;
endmodule
用Verilog
module abc (input .in1(sig), in2, output out1, out2, .out3(sig));
wire sig;
// out3 needs to be directly connected to in1
// ...
endmodule
好的,但是你可以说'alias',或者'assign',或者将两个端口连接到内部网络比其他的SystemVerilog更好(除了工具的当前支持)? – user3900460
如果你想要一个交换级网表的直接连接,那么使用'alias'。你通过'assign'语句失去了力量传播。如果你正在编写RTL,那么'assign'就可以。 –
的方式,我认为你在寻找比传统的Verilog方法更系统的Verilog习惯的方法'分配OUT3 = in1;'? – Morgan
是的,SystemVerilog方式更可取。 – user3900460