第六章 dc_shell综合脚本

合集下载

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

利用DC 进行逻辑综合(DC课件整理)
这些变量必须准确指定,否则可能产生意外的结果,灵活的使用这些变量可 以可以大大减少工作量例如:你可以指定了一个标准单元库作为一个目标库 (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):

DC综合全过程及使用的命令

DC综合全过程及使用的命令

DC综合全过程及使用的命令DC的初始化文件.synopsys.dc.setup,该文件是隐藏文件,需要用ls –a显示读取文件DC支持多种硬件描述格式,.db .v .vhd等对于dcsh工作模式来说,读取不同的文件格式需要不同的参数Read -format Verilog[db\vhdl ect] file //dcsh工作模式对于tcl工作模式来说,读取不同文件格式使用不同的命令。

Read_db file.db //tcl工作模式读取db格式Read_verilog file.v //tcl工作模式读取verilog格式Read_vhdl file.v //tcl工作模式读取vhdl格式读取源程序的另外一种方式是配合使用analyzer命令和elaborate命令;Analyzer是分析HDL的源程序并将分析产生的中间文件存于work(用户可以自己指定)的目录下Elaborate则在产生的中间文件中生成verilog的模块或者VHDL的实体缺省情况下,elaborate读取的是work目录中的文件当读取完所要综合的模块后,需要使用link命令将读到DC存储区中的模块或实体连接起来注意:如果在使用link命令后,出现unresolved design reference的警告信息,需要重新读取该模块,或者在.synopsys_dc.setup 文件中添加link_library,告诉DC到库中去找这些模块,同时还要注意search_path中的路径是否指向该模块或单元电路所在的目录Link命令执行后,DC就将模块按照RTL级或者门级的描述将电路连接起来,之后的各种限制条件就可以对该电路的顶层模块施加DC限制条件施加的对象针对以下电路成分:输入输出端口、模块、子模块的实例化、单元电路、连线及电路的引脚。

在使用DC命令的时候,不要使用模糊的对象,例如,如下面的电路:Set_load 3 Clk由于在电路中含有名称为CLK的pin、port和net,因此,DC无法知道该处的load是施加在哪个对象上,注意到一般连线会驱动负载,该命令就改为:Set_load 3 [get_nets Clk] TCL modeSet_load 3 find(net,”Clk”)dc_shell mode路径的划分与合法路径DC综合的时候是基于路径的优化,对于DC来说,合法的路径必须满足以下条件路径的起点为输入端口或者是触发器的数据端路径终点为输出端口或者是触发器的时钟端DC设定的限制条件的值都是无单位的,这些单位都是由工艺库中给定的可以用report_lib lib_name来查看所有在工艺库中设定的各个参数的单位定义电路的工作环境和综合环境1.Set_operating_conditions不同的工作环境对应的单元电路的延迟不相同温度升高、电压降低、电路的特征线宽增大都会使得单元电路的延迟增大电路的工作环境一般在工艺库中都有给定命令格式:set_operating_conditions [–min min_condition] [–max max_condition] [-min_library min_lib] [–max_library max_lib]命令使用说明指定DC进行优化时使用的工作环境,其中工作环境的指定必须在库中指定,或者在link_library中的其中一个库中指定,如果不指定operating_conditions,DC自动搜索link_library中的第一个库的工作环境作为优化时使用的工作环境可以用get_attributes语句取得库中缺省的工作环境-max选项指定电路最大延迟分析(分析电路是否满足触发器建立时间set up的要求)的工作环境-min选项用于指定电路最小延迟分析(分析电路是否满足触发器保持时间hold time的要求)的工作环境,该选项不能单独使用,必须与-max同时使用如果不指定用于分析最小延迟的库,则只使用-max中指定的库用于电路的延迟分析-min_library选项指定用于电路最大延迟分析的工艺库-max_library选项指定用于电路最小延迟分析的工艺库2.set_min_libraryVendor可能提供多个不同的工艺库,用于分析电路的时序,不同工艺库定义了不同的工作环境、不同的线负载模型、不同的单元延迟时间,这是可以将这些苦都指定用于分析电路的延迟命令格式:set_min_library max_library –min_version min_library | -none命令的使用说明:该命令指定max_library用于分析电路的最大延迟,min_library用于分析电路的最小延迟。

启动dc_shell工具的.synopsys.setup文档

启动dc_shell工具的.synopsys.setup文档

设置启动dc_shell-t工具的.synopsys.setup文件Author:周建伟Company:西安邮电大学SOC组Date:2013.10.30摘要:若你在读不进你的库,即在你的运行报告中总是有:warning:Can‟t read link_library file …your_library.db‟,这边文档会对你有一定的帮助逻辑综合环境启动文件启动文件用来指定综合工具所需要的一些初始化信息。

DC使用名为“.synopsys_dc.setup”的启动文件(位置:inst_dir/admin/setup/.synopsys_dc.setup)。

启动时,DC会以下述顺序搜索并装载相应目录下的启动文件:DC安装目录($DC_PATH/admin/setup)用户主目录工具启动目录注意:后装载的启动文件中的设置将覆盖先装载的启动文件中的相同设置本文档重在讲述怎么设置工具启动目录1、把inst_dir/admin/setup/.synopsys_dc.setup文件拷贝到你DC脚本目录下(也就是和你脚本在同个目录下)2、在.synopsys_dc.setup文件的第92行,即set link_force_case “check_reference”命令下修改内容如下:A、set lib_path /library/smic18/feview~2/version2.2(注:lib_path为你smic18库安装目录,不同于DC安装目录)B、set link_library [list * $lib_path/STD/Synopsys/smic18_ss.db \$lib_path/IO/Synopsys/smic18IO_line_ss.db \$lib_path/IO/Synopsys/smic18IO_stagger_ss.db ]C、set search_path [list . ${synopsys_root}/libraries/syn ${synopsys_root}/dw/syn_ver \${synopsys_root}/dw/sim_ver \$lib_path/STD/Synopsys $lib_path/IO/Synopsys ]D、set target_library [list $lib_path/STD/Synopsys/smic18_ss.db \$lib_path/IO/Synopsys/smic18IO_line_ss.db \$lib_path/IO/Synopsys/smic18IO_stagger_ss.db ]E、set synthetic_library “”set command_log_file “./command.log”set designer “zjw”set company “soc of xupt”set find_converts_name_lists “false”F、set symbol_library $lib_path/STD/Symbol/synopsys/smic18.sdb。

高级asic芯片综合.doc

高级asic芯片综合.doc

高级ASIC芯片综合翻译者:阿信使用Synopsys公司的Design Compiler Physical Compiler 和PrimeTime第二版目录写在前面前言前言事实证明,相对于集成电路IC设计规模半导体产业是相对??。

作为一个团体,80年代中期,每个芯片集成了大约1000个晶体管,我们称之为大规模集成电路(LSI),仅仅在大约两年后,每个芯片的晶体管集成数量就达到了1万~10万个,我们所用的术语也迅速的变成了甚大规模集成电路(VLSI)。

Preface 前言这本书的第二版描述了一些使用Synopsys公司的一套工具在ASIC芯片设计中的高级概念和技术,包括ASIC芯片综合,物理综合,形式验证和静态时序分析等。

另外,对ASIC的整个设计流程和沈亚微米(Very-Deep-Sub-Micron)设计技术作了详细的介绍。

这本书的重点是在Synopsys 工具的实时使用上,用工具去解决在深亚微米尺寸领域的各种问题。

将展示给读者解决在亚微米ASIC设计复杂问题的有效设计方法。

重点就在HDL的编码风格,综合和优化,动态仿真,形式验证,可测性设计DFT扫描链的插入,版图设计的连接,物理综合和静态时序分析。

在每一步,确定设计流程中每一段的问题,问题的解决方法并围绕此问题展开详细的论述。

