DC實驗報告流程_第1頁
DC實驗報告流程_第2頁
DC實驗報告流程_第3頁
DC實驗報告流程_第4頁
DC實驗報告流程_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗一DC(design compile)的基本使用流程Design Compiler是Synopsys綜合軟件的核心產(chǎn)品。它提供約束驅(qū)動時序最優(yōu)化,并支持眾多的設(shè)計類型,把設(shè)計者的HDL描述綜合成與工藝相關(guān)的門級設(shè)計;它能夠從速度、面積和功耗等方面來優(yōu)化組合電路和時序電路設(shè)計,并支持平直或?qū)哟位O(shè)計。Design Compiler的功能利用Design Compiler,設(shè)計者可以:l 利用用戶指定的門陣列、FPGA或標(biāo)準(zhǔn)單元庫,生成高速、面積優(yōu)化的ASIC;l 能夠在不同工藝技術(shù)之間轉(zhuǎn)換設(shè)計;l 探索設(shè)計的權(quán)衡,包括延時、面積和在不同負(fù)載、溫度、電壓情況的功耗等設(shè)計約束條件;l 優(yōu)化有限狀

2、態(tài)機的綜合,包括狀態(tài)的自動分配和狀態(tài)的優(yōu)化;l 當(dāng)?shù)谌江h(huán)境仍支持延時信息和布局布線約束時,可將輸入網(wǎng)表和輸出網(wǎng)表或電路圖整合在一起輸入至第三方環(huán)境;自動生成和分割層次化電路圖其完整的流程見圖-1。l圖 11) 建立設(shè)計環(huán)境1)在工作目錄下創(chuàng)建db(存放DC綜合生成的項目db文件)、lib_syn(存放庫文件)、log(存放綜合程序運行報告)、netlist(存放綜合網(wǎng)表)、rpt(存放綜合結(jié)果的數(shù)據(jù)報告)、script(存放腳本文件)文件夾,并將.synpsys_dc文件拷到工作目錄下。2)DC啟動時,會自動搜索工作目錄下的.synpsys_dc文件, 根據(jù)文件中的內(nèi)容來設(shè)定綜合環(huán)境。因此,

3、在啟動DC前,可以先修改.synpsys_dc中庫文件的路徑(也可以在進入DC后設(shè)置)。set search_path "$search_path ./ref/db ./scripts" 指明庫所在的路徑set target_library "sc_max.db" 目標(biāo)庫set link_library "* sc_max.db" 鏈接庫set symbol_library "sc.sdb" 特征庫在上述環(huán)境建立所需的各類庫中,一般由生產(chǎn)商提供目標(biāo)庫,庫中的各類cell用于邏輯映射,鏈接庫則包括一些已經(jīng)做好的設(shè)計和

4、子模塊,還包括了當(dāng)前設(shè)計的目標(biāo)庫,門級網(wǎng)表實例化元件和單元都來自于它。2) 讀入設(shè)計(以下命令都可在DC中的<design_vision-t>里執(zhí)行)1)RTL代碼的讀入Design Compiler使用HDL Compiler將RTL級設(shè)計和門級網(wǎng)表作為設(shè)計輸入文件讀入。通過analyze和elaborate命令讀入RTL級設(shè)計,通過read_命令讀入門級網(wǎng)表。Design Compiler支持所有主要的門級網(wǎng)表格式。如果你用read_命令讀入RTL設(shè)計,等于實現(xiàn)了組合3analyze和elaborate命令的功能。2)指明設(shè)計頂層current_design命令利用這個命令可設(shè)

5、置任何一個內(nèi)存中的設(shè)計為當(dāng)前設(shè)計:dc_shell> current_design ANY_DESIGNCurrent design is ANY_DESIGN3)鏈接庫文件要完成一個設(shè)計,它就必須與涉及到的庫元件和設(shè)計鏈接。對于每一個子設(shè)計,必然有一個基準(zhǔn),將子設(shè)計或元件與鏈接庫相連。這個過程稱為設(shè)計鏈接或基準(zhǔn)分解。Design Compiler執(zhí)行下列步驟來完成基準(zhǔn)分解:(1)決定當(dāng)前設(shè)計和它的層次引用哪些庫元件和子設(shè)計;(2)搜索鏈接庫,查找這些引用;(3)將設(shè)計與查找到的引用鏈接。Design Compiler首先搜索local_link_library參數(shù)定義的庫和設(shè)計文件,然

