转载:https://www.cnblogs.com/leaftime/archive/2013/08/15/3259156.html

1.1 什么是DC?

DC(Design Compiler)是Synopsys公司的logical synthesis工具,它根据design description和design constraints自动综合出一个优化了的门级电路。它可以接受多种输入格式,如HDL、Schematics、Netlist等,并能生成多种性能 report,在reducing design time的同时提高了设计的性能。

1.2 DC能接受多少种输入格式?

支持 .db、.v、.vhd、.edif、.vgh、.lib等,.db一般是厂商的单元库;.v是veilog的后缀;.vhd是VHDL的后缀;.edif 和 .vhd是两种形式的netlist。

1.3 DC提供多少种输出格式?

提供 .db、.v、.vhd、edif、.vgh等,并可以输出sdc、sdf等相关格式文件。

1.4 DC的主要功能或者主要作用是什么?

DC是把HDL描述的电路综合为跟工艺相关的门级电路。并且根据用户的设计要求,在timing、area、power上取得最佳的效果。在floorplanning和placement和插入时钟树后返回DC进行时序验证。

1.5 如何寻找帮助?
 帮助可以用3种求助方式:1. 使用SOLD,到文档中寻求答案2. 在命令行中用man+ DC命令(我最喜欢这种)3. 在命令行中用info+ DC命令
1.6 如何找到SOLD文档?
  SOLD文档可以在teminal中输入sold&执行。$> sold&或者用命令 which dc_shell找到dc的安装目录。找到online目录。
1.7 如何配置DC?

综合设置提供必要的参数给DC,使工具能够知道进行综合时所需要的必要的信息,如:工艺库,目标库,标志库等等。要 在.synopsys_dc.setup上设置好这些参数。而.synopsys_dc.setup要在三个目录下有说明,一个是synopsys的安装 目录,一个是用户文件夹,最后一个是工程目录。由后一个设置覆盖前一个文件。
具体参数包括:search_path, target_library, link_library, symbol_library

1.8 target_library 是指什么?
  target_library是在synthesis的map阶段时需要的实际的工艺库。
1.9 link_library如何指定?
  链接时需要的库,通常与library相同,设置时,需要加“*”,表示内存中的所有库。
1.10 search_path 的设置?
  该参数指定库的存储位置
1.11 DA 和DC有什么区别?

DA是 Design Analyzer的简称,它调用DC来进行综合,但是它是图形化的,可以看逻辑电路图,当然需要你的库有symbol库.

1.12 为什么要使用DA而不用shell接口?

这个问题似乎很幼稚,shell接口当然可以用,但我们大部分人已经习惯使用windows这种友好的图形化界面,恰好DA是图形化的,非常适合初学者! 不过本人强烈建议使用shell接口的。synopsys的synthesis包括dc_shell(这是synopsys自带的)和dc_shell -tcl_mode(script命令遵循tcl语法格式)。

1.13 SOLD是什么?
 SOLD是 Synopsys OnLine Document的简称,基本包括了synopsys公司的所有工具的文档集合.
1.14. translation这一步是用什么DC命令来实现的?
  我们知道,DC综合过程包括3个步骤:translation + logic optimization + mappingtransition 对应命令为 read_verilog(read_vhdl等)logic optimization 和 mapping 对应于 compile
1.15. 逻辑优化和映射(logic optimization + mapping)又是用什么DC命令来实现的?

logic optimization 和 mapping 均在compile命令完成,但是可以指定使用特殊的优化方法:structural 和flatten,建议大家在synthesis时同时生成structural 和flatten格式的netlist,然后打开看看到底有什么不同之处。

1.16. 什么是DC script?
  DC script 是一组dc 命令的集合,使得综合可以流程化也易于管理。
1.17. 基于路径的综合的意思是什么?
  路径(path),是DC中的一个重要概念。它包括4种路径方式:1 input到FF的D端。2 FF的clk到另一个FF的D端。3 FF的clk到输出Q。4 input到output。基于路径的综合就是对这四种路径进行加约束,综合电路以满足这些约束条件。