另外,关于版图设计的关键问题,比如时钟的综合和最后的集成也作了较长篇幅的讨论。

最后,这本书深入的讨论了基本的Synopsys技术库和编码风格,综合优化技术。

这本书的读者对象是刚刚工作的ASIC设计工程师和学习过ASIC大规模集成电路设计与可测性设计课程的高年级学生。

这本书并不是想取代Synopsys的参考手册,而是为任何参与ASIC设计的人员而写。

同时,这本书对那些没有版图能力或者自己有技术库但是需要其他公司来做后端集成和最终制造器件的计者(和公设司)都是很有用。

因为到深亚微米技术会遇到各种各样的问题,本书提供了可选择的;这本书同时也介绍了设计人员对不同EDA工具商提供的各种工具时所面临常见问题的解决方法。

shell脚本教程详细讲解(很好)

shell脚本教程详细讲解(很好)

2021/10/10
19
2、一般步骤: (1)编辑文件 (2)保存文件 (3)将文件赋予可执行的权限 (4)运行及排错
2021/10/10
20
注意:
1. 一般以.sh为文件后缀。没有也能执行。 2. 常见的两种执行方式
./文件名 在当前目录下写明路径执行,要求文 件必须有执行权限,如 chmod 755 run.sh ./run.sh
} echo "programme starts here..." 主过程
sayhello
echo "programme ends."
2021/10/10
22
二、Shell中的特殊符号
1、注释符#
除了#!/bin/bash里的#特殊
2、美元符 $
变量符。与反斜杠转义符相反,使其后的普通字符作 为变量名,如$a表示变量a的值。变量字符长度超 过1个时,用{}括起来
2021/10/10
13
7、设置vi
全局的配置文件位于/etc/vim/vimrc(或者/etc/vimrc) 也可以拥有自己独立的配置文件,配置文件位
“~/.vimrc”,如果没有该文件,也可以直接用如下命 令创建并编辑 比如: set nu ‘显示行号 set ruler ‘显示光标位置 set undolevel ‘显示光标位置 set smartindent ‘智能缩进 syntax on(或syn on) ‘语法高亮
把文档中所有SEARCH替换成REPLACE;
:#,# s /SEARCH /REPLACE /g
#号表示数字,表示从多少行到多少行,把 SEARCH替换成REPLACE;
:s /SEARCH /REPLACE /g

shell脚本语言

shell脚本语言

∙Shell简介∙几种常见的Shell∙Shell脚本语言与编译型语言的差异∙什么时候使用Shell∙第一个Shell脚本∙Shell变量∙Shell特殊变量∙Shell替换∙Shell运算符∙Shell注释∙Shell字符串∙Shell数组∙Shell echo命令∙shell printf命令∙Shell if else语句∙Shell case esac语句∙Shell for循环∙Shell while循环∙Shell until循环∙Shell break和continue命令∙Shell函数∙Shell函数参数∙Shell输入输出重定向∙Shell文件包含Shell简介:什么是Shell,Shell命令的两种执行方式Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。

Shell既是一种命令语言,又是一种程序设计语言。

作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。

因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell 的特性极其使用方法,是用好Unix/Linux系统的关键。

可以说,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度。

Shell有两种执行命令的方式:∙交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell 就解释执行一条。

∙批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。

dc使用教程

dc使用教程

d c使用教程-CAL-FENGHAI.-(YICAI)-Company One1DC使用说明文件说明:在进行下面的演示时需要用到两个文件,一个是,它是描述一个电路的verilog代码,我们的目标就是用DC综合这个代码得到满足约束条件的电路网表;另一个是,它是综合的脚本文件。

这两个文件都在/home/student1000目录下,大家把它们拷贝到自己的目录下,以备使用。

DC既可使用图形界面,也可不使用图形界面而直接运行脚本来综合电路。

一、DC图形界面的使用。

1.DC图形界面的启动打开一个终端窗口,写入命令 dv –db_mode,敲入回车。

则DC图形界面启动,如下图所示红框处是DC的命令输入框,以下在图形界面上的操作都可以在命令输入框中输入相应的命令来完成。

选择Help-----Man Pages可以查看DC的联机帮助。

相应指令:man。

例:man man表示查看man命令的帮助。

man create_clock表示查看creat_clock命令的帮助。

2.设置库文件选择File----Setup需要设置以下库文件,如下图。

相应指令:set search_path [list /tools/lib/smic25/feview_s/version1/STD/Synopsys \ /tools/lib/smic25/feview_s/version1/STD/Symbol/synopsys]set target_library { }set link_library { }set symbol_library { }点OK,设置完成。

3.读入verilog文件选择File---Read在打开文件对话框中选中要打开的文件,在这里我们选中文件。

在Log框中出现successfully字样表明读入文件成功。

相应命令:read_file点击红色箭头所指的按钮可以查看该电路的symbol图。

4.设置约束条件4.1设置时钟约束在symbol图上选中clk端口选择Attributes-----Specify Clock出来设置时钟约束的对话框,按下图设置,给时钟取名为clock,周期20ns,上升沿0ns,下降沿10ns。

学习使用Shell脚本编程进行自动化任务和系统管理

学习使用Shell脚本编程进行自动化任务和系统管理

学习使用Shell脚本编程进行自动化任务和系统管理Shell脚本是一种能够自动执行一系列命令的脚本语言,在Linux和UNIX系统中被广泛使用。

通过编写Shell脚本,可以实现自动化任务和系统管理,提高工作效率和减少人力成本。

本文将按照以下几个章节进行讲解。

第一章:Shell脚本的基础知识Shell脚本是由一系列Shell命令组成的文本文件,可以通过解释器来执行。

常见的解释器有bash、csh、ksh等。

在编写Shell脚本之前,我们需要了解一些基础知识,比如如何声明变量、如何进行条件判断和循环等。

只有掌握了这些基础知识,才能更好地进行Shell脚本编程。

第二章:Shell脚本的文件操作在日常工作中,我们经常需要进行文件的复制、移动、删除等操作。

通过Shell脚本,我们可以完成这些繁琐的文件操作。

在本章中,将介绍如何使用Shell脚本进行文件的创建、复制、重命名等操作。

同时,还将介绍如何使用正则表达式来匹配文件名,实现批量操作。

第三章:Shell脚本的系统管理Shell脚本不仅可以用来操作文件,还可以用来进行系统管理。

比如,我们可以通过Shell脚本来创建用户、设置权限、安装软件等。

本章将详细介绍如何使用Shell脚本来进行系统管理,包括如何添加新用户、如何创建和管理进程等。

第四章:Shell脚本的网络管理随着互联网的快速发展,网络管理变得越来越重要。

通过Shell 脚本,我们可以实现对网络的监控和管理。

本章将介绍如何使用Shell脚本来进行IP地址管理、路由管理、网络流量监控等操作。

同时,还将介绍如何通过Shell脚本实现远程登录和文件传输。

第五章:Shell脚本的定时任务定时任务是指在特定的时间或条件下自动执行某个任务。

通过Shell脚本,我们可以实现定时任务的自动化。

本章将介绍如何使用Shell脚本来实现定时任务,包括如何设置定时任务的时间、如何执行定时任务的命令等。

第六章:Shell脚本的错误处理和日志记录在编写Shell脚本时,我们经常会遇到一些错误。

使用Shell脚本进行自动化运维的技术指南

使用Shell脚本进行自动化运维的技术指南

使用Shell脚本进行自动化运维的技术指南在现代信息技术的发展中,自动化运维已经成为了企业提高效率、降低成本的重要手段。

而Shell脚本作为一种强大的自动化工具,被广泛应用于各个领域。

本文将为大家介绍如何使用Shell脚本进行自动化运维,并提供一些技巧和实例。

一、Shell脚本简介Shell脚本是一种运行在Unix/Linux系统上的脚本语言,它以命令行的方式进行交互,并能够调用系统命令和程序。

