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

下载本文档

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

文档简介

1、模块电路提取Verilog模型的方法总结陈锋2018-1-181. 在原理图目录,运行icfb。2. 选Tools -> Library Manager 3. 在Library找到要提取的库(一般是项目名称),这里选NV3030A1P_GRAM。在Cell里选要提取的顶层模块,这里选GRAM。View里选schematic,并右击选open4. 在打开的原理图Virtioso Schematic菜单里,选Tools -> Simulation -> NC-Verilog5. 在设置窗口里,Run Directory手工填入提取Verilog网表的目录名,比如xxx/GRAM_

2、run66. Top Level Design里,点Browser,选择要提取的顶层,我们这里选择与第3步相同的Library、Cell和View。如下图,选好后点Close。7. 点左边“跑步的人”来Initial Design。会看到“三个勾”(Generate Netlist)的图标显示出来了。8. 选Setup -> Netlist 9. 设置提取参数。我们需要修改“Netlist These Views”和“Stop Netlisting at Views”,如下图设置。另外时间和精度也可以在此设置,默认是1ns/1ns,是全局的设置。我建议不要修改,在生成Verilog Ne

3、tlist后,手工修改一些特殊模块来提高精度即可。设置好后,点Apply,OK。10. 点击“三个勾”生成Verilog Netlist。稍等片刻后,第三个图标“模块图”显示出来,说明网表也生成好。11. 我们进入GRAM_run6目录,并进入子目录ihnl。会看到很cdsxx开头的文件夹,再看cdsxx目录里面有个netlist文件。用文本编辑器打开netlist,你就看到了提取出来的Verilog网表了。12. 我们在GRAM_run6目录里,用如下的命令来合并各个模块的Verilog网表。find会查找到所以的名叫“netlist”的文件,用cat显示出这些文件的内容,再重定向到nv30

4、30_sram.v。13. 用以下命令检查网表有无语法错误。verdi -2001 nologo nv3030_sram.v一般来说,我们网表提取到此结束。14. 但有时,我们还需要修改自动提取的网表。比如:a) 删除共用的逻辑单元模块,因为这些模块很可能已经手动写好verilog形为级模型。b) 修改部分模块的精度,因为某些延时模块希望精确到100ps。下面是一个用python写的示例脚本。使用方法simplify_sram_netlist.py -i <inputfile> -o <outputfile>#!/home/verify8/chenf/eda/Pytho

5、n-3.6.2/pythonimport sysimport osimport reimport getopt#解析命令参数try: opts, args = getopt.getopt(sys.argv1:, "hi:o:", "ifile=", "ofile=")except getopt.GetoptError: print('simplify_sram_netlist.py -i <inputfile> -o <outputfile>') sys.exit(2)for opt, arg

6、in opts: if opt = '-h': print('simplify_sram_netlist.py -i <inputfile> -o <outputfile>') sys.exit() elif opt in ("-i", "-ifile"): ifileName = arg elif opt in ("-o", "-ofile"): ofileName = arg#读入待修改的Verilog网表infile = open(ifileName,

7、'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", &

8、quot;bushold", "dff_fl", "mux2", "delay1n", "nor2_lv", "rwckt", "sramcell", "inoutbuf"sMod = #分离成单个moduleallmodule = re.findall(r'(module.*?endmodule)', sfile, re.S)if not allmodule: print("Can not find any modul

9、e!")else: for m in allmodule: searchModName = re.search(r'modules(w_+)s', m, re.S) mName = searchModName.group(1) if mName in libMod: #如果是指定要删掉的模块,则丢掉 continue else: if mName = "rwckts0": #处理时间单位和精度 strTimescale = "timescale 1ns/100psn" elif mName = "inoutbuf&qu

10、ot;: strTimescale = "timescale 1ns/10psn" else: 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() 15. 注意:a) 如果模拟电路里有functional View,则需要检查提取的对应模块是网表和自己写的verilog模型。b) 需要检查Verilog网表里的晶体管级的模型,如nmos、pmos、cmos、tran等。并确认是否是必须的,如果不是请替换成形为级模型。因为晶体管级模型仿真会慢很多。c) 确认是否包含没有逻辑功能的驱

温馨提示

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

评论

0/150

提交评论