模擬電路提取Verilog模型的方法_第1頁
模擬電路提取Verilog模型的方法_第2頁
模擬電路提取Verilog模型的方法_第3頁
模擬電路提取Verilog模型的方法_第4頁
模擬電路提取Verilog模型的方法_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論