我试图了解以下情况:
typedef enum logic [2:0] {
ONE, TWO, THREE, FOUR, FIVE
} enum_t;
案例表达式中带有enum_t
类型的案例陈述:
enum_t case_expression;
logic [2:0] result;
case (case_expression)
ONE: result = 3'b000;
TWO: result = 3'b001;
THREE: result = 3'b010;
FOUR: result = 3'b011;
FIVE: result = 3'b100;
endcase
我不确定或不清楚以下事项:
default case
的 result
声明是否可以? case_expression
是 enum
,只有5个有效值。不过它是3位。那么综合工具如何评估这种逻辑呢?它会推断闩锁吗? unique
关键字来帮助综合工具优化设计吗?我在综合方面没有多少经验。所以我很感激任何反馈。谢谢!
答案 0 :(得分:0)
这取决于您的综合工具的强度类型。不幸的是,你的case_expression可以通过多种方式获得值3'b111(通过在一些模拟工具中进行转换和差错检查)。因此,出于安全考虑,最好将默认值设置为。
答案 1 :(得分:0)
如果“case_expression”的值为“x”,则case语句将无法解析输入哪个case。如果要提到默认情况,它会优雅地进入默认情况。如果未提及默认值,如果 case_expression 取值为“x”,您将看到运行时错误。
答案 2 :(得分:0)
我相信“唯一案例”是对综合工具的指令,提到所有案例都被枚举。这将防止闩锁。如果在模拟中如果没有 ENUM 值在 case 表达式中,那么在模拟期间将报告运行时错误。