您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 20120523-数模混合电路设计流程
中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-1/21-数模混合电路设计流程马昭鑫2012/5/23本文主要面向模拟电路设计者,讲解了从行为级代码形式的数字电路到数模混合版图之间的流程,默认模拟版图和数字电路的行为级代码、testbench已经完成。阅读者需确定自己会编写Verilog或Spice格式的网表,熟悉Linux的文件操作,了解Spectre、Virtuoso、Calibre、Modelsim、DesignCompiler(dc)、Astro等EDA工具的使用方法。由于本人才疏学浅,经验不足,难免会在文中出现一些错误,恳请高手给予指正。数模混合电路的仿真方法一般的设计流程中数字电路和模拟电路是分开进行设计的,但有些时候希望能将数字电路和模拟电路放在一起仿真来验证设计,这就需要用到混合电路的仿真方法。在Cadence工具中有专门用作混合电路仿真的仿真器spectreVerilog,其实现方法是首先将模拟模块与数字模块区分开并设置接口电平,然后在ADE中设置数字电路的测试代码,调用不同的仿真器分别对数字模块和模拟模块进行仿真,最后将结果汇总显示或输出。下面将以一个简单实例的形式讲解混合电路的仿真方法。一、建立数字模块①在命令行中输入下面的命令设置NC-Verilog和Cadence并启动Cadence;setdtldvsetdticicfb&②建立Library的方法不再累述,创建Cellview时注意Tool选择Verilog-Editor,ViewName填写functional;中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-2/21-③点击OK后会弹出有模块代码框架的vi窗口,将设计需要的代码输入或粘贴进去;④保存并关闭后如果没有错误会弹出创建SymbolView的询问对话框,确定后会进入Symbol编辑器,并自动生成了Symbol(注意在Cadence中总线用尖括号表示);⑤保存并关闭Symbol编辑器。至此已经完成了数字模块的创建。二、建立模拟模块模拟电路的创建方法无需赘述,这里搭建了一个输出频率为10MHz的环形振荡器。中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-3/21-三、配置混合电路①直接在模拟电路中搭建混合电路,将数字模块添加进来,连接数模之间的接口,预留给testbench的接口用port连接,Check&Save后关闭Schematic编辑器;②新建与混合电路模块同名的Cellview,Tool选择Hierarchy-Editor,ViewName会自动修改成config;③点击OK后弹出Hierarchy编辑器的界面,点击Browse,选择混合电路的schematiccellview,然后点击OK;中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-4/21-④点击下方的UseTemplate按钮,在弹出的对话框中将Name选择为spectreVerilog,点击OK回到原对话框,再点击OK进入主界面;⑤在主界面可以看到不同的Cell自动选择了不同的View,保存退出。这时可以在LibraryManager中看到config的view,它包含了混合电路的配置信息。中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-5/21-四、混合电路仿真①双击configview或右击open,弹出打开方式的对话框,config选择no,schematic选择yes,点击OK;②在打开的Schematic编辑器中点击Tools→MixedSignalOpts.,会发现编辑器的菜单栏变成了如下的样子:③点击Mixed-Signal→DisplayPartition→AllActive,如果弹出对话框则点击OK,可以看到数字模块和模拟模块用不同的颜色标注了出来;(这步不是必需的)④点击Mixed-Signal→InterfaceElements→Cell,点击数字模块,弹出设置接口电平的对话框,需要设置a2d_v0和a2d_v1,这两个参数规定了模拟转成数字时的电平,对于1.8V电源电压可以分别设置为0.6和1.2;⑤如果有数字输出给模拟的接口,需要将该对话框中的ModelIO改成Output,设置d2a_vh和d2a_vl两项,即数字高低电平对应的模拟电压;中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-6/21-⑥进入ADE,点击Setup→Simulator/Directory/Host,在弹出的对话框中将Simulator选择为spectreVerilog,点击OK确定退出;⑦点击Setup→Stimuli→Digital,弹出设置testbench的vi窗口,将设计需要的testbench输入或粘贴进去,保存并退出;⑧设置瞬态分析并选择需要plot的信号;⑨点击NetlistandRun后等待仿真结束就会弹出信号的显示窗口,双击总线名可以以不同的进制显示数据;中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-7/21-数模混合电路的仿真至此结束。参考文献[1]实验系列12_数模混合电路设计_spetreVerilog,中山大学[2]用SpectreVerilog进行模数混仿中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-8/21-数字电路设计流程用Verilog写出实现了功能的数字电路仅仅是一个开始,到真正可以流片的版图还有很多流程要走,综合可以把行为级电路转换成标准单元组成的电路,布局布线可以把这些标准单元按照一定的方式放置,并用金属线一一连接。但并不是每一步产生的结果都符合我们的要求,一再的仿真验证是必不可少的。一、行为级仿真工具:Modelsim输入文件:行为级模块(*.v)、testbench输出文件:无目的:检验设计是否能实现所需功能①Modelsim的启动方法是在命令行中输入下面的命令:setdtamsvsim&②创建Project,并将行为级模块(*.v)和testbench添加到Project中③编译(Compile)选中要编译的文件,右键点击后选择Compile→CompileSelected,如果代码没有问题可以看到下方代码框中显示successful,Workspace中文件的Status会变成绿色的对号;否则会提示error,Status变成红色的错号,这时双击错误提示信息可以在弹出的窗口中看到详细的编译失败的提示。④配置仿真(SimulationConfiguration)仿真的方法有两种:一种是在Library中找到testbench的顶层模块名,右击选择Simulate;另一种是在Workspace文件列表的空白处右击,选择AddtoProject→SimulationConfiguration,在弹出的框中选择testbench的顶层模块名,然后在Libraries中添加编译产生的Library,最后Save。后者会产生一个配置文件,使用起来较为方便,建议将SimulationConfigurationName改成有意义的文字,比如SimulationBehav,以便于与其他的仿真配置文件区分。双击这个文件就可以进入仿真界面。中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-9/21-⑤添加信号并仿真在Workspace中Instance列表中选择要查看的元件,右击选择Add→AddtoWave可以看到元件内部的信号线都加到了wave窗口中,设置合适的时间点击工具栏上按钮就可以进行仿真。⑥观察仿真结果在wave窗口中可以放大、缩小、选择合适的进制显示波形,根据仿真结果观察是否能完成所需功能。二、综合工具:DesignCompiler(dc)输入文件:行为级模块(*.v)、工艺文件(slow.db,SP018W_V1p7_max.db,dw01.sldb,dw03.sldb、综合宏脚本(*.tcl)输出文件:网表文件(*.sv)、标准延时文件(*.sdf)、标准延时约束文件(*.sdc)目的:给模块中的线路添加约束,将行为级模块转换成网表级模块,并产生延时文件等综合的脚本文件(*.tcl)是本过程的核心,该文件是一系列dc命令的集合,主要包括:设置工艺库(*.db等),读入行为级模块文件(*.v),分析检查等,设置输入驱动,设置输出负载,创建时钟并设置时钟的物理属性如周期、延迟、不稳定程度等,设置时钟域,设置输入输出延时,设置扇出数,综合,生成一系列文件(*.sv、*.sdf、*.sdc等)等。综合后需要生成timingreport检查是否有违例(violation),如果有违例出现需要修改综合脚本后重复该过程直到所有的路径都通过。如果数字模块规模比较大,脚本编写的好坏与否会严重影响电路的性能甚至功能,建议在数字后端高手的指导下编写。dc的启动方法是在命令行中输入下面的命令(其中run.tcl为综合脚本的文件名)中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-10/21-setdtsyndc_shell-t–frun.tcl*关于违例我的理解如下:从数据准备好到取数据的时钟沿到来之间的时间差叫做slack,显然slack应该为正以确保取到的数据是有效的,如果路径延时过大造成slack为负时违例就产生了。这时可以查看产生违例的路径,通过优化设计、修改约束的方法消除违例。值得注意的是dc对同步电路的综合能力很强,但对于异步电路违例的检查可能会出现问题(也可能是综合脚本的原因),对于异步电路中出现的某些违例可以经过慎重的检查忽略掉。**dc可能会对电路做一些很奇怪的优化,比较简单有效的解决办法是将原模块尽可能的分层次写成若干个小模块,将不同功能的电路在module的层次上分隔开。三、网表级仿真工具:Modelsim输入文件:网表文件(*.sv)、标准延时文件(*.sdf)、标准单元模型文件(smic18.v或smic18_neg.v)、testbench输出文件:无目的:检验设计在相关约束下是否能实现所需功能网表级仿真与行为级仿真的区别在于用行为级语句描述的电路变成了由标准单元组成的电路,并且增加了延时这种具有物理属性的参数。具体操作与行为级仿真相似,但注意由于网表文件(*.sv)的顶层模块名与行为级模块文件(*.v)中的顶层模块名是一样的,所以编译前先将行为级模块文件移除Project;另外由于网表文件中引用了标准单元,所以要把标准单元模型文件(smic18.v或smic18_neg.v)也添加到Project中并编译。标准延时文件(*.sdf)文件的添加是在SimulationConfiguration中进行的,选择AddSimulationConfiguration对话框中的SDF选项页,点击Add,在弹出的对话框中选择SDF文件路径,需要注意ApplytoRegion必须要填写testbench中模块的例化名,比如testbench中例化的语句如下MyModuleuut(.clk(clk),.in(in),.out(out));则该处要填写uut。仿真过程中可能会报一些Error或Warning,一般是由于时钟沿与数据变化沿正好对齐导致某些数据不能确定导致的,在异步电路中更为常见,可以根据实际情况分析忽略某些Error。中国科学技术大学·微纳电子系统集成研究中心数模混合电路设计流程-11/21-四、布局布线工具:Astro输入文件:带有pad描述的顶层文件(*.v)、pad布局文件(*.tdf)、网表文件(*.sv)、经过修改的标准延时约束文件(*.sdc)、标准单元库与Pad库文件(在apollo/stdcell与apollo/iocell目录下)、布
本文标题:20120523-数模混合电路设计流程
链接地址:https://www.777doc.com/doc-5029268 .html