SystemVerilog案例中的默认语句

时间:2017-04-28 20:51:19

标签: verilog system-verilog register-transfer-level vlsi

我试图了解以下情况:

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

我在综合方面没有多少经验。所以我很感激任何反馈。谢谢!

3 个答案:

答案 0 :(得分:0)

这取决于您的综合工具的强度类型。不幸的是,你的case_expression可以通过多种方式获得值3'b111(通过在一些模拟工具中进行转换和差错检查)。因此,出于安全考虑,最好将默认值设置为。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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