模拟电路提取Verilog模型的方法_第1页
模拟电路提取Verilog模型的方法_第2页
模拟电路提取Verilog模型的方法_第3页
模拟电路提取Verilog模型的方法_第4页
模拟电路提取Verilog模型的方法_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模块电路提取Verilog模型的方法总结陈锋2018-1-18在原理图目录,运行icfb。y icfb - Log: /home/chenf/c s. 1 og_ 口 :选 Tools - Library Manager.在Library找到要提取的库(一般是项目名称),这里选NV3030A1P_GRAM。在Cell里 选要提取的顶层模块,这里选GRAM。View里选schematic,并右击选openI v LibrHiry Mlanagar: Direetory曾I/NVioiaALP/anaijgFBfn.&ch_ XFite 旦利 View OBSlgiil IMWia.pr-I Si

2、ow Cslflgo* J 3hw HI时SAIIMWpv3O30ilP_BJl&MschefuticHU02flDlV_lih队皿七WUSOaTElPLwTu湖伽心皿七4MV30QclV_dirwK HU加卯以政吕巧ital NVOaQClEmij BPrtOaaclvgjg HU加第BIT益& TSKCOISOU3 8thiTisulri 32alwllLlbULalogLiJ bajicClLaDBi!lBCbLlbpfll lul2v_d m t erEExuipliiar EL illABijsr_CJS_8thsEaookE皿1BaisB_NV3O37BlP_=jEC3izE_HV

3、3037tlF_EjzPEmrirDflc-odciltiuso a tb 1p_ nraw_cnx_EKiE:jTrw 削3O37BlpGFwCcELCKft 5np_AM_US_6th3.litlt_O5_Sdj5acblwracbitw_vlbarkdumfy_lbsricaelDbwikgllbankselllb-UAtiDLdclritci- Tk nwi:-yMbnl在打开的原理图 Virtioso Schematic 菜单里,选 Tools - Simulation - NC-Verilog5.在设置窗口里,Run Directory手工填入提取Verilog网表的目录名,比如x

4、xx/GRAM_run66. Top Level Design里,点Browser.,选择要提取的顶层,我们这里选择与第3步相同的 Library、Cell和View。如下图,选好后点Close。7.点左边“跑步的人来Initial Design。会看到“三个勾(Generate Netlist)的图标显示出来 了。y Virtuoso Vrilog Environment for NC-1 _ X8.选 y Virtuoso Vrilog Environment for NC-1 _ X8.选 Setup - Netlist.设置提取参数。我们需要修改“Netlist These Views

5、”和“Stop Netlisting at Views”,如下图 设置。另外时间和精度也可以在此设置,默认是1ns/1ns,是全局的设置。我建议不要修改, 在生成Verilog Netlist后,手工修改一些特殊模块来提高精度即可。设置好后,点Apply,OK。点击“三个勾生成Verilog Netlist。稍等片刻后,第三个图标“模块图显示出来,说明网 表也生成好。y Virtuoso Verilog Environment for NC-1 X我们进入GRAM_run6目录,并进入子目录ihnl。会看到很cdsxx开头的文件夹,再看 cdsxx目录里面有个netlist文件。用文本编辑器打

6、开netlist,你就看到了提取出来的 Verilog 网表了。chenfgdragon GRAN_run6$ Iscontrol map si.foregnd.logtestfixture.veriloghcflFilesDir raw testfixture, template testfixture. veritime ihnlsi.env testfixture.verifault verilog.inpfileschenfdragon ihnlt Isblockdirmapcdsl4cds27cds33cds4cds46cds525s59cds6cdsl5cdsZlcds2Scds3

