Verilog 使用带魔杖的inout

Verilog 使用带魔杖的inout,verilog,inout,Verilog,Inout,考虑下面的代码 模块三态 ( //输出 啊,, //伊努特 木卫一, //投入 OE,我 ); 参数宽度=1; 输入OE; 输入[width-1:0]I; 输出[width-1:0]O; inout[width-1:0]IO; 分配IO=(OE)?I:{width{1'b1}}; 分配O=IO; 端模//三态 模块m1(.a(输入输出线_P1$IO)); reg val_P1; 电线P1$IO,电线P1$O; 三态#(.宽度(32'd1))线SCL(.I(val_P1), .OE(1), .O(

考虑下面的代码

模块三态
(
//输出
啊,,
//伊努特
木卫一,
//投入
OE,我
);
参数宽度=1;
输入OE;
输入[width-1:0]I;
输出[width-1:0]O;
inout[width-1:0]IO;
分配IO=(OE)?I:{width{1'b1}};
分配O=IO;
端模//三态
模块m1(.a(输入输出线_P1$IO));
reg val_P1;
电线P1$IO,电线P1$O;
三态#(.宽度(32'd1))线SCL(.I(val_P1),
.OE(1),
.O(第1$O行),
.IO(第1行$IO));
始终@(*)开始

val_P1此语法不正确:

module m1(.a(inout line_P1$IO));
你应该这样做

module m1(.a(line_P1$IO));
    inout line_P1$IO;
在ansi标准中,它应该是

module m1(inout .a(line_P1$IO));

虽然我在“vcs”中尝试了ansi版本,但没有在那里实现。非ansi工作。

剪切和粘贴错误?这段代码不编译(参见定义m1的那一行),并且没有任何东西被声明为魔杖。
module m1(inout .a(line_P1$IO));