您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Design-Compiler-一般问题解答
DesignCompiler一般问题解答1.1什么是DC?DC(DesignCompiler)是Synopsys公司的logicalsynthesis工具,它根据designdescription和designconstraints自动综合出一个优化了的门级电路。它可以接受多种输入格式,如HDL、Schematics、Netlist等,并能生成多种性能report,在reducingdesigntime的同时提高了设计的性能。1.2DC能接受多少种输入格式?支持.db、.v、.vhd、.edif、.vgh、.lib等,.db一般是厂商的单元库;.v是veilog的后缀;.vhd是VHDL的后缀;.edif和.vhd是两种形式的netlist。1.3DC提供多少种输出格式?提供.db、.v、.vhd、edif、.vgh等,并可以输出sdc、sdf等相关格式文件。1.4DC的主要功能或者主要作用是什么?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&或者用命令whichdc_shell找到dc的安装目录。找到online目录。1.7如何配置DC?综合设置提供必要的参数给DC,使工具能够知道进行综合时所需要的必要的信息,如:工艺库,目标库,标志库等等。要在.synopsys_dc.setup上设置好这些参数。而.synopsys_dc.setup要在三个目录下有说明,一个是synopsys的安装目录,一个是用户文件夹,最后一个是工程目录。由后一个设置覆盖前一个文件。具体参数包括:search_path,target_library,link_library,symbol_library1.8target_library是指什么?target_library是在synthesis的map阶段时需要的实际的工艺库。1.9link_library如何指定?链接时需要的库,通常与library相同,设置时,需要加“*”,表示内存中的所有库。1.10search_path的设置?该参数指定库的存储位置1.11DA和DC有什么区别?DA是DesignAnalyzer的简称,它调用DC来进行综合,但是它是图形化的,可以看逻辑电路图,当然需要你的库有symbol库.1.12为什么要使用DA而不用shell接口?这个问题似乎很幼稚,shell接口当然可以用,但我们大部分人已经习惯使用windows这种友好的图形化界面,恰好DA是图形化的,非常适合初学者!不过本人强烈建议使用shell接口的。synopsys的synthesis包括dc_shell(这是synopsys自带的)和dc_shell-tcl_mode(script命令遵循tcl语法格式)。1.13SOLD是什么?SOLD是SynopsysOnLineDocument的简称,基本包括了synopsys公司的所有工具的文档集合.1.14.translation这一步是用什么DC命令来实现的?我们知道,DC综合过程包括3个步骤:translation+logicoptimization+mappingtransition对应命令为read_verilog(read_vhdl等)logicoptimization和mapping对应于compile1.15.逻辑优化和映射(logicoptimization+mapping)又是用什么DC命令来实现的?logicoptimization和mapping均在compile命令完成,但是可以指定使用特殊的优化方法:structural和flatten,建议大家在synthesis时同时生成structural和flatten格式的netlist,然后打开看看到底有什么不同之处。1.16.什么是DCscript?DCscript是一组dc命令的集合,使得综合可以流程化也易于管理。1.17.基于路径的综合的意思是什么?路径(path),是DC中的一个重要概念。它包括4种路径方式:1input到FF的D端。2FF的clk到另一个FF的D端。3FF的clk到输出Q。4input到output。基于路径的综合就是对这四种路径进行加约束,综合电路以满足这些约束条件。1.18DC中的各类参数的单位是如何确定的呢?参数的单位由所使用的库决定,在读入库之后,可以用report_lib去看库的信息,里边有详细的单位说明1.19DC中的对象有哪些?设计变量:一共有八种:Design,cell,reference,port,pin,net,clock,library。其中cell是子设计的例化,reference是多个子设计例化的通称,port是design的输入输出,pin是cell的输入输出。1.20什么叫startpoint和endpoint?这两个概念是DC中path概念的起始点和终点:1起始点可以是input和FF的clk2终点可以是FF的data和output这些是timinganalyzing基本概念,希望大家结合DC和STA的实际牢牢掌握!1.21如何寻找想约束的对象?一个是全部查找包括:all_inputs,all_outputs,all_clocks,all_registers。比如:set_input_delay1.0all_inputs():这种写法针对dc_shell,若是在dc_shell-tcl_mode下,则为set_input_delay1.0[all_inputs]一个是根据关键词进行查找:[get_ports()]或表示成find(port,’‘),前者是tclmode下的写法!作为一个IC设计者,在此强烈建议初学者多看SOLD文档,多多实践,多多学习TCL、Perl等常用的脚本语言。1.22什么叫一个设计(design)?设计是DC中的重要对象,你所要综合的东西就叫design,确切的说是你所要综合模块的top文件。1.23什么叫cell和leafcell?在design中,instance的子设计,称为cell。没有子模块的cell统称为leafcell,我们在定义clockconstraint的时候,一般需要把path指到leafcell。1.24reference是指什么?和cell有什么区别?当存在一个模块被多次例化,那么该模块就称为reference1.25如何读入一个design?使用analyze+elaborate或者read_verilog、read-fverilog、read_vhdl、read_file命令。1.26analyze+elaborate和read命令有什么区别?read_file是可以读取任何synopsys支持格式的;analyze和eloborate只支持verilog和VHDL两个格式,但是他们支持在中间过程中加入参数而且以便以后可以加快读取过程。1.27如何处理多个引用的问题?方法一:使用uniquify,就是把引用几次那么就在内存中换名引入多个子设计,适用于不同时序约束要求。方法二:可以用dont_touch命令,先对多个引用的设计进行编译之后,设置为dont_touch,适用于基本相同的环境要求。方法三:把两个引用进行flatten(没有层级结构),然后进行综合。1.28link的作用是什么?确定所有文件是否均存在并把它们链接到当前设计。1.29环境设置是指什么?是指芯片物理上的参数,比如电压,温度等。1.30如何设置线载模型?使用set_wire_load_model命令,如:set_wire_load_model-nameKME-librarylibr1.31如何得知线载模型的种类?读取库文件到DC中,使用report_lib看有多少可用的线载模型1.32如何设置工作环境变量?使用set_operating_conditions如:set_operating_conditionsWCCOM1.33工作环境变量的类别可以分为哪几类?一般可以分为最坏(worstcase)、典型(typical)、最佳(bestcase)。1.34为什么要设置工作环境变量?由于我们要做的是一颗要在实际环境中正常工作的芯片,而温度和环境对电路的性能有很大影响,因此为了尽可能地模拟芯片工作,设置合适的工作环境信息是非常必要的。1.35read和analyze+ealborate做了哪些工作?语法检查,建立GETECH库(大家可以自己去搜索什么叫GETECH库)值得注意的是,read命令不自动执行link操作。1.36getech库是做何用途的?GETCH库是由软宏(softmacros)组成的,是加法器,乘法器之类的东西,这些组件都是在DW里引用的。1.37调用getech库中的加法器之后,如何去自己选择一个设计者需要的加法器?我没有用过!暂时没有答案1.38调用了加法器之后在优化阶段还能够掉换不同的加法器么?我没有试过!暂时没有答案1.39如何检查script文件中有何错误呢?dc_shell-tcl-f1.40如果在dc_shell启动后,想修改库,怎么办?摁一下ctrl+c暂停,改完之后继续运行!1.41如何在dc_shell环境下执行UNIX命令?这个问题很简单,也很幼稚!在此不作回答!1.42优化分为几个层次?一个是基于HDL的结构优化转化为GETCH结构;基于GTECH的逻辑优化,包括架构(strcuture),打平(flatten),转化为优化过的GETCH;基于GETCH的门级优化,主要作用是映射到实际的工艺库中。1.43什么是约束?约束分为designconstraint和optimizationconstraint。designconstraint不由用户确定,已经由所采用的库确定了,用户只能添加进一步的约束。optimizationconstraint分为两个方面,timingconstraint和areaconstraint。timingconstraint又可分为组合电路的约束,时序电路的约束以及输入输出的约束。1.44DCScript支持TCL么?支持,synopsys支持dc_shell和dc_shell-tcl_mode。前者是SYNOPSYS的内部语言,后者遵循tcl语法。1.45综合时不想使用某些库单元进行mapping,怎么办?使用set_dont_use命令/********Part2Compilestategy**************/2.1约束一个设计分为几个方面?总的分为:areaconstraint和timingconstraint。2.2面积约束的命令是什么?set_max_area2.3如何对时钟进行约束?描述一个clock包含两个因素:频率和相位。使用create_clock建立时钟constraint。如:create_clock-nameclk200-period5-waveform{0,2.5}find(pin,armpll_wrapper_x/g_reg/Q)2.4如何对pll进行约束?如果存在PLL,那么首先对输入的初始时钟用create_clock进行约束。再用create_propagated_clock对PLL输出时钟在基于输入时钟进行约束,或者直接用create_clock,两者的clockpath都得来自leafcell2.5什么叫虚拟时钟约束?虚拟时钟是指在当前要综合的模块中不存在的物理时钟。比如,设计外的DFF的时钟。建立这样的时钟有益于描述异步电路间的约束关系,不过本人在实际工作中基本不设置!2.
本文标题:Design-Compiler-一般问题解答
链接地址:https://www.777doc.com/doc-5634381 .html