Shell脚本具有简单、灵活、高效的特点,可以用于编写各种自动化任务。

二、Shell脚本的基本语法1. 注释:在Shell脚本中,使用“#”符号表示注释。

注释可以用于解释代码的功能和用途,提高代码的可读性。

2. 变量:在Shell脚本中,使用变量可以存储数据,并在脚本中进行引用和修改。

变量的定义和赋值使用“=”符号,引用变量使用“$”符号。

3. 条件判断:Shell脚本可以根据条件进行分支判断和循环操作。

常用的条件判断语句有if、case和for等。

4. 函数:Shell脚本可以定义函数,将一些常用的代码块封装起来,方便复用和维护。

三、Shell脚本的应用场景1. 系统监控:通过编写Shell脚本,可以定时检测系统的运行状态,并根据需要执行相应的操作。

比如,可以编写一个脚本,定时检查服务器的CPU和内存使用情况,当超过一定阈值时发送警报。

2. 日志分析:Shell脚本可以帮助我们对大量的日志进行分析和处理。

比如,可以编写一个脚本,自动提取日志中的关键信息,并生成报表或者发送邮件。

3. 数据备份:通过编写Shell脚本,可以自动备份重要的数据文件。

比如,可以编写一个脚本,定期将数据库的备份文件复制到远程服务器,以防止数据丢失。

四、Shell脚本的实例1. 自动部署脚本:假设我们有一个Web应用程序,需要将代码部署到多台服务器上。

我们可以编写一个Shell脚本,自动将代码从源代码库中拉取,并分发到目标服务器上。

DC常用命令及脚本

DC常用命令及脚本

利用DC进行综合设计(2012-03-25 17:45:10)转载▼标签:dc综合杂谈DC的综合术语用于设计的ASIC的EDA工具往往是一套很复杂的软件,包括大量的工具和文档。

同时,每个公司都有自己的一套术...一、预备知识1.1、DC的综合术语用于设计的ASIC的EDA工具往往是一套很复杂的软件,包括大量的工具和文档。

同时,每个公司都有自己的一套术语。

只有理解了这些术语的含义才能很好的掌握这些工艺。

1 设计和设计对象设计是实现一定逻辑功能的电路的描述。

设计对象就是在设计中被DC命令、属性和约束操作或控制的对象。

常用的设计中包括元件、网络、端口、引脚和时钟。

另外,一个设计可能包括某个相同子设计或库元件的多个例化。

这时候被例化的设计或库元件称作参考。

在一个设计中查找某个对象的命令:find,这是在DC命令中很常用的命令。

如:列出当前设计的所有端口(ports):Dc_shell>findport OR find(port,”*”)列出所有包含”DW”字母的元件:dc_shell>find (cell,”*DW*”)列出cba_core库中的AN2门的所有接脚:dc_shell>find(pin,cba_core/AN2Read –format vhdl ./src/rtl/timer_tugw.vhdRead –format vhdl ./src/rtl/test_top.vhdCheck_error –vIf(dc_shell_status= =1){exit 1}Current_design test_topLinkCheck_error –vIf(dc_shell_status= =1){exit 1}Include pass0/constraint/test_top.conCheck_error –vIf(dc_shell_status= =1){exit 1}Set_max_area 0.0000Set_flatten falseEcho”***doing full compile for the partition ‘test_top’***”Sh date;Compile –map_effort mediumCheck_error –vIf(dc_shell_status= =1){exit 1}Sh date;Check_designCompile_top_acs_partion=tureCompile_top_all_paths=trueEcho”***doing boundary compile for the partition ‘test_top’***”Sh date;Compile –topUniquifyCheck_error –vIf(dc_shell_status= =1){exit 1}Sh date;Current_design test_topWrite –format db –hierarchy –output pass0/db/test_top.dbWrite –format verilog –hierarchy –output pass0/db/test_top.vWrite –format vhdl –hierarchy –output pass0/db/test_top.vhdReport_timing> pass0/report/test_top.timReport_area> pass0/report/test_top.areaReport_constraints> pass0/report/test_top.cstrReport_qor> pass0/report/test_top.qorReport_constraints–all_violators–verbose>pass0/report/test_top.vioquit脚本文件可以使用任何一个文本编辑工具产生或修改,也可以在dc_shell中执行write_scirpt 命令产生。

DC逻辑综合(Design Compiler)

DC逻辑综合(Design Compiler)

DC综合1.概述1.1. 综合的目的综合是完成从RTL代码到门级电路的转换。

如果在综合时,链接了厂家的库文件,则门级电路使用的器件是厂家库文件中提供的器件。

综合在整个IC设计中,起到的作用如图1所示。

图 1 综合在IC设计中的作用由于目前IC设计规模日益增大,设计难度不断提高,设计人员必须通过综合工具实现综合任务。

目前IC所采用的是综合工具是Synopsys公司的Design Compiler。

本讲义紧密结合了Design Compiler的应用。

1.2. 综合的特性1.2.1. 综合是由约束驱动的对于一个设计来说,在进行综合前,需要给这个设计加上约束,约束也就是综合的目标,综合工具会竭力满足约束,以实现综合的目标。

约束可分为多方面,如时序方面的约束、面积方面的约束、环境属性方面的约束、驱动和负载方面的约束等。

其中最重要的约束是对时钟等与时序相关的属性进行约束。

在综合时,约束的各个方面可能存在一定的矛盾,如对速度和面积的约束,见图2所示。

综合的过程就是找到一个最好的平衡点,满足各个方面的约束。

图 2 约束中速度与面积间的关系好的、合理的约束,是综合成功的关键。

不同的约束会导致不同的综合效果。

1.2.2. 综合是基于path分析的在整个综合的过程中,完成是基于path进行时序分析的,因此path的概念非常重要。

何谓path?如下图所示。

图 3 Timing Path的概念Path是综合工具进行时序分析的基本单位。

对于一条path而言,它的起点只能是输入端口,或者触发器/寄存器的时钟端;终点只能是输出端口,或者触发器/寄存器的数据输入端(对D触发器而言,就是D端)。

结合图3而言,其中共有4条path,分别为:1)输入端口A -> FF2的D端;2)FF2的CK端-> FF3的D端;3)FF3的CK端-> 输出端口Z;4)输入端口A -> 输出端口Z。

同一个时钟域多条path,组成一个组,称为path group。

DC Design Compiler 综合脚本命令及参考模板

DC Design Compiler 综合脚本命令及参考模板

DC Design Compiler 综合脚本命令及参考模板Design Compiler 综合脚本常用命令和模板参照自己的设计,以及自己的工艺信息,适当修改下面的Constraints 和 Run Script 等的脚本,添加一些相关的约束语句,就可以运行了详细的命令请参照DC的官方User Guide等相关资料。

