前言:数字芯片设计工程师在设计的时候要考虑三个方面,PPA,即Performance、Power和Area。本文讲解在实际项目中,如何对前端面积进行有效优化。

理论方法

本文首先参考书籍《FPGA设计实战演练(高级技巧篇)》第七章,如何在书写代码时进行面积优化,其中主要方法有以下几个方面。

  • 操作符平衡

其中举例,比如:

result <= a * b * c * d;假设abcd是4bit寄存器,书中讲述那么在综合之后的结果是使用了3个乘法器,分别是4bit、8bit和12bit乘法器。

如果更改成:

result_new <= (a * b) * (c * d);综合之后的结果尽管也用3个乘法器,但是是2个4bit和1个8bit乘法器。

但是我并没有自己验证过,对于书中所述情况存疑,我认为编译器可能会自动优化这种简单的情况。

  • 打破设计流水

增加流水的好处之一是缩减组合路径长度,提高设计频率,虽然不能降低单次计算时间,但是可以降低整体计算时间,相当于PPA中的performance,但是缺点是会带来area的面积增加。所以在性能允许的前提下,可以适当去除流水,减少寄存器使用,降低面积。此外,书中举了一个例子,就是在乘法器输出端可以增加一级流水,而不带来面积增加,原因在于乘法器本身输出端会有寄存器,如果增加一级流水,那么乘法器原有输出端的寄存器就会整合到增加的一级流水的寄存器,优化时序的同时不带来面积增加。

  • 资源共享
  1. 在互斥操作中共享操作符
  2. 共享表达式
  3. 共享逻辑功能模块

上述思想顾名思义,考虑的都是资源复用的问题。资源复用的前提是条件互斥,也就是不能在同一时刻都有对某一资源的使用请求,那么可以进行复用。复用的资源可以是加减乘除比较器等运算资源,也可以是寄存器、RAM等存储资源,或者是逻辑功能模块。

  • 其他面积优化方法
  1. 取消异步复位
  2. 使用FPGA厂家原语

如果一些寄存器不需要在复位时进行清零,那么可以考虑取消异步复位来节省资源,比如自己搭建RAM,其中的寄存器阵列如果不需要复位可以取消掉。

实际方法

在数字芯片设计的实际过程中,如果需要对上一版芯片进行面积优化,真正考虑的都是大块的memory优化,很少会细扣上述的某些方法,因为带来的收益比不高。在我所参与的一个视频数字防抖芯片的设计中,我需要对上一版芯片的面积优化掉百分之四十以上。具体方法是,首先看DC综合报告,统计面积占用情况,并查看面积占比高的模块,面积大的原因是什么。

  • 出窗设计

以视频芯片或者AI芯片为例,由于需要对输入串行数据进行卷积运算,比如卷积核大小为9X9,那么就至少需要缓存8行数据,第九行数据输入时整合已经缓存的8行数据,输出9X9窗口。这里需要注意尽量不要缓存9行数据,尽管会带来逻辑的简单,但是会导致面积的增加。

  • 共享内存

在芯片设计中一般为了性能,会采用流水设计,但是由于颗粒度划分精度问题,每一块内存资源未必是每一个cycle都被占用。举例说明:我所参与的项目中,前人在一个顶层模块中划分为5个子模块,5个子模块都要和DDR交互,分别需要缓存几行数据用于后续计算。但是经过时序分析可以发现,每个子模块是顺序执行,不会同时发起请求,并且颗粒度较大,所以可以考虑选取5个子模块中需要memory最大模块的内存,作为5个模块的公用内存,当哪个模块需要访问内存时即发起请求,这样可以理论上最大节省80%内存(当5个子模块内存大小相同时)。而在没有大量并行矩阵运算时,内存的面积大小基本决定了整体的面积大小,所以作为芯片设计工程师,在面积优化时,应把内存优化作为首要目标。

--------------------------------------------------END---------------------------------------------------

