IC设计基础-综合

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档