7、4cds46cds47cds53Cds6cdslcds!6cds22tds29Cds35cds41cds48cds54cds7cdslOcdsl?cds23cds3cds36cds42cds49cds55cds8cdsllcdsl8cds24cds3Scds37cds43cds5cds56cds9cdsllcdsl9cds25cdsSlcds38cds44cds5Dcds57controlcdsl3cds2cds26cds32cds39ctk45cds51cdsSBglobalmapchenfgdragon ihnl$ Is cdsO cdsl cdsO:control map netlist

8、cdsl: control map netlist/ Library - NV3030A1 P_GR.AM, Cell - mv_Lv, View - schematic/ LAST TIME SAVED: Dec 2Z 10:58:2017/ NETLIST TIME: Jan 16 09:16:19 2010t imsscale Ins / InsmvOUT;Lv ( OUT, IN, VGG, VPP )mvOUT;input IM, VGG VPP;specparam specparam specparam pecifys s s DDE c c c_CELLNAMEVIEWNAMEN

9、V30301P_GRH;specparam specparam specparam pecifys s s DDE c c c_CELLNAMEVIEWNAMENV30301P_GRH;irLY_lv;11 s ch emat i c:MJ ( .D(OUT),M2 ( .D(OUT),find -name netlist | Kargs cat nv30 3 0_sram.v我们在GRAM_run6目录里,用如下的命令来合并各个模块的find -name netlist | Kargs cat nv30 3 0_sram.vfind会查找到所以的名叫“netlist”的文件,用cat显示出这

10、些文件的内容,再重定向到 nv3030_sram.v。用以下命令检查网表有无语法错误。erdi -2001 -nologo nv3030_sram.一般来说,我们网表提取到此结束。但有时,我们还需要修改自动提取的网表。比如:a)删除共用的逻辑单元模块,因为这些模块很可能已经手动写好verilog形为级模型。b)修改部分模块的精度,因为某些延时模块希望精确到100ps。下面是一用python写的示例脚本。 使用方法下面是一用python写的示例脚本。 使用方法simplisram netlist.py -i -o |#!/home/verify8/chenf/eda/Python-3.6.2/p

11、ythonimport sysimport osimport reimport getopt#解析命令参数try:opts, args = getopt.getopt(sys.argv1:, hi:o:, ifile=, ofile=) except getopt.GetoptError:print(simplify_sram_netlist.py -i -o ) sys.exit(2)for opt, arg in opts:if opt = -h:print(simplify_sram_netlist.py -i -o )sys.exit()elif opt in (-i, -ifile)

12、:ifileName = argelif opt in (-o, -ofile):ofileName = arg#读入待修改的Verilog网表infile = open(ifileName, r)sfile = infile.read()infile.close()#此处指定要删除的模块名libMod = nand2_lv,delay3n,nand3_lv,ldecv4,nor3_lv,inv_lv,delay5n,delay500p,nand4_lv,tg_lv,dff_rl,bushold,dff_fl,mux2,delay1n,nor2_lv,rwckt,sramcell,inoutb

13、ufsMod = ( #分离成单个moduleallmodule = re.findall(r(module.*?endmodule), sfile, re.S) if not allmodule:print(Can not find any module!) else:for m in allmodule:searchModName = re.search(rmodules(w_+)s, m, re.S)mName = searchModName.group(1)if mName in libMod: #如果是指定要删掉的模块,则丢掉continueelse:if mName = rwckt

14、s0”: #处理时间单位和精度strTimescale = timescale 1ns/100psnelif mName = inoutbuf:strTimescale = timescale 1ns/10psnelse:strTimescale = timescale 1ns/1nsn#处理结束后,存入到sMode列表sModmName = strTimescale + m + nn#对处理完的模块,按模块名排序sModKeys = list(sMod.keys()sModKeys.sort()#把结果写到新文件outfile = open(ofileName, w)for k in sModKeys:outfile.write(sModk)outfile.flush()outfile.close()注意:如果模拟电路里有functional View,则需要检查提取的对应模块是网表和自己写的 verilog 模型。需要检查Verilog网表里的晶体管级的模型,如nmos、pmos、c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论