1.18 DC中的各类参数的单位是如何确定的呢?
  参数的单位由所使用的库决定,在读入库之后,可以用report_lib去看库的信息,里边有详细的单位说明
1.19 DC中的对象有哪些?

设计变量:一共有八种:Design, cell, reference, port, pin, net, clock, library。其中cell是子设计的例化,reference是多个子设计例化的通称,port是design的输入输出,pin是cell的输入输 出。

1.20 什么叫start point 和end point?
  这两个概念是DC中path概念的起始点和终点:1 起始点可以是input和FF的clk2 终点可以是FF的data和output这些是timing analyzing基本概念,希望大家结合DC和STA的实际牢牢掌握!
1.21 如何寻找想约束的对象?
  一个是全部查找包括:all_inputs , all_outputs, all_clocks, all_registers。比如:set_input_delay 1.0 all_inputs()   :这种写法针对dc_shell,若是在dc_shell -tcl_mode下,则为set_input_delay 1.0 [all_inputs]一个是根据关键词进行查找:[get_ports()] 或表示成 find(port,’ ‘),前者是tcl mode下的写法!作为一个IC设计者,在此强烈建议初学者多看SOLD文档,多多实践,多多学习TCL、Perl等常用的脚本语言。
1.22 什么叫一个设计(design) ?
  设计是DC中的重要对象,你所要综合的东西就叫design,确切的说是你所要综合模块的top文件。
1.23 什么叫cell 和leaf cell?

在design中,instance的子设计,称为cell。没有子模块的cell 统称为leaf cell,我们在定义clock constraint的时候,一般需要把path指到leaf cell。

1.24 reference 是指什么? 和cell 有什么区别?
  当存在一个模块被多次例化,那么该模块就称为reference
1.25 如何读入一个design?
使用analyze + elaborate 或者 read_verilog、read -f verilog、read_vhdl、read_file 命令。
1.26 analyze+ elaborate 和 read 命令有什么区别?

read_file 是可以读取任何synopsys支持格式的;analyze和eloborate只支持verilog和VHDL两个格式,但是他们支持在中间过程中加入参数而且以便以后可以加快读取过程。

1.27 如何处理多个引用的问题?
  方法一:使用 uniquify,就是把引用几次那么就在内存中换名引入多个子设计,适用于不同时序约束要 求。方法二:可以用dont_touch命令,先对多个引用的设计进行编译之后,设置为dont_touch,适用于基本相同的环境要求。方法三:把两个引用进行 flatten(没有层级结构),然后进行综合。
1.28 link的作用是什么?
  确定所有文件是否均存在并把它们链接到当前设计。
1.29 环境设置是指什么?
 是指芯片物理上的参数,比如电压,温度等。
1.30 如何设置线载模型?
  使用set_wire_load_model 命令,如:set_wire_load_model -name KME -library libr
1.31 如何得知线载模型的种类?
  读取库文件到DC中,使用report_lib看有多少可用的线载模型
1.32 如何设置工作环境变量?
  使用set_operating_conditions如:set_operating_conditions "WCCOM"
1.33 工作环境变量的类别可以分为哪几类?
  一般可以分为最坏(worst case)、典型(typical)、最佳(best case)。

