Vic*_*sky 4 enums system-verilog
我想用数值设置枚举.以下代码对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
Run Code Online (Sandbox Code Playgroud)
以下是EDA Playground的完整代码:http://www.edaplayground.com/s/4/219
从技术上讲,使用其数值设置枚举不是合法的SystemVerilog.SystemVerilog是一种强类型语言,因此应使用其命名值设置枚举.
也就是说,一些模拟器允许设置具有数值的枚举.
上面的代码可以通过添加静态强制转换来修复:
addr_name = my_addr_e'(reg_addr);
Run Code Online (Sandbox Code Playgroud)