1

我试图了解以下情况:

typedef enum logic [2:0] {
   ONE, TWO, THREE, FOUR, FIVE
} enum_t;

带有enum_t类型 in case 表达式的 case 语句:

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关键字来帮助综合工具优化设计吗?

我在合成方面没有太多经验。因此,我将不胜感激任何反馈。谢谢!

4

3 回答 3

0

这取决于您的综合工具的类型有多强。不幸的是,您的 case_expression 可以通过多种方式获得值 3'b111(通过转换和某些模拟工具中的错误检查)。因此,为了安全起见,最好使用默认值。

于 2017-04-28T21:20:45.923 回答
0

我相信“唯一案例”是综合工具的指令,提到所有案例都被枚举。这将防止闩锁。如果在模拟中如果没有 ENUM 值在 case 表达式上,则在模拟期间将报告运行时错误。

于 2021-03-15T21:57:09.607 回答
0

如果“case_expression”取值“x”,case 语句将无法解析输入哪种情况。如果要提到默认情况,它会优雅地进入默认情况。如果没有提及默认值,如果 case_expression 取值为“x”,您将看到运行时错误。

于 2021-01-08T03:59:46.970 回答