1.34 为什么要设置工作环境变量?
由于我们要做的是一颗要在实际环境中正常工作的芯片,而温度和环境对电路的性能有很大影响,因此为了尽可能地模拟芯片工作,设置合适的工作环境信息是非常必要的。
1.35 read 和 analyze + ealborate做了哪些工作?
语法检查,建立GETECH库(大家可以自己去搜索什么叫GETECH库)值得注意的是,read命令不自动执行link操作。
1.36 getech库是做何用途的?
GETCH库是由软宏(soft macros)组成的,是加法器,乘法器之类的东西,这些组件都是在DW里引用的。
1.37 调用getech 库中的加法器之后,如何去自己选择一个设计者需要的加法器?
我没有用过!暂时没有答案
1.38 调用了加法器之后在优化阶段还能够掉换不同的加法器么?
我没有试过!暂时没有答案
1.39 如何检查script文件中有何错误呢?
dc_shell -tcl -f
1.40 如果在dc_shell启动后, 想修改库,怎么办?
摁一下ctrl+c暂停,改完之后继续运行!
1.41 如何在dc_shell环境下执行UNIX命令?
这个问题很简单,也很幼稚!在此不作回答!
1.42 优化分为几个层次?
一个是基于HDL的结构优化转化为GETCH结构;基于GTECH的逻辑优化,包括架构(strcuture),打平(flatten),转化为优化过的GETCH;基于GETCH的门级优化,主要作用是映射到实际的工艺库中。
1.43 什么是约束?
约束分为design constraint和optimization constraint。design constraint不由用户确定,已经由所采用的库确定了,用户只能添加进一步的约束。optimization constraint分为两个方面,timing constraint和area constraint。timing constraint又可分为组合电路的约束,时序电路的约束以及输入输出的约束。
1.44 DC Script支持TCL么?
支持,synopsys支持dc_shell 和dc_shell -tcl_mode。前者是SYNOPSYS的内部语言,后者遵循tcl语法。
1.45 综合时不想使用某些库单元进行mapping,怎么办?
使用set_dont_use 命令
/******** Part 2 Compile stategy **************/
2.1 约束一个设计分为几个方面?
总的分为:area constraint 和 timing constraint。
2.2 面积约束的命令是什么?
set_max_area
2.3 如何对时钟进行约束?
描述一个clock包含两个因素:频率和相位。
使用create_clock 建立时钟constraint。
如:create_clock -name clk200 -period 5 -waveform {0 ,2.5} find(pin, “armpll_wrapper_x/g_reg/Q”)
2.4 如何对pll进行约束?
如果存在PLL,那么首先对输入的初始时钟用create_clock进行约束。
再用create_propagated_clock 对PLL输出时钟在基于输入时钟进行约束,或者直接用create_clock,
两者的clock path 都得来自leaf cell
2.5 什么叫虚拟时钟约束?
虚拟时钟是指在当前要综合的模块中不存在的物理时钟。比如,设计外的DFF的时钟。
建立这样的时钟有益于描述异步电路间的约束关系,不过本人在实际工作中基本不设置!
2.6 DC可以对时钟的哪些特性进行约束?
DC支持对时钟的T,waveform,jitter,skew,latency 描述,请大家务必搞清楚jitter和skew得区别,
latency有多种,如果你正在做timing 分析工作,那么问一下自己:latency、jitter、skew等这些因素已经
搞明白了吗?
2.7 如何约束时钟的jitter?
使用set_clock_uncertainty -setup(-hold) 约束时钟的jitter
2.8 如何约束时钟的skew?
使用set_clock_uncertainty 约束时钟网络的skew
2.9 如何约束时钟的latency?
使用 set_clock_latency -option ,option is source or network,the default is network。
2.10 如何对当前设计的端口外部条件进行约束?
端口的外部条件包括:输入驱动大小,输出负载的大小,扇出大小。
2.11 输入端口被多大的驱动所驱动?
可以使用set_dirive 和set_driving_cell,或者用set_input_transition,注意这三者区别!
2.12 输出端口要驱动多大的负载?
使用set_load 对输出电容值进行约束,单位根据工艺库的define所定。
2.13 DC是基于path的综合,那么在约束时如何体现?
我们知道,基于path会有四种路径形式,DC中提供
create_clock 定义寄存器和寄存器之间的路径;
set_input_delay 定义输入与寄存器之间的路径;
set_output_delay 定义寄存器与输出之间的路径;
set_max_delay 和 set_min_delay定义输入和输出的组合路径;
2.14 set_input_delay 的目的是什么?
定义输入延时,来约束设计中输入逻辑的时序
2.15 set_output_delay 的目的是什么?
定义输出延时,来约束设计中的输出逻辑的时序
2.16 如何对组合电路进行约束?
组合电路有set_max_delay 和set_min_delay进行约束

