数据类型

SystemVerilog 拥有丰富的数据相对于verilog,一般分为二值类型和四值类型。

  数据的值有: 0, 1, x,z 几种。 二值: 每个bit只有0,1。 四值:每个bit有0,1,x,z四种值。

一、基本数据类型

  1、 二值类型

     int  i ;      //  32bi t有符号数

    int unsigned ui;  //  32bit 无符号数

    byte b8;     // 8bit 有符号数

    shortint i;      // 16bit 有符号数

    longint i;       // 64bit 有符号数

    real i;      // 64bit 双精度浮点数

    bit [7:0] i      // 8bit 无符号数

    bit signed [7:0] i; // 8bit 有符号数

  2、 四值类型, 可以用$isunknown 查看变量是否是X或者Z

    integer  i;    // 32bit 有符号数

    time t;      // 64bit 无符号数

    logic [7:0] i;     // 8bit 无符号数

    logic signed [7:0] i;// 8bit 有符号数

    wire [7:0]  i;  // 8bit 无符号数

    reg  [7:0]  i;  // 8bit 无符号数

  3、数组

    int cons[16];         // 16个int类型的定宽数组

    bit [7:0] bit_a[8] bit_a;    // 8个非合并定宽数组

    bit [3:0] [7:0] bit_a;      // 4个8bit 数组合并到一起, 类似32 bit无符号数据

    bit [3:0] bit_a[$];       // 队列

    bit [3:0] bit_a[4][4];      // 二维数组

    bit [3:0] bit_a[string];      // 关联数组

    bit [3:0] bit_a[];       // 动态数组

    数组常见的操作: for和foreach, 例如:int bit_a[4][4]; foreach( bit_a[ i, j ] ) bit_a[ i ][ j ] = 4'hf;

    队列的操作函数:insert,delete(),push_back(),push_front(),pop_back(),pop_front(); 例如:bit [3:0] m_q[$];m_q.push_back('hf); // m_q[0] value :‘hf。m_q.size() : 1

    关联数组一般通过key值寻找对应的值。常用函数,exists(). int a[sting];  if(!(a.exists("name"))) a["name"] = 1;

    数组排序操作等:sort(),reverse(),shuffle();

  4、 枚举类

    enum bit[1:0]{ RED, GREEN, BLUE} corlor_e;  // 仅仅是普通的变量

      typedef enum bit[1:0]{ RED, GREEN, BLUE} corlor_e; // 可以instance 多个 变量

  5、结构体

    struct {int a; int b, bit[ 3:0] bit_a[4]} struct_t;   //仅仅是普通的变量

    typedef struct {int a; int b, bit[ 3:0] bit_a[4]} struct_t;   // 可以instance 多个 变量

  6、类型转换   待续。。

posted on 2020-08-06 18:45  PostZ  阅读(104)  评论(0)    收藏  举报

导航