Invoking Design CompilerUnix% design_vision # Interactive GUI, WLM mode Unix%design_vision –topographical # Interactive GUI, Topographical mode Unix% dc_shell-t # Interactive shell, WLM mode Unix% dc_shell-t –topographical # Interactive shell, Topographical mode Unix% dc_shell-t –f RUN.tcl | tee –i my.log # Batch mode.synopsys_dc.setupset search_path “$search_path libs cons unmapped rtl”set synthetic_library dw_foundation.sldbset target_library 65nm.dbset link_library “* $target_library $synthetic_library IP.db”set symbol_library 65nm.sdbdefine_design_lib WORK –path ./workset_svf <my_filename.svf>set_vsdc <my_filename.vsdc>history keep 200set sh_enable_page_mode falseset cache_write .set cache_read $cache_writesuppress_message {LINT-28 LINT-32 LINT-33 UID-401} setalib_library_analysis_path [get_unix_variable HOME] alias h history alias rc “report_constraint -all_violators”TCL Commands and Constructsset PER 2.0 # Define a variable and its value echo $PER # Variable substitution , 2.0set MARG 0.95expr $PER * $MARG # expr: *, /, +, -, >, <, =, <=, >=set pci_ports [get_ports A] # Imbedded command set pci_ports[get_ports “Y??M Z*”] # Wildcardsecho “Effctv P = \ # Soft quotes , 1.9[expr $PERIOD * $MARGIN]”echo {Effctv P = \ # Hard quotes[expr $PERIOD * $MARGIN]} # , Effctv P = [expr $PER * $MARG] # Comment lineset COMMENT in_line; # In-line comment set MY_DESIGNS {B1.v ...B26.v} # foreach loop foreach DESIGN $MY_DESIGNS {read_verilog $DESIGN}for {set i 1} {$i < 27} {incr i} { # for loopread_verilog BLOCK_$i.v}Helpful UNIX-like DC-shell commandspwdcdlshistory!!!7!reportsh <UNIX_command>printenvget_unix_variable ARCHConstraintsreset_designset_max_area 0create_clock -period 2 –name Main_Clk [get_ports Clk1]create_clock –period 2.5 –waveform {2 3.5} [get_ports Clk2]create_clock –period 3.5 –name V_Clk; # VIRTUAL clockset_clock_uncertainty –setup 0.14 [get_clocks *]set_clock_uncertainty –setup 0.21 –from [get_clocks Main_Clk] –to [get_clocks Clk2] set_clock_latency –max 0.6 [get_clocks Main_Clk] set_clock_latency –source –max 0.3 [get_clocks Main_Clk]set_clock_transition 0.08 [get_clocks Main_Clk] set_input_delay -max 0.6-clock Main_Clk [all_inputs] set_input_delay –max 0.3 –clock Clk2 –clock_fall –add_delay [get_ports “B E”]set_input_delay -max 0.5 -clock –network_latency_included V_Clk [get_ports “A C F”]set_output_delay -max 0.8 -clock –source_latency_included Main_Clk [all_outputs]set_output_delay -max 1.1 -clock V_Clk [get_ports “OUT2 OUT7]set_max_capacitance 1.2 [all_inputs]set_load 0.080 [all_outputs]set_load [expr [load_of slow_proc/NAND2_3/A] * 4] [get_ports OUT3] set_load 0.12 [all_inputs]set_input_transition 0.12 [remove_from_collection[all_inputs][get_ports B]]set_driving_cell –lib_cell FD1 –pin Q [get_ports B]set_operating_conditions –max WCCOMset auto_wire_load_selection falseset_wire_load_model –name 1.6MGatesset_wire_load_mode enclosedset_wire_load_model –name 200KGates [get_designs “SUB1 SUB2”] set_wire_load_model –name 3.2MGates [get_ports IN_A]set_port_fanout_number 8 [get_ports IN_A] set_false_path -from[get_clocks Asynch_CLKA] -to [get_clocks Asynch_CLKB]set_multicycle_path –setup 4 –from –from A_reg -throughU_Mult/Out –to B_regset_multicycle_path –hold 3 –from –from A_reg -throughU_Mult/Out –to B_regset_isolate_ports –type inverter [all_outputs]set_ideal_network [get_ports reset* select*] set_ideal_network[get_pins FF_SET_reg/Q] set_ideal_network –no_propagate [get_nets CTRL] set_ideal_latency 1.4 [get_ports reset* select*]set_ideal_transition 0.5 [get_pins FF_SET_reg/Q] set_scan_configuration -style <multiplexed_flip_flop | clocked_scan | lssd | aux_clock_lssd> Checking and Removing Constraints and Directivesreport_clock; report_clock -skewreport_designreport_port –verbosereport_wire_loadreport_path_groupsreport_timing_requirements (–ignored) report_auto_ungroupreport_isolate_ports write_script –output <constraints.tcl>check_timingreset_path –from FF1_regremove_clockremove_clock_transition remove_clock_uncertainty remove_input_delay remove_output_delay remove_driving_cell remove_wire_load_modelSyntax CheckingUnix% dcprocheck constr_file.conPhysical Constraints – Topographical Modeset_aspect_ratioset_utilizationset_placement_areaset_rectilinear_outline set_port_sideset_port_locationset_cell_locationcreate_placement_keepoutMisc. Reports# Generate A library report fileread_db library_file.dblist_libsredirect –file reports/lib.rpt {report_lib <libname>}report_hierarchy [-noleaf]# Arithmetic implementation and# resource-sharing info report_resources# List area for all cells in the design report_cell [get_cells –hier *]Run Scriptread_verilog {A.v B.v TOP.v} orread_vhdl {A.vhd B.vhd TOP.vhd} orread_ddc MY_TOP.ddc oracs_read_hdl MY_TOP oranalyze –format verilog {A.v B.v TOP.v}elaborate MY_TOP –parameters “A_WIDTH=8, B_WIDTH=16”current_design MY_TOPlinkif {[check_design] ==0} {echo “Check Design Error”exit # Exits DC if a check-design error is encountered } # Continue if NO problems encounteredwrite –f ddc –hier –out unmappedd/TOP.ddcredirect –tee –file reports/precompile.rpt {source –echo -verbose TOP.con} redirect –append –tee –file reports/precompile.rpt{check_timing} source <Physical_Constraints_TCL_file> or # Source tcl constraints, if available, orextract_physical_constraints <DEF_file> # Extract and apply from an existing# DEF floorplan filegroup_path -name CLK1 -critical_range <10% of CLK1 Period> –weight 5group_path -name CLK2 -critical_range <10% of CLK2 Period> –weight 2group_path –name INPUTS –from [all_inputs]group_path –name OUTPUTS –to [all_outputs]group_path –name COMBO –from [all_inputs] –to [all_outputs]set_fix_multiple_port_nets –all –buffer_constants********************************************************* * ** Insert Expert, Ultra or ACS compile flow here * * **********************************************************check_designreport_constraint –all_violatorsreport_timing –delay –to –from –through –input_pins –max_paths \–nworst –nets –cap –sig –groupreport_areareport_qorset verilogout_no_tri truechange_names –rule verilog –hierwrite –f verilog –hier –out mapped/TOP.vwrite –f ddc –hier –out mapped/TOP.ddcwrite_sdc TOP.sdcwrite_scan_def –out TOP_scan.defwrite_physical_constraints –output TOP_PhysConstr.tcl exitObject Retrieval and Manipulation (Collection Commands)get_ports, get_pins, get_designsget_cells, get_nets, get_clocksget_nets –of_objects [get_pins FF1_reg/Q] get_libs <lib_name>get_lib_cells <lib_name/cell_names> get_lib_pins<lib_name/cell_name/pin_names> all_inputs, all_outputs, all_clocks,all_registers all_connectedall_fanin, all_fanoutall_ideal_netsset pci_ports [get_ports pci_*]echo $pci_ports # , _sel184query_objects $pci_ports # , {pci_1 pci_2 ...} get_object_name $pci_ports # , pci_1 pci_2 ...sizeof_collection $pci_ports # , 37set pci_ports [add_to_collection $pci_ports \[get_ports CTRL*]]set all_inputs_except_clk [remove_from_collection \[all_inputs] [get_ports CLK]]compare_collectionsindex_collectionsort_collectionforeach_in_collection my_cells [get_cells -hier * \-filter “is_hierarchical == true”] {echo “Instance [get_object_name $cell] is hierarchical”}# Filtering operators: ==, !=, >, <, >=, <=, =~, !~filter_collection [get_cells *] “ref_name =~ AN*”get_cells * -filter “dont_touch == true”get_clocks * -filter “period < 10”# List all cell attributes and redirect output to a fileredirect –file cell_attr \{list_attributes –application –class cell}# Grep the file for cell attributes starting with dont_UNIX% grep dont_ cell_attr | more# List the value of the attribute dont_touchget_attribute <cell_name> dont_touchUltra Compile Flow - Topographical or WLM ModeUltra + DesignWare and DFTC licenses available# In “topo” mode (dc_shell-t –topo) specify Milkyway reference and design libraries create_mw_lib –tech <technology_file> -mw_reference_library <mw_reference_libraries> \<mw_design_library_name>open_mw_lib <mw_design_library_name>set_tlu_plus_files -max_tluplus <max_tluplus_file> -tech2itf_map <mapping_file> set compile_auto_ungroup_delay_num_cells 99999999 set compile_auto_ungroup_count_leaf_cells trueset compile_auto_ungroup_override_wlm trueset_ungroup <top_level_and/or_pipelined_blocks> false# OPTIONAL: Disable unconditional auto-ungrouping# of DesignWare hierarchy (not usually recommended) setcompile_ultra_ungroup_dw false# If design contains pipelined sub-designs and the pipeline registers# are grouped together at the input or output, relax timingset_multicycle_path –setup <#_stages> -from U_Pipeline/R3_reg* –to U_Pipeline/R7_reg*# In “ topo” mode, if the floorplan is available, apply or extract the physical constraintssource <physical_constraints_file> ORextract_physical_constraints <DEF_file># OPTIONAL: Exclude specific cells/design from adaptive retiming (-retime) set_dont_retime <cells_or_designs> true# First compilecompile_ultra –scan –retime –timing|-area# The design hierarchy may have changed due to auto-ungrouping/-uniquifying reset_path -from U_Pipeline/R3_reg* -to U_Pipeline/R7_reg* # OPTIONAL: Maintain registered pipeline outputs if requiredset_dont_touch [get_cells U_Pipeline/R12_reg*] true# Optimize registers if pipeline violates timing; Skip if nopipeline issues: set_optimize_registers true –designMy_Pipeline_Subdesignoptimize_registers –only_attributed_designs# Continue if design is NOT meeting all constraints:# Apply more focus on violating critical paths, as necessarygroup_path –name <group_name> -from <path_start> -to <path_end> \ –critical range <10% of max delay goal> -weight 5# Select appropriate second compile# In “topo” mode in DC v2006.06, or any mode in DC v2007.03 or latercompile_ultra –scan –incremental# In “WLM” mode in DC v2006.06set_ultra_optimization truecompile –boundary –scan –map_effort high –incremental (-area_effort medium|low|none)# In “topo” mode prior to DC v2007.03: Write out updated physical constraintswrite_physical_constraints –output PhysConstr.tclDFT Flow – Expert or UltraDFTC license available# Prior to the first compile set the# scan cell styleset_scan_configuration –style ..# Perform the first test-ready compilecompile –boundary –map high –scan # ORcompile_ultra –timing -scan# Continue before the next compile:# Read in the scan specification filesource scan_spec.tcl# Check for DFT rule violationsdft_drc# Preview the scan chainspreview_dft# Insert and optimize scaninsert_dft****************************************************** * ** Execute additional Ultra/Expert optimization * * techniques, as needed * * *******************************************************# After the final compile check the DFT QoR# and write out the scan DEF filedft_drc –coverage_estimatewrite_scan_def -out <my_design.def>Some Scan Specification Commandsset_scan_state test_readyset_dft_configuration ...set_dft_signal ...set_scan_path ...set_scan_configuration ...create_test_protocolExpert Compile FlowNo Ultra license available; DFTC license available compile –boundary –scan –map_effort high# Continue if NOT meeting constraints# Note: -scan requires DFTC licensecompile –boundary –scan –map_effort high –incremental \(-area_effort medium|low|none)# Continue if NOT meeting constraints:# Increase max-delay priority if OK to postpone DRC fixingset_cost_priority –delay# Note: The design hierarchy may have changed due to auto-# uniquifying# Apply more focus on violating critical paths, as necessarygroup_path –name <group_name> -from <path_start> \-to <path_end> –critical range <10% of max delay goal> -weight 5 # Repartition if design is poorly partitioned group –design<NEW_DESIGN> -cell_name <U_NEW_CELL> \{U2 U7 ...}ungroup –start_level 2 U_NEW_CELLcompile –boundary –scan –map_effort high –incremental \(-area_effort medium|low|none)# Or, can ungroup all hierarchy in lieu of group/ungroup# commands with –ungroup_allcompile –boundary –scan –map_effort high –incremental \(-area_effort medium|low|none) –ungroup_all“Pseudo Ultra” Compile FlowUltra license available; No DesignWare license available set compile_auto_ungroup_delay_num_cells 99999999 setcompile_auto_ungroup_area_num_cells 99999999 setcompile_auto_ungroup_count_leaf_cells trueset compile_auto_ungroup_override_wlm trueset_ungroup <top_level_and/or_pipelined_blocks> false# OPTIONAL: Disable unconditional auto-ungrouping# of DesignWare hierarchy (not usually recommended) set compile_ultra_ungroup_dw false# If design contains pipelined sub-designs and the pipeline registers# are grouped together at the input or output, relax timing set_multicycle_path –setup <#_stages> \-from U_Pipeline/R3_reg* –to U_Pipeline/R7_reg*# Enable Ultra optimizations available for compileset_ultra_optimization –no_auto_dwlib trueset hlo_disable_datapath_optimization trueset compile_slack_driven_buffering truecompile –boundary –scan –map_effort high –auto_ungroup delay|area \ (-area_effort medium|low|none)# Note: The design hierarchy may have changed due to auto- # ungrouping and auto-uniquifyingreset_path -from U_Pipeline/R3_reg* -to U_Pipeline/R7_reg* # OPTIONAL: Maintain registered pipeline outputs if required set_dont_touch [get_cells U_Pipeline/R12_reg*] true # Optimize registers if pipeline violates timing; Skip if no pipeline issues:set_optimize_registers true –design My_Pipeline_Subdesign optimize_registers –only_attributed_designs# Continue if design is NOT meeting all constraints: compile –boundary –scan –map_effort high –incremental \ (-area_effort medium|low|none)# Continue if NOT meeting all constraints:set_cost_priority –delay# Ungroup DesignWare components amid combinational logic ungroup <DesignWare_components># Apply more focus on violating critical paths, as necessary group_path –name <group_name> -from <path_start> -to <path_end> \ –critical range <10% of max delay goal> -weight 5 compile –boundary –scan –map_effort high –incremental \ (-area_effort medium|low|none)。

