【发布时间】:2019-06-26 23:41:31
【问题描述】:
我有以下代码:
typedef enum logic [1:0] {
CMD1 = 2'b1?,
CMD2 = 2'b01,
CMD3 = 2'b00
} cmd_t;
基本上,如果 MSB 为 1,则为 CMD1(我将使用 LSB 作为索引的一部分)。如果 MSB 为 0,则解码命令的其余位。
然后我尝试使用 always_comb 进行解码:
cmd_t myCmd;
always_comb begin
casez(myCmd)
CMD1: isCmd1 = 1'b1;
CMD2: isCmd1 = 1'b0;
default: isCmd1 = 1'b0;
endcase
end
不幸的是,我从 Spyglass 收到了这条消息:
[12EE] W467 Based number 2'b1? contains a don't-care (?) - might lead to simulation/synthesis mismatch
这段代码应该是可合成的,不是吗?可以安全地放弃这个 Spyglass 警告吗?
【问题讨论】:
-
它在抱怨哪一行?在您的示例中挥动它应该是可以的,除非枚举的其他用法。
-
顺便说一句,您的
enum定义中有语法错误。它应该是CMD = 2``b1?、=,而不是:。这可能会导致您的错误。 -
它在抱怨这一行:CMD1: isCmd1 = 1'b1;