利用DC 进行逻辑综合(DC课件整理)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这些变量必须准确指定,否则可能产生意外的结果,灵活的使用这些变量可 以可以大大减少工作量例如:你可以指定了一个标准单元库作为一个目标库 (target_library),然后在 link_1ibrary 列表中指定压焊点工艺库以及所有其 它的宏模块(RAMS、ROMs、etc.),这意味着用户将能够利用标准单元库出现的 单元综合设计,然后再在设计中连接 pads 和宏模块的实例,如果压焊点工艺库 被包含在 target_1ibrary 列表中,那么 DC 可能使用 pads 综合内核的逻辑。 target_1ibrary 名也应该被包含在 link_1ibrary 列表中,这很重要,因为如果 link_library 中没有 target_library 的内容,那么当把门级网表读入 DC 中时, DC 将不能解析在网表中映射的单元,这种情况下 DC 产生警告信息,它不能解析
1.1概述
芯片综合的过程:芯片的规格说明,芯片设计的划分,预布局,RTL 逻辑单元的 综合,各逻辑单元的集成,测试,布局规划,布局布线,最终验证等步骤。设计 流程与思想概述:一个设计从市场需求到实际应用需要运用工程的概念和方法加 以实现,这需要工程人员遵循一定的规则按一定的设计步骤进行操作。下面我们 给出了一个设计工程通常的工作步骤(请参见设计流程图)。从图中可以看出对 一个完整的设计流程来说,可以将工作划分为两个阶段:前段设计和后端设计。 前端工作主要完成 IC 与通讯整机设计接口问题,以及整个 IC 的内部总体结构设 计;而后端工作则主要是在前段设计的基础上,使用 EDA 工具,遵循设计流程, 完成整个 IC 设计。 1.1.1 逻辑综合简介
Synopsys 的 EDA 软件支持许多变量、对象、和综合流程中的各种属性,使用 这些元素设计者可以写出强有力的综合脚本,完成自动综合的过程。因此必须熟 悉这些术语。设计对象包括以下几个: 1)设计(Design):
设计就是完成一定逻辑功能的电路描述,设计可以是单独的一个描述也可以 在内部包含其他的子设计,虽然子设计是当前设计的一部分,但是 Synopsys 将 它们当作另外的设计来看待。 2).端口(Port): 一般就是指设计的输入、输出端,它是设计与外界联系的窗口。 3).时钟(Clock):
运行脚本使用命令:source scp.tcl
1.2时序约束
如何根据设计要求加约束:约束一般包含了一个设计必须要满足的条件,通 常在对设计加约束时需要反复的操作。下图给出了加约束的流程。
写RTL代码
重写
no
仿真 OK?
yes
no
主要异常
yes
把RTL代码综合成 门级单元
约束
分析
no
满足约束吗
yes
在网表中出现的单元的参照。目标库和连接库系统变量允许设计者更好的控制单 元的映射,这些变量也提供了一种有用的途径,用它们来重映射门级网表使门级 网表由一种工艺转向另一种,在这种情况下,link_1ibrary 能够包含老的工艺库 的名字,然而目标库能够包括新的工艺库的名字,重映射可以通过在 DC 中使用 translate 来进行。
综合就是将设计的原始思想转化为可大规模生产的并可以执行预期功能的 器件这一过程。长期以来,硬件描述语言(HDL)只是用于逻辑验证, 设计者不 得不手工将 HDL 代码转化为逻辑图并且画出组件间的互连线用以产生门级网表。 随着综合工具的改进,这些手工操作渐渐由工具替代了,设计人员可以由工具自 动完成 HDL 代码到门级网表的转化,这项工作就是综合。
设计流程图 市场调查与产品分析
结构划分和RTL级描述
将时钟树的信息传送给DC
RTL仿真
逻辑综合,优化 和插入扫描链
形式验证(RTL 和门级网表)
版图设计前的 静态时序分析
no 时序满足要求吗
yes
预布局、布 局、插入时钟 树、全局布线
形式验证(扫描链 和时钟树插入后 全局布线后进 行STA
时序满足将要求吗
DFF1
组合逻辑 Q
CLR
SET
DQ DFF2
Q
CLR
out
CLK
DFF1 DFF2
delay Slack
setup
Data_arrival_time Data_repuired_time
建立时间原理图
图中假定数据在一个时钟上升沿从 DFF1 的 Q 端发出,在下一个时钟上升沿从 DFF2 的 D 端捕获,那么数据经过组合逻辑的延迟到达 D 端必须要满足一定的要 求。即数据不能太慢,否则在下一个时钟上升沿 DFF2 可能因为没有准备好而无 办法捕获数据。这时我们把这种情况叫做 setup 时间异常。
“slow.db”
2、1ink_1ibrary 变量:是用来解析设计参照的。 set link_library “* slow.db” *号代表 DC 内存,后面接着的是指定的目标库(如果这个变量没有加 入目标库的名字则可能会存在单元不能解析的问题)。link_1ibrary 中指定的工 艺库的名字只与用做参照的单元库有关,在 link_1ibrary 指定的工艺库不是为 了给 DC 做优化判断的。它主要用在综合的转换阶段用以生成 GTECH 中间文件。
与自然界的事物类似,设计对象也有它们自己的属性,这些属性保存了相关 对象的特征信息。一般 DC 会预定义对象的一些属性,设计者可以针对实际情况 为对象指定属性或得到相关属性。有些属性由 DC 单独拿出作为预定义的属性, 例如:设计的 dont_touch 属性由专门的命令 set_dont_touch 指定,使得具有这 个属性的设计在 DC 做优化时不再考虑。得到属性或设定属性也有专门的命令: set_attribute <object list> <attribute name> <attribute value> 这条命令可以为给定对象的具体属性指定相应的值。 get_attribute <object list> <attribute name> 这条命令可以得到给定对象具体属性的相关值信息。
关键变量的介绍:
1、target_1ibrary变量:是DC中保留的变量,这个变量指定的库是DC用来构建
一个电路的。DC进行映射的几个步骤:设置它让它指向你的生产商提供的库文件。
使用厂家提供的工艺库中的时序数据计算这些门的时序。从target_1ibrary指定
的库中选择功能正确的门。设定目标库使用如下语句: set target _1ibrary
码经过转换得到 GTECH 中间代码文件,然后再经过优化和映射两个过程将 GTECH 中间文件转化为工艺库中对应的具体单元。GTECH 中间文件与具体工艺 无关,它只是相当于将 HDL 源代码利用连接库忠实的转换为门级的逻辑连接结 构,如果遇到算符则使用 DesignWare 将算术表达式用相应的宏单元代替产生对应 的门级结构。
target_1ibrary 和 link_1ibrary 的不同:target_1ibrary 指定的工艺库 与设计者让 DC 做优化并与产生最终映射的单元库一致,而 link_library 指定的 库是在 DC 转换阶段用以生成 GTECH 中间文件的。 3、search_path 变量:可以给 DC 指定寻找文件时的的工作路径。解析时 DC 首先, 寻找内存,然后寻找 1ink_1ibrary 变量指定的库文件。接着,DC 寻找所有的 search_ path 变量中指定的路径。 4、symbo1_1ibrary:这个系统变量指定的库包括了工艺库中单元的图形 slow.sdb, 当使用图形化的前端工具时,它可以用来表示门级的逻辑图,如果不指定则工具 使用默认的 generic.sdb。
约束包括对时序的约束、对操作条件的约束。 因为每个 Wafer(晶片)的面积是固定有限的,为了将电路能放在这个有限的区 域中必须对电路的尺寸进行约束,所以使用面积约束。对面积的约束 (set_max_area 100) 1.2.1 基本原理 时序目标:同步设计 同步:数据来自时序设备,数据去向时序设备,并且各个寄存器时序的相位满足 固定关系。 时序约束的各个路径(四种)
DC 工作时需要预先设定一些系统变量用以指示 DC 的综合工作,这些变量放 在初始化文件中,启动 DC 程序时初始化文件按顺序起作用,后启动的可以覆盖 先启动的。DC 的初始化文件(.synopsys_dc.setup)在三处存放。初始化文件执 行顺序位置依次为:第一顺序放在安装目录中 SYNOPSYS/admin/setup/.synopsys_dc.setup 它拥有 DC 的所有原始的初始化信息 用户一般不改。第二顺序放在使用 DC 的用户根目录中,用来管理项目。可以设 置通用的变量属性值。第三顺序放在启动 DC 的当前目录中,含有当前设计中需 要的初始化信息。如果在当前目录中没有初始化文件,用户需要手工创建。 1.1.3 设计对象和属性
设计的抽象层级依次为:原始设计思想、器件的功能描述、设计的行为级 描述、寄存器传输级(RTL)、门级网表、物理设备可复用性(可以通过使 用参数化代码、构建好的逻辑块、重新定位新库等手段达到目的)、可验证性、 可以更加抽象等等。
综合是由约束来驱动的。 ①环境属性约束:PVT,线负载模型、模式。 ②设计规则约束:面积,扇出,驱动,负载。 ③时序约束。
时钟的源可以是端口也可以是引脚,时钟的指定可以在库的内部也可以用 dc_shell 的命令来实现。 4).连线(Net):
连线可以将端口或引脚相互连接起来实现设计的组装和电路的连通。 5).参照(Reference):
它是一个单元/实例参考的原始设计。例如,网表中的叶单元必须参考连接 库找出完成单元功能的参照,类似的,一个实例的参照就是完成该实例功能的一 个子设计。 6).单元(Cell):
设计流程图结构划分和rtl级描述rtl仿真逻辑综合优化和插入扫描链形式验证rtl和门级网表版图设计前的静态时序分析时序满足要求吗预布局布局插入时钟树全局布线将时钟树的信息传送给dc形式验证扫描链和时钟树插入后全局布线后进行sta时序满足将要求吗详细布线版图设计后进行sta时序满足将要求吗信号一致性signoff将设计备份yesnoyesno市场调查与产品分析综合是基于路径的
它是子设计在设计中的实例(instance)名,在 Synopsys 术语中单元和实 例不区分对待,它们都是单元。 7).引脚(Pin)
它是设计内部单元的输入、输出端,与端口不同的是,端口是设计用来对外
联系的。 这是七类对象类型。不同类型的对象可以使用相同的名字。如果要在在 dc_
shell-t 中发现对象可以使用以下命令: get_designs: 可以得到指定的设计。 get_cells:可以得到指定的单元。 get_nets:可以得到指定的内连线。 get_ports:可以得到指定的端口。 get_clocks:可以得到指定的时钟。 all_inputs:可以得到所有的输入端口。 all_outputs 可以得到所有的输出端口。
在综合以前设计必须以 RTL 格式进入 DC 的内存(虽然,其他格式也可能存 在)。读入设计后 DC 会根据用户写的约束脚本自动对设计进行综合。 写约束脚本书的步骤: 读入设计。(read_verilog design.v) 对设计进行约束。 对设计进行综合。 产生报告检查设计。 保存设计。(write –format db –output design.db)
① 从输入到寄存器 ② 从寄存器到寄存器的(内部) ③ 从寄存器到输出 ④ 从输入到输出 寄存器的建立(setup)和保持(hold)时间 setup 和 hold 时间是工艺库中指定的时序器件的特性参数。 电路必须满足 setup/hold 时间的要求数据才能稳定的接受和发送。
A D SET Q
详细布线
版图设计后进 行STA
时序满足将要求吗
no yes
信号一致性(Sign-off) 将设计备份
综合是基于路径的。 设计编辑器(DC)通过使用静态时序分析来计算设计中各路径的时序。时 序路径的种类有四种:输入到寄存器;寄存器到寄存器;寄存器到输出;输入到 输出 1.1.2 初始化文件及系统保留变量 工艺库一般由 ASIC 供应商提供,它必须与 DC 兼容以便用 DC 进行综合。 单元综合的流程:综合的过程 = 转化 + 优化 + 映射。一般,设计的 HDL 源代
利用 DC 进行逻辑综合
一.综合流程以及约束的编写: 一般来说,集成电路的设计过程可分为前端设计(front end)和后端设计
(back end)两个阶段。在前端设计阶段,根据用户需求,确定设计所要实现的 功能和时序,并确定出具体的数字逻辑电路(schematic);在后端设计阶段,由 电路逻辑图产生相应的电路版图(layout)。
相关文档
最新文档