如何在verilog系统中使用枚举中的算术表达式? `define REG_WIDTH 48 `定义字段宽度32 typedef枚举位[`REG_WIDTH-1:0] { BIN_MIN='h0, BIN_MID=BIN_MIN+`REG_WIDTH'((1
通常,像如何在verilog系统中使用枚举中的算术表达式? `define REG_WIDTH 48 `定义字段宽度32 typedef枚举位[`REG_WIDTH-1:0] { BIN_MIN='h0, BIN_MID=BIN_MIN+`REG_WIDTH'((1,verilog,system-verilog,test-bench,Verilog,System Verilog,Test Bench,通常,像1这样的整数常量被视为32位值(SystemVerilog LRM指定它们至少为32位,但大多数模拟器/合成工具使用的正好是32位)。因此,由于您先执行了32的移位,因此在编译过程中,您将完全移出该移位,并保留0(32'd)。我知道了。非常感谢。我尝试了打字转换,直到(1 `define REG_WIDTH 48 `define FIELD_WIDTH 32 typedef enum bit [`REG_WIDTH-1:0] { BIN_MIN = 'h0, B
1
这样的整数常量被视为32位值(SystemVerilog LRM指定它们至少为32位,但大多数模拟器/合成工具使用的正好是32位)。因此,由于您先执行了32的移位,因此在编译过程中,您将完全移出该移位,并保留0(32'd)。我知道了。非常感谢。我尝试了打字转换,直到(1
`define REG_WIDTH 48
`define FIELD_WIDTH 32
typedef enum bit [`REG_WIDTH-1:0]
{
BIN_MIN = 'h0,
BIN_MID = BIN_MIN + `REG_WIDTH'(((1<<`FIELD_WIDTH)+2)/3),
BIN_MAX = BIN_MID + `REG_WIDTH'(((1<<`FIELD_WIDTH)+2)/3),
}reg_cover;
`define REG_WIDTH 48
`define FIELD_WIDTH 32
typedef enum bit [`REG_WIDTH-1:0] {
BIN_MIN = 'h0,
BIN_MID = BIN_MIN + (((`REG_WIDTH'(1))<<`FIELD_WIDTH)+2)/3,
BIN_MAX = BIN_MID + (((`REG_WIDTH'(1))<<`FIELD_WIDTH)+2)/3
} reg_cover;