版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Cadence使用参考手册微电子学设计室20007概 Cadence概 ASIC设计流 第一章Cadence使用基 Cadence软件的环境设 Cadence软件的启动方 库文件的管 文件格式的转 怎样使用................................................................................本手册的组 第二章Verilog-XL的介 1环境设 Verilog-XL的启 XL的界 Verilog-XL的使用示 Verilog-XL的有关帮助文 第四章电路图设计及电路模 电路图设计工具 设 启 用户界面及使用方 使用示 相关文 电路模拟工具og 设 启 用户界面及使用方 4.2.5相关文 第五章自动布局布 Cadence中的自动布局布线流 用AutoAbgen进行自动布局布线库设 第六章版图设计及其验 版图设计大师VirtuosoLayout 设 启 用户界面及使用方 使用示 相关文 版图验证工具 Dracula使用介 相关文 第七章skill语言程序设 skill语言概 skill语言的基本语 Skill语言的编程环 面向工具的skill语言编 附录1技术文件及显示文件示 附录2Verilog-XL实例文 TSMC库文 附录3Dracula命令文 概作为流行的EDA工具之一Cadence一直以来都受到了广大EDA工程师的青睐然而Cadence的使用之繁琐又给广大初学者带来了不少麻烦作为一位过来人本人对此深有体会本着为初学者抛砖引玉的目的本人特意编写了这本小册子将自己数年来使用Cadence的经验加以总结但愿会对各位同行有所帮助本册子的本意在于为初学者指路故不会对个别工具进行很详细的介绍只是对初学者可能经常使用的一些工具加以粗略的介绍其中可能还请各位加以指正Cadence概述Cadence是一个大型的EDA软件 它几乎可以完成电子设计的方方面面包括ASIC设计A设计和B板设计与众所周知的EDA软件Synopsys相比 Cadence的综合工具略为逊色 然而 Cadence在仿真 电路图设计自动布局布线版图设计及验证等方面却有着优势Cadence与Synopsys的结合可以说是EA设计领域的黄金搭档 此外 Cadence公司还开发了自己的编程语言skill,并为其编写了编译器 由于skill语言提供编程接口甚至与C语言的接口 所以可以以Cadence为平台进行扩展 用户还可以开发自己的基于Cadence的工具实际上 整个Cadence软件可以理解为一个搭建在skill语言平台上的可执行文件集 所有的Cadence工具都是用Skill语言编写的但同时 由于Cadence的工具太多 使得Cadence显得有点凌乱 这给初学带来了的麻烦Cadence包含的工具较多 几乎包括了EDA设计的方方面面 本小册子旨在向初学者介绍Cadence的入门知识所以不可能面面具到只能根据ASIC设计流程 介绍一些ASIC设计者常用的工具 例如仿真工具Verilog-xl,布局布线工具Preview和SiliconEnsemble,电路图设计工具Composer,电路模拟工具ogArtist,版图设计工具VirtuosoLayoutEditor,版图验证工具Dracula最后介绍一下Skill语言的编程ASIC设计流程设计流程是规范设计活动的准则 好的设计流程对于产品的成功至关重 本节将通过与具体的EDA工 Synopsys和Cadence相结 概括一个实际可行的ASIC设计的设计流程 图1 1是实际设计过程中较常用的一个流程接下一页图 1ASIC设计流程这是深亚微米设计中较常用的设计流程 在该设计流程中 次综合和底层的布局布线之间没有明显的界 设计时必须考虑底层的物理实的划分与布局规划同时 由于内核Core的行为级模型有其物理实现的精确的延时信息使得设计者可在设计的早期兼顾的物理实现 可以较精确的估计互连的延时以达到关键路径的延时要求 同时布局布线后提取的SDF文件将被反标到综合后的门级网表中以验证其功能和时序是否正确从该流程中可看出在实际设计中较常用到的Cadence的工具有VerilogHDL仿真工具Verilog-XL电路设计工具Composer电路模拟工具ogArtist,版图设计工具VirtuosoLayoutEditor,版图验证工具Dracula和Diva以及自动布局布线工具Preview和SiliconEnsemble本册子将对这些工具作一个初步介绍如果读者想进一步了解某个软件的使用可参考本册子提供的相关文档以进一步熟练Cadence使用基础Cadence软件的环境设置要使用Cadence,必须在自己的计算机上作一些相应的设置这些设置包括很多方面而且不同的工具可能都需要进行各自的设置读者如果遇到这方面的问题可以参考一下openbook中的ConfigurationGuides及各工具的userguide或者reference,其的方法是main ->SystemAdministration->ConfigurationGuides但作为初学者只需进行以下几项设置.cshrc文件的设置首先要在自己的.cshrc文件中设置Cadence软件所在的路径所使用的licence.cshrc中设置的一个简单示例其中Cadence所在的为/EDA04/cds97a/setenvCDS_ROOT/EDA04/cds97asetenvCDS_INST_DIR/EDA04/cds97asetpath=($path$CDS_INST_DIR/tools/bin)setenvLM_LICENSE_FILE对于某些Cadence中的工具也必须在.cshrc中进行一些设置.cdsenv文件设置.cdsenv文件中包含了Cadence软件的一些初始设 该文件是用语言写成 Cadence可直接执.cdsinit设置与.cdsenv一样.cdsinit中也包含了Cadence软件的一些初始化设置该文件是用Skill语言写成的在Cadence启动时会首先自动调用这两个文件并执行其中的语句 若仅为初学 可以不编写这两个文件Cadence会自动调用隐含的设置 若想更改设置 可参考一些模板文件进行编写 在install_dir/tools/dfII/cdsuser 下有一些隐含的模板文 下面是一个简单的.cdsinit文件;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Tutorial.cdsinit; CrisReeser/Diane;Created:October10,;;Thisinitializationfilecontainsthesettingsnecessary;successfullyruntheCellDesigntutorial.Someofthese;beredundant,ifyoursiteusesasiteinitialization;Forfurtherinformationoninitializationfiles,read;commentsinthe<install_dir>/samples/local/cdsinit;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;HumanInterfaceEnvironmentSettingshiiSetFont("text""-adobe-courier-bold-r-*-*-12-*")hiSetFormPosition(603:500)hinestLimit=5hiSetUndoLimit(10)hiExpertMode(nil)window(1)->useScrollbars=twindow(1)->backingStore=t"xSnapSpacing""ySnapSpacing""segSnapMode""stopLevel"'intenvLoadFile("./.cdsenv");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;BindkeySettingsload(prependInstallPath("samples/local/schBindKeys.il"));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;RESIZE;;Note,hiFlush()isusedasaworkaroundtodisplayproblem;resizingwindowsinSKILL.hiResizeWindow(window(1)list(3:3750:200));;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TutorialCustomization;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;setSkillPath(". the"************************************************\n")fprintf(poport totheSRAMCompiler...%s\n"getEnvVar("USER"))printf( \n"printf("Donewithinitialization.\n")printf("************************************************\nprintf( \n"printf( \n"从中可看 Skill语言的语法与C语言的较为类 经过一定的学习就很容易掌握cds.lib文件的设置如果用户需要加入自己的库则可以修改自己的库管理文件cds.lib对于初次使用Cadence的用户Cadence会在用户的当前下生成一个cds.lib文件用户通过CIW生成一个库时Cadence会自动将其加入cds.lib文件中下面是一个简单的Cadence库管理文件cds.lib的示 /EDAHOME01/students/dhf/sram/dual/ourTechLibDEFINEsram/EDAHOME01/students/dhf/sram/dual/sramDEFINEbasic${CDS_INST_DIR}/tools/dfII/etc/cdslib/basic ogLib/EDA04/cds97a/tools/dfII/etc/cdslib/artistogLibDEFINEpCells/EDAHOME01/students/dhf/sram/dual/pCellsDEFINEhhh/EDAHOME01/students/dhf/sram/dual/hhh其中 DEFINE为库定义的保留字,ourTechLibsram等为所定义的库的名字最后的字符串为保存库的实际的物理技术库的生成技术文件库对于IC设计而言是非常重要的 其中包含了很多设计中所必需的信息 对于版图设计者而言 技术库就显得更为重要了 要生成技术文件库 必须先编写技术文件 技术文件主要包括层的定义符号化器件的定义 物理以及电学规则和一些针对特定的Cadence工具的规则的定义例如自动布局布线的一些规则版图转换成GDSII时所用到的层号的定义 技术文件的编写可参考openbook中有关技术文件的介绍并参考相应的模板来进行 其顺序为Main->ICTools->DesignFramWorkII->TechnologyFileHelp 附录1中有一个简单的技术文件示例 技术文件编好以后 就可以按照以下几步生成技术库1点击CIW中的File菜单选择其中的New项中的Library项如图2 1所示 弹出图2 2所示的表格2在Name项中输入所需的名字如myTecLib 保持如图所示的设置 点击ok 弹出如图2 3所示的框3在框中输入编好的技术文件名如my.tf 这时 技术文件必须在启动Cadence的当前 点击ok4经过一段时间 在CIW的显示区会出现一个提LibrarymyTecLibiscreated对于非工艺库的生成与工艺库大体相同 只是在2 2中选择attachtoexitedtechnologyfile,并在接下来的过程中选择相应的工艺库图 图 图 显示文件display.drf的设置display.drf文件控制Cadence的显示 其基本语法可参考openbook中的相应的介绍 附录1中包含了一个display.drf的示例Cadence软件的启动方法完成了一些必要的设置 对初学者只需设置.cshrc文件即可 其他设置都用隐含设置 等熟练了一些之后 再进一步优化自己的使用环境就可以启动Cadence软件 启动Cadence软件令有很多 不同的启动命令可动不同的工具集 常用的启动命令有icfb,icca等 也可以单独启动单个工具例如启动ViruosoLayoutEditor可以用layoutPlus来启动 SiliconEnsemble可以用sedsm来启动以icfb为例先在UNIX提示符下输入icfb& 再按回车经过一段时间就会出现如图2 4所示的CIWCommandInterpreterWindow窗口 从CIW窗口就可以调用许多工具并完成许多任务CIW窗口是使用Cadence时遇到的第一个窗口 是Cadence主要的用户界 它主要包括以下几个部分 TitleBar显示使用的软件名及log文件 如图2 4中的最上一行icfb-log:/ BannerOutputArea输出Cadence对用户命令的反应InputLine可用来输入Skill命令MouseBindingsLine显示在鼠标左中右三键上的快捷ScrollingbartoScrollThroughtheLogCadence将许多常用工具集成在一块以完成一些典型的任务图25总结了一些常用的启动命令及其可使用的工具用户可根据自己的需要选择最少的命令集图 4CIW窗图 5Cadence启动命库文件的管理启动了Cadence后 就可以利用File菜单建立自己的工作库 点击CIW窗口上的File菜单 选定其中的Newlib项 弹出如图2 2所示的框输入库名并选择相应的工艺库 然后选择ok,这时在CIW的显示区会出现如下提示Thelibiscreated新建的库是一个空的 里面什么也没 用户可在库中生成自己所的单元例如可以生成一个反相器单元并为其生成一个电路及一个版图视图其流程如下选择File菜单中的New项并选择Cellview项则弹出如图2-6所示的框选择所需的库并输入单元名inv并选择视图类型Schematic再点击ok按钮则弹出如图27所示的窗口用Add菜单中的Component命令调用ogLib中的单元输入PMOS和NMOS管以及电源和地如图28所示点击Checkandsave命令保存用同样的流程可生成inv的版图视图 利用Tools中的librarymanager可以对库进行管理图 文件格式的转化
图 Cadence有自己的数据格式为了与其他EDA软件之间进行数据交换Cadence提供数据与标准数据格式之间的转换点击CIW的File菜单中的Import可将各种外部数据格式转换成Cadence数据格式利用CIW的File菜单中的Export可将各种Cadence数据格式转换成外部标准数据格式怎样使用学习Cadence的最好是使用 Cadence的是用openbook命令来启动的在UNIX提示符下输入openbook&并回车就可以启动要拷贝中的文件可以先按下control键并用左键进行选择然后用copy进行拷贝如果想要知道一些关于如何使用openbook的技巧可在系统提示符下输入openbookhelp即可本手册的组成在本手册中将按照ASIC设计流程分别在第三章介绍的HDL工具例如Verilog仿真工具Verilog-xl 第四章介绍电路图设计工具Composer及电路模拟工具 ogArtist 第五章介绍自动布局布线Preview和SiliconEnsemble第六章介绍版图设计工具VirtuosoLayoutEditor和验证工具Dracula和Diva 第七章将介绍Skill语言的编程第二章Verilog-XL的介人们在进行电子设计时较常用的输入方法有两种 一种为硬件描述语言一种为电路图输入 随着ASIC设计技术的发展 以HDL作为输入的设计方法已成为ASIC设计的主流 目前较常用的硬件描述语言有VHDL和Verilog两种 相对而言 Verilog在工业上用的较为平常 故本小册子的讨论集中在Verilog上作为EDA设计的主流软件之一Cadence提供了对Verilog及VHDL的强大支持 尤其是Verilog,Cadence很早就引入了Verilog,并为其开发了一整套工具 而其中最出色的当数Verilog的仿真工具Verilog-XL Verilog-XL一直以其友好的用户界面及强大的功能而受到广大Verilog用户的青睐 本章将分五个方面一一对对其进行一个较为详尽的介绍1环境设置对于一般的Cadence的用户而 可能不需要进行任何设置就可启 用户可输入下列命令看自己是否可Verilog-XLwhichverilog如果可以Verilog-XL,会有类似如下的反/EDA04/cds97a/否 必须在.cshrc中用setpath命令加入以上路Verilog-XL的启动Verilog-XL的启动命令为verilog,它可以附带很多可选项 下面是其各选项及其意义Validhostcommandoptionsfor-f readhostcommandargumentsfrom-v specifylibrary-y<directory>specifylibrary- compile- enterinteractivemodeimmedia-i inputfromcommand-r restartfromasaveddata-l setlogfile-k setkeyfile- convertidentifierstoupper- setfull - piledataSpecialbehavioralperformanceoptions(if speedupbehavioral +turbowithsecondlevel +turbo+2withthirdlevel generatecodeformaintaininginformation$listcounts don'tuseaVXL-TURBO disableXLaccelerationofgatesinallSpecialenvironmentinvocationoptions(iflicensed): invoketheveriloggraphicalenvironment下面是几个简单的使用示 在UNIX提示符下输入这些命令即可启Verilog-ExamplehostcommandstorunVERILOG:verilogsio85.vverilogf1f2f3verilog-ssio85.vverilog-rsave.dat-lrun2.log-krun2.keyverilog-rsave.dat-sicommands.vicverilog-dqcrsave.dat一般较常用的启动方法是verilog–s+gui–vlibname–fscriptFilesourcefilename其中libname为所使用的库的名 scriptFile为用可选项 令文件 XL的界面运行以上的启动命令后如果未发生什么错误就会弹出下图所示的用户界面这就是Verilog-XL的SimControl窗口从该图形界面中可控制仿真的执图 1Verilog-XL的图形界Verilog-XL的图形界面主要有以下几个窗口SimControl窗口是主要的仿真控制窗口当用带有gui选项的verilog命令启动Verilog-XL时就会弹出这个窗口通过这个窗口用户可以显示设计的模块结构运行Verilog-XL命令设置及显示断点强行给变量赋值等等通过这个窗口可以实现用户与仿真的交互从而达到对仿真的控制通过点击SimControl窗口右上角的星形图标即可激活Navigator窗口该窗口可用来图形化显示设计的层次设计中的实体及其变量SignalFlowWatchObjectsSimWave窗口可以用来显示已经选择并了的信号的波形Verilog-XL的使用示例介绍了Verilog-XL的启动和用户界面后 下面通过一个具体的实例来演示Verilog-XL的使用 在附录2中有本示例所需的文件 在本示例中将对一个SRAM模块SRAM256X8.v进行仿真 在这个SRAM模块中又包含了一个子模块ram_sy1s_8052.v 所调用的为TSMC的0.35um的库test_bench为test_memory.v 在该test_bench中首先对SRAM进行写 然后进行读 面按照一个简单的流程来对这个SRAM进行模拟UNIX提示符下输入verilog-c-v test_memory.v来对源文件进行调 如果没有错 会显示0Simulation没有错误之 就可以启动Verilog-XL的图形界verilog–s+gui–v test_memory.v则会弹出如图 2所示的窗 自己所需要的波形信号 按运行按钮或在命令行输入原点并回车 即可运行 按停止按钮即可停止 停止后波形会自动更新图 Verilog-XL的有关帮助文件Verilog-XL有关的帮助文件主要有以下一些Verilog-XLReferenceVerilog-XLUserGuideVerilog-XLTutorialpareUserGuideSimWaveUserGuideVPIUserGuideandReference(formerlyPLI2.0)PLI1.0UserGuideandReferencePLIApplicationNote:BackAnnotationandDelayCalculationPLIApplicationNote:UsingtheValueChangeLinkLMCHardwareModelingInterfaceReferenceandUserGuideGraphicalOutputfortheVerilogProductFamilyReferenceSDFAnnotatorUserGuideCentralDelayCalculatorAlgorithmTimingLibraryFormatVerilogLanguageSensitiveEditorUser可通过如下顺序对这些文档进行 ->HDLTools>Verilog-第四章电路图设计及电路模拟设计的输入除了可以用硬件描述语言如VHDL及Verilog外还可以用电路图输入在早期的ASIC设计中电路图起着更为重要的作用作为流行的EDA软件,Cadence提供了一个优秀的电路图编辑工具ComposerComposer不但界面友好操作方便而且功能非常强大电路图设计好后 其功能是否正确 性能是否优越 必须通过电路模拟才能进行验证 Cadence同样提供了一个优秀的电路模拟软件 ogArtist由于 ogArtist通过Cadence与Hspice的接口调用Hspice对电路进行模拟本章将介绍电路图设计工具Composer和电路模拟软件 ogArtist的设置启动 界面及使用方法 简单的示例以及相关的辅助文件 以便读者能对这两种工具有一个初步的理解电路图设计工具Composer是一种设计输入的工具 逻辑或者电路设计工程师 物理设计工程师甚至PCB板设计工程师可以用它来支持自己的工作设对于一般的Cadence的用户而言可能不需要进行任何设置就可启动Composer但有时必须设置快捷键否则所有的快捷键就会失灵给使用带来一些不便在设计时快捷键往往会有很大的作用此外在电路设计中可能需要用到一些符号库例如sample库basicogLib 只需在cds.lib文件中加入以下一段代DEFINEbasic${CDS_INST_DIR}/tools/dfII/etc/cdslib/basic DEFINEogLib/EDA04/cds97a/tools/dfII/etc/cdslib/artist/ 启动Composer的启动很简单在启动Cadence后从CIW窗口中打开或新建一个单元的Schematic视图就会自动启动Composer的用户界面用户即可在其中放入单元及连线以构成电路图用户界面及使用方法图41是Composer的图形界面在该用户界面中大部分面积是右下角的显示区左边的图标是一些常用的工具读者可以自己启动Composer然后熟悉一下Composer的用户界 下面将简单介绍一下电路图设计及符Symbol设计的简单流图 1Composer的用户界图 2是编辑电路图的一般流程首先用Component命令调用符号库中的元件来添加元 如图的添加完所有的元件后就可以加入pin,可通过add菜单中的pin进行添布线及标线 可通过wire命令布 通过更改其属性标上线添加节点加注释加整体属 如一些自动布局布线属图 2电路图设计的简单流符号是用来代表元件的简单符号 如反相器用一个三角形代替 Cadence中 当上层调用下层单元和进行上下级时通常调用其符号所以 符号在电路设计中起着很重要的作用 与启动SchematicEditor类 通过在CIW窗口中新建或打开一个单元的symbol视图 就可启动SymbolEditor 图4 3是编辑符号的一般流程 主要包括以下几步在编辑区加入一些基本的图形加入符号的加入连接基本图形与pin的线加入符号的标 如加入选择外框加入文本注释更改整体属性图 3符号设计的简单流使用示例在openbook中有一个关于Composer的如果读者需要经常用到电路图本人建议你不妨去走一遍那个对你一定会有帮助的该可安如下顺序进行Main->ICTools->Tutorials->Composer相关文Composer:DesignEntry电路模拟工具ogCadence提供进行电路模拟的工 og AnglogArtist通过调Hspice进行电路模 然后进行各种后续处理并显示结设在运行ogArtist之 必须在.cshrc中设置以下语setenvCDS_Netlisting_Mode此外 最好能从Cadence的安装 的ogArtist中拷贝与模拟器相应的初始化文件启动ogArtist的启动方法有很多种可以从Composer的Tools菜单中执行也可以从CIW的Tools菜单中执行用户界面及使用方法图4 4是 ogArtist的用户界面关于具体的使用方法请参考openbook中的相应手册但有一点想提醒大家大家使用的licence可能不允许使用ogArtist 如果在微所使用 ogArtist且用Hspice为模拟器似乎激励文件用cdsspice格式才可调通有的读者可以一试4.2.5相关文与ogartist相关的文档ogArtistSimulationMicrowaveDesignMixed-SignalSimulationParametricysisSubstrateCouplingysis(SCA)SKILLFunctionsogExpressionLanguageReferenceCadenceSPICEReferenceComponentDescriptionFormatUserGuideFunctionalBlockLibraryReferenceHSPICE/SPICEInterfaceandSPICE2G.6ReferenceSpectreReferenceSpectreUserGuideSpectreHDLReferenceSpectreRFHelpSwitchedCapacitorDesignSystemogArtistTutorial:SwitchedCapacitorDesignVerilog-AReference通过顺序Main->ICTools->ogandMixedSignalSimulation可以第五章自动布局布线Cadence中的自动布局布线流程从第一章的ASIC设计流程中可看到设计输入经过综合和优化后就该对所生成的门级网表进行自动布局布线自动布局布线是连接逻辑设计和物理设计之间的纽带在自动布局布线前必须进行布局规划 floorplan,在Cadence中进行布局规划的工具为Preview 进行自动布局布线的引擎有四种 BlockEnsembleCellEnsemble GateEnsemble和SiliconEnsemble 其中 BlockEnsemble适用于宏单元的自动布局布线 CellEnsemble适用于标准单元或标准单元与宏单元相混合的布局布线 GateEnsemble适合于门阵列的布局布线 Ensemble主要用在标准单元的布局布线中 将Preview与四种引擎相结合可产生四种不同的自动布局布线环境和流程 由于SiliconEnsemble(DSM)的功能很完全 几乎可以完成所有复杂的自动布局布线的任务 在考虑自动布局布线引擎时 我们采用了SiliconEnsemble SRAM编译器所生成的用于自动布局布线的端口模型为SiliconEnsemble所要求的格式图5 1为采用Preview和SiliconEnsemble进行自动布局布线的流程图该流程主要由以下几个主要步骤组成1准备自动布局布线在进行自动布局布线之前必须准备好相应的库该库中含有工艺数据自动布局布线用的库单元及显示信息库的格式必须为DesignFrameworkII的数据库格式可以由用户利用版图生成工具VirtuosoLayoutEditor设计产生也可以来自一个由制造厂家和EDA公司提供的LEF(LibraryExchangeFormat)文件或者从GDSII生成2准备用来进行自动布局布线的网用来进行布局布线的网表可以由硬件描述语言经过综合优化或由电路提取而来所有网表在进行自动布局布线前都必须首先生成对应的autoLayout视图view3用Preview进行布局规Preview是Cadence的布局规划器 它可以用来规划物理设计从而在自动布局布线前预估物理实现的影响 在Cadence中 使用Preview与自动布局布线引擎相结合来进行自动布局布线4用SiliconEnsemble进行自动布局布5对完成布局布线的版图进行验生成的版图其连接性是否正确是否符合设计规则是否符合时序要求等等必须通过验证才能确定通过点击Verify&Report菜单中的相应项可对版图进行连接性设计规则验证并可生成SDFStandardDelayFormat文件通过反标SDF文件可对原来的门级网表进行仿真从而确定其功能和时序是否正确图 1用Preview和SiliconEnsemble进行自动布局布线的流用AutoAbgen进行自动布局布线库设计对于不同的自动布局布线引擎对应的库的数据格式有所不同,用来生成库的工具也不同本SRAM编译器选择SiliconEnsemble作为布局布线引擎其对应的库生成工具为AutoAbgenAutoAbgen可以用来生成与用户设计的版图或版图库所对应的即用于自动布局布线的端口模型)可以用AutoAbgenAutoAbgenFlowSequencerform来生成对于单个版图和LEF文件对于整个物理库其基本流程如下首先在局部.cdsinit中设置好AutoAbgen运行的环境 即在.cdsinit中加入以下语句load(buildstring(list(aabsInstallPath“aaicca.ile”)“/”))将AutoAbgen的初始化文件.autoAbgen拷入运 并用icfb&启点击CIW窗口中的AutoAbgen菜单下的AutoAbgenFlowSequencer项打开FlowSequencerForm选择合适的流程建立布局布线所需的工艺信息如果在工艺文件中已经包含布局布线的工艺信息可以忽略这一步建立用来生成的版图数据如果所用的版图数据已经是DFII的版图格式可以忽略这一步更新单元的属性及其管脚属性由于AutoAbgen对所操作的版图有些特殊要求所以在生成前必须对其属性进行更新以符合AutoAbgen的要求建立一个库单元将所需建立的所有单元包括到里面填写环境设置表格和运行选项表格输入输出LEF的文件名如果是对库进行操作选择Apply运行 生成所需第六章版图设计及其验证如果有人问Cadence最突出的优点在那里 问题的答案应当就在本章 可以说,Cadence的版图设计及验证工具是任何其他EDA软件所无法比拟的 Cadence的版图设计工具是VituosoLayoutEditor,即为版图编辑大师以下简称版图大师 版图大师不但界面很漂亮 而且操作方便 功能强大 以完成版图编辑的所有任务版图设计得好坏 其功能是否正确 必须通过验证才能确定 Cadence中进行版图验证的工具主要有Dracula和Diva 两者的主要区别是 Diva是在线的验证工具 被集成在DesignFrameWorkII中 可直接点击版图大师上的菜单来启动 而Dracula是一个单独的验证工具 可以独立运行 相比之下Dracula的功能比较强大版图设计大师VirtuosoLayout版图设计大师是Cadence提供给用户进行版图设计的工具 其使用起来十分方便 下面进行一个简单介绍设版图大师的设置很简单对于一般的Cadence的用户而言可能不需要进行任何设置就可启动版图大师但有时必须设置快捷键否则所有的快捷键就会失灵给使用带来一些不便在设计时快捷键往往会有很大的作用与电路设计不同的是 版图设计必须考虑具体的工艺实现 因此 存放版图的库必须是工艺库或附在别的工艺库上的库否则用隐含的库将没有版层即LSW窗口只有一个黑框 更无从画图了 因此 在设计版图前必须先建立自己的工艺库此 显示对于版图设计也很重 因此最后有自己的显示文启有很多种方法自动版图大 最简单的办法是通过CIW打开或者新建个单元的版图视图这样就会自动启动版图大师此外也可以用或layout命令启动用户界面及使用方法图 1VirtuosoLayoutEditor用户界通过上述方法启动版图大师后就会出现如图61所示的用户界面及一个LSW窗口从LSW窗口中选择所需的层然后在显示区画图具体的操作请读者参考openbook中的部分使用示例关于VirtuosoLayoutEditor的具体使用在此就不再赘述在openbook中有一个很好的例子cell_design建议所有学习Cadence的人都该走一遍该教程该的顺序为Main->ICTools->TutorialsandFlowGuides->CellDesign相 文与版图大师有关的文档有VirtuosoLayoutEditorhelpCellDesignTutorial版图验证工具Dracula使用介绍用VirtuosoLayoutEditor编辑生成的版图是否符合设计规则 电学规则其功能是否正确必须通过版图验证系统来验证 Cadence提供的版图验证系统有Dracula和Diva Diva嵌入在Cadence的主体框架之中 使用较方便 但功能较之Dracula稍有逊色Dracula为独立的版图验证系统可以进行DRC 计规则检查ERC 电学规则检查 LVS 版图和电路比较 版图寄生参数提取PRE 寄生电阻提取 其运算速度快 功能强大 能验证和提取较大的电路 本手册着重介绍Dracula的使用使用Dracula和Diva的第一步是编写与自己的工艺一致令文件包括DRCERCLVSLPE甚至PRE文件关于命令文件的编写读者可参考openbook中的手册可安以下顺序找到附录3中有一套0.5um令文件读者可参考假设要验证的版图为mySRAM库中的sram256x8单元用来进行验证的当前为myver运行Dracula令文件为 执行DRCERC和LPE的流程如下1利用VirtuosoLayoutEditor生成所需的版图sram256x8然后利用CIW窗口中的Export->Stream菜单将单元sram256x8的版图转变成GDSII格式文件sram256x8.gds并存到运行myver下2修改运行Dracula所需令文件 将其中的INDISK文件改为sram256x8.gds,OUTDISK改为任何自己喜欢的文件 将WORK-DIR改为当前的运行 myver将PRIMARY改为大写的单元名 即SRAM256X83在当 下运行 即在UNIX操作符下输 然后输入 并回 接着输入/fi即可 4在当 下运 5检查结果文件DRC检查为printfile_name.drcERC为printfile_name.ercLVS为printfile_name.lvs其中printfile_name为命令文件中PRINTFILE所指定的字符串6利用InQuery&命令启动图形界面查找并修改错7重 1 6直至改完所有的错由于Dracula的功能强大 速度较快 可以对整个SRAM版图进行验证 所以可以确保生成的SRAM版图完全符合设计规则 电学规则相关文与版图验证有关的文档主要有以下几 InQuery是用来显示验证结果的DivaInteractiveVerificationReferenceDraculaStandaloneVerificationReferenceDraculaUserGuideInQueryReferenceInQueryTutorial第七章skill语言程序设计skill语言概述Skill语言是Cadence公司自己开发的一种类似于leap语言的编程语言Cadence公司不仅开发了的Skill语言语法 还开发了一个完整的Skill语言的编译器整个Cadence软件都是基于Skill语言的 所有的Cadence的工具都是用Skill语言编写的甚至各种设置辅助文件都是遵从Skill语言的语法此外Cadence公司为其每个产品都提供Skill语言函数 这使得用户可以通过Skill语言Cadence的产品由于Skill由于提供编程接口及与C语言的接口这使得Cadence可以在原有的基础上进行各种扩展甚至允许用户开发自己的基于Cadence平台的工具因此学些基本的Skill语言的知识及基本的编程技巧对于学习Cadence是大有益处的本章将对Skill语言作一些简单的介绍skill语言的基本语法关于Skill语言的基本语法读者可参考openbook中的SkillLanguageUserGuide以及SkillLanguageFunctionsReference两本手册可按顺序Main->SkillLanguage找到Skill语言的编程环境最简单的Skill编程方法是利用CIW窗口中令解释 可以将其看为语言的行编译器例如在其中输入再回车 在CIW的显示区就会出现HI字符串 除了输入单行的Skill命令外也可先用任一文本编辑器将一系列命令组成一个skill文件例如myskill.il 然后利用load命令将文件导入Skill编译器具体方法为在CIW命令解释行中输入 如果文件不在当前 还需在文件名前加上路径如果为了可以将Skill文件存成context的形式实际 Cadence提供了一套完整的编程工具在CIW的Tools菜单下的Development可启动该编程环境如果读者有可自己去摸索在此就不在赘述了面向工具的skill语言编程Cadence公司在开发自己的产品时一般都提供其相应的Skill语言函数产品种的点击菜单等动作都可用执行其相应的skill语言函数来代替这就该编程者提供了宝贵的接口由于Skill由于是script语言因此熟练的用户可以通过适当的编程实现任务的自动化下面以面向用户界面的编程为例简单介绍一下Skill语言的编程下面这段代码是本人编写的一个用户界面其中最主要用到的是Cadence提供的关于用户界面设计的函数读者可以从中研究一下7176是其对应的图形界面Skill程序代码;SRAMCompilermain;DefinesomeglobalvariableandthedefaultvalueMaxWords=4096MaxBits=MinWords=MinBits=SRAMWords=256 =SRAMPorts=RowCellNum=ColCellNum=RowAddNum=ColAddNum=ColMul=4;ThemultiplierofthebitsPlugNum=8LibraryName=TecLibraryName="ourTechLib"Workpath="."procedure(println("Ilove)procedure(println("Ilove)procedure(println("Ilove)procedure(println("Ilove)procedure( )procedure( )procedure(println("ThankyouforyouruseofourSRAMCompiler,)procedure(WordsField=hiCreateIntField( "SRAMWords(64- "SetWordsCB(hiGetCurrentForm())?range'(64)BitsField= "SRAMBits(1- "SetBitsCB(hiGetCurrentForm())?range'(1);;;creatingtheform "SetWords&Bits "SetWordBitsFormCB(hiGetCurrentForm()) list(WordsFieldBitsField )procedure(SetWordsCB(theFormSRAMWords=theForm->WordsField-);procedure(SetBitsCB(theFormSRAMBits=theForm->BitsField-);if(SetWordsCB(theForm)hiSetCallbackStatus(theFormt)hiHighlightField(theForm'WordsField'background) view(theForm->WordsField->value SRAMWords=theForm->WordsField->valueif(SetBitsCB(theForm'BitsField'background
hiSetCallbackStatus(theFormt) hiSetCallbackStatus(theFormnil)'highlight)););;;;displayingtheform)procedure(;;;creatingtheFileNamefieldModuleNameField=hiCreateStringField( "Module"ModuleFieldCheckCB(hiGetCurrentForm()t)procedure(ModuleFieldCheckCB(theForm if(isFile(theForm->trFileNameField->value println("FileDoesNotExist--Try ));;;;creatingtheform "ModuleName list(ModuleNameField )if(ModuleFieldCheckCB(theForm)hiSetCallbackStatus(theFormt)'background view(theForm->ModuleNameField->value
hiSetCallbackStatus(theFormnil)'highlight););;;;displayingtheform)procedure(;;;creatingtheFileNamefield
"WorkingLibraryName" ?editable)procedure(LibraryFieldCheckCB(theForm if(isFile(theForm->trFileNameField->value println("FileDoesNotExist--Try ));
;;;creatingtheform "WorkingLibrary list(LibraryNameField )if(LibraryFieldCheckCB(theForm)'background
hiSetCallbackStatus(theFormt)hiHighlightField(theForm'LibraryNameField view(theForm->ModuleNameField->value)'highlight
);
hiSetCallbackStatus(theFormnil)hiHighlightField(theForm'LibraryNameField);;;;displayingtheformmySRAM= ib( )procedure(;;;creatingtheFileNameTecLibraryNameField="TechnologyLibraryt )procedure(TecLibraryFieldCheckCB(theForm if(isFile(theForm->trFileNameField->value println("FileDoesNotExist--Try ));;;;creatingthe="TechnologyLibrarylist(TecLibraryNameFieldt)if(TecLibraryFieldCheckCB(theForm)'background
hiSetCallbackStatus(theFormt)hiHighlightField(theForm'TecLibraryNameField view(theForm->ModuleNameField->value)'highlight
);
hiSetCallbackStatus(theFormnil)hiHighlightField(theForm'TecLibraryNameField);;;;displayingtheform)procedure(;;;creatingtheFileName="Working ?editable)procedure(WorkpathFieldCheckCB(theForm if(isFile(theForm->trFileNameField->value println("FileDoesNotExist--Try ));;;;creatingtheform "WorkingPath list(WorkpathField )procedure(WorkpathFormCB(theForm)if(WorkpathFieldCheckCB(theForm'background
hiSetCallbackStatus(theFormt) view(theForm->ModuleNameField->value)'highlight
);
hiSetCallbackStatus(theFormnil));;;;displayingtheformmySRAM= ib( )procedure(PortsField= "SRAM "SetPortsCB(hiGetCurrentForm())?range'(1);;;creatingtheform "SetPorts "SetPortsFormCB(hiGetCurrentForm()) )procedure(SetPortsCB(theFormSRAMPorts=theForm->PortsField-);if(SetPortsCB(theForm)hiSetCallbackStatus(theFormt)hiHighlightField(theForm'PortsField'background) view(theForm->WordsField->value SRAMWords=theForm->WordsField-););;;;displayingtheform)procedure(;;;creatingthelistofitemsinthecyclicfieldprintf("Itisusedtoextendthesetting")/*trCyclicList="1""2""3""4""5""6""7""8""9""11""12""13""14""15""16""17""18""19""20""21");;;creatingthecyclicfield "CycleThrough: );;;creatingthebooleanbutton;;;ThecallbackforthetrBooleanButtonfielddynamically;;;retrievesthenewvalueofthefieldandembedsitina;;;messagetrBooleanButton );;;creatingthebuttonboxfieldtrButtonBoxField= "Button '("Doa""Dob""Do '("println('a)""println('b)""println()");;;creatingtheradio;;;ThecallbackforthetrConeRadioFieldfielddynamically;;;retrievesthenewvalueofthefieldandimbedsitina;;;messagetrConeRadioField=hiCreateRadioField( "ConeSize: list("small") '( >trConeRadioField->value)")trScaleField= "Slide "println(\"scalechanged )trLabelField= ?labelText ) ?formTitle"OtherSetting "println('FormAction) );;;;displayingtheform)procedure(mainOLayout()case(SRAMPorts( ) )println("Ilove)(println("Portsisoutof)))procedure( )procedure(mainOSymbol()case(SRAMPorts( ) )println("Ilove)(println("Portsisoutof)))procedure( )procedure( )procedure( )procedure(println("ThankyouforyouruseofourSRAM)Open_item=hiCreat?name?itemText?callback)Report_item= ?name?itemText"Result?callback)About_item= ?name?itemText"AboutSRAM?callback)LoadState_item=hiCreat?name?itemText"Load?callback)SaveState_item=hiCreat?name?itemText"Save?callback)Reset_item= ?name?itemText?callback)Exit_item=hiCreat?name?itemText?callback)ModuleName_item= ?name?itemText"Module?callback)Words_item= ?name?itemText?callback)Library_item=hiCreat?name?itemText"Working?callback)TecLibrary_item= ?name?itemText"Technology?callback)Workpath_item=hiCreat?name?itemText"Working?callback)Ports_item= ?name?itemText?callback)other_item= ?name?itemText?callback)OLayout_item=hiCreat?name?itemText?callback)item=hiCreat?name ?callback )OSymbol_item=hiCreat?name?itemText?callback)OVerilog_item=hiCreat?name?itemText?callback)OTestVec_item=hiCreat?name?itemText"Test?callback)OVhdl_item= ?name?itemText?callback) ( list(SaveState_item ) "SetUp" TecLibrary_itemWorkpath_itemother_item)) itemOTestVec_item)) list(Report_item )/*First,maketheDisplayList.*/dl=dlMakeDisplayList()/*Nowmakeapentableforit.*/penTable=dlMakePenTable(5)/*AssignthepenTabletothedisplaylist.*/dlSetPenTable(dlpenTable)/*Defineacoupleofcolors.dlSetPenColor(1colorIndexpenTable)/*Setthispen"filled."*//*Puttheobjectsin.dlAddBox(dl130:30dlAddBox(dl235:35dlAddCircle(dl340:40 "totheSRAM .. %s getdlAddStrokeText(dl340:25welSpring "roman"2"0"dlAddStrokeText(dl340:43"SRCP" "roman"3"0";dlAddRasterText(dl450:50welSpring"roman"/*Makeawindow.PuttheDisplayListintothewindow/*andsetthewindow'sicon.w=?bBoxlist(50:50?type ?appType"SRAM 'mainMis) 'mainMis)?labelslist(" byTsinghuaUniversity""" ilerHelp?scroll ?closeProc)w"SRAM)w"SRAM)dlAttachDlistToWindow(dl/*Convertthedlisttoanicon.*/icon=dlDlistToIcon(dl5050)hiSetWindowIcon(wicon)/*Saveittoafile.*/dlSaveDlist(dl"save.dlist""newDl")/*Tryresizingthewindow.Thedlistwillfitinsideit./*Iconifythewindow.图 2SRAM编译器的File菜图 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产 专题报告-成都-严森-蓝光雍锦系产品研究
- 糖果行业的价格竞争与波动分析
- DB4107T 502-2024 专利申请快速预审服务规范
- 口腔科利用PDCA循环降低颌面外科患者胃管自拔率品管圈QCC活动书面报告
- 2023年变速箱齿轮资金筹措计划书
- 强化复合地板浸渍纸生产工艺设计
- 纤维增强复合材料防眩栅技术规范-编制说明
- 有意义的研讨会主持词(3篇)
- 消防月活动总结
- 新教材高考地理二轮复习二7类选择题技法专项训练技法3含答案
- 地理实践力ppt课件版 地理实践力 梁羽梦组
- 《中国传统文化与中医》课程教学大纲
- (8.3)-纳米材料-前景灿烂
- GA 844-2009防砸复合玻璃通用技术要求
- 古诗中的节日(上)课件
- 睡眠障碍的康复治疗
- 2020年浙江省教学能力大赛二等奖中职语文教学实施报告现场展示PPT
- 《逍遥游》-完整版课件
- 股权转让价值评估方法与案例讨论(39张)课件
- 部编小学语文《口语交际》解读课件
- 汉语言文学师范专业导论课程教学大纲
评论
0/150
提交评论