在 System Verilog 中,我想指示合成器推断某些条件的并行检查,因此我使用
unique case
。我还添加了一个default
声明。我期望合成器将我所有的 case
语句(包括 default
)视为互斥的,从而推断出对条件的并行检查。这会发生吗,还是 default
的存在会破坏并行检查?
我问这个问题是因为 linting 工具抱怨
unique case
有一个 default
声明,但我在任何地方都找不到答案。我尝试从设计中的一堆 unique
语句中删除 case
关键字,并在前后执行综合,它产生完全相同的面积。因此,这让我认为 default
关键字正在推断优先级逻辑。
请参阅 IEEE Std 1800-2023,第 12.5.3 节 unique-case、unique0-case 和priority-case,了解
unique case
的详细说明。 这里引用一段话:
注意 — 通过指定 unique 或 priority,无需编写 default case 用于捕获意外的 case 值。
这可能是 linting 工具抱怨的原因。 lint 工具的目的是检查可能不符合推荐的编码样式的编码样式。 由于标准规定您不应该需要
default
,因此 lint 工具抱怨是合理的。 有关您收到的投诉消息的更多详细信息,请参阅 lint 工具文档。