Synopsys-IC的个人空间 https://blog.eetop.cn/861869 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

DC简明教程

热度 14已有 10136 次阅读| 2013-4-2 11:28 |个人分类:教辅资料

1.1 什么是DC?
DC(Design Compiler)
Synopsyslogical synthesis优化工具,它根据design descriptionconstraints自动综合出一个优化了的门级电路。它可以接受多种输入格式,如硬件描述语言、原理图和netlist等,并产生多种性能报告,在缩短设计时间的同时提高读者设计性能。

1.2 DC能接受多少种输入格式?
支持.db, .v, .vhd , edif, .vgh等等,以及.lib等相关格式。

1.3 DC提供多少种输出格式?
提供.db, .v, .vhd, edif, .vgh等,并可以输出sdc, .sdf等相关格式文件。
1.4 DC
的主要功能或者主要作用是什么?
DC是把HDL描述的电路综合为跟工艺相关的门级电路。并且根据用户的设计要求,在timingareatimingpower上取得最佳的效果。在floorplanningplacement和插入时钟树后返 回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是在synthesismap时需要的实际的工艺库

1.9 link_library如何指定?
链接时需要的库,通常与library相同,设置时,需要加“*”,表示内存中的所有库。

1.10 search_path 的设置?
该参数指定库的存储位置

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

1.12 为什么要使用DA而不用shell接口?
暂时我也不知道答案
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命令来实现的?
逻辑优化和映射均在compile命令完成,但是可以指定使用特殊的优化方法:structural flatten

1.16. 什么是DC script?
DC script. 是一组dc 命令的集合. 使得综合可以流程化也易于管理.

1.17. 基于路径的综合的意思是什么?
路径(path),是DC中的一个重要概念。它包括4种路径方式:
a. input
FFdata口;
b. FF
clk到另一个FFD口;
c. FF
clk到输出端口DICDER
d. input
output
基于路径的综合就是对这四种路径进行加约束,综合电路以满足这些约束条件。

1.18 DC中的各类参数的单位是如何确定的呢?
参数的单位由所使用库文件决定,在读入库之后,可以用report_lib去看库的信息,里边有详细的单位说明

1.19 DC中的对象有哪些?
设计变量:一共有八种:Design, cell, reference, port, pin, net, clock, library。其中cell是子设计的例化,reference是多个子设计例化的通称,portdesign的输入输出,pincell的输入输出。

1.20 什么叫start point end point?
这两个概念是DCpath概念的起始点和终点。
起始点可以是inputFFclk
终点可以是FFdataoutput

1.21 如何寻找想约束的对象?
一个是全部查找包括:all_inputs , all_outputs, all_clocks, all_registers。一个是根据关键词进行查找:find_ports()find(port,’ ‘)

1.22 什么叫一个设计(design) ?
设计是DC中的重要对象,你所要综合的东西就叫design,确切或者说你所要综合模块的top文件。

1.23 什么叫cell ?
design中,instance的子设计,称为cell

1.24 reference 是指什么? cell 有什么区别?
当存在一个模块被多次例化,那么该模块就称为reference

1.25 如何读入一个design?
使用analyze + elaborate 或者 read_verilog, read_vhdl, read_file 命令。

1.26 analyze+ elaborate read 命令有什么区别?
read_file 是可以读取任何SYNOPSYS支持格式的;analyzeeloborate只支持verilogVHDL两个格式,但是他们支持在中间过程中加入参数而且以便以后可以加快读取过程。

1.27 如何处理多个引用的问题?
一个方法是使用uniquify,就是把引用几次那么就在内存中换名引入多个子设计,适用于不同时序约束要求;也可以用dont_touch命令,先对多个引用的设计进行编译之后,设置为dont_touch,适用于基本相同的环境要求;还有一种就是把两个引用进行flatten,之后进行综合。

1.28 link的作用是什么?
确定所有文件是否均存在并把它们链接到当前设计。

1.29 环境设置是指什么?
是指芯片物理上的参数,比如电压,温度等。

1.30 如何设置线载模型?
使用set_wire_model命令

1.31 如何得知线载模型的种类?
读取库文件到DC中,使用report_lib看有多少可用的线载模型

1.32 如何设置工作环境变量?
使用set_operating_conditions

1.33 工作环境变量的类别可以分为哪几类?
一般可以分为最坏(worst case),典型(typical),最佳(best case)

1.34 为什么要设置工作环境变量?
由于我们要做的是一颗要在实际环境中正常工作的芯片,而在不同的温度和环境下的电路的性能有很大影响,因此为了近可能地模拟芯片工作,设置合适的工作环境信息是非常必要的。

1.35 read analyze + ealborate做了哪些工作?
语法检查,建立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启动后, 想修改库,怎么办?

暂时没有答案

1.41 如何在dc_shell环境下执行UNIX命令?

1.42 优化分为几个层次?
一个是基于HDL的结构优化转化为GETCH结构;基于GTECH的逻辑优化,包括架构(strcuture),打平(flatten),转化为优化过的GETCH;基于GETCH的门级优化,主要作用是映射到实际的工艺库中。

1.43 什么是约束?
约束分为design constraintoptimization constraintdesign constraint不由用户确定,已经由所采用的库确定了,用户只能添加进一步的约束。optimization constraint分为两个方面,timing constraintarea constrainttiming constraint又可分为组合电路的约束,时序电路的约束以及输入输出的约束。

1.44 DC Script支持TCL么?
dcshdc-tcl。前者是SYNOPSYS的内部语言,后者是TOOL COMMAND languageTCL)。

1.45 综合时不想使用某些库单元进行mapping,怎么办?
使用set_dont_use 命令

/******** Part 2 Compile stategy **************/

2.1 约束一个设计分为几个方面?
总的分为,面积约束和时序约束。

2.2 面积约束的命令是什么?
set_max_area

2.3 如何对时钟进行约束?
对时钟进行约束是对时钟的周期,波形进行描述。
使用create_clock 建立时钟约束

2.4 如何对pll进行约束?
如果存在PLL,那么首先对输入的初始时钟用create_clock进行约束。
再用create_propagated_clock PLL输出时钟在基于输入时钟进行约束。

2.5 什么叫虚拟时钟约束?
虚拟时钟是指在当前要综合的模块中不存在的物理时钟。比如,设计外的DFF的时钟。
建立这样的时钟有益于描述异步电路间的约束关系。

2.6 DC可以对时钟的哪些特性进行约束?
DC支持对时钟的周期,波形,jitterskewlatency 描述

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 networkthe default is network

2.10 如何对当前设计的端口外部条件进行约束?
端口的外部条件包括输入驱动大小,输出负载的大小,扇出大小。

2.11 输入端口被多大的驱动所驱动?
可以使用set_dirive set_driving_cell

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 当一个组合电路超过了时钟周期约束,那么该如何处理?

9

点赞

刚表态过的朋友 (9 人)

发表评论 评论 (5 个评论)

回复 荆轲123 2020-5-28 18:50
写得太好了
回复 chenwenhaoee 2021-7-29 12:36
   非常受用,谢谢分享!
回复 silvia_wang 2021-11-7 17:47
正在学习基础知识,相当有用,thank you
回复 Peace-IC 2021-12-20 22:16
很有用,谢谢
回复 木木小师兄 2022-11-29 11:08
干货满满,谢谢

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 14

    粉丝
  • 0

    好友
  • 17

    获赞
  • 25

    评论
  • 1259

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 20:15 , Processed in 0.025220 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部