DC综合的一些基本概念_leaf cell-程序员宅基地

技术标签: Design Compiler  综合  IC综合  IC  IC设计  DC  

转载: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 + mapping
  transition 对应命令为 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的clk
  2 终点可以是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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_29862967/article/details/108286059

智能推荐

软件测试流程包括哪些内容?测试方法有哪些?_测试过程管理中包含哪些过程-程序员宅基地

文章浏览阅读2.9k次,点赞8次,收藏14次。测试主要做什么?这完全都体现在测试流程中,同时测试流程是面试问题中出现频率最高的,这不仅是因为测试流程很重要,而是在面试过程中这短短的半小时到一个小时的时间,通过测试流程就可以判断出应聘者是否合适,故在测试流程中包含了测试工作的核心内容,例如需求分析,测试用例的设计,测试执行,缺陷等重要的过程。..._测试过程管理中包含哪些过程

政府数字化政务的人工智能与机器学习应用:如何提高政府工作效率-程序员宅基地

文章浏览阅读870次,点赞16次,收藏19次。1.背景介绍政府数字化政务是指政府利用数字技术、互联网、大数据、人工智能等新技术手段,对政府政务进行数字化改革,提高政府工作效率,提升政府服务质量的过程。随着人工智能(AI)和机器学习(ML)技术的快速发展,政府数字化政务中的人工智能与机器学习应用也逐渐成为政府改革的重要内容。政府数字化政务的人工智能与机器学习应用涉及多个领域,包括政策决策、政府服务、公共安全、社会治理等。在这些领域,人工...

ssm+mysql+微信小程序考研刷题平台_mysql刷题软件-程序员宅基地

文章浏览阅读219次,点赞2次,收藏4次。系统主要的用户为用户、管理员,他们的具体权限如下:用户:用户登录后可以对管理员上传的学习视频进行学习。用户可以选择题型进行练习。用户选择小程序提供的考研科目进行相关训练。用户可以进行水平测试,并且查看相关成绩用户可以进行错题集的整理管理员:管理员登录后可管理个人基本信息管理员登录后可管理个人基本信息管理员可以上传、发布考研的相关例题及其分析,并对题型进行管理管理员可以进行查看、搜索考研题目及错题情况。_mysql刷题软件

根据java代码描绘uml类图_Myeclipse8.5下JAVA代码导成UML类图-程序员宅基地

文章浏览阅读1.4k次。myelipse里有UML1和UML2两种方式,UML2功能更强大,但是两者生成过程差别不大1.建立Test工程,如下图,uml包存放uml类图package com.zz.domain;public class User {private int id;private String name;public int getId() {return id;}public void setId(int..._根据以下java代码画出类图

Flume自定义拦截器-程序员宅基地

文章浏览阅读174次。需求:一个topic包含很多个表信息,需要自动根据json字符串中的字段来写入到hive不同的表对应的路径中。发送到Kafka中的数据原本最外层原本没有pkDay和project,只有data和name。因为担心data里面会空值,所以根同事商量,让他们在最外层添加了project和pkDay字段。pkDay字段用于表的自动分区,proejct和name合起来用于自动拼接hive表的名称为 ..._flume拦截器自定义开发 kafka

java同时输入不同类型数据,Java Spring中同时访问多种不同数据库-程序员宅基地

文章浏览阅读380次。原标题:Java Spring中同时访问多种不同数据库 多样的工作要求,可以使用不同的工作方法,只要能获得结果,就不会徒劳。开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中。使用Spring框架时,使用单一数据库是非常容易的,但如果要同时访问多个数据库的话事件就变得复杂多了。本文以在Spring框架下开发一个Sp..._根据输入的不同连接不同的数据库

随便推点

EFT试验复位案例分析_eft电路图-程序员宅基地

文章浏览阅读3.6k次,点赞9次,收藏25次。本案例描述了晶振屏蔽以及开关电源变压器屏蔽对系统稳定工作的影响, 硬件设计时应考虑。_eft电路图

MR21更改价格_mr21 对于物料 zba89121 存在一个当前或未来标准价格-程序员宅基地

文章浏览阅读1.1k次。对于物料价格的更改,可以采取不同的手段:首先,我们来介绍MR21的方式。 需要说明的是,如果要对某一产品进行价格修改,必须满足的前提条件是: ■ 1、必须对价格生效的物料期间与对应会计期间进行开启; ■ 2、该产品在该物料期间未发生物料移动。执行MR21,例如更改物料1180051689的价格为20000元,系统提示“对于物料1180051689 存在一个当前或未来标准价格”,这是因为已经对该..._mr21 对于物料 zba89121 存在一个当前或未来标准价格

联想启天m420刷bios_联想启天M420台式机怎么装win7系统(完美解决usb)-程序员宅基地

文章浏览阅读7.4k次,点赞3次,收藏13次。[文章导读]联想启天M420是一款商用台式电脑,预装的是win10系统,用户还是喜欢win7系统,该台式机采用的intel 8代i5 8500CPU,在安装安装win7时有很多问题,在安装win7时要在BIOS中“关闭安全启动”和“开启兼容模式”,并且安装过程中usb不能使用,要采用联想win7新机型安装,且默认采用的uefi+gpt模式,要改成legacy+mbr引导,那么联想启天M420台式电..._启天m420刷bios

冗余数据一致性,到底如何保证?-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏9次。一,为什么要冗余数据互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量。水平切分会有一个patition key,通过patition key的查询能..._保证冗余性

java 打包插件-程序员宅基地

文章浏览阅读88次。是时候闭环Java应用了 原创 2016-08-16 张开涛 你曾经因为部署/上线而痛苦吗?你曾经因为要去运维那改配置而烦恼吗?在我接触过的一些部署/上线方式中,曾碰到过以下一些问题:1、程序代码和依赖都是人工上传到服务器,不是通过工具进行部署和发布;2、目录结构没有规范,jar启动时通过-classpath任意指定;3、fat jar,把程序代码、配置文件和依赖jar都打包到一个jar中,改配置..._那么需要把上面的defaultjavatyperesolver类打包到插件中

VS2015,Microsoft Visual Studio 2005,SourceInsight4.0使用经验,Visual AssistX番茄助手的安装与基本使用9_番茄助手颜色-程序员宅基地

文章浏览阅读909次。1.得下载一个番茄插件,按alt+g才可以有函数跳转功能。2.不安装番茄插件,按F12也可以有跳转功能。3.进公司的VS工程是D:\sync\build\win路径,.sln才是打开工程的方式,一个是VS2005打开的,一个是VS2013打开的。4.公司库里的线程接口,在CmThreadManager.h 里,这个里面是我们的线程库,可以直接拿来用。CreateUserTaskThre..._番茄助手颜色

推荐文章

热门文章

相关标签