【发布时间】:2017-06-13 21:33:48
【问题描述】:
首先,我想在系统 verilog 中使用 genvar 实例化一堆通用缓冲区,其中每个实例基本上包含索引的值,以使它们具有不同的名称,以便我可以将它们绑定到 8 位总线,一个每比特缓冲。
代码可能在语法上不正确,但这是我想要做的:
genvar i;
generate
for (i=0; i<7; i=i+1)
begin
IBUFDS IBUFDS_[actual_value_of_i_here]_clk
(
.I (input1_reg[fire_actual_value_of_i_here_starter]),
.IB (input1b_reg[actual_value_of_i_here_starter]),
.O (output_reg[actual_value_of_i_here_starter])
);
end
endgenerate
我希望最终结果看起来像这样,从 0 到 7。
IBUFDS IBUFDS_[0]_clk
(
.I (input1_reg[fire_0_starter]),
.IB (input1b_reg[fire_0_starter),
.O (output_reg[fire_0_starter)
);
IBUFDS IBUFDS_[1]_clk
(
.I (input1_reg[fire_1_starter]),
.IB (input1b_reg[fire_1_starter]),
.O (output_reg[fire_1_starter])
);
我不知道如何传入索引 i 以便它在实例名称中使用以及插入到它所连接的信号中。
第二: 我还想做一些更高级的事情,在实例名称中,我有一些包含 8 个值的数组,例如 farm_array[chicken, rooster, cow... etc],我提取字符串值并将它们输入到实例名称中,所以例如,最终结果如下所示:
IBUFDS IBUFDS_chicken_0_clk
(
.I (input1_reg[fire_0_starter]),
.IB (input1b_reg[fire_0_starter),
.O (output_reg[fire_0_starter)
);
IBUFDS IBUFDS_rooster_1_clk
(
.I (input1_reg[fire_1_starter]),
.IB (input1b_reg[fire_1_starter]),
.O (output_reg[fire_1_starter])
);
如何将字符串值从该数组传递到 genvar?
【问题讨论】:
标签: loops system-verilog