Design Compiler初体验
安装VCS之后,在装DC果然顺手很多啊!
综合主要包括三个阶段:转换translation、优化optimization与映射mapping。
转换阶段:将HDL语言描述的电路用门级逻辑实现。对于DC,使用gtech.db库中的门级单元来实现HDL语言描述的电路,得到初始的未优化的电路。
优化与映射:综合工具对初始电路进行分析,去掉冗余单元,并对不满足限制条件的路径进行优化,将优化后的电路映射到由制造商提供的工艺库上
综合的特点:
1、 综合是限制条件驱动的
限制条件就是综合的目标
2、 综合是基于路径的
Design Compiler在做综合时,会调用静态时序分析的工具Design timer对电路中的有效路径进行静态时序分析,很据时序分析结果对电路进行优化
电路综合的要求
综合脚本必须是可重用,包括两个部分
1) 电路设计过程中,当后端工具提取出线负载模型后作综合或者在布局布线完成之后再做综合,保证添加的限制条件与初始时的综合是相同
2) 当系统参数改变时,例如模块从16位变为32位,而模块的功能没有改变时,可以保证不改变综合的脚本,只改变其中的参数就可以实现该目标。即综合脚本是参数化
限制条件,必须对以下对象施加限制条件
1) 电路中必须要有时钟的定义
综合之后的电路必须是同步电路,如果是异步电路或者模拟电路,需要单独处理,而同步电路需要设置时钟或者虚拟时钟
2) 保留时钟网络,不对时钟网络进行综合
3) 综合时需要制定线负载模型,用于估计连线延迟
4) 限制模块中组合电路的输入输出延迟
5) 限制输出的带负载能力(Loading budget)以及输入的驱动单元(drving cell)
6) 模块同步输出的输出延迟(output delay)的限制,以及同步输入的输入延迟(input delay)的限制
7) 多周期路径(multicycle path)以及非法路径(false path)的限制
8) 工作环境的定义
综合结果的要求
1) 综合的结果中没有时序违反(timing violation),即综合的结果必须满足时序性能的要求
2) 综合后的门级网表必须已经映射到工艺库上
3) 综合后的门级网表中应避免包含如下电路结构
■在同一电路中同时含有触发器和锁存器两种电路单元
■在电路中出现有反馈的组合逻辑
■用一个触发器的输出作为另外一个触发器的时钟
■异步逻辑和模拟电路未单独处理
■使用的单元电路没有映射到工艺库中
RTL Code功能验证 + 电路的工作环境和限制条件 = 门级网表 + 用于分析电路的综合报告 + 时序信息等等
输出用于后端设计以及验证
另外在综合的过程中,需要对测试进行处理,即在电路中插入扫描链,此电路结构用于以后的电路测试。
verilog各种语言成分的综合结果
如果在使用if语句时,没有指出条件判断的所有可能情况,会在电路中引入锁存器(Latch),由于锁存器和触发器两种时序单元共存的电路会增大测试的难度,因此,综合的时候尽量只选用一种时序单元。
为了不在电路中引入锁存器,可以在使用该语句时设置缺省的状态,即在判断条件之前先对输出赋值,或者使用if。。。else if 。。。 else的语句结构