DC综合全过程及使用的命令

DC综合全过程及使用的命令

DC综合全过程及使用的命令DC(Direct Current,直流)综合全过程是一个用于仿真电路和系统的软件工具。

它允许用户分析和设计包含电源电压、电阻、电容和电感等元件的电路。

DC的命令形式为命令行输入,命令行通常包含两个部分:命令和选项。

命令用于指定要执行的操作,而选项通常用于自定义和细化命令。

以下是DC综合全过程的使用的命令:1. help:显示DC的所有命令和选项的列表。

示例:help2. source:指定要仿真的电路文件。

示例:source example.cir3. op:执行直流分析操作,计算电路的直流状态。

示例:op4. tran:执行时间域分析操作,模拟电路随时间变化的行为。

示例:tran 0.1ms 10ms5. print:打印指定的节点或变量的值。

示例:print V(1)6. plot:绘制指定的波形图。

示例:plot V(1)7. temp:设置电路中的温度。

示例:temp 258. model:指定电子元件的模型。

示例:model res 1 109. option:设置DC综合全过程的选项。

示例:option reltol=0.00110. save:保存当前仿真结果。

示例:save example.out11. quit:退出DC综合全过程。

示例:quit以上命令只是DC综合全过程中的一部分,还有许多其他命令和选项可供使用。

用户可以根据自己的需求来选择和使用这些命令。

1.准备电路文件:用户需要创建一个文本文件,其中包含要仿真的电路的描述。

该文件应按照DC综合全过程的语法规则编写。

2. 指定源文件:在DC综合全过程中使用source命令指定要仿真的电路文件。

