概述
svlib中的EnumUtils类是用于对ENUM类型及其值操作的class,该类需要针对需要操作的ENUM进行参数化。使用EnumUtils必须使用代码中真实定义的ENUM类参数化,不能使用默认定义的int,否则会出现很多莫名的错误。
函数及使用
该class有主要以下几种函数:
class EnumUtils #(type ENUM = int)
typedef logic [$bits(ENUM)-1:0] BASE;//BASE为enum中的值的位宽对应的数
extern static function ENUM fromName(string s);//根据enum中的name判断enum的值。
extern static function int pos(BASE b);//根据enum中的值判断其在enum中的位置,若不存在,则返回-1。
extern static function bit hasName(string s);//根据name判断是否enum有这个name
extern static function int maxNameLength();//判断enum中最长的name
extern static function bit hasValue(BASE b);//根据值判断是否enum有这个值
extern static function qe allValues();//将enum中的name和值全都放到一个enum队列里
extern static function ENUM match(BASE b, bit requireUnique = 0);//判断值是否与enum中的某个值匹配,若不匹配,则报出错误。
endclass