假设我有一个输入为
N
module foo (
input wire [N-1:0] x,
input wire y
);
foo u__foo (
.x(x),
.y(x == something)
);
我想举例说明
M
M*N
wire [M*N-1:0] x;
foo u__foo [M-1:0] (
.x(x)
)
但我想对每一个都做一个逻辑运算
不
男*女
genvar i;
generate
for (i = 0; i < M; i = i + 1) begin
foo u__foo (
.x(x[i*N +: N]),
.y(x[i*N +: N] == something)
)
end
endgenerate
或者在一个循环中计算并连接起来:
reg [M-1:0] y;
always @* begin
for (i = 0; i < M; i = i + 1) begin
y[i] = x[i*N +: N] == something;
end
end
foo u__foo [M-1:0] (
.x(x),
.y(y)
)
我也知道我可以把一个新的输入和做比较内的
foo
但我不能修改
.
有没有语法糖,这意味着我可以做得更干净一点,这样我就不需要创建一个循环,工具将自动分割总线,并在每个节点上执行操作
不
位?我正在努力防止我的代码变得笨拙。如果有一个SystemVerilog解决方案,只要它是可合成的,它就可以工作。
foo u_foo [M-1:0] (
.x(x),
.y(x[N-1:0] == something)
)
提前谢谢!