3. 执行直流分析:使用op命令执行直流分析操作,计算电路的直流状态。

4. 执行时间域分析:使用tran命令执行时间域分析操作,模拟电路随时间变化的行为。

5. 打印和绘制结果:使用print命令打印指定的节点或变量的值,使用plot命令绘制指定的波形图。

DC逻辑综合

DC逻辑综合

7
Design Compiler简介
Design Compiler有两种界面供用户使用,一种是命令界面,一种是图形界面 。在UNIX命令行下分别执行以下命令可以分别进入上述两种界面: unix% dc_shell-t (命令界面) unix% design_vision (图形界面) Design Compiler支持TCL(Tool Command Language)语言,它是公开的业界 标准界面语言。DC-Tcl在TCL的基础上扩展丰富了TCL,使用户可以更加灵活 方便地运用TCL命令来对电路进行分析和优化。 DC中包含了多种工具,如DFT Compiler,Power Compiler,HDL Compiler, Library Compiler等,使得DC具有强大的功能,成为业界最流行的综合工具 。
10
变量的设定:设置的变量在DC启动时读入,便于综合的处理,同时有些DC的 变量必须在设置文件中输入。如可以设定命令的简写,保存多少条命令等: alias cud current_design alias rpt report_timing history keep 300
11
综合脚本实例(.synopsys_dc.setup)
24
定义时钟 create_colck –period 10 [get_port clk] 对于时钟(除了虚拟时钟)的定义来说,时钟周期和时钟源(port或pin)是 必不可少的,还可以定义时钟的占空比,时钟名等。定义虚拟时钟时,不必 定义时钟源。 设定时钟的uncertainty、latency和transition,其中uncertainty是用来模拟 时钟的skew和jetter,latency设定时钟的延迟,transition设定时钟的转换 时间。通过这些设定让时钟更加接近实际情况,更有利于综合的准确性,但 过分约束会使得综合起来比较困难。

第六章 dc_shell综合脚本

第六章 dc_shell综合脚本

第六章dc_shell命令解释程序第一节设计目标6-1-1背景介绍dc_shell 是Synopsys Design Compiler的shell(命令解释程序),与unix的shell 类似。

Unix的C shell 和Bourne-shell作为命令解释程序,在用户和unix 核之间实现了功能极强的接口程序。

相同地,Dc_shell最为Synopsys Design Compiler的功能极强的命令解释程序。

象unix shell 提供程序设计语言在unix 文件系统中操作一样,dc_shell 提供script(脚本)语言在Design Compiler 的设计中操作,且仿造unix shell 的相同的结构。

用dc_shell 脚本综合设计有许多优点:首先,脚本执行速度比象design analyzer 交互式的界面快得多,脚本也用来证明综合设计的过程。

更重要的是,脚本提供一个重复编译的机制,这不仅对设计的再利用重要,而且对于当要求一项函数改变时,再次产生设计文件的所要求的时间最小化也很重要。

所有的这些优点源于使用脚本自动走完综合流程。

但是,dc_shell 脚本能够做的远不只这些,它能扩展Design Analyzer和Design Compiler的功能。

一些Design compiler命令的顺序由脚本得出。

大多数经验丰富的Synopsys的用户将脚本和Design analyzer结合使用来分析和优化设计。

6-1-2 目标程序类型的审阅dc_shell脚本生成设计目标程序和编译属性来引导综合流程。

当编写dc_shell脚本时,考虑正在运行的目标程序/信息的类型是很重要的。

这一节从“Design Compiler Family Reference Manual”的章节中总结了“design compiler”的概念。

6-1-2-1 实例、网络、端口原理图由三个基础的构件组成:实例、网点、端口。

DC学习

DC学习

以DesignCompiler为例子讲解综合2009-03-19 11:09:13来源:转载作者:佚名共有评论(0)条浏览次数:878第一节:什么是综合呢?synthesis,台湾翻译为-合成,其作用就是将硬件描述语言的RTL级代码转变为门级网表。

当然,现在综合技术已经很成熟了,还有推出的行为(behavioral)综合和物理(physical)综合。

我们这里讨论的是逻辑(logic)综合。

综合技术是提高设计产能的一个很重要的技术,没有综合技术的发展,我们就不可能用HDL实现电路的设计,因为HDL开始是用来供电路仿真建模使用的,到了后来才把其中一部分子集作为可综合的语言,也就是我们使用的RTL CODE。

很多人入门都用HDL做设计,就以为HDL就只是用来做设计的,没有看到HDL最初始的一面,所以在验证的时候,就无法用好HDL另外一部分强大的功能。

有时间还是可以看看Writing Testbench这本书,增强对HDL语言在验证方面作用的了解,也是提高对HDL认识很好的补充。

我们以DesignCompiler为例子讲解综合的过程。

首先,综合就要必须要用综合库,这个你可以向厂家要,综合库可以通过.lib这个库文件转变成.db综合库,这个过程可以在DesignCompiler里面用实现,综合库里面有什么内容呢?.db 是无法阅读的,.lib是可以阅读的,里面有库的基本参数的单位,库运行的条件,各种参数,最重要的是两个部分,一个是WLM-Wire Load Model,一个Gate的定义(输入输出,功能,时序参数,面积等等);这只是StandarCell的库,另外还有其他库,如RAM,DSP的综合库,都以.db的形式存在。

综合需要三种输入,一个是代码,一个是综合库,一个是综合脚本script。

综合脚本主要包括了一下内容,对综合工具环境的配置,对综合对象外部环境的设置(operation condiction),对WLD的设置,对综合对象的时序的约束,综合策略,综合优化,综合报告和输出。

dc使用教程

dc使用教程

DC使用说明文件说明:在进行下面的演示时需要用到两个文件,一个是example1.v,它是描述一个电路的verilog代码,我们的目标就是用DC综合这个代码得到满足约束条件的电路网表;另一个是dc.scr,它是综合example1.v的脚本文件。

这两个文件都在/home/student1000目录下,大家把它们拷贝到自己的目录下,以备使用。

DC既可使用图形界面,也可不使用图形界面而直接运行脚本来综合电路。

一、DC图形界面的使用。

1.DC图形界面的启动1.1 打开一个终端窗口,写入命令dv –db_mode,敲入回车。

则DC图形界面启动,如下图所示红框处是DC的命令输入框,以下在图形界面上的操作都可以在命令输入框中输入相应的命令来完成。

选择Help----- Man Pages可以查看DC的联机帮助。

相应指令:man。

例:man man表示查看man命令的帮助。

man create_clock表示查看creat_clock命令的帮助。

2.设置库文件选择File---- Setup需要设置以下库文件,如下图。

相应指令:set search_path [list /tools/lib/smic25/feview_s/version1/STD/Synopsys \/tools/lib/smic25/feview_s/version1/STD/Symbol/synopsys] set target_library { smic25_ff.db }set link_library { smic25_ff.db smic25_ss.db }set symbol_library { smic25.sdb }点OK,设置完成。

3.读入verilog文件选择File--- Read在打开文件对话框中选中要打开的文件,在这里我们选中example1.v文件。

在Log框中出现successfully字样表明读入文件成功。

DC综合教程

DC综合教程

启动dc的三种方法:DCSH:dc_shellTCL:dc_shell-t //注意:-t前没有空格图形化界面:design_visiontip1. 综合主要包括三个阶段:转换(translation)、优化(optimization)与映射(mapping)。

1. 转换阶段:综合工具将高层语言描述的电路用门级的逻辑来实现,对于Synopsys 的综合工具DC 来说,就是使用gtech.db库中的门级单元来组成HDL 语言描述的电路,从而构成初始的未优化的电路。

2. 优化与映射:是综合工具对已有的初始电路进行分析,去掉电路中的冗余单元,并对不满足限制条件的路径进行优化,然后将优化之后的电路映射到由制造商提供的工艺库上。

