story · 2020年09月04日

硬件算法优化,做一个不被EDA工具替代的IC Designer

即便是功能仿真相同的RTL代码,不同的代码风格也会得出不同的综合结果。我们不能仅仅依赖于综合工具来fix代码风格糟糕的设计!

了解综合工具如何综合RTL对于前端工程师至关重要。
a793960b62988a96250954f5c5aad8c.png

1

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

在上面的算法中,在for循环中执行“ADDR =  ADDR+ OFFSET[I]”,因此是加法器逻辑重复8次! 此外,由于for循环以IRQ的LSB开始,需要标志附加逻辑。由于IRQ输入事2不知道,所以必须使用8个加法器构建的硬件才能处理任何情况的输入。

Design Compiler只能使加法器尽可能快,但关键路径仍然包含8个加法器。

下面是部分verilog代码和仿真综合结果。可见,从input到output路径,延时0.24ns,面积消耗55.74um2。

58b16df2e4a1bd86d96bcf7f80033ec.png

824bee28f08c159f379b1235b77174f.png

1.jpg

2.png

2

我们对算法进行优化:
3.jpg

在for循环之外执行“ADDR = BASE\_ADDR + TEMP\_OFFSET ”可以节省7个加法器的面积和延迟! 从MSB而不是LSB开始循环,利用了IF语句的优先级特性,进一步消除DONE标志相关的附加逻辑。

下面是部分verilog代码,仿真综合结果。可见,从input到output路径延时0.12ns,面积消耗48.68um2。
4.png
5.jpg
6.png
7.jpg
8.png

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

3

伴随着数字芯片设计工具逐渐智能化和自动化的趋势,作为一个IC Designer,又该如何适应技术发展,而不被工具代替?

1、 硬件算法优化。类比于软件算法时间和空间复杂度,在硬件算法建模时考虑硬件PPA(performance、power、area)

2、 verilog代码风格。在编码的时候,清楚自己的代码会大致清楚综合后的电路。否则“Garbage in, garbage out”

3、 EDA工具。工具只是工具,不是 “./run”就能设计一款高性能低功耗低开销的SOC芯片。要选择合适的工具流程和参数设置。

4、 解决问题。要想让自己的工作有价值,一切跑脚本,抄代码的行为对于提高技术水平都没有意义,我们需要的是分析工具report出来的问题,然后解决它。



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

本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/pvd-IWnWj3fhSXtKMKSIVw
未经作者同意,请勿转载!

推荐阅读

想了解更多内容,欢迎关注芯片数字实验室专栏,由于工具,你可以专注在更重要的事情上。
推荐阅读
关注数
12273
内容数
199
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息