数字芯片设计中的面积优化方法相关推荐

  1. 数字芯片设计中的时钟分频电路,你了解多少?

    时钟分频电路在数字芯片设计中非常常见,而且也非常重要,正确的符合要求的数字分频电路对功能的正确与否至关重要.现在数字电路设计中的时钟分频主要包括以下几种方法: 1.寄存器分频 寄存器分频就是利用寄存器 ...

  2. 编写一个抽象类Shape,声明计算图形面积的抽象方法。再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法

    编写一个抽象类Shape,声明计算图形面积的抽象方法.再分别定义Shape的子类Circle(圆)和Rectangle(矩形),在两个子类中按照不同图形的面积计算公式,实现Shape类中计算面积的方法 ...

  3. 冯·诺伊曼奖得主Jorge Nocedal:增强学习中零阶优化方法及其应用(附演讲视频和PPT)

    2020 北京智源大会 本文属于2020北京智源大会嘉宾演讲的整理报道系列.北京智源大会是北京智源人工智能研究院主办的年度国际性人工智能高端学术交流活动,以国际性.权威性.专业性和前瞻性的" ...

  4. [转]游戏中各种性能优化方法(不断更新)

    http://www.cppblog.com/liangairan/archive/2013/03/23/198749.aspx 谈到游戏中的性能优化,说白了就是如何提高帧率和降低内存. 提高帧率的基 ...

  5. 机器学习中常用的优化方法

    写在前面 在看斯坦福的次cs231n课程,里面提到一些机器学习的基础知识,比如损失函数,优化算法,正则化形式等等.然后有一些知识也都记不起来了,索性就在博客上再回顾一遍顺便记录下来日后方便查阅.今天就 ...

  6. 用户旅程方法论_3种有效准备数字旅程中流程改进的方法

    用户旅程方法论 在转变工作方式的过程中,我们专注于客户的愿望,并且计划转向数字业务,因此始终需要改进流程. 尽管向数字业务的转变可能包含组织中许多新的方面,但始终存在需要评估的技术和流程方面的现有投资 ...

  7. 制作移动端手机网站过程中的SEO优化方法技巧

    据国内三大运营商数据来看,中国的手机用户数已达10亿,超过2/5的移动用户每个月都会从手机终端访问网页,如今的移动端手机网站比例肯定有提升,但是对于这些存在的移动版本网站来说,马海祥查看了很大一部分手 ...

  8. Android中的性能优化方法

    文章目录 1. 为什么要进行性能优化 2. 提高应用性能的优化方向 2.1 布局优化 2.1.1 merge标签 2.1.2 ViewStub标签 2.2 绘制优化 2.3 内存泄露 2.3.1 静态 ...

  9. ANSYS Workbench中的网格优化方法

    自 50 年代后期以来,有限元法 (FEM) 已被用作解决工程问题的强大工具.当时的计算是手工进行的,该方法是基于力的,而不是我们今天使用的基于位移的方法.由于计算机工业的进步,已经开发出各种有限元商 ...

最新文章

  1. java phantomjs 2.1.1_Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1
  2. “金主爸爸快回来交学费吧!”疫情让中国留学生难以返校,国外高校面临资金短缺...
  3. netlink怎么读_ovs源码阅读--netlink使用
  4. 1.2.3 TCP/PI参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较
  5. Visual Studio 2010 and .NET Framework 4 Beta 1
  6. 《吃土》读书笔记-笔记初稿
  7. c mysql二进制,MySQL运用connector C/C+读取二进制字段
  8. python伪造请求头x-forwarded-for的作用_Pyspider中给爬虫伪造随机请求头的实例
  9. list steam_在 Steam 中国版上玩单机游戏也会受到防沉迷系统管控
  10. [Ext JS 4] 布局之实战一 - 中间区块不会自动伸展 (tab)
  11. TOSCA自动化测试工具视频资料
  12. Unity 图片开启不同选项内存占用
  13. spider_使用随机User-Agent库, 爬取笔趣阁万古天帝章节目录_(fake_useragent)
  14. Python获取sklearn库中iris数据写入本地csv文件,可视化展示数据并进行分类、聚类实验以及结果可视化
  15. 【交通标志识别】基于matlab GUI BP神经网络交通标志识别【含Matlab源码 718期】
  16. 利用ACIS、HOOPS开发三维软件
  17. 利用第三方rec解锁安卓手机锁屏密码
  18. 不再因BT吃官司 Magnet能否将BT漂白?
  19. python与vfp做桌面数据库_Python:如何提高将数据从vfp(dbf)加载到oracle的效率?...
  20. pythonobject转int_object怎么转换成float数据

热门文章

  1. linux 内核中Netlink
  2. 多谐振荡器双闪灯电路分析
  3. 考研英语筹备 list-1
  4. 建筑室内设计与计算机应用,建筑室内设计与室内艺术设计与艺术设计的区别?...
  5. 初尝Java动态代理
  6. 《Photoshop Lightroom4 经典教程》—第1课1.1节了解Lightroom的工作方式
  7. 第三章 Opencv图像像素操作
  8. 两种启动tomcat的方法
  9. 旧笔记本电脑自制nas_将旧笔记本电脑变成Windows 8平板电脑
  10. Java常见BUG集