SystemVerilog枚举型变量语法详解及应用举例

This section provides the examples to declare SystemVerilog enum of logic type, enum of bit type and  enum of int type

  • 枚舉值缺省為從0開始遞增的整數,用戶也可以可以指定自己的枚舉值
  • 枚舉變量用於一些特定名稱的集合,如指令中的操作碼和狀態機中的狀態名

一、枚舉類型的子函數

1.1、SystemVerilog提供了一些可以遍歷枚舉類型的函數,如下圖:

  No.                Functon                                                                    Description
1 first() 返回第一個枚舉常量
2 last() 返回會後個枚舉常量
3 next() 返回下一個枚舉常量
4 next(N) 返回以後第N個枚舉常量
5 prev() 返回前一個枚舉常量
6 prev(N) 返回以前第N個枚舉常量

1.2、遍歷枚舉變量

typedef enum {READ, BLUE, GREEN} color_e;color_e             color;
color = color.first;do begin$display("Colors  ::  Value of %0d/%0s= %0d", color, color.name());  color = color.next();end while(color != color.first());

二、logic類型的Enum應用舉例

module enum_datatype;//declarationenum logic [3:0] { red=0, green=1, blue=4, yellow, white=6, black=9 } Colors;initial beginColors = Colors.first;   //從第一個元素開始for(int i=0;i < 6;i++) begin$display("Colors  ::  Value of %0s is \t= %0d", Colors.name(), Colors);Colors = Colors.next;  //指向下一個元素endend
endmodule
  • Simulator output:
Colors :: Value of red is = 0
Colors :: Value of green is = 1
Colors :: Value of blue is = 4
Colors :: Value of yellow is = 5
Colors :: Value of white is = 6
Colors :: Value of black is = 9

三、Enum of bit type example

module enum_datatype;//declarationenum bit [3:0] { red=0, green=1, blue=4, yellow, white=6, black=9 } Colors;initial beginColors = Colors.first;for(int i=0;i < 6;i++) begin$display("Colors  ::  Value of %0s is \t= %0d",Colors.name(),Colors);Colors = Colors.next;endend
endmodule
  • Simulator output:
Colors :: Value of red is = 0
Colors :: Value of green is = 1
Colors :: Value of blue is = 4
Colors :: Value of yellow is = 5
Colors :: Value of white is = 6
Colors :: Value of black is = 9

四、Enum of int type example

module enum_datatype;//declarationenum int { red=0, green=1, blue=4, yellow, white=6, black=9 } Colors;initial beginColors = Colors.first;for(int i=0;i < 6;i++) begin$display("Colors  ::  Value of %0s is \t= %0d",Colors.name(),Colors);Colors = Colors.next;endend
endmodule
  • Simulator output: 

Colors :: Value of red is = 0
Colors :: Value of green is = 1
Colors :: Value of blue is = 4
Colors :: Value of yellow is = 5
Colors :: Value of white is = 6
Colors :: Value of black is = 9

五、枚舉型(enum)變量的Cover

5.1、定義如下枚舉類型變量

typedef  enum {INIT, DECODER, IDLE}  fsm_states_e;fsm_states_e    p_states;
fsm_states_e    n_states;

5.2、Covergroup定義

covergroup p_states_group with function sample(my_trans tr);options.pre_instance = 1;options.auto_bin_max = 30;p_fsm : coverpoint(tr.p_states) {} endgroup : p_states_group

[SV]SystemVerilog枚举型变量语法详解及应用举例相关推荐

  1. Arduino 变量语法详解(含示例)一

    一.常量 1.1 HIGH | LOW(引脚电压定义) 1.2 INPUT | OUTPUT(数字引脚(Digital pins)定义) 1.3 true | false(逻辑层定义) 1.4 int ...

  2. C语言--bool型变量问题详解

    环境linux下 GCC编译器 #include <stdio.h> #include <stdbool.h> #include <string.h> int ma ...

  3. python变量类型-Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  4. python编程语法大全-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货 每天 ...

  5. python编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  6. python编程if语法-Python编程入门基础语法详解经典

    原标题:Python编程入门基础语法详解经典 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_number = ...

  7. python编程语法-Python编程入门——基础语法详解(经典)

    今天小编给大家带来Python编程入门--基础语法详解.温馨提示: 亮点在最后! 在这里还是要推荐下我自己建的Python开发学习群:301056051,群里都是学Python开发的,如果你正在学习P ...

  8. python基础编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  9. python基础编程语法-Python编程入门——基础语法详解(经典)

    今天小编给大家带来Python编程入门--基础语法详解.温馨提示: 亮点在最后! 在这里还是要推荐下我自己建的Python开发学习群:301056051,群里都是学Python开发的,如果你正在学习P ...

最新文章

  1. 区块链100讲:智能合约审计指南
  2. python3.6中@property装饰器的使用
  3. Spring EL bean引用实例
  4. 计算机网络安全顾问啊,【网络安全咨询顾问工作内容|工作职责|网络安全咨询顾问做什么】-看准网...
  5. 判断x是否为2的n次幂
  6. window 配置react native 、Android Studio环境
  7. NLP情感分析笔记(四):卷积情感分析
  8. css手型指针_前端基础面试题(HTML+CSS部分)
  9. sphinx 全文检索 笔记一
  10. CSS类,ID,标签和伪类详细说明
  11. 专访普渡科技:深耕餐饮业务,充分发掘送餐机器人的商业价值
  12. python链表操作_python操作链表的示例代码
  13. android能播放4k视频格式,四平台六款手机4K视频播放实测
  14. 路由器修改dns服务器,路由器DNS怎么设置如何修改路由器DNS服务器地址
  15. 3万一5万新能源电动汽车,3万内的新能源电动轿车
  16. python求因子个数_python怎么求因数
  17. 荣耀 MagicBook Pro 加装固态硬盘
  18. 关闭 Gatekeeper
  19. Java实现窗口框架,转换金额的大小写
  20. 盘点5大高频移动端场景,你不会用就落后了(内附模板下载)

热门文章

  1. 拆分大科技公司到底意味着什么?
  2. 深入浅出的webpack构建工具---HappyPack优化构建(九)
  3. 【linux】模块化实践之存储专题
  4. ADC性能指标(INL/DNL/GE/OE/SNR/THD/SINAD/SFDR/ENOB)(用函数的观点来理解)
  5. ADC参数测试上位机,通过将ADC的数字量输入上位机,上位机可以计算出动态参数 ENOB SFDR SNR 总谐波失真
  6. 斗地主智能(AI)出牌算法
  7. 关于iframe 嵌套页面
  8. 团队管理培训总结(2):沟通有法
  9. NetData 入门
  10. Vintage、滚动率、迁移率的应用(转载)