通过 SystemVerilog 中的端口映射将总线传递到另一个模块
Passing bus to another module via port mapping in SystemVerilog
我在 SV 模块中有以下代码,我在其中实例化另一个 SV 模块并将 5 位总线传递给它以检查 X 和 Z,代码如下:
input [4:0] analdo_trim;
cds_XZ_checker XZ_check_analdo_trim (.in(analdo_trim),.in_ok(analdo_trim_ok));
这是 cds_XZ_checker
的模块定义:
module cds_XZ_checker(in,in_ok);
input in;
output bit in_ok;
always_comb begin //Asynchronous assertion check block
asynch_XZ_check: assert (!($isunknown(in))) in_ok=1'b1;
else begin
$warning ("WARNING (%M) digital signal in=%b is undefined at time %t",in,$time);
in_ok=1'b0;
end//else
end
endmodule
问题是当我通过 in
端口读取上述模块中的 5 位 analdo_trim
时,它只读取 analdo_trim
的 LSB。知道为什么没有使用上述语法传递整个 5 位数组吗?
您将模块输入声明为 1 位宽。您需要将其声明为 5 位宽。变化:
input in;
至:
input [4:0] in;
现在将通过 5 位总线检查 X 和 Z。你的是声明中的一个小错误
module cds_XZ_checker(in,in_ok);
input [4:0] in;
output bit in_ok;
always_comb begin //Asynchronous assertion check block
asynch_XZ_check: assert (!($isunknown(in))) in_ok=1'b1;
else begin
$warning ("WARNING (%M) digital signal in=%b is undefined at time %t",in,$time);
in_ok=1'b0;
end//else
end
endmodule
我在 SV 模块中有以下代码,我在其中实例化另一个 SV 模块并将 5 位总线传递给它以检查 X 和 Z,代码如下:
input [4:0] analdo_trim;
cds_XZ_checker XZ_check_analdo_trim (.in(analdo_trim),.in_ok(analdo_trim_ok));
这是 cds_XZ_checker
的模块定义:
module cds_XZ_checker(in,in_ok);
input in;
output bit in_ok;
always_comb begin //Asynchronous assertion check block
asynch_XZ_check: assert (!($isunknown(in))) in_ok=1'b1;
else begin
$warning ("WARNING (%M) digital signal in=%b is undefined at time %t",in,$time);
in_ok=1'b0;
end//else
end
endmodule
问题是当我通过 in
端口读取上述模块中的 5 位 analdo_trim
时,它只读取 analdo_trim
的 LSB。知道为什么没有使用上述语法传递整个 5 位数组吗?
您将模块输入声明为 1 位宽。您需要将其声明为 5 位宽。变化:
input in;
至:
input [4:0] in;
现在将通过 5 位总线检查 X 和 Z。你的是声明中的一个小错误
module cds_XZ_checker(in,in_ok);
input [4:0] in;
output bit in_ok;
always_comb begin //Asynchronous assertion check block
asynch_XZ_check: assert (!($isunknown(in))) in_ok=1'b1;
else begin
$warning ("WARNING (%M) digital signal in=%b is undefined at time %t",in,$time);
in_ok=1'b0;
end//else
end
endmodule