SystemVerilog typedef

在复杂的测试平台中,某些变量声明可能具有更长的数据类型规范,或者需要在测试平台的多个位置使用。

在这种情况下,我们可以使用typedef为现有数据类型提供用户定义的名称。 然后可以在整个代码中使用新的数据类型,因此,如果需要,可以避免在多个位置进行编辑。

 // 正常声明可能会很长
  unsigned shortint        my_data;
  enum {RED, YELLOW, GREEN}   e_light;
  bit [7:0]            my_byte;
 
  // 为这个长定义声明一个别名
  typedef unsigned shortint       u_shorti;
  typedef enum {RED, YELLOW, GREEN}   e_light;
  typedef bit [7:0]            ubyte;
 
  // 使用这些新的数据类型创建变量
  u_shorti    my_data;
  e_light     light1;
  ubyte       my_byte;
 

Syntax

typedef data_type type_name [range];

Example

module tb;
  typedef shortint unsigned u_shorti;
  typedef enum {RED, YELLOW, GREEN} e_light;
  typedef bit [7:0] ubyte;
 
  initial begin
    u_shorti   data = 32'hface_cafe;
    e_light   light = GREEN;
    ubyte     cnt = 8'hFF;
 
    $display ("light=%s data=0x%0h cnt=%0d", light.name(), data, cnt);
  end
endmodule
 
Simulation Log
ncsim> run
light=GREEN data=0xcafe cnt=255
ncsim: *W,RNQUIE: Simulation is complete.

参考文献:
【1】https://www.chipverify.com/systemverilog/systemverilog-typdef-user-defined-data-type

发布了91 篇原创文章 · 获赞 7 · 访问量 5257

猜你喜欢

转载自blog.csdn.net/qq_43042339/article/details/104458083