• SystemVerilog中枚举类型注意事项


    1 enum logic {a = 1'b0, b = 1'b1, c = 1'bx, d = 1'bz};

    在SystemVerilog枚举类型中当使用logic进行声明时,注意logic为四态,所以当使用时如果声明时需要x、z态需要显式声明。

    如果X或者Z赋值给枚举列表中的一个标签,下一个标签也必须被显式的赋值。试图由赋为X或者Z的标签的值加1来自动获得值是错误的。

    1 enum logic {a = 1'b0, b, c = 1'bx, d}; //错误,声明不完整

    一个枚举型只可以进行下列赋值:

    1. 枚举类型列表中的一个标签
    2. 同类枚举型的其他变量(即使用相同的枚举类型声明变量)
    3. 通过cast转换成枚举类型变量的数值 。

    示例

     1 typedef enum {WAIT, LOAD, READY} states_t;
     2 states_t state, next_state;
     3 int foo;
     4 //合法操作
     5 state = next_state; //state和next_state是同种类型(states_t)
     6 foo = state + 1; //state表示int基类,加上文本整数1,结果是int类型,并赋给一个int类型变量
     7 
     8 //错误,非法赋值
     9 state = foo +1; //不是同一个枚举类型的变量赋值给一个枚举变量错误,foo是int型,state是states_t类型
    10 
    11 state = state + 1; //错误,state + 1为int型
    12 state ++; /错误,同上
    13 next_state + = state; // 错误,同上

     使用强制转换操作符或者动态$cast系统函数都可以使用

    1 next_state = states_t '(state + 1); //合法操作
    2 $cast(next_state, state + 1); //合法操作
  • 相关阅读:
    右键菜单:锁到任务栏丢失 修复
    检测到鼠标时自动禁用触摸板 (注:仅适用于个别笔记本)
    清除右键菜单CMD入口
    VBS编辑字段
    VBS创建数据表
    VBS创建数据库
    QTP操作论坛回复编辑框----webelement
    数字排序
    对应键盘的ASCII码(备忘)
    将字符串打乱输出
  • 原文地址:https://www.cnblogs.com/jiang-ic/p/8086112.html
Copyright © 2020-2023  润新知