system-verilog - 在 systemverilog 中,有没有办法以类型为条件?

标签 system-verilog parameterized-types

所以我在公共(public)模块中使用参数化类型。

有没有一种说法: if( type == TYPE1 ) 以一种方式分配结构 else if( type == TYPE2 ) 以另一种方式分配

我在生成 block 中想象了这一点。

最佳答案

是的,您可以使用类型运算符执行生成 if/case 或过程 if/case,例如:

real r;

if ( type(r) == type(real) ) ...

但不幸的是,无论条件如何,所有分支中的代码仍然必须成功编译。您将无法引用不存在的结构成员。

  typedef struct {int a;} s1_t;
  typedef struct {int a;int b;} s2_t;
  s1_t s;
 initial
      #1 // procedural-if
    if (type(s) == type(s1_t))
      $display("%m s.a = %0d",s.a);
    else if (type(s) == type(s2_t))
      $display("%m s.b ==%0d",s.b); // this will not compile 

关于system-verilog - 在 systemverilog 中,有没有办法以类型为条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40496074/

相关文章:

java - 提取参数化类型的值时,将参数化类型类参数转换为子类形式

java - 当 bean 类实现也扩展了某些参数化接口(interface)的参数化接口(interface)时,CDI bean 类型解析问题

verilog - 非阻塞分配在 Vivado 仿真中立即分配

java - getActualTypeArguments 与父级,从子级获取其参数化类型

verilog - 模块输出中的串联

system-verilog - SystemVerilog : implies operator vs. |->

java - 如果 <T> 不是输入参数,参数化方法如何解析?

verilog - 如何使用 don't cares 参数化 case 语句?

verilog - 将位/逻辑向量的 SystemC 结构安全地转换/转换为单个位/逻辑向量