基本上,在System Verilog中以编程方式指定扇出的最佳实践是什么?
module fanout
#(
parameter N = 4
)
(
input i,
output j [N-1:0]
);
always @ (*) begin
for (int k = 0; k < N; k++) begin
j[k] = i;
end
end
endmodule
这允许输出向量的宽度为参数 - 这有什么问题吗?这个合成会好吗?
答案 0 :(得分:3)
您可以使用复制运算符。这允许您复制一个固定次数的值并将它们连接起来。
示例(请注意,您需要将输出更改为打包数据类型output [N-1:0] j
:
module fanout
#(
parameter N = 4
)
(
input i,
output [N-1:0] j
);
assign j = {N{i}};
endmodule
EDA游乐场上的可运行示例:http://www.edaplayground.com/x/9vn
答案 1 :(得分:1)
您可以在分配模式中使用default
module fanout
#(
parameter N = 4
)
(
input i,
output j[N]
);
assign j = '{default:i};
endmodule