6、后再搜索link_library變量中定義的庫和設(shè)計文件。在一個分層的設(shè)計中,Design Compiler只考慮頂層設(shè)計的局部鏈接庫,而忽略與子設(shè)計相關(guān)的局部鏈接庫。Design Compiler使用第一找到的基準(zhǔn)。如果它查找到了具有相同名稱的額外的基準(zhǔn),將會產(chǎn)生一個警告信息來識別這個忽視的、重復(fù)的基準(zhǔn)。如果Design Compiler沒有找到基準(zhǔn),警告信息建議該基準(zhǔn)不能被分解。圖2.6顯示了在鏈接庫、單元和基準(zhǔn)之間的鏈接過程,在這個例子里,Design Compiler在LIBRARY_2工藝庫里找到了庫元件NAND2;在設(shè)計文件里找到了子設(shè)計MULTIPLIER。圖2.6 分解基準(zhǔn)你可

7、以手動地或自動地進行設(shè)計的鏈接。(1)手動鏈接用link命令來手動地鏈接設(shè)計。在開始鏈接過程前,link命令移走現(xiàn)有的鏈接。(2)自動鏈接下列的dc_shell命令自動鏈接設(shè)計: compile create_schematic group check_design report_timing, report_constraints, and other report_* commands compare_design當(dāng)執(zhí)行自動鏈接時,它并不移走現(xiàn)有的鏈接。自動鏈接過程只工作于未鏈接的元件(4)設(shè)計唯一實例化uniquify3) 定義時序約束、面積約束和綜合環(huán)境約束1) 設(shè)定時鐘約束creat

8、e_clock -period 10 get_ports clk,其中“get_ports clk”為時鐘的來源,“-period 10”為時鐘的周期。通過時鐘定義約束了寄存器到寄存器之間的延遲。見圖4。圖 2set_dont_touch_network get_clocks clk一般需要告訴綜合器不要對時鐘網(wǎng)絡(luò)進行緩沖驅(qū)動,這一工作將在后續(xù)的版圖布局布線中進行。set_clock_uncertainty setup 0.3 get_clocks clkset_clock_uncertainty hold 0.3 get_clocks clk這兩句是設(shè)定時鐘的建立時間和保持時間。set_cl

9、ock_latency -rise 3 get_clocks clkset_clock_latency -fall 3 get_clocks clk這兩句是設(shè)定時鐘的上升時間和下降時間。set_input_delay -max 0.6 -clock clk get_ports “A”set_output_delay -max 0.8 -clock clk get_ports “B”這兩句是設(shè)定特定端口“A”(或“B”)的輸入延時(或輸出延時)。如圖5。圖 32)設(shè)定面積約束 set_max_area 0,規(guī)定最大面積。3)設(shè)定輸出負(fù)載set_load 5 get_ports OUT1這句定義了

10、輸出負(fù)載為5,當(dāng)不知道輸出負(fù)載的值為多少時,可以用以下命令。 set_load load_of ssc_core_slow/AN2/A get_ports OUT1 或set_load expr load_of ssc_core_slow/AN2/A*2.2 get_ports OUT1前一句是指OUT1的輸出負(fù)載等同于A,后一句是指OUT1的輸出負(fù)載等同于A*2.2。4)設(shè)定模塊的輸入驅(qū)動強度信息set_driving_cell -lib_cell ND2 get_ports IN1,綜合工具需要知道輸入的驅(qū)動能力來計算輸入的變化時延,見圖6。圖 45)設(shè)定綜合的操作條件 set_opera

11、ting_condition best 或set_operating_condition slow6)設(shè)定布線延時set_wire_load_model “tc6a120m2”,通過設(shè)定線載模型來設(shè)定布線延時。4) 編譯和優(yōu)化選擇編譯策略你可以用來優(yōu)化層次化設(shè)計的兩種基本編譯策略被稱為自頂向下和從下上。在自頂向下的策略里,頂層設(shè)計和它的子設(shè)計一起進行編譯。所有的環(huán)境和約束設(shè)置都根據(jù)頂層設(shè)計來定義。因此,它會自動的考慮內(nèi)部模塊的依賴性。但對于大型設(shè)計,這種方法并不實用,因為所有的設(shè)計必須同時貯存在內(nèi)存里。(1) 在從下到上的策略里,分別對子設(shè)計進行約束和編譯。在成功編譯后,這些設(shè)計都被賦予一個d

12、ont_touch參數(shù),防止在隨后的編譯過程中對它們進行進一步的改變。然后這些編譯過的子設(shè)計組合成更高層次的設(shè)計,再進行編譯。編譯過程一直持續(xù)到頂層設(shè)計被綜合。由于Design Compiler不需要同時將所有未編譯的子設(shè)計裝載進內(nèi)存,這種方法允許你編譯大型設(shè)計。然而,在每一個階段,你必須估計每個內(nèi)部模塊的約束,更有代表性的是,你必須不停地編譯、改進那些估計,直到所有的子設(shè)計界面都是穩(wěn)定的。每一個策略都有其優(yōu)點和缺點,這取決于你設(shè)計的特殊性和設(shè)計目標(biāo)。你可以選擇任意一個策略來進行整個設(shè)計,或者混合使用,對每一個子設(shè)計采用最合適的策略。(2) 優(yōu)化設(shè)計利用compiler命令啟動Design C

