数字后端流程一【Design Compile】实例笔记
数字集成电路后端设计的一般流程

数字集成电路后端设计的一般流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!数字集成电路后端设计的一般流程详解在电子工程领域,数字集成电路(Digital Integrated Circuit,简称IC)的后端设计是将电路设计转化为物理实现的关键步骤。
DESIGN COMPILER 可测性的设计基础可测性的设计工具 86页

2019/10/10
共84页
12
DC常见术语
design
module top(A,B,C,D,CLK,OUT1);
input A,B,C,D,CLK;
clock
port
output OUT1; net
scc40nll_hs_rvt_ff_v1p21_-40c_basic.db\ scc40nll_hs_rvt_ss_v0p99_125c_basic.db\ scc40nll_hs_rvt_tt_v1p1_25c_basic.db]
set symbol_library [list SCC40NLL_HS_RVT_V0p1.sdb]
共84页
14
逻辑综合工具介绍
Design Compiler, Synplify, ISE– XST, Precision. RTL
Design Compiler(DC)是业界流行的、功 能强大的逻辑综合工具。用户只需输入满足要 求的HDL描述和设计约束,就可能得到较为优 化的门级综合网表。
工艺库要到相关Foundry代工厂网站下载,上传至服 务器。
准备软件启动文件.synopsys_dc.setup
.synopsys_dc.setup 定义工艺库的路径和其他用于逻辑综 合的参数。
在启动软件的时候,DC按下列顺序读入启动文件的。 1) Synopsys安装目录下的启动文件:
共84页
4
逻辑综合基本概念
什么是逻辑综合? 时间路径 时序:setup/hold 常见术语
2019/10/10
数字后端流程一【Design_Compile】实例笔记

DC 综合DC 又称为设计综合将设计的RTL代码综合成门级网表的过程。
在DC 流程中一般要经过以下几个步骤,以项目A为例做如下分析:1】在项目子目录下创建DC文件夹,在DC文件夹下分别创建db in lib_syn log netlist rpt和script 文件夹以及一个makefile 文件用来运行DC 脚本。
2】第二步就是复制相应工艺技术库文件到lib_syn ,一般有2种文件各3个分别包括了typical worst 和best情况,一类是db,文件一类是lib 文件也可以在lc_shell 下读取lib 得到相应的db文件。
3】第三步将需要综合的设计RTL代码(V erilog 文件)复制到in 文件夹4】第四步在script 创建综合脚本,脚本创建过程将在后面介绍5】第五步编写运行脚本的makefile 文件6】第六步运行脚本而后查看综合报告,是否有违例现象出现,如果有修改脚本加以修复直到最终通过设计。
注意另外的几个文件夹作用db文件夹存放DC综合生成的项目db文件,综合网表输出到netlist 文件夹,综合程序运行报告存放在log文件夹中,而综合结果的数据报告则存放在rpt 文件夹中。
DC脚本的编写(A.scr)DC综合脚本基本上有几大部分组成1】定义综合环境中命名规则(分别对net cell port 命名)define_name_rules verilog –casesensitivedefine_name_rules verilog –type net –allowed “a-z A-Z 0-9 _ ” \-first_restricted “ _ 0-9 N ”\-replacement_char “_” \-prefix “n”define_name_rules verilog –type cell –allowed “a-z A-Z 0-9 _ ” \-first_restricted “ _ 0-9 ”\-replacement_char “_” \-prefix “u”define_name_rules verilog –type port –allowed “a-z A-Z 0-9 _ ” \-first_restricted “ _ 0-9 ”\-replacement_char “_” \-prefix “p”2】综合环境的建立指明库所在的位置Search_path = { lib_syn/db }指定综合所需目标库一般选用最恶劣情况worst 库作目标库target_library = { slow.db}创建链接库,链接库中包括了一些已经做好的设计和子模块,又包括了当前设计的目标库是设计实例化时所用的库文件link_library = { “ * ” , slow.db } + synthetic_library在上述的环境建立所需的各类库中,一般有生产商提供目标库,库中的各类cell用于逻辑映射,链接库则包括了目标库,还包括其他一些以前设计实例基本单元,我们门级网表实例化元件和单元都来自于它。
数字电路后端设计_逻辑综合

