包含除法的数字前端DC问题
时间:10-02
整理:3721RD
点击:
数字新人,遇到了如下问题:
在前端设计中直接使用了除法,19bits的码除以5bits的码,输出为14bits
即:[18:0] A/ [4:0]B这样的功能
做DC的时候发现这部分的setup slack很差,但>=0,因此没有过多关注,最近做后端的时候发现这个除法的延时太大,因为综合出来的除法是迭代结构的,要从高位开始除,最后才能得到低位的数据。 因此延时很大,这部分的延时超过了我的时钟周期,最终导致后端的时候setup slack非常大,-10.8n左右。(clock 10ns)
不知道有什么解决方案。
1,是否可以通过调整verilog代码? PS:此除法功能很重要,无法替代。只能换一种语句描述,不知道有没有好的语句?
2. 是否可以通过工具(encounter)一直优化,降低这部分的延时。 比如增大std cell的尺寸? 这样的方法是否可取?
多谢。
在前端设计中直接使用了除法,19bits的码除以5bits的码,输出为14bits
即:[18:0] A/ [4:0]B这样的功能
做DC的时候发现这部分的setup slack很差,但>=0,因此没有过多关注,最近做后端的时候发现这个除法的延时太大,因为综合出来的除法是迭代结构的,要从高位开始除,最后才能得到低位的数据。 因此延时很大,这部分的延时超过了我的时钟周期,最终导致后端的时候setup slack非常大,-10.8n左右。(clock 10ns)
不知道有什么解决方案。
1,是否可以通过调整verilog代码? PS:此除法功能很重要,无法替代。只能换一种语句描述,不知道有没有好的语句?
2. 是否可以通过工具(encounter)一直优化,降低这部分的延时。 比如增大std cell的尺寸? 这样的方法是否可取?
多谢。
感觉只能修改算法,
用查表法得到C=1/B,然后,A*C代替A/B。
除数5位,很适合用查表法求倒数。用乘法实现除法,乘法比除法快。
自己写除法,然后插入流水线?
如果没有对除法计算周期有要求的话,就用递归减法做。
如果有要求,最好改下算法,用乘法实现
