IC设计基础-综合
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、综合的概念
用verilog或者vhdl设计电路,需要将语言描述转换为电路图描述,即用芯片制造商提供的基本电路单元(综合库)实现我们用硬件描述语言(verilog或vhdl)描述的(RTL级)电路的功能,这个过程就称为综合。
1.综合的步骤
●转译(Translation):读入电路的RTL级描述,将语言转译成每条语句所对应的功能块
以及功能块之间的拓扑结构,这一过程的结果是在综合器内部生成电路的布尔函数的表达,不做任何的逻辑重组和优化。
●优化(optimization):基于所施加的一定时序和面积的约束条件,综合器按照一定的算
法对转译结果作逻辑重组和优化。
●映射(mapping):根据所施加的一定的时序和面积的约束条件,综合器从目标工艺库
(Target Technology)中搜索符合条件的单元来构成实际电路。
由芯片制造商(Foundry)提供的工艺库,是一系列的基本单元,如与非、或非、反相器、锁存器、触发器、选择器等等。对这些单元的电气可以进行描述,例如:单元的面积、输入电容。输出端的驱动能力、单元的逻辑能力、单元的时序等等。综合的目标就是用工艺库文件提供的这些单元来实现用RTL代码描述的逻辑功能,并满足设计者提出的面积和时序要求。
2.对设计者的要求
一个合格的设计者,应该能够在自己脑子里再现“转译”这个过程,即清楚自己用HDL 语言所构造的电路结构是什么样子的。写代码时,请时刻记住三个准则:
“think hardware”:要时刻想着代码所描述的电路结构,熟悉不同代码的结构,清楚通过综合能获得怎样的硬件实现,这个是芯片设计者所必须具备的素质。同时必须记住,综合器无法帮助用户实现功能,无法做算法或功能的优化,而只能够在已有功能的基础上按照用户的要求选择较优的实现。
“think synchronous”:要时刻关心电路的同步问题。同步电路设计的有点在于系统中信号流的可预见性,因此避免了诸如时序设定和实现上的困难。在综合时,如果将同步或一部时序设计混合在一起,采用同样的约束条件,有可能导致最后的结果和预期的不一致,因此为确保综合前后的设计在功能上的一致,设计中应尽可能使用同步电路,或者将设计中同步的部分和异步的部分分成不同的模块,采用不同的综合方法。此外,一个大的设计可能存在两个或者两个以上的时钟,最好将不同的时钟域(clock domain)划分为不同的模块,便于简化综合时时序约定的设定。
“think RTL”:要清楚寄存器构造、电路拓扑及寄存器之间的功能部分。可综合的设计是我们通常说的RTL(Register Transfer Level)级,从电路上可知,就是描述电路中寄存器的机构和寄存器之间的功能实现。而综合工具需要做的就是将以确定的寄存器之间的逻辑加以优化。因此寄存器的分配是获得好的设计的关键。
二、Design Complier简介
DC所提供的功能包括:
●层次化的综合(如由上而下或由下而上的综合策略)
●全面(full)和递进式(Incremental)的综合方法
●针对复杂的触发器和锁存器的优化时序
●I/O脚的插入和优化
●利用状态表的方法优化有限状态机(FSM) ●层次的边界优化
在UNIX 下,有四种方式执行DC 。它们分别是:
● 图形界面design_vision 。这个图形界面的工具支持TCL 。
● 图形界面design_analyzer 。这个图形界面的工具不支持TCL 。
● 命令行界面dc_shell –t 。这个命令行界面支持TCL 。
● 命令行界面dc_shell 。在UNIX 的环境下,,键入dc_shell ,即可以进入这个模式。然后
可以键入各种命令,以命令行的方式执行DC 的命令。通常情况,我们先编辑一个脚本文件(例如:design.scr ),然后键入dc_shell –f design.scr ,就可以启动DC 并执行文件种的各条指令。
三、综合条件的设置
DC 在进行综合时,要进行延时计算和设计规则检查。需要设置相关内容主要包括:操作环境;导线负载模型;设计约束;设计规则约束。
1、 操作环境
操作环境是将来芯片要工作的环境。
操作环境包括:操作温度、供电电压、制造工艺的
q
图3.1 建立时间和保持时间 in ck 图3.2 DC 中的各种约束对象 Port
Clock
偏差。芯片的操作温度、供电电压、制造工艺的偏差,以及工作的电压等等都会对时序产生影响,如果没有这些参数的设置,则DC难以准确的估计时序。
一般来说,电压越高,温度越低,同时生产流片时的工艺偏差系数越小,产品的速度越快;反之则越慢。因此在综合库中一般都会提供worst、typical、best三种模式,代表最坏、典型和最好三种情况。如下面的例子:
Operating conditions
Name Library Process Temp V olt Interconnect Model
------------------------------------------------------------------------------------
BEST csm06 0.80 0.00 5.50 best_case_tree TYPICAL csm06 1.00 25.00 5.00 balanced_tree
WORST csm06 1.20 125.00 4.50 worst_case_tree
操作条件在工艺库文件中进行了定义。下面给出一种操作条件的定义:
Operating_conditions (“WCCOM”) {
prosess:1.2;
temperature:150;
voltage : 1.65;
tree_type : “worst_case_tree”;
}
选择操作条件时,可以用如下方式:
dc_shell>set_operating_conditions WCCOM –library mylib
2、导线负载模型
在实际电路中,导线具有电阻和电容,当连线比较长时,也会对信号的延时产生较大的影响。在深亚微米的设计中,连线延时不能忽略。
下面给出一个导线负载模型:
wire_load(”4000”){
capacitance : 0.0002;
resistance : 0.25e-3;
area : 0.01;
slope : 80.5;
fanout_length (1, 12.0);
fanout_length (2, 25.0);
fanout_length (3, 40.0);
…
fanout_length (20, 500.0);
以上是一个连线模型。这里的电容、电阻和面积值是相对连线长度的比例因子,slope 为外插值的斜率;为获得完整的电容、电阻和连线面积,DC先要预估计出该连线的长度。在工艺库中,可以用如下方式选择此导线负载模型:
default_wire_load : “4000”;
3、设计约束
设计约束主要包括两类,一类是与性能有关,一类是与面积有关的。
1)性能约束
性能约束主要包括:
时钟(creat_clock与set_clock_skew);