13、ompiler的綜合和優(yōu)化進程。有幾個可選的編譯選項。特別的,map_effort選項可以設(shè)置為low、mediu或high。初步編譯,如果你想對設(shè)計面積和性能有一個快速的概念,將map_effort設(shè)置為low;默認(rèn)編譯,如果你在進行設(shè)計開發(fā),將map_effort設(shè)置為medium;當(dāng)在進行最后設(shè)計實現(xiàn)編譯時,將map_effort設(shè)置為high。通常設(shè)置map_effort為medium。1) 檢查設(shè)計層次關(guān)系并進行單元映射check_designcompile2) 修復(fù)hold時序并重新編譯 set_fix_hold get_clocks clk compile only_hold_t

14、ime五、導(dǎo)出分析報告使用report_lib命令來報告庫中的內(nèi)容。report_lib命令能夠報告下列資料:庫單位;操作條件;線形負(fù)載模型和單元1、 檢查整體設(shè)計導(dǎo)出報告2、 導(dǎo)出設(shè)計面積報告 3、 導(dǎo)出設(shè)計違例報告4、 導(dǎo)出setup時序違例的詳細(xì)報告 5、 導(dǎo)出hold 時序違例的詳細(xì)報告 六、導(dǎo)出設(shè)計 write_lib命令能夠以Synopsys數(shù)據(jù)庫、EDIF和VHDL格式來保存一個編譯過的庫。生成綜合網(wǎng)表和pnr 所需的時序約束文件七、腳本文件介紹我們可以在一個腳本文件里保存那些綜合過程中用過的設(shè)計參數(shù)和約束。腳本文件是用來管理設(shè)計參數(shù)和約束的理想工具。設(shè)計實例的腳本文件下面這個例

15、子是一個簡單的腳本,執(zhí)行了自頂向下的編譯過程。腳本中包含注釋,標(biāo)明流程中的每一個步驟。/* specify the libraries */ 指定庫target_library = my_lib.dbsymbol_library = my_lib.sdblink_library = "*" + target_library/* read the design */ 讀入設(shè)計文件read -format verilog Adder16.v/* define the design environment */ 設(shè)置設(shè)計環(huán)境set_operating_conditions WCC

16、OMset_wire_load_model "10x10"set_load 2.2 soutset_load 1.5 coutset_driving_cell -cell FD1 all_inputs()set_drive 0 clk/* set the optimization constraints */ 設(shè)計最優(yōu)化約束create_clock clk -period 10set_input_delay -max 1.35 -clock clk ain, binset_input_delay -max 3.5 -clock clk cinset_output_delay

17、 -max 2.4 -clock clk coutset_max_area 0/* map and optimize the design */ 映射和優(yōu)化uniquifycompile/* analyze and debug the design */ 分析和除錯report_constraint -all_violatorsreport_area/* save the design database */ 保存設(shè)計數(shù)據(jù)write -format db -hierarchy -output Adder16.db你可以按下列方式之一執(zhí)行這個腳本:(1)進入dc_shell,然后一行行地輸入命令

18、;(2)進入dc_shell,利用include命令執(zhí)行腳本文件:dc_shell> include run.scr(3)利用dc_shell的選項-f,在UNIX命令行執(zhí)行腳本文件: % dc_shell -f run.scr實驗二 掃描鏈基于掃描路徑法的可測性設(shè)計技術(shù)是可測性設(shè)計(DFT)技術(shù)的一個重要的方法,這種方法能夠從芯片外部設(shè)定電路中各個觸發(fā)器的狀態(tài),并通過簡單的掃描鏈的設(shè)計,掃描觀測觸發(fā)器是否工作在正常狀態(tài),以此來檢測電路的正確性。1 、掃描鏈原理數(shù)字電路由大量的組合元件和時序元件組成,時序元件具體體現(xiàn)為單個的觸發(fā)器。系統(tǒng)時鐘(來控制各個觸發(fā)器的數(shù)據(jù)端口相應(yīng)數(shù)據(jù)的輸入輸出?;趻呙杪窂椒ǖ目蓽y性設(shè)計就是將電路中的時序元件觸發(fā)器替換為相應(yīng)的可掃描的時序元件掃描觸發(fā)器;然后將上一級掃描觸發(fā)器的輸出端連接到下一級的數(shù)據(jù)輸入端,從而形成一個從輸入到輸出的測試串行移位寄存器,即掃描鏈。2、實驗步驟1, 修改setup文件,指定路徑到實驗要求的工藝庫2, Source 1read_design.tcl 讀入設(shè)計3, 依次讀入read_gate_and_protocol.tcl constraints.t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論