在 System Verilog 中,如何使用循环创建参数化类的对象数组?

问题描述 投票:0回答:0

我修改了dave_59this answer中编写的代码块,以创建一个病态案例来说明我的问题:

virtual class base;
  ???
endclass
class my_class#(int width) extends base;
      typedef bit [width-1:0] vec_t; 
      virtual function vec_t get_zeros();
          vec_t x = '0;
          return x;
      endfunction
endclass
base  my_array [1:3];
initial begin
           my_array[1] = my_class#(1)::new;     
           my_array[2] = my_class#(2)::new;     
           my_array[3] = my_class#(3)::new;         
           ...

有没有办法循环执行上述操作?像这样的东西是我想要的,虽然它不起作用,因为 SV 需要静态定义类参数:

    for (int i=1; i<=3; i++)
        my_array[i] = my_class#(i)::new;

我认为生成块会起作用,但我无法弄清楚编译的语法。我也不确定基类中需要什么(或者我什至是否需要基类)。

system-verilog
© www.soinside.com 2019 - 2024. All rights reserved.