2.17 如何对电路的速度进行约束?
使用create_clock
2.18 当一个组合电路超过了时钟周期约束,那么该如何处理?
加上set_max_delay重新约束,这样综合工具就会按照set_max_delay 的值尽量满足要求,不过这样会增加design的area,如果timing还是不能满足,那只能修改设计。
2.19 当出现环路电路时,如何约束电路?
对某一路径使用set_false_path
2.20 如何加强设计规则的约束?
DRC是电路必须满足的设计规则,使用
set_max_capcitance
set_max_fanout
set_max_tansition
2.21 在添加了4种路径约束后,那么在synthesis时如何为某些path移除约束,不作timing分析?
使用set_flase_path使得某些路径不进行timing check
2.22 对于某些路径需要在固定的几个周期内完成,如何对这些路径进行约束?
使用set_multicycle_path 对路径进行约束
2.23 在添加这些特殊的路径约束,如何恢复原来通用的时序约束?
使用reset_path
2.24 如何对三态门进行约束?
由于综合时,默认三态门是enable的,所以对某些路径要设置set_false_path
2.25 如何对门控时钟进行约束,以保证功能正常?
对门控时钟电路进行setup和hold检查,使用set_gating_clock_check
2.26 设置对某些网络比如clock或者reset不进行添加buffer等操作,应该怎么约束?
使用set_dont_touch_network,请注意和set_dont_touch用法的区别

2.27 如何修正hold 时间冲突?
加入set_fix_hold约束,这步约束在front-end遇到时一般不考虑,留给back-end公司处理!
/************ Part 3 Compile stategy ***********/
3.1 综合时,有多少选择综合策略呢?
可以使用top-down 和bottom-top。
3.2 top-down 方式有何优点?
仅需提供单一TOP的script
将设计作为一个整体,可得到较好的结果
3.3 bottom-up方式有什么优点?
对多时钟的综合更为适合
每个子模块都有自己的script,便于管理
当一个模块改变时,不用重新综合所有设计
3.4 如何进行time-budge?
使用characteristic
3.5 top-down 方式有何缺点?
编译时间长
子模块改变则整个设计都要重新综合
对多时钟设计综合效果不好
3.6 bottom-up方式有什么缺点?
需要维护多个script
3.7 编译时的 -incremental 是什么意思?
设计映射为门之后,时序和面积约束可以再定义,incremental确保维持以前的电路结构,只作改善时序和性能,不添加不必要的逻辑。
3.8 …
/
Part 4 Analyze the report ******************/
4.1 如何看面积报告?
report_area
4.2 如何看时序报告?
report_timing,详细请man report_timing 这个命令,看看它的多种option用法
4.3 想对单独的单元看面积报告, 用什么命令?
report_cell 但是缺省的report_cell只能看current_design下面的一级的cell的面积,因此就有两种方法解决这个问题:
1. 用report_cell [get_cells -hier *]可以看所有的cells面积
2. 用list_design列出所有的design, 然后改变current_design到你所想要看的那一级的cell, 然后直接用report_cell.
4.4 如何看设计环境和线载模型?
report_design
4.5 若设计规则和时序违反约束,如何查看?
使用report_constraint -all_violators
4.6 如何查看连线的扇入,扇出,负载,电容和跳变时间?
使用report_net
4.6 如何看整个综合后的网表中使用多少种类型的电路门?
使用report_hierarchy
4.7 如何查看timing exception的时序约束?
使用report_timing_requirements,请大家思考一下有哪些timing exceptions

