gpt4 book ai didi

syntax - 如何忽略模块实例化的一个或多个输出总线引脚

转载 作者:行者123 更新时间:2023-12-04 01:34:00 28 4
gpt4 key购买 nike

我想忽略 SystemVerilog 中模块的数组参数中的一个或多个位。

module x(in a, out [0:3] z);
...
endmodule

module tb;
logic my_a;
logic [1:3] my_z;
// I want to stop having to do this next line:
logic ignore_this_bit;
x myx(.a(my_a), .z({ignore_this_bit, my_z}));
endmodule

执行此操作的正确语法是什么?我一直在这样做,如上所示,声明 ignore_this_bit并且永远不会连接到那个网络。但似乎应该有一个更简单的方法。就像在模块实例化的参数中只使用逗号而没有变量名,或者可能使用像 1'bX 这样的东西而不是输出参数位或类似的东西。

这是否受到我在这里对向量使用大端位排序这一事实的影响? (我讨厌它,但我正在为使用该排序的旧 CPU 构建代码,并且将我的代码与现有代码匹配比修复它更容易。)

这是一个很难搜索的概念,我已经尝试过了。有没有人有专业知识可以帮助我知道如何“以正确的方式”做到这一点?谢谢。

最佳答案

verilog 中没有特殊的方法可以忽略输出的位。因此,您将 concat 与不需要的变量一起使用是一种很好的方法( {ignore_this_bit, my_z} )。出于可读性原因,此变量的命名很重要。

它不受范围描述顺序的影响。看起来你忽略了最左边的位。无论您如何描述范围,位总是以相同的方式排序:

bits:   0011
[3:0]: 3 0
[0:3]: 0 3
concat: {ign, 0, 1, 1};

另一种方法是使用一个足够大的变量来连接到输出,然后使用它的位:
logic [1:3] my_z;
logic [0:3] their_z;
x myx(.a(my_a), .z(their_z));
assign my_z = their_z[1:3];

关于syntax - 如何忽略模块实例化的一个或多个输出总线引脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60234834/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com