原创 DC是怎样综合RTL级设计的?

2020-6-12 10:24 3732 14 3 分类: FPGA/CPLD 文集: 技术学习
学习书籍《数字IC设计-方法、技巧与实践》笔记

对于软件DC(Design Compiler)而言,综合=翻译+优化+映射
翻译:是将RTL级描述转换成DC常用的布尔表达,优化是根据设计目标优化电路结构,映射则是选择合适的工艺库元件实现电路。
具体过程:
Step1 :将RTL级设计转成通用电路(与具体工艺无关)
Step2:优化这个通用电路。
    步骤1:高级优化(有三个类型):在DesignWare(synopsys的元件库)元件这一级别上进行
              (1)资源共享
                  首先判断代码中哪些不同行的操作符可能共享,再判断是否会导致时延特性改变,只要不恶化时延特性,则进行共享。至少能减少面积。
                 必须满足如下条件:
                         1)操作符必须位于条件语句的分支表达式里,同时这些条件分支必须互斥,且必须位于同一个过程当中。
                         2)不同条件语句则无法共享,如不同的case中的语句。
                         3)必须存在时序约束。

                       在这幅图中,原先是四个加法器的结果进入到选择器中,输出结果。资源共享后,先经过两个选择器,把加法的两个加数挑出来,再相加,这样付出了多一个选择器                        的代价,却省下了三个加法器。
                       注意:条件赋值语句?:中的资源无法共享。
              (2)公共子表达式共享
                        首先分析共享可能性,然后也需要判断对时延特性的影响。需要满足下述条件:
                                   1)公共的子表达式必须有相同的顺序,如y=a+b+c,y=a+b+d中的a+b可能共享;而如y=a+b+c,y=b+a+d却不行
                                   2)括号可以帮助DC工具识别公共子表达式
                                   3)需要时间约束
                 显然,RTL代码编写会影响到资源共享和子表达式共享的过程。
              (3)实现选择
                     决定使用什么样的结构来实现一个操作符,比如实现加法,可以是Carry-Look-Ahead结构或者Ripple-Carry结构。所以需要建立不同的电路,比较时延及面积,选择最                        优。所以必须要有时间约束。
   步骤2:逻辑级优化(布尔级优化)
              仍然使用通用元件,与具体工艺无关。
             第一种过程:扁平化(Flattening)
                               利用布尔运算法则,将设计中的中间变量和结构转换掉。
             第二种过程:结构化(Structuring)
                               给设计添加中间变量和逻辑结构。结构化中,综合工具会寻找可分解出来的子块,分析这些子块能否减少逻辑,并将其转换成中间变量。

               注意:对于本身就有很强结构性的设计,如加法器、乘法器等,使用结构化效果较好;对于一些随机性的设计,如指令译码,扁平化优化可以改善设计性能。

   逻辑级优化主要是针对表达式的结构,这主要是综合工具的工作,RTL代码编写影响不大

   步骤3:门级优化(映射)
               用目标工艺库的单元替换前面的通用电路,迭代替换,获取最佳效果。

文章评论0条评论)

登录后参与讨论
相关推荐阅读
狂野的牛哥 2019-10-29 11:08
秋招整理
签订三方结束秋招已经快一周了,想着回忆整理一下自己的秋招经历,留作纪念,也希望能帮助需要的人。坐标hf,目的城市hf或者wh,所以找工作的重点其实还是放在wh,hf和长三角区域,诸如北京,珠三角以及其...
狂野的牛哥 2019-08-16 20:55
步进电机驱动芯片TMC260使用经验
项目需要使用步进电机的驱动芯片,几经比较,选用了德国的TMC260,非常好用,工作起来稳健。芯片有两个完整的H桥,所以可用来控制两个直流电机或者一个二相四线步进电机。具体参数查看datasheet,大...
狂野的牛哥 2019-07-25 10:53
时序约束之偏移(OFFSET)约束
笔记本上整理记载了时序约束中的偏移约束,上传图片保存,以备日后查阅使用。...
狂野的牛哥 2019-06-20 16:34
ZYNQ学习笔记之First Project
做了第一个Project该工程功能:PS内部定时器开启定时,PL端GPIO连接按键和LED,通过按键按下产生从PL到PS的中断,中断服务程序是控制LED灯做流水灯闪烁,间隔时间为来自于定时器的1s。同...
狂野的牛哥 2019-06-20 15:30
ZYNQ学习笔记之时钟相关
通常模式下,锁相环PLL是启动的,PS-CLK提供时钟信号,经过三路PLL,分别是:ARM PLL,产生时钟用于CPU和互联;IO PLL,产生时钟用于IO外围设备;DDR PLL,产生时钟用于DDR...
我要评论
0
14
1
2
3
4
5
6
7
8
9
0
关闭 站长推荐上一条 /4 下一条