tip2DesignWare 是集成在DC综合环境中的可重用电路的集合DesignWare 分为DesignWare Basic 与DesignWare Foundation,DesignWare Basic 提供基本的电路,DesignWare Foundation提供性能较高的电路结构。

如果需要Foundation的DesignWare,需要在综合的时候设置synthetic_library3。

tip3 日志文件Design Analyzer 在启动时自动在启动目录下面创建两个日志文件:command.log 和view_command.log,用于记录用户在使用Design Compiler 时所执行的命令以及设置的参数,在运行过程中同时还产生filenames.log的文件,用于记录design compiler访问过的目录,包括库、源文件等,filenames.log文件在退出design compiler 时会被自动删除。

启动dc_shell时则只产生command.log 的日志文件。

tip4Propagation Delay传播延时Transition Time转变延时Setup Time建立时间The setup time for a sequential cell is theminimumlength of time the data-inputsignal must remain stable before the active edge of the clockHold Time保持时间The hold time for a sequential cell is the minimum length of time the data-inputsignal must remain stable after the active edge of the clock脚本:################################# Read design file #//read –format verilog[db、vhdl] file //dcsh的工作模式read_db file.db //TCL工作模式读取DB格式read_verilog file.v //TCL工作模式读取verilog格式read_vhdl file.vhd //TCL工作模式读取VHDL格式//设定时钟create_clock -name "clock" -period 20 -waveform { 0.000 10.000 } { clk }//输出文件write -f verilog -out output/count.v //输出网表write -f ddc -out output/count.ddc//综合数据文件write_sdf mapped/count.sdf //标准延时文件//综合compile -map_effort medium -incremental_mappingtip6设置设计环境Define the Design Environment1. Defining the Operating Conditions设置操作环境查看有哪些操作环境dc_shell> read_file my_lib.dbdc_shell> report_lib my_lib指定操作环境dc_shell> set_operating_conditions WCCOM -lib my_lib2.设置线负载模型set_wire_load_mode Top/Enclosed/Segmentedset_wire_load_model "10x10"3. Modeling the System Interface设置系统接口The set_drive and set_input_transition Commands:dc_shell> current_design top_level_designdc_shell> set_drive 1.5 {I1 I2}dc_shell> current_design sub_design2dc_shell> set_driving_cell -lib_cell IV {I3}dc_shell> set_driving_cell -lib_cell AN2 -pin Z -from_pin B {I4} Defining Loads on Input and Output PortsDefining Fanout Loads on Output Ports4. Setting Logic Constraints on Portsset_equal port1 port2set_oppositeset_logic_dcset_logic_oneset_logic_zeroset_unconnectedtip7设定设计约束When Design Compiler optimizes your design, it uses two types of constraints:Design rule constraintsOptimization constraints用于组成逻辑1. Maximum Transition Timedc_shell> set_max_transition 5 [current design]2. Maximum FanoutYou can set a maximum fanout constraint on every driving pin and input port as follows:dc_shell> set_max_fanout 8 [get_designs ADDER]计算Fanout值:Maximum Fanout>=Total Fanout Load注意:取出某些约束用:dc_shell> remove_attribute [get_designs adder] max_transitiondc_shell> remove_attribute [get_ports port_name] max_fanoutdc_shell> remove_attribute [get_designs design_name]max_fanoutdc_shell> remove_attribute port_name fanout_load3. The set_fanout_load command sets the expected fanout load value for listed output ports.To find the fanout load on the input pin of library cell AND2 in library libA, enterdc_shell> get_attribute "libA/AND2/i" fanout_loadTo find the default fanout load set on technology library libA, enterdc_shell> get_attribute libA default_fanout_load用于综合出可以驱动的最大扇出的引脚4. Maximum CapacitanceMaximum capacitance is a design rule constraint. It is set as a pin-level attribute that definesthe maximum total capacitive load that an output pin can drive. That is, the pin cannot connect to a net that has a total capacitance greater than or equal to the maximum capacitance defined at the pin.dc_shell> set_max_capacitance 3 [get_designs adder]5. Minimum CapacitanceThe min_capacitance design rule specifies the minimum load a cell can drive.设计规则的优先权1. Minimum capacitance2. Maximum transition3. Maximum fanout4. Maximum capacitance5. Cell degradationtip8设定优化约束Optimization ConstraintsTiming Constraints对于同步pashscreate_clockset_input_delayset_output_delay对于异步pashsset_max_delayset_min_delayMaximum Areadc_shell> set_max_area 0.0dc_shell> set_max_area 14.0Managing Constraint Prioritiesset_cost_priority [-default] [-delay] cost_listReporting Constraints:dc_shell >report_constraint写脚本tip9:在终端中启动DC用脚本综合dc_shell-t -f ./scripts/seg_drive.tcl > 1将报告写入1文件tip10:设计中有多个模块时,如果用top_down策略,则在脚本中得把所有的模块读入:set active_design seg_drive //注意:相等于一个宏定义,用active_design代替seg_drive read_verilog {encode_seg.v number_mod.v scan.v seg_drive.v} //read_file也可以,它可以读多种格式文件,包括.db#analyze -format verilog {encode_seg.v number_mod.v scan.v seg_drive.v}#elaborate $active_design //注意这里是$active_designcurrent_design $active_design //将顶层设置成当前设计link//read_verilog命令与后面的analyze、elaborate功能相同,可以选择其中一个;参看《ASIC综合与DC使用》:set_svf ./mapped/svf/$active_design.svf //没查###############################################1# Define the Design Environment#1###############################################113Modeling the SystemInterface设置系统接口21)set_operating_conditions slow //设定一个库的环境,库内包含使用温度、电压、电路特征线宽等2)set_wire_load_model –name model_name –lib_name library –max –min//设定线负载模型set_wire_load_model -name tsmc090_wl40 -library slow //表示使用库slow里的tsmc090_wl40线模型如果没有 wire_load_model,可以将 auto_wire_load_selection 参数设置为 true,则 DC自动根据综合之后的面积来选择一个统计的线负载模型用于估计连线延迟。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六章dc_shell命令解释程序第一节设计目标6-1-1背景介绍dc_shell 是Synopsys Design Compiler的shell(命令解释程序),与unix的shell 类似。

Unix的C shell 和Bourne-shell作为命令解释程序,在用户和unix 核之间实现了功能极强的接口程序。

相同地,Dc_shell最为Synopsys Design Compiler的功能极强的命令解释程序。

象unix shell 提供程序设计语言在unix 文件系统中操作一样,dc_shell 提供script(脚本)语言在Design Compiler 的设计中操作,且仿造unix shell 的相同的结构。

用dc_shell 脚本综合设计有许多优点:首先,脚本执行速度比象design analyzer 交互式的界面快得多,脚本也用来证明综合设计的过程。

更重要的是,脚本提供一个重复编译的机制,这不仅对设计的再利用重要,而且对于当要求一项函数改变时,再次产生设计文件的所要求的时间最小化也很重要。

所有的这些优点源于使用脚本自动走完综合流程。

但是,dc_shell 脚本能够做的远不只这些,它能扩展Design Analyzer和Design Compiler的功能。

一些Design compiler命令的顺序由脚本得出。

大多数经验丰富的Synopsys的用户将脚本和Design analyzer结合使用来分析和优化设计。

6-1-2 目标程序类型的审阅dc_shell脚本生成设计目标程序和编译属性来引导综合流程。

当编写dc_shell脚本时,考虑正在运行的目标程序/信息的类型是很重要的。

这一节从“Design Compiler Family Reference Manual”的章节中总结了“design compiler”的概念。

6-1-2-1 实例、网络、端口原理图由三个基础的构件组成:实例、网点、端口。

实例是代表逻辑子程序或层次的符号,网络是代表在实例之间有电气连续性的导线,端口是用来代表层次连续性的线路终结器。

这些都是标准的术语。

