genvar系统verilog用于编号信号,并在实例名称中以字符串形式传递

时间:2017-06-13 21:33:48

标签: loops system-verilog

首先,我想在系统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?

1 个答案:

答案 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