Verilog中的if-else和case有两个重大缺点
- 不能传播不定态
- 会产生优先级的选择电路而非并行选择电路,从而不利于时序和面积
问题一:
Verilog的if-else和case不能传播不定态,以如下代码片段为例。
if(a)
out =in1;
else
out =in2;
假设a为X不定态,按照Verilog语法,将等效于a=0,从而输出值等于in2,而没有将不定态X传输出去,这种情况在仿真阶段会掩盖某些致命的bug
然而使用assign,如果a的值等于x,则out的值也会等于x,可以在仿真阶段暴露出bug。
assign out =a ? in1:in2;
问题二:
Verilog的if-else语句和case语句存在

本文讨论了Verilog中if-else和case语句的两个主要缺点:无法传播不定态和生成优先级选择电路。当a为不定态X时,if-else结构会隐藏错误,而assign语句能更好地暴露问题。此外,if-else和case语句会合成优先级选择器,若需并行选择,建议使用与或逻辑实现。通过示例代码,文章提供了改进方法以优化Verilog代码的综合和仿真表现。
最低0.47元/天 解锁文章
1518

被折叠的 条评论
为什么被折叠?



