来源网络资料
日常的一些总结。
1、芯片设计中,无复位寄存器占比一般要求80%以上,数据链路需要尽量避免复位,因为一般位宽比较大。复位会导致较大的瞬时反转功耗,而且面积会比无复位寄存器大。
2、寄存器尽量带门控,门控一般是ICG控制时钟。
3、在写MUX的时候,优先选择case和onehot这类无优先级的MUX,避免使用if-else优先级MUX。因为一种是串行,逻辑链条比较长,一种是并行,组合逻辑浅,时序好,功耗低。
4、在使用if-else电路时,高翻转率的输入项要高优先级,低翻转放在低优先级。高优先级表示和输出更近的地方,这样可以避免在最远处的输入高翻转导致无效翻转。
5、PRBS这类随机值模块尽量使用门控信号,因为翻转率很高。
6、主数据流尽量减少打拍,如果是非走线解时序的情况,可以避免使用reg而使用latch,因为latch的面积功耗都有优势。
7、配置类的寄存器,可能分发给各个模块导致fanout比较大,不要直接fanout到目的地,可以分区域分块,先打拍到模块附近后再分发出去。也可以打拍后,取不同拍数到各个模块。例如dly1给A模块,dly2给B模块这样,既可以减少fanout,又可以延长走线。总体思路是路径要晚点分叉。
8、跨异步,从慢到快的情形避免直接使用FIFO,可以直接用DMUX打2拍。
9、阈值比较的时候可能不需要比较器,直接用bit位选择。
Verilog设计:最优PPA设计的一些总结
https://blog.songshiyu.cn/archives/verilogshe-ji-zui-you-ppashe-ji-de-yi-xie-zong-jie
评论