我想用数值设置一个枚举。以下代码对于SystemVerilog是否合法?
`define DEC_ADDR 32'hC001CAFE
typedef enum bit [31:0] {
ILLEGAL_ADDR_0=0,
DEC_ADDR=`DEC_ADDR
} my_addr_e;
module tb;
initial begin
my_addr_e addr_name;
bit [31:0] reg_addr;
reg_addr = `DEC_ADDR;
addr_name = reg_addr; // PROBLEM
end
endmodule
以下是EDA Playground上的完整代码:http : //www.edaplayground.com/s/4/219
从技术上讲,使用数字值设置枚举是不合法的SystemVerilog。SystemVerilog是一种强类型语言,因此应使用其命名值设置枚举。
也就是说,某些模拟器允许使用数值设置枚举。
可以通过添加静态强制转换来修复以上代码:
addr_name = my_addr_e'(reg_addr);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句