循环首次适应算法_硬件算法优化,做一个不被EDA工具替代的IC Designer

源自:微信公众号 “数字芯片实验室”

即便是功能仿真相同的RTL代码,不同的代码风格也会得出不同的综合结果。我们不能仅仅依赖于综合工具来fix代码风格糟糕的设计!
了解综合工具如何综合RTL对于前端工程师至关重要。

09181119546b36f529d1859bf79e1ae7.png

下面针对Design Compiler逻辑综合工具谈谈代码风格:

b823a785dea16640f5133a4515845842.png

在上面的算法中,在for循环中执行“ADDR = ADDR+ OFFSET[I]”,因此是加法器逻辑重复8次! 此外,由于for循环以IRQ的LSB开始,需要标志附加逻辑。由于IRQ输入事先不知道,所以必须使用8个加法器构建的硬件才能处理任何情况的输入。Design Compiler只能使加法器尽可能快,但关键路径仍然包含8个加法器。
下面是部分verilog代码和仿真综合结果。可见,从input到output路径,延时0.24ns,面积消耗55.74um2

e3760f2e0b85c34825349a0bbdcc3b16.png

1aca4371491033c088cbe03a68635ad7.png

dbd1fe17e7ac22ba87ca552f1511476b.png

9ada347098a21d2104911dbc35d1ce55.png

我们对算法进行优化

d60d6e890bc5274450f179b62ccdbdef.png

在for循环之外执行“ADDR = BASE_ADDR + TEMP_OFFSET ”可以节省7个加法器的面积和延迟! 从MSB而不是LSB开始循环,利用了IF语句的优先级特性,进一步消除DONE标志相关的附加逻辑。
下面是部分verilog代码,仿真综合结果。可见,从input到output路径延时0.12ns,面积消耗48.68um2。

d37684902259ce2b97d801b9205a0330.png

7018e90ef852c07cac712294c8ed1a54.png

a19db93647b74fc6d4072ae6ba69ba4c.png

fe5fd511fd5714e68dd51f88580ed67b.png

也就是说,假设这个模块的输入和输出都被寄存器锁存。性能会提高100%,硬件开销降低12.68%

伴随着数字芯片设计工具逐渐智能化和自动化的趋势,作为一个IC Designer,又该如何适应技术发展,而不被工具代替?1、 硬件算法优化。类比于软件算法时间和空间复杂度,在硬件算法建模时考虑硬件PPA(performance、power、area
2、 verilog代码风格。在编码的时候,清楚自己的代码会大致清楚综合后的电路。否则“Garbage in, garbage out
3、 EDA工具。工具只是工具,不是 “./run”就能设计一款高性能低功耗低开销的SOC芯片。要选择合适的工具流程参数设置
4、 解决问题。要想让自己的工作有价值,一切跑脚本,抄代码的行为对于提高技术水平都没有意义,我们需要的是分析工具report出来的问题,然后解决它。

最后,祝愿大家都不会被 不刷知乎抖音,不玩农药吃鸡,高效率低成本的智能化EDA工具替代!

©数字芯片实验室

愿陪你走过数字IC学习中
所有的磕磕绊绊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值