verilog中if-else和case()在静态时序中的差异。

对于if-else和case()的设计在静态时序中对设计最大时钟频率的影响。

代码:

verilog中if-else和case()在静态时序中的差异。_第1张图片

if-else对时序的影响:

当用Timequest做静态时序分析时,查看if-else对设计最大时钟的影响,发现最大时钟只能到97.54M。PLL输出是100M,显然没有超过100M。

verilog中if-else和case()在静态时序中的差异。_第2张图片

case()对时序的影响:

当用Timequest做静态时序分析时,查看case()对设计最大时钟的影响,发现最大时钟可以达到100.16M,PLL输出是100M,电路能达到的最大时钟为100.16M,显然设计满足要求。

verilog中if-else和case()在静态时序中的差异。_第3张图片

verilog中if-else和case()在静态时序中的差异。_第4张图片

总结:

case语句会综合出一个较复杂的选择器,而if嵌套会产生多个简单的串联的选择器,在一些情况下,case产生的组合逻辑延时比if-else产生的组合逻辑延时小,从而能够提高设计最大时钟频率。对于一些复杂的选择逻辑,建议采用case语句。

你可能感兴趣的:(verilog)