首先,我想在系统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 ...等],我拉出字符串值并在实例名称中输入它们,以便最终结果如下所示:
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?
答案 0 :(得分:1)
第一:你不需要字符串。 attributedString.mutableString.replaceOccurrences(of: "@", with: "", options: NSString.CompareOptions(rawValue: 0), range: NSMakeRange(0, attributedString.mutableString.length));
可以让你接近你想要的东西
else if(id==share){
Intent sharingIntent = new Intent("android.intent.action.send");
sharingIntent.setType("text/plain");
sharingIntent.putExtra("android.intent.extr.TEXT", "Theshared text");
startActivity(Intent.createChooser(sharingIntent, "Share Using"));
}
这会生成类似于您实例化的代码,如下所示
genvar
请注意,[0]和[1]嵌入在符号实例名称中,您不能像在数字索引中那样使用表达式来评估0和1。
第二:无法使用字符串构建实例名称。你能做的最好的事情就是定义一个宏
genvar i;
generate
for (i=0; i<7; i=i+1)
begin : IBUFDS_
IBUFDS clk
(
.I (input1_reg[i]),
.IB (input1b_reg[i]),
.O (output_reg[i])
);
end
endgenerate