综合脚本实例〔.synopsys_dc.setup
11
系统层次的划分与基本概念
在DC中,每个设计由6个设计物体组成,它们分别是design,cell,port,pin,net和 clock.其中clock是特别的端口,它存在DC内存中,是用户自己定义的物体.如下 图所示:
12
当前设计为TOP.Port和Pin是与当前设计有关的一对概念,如果当前设计改变, 相应的port和pin也会不同
22
定义时钟
create_colck –period 10 [get_port clk]
对于时钟〔除了虚拟时钟的定义来说,时钟周期和时钟源〔port或pin是
必不可少的,还可以定义时钟的占空比,时钟名等.定义虚拟时钟时,不必定义时
钟源.
设定时钟的uncertainty、latency和transition,其中uncertainty是用来模拟 时钟的skew和jetter,latency设定时钟的延迟,transition设定时钟的转换时间. 通过这些设定让时钟更加接近实际情况,更有利于综合的准确性,但过分约束会 使得综合起来比较困难.
合工具.
7
目标库和初始环境的设置
DC启动时会先启动.synopsys_dc.setup文件,它里面设定了综合所需要的工艺 库的信息以及一些对于工具的设定命令.
在综合之前,要设定好所需要的库,如综合库、I/O单元库,IP核等. 半导体厂商提供与DC兼容的工艺库-综合库,它包含许多信息,如单元的功能
链接库〔link_library:
是将设计连接到对应的库上,一般包含目标库、宏单元、IP核等.例如:
set link_library "* my_tech.db".其中"*"指明当链接设计时,DC先搜寻 内存中已有的库,然后再搜寻变量link_library中制定的其它库.
Synopsys_Design_Compiler使用

Synopsys Design Compiler使用一、介绍:美国Synopsys公司发布的“Design Compiler”软件,简称“DC”,是一种逻辑合成工具。
通过改进电路延迟时间的计算方法,缩小了逻辑合成时的时序与布局完成后的最终时序之间的偏差。
DC得到全球60多个半导体厂商、380多个工艺库的支持。
据最新Dataquest的统计,Synopsys的逻辑综合工具占据91%的市场份额。
DC是十二年来工业界标准的逻辑综合工具,也是Synopsys最核心的产品。
它使IC设计者在最短的时间内最佳的利用硅片完成设计。
它根据设计描述和约束条件并针对特定的工艺库自动综合出一个优化的门级电路。
它可以接受多种输入格式,如硬件描述语言、原理图和网表等,并产生多种性能报告,在缩短设计时间的同时提高设计性能。
二、要求:由于实训没有硬性要求VHDL文件,本人挑选了已经预先做好的洗衣机时控电路,利用Synopsys Design Compiler工具,进行优化分析,通过这一过程熟悉软件的使用。
三、过程:设置优化运行库,鉴于老师在练习手册上面提供的例子,我们使用库LSI-10K,因此在打开VHDL文件前,需要作以下设置Setup->Defaults,填入以下信息。
在File->read打开要分析优化的VHDL文件,这里我选择一个洗衣机时控电路NewWasher.vhd 如下所示(分别为不同层次的视图:顶层、器件、门级电路)在Tools->Design Optimization中设置好兼顾平衡的约束条件(左图),确定编译后,产生了右边经过优化的门级电路图。
接下来,把优化过的图形转换为VHDL文件和DB文件输出,另存到指定位置File->Save As如右图,生成了新的DB文件和vhd文件。
接下来,是要设定CLK的周期,根据分析、优化、编译出来的Slack Time 松弛数值和Area面积数值,选取最合适的平衡点。
综合工具-DesignCompiler学习教程