使设计者感到新颖的是reference 的概念。

6-1-2-2 单元、引用、设计如果一实例代表一逻辑子程序,则它能代表什么类型的子程序呢?一实例能代表一库元件或一设计。

用许多术语描述设计是必须的因为一设计可能包含同一库元件(或子设计)的多重实例。

举例说,一典型设计包含与非门,设计中的每一门实例都被赋予唯一的单元名用来在非唯一的实例中彼此区分。

同样的,一设计可能包含多个加法器,与与非门不同,加法器一般来说不是库元件,加法器是一个可逐步分解成库元件和网络且相互连接后执行加法器功能的完全设计。

与库元件相同,每一子设计的实例都被赋予唯一的单元名。

库元件是无形的设计子程序且在设计中常被做为节点单元引用。

设计是逻辑块,它们可作为独立的设计或作为更大设计的子设计。

作为其它设计中连接上下关系的子模块,设计中每一个唯一的实例被作为一个分层次的单元引用。

在一个单独设计的上下关系中,每一个实例具有唯一的单元名,这些单元引用库元件或设计。

设计者可以对每个单元单独地进行优化,也可以通过布置属性或约束(在以下定义)对每个库元件或设计进行优化。

但是,属性被直接加至库元件或设计中,这可能影响包含引用这些库元件或设计的每一个设计。

图6.1 单元、引用、设计之间的关系假设你想要影响一个单独设计中的每一个与非门的优化而没有影响其它设计中的与非门则将会如何呢?引用的概念使这成为可能,设计中的每一个单元不仅是库元件中或设计中唯一命名的实例,而且是引用库元件或设计的一系列单元中的一员。

参考以下图6.2的设计:图6.2脉动计数器:count_16这个分层次设计的顶层是一个16位的计数器,顶层设计由与非门、或非门、8位计数器组成。

在这层次设计的关系中,有6个单元、3个引用、2个设计。

这些单元是u1、u2、u3、u4、u5、u6,引用是一个三输入与非门、一个三输入或非门和一个count8的设计。

设计包含count6和count8的设计。

第二节收集和控制信息一些dc_shell的构件是用来收集和控制信息。

变量和属性是特殊方法、指定设计信息的主要知识宝库。

别名提供创建自定义的命令或改变一个命令的行为的技巧。

如find、filter、list命令对提取变量或设计目标程序中的信息有相当大的作用。

6-2-1 变量:储存信息变量在dc_shell的章节中用来存储信息。

一些变量被事先定义了,它们对于desing compiler 有特殊的意义。

比如search_path这一变量,告诉design compiler 到哪里去找Unix文件系统下的用户的设计文件及库。

事先定义的变量分为11组。

组是组织变量履行相似功能的便捷方法。

比如说,系统组的变量包含design compiler 用来和Unix交互的信息。

由于变量可被任意分配给哪个组,所以可用group_variable命令创建或改变组。

表6.1列出11个事先定义好的组以及组包含的变量举例。

的单词一个值时,变量则自动产生了。

选择一个没有保存过的名字代表呢想要保存的值,然后使它与值相等,创建变量的句法与改变变量值的句法相同,给variable_name=value。

6-2-1-1变量介绍所有的dc_shell变量都是全局的dc_shell变量。

变量不和设计数据库一起保存,一旦一段dc_shell结束了,所有在这段赋值的变量都不存在了。

所有的变量都是全局变量,没有局部变量(对当前脚本或当前设计使关系独立的)。

变量是严格分类的,也就是说,当一个变量创建后,它将保存某一类型的值。

变量能保存字符串、数字(整型或浮点型)、设计目标程序或列表。

设计目标程序包括设计、库、端口、总线、管脚、单元、引用、网络、时钟、根目录(也称为DB文件)。

列表是一组字符串、数字,设计目标程序可能在列表中被混淆。

一旦变量被创建后用来保存某一类型的值时,它只能被赋予那种类型的值。

如果两个脚本用相同的变量名来引用不同类型的信息,那么两个脚本是不相容的。

在这种情况下脚本是不相容的,而且在相同的dc_shell端不能共存。

当脚本赋予一个已存在的变量一个错误类型的值,将会报错且脚本会退出。

然而这种情况是容易避免和改正的。

首先,选择有代表性的要保存的值的类型以及要保存的值的含义来创建变量。

比如说,如果你想要保存当前驻留在内存中的设计列表时,你会键入:active_design_list=find(design,”*”),这命令搜寻所有驻留在内存中的设计并保存列表到active_design_list变量中(此例中的find命令将在以后做详细解释)。

其次,若你想用存储错误类型的变量,则删除此变量,然后保存需要的类型。

Remove_variable variable_name;variable_name=value.变量能维持设计具有唯一的性能。

如果在变量中存储的设计从内存中被删除了,那么也将从变量中被删除。

无论变量维持一设计还是包括设计的列表,这都是正确的。

以下的例子帮助阐明这种特性的原因。

启动dc_shell(或从design analyzer的命令窗口启动),读入设计,键入以上命令来初始化active_design_list变量。

List新变量查看它的内容,即list active_design_list。

active_design_list变量保存内存中所有变量的列表。

要从内存中删除一个设计,利用你刚才创建的变量来删除内存中所有的设计,即remove_design active_design_list。

发出以下的命令来验证当一个设计从内存中删除时,它们将从所有的变量中删除:find design“*”list active_design_list为什么会发生这种情况?当设计从内存中删除时design compiler 删除了所有的引用,这保证未来的命令对不存在的设计目标程序不产生操作(一项实践操作可能对当前的dc_shell产生致命的牵连)。

6-2-1-2 事先定义的变量这节描述一些重要的事先定义的变量。

1、dc_shell_status每次dc_shell命令执行时,一个值返回到命令窗口(在命令提示之前立即返回)。

对于大多数命令来说,这值是整型的。

如果命令成功地完成了,则返回1,否则返回0。

返回值不只返回到命令窗口,它也赋予变量dc_shell_status。

这使调节后来命令的执行结果与前面命令执行结果一致成为可能。

这种特性的流程控制含意详细地描述如下。

不是所有地命令都返回一个整型值,举例说,find命令返回一个值地列表。

为了适应象这样的命令,dc_shell_status变量没有严格分类。

这种特性非常功能非常强大,但它要求设计者在利用dc_shell_status写脚本时清楚要返回dc_shell_status变量的类型。

2、current_design大多数命令、约束、属性不像变量,它们没有全局的含义。

大多数命令对current_design是指定环境的。

基本说来,设计是可独立编译的单元,current_design变量告诉design compiler编译哪个设计。

象compile命令,大多数命令在current_design变量的环境中操作。

这对于design compiler的初学者来说是容易混淆的地方因为所有设计都彼此独立存在。

从技术上来说,一个设计可能包含另一个设计的引用,但它不会全部包含那个设计。

对于高层设计来说,引用的设计是独立存在的。

考虑前面介绍过的16位的计数器。

发出命令current_design count8,则接下来的所有的命令应用于8位的计数器而不是16位的计数器。

8位计数器可能在几个可能包含或不包含16位计数器的设计中被用到,在这种情况下,16位计数器是32位计数器的子设计吗?它能作为一个32位设计的实例,但它一直都作为一个16位的计数器而独立存在的(除非设计取消组)。

有两个原因希望指定设计的引用和独立设计之间存在差异。

首先,它促进了设计的重复利用;其次,它提供了有细密纹理的优化的机制。

在大型设计中,一些子模块可能对时间有严格的要求而另一些子模块可能对面积有严格的要求,通过定义每一子模块为一个设计,那么子设计能够单独地优化从而满足它们单独的设计目标。

3、current_instance和current_reference设计者通常希望在current_design层次中进入一实例从而应用约束条件或观察层次路径的时序。

current_instance 命令允许设计者在不改变current_design的情况下改变特定实例命令的层次重点。

相关文档
最新文档