为什么模块之间没有连接?

Why are modules not connected to each other?

提问人:MohammadReza 提问时间:11/23/2021 最后编辑:toolicMohammadReza 更新时间:11/27/2021 访问量:63

问:

我必须在 Active HDL 12 中进行 Verilog 编码,但我不知道为什么这三个模块在顶部模块中没有相互连接。

顶部模块 '时间刻度 1 ns / 1 ps

module Main (Mx1,Mx2,Mx3,Mx4,My);
input Mx1;
input Mx2;   
input Mx3;
input Mx4;
output My;

wire  interface1;
wire interface2;

And a1(.X (MX1),.Y (MX2),.O1 (interface1));
Or o1(.X1 (MX3),.Y1 (MX4),.O2 (interface2));
Xor x1(.X2 (interface1),.Y2 (interface2),.O3 (My));
   
endmodule

And模块

`timescale 1 ns / 1 ps

module And ( X ,Y ,O1 );

input X ;
input Y ;
output wire O1 ;

    assign O1 = X & Y;

endmodule

Or模块

`timescale 1 ns / 1 ps

module Or ( X1 ,Y1 ,O2 );

input X1 ;
input Y1 ;
output wire O2 ;

    assign O2 = X1 & Y1;

endmodule

Xor模块

`timescale 1 ns / 1 ps

module Xor (X2,Y2,O3);

input X2;
input Y2;
output O3;

    assign O3 = X2 ^ Y2;

endmodule

在输出中,我根本没有看到答案。

Verilog Active-HDL

评论


答:

2赞 toolic 11/23/2021 #1

Verilog 区分大小写。这意味着 和 是两个不同的信号。例如,输入未连接到模块。解决此问题的一种方法是更改:MxMXMxAnd

And a1(.X (MX1),.Y (MX2),.O1 (interface1));
Or o1(.X1 (MX3),.Y1 (MX4),.O2 (interface2));

自:

And a1(.X (Mx1),.Y (Mx2),.O1 (interface1));
Or o1(.X1 (Mx3),.Y1 (Mx4),.O2 (interface2));

某些模拟器会生成警告消息。例如,Cadence 模拟器(在 edaplayground 上可用)显示以下警告:

And a1(.X (MX1),.Y (MX2),.O1 (interface1));
                      |
xmelab: *W,CSINFI : implicit wire has no fanin (Main.MX2).

帮助识别此类常见错误的另一种方法是在代码中使用此编译器指令:

`default_nettype none

在这种情况下,模拟器应生成编译错误。