综合⼯具-DesignCompiler学习教程Design Compiler 13讲中的部分内容:1、逻辑综合的概述DC⼯作流程分为三步2、DC的三种启动⽅式GUIdc_shellBatch mode3、DC-Tcl语⾔的基本结构1、⾼层次设计的流程图2、DC在设计流程中的位置3、使⽤DC进⾏基本的逻辑综合的流程图与相应的命令①准备设计⽂件②指定库⽂件③读⼊设计④定义设计环境⑤设置设计约束⑥选择编译策略⑦编译⑧分析及解决设计中存在的问题⑨存储设计数据(1)启动环境配置简述(2).synopsys_dc.setup配置⽂件的书写(3).synopsys_dc.setup的讲解(1)标准单元库①概述⼀个ASIC综合库包括如下信息:·⼀系列单元(包括单元的引脚)。
·每个单元的⾯积(在深亚微⽶中,⼀般⽤平⽅微⽶表⽰,在亚微⽶⼯艺下,⼀般⽤门来称呼,⾄于具体的单位,可以咨询半导体制造商)。
·每个输出引脚的逻辑功能。
·每个输⼊到输出的传递延时,输出到输出的传递延时;inout到输出的传递延时。
②内容与结构Synopsys的⼯艺库是⼀个.lib⽂件,经过LC编译后,产⽣.db⽂件。
⼯艺库⽂件主要包括如下信息:·单元(cell)(的信息):(主要有)功能、时间(包括时序器件的约束,如建⽴和保持)、⾯积(⾯积的单位不在⾥⾯定义,可按照规律理解,⼀般询问半导体⼚商)、功耗、测试等。
·连线负载模型(wire load models):电阻、电容、⾯积。
·⼯作环境/条件(Operating conditions):制程(process)(电压和温度的⽐例因数k,表⽰不同的环境之间,各参数缩放的⽐例)·设计规则约束(Design ):最⼤最⼩电容、最⼤最⼩转换时间、最⼤最⼩扇出。
⼯艺库的结构如下所⽰:(2)DC的设计对象在了解了综合库之后,下⾯介绍⼀下DC的设计对象,虽然这个设计对象相对于综合库没有那么重要,但是还是要了解⼀下的。
经典综合过程Design Compiler
用Design Analyzer设置特征参数: 在读入设计后,要说明设计的环境变量,这些环境变量包括了当信号到达端口(port)时, 他们的的驱动能力,或者输出端口的负载能力。 本节就是描述如何来设置闹钟设计的这些参数。 为TOP模块设置参数 设置参数时可以使用Symbol view。 1.选择TOP. 2. 单击向下的箭头。 3. 点击Symbol View 按钮。 设置输入端口的驱动能力 假设除了CLK的所有输入端口的驱动能力为0.08(单位由目标库决定)。你可以同时选定并设 定所有的要设定的输入端口。 1.使用鼠标左键来选择输入端口ALARM; 2.使用中间选择其他的除了CLK之外的所有的输入端口,见Figure 7-17。
2. 选择Library中的 WORK. 3. 选择Re-Analyze Out-Of-Date Libraries 4. 选择Design list中ALARM_COUNTER(BEHAVIOR). 5. 点击OK.
在Design Analyzer窗口中,出现ALARM_COUNTER的elaborated后的图标。
3. 选择synopsys.vhd. 4. 点击OK. 出现VHDL 的窗口window并且显示行为。 5. 当Design Analyzer提示符(design_analyzer>) 出现, 在VHDL窗口中单击 Cancel。
读入最底层的设计模块 为了保证对所有模块的调用可以被正确的解析,我们要从设计的最底层模块开始读入,最 后读入最上层的模块。 tutorial中最底层模块包括: ALARM_COUNTER ALARM_STATE_MACHINE CONVERTOR (2) HOURS_FILTER TIME_COUNTER TIME_STATE_MACHINE 使用read命令读入CONVERTOR因为它是PLA格式。.
数字IC前端后端流程及工具
数字后端设计流程-8 布线
Layer Layer Layer Layer Layer Layer Layer Layer
"METAL1" "METAL2" "METAL3" "METAL4" "METAL5" "METAL5" "METAL7" "METAL8"
pitch pitch pitch pitch pitch pitch pitch pitch
TAPE-OUT
布局布线工具根据基本单元库的时序-几何模型, 将电路单元布局布线成为实际电路版图
Contents
1 2 3 基于标准单元的ASIC设计流程
数字前端设计(front-end)
数字后端设计(back-end)
4
3
教研室ASIC后端文件归档
Q&A
数字前端设计流程-1
RTL file
综合
什么时候需要做形式验证? Verify RTL designs vs. RTL designs
-- the rtl revision is made frequently
Verify RTL designs vs. Gate level netlists -- verify synthesis results -- verify manually coded netlists,such as Design Ware
数字前端设计流程-13 形式验证
静态时序分析检查了电路时序是否满足要求,而 形式验证检查了电路功能的正确性。
形式验证工具本质是一个比较器!其功能就是比 较两电路功能是否完全一致。
Design Compiler使用笔记_DC中文笔记
DC的手册包括3部分,分别是命令行手册,User Guide,以及参考手册。
其中参考手册有3个,分别是:Constraints & TimingOptimization & Timing AnalysisRegister Retiming本系列笔记为阅读这三个参考手册所做的笔记本文档(约束和时序)包括六章:1. 基本概念2. 约束设计3. 描述设计环境4. 指定时钟和时钟网络5. 描述逻辑功能和信号端口6. 在层次化设计中传播约束Notes for D基本概念篇:利用DC进行综合,主要的过程就是设定适当的约束,从而指导DC综合出较为优化的结果,DC当中进行综合可以分成三大步骤:Transfer、Mapping、Optimization。
总的流程来说为:1.设定各种用于综合的库(.db或者.lib格式)及各种IP核的库。
库中主要描述了库线负载模型、Max_transition、Max_Capacitance 等等;各种单元的时延、面积、逻辑功能、输入输出负载、功耗等等,注意,具有相同footprint的单元是可以互相替换的。
2.读入设计此时可以对设计设定参数(Verilog当中的parameter,VHDL当中的generic)。
设计读入以后将会被转换(Transfer)成网表,该网表是基于一种通用库的,即gtech库(Generic Technology),该库可以较为容易的映射到各种实际的工艺库当中,当然,这个库是没有时延的。
3.设定约束DC的约束总体分成两类:Design Rule Constraints以及Optimization Constraints。
前者是必须要满足的,包括工艺库当中进行的各种限定,而后者是为了优化而设定的。
总的说来,约束包括面积,时序,负载,Porosity,动态/漏功耗(使用Power Compiler )等几大类。
4.约束设定好之后,就可以让DC根据这些约束将通用库的网表映射(Mapping)到实际的库当中去,并进行各种的优化(Optimization),此时就可以得到结果的网表,用于后端的布局布线。
DC实验报告流程
实验一DC(design compile)的基本使用流程Design Compiler是Synopsys综合软件的核心产品。
它提供约束驱动时序最优化,并支持众多的设计类型,把设计者的HDL描述综合成与工艺相关的门级设计;它能够从速度、面积和功耗等方面来优化组合电路和时序电路设计,并支持平直或层次化设计。
Design Compiler的功能利用Design Compiler,设计者可以:●利用用户指定的门阵列、FPGA或标准单元库,生成高速、面积优化的ASIC;●能够在不同工艺技术之间转换设计;●探索设计的权衡,包括延时、面积和在不同负载、温度、电压情况的功耗等设计约束条件;●优化有限状态机的综合,包括状态的自动分配和状态的优化;●当第三方环境仍支持延时信息和布局布线约束时,可将输入网表和输出网表或电路图整合在一起输入至第三方环境;自动生成和分割层次化电路图其完整的流程见图-1。
●图 11)建立设计环境1)在工作目录下创建db(存放DC综合生成的项目db文件)、lib_syn(存放库文件)、log(存放综合程序运行报告)、netlist(存放综合网表)、rpt(存放综合结果的数据报告)、script(存放脚本文件)文件夹,并将.synpsys_dc文件拷到工作目录下。
2)DC启动时,会自动搜索工作目录下的.synpsys_dc文件,根据文件中的内容来设定综合环境。
因此,在启动DC前,可以先修改.synpsys_dc中库文件的路径(也可以在进入DC后设置)。
set search_path "$search_path ../ref/db ./scripts" ……指明库所在的路径set target_library "sc_max.db"……目标库set link_library "* sc_max.db"……链接库set symbol_library "sc.sdb" ……特征库在上述环境建立所需的各类库中,一般由生产商提供目标库,库中的各类cell用于逻辑映射,链接库则包括一些已经做好的设计和子模块,还包括了当前设计的目标库,门级网表实例化元件和单元都来自于它。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DC 综合
DC 又称为设计综合将设计的RTL代码综合成门级网表的过程。
在DC 流程中一般要经过以下几个步骤,以项目A为例做如下分析:
1】在项目子目录下创建DC文件夹,在DC文件夹下分别创建db in lib_syn log netlist rpt和script 文件夹以及一个makefile 文件用来运行DC 脚本。
2】第二步就是复制相应工艺技术库文件到lib_syn ,一般有2种文件各3个分别包括了typical worst 和best情况,一类是db,文件一类是lib 文件也可以在lc_shell 下读取lib 得到相应的db文件。
3】第三步将需要综合的设计RTL代码(Verilog 文件)复制到in 文件夹
4】第四步在script 创建综合脚本,脚本创建过程将在后面介绍
5】第五步编写运行脚本的makefile 文件
6】第六步运行脚本而后查看综合报告,是否有违例现象出现,如果有修改脚本加以修复直到最终通过设计。
注意另外的几个文件夹作用db文件夹存放DC综合生成的项目db文件,综合网表输出到netlist 文件夹,综合程序运行报告存放在log文件夹中,而综合结果的数据报告则存放在rpt 文件夹中。
DC脚本的编写(A.scr)
DC综合脚本基本上有几大部分组成
1】定义综合环境中命名规则(分别对net cell port 命名)
define_name_rules verilog –casesensitive
define_name_rules verilog –type net –allowed “a-z A-Z 0-9 _ ” \
-first_restricted “ _ 0-9 N ”\
-replacement_char “_” \
-prefix “n”
define_name_rules verilog –type cell –allowed “a-z A-Z 0-9 _ ” \
-first_restricted “ _ 0-9 ”\
-replacement_char “_” \
-prefix “u”
define_name_rules verilog –type port –allowed “a-z A-Z 0-9 _ ” \
-first_restricted “ _ 0-9 ”\
-replacement_char “_” \
-prefix “p”
2】综合环境的建立
指明库所在的位置
Search_path = { lib_syn/db }
指定综合所需目标库一般选用最恶劣情况worst 库作目标库
target_library = { slow.db}
创建链接库,链接库中包括了一些已经做好的设计和子模块,又包括了当前设计的目标库是设计实例化时所用的库文件
link_library = { “ * ” , slow.db } + synthetic_library
在上述的环境建立所需的各类库中,一般有生产商提供目标库,库中的各类cell用于逻辑映射,链接库则包括了目标库,还包括其他一些以前设计实例基本单元,我们门级网表实例化元件和单元都来自于它。
3】RTL 代码的读入
read –format verilog ./in/ Encoder_32k.v
read –format verilog ./in/ Encoder_DBLOCK.v
read –format verilog ./in/ Encoder.v
read –format verilog ./in/ Step_rom.v
指明设计顶层
current_design = Encoder
展开设计分解原设计组
ungroup -all –flatten
设计唯一实例化
uniquify
4】综合环境约束
用户往往需要设置worst case 和best case 的库来验证setup timing 修复hold timing 不清楚命令使用和属性可使用man set_min_library 查看
set_min_library lib_syn/db/slow.db -min_version lib_syn/db/fast.db
编译操作条件的表述
set_operating_conditions -min slow –min_library slow \
-max fast –max_library fast
设置wire_load_model
wire_load_model 负载模型的每一种模型定义,它定义相关的net_length 和net fanout 属性而wire_load_mode 则不同指的是不同logic margin 连线net的处理方式一般我们只设置前者
set_wire_load_model -name “ Silterra18_w110 ”–min
set_wire_load_model -name “ Silterra18_w110 ”–max
设置模块输入驱动强度信息man set_driving_cell 查看帮助
set_driving_cell -lib_cell BUFX1 –pin Y –library slow –dont_scale –no_design_rule all_input ( )
5】设计时钟相关约束
create_clock clk -period 40
set_clock_latency 0.3 –rise { clk }
set_clock_latency 0.3 –fall { clk }
set_clock_uncertainty –setup 0.3 { clk }
set_clock_uncertainty –hold 0.3 { clk }
6】禁止改变门电路控制结构
芯片中的时钟和复位电路一般由门电路控制的,我们不希望DC在综合时候改变它的结构以保证时钟信号和复位信号的稳定性和可靠性需要设置,禁止对某些单元进行优化set_dont_touch_network { clk, rstn }
set_dont_touch { rstn }
7】异步电路处理
任何跨越异步边界的路径我们都对其禁止时序分析
set_false_path -from { rstn } –to { clk }
8】设置其他可选约束和禁用单元
可选约束一般包括set_max_fanout set_max_capacitance set_max_transition set_load 等这些属性一般在技术库中已经设置了,只有技术库不能满足设计要求时才使用脚本增加约束选项
本脚本中只增加了set_load 0.02 all_output ( )
Set_max_transition 2.5 current_design
输入输出直通buffer 插入,多重端口的连接插入buffer (选用)
set_fix_multiple_port_nets –feedthrough
输出端口插入buffer , 隔离端口(必须)
set_isolate_ports –type buffer all_output ( )
9】检查设计层次关系进行单元映射
check_design –one_level
compile –map_effort medium
10】修复hold时序重新编译
set_fix_hold {clk }
compile –only_hold_time
11】导出编译综合相关报告
核对网表命名规则修改相关信息
change_names –rules verilog –hierarchy –verbose
检查整体设计导出报告
check_design > ./rpt/adpcm.rpt
移除未连接的相关端口
remove_unconnected_ports find ( hierarchy cell , “ * ”)
导出设计面积报告
report_area > ./rpt/adpcm_area.txt
导出设计违例报告
report_constraint –all_violators > ./rpt/adpcm_cons.txt
导出setup时序违例的详细报告
report_timing –nworst 50 > ./rpt/adpcm_max_time.txt
导出hold 时序违例的详细报告
report_timing -delay min –nworst 20 > ./rpt/adpcm_min_time.txt 导出综合的设计中cell和reg_cel的报告
report_cell > ./rpt/adpcm_cell.txt
report_cell {find (cell, “*_reg*”)} > ./rpt/adpcm_reg_cell.txt
12】生成综合网表和pnr 所需的时序约束文件
write -hierarchy -output ./db/adpcm.db
write -format verilog –hierarchy -output ./netlist/adpcm.sv
write_sdf ./netlist/adpcm.sdf
write_sdc ./netlist/adpcm.sdc
exit。