730 likes | 1.11k Views
逻辑综合基本概念. 主要内容. 1 、逻辑综合基本概念 a) Synopsys 综合工具及相关工具 b) 逻辑综合环境 c) 对象、变量和属性 d) 查找设计对象 e) Synopsys 格式 f) 数据组织格式 g) 设计输入 2 、逻辑综合入门 a) 使用图形界面和菜单方式 b) 书写脚本( scripts) 方式. 综合的定义. 逻辑综合:决定设计电路逻辑门的相互连接。 逻辑综合的目的:决定电路门级结构、寻求时序和与面积的平衡、寻求功耗与时序的平衡、增强电路的测试性。
E N D
主要内容 1、逻辑综合基本概念 a) Synopsys综合工具及相关工具 b) 逻辑综合环境 c) 对象、变量和属性 d) 查找设计对象 e) Synopsys格式 f) 数据组织格式 g) 设计输入 2、逻辑综合入门 a) 使用图形界面和菜单方式 b) 书写脚本(scripts)方式
综合的定义 • 逻辑综合:决定设计电路逻辑门的相互连接。 • 逻辑综合的目的:决定电路门级结构、寻求时序和与面积的平衡、寻求功耗与时序的平衡、增强电路的测试性。 • 逻辑综合的过程:首先,综合工具分析HDL代码,用一种模型(GTECH) ,对HDL进行映射,这个模型是与技术库无关的;然后,在设计者的控制下,对这个模型进行逻辑优化;最后一步,进行逻辑映射和门级优化,将逻辑根据约束,映射为专门的技术目标单元库(target cell library)中的cell,形成了综合后的网表。
Synopsys产品 • Library Compiler • Design Compiler和Design Vision • Physical Compiler • Prime Time • DFT Compiler • Formality
1.1 Synopsys综合工具及相关工具 包括:设计编译器(Design Compiler)和设计分析 器(Design Analyzer) • 是逻辑综合工具,根据设计规范和时序约束,提供最佳的门级综合网表,除了高层次综合能力,还包含一个静态分析引擎。
Design Compiler(DC) 是Synopsys逻辑综合工具的命令行接口, 在Unix环境下输入dc_shell或dc_shell –t启动。 • dc_shell是基于Synopsys自身语言的原有格式 • dc_shell –t使用标准的TCL语言。 Design Vision(DA) • Design Vision是DC图形化的前端版本,通过调用Design_Vision&启动,支持电路原理图生成,可以通过点对点高亮来显示及分析关键路径。
设计编译器(DC)和设计分析器(DA) • 包括非常强大的逻辑综合软件包,提供了基于设计规范的门级逻辑综合和时序约束。 • 除了高层次逻辑综合,它还具有静态时序分析机制、测试综合、FPGA解决方案和与版图工具连接等。 • DA:图形界面,直观、容易入门 • DC:自动化设计程度高.提高设计效率、减小 人为因素
相关工具(1):库编译器(Library Compiler) • 工艺库建库工具 • 任何ASIC设计都具有一组逻辑单元的工艺库。库包括库申明、库属性、库应用环境和每个单元的功能描述、时间延时、面积和其他相关的信息。 • LC首先分析库的文本信息(.lib格式)的完整性和正确性,然后转换成所有Synopsys应用程序都能使用的格式(.db格式)。 • 在Unix环境下,库编译器是输入lc_shell启动的。所有的LC性能也能够在dc_shell(Design Compiler环境)中使用。
相关工具(2) Physical Compiler • 是Synopsys的一个新工具,是DC的一个超集。除了包含DC全部的综合与优化功能外,还提供根据时序和面积约束同时优化放置单元的能力。 • PHC由输入psyn_shell调用,也可以通过psyn_gui使用单独的GUI版本,虽然比较慢, psyn_gui为用户提供了逻辑与电路原理之间的切换。 • Psyn_shell可以使用DC_shell命令,反之不可
相关工具(3): PrimeTime • DC可以完成模块级的静态时序分析。 • PrimeTime是Synopsys高效的、整个芯片级设计进行的静态时序分析工具。静态时序分析是针对版图前和版图后的门级网表进行的。 • PT比DC内部的静态时序分析机制快得多。它也提供了更强的分析能力,包括文本的和图形界面的。与Synopsy其它工具不同,它是基于Tcl语言的,因此具有更加强大的分析和调试设计的能力。 • 是一个独立运行的工具,既可以命令方式调用,也可以图形方式调用。Unix命令行键入pt_shell,使用图形方式则需要键入Primetime。
相关工具(4):测试编译器(Test Compiler) • TC是Synopsy测试插入工具,用来在设计中插入DFT(Design For Test)电路,如扫描链插入和边界扫描。 • TC和DC工具相结合使用。 • 所有TC命令都是直接在dc_shell中执行。
DFT Compiler: • 是包含在DC中的测试插入工具,用于设计插入DFT特性,如扫描插入或边界扫描。 • 所有的DFT命令直接从DC_shell和psyn_shell调用。
Formlity • 是Synopsys的形式验证工具,是逻辑等价检测工具,具有增强的图形调试能力。
DC简介 • Synopsys Design Compiler,是一个基于UNIX系统,通过命令行进行交互的综合工具,除了综合之外,它还含有一个静态时序分析引擎及FPGA和LTL(links-to-layout)的解决方案。 • script文件:由DC的命令构成,可使DC自动完成综合的整个过程。 • DC支持的对象、变量、属性 • DC支持的文件格式及类型 • DC在HDL代码中的编译开关,控制综合过程 • Translate_off/translate_on:指示DC终止或开始verilog 源代码转换的位置。 • full_case:阻止case语句在不完全条件下生成latch。
综合阶段 • 包括三个阶段: • 转换(translation) :将高层语言描述的电路用门级的逻辑来实现 • 优化(optimization):去掉电路中的冗余单元,并对不满足限制条件的路径进行优化 • 映射(mapping):映射到由制造商提供的工艺库上。
b)逻辑综合环境 (1)启动文件(startup files) DC : .synopsys_dc.setup 定义工艺库的路径和其他用于逻辑综合的参数。 在启动软件的时候,DC按下列顺序读入启动文件的: 1) Synopsys安装目录下的启动文件: $synopsys/admin/setup 2) 用户根目录下的启动文件; 3) 项目工作目录下的启动文件;
.synopsys_dc.setup启动文件 company =“Fudan University”; designer =“Your name”; technology =“0.6 micro csmc”; search_path =search_path+{“.” ~/csmc06/lib” }; target_library ={csmc06core.db}; link_library ={*, csmc06core.db, csmc06pad.db}; symbol_library ={csmc06core.sdb, csmc06pad.sdb};
(2)系统库变量 search_path:定义库文件所在的搜索路径 连接库(link_library):是提供门级网表实例化的 基本单元,也就是门级网表实例化的元件或单元都 来自该库。连接库定义为标准单元的db格式的库文 件加上pad db格式的库文件,加上ROM,RAM等 宏单元库文件 目标库(targe_library):是DC在mapping时将设 计映射到特定工艺所使用的库,就是使用目标库中 的元件综合成设计的门级网表
系统库变量 • 符号库(symbol_library):是工艺库元件的图形符号表示,用来图形化显示生成的门级网表。
c)对象、变量和属性 • 为了使逻辑综合过程更加方便,Synopsys支持许多的对象、变量和属性。 • 使用这些参数,设计人员可以写出强大的dc_shell脚本文件来自动进行逻辑综合。
(1)设计对象:8种类型 • 设计(Design) • 单元(Cell) • 参考(Reference) • 端口(Port) • 管脚(Pin) • 线网(Net) • 时钟(Clock) • 库(Library)
EX: Design module top(A,B,C,D,CLK,OUT1); input A,B,C,D,CLK; output OUT1; …. INV U2(.A(BUS0),.Z(INV0)); …. endmodule Port cell pin reference
(2)变量 • 变量是DC用于存储信息的符号。 • 变量,一种标识符,DC用于存储信息,可做为命令的操作参数。 • DC预定义的变量,可用它获得综合过程中的有关信息,如dc_shell_status; • DC预定义的变量总有一个缺省值,用户可定义另外的值,如; • dc_shell>vhdlout_use_package={library IEEE.std_logic_1164;\ • library STD_LIB;}
信息是与生成最后网表的指令相关的,或者它包含使用者用于自动逻辑综合所定义的值。信息是与生成最后网表的指令相关的,或者它包含使用者用于自动逻辑综合所定义的值。 • 有些变量是DC预先定义的,可以被设计人员用来获得存储在变量中的当前值。 • 所有的DC变量列表可以通过使用dc_shell命令获得:list –variables all • Ex:bus_naming _style “%s[%d]” company “Fudan University”
用户定义的变量,用于自动化综合的过程。如,可定义一个变量,存储某个时钟域的flop的个数。用户定义的变量,用于自动化综合的过程。如,可定义一个变量,存储某个时钟域的flop的个数。 • 定义变量:dc_shell>designer=“myname”; • 获得UNIX的环境变量: dc_shell>designer=get_unix_variable(“USER”) • 显示变量的值: dc_shell>List target_library • target_library=“cbacore.db” • 列出所有的变量: dc_shell>List – variable all • 移去变量: dc_shell> remove_ variable designer,变量没有移去之前,不得重新定义。 • 注:变量值不会被保存在设计数据库中。
(3)属性 • 属性在本质上和变量相似,都为了存储信息。然而,属性存储特定设计对象的信息,如线网、单元和时钟。 • 属性可以通过以下命令进行设置和读出: set_attribute <object list> <attribute name> <attribute value> get_attribute <object list> <attribute name> • EX:get_attribute find( port, din*) load dc_shell>get_attribute STD_LIB default_max_transition
d)查找设计对象 • DC中最有用的命令之一就是find命令。 • 在逻辑综合过程,定位到对象是非常必要的。 • Find命令用来定位设计中的或者库中的单元。 • Find <type> <name list> -hierarchy (1)Type指的是对象类型:设计、端口、参考、单元、时钟、连线、管脚和库。
(2)Name list 可选项,它用来定义dc_shell环境下的设计或者库。如果省略,将针对这个对象类型的所有对象。 (3)Find命令中最重要的参量是-hierarchy选项。它可以用来强制在整个层次设计中查找。 • EX:dc_shell>find port //列出当前设计的所有端口
其他有用的命令 • 寻找库(csmc06core库)中max_transition的值和库中倒相器IN01D1的面积属性。 get_attribute csmc06core default_max_transition get_attribute csmc06core/IN01D1 area help attribute命令可以列出DC中所有属性。
其他有用命令: report_port –verbose report_clock reset_design和list -libraries
e)Synopsys格式 • 所有synopsys工具都支持和共享一种内部共同结构称为“.db”格式。 • db格式文件是编译的二进制格式,它可以表示文本数据、RTL级代码、映射后门级网表和synopsys库 • db文件还能包含施加在设计中的任何约束 • 所有synopsys工具都能支持所有HDL:包括Verilog、VHDL和EDIF等,包括读入和写出这些格式。
f)数据组织格式 使用文件的后缀进行分类: • Scripts文件: <filename>.scr • RTL级Verilog文件: <filename>.v • 综合后Verilog网表: <filename>.sv • RTL级VHDL文件: <filename>.vhd • 综合后VHDL文件: <filename>.svhd • EDIF文件: <filename>.edf • Synopsys数据文件: <filename>.db • 报告文件: <filename>.rpt • 日志文件: <filename>.log
g)设计输入 • DC提供了下面两种方式读入设计: • read命令 • analyze&elaborate命令(先分析语法等,再构成具体逻辑)
2、逻辑综合入门 a) 使用图形界面和菜单方式 • 逻辑综合工具Synopsys Design Analyzer • 在Unix环境下,输入da&启动Design Analyzer
1)、设置库文件 • Stepup->Defaults
2)、读入设计文件 • File->Analyze
Environmental attributes • Set load
Environmental attributes小结 • Set_operating_conditions • Set_wire_load • Set_load