verilog 中if-else语句嵌套太深引发的问题

在用verilog做设计时,经常会用到if-else语句,对于复杂逻辑采用该语句,经常嵌套很多if-else。if-else嵌套过深,会导致很多危害,其中之一就是两个D触发器之间的组合逻辑过多。导致时序的Tsu建立时间紧张。以下面的代码为例,我们看看过深的if-else,到底综合出了什么。

部分代码:

对于ModeSelect的条件判断,嵌套了4层if-else,我们看看综合出来了的东西。

综合RTL级:

分析:

ModeSelect的D触发器输出后,直接是3个比较器,分别和0、1、2进行比较,之后就是4个选择器,分别是TriggerSignal~0,TriggerSignal~1,TriggerSignal~2,TriggerSignal~3。if-else的第一个条件enable位于最后一个选择器TriggerSignal~3的上。ModeSelect==0的条件位于倒数第二个选择器TriggerSignal~2上。ModeSelect==1的条件位于倒数第三个选择器TriggerSignal~1上,ModeSelect==2的条件位于倒数第一个选择器TriggerSignal~0上。if嵌套越多,选择器级联越多。选择器的级联是组合逻辑,组合逻辑越多,输出传输所需要的时间就越多,留给时序建立的时间就越小,很容易造成时序不满足要求。

总结:

在时序代码的设计中,if-else的嵌套深度要求尽可能小。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cattao1989

这些都是一点一点仿真出来的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值