DC综合的一些基本概念相关推荐

  1. 20211110:DC综合的一些简单概念总结(2)

    DC综合的一些简单概念总结(2) 问题描述 分析与解答 每日总结 这些概念皆为一些必须理解的基础,经济基础决定上层建筑,学习也是同理.务必深化这些简单但是很基础的东西.做到别人问起时你可以侃侃而谈的效 ...

  2. 20211109:DC综合的一些简单概念理解记录

    DC综合的一些简单概念总结 问题描述 分析与解答 每日总结 首先写在最前面,关于我的个人博客只是一个学习记录,方便我在需要回顾时可以更快的找出这些知识点来回顾,而不是单纯的为了记录而记录.各位共勉! ...

  3. 【DC综合】逻辑综合的实施流程

    逻辑综合实施流程 1. DC启动 1.1 四种启动方式 1.2 日志文件 1.3 启动文件 2. 读入设计文件 2.1 read 2.2 analyze&elaborate 2.3 link ...

  4. DC综合简单总结(2)

    DC综合简单总结(2) 建立时间和保持时间和数据输出延时时间 一.概念 建立时间和保持时间都是针对触发器的特性说的. 建立时间(Tsu:set up time) 是指在触发器的时钟信号上升沿到来以前, ...

  5. 20211028:DC综合时的内部时钟处理

    DC综合时的内部时钟处理 问题描述 分析与处理方法 总结 问题描述 综合时出现未约束的endpoints. 分析与处理方法 利用vcs和netlist文件来检索出现的endpoints,追溯至最原始的 ...

  6. DC综合——学习笔记

    DC综合--学习笔记 一.DC综合简介 1.1 什么是综合? 1.2 综合需要的文件 1.3 综合输出的文件 1.4 电路综合的要求 1.4.1 综合脚本的要求 1.4.2 综合结果的要求 二.DC综 ...

  7. DC综合后处理(查看生成的网表和报告)

    [转载]DC综合后处理 - Thomas的文章 - 知乎,作者:IC_learner, https://zhuanlan.zhihu.com/p/161061612 概述 前面也讲了一些综合后的需要进 ...

  8. DC综合脚本中文详细解释

    #script for Design Compiler DC综合编译脚本 #language:TCL 语言说明 #Usage: 使用说明 1)make sure the lib in the curr ...

  9. DC综合简介及基本流程

    一:首先我们要知道DC综合是用来干什么的. DC综合用一句话概括就是将RTL级描述的电路在工艺.面积.时序等约束下转换为基于工艺库的门级网表.综合包括三个阶段:转换.优化. 1.转换:将RTL级描述转 ...

最新文章

  1. P4779 【模板】单源最短路径(标准版)(dijkstra模板)
  2. 图解 二叉查找树 红黑树
  3. python中tushare数据可以导出嘛_Python与交易策略分析tushare/baostock库介绍(附代码)...
  4. bzoj 4012: [HNOI2015]开店 主席树
  5. 录屏、直播中的鼠标键盘演示神器PointFocus
  6. 浅谈Spring5 响应式编程
  7. python中json模块_Python的标准模块包json的实例用法
  8. 【数据结构与算法】森林版并查集V1.0的Java实现
  9. Python统计磁盘代码文件行数
  10. Gson将json转Map的那些坑
  11. 计算机桌面图标右上角出现双箭头符号,电脑桌面图标有箭头,如何消除小小障碍小编有绝招...
  12. mysql gh ost 对比_GitHub开源MySQL Online DDL工具gh-ost参数解析
  13. 酒趣与酒情:聊聊酒吧和酒馆的不同
  14. GIC/ITS代码分析(3)ITS驱动初始化
  15. Bezier曲线生成【计算机图形学】
  16. 浏览器性能对比测试技术研究与应用
  17. git忽略已加入版本控制的文件
  18. IP网络控制器架构与关键技术
  19. 第一次来大姨妈,好酸爽!1
  20. 怎样批量、快速、一次性删除QQ好友

热门文章

  1. 有苦有乐的算法 --- 可能有环也可能无环的两个单链表,判断这两个链表是否相交,如果相交返回相交的第一个节点
  2. 《蓝莓之夜》经典台词
  3. 鸿蒙适配倒计时,倒计时10天!鸿蒙系统传来好消息,华为大招正式亮相
  4. 【Linux】htop命令的使用详解
  5. 销售思路杂谈(产品卖不出去,不好卖怎么办)
  6. 数据爬取被判不正当竞争|大众点评诉爱帮
  7. 华信mysql数据恢复_华信安卓手机数据恢复程序3.0
  8. 如何获取维普免费账号--应对大家工作后在校外下载维普万方等全文
  9. Ethereum 基础(一)
  10. python画图大全_python画图教程