版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
7.1數(shù)字集成電路設計流程簡介
7.2測試和仿真工具
7.3綜合工具
7.4布局布線工具及后仿真7.1數(shù)字集成電路設計流程簡介在EDA技術高度發(fā)達的今天,沒有一個設計工程師隊伍能夠用人工方法有效、全面、正確地設計和管理含有幾百萬個門的現(xiàn)代集成電路。利用EDA工具,工程師可以從概念、算法、協(xié)議等方面開始設計電子系統(tǒng),通過計算機完成大量的工作,并可以將電子產(chǎn)品從系統(tǒng)規(guī)劃、電路設計、性能分析到版圖、封裝的整個過程在計算機上自動完成。使用EDA工具有利于縮短設計周期,提高設計正確性,降低設計成本、保證產(chǎn)品性能,尤其是增加了一次投片成功率,因此,EDA工具在大規(guī)模集成電路設計中已經(jīng)被普遍采用。利用EDA工具進行集成電路設計需要遵循一定的設計流程,這樣才能保證設計任務高效率地完成。數(shù)字集成電路設計的典型流程如圖7.1-1所示。下面分別介紹各設計階段的主要任務。1.設計規(guī)范設計流程從已寫出的設計規(guī)范開始。設計規(guī)范是一個包含功能、定時、硅片面積、功耗、可測性、故障覆蓋率以及其他的設計準則的詳細說明書。設計規(guī)范描述了項目要實現(xiàn)的功能,并確定設計的總體方案,以平衡各方面的因素,從而對整個項目有一個初步的規(guī)劃;在系統(tǒng)設計階段,根據(jù)對設計面積、功耗、I/O和IP使用等情況的估算,確定所使用的芯片工藝和設計工具。有了設計規(guī)范,就可以進行設計劃分了。2.設計劃分設計劃分就是把一個復雜設計劃分成較小而且較為簡單的功能單元。這樣一個過程通常被稱為自頂向下的設計方法,或者是分層設計法。HDL可以為需要進行劃分、綜合和驗證的大型復雜系統(tǒng)提供一個通用框架,它支持具有混合抽象級別的自頂向下設計,可以將大型設計中的各部分連接在一起,來進行整個設計的功能和性能驗證。3.設計輸入設計輸入是指將設計劃分階段定義好的模塊借助一定的設計輸入手段轉換為EDA工具能接受的信息格式。目前主要的設計輸入手段有高級硬件描述語言HDL(VerilogHDL/VHDL)和原理圖方式。HDL支持不同層次的描述,不依賴于各廠家的工藝器件,便于修改。邏輯輸入工具的功能是把邏輯圖、狀態(tài)機、真值表輸入到計算機中,并進行語法、綜合性檢查等。目前的主流工具有Cadence公司的Composer、Synopsys公司的Leda以及UltraEdit、Vim等第三方的編輯工具。Leda是可編程的語法和設計規(guī)范檢查工具,它能夠對全芯片的VHDL和VerilogHDL描述或者兩者混合描述進行檢查,加速SoC的設計流程。Leda預先將IEEE可綜合規(guī)范、可仿真規(guī)范、可測性規(guī)范和設計復用規(guī)范進行了集成,以提高設計者分析代碼的能力。UltraEdit是一款功能強大的文本編輯器,可以編輯文字、Hex、ASCII碼,內(nèi)建英文單詞檢查、C++及VB指令突顯,可同時編輯多個文件,而且即使開啟很大的文件,速度也不會變慢。它是一個使用廣泛的編輯器,但它并不直接支持HDL。讀者可以通過官方網(wǎng)站的鏈接下載VerilogHDL/VHDL的語法高亮文件,并把下載的文件復制到WordFile.txt文件中(在UltraEdit的安裝目錄下),一般加在最后。這樣就可以使用UltraEdit編輯HDL源代碼了。4.仿真設計輸入完成并經(jīng)HDL編譯器檢查沒有語法錯誤后,就可以對設計進行驗證了。這里的驗證是指通過仿真軟件驗證其功能是否符合制定的設計規(guī)范;這一階段的驗證常被稱為功能仿真或行為仿真。布局布線后,提取有關的器件延時、連線延時等時序參數(shù)(這些信息在反標注文件中)。在此基礎上進行的仿真稱為后仿真,也稱時序仿真,它是接近真實器件運行的仿真。仿真的結果取決于設計描述是否準確反映了設計的物理實現(xiàn)。仿真器不是一個靜態(tài)工具,需要Stimulus(激勵)和Response(輸出)。Stimulus由模擬設計工作環(huán)境的Testbench產(chǎn)生,Response為仿真的輸出,由設計者確定輸出的有效性。目前,仿真工具比較多,幾乎每個公司的EDA產(chǎn)品都有仿真工具。Cadence公司的NC-Verilog用于Verilog仿真,Mentor公司推出的是Verilog和VHDL雙仿真器ModelSim,Synopsys公司的則是VSS/VCS仿真器,這些都是業(yè)界廣泛使用的仿真工具。5.綜合利用綜合器對HDL代碼進行綜合優(yōu)化處理,生成門級描述的網(wǎng)表文件,是將高層次描述轉化為硬件電路的關鍵步驟。綜合優(yōu)化是針對ASIC芯片供應商的某一產(chǎn)品系列進行的,所以綜合的過程要在相應的廠家綜合庫支持下才能完成。綜合實際上是根據(jù)設計功能和實現(xiàn)該設計的約束條件(如面積、速度、功耗和成本等),將設計描述(如HDL文件、原理圖等)變換成滿足要求的電路設計方案;該方案必須同時滿足預期的功能和約束條件。對于綜合來說,滿足要求的方案可能有多個,綜合器將產(chǎn)生一個最優(yōu)的或接近最優(yōu)的結果。因此,綜合的過程也就是設計目標的優(yōu)化過程,最后獲得的結構與綜合器的性能有關。這個階段產(chǎn)生目標FPGA的標準單元網(wǎng)表和數(shù)據(jù)庫,供布局布線使用。網(wǎng)表中包含了目標器件中的邏輯元件和互連的信息。在傳統(tǒng)的IC設計流程中,前端綜合或時序分析時沒有精確的線和CELL延時信息,這樣就容易造成布局前后的時序不收斂。隨著工藝的進步,線延時占主導地位,時序收斂問題越來越嚴重。其根本的解決方法是將前后端的設計流程整合起來。物理綜合就針對的是這種情況。在0.18?μm以下工藝技術的IC設計環(huán)境下,物理綜合將綜合、布局、布線集成于一體,讓RTL設計者可以在最短的時間內(nèi)得到性能最優(yōu)的電路。通過集成綜合算法、布局算法和布線算法,在RTL到GDSⅡ的設計流程中,提供可以確保IC設計的性能預估性和時序收斂性。目前常用的邏輯綜合工具有Synopsys公司的Synplify和DesignCompiler、PhysicalCompiler,以及Cadence公司的RTLCompiler等。6.適配布線適配布線就是按照特定的工藝要求和約束條件利用適配器進行布局布線,最后生成版圖。對于芯片設計而言,這個過程通常分為三步。①
布局規(guī)劃,主要是標準單元、I/OPad和宏單元的布局。I/OPad預先給出了位置,而宏單元則根據(jù)時序要求進行擺放,標準單元則是給出了一定的區(qū)域,由工具自動擺放。布局規(guī)劃后,芯片的大小,Core的面積,Row的形式、電源及地線的Ring和Strip就都確定下來了。②
時鐘樹生成(ClockTreeSynthesis)。③
布局布線。適配布線完成后,會產(chǎn)生多項設計結果。①
適配報告,包括芯片內(nèi)部資源利用情況、設計的布爾方程描述情況等。②
適配后的仿真模型。③
器件編程文件,根據(jù)適配后的仿真模型,可以進行適配后的時序仿真。因為此時已經(jīng)得到了器件的實際硬件特性(如時延特性等),所以此仿真結果能比較精確地預期未來芯片的實際性能。在FPGA設計中,各廠家都提供了相應的布局布線工具,例如Altera公司的QuartusⅡ、Xilinx公司的ISE等。在芯片設計領域,有Cadence公司提供的SoCEncounter和Synopsys公司的Astro等布局布線工具。7.時序分析時序分析的目的是檢查設計中是否有時序上的違規(guī)。同步電路的分析采用靜態(tài)時序分析(STA)實現(xiàn),異步電路的分析則需要運行特殊仿真激勵確認。仿真工具可以用前仿真所用的工具。靜態(tài)時序分析的功能是根據(jù)設計規(guī)范的要求檢查所有可能路徑的時序,不需要通過仿真或測試向量就可以有效地覆蓋門級網(wǎng)表中的每一條路徑,在同步電路設計中快速地找出時序上的異常。可以識別的時序故障包括:建立/保持和恢復/移除檢查(包括反向建立/保持),最小和最大跳變,時鐘脈沖寬度和時鐘畸變,門級時鐘的瞬時脈沖檢測,總線競爭與總線懸浮錯誤,不受約束的邏輯通道,計算經(jīng)過導通晶體管、傳輸門和雙向鎖存的延時,自動對關鍵路徑、約束性沖突、異步時鐘域和某些瓶頸邏輯進行識別與分類。PrimeTime是Synopsys公司開發(fā)的進行靜態(tài)時序分析的工具,它可以進行精確的RC延時計算、先進的建模和時序驗收。對于大型多時鐘的設計,比如綜合出的邏輯電路、嵌入式存儲器和微處理器核的設計,PrimeTime起到了關鍵性的作用。動態(tài)時序分析主要是指門級(或對版圖參數(shù)提取結果)的仿真,它主要應用在異步邏輯、多周期路徑、錯誤路徑的驗證中。隨著設計向10nm以下的工藝發(fā)展,只用靜態(tài)分析工具將無法精確驗證串擾等動態(tài)效應。動態(tài)時序分析與靜態(tài)時序分析的結合,可以驗證時序邏輯的建立/保持時間,并利用動態(tài)技術來解決串擾效應、動態(tài)模擬時鐘網(wǎng)絡等問題。8.物理驗證物理驗證通常包括設計規(guī)則檢測(DRC)、版圖與原理圖對照(LVS)和信號完整性分析(SI)等。其中DRC用來檢查版圖設計是否滿足工藝線能夠加工的最小線寬、最小圖形間距、金屬寬度、柵和有源區(qū)交疊的最小長度等要求。如果版圖設計違反設計規(guī)則,那么極有可能導致芯片在加工的過程中成為廢品。LVS則用來保證版圖設計與其電路設計的匹配,保證它們的一致性。如果不一致,就需要修改版圖設計。SI用來分析和調(diào)整芯片設計的一致性,避免串擾噪聲、串擾延時以及電遷移等問題的產(chǎn)生。目前主要的物理驗證工具有Mentor公司的Calibre、Cadence公司的Dracula和Diva以及Synopsys公司的Hercules。此外,各大廠商也推出了針對信號完整性分析的工具。9.設計結束在所有設計約束都已滿足,也達到了定時約束條件的情況下,軟件就會發(fā)出最終設計結束的信號。這時可用于制造集成電路的掩膜集就準備好了。掩膜集的描述是由幾何數(shù)據(jù)(通常為GDSⅡ格式)構成的,這些數(shù)據(jù)決定了集成電路制造過程中的光掩膜步驟的順序。將適配器布局布線后形成的器件編程文件通過下載工具載入到具體的FPGA或CPLD芯片中,可以方便地實現(xiàn)設計要求。如果是大批量產(chǎn)品的開發(fā),則通過更換相應的廠家綜合庫,便可以轉由ASIC實現(xiàn)。7.2測試和仿真工具用HDL描述完一個硬件系統(tǒng)后要進行仿真驗證,而如果想在計算機終端看到硬件描述語言的輸出,則需要通過硬件描述語言的仿真器來完成。常用的HDL仿真器有很多種,例如VCS、NCSim、VerilogHDL-XL、ModelSim、ActiveHDL等。根據(jù)所使用的編程語言的不同,可以將仿真器分為VerilogHDL仿真器和VHDL仿真器;根據(jù)工作方式的不同,可以分為事件驅動(event-driven)仿真器和時鐘驅動(cycle-driven)仿真器等類型。這些工具中,有的側重于IC設計,如NCSim、VCS等;有的側重于FPGA/CPLD的設計,如ModelSim和ActiveHDL等。ModelSim在FPGA/CPLD設計中應用廣泛,這是因為ModelSim的出品公司為各種FPGA/CPLD廠家提供了OEM版本的ModelSim工具。ModelSim可以用于仿真VerilogHDL,也可以用于仿真VHDL,同時也支持兩種語言的混合仿真。NCSim(根據(jù)使用語言不同,分為NC-Verilog和NC-VHDL)和VCS分別由知名的EDA工具廠商Cadence和Synopsys公司提供,在IC設計中應用廣泛。本節(jié)首先介紹ModelSim的使用方法,然后介紹交互方式下NC-Verilog的使用。根據(jù)設計階段的不同,仿真可以分為RTL行為級仿真、邏輯綜合后門級仿真和時序仿真三大類型。在仿真的后兩個階段,除了VerilogHDL源代碼外還需要添加兩個文件,即工藝廠商提供的庫單元文件和延時反標注文件。下面會介紹如何在仿真器中加入這兩個文件。7.2.1ModelSim的使用Mentor公司的ModelSim是一種常用的HDL仿真軟件,能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)核支持VHDL和VerilogHDL混合仿真的仿真器。它采用直接優(yōu)化的編譯技術、Tcl/Tk技術和單一內(nèi)核仿真技術,編譯仿真速度快,編譯的代碼與平臺無關,便于保護IP核。其個性化的圖形界面和用戶接口,為用戶加快糾錯提供了強有力的手段。ModelSim的主要特點是:RTL和門級優(yōu)化,本地編譯結構,編譯仿真速度快,跨平臺、跨版本仿真;單內(nèi)核VHDL和VerilogHDL混合仿真;源代碼模板和助手,項目管理;集成了性能分析、波形比較、代碼覆蓋、數(shù)據(jù)流ChaseX、SignalSpy、虛擬對象VirtualObject、Memory窗口、Assertion窗口、源碼窗口顯示信號值、信號條件斷點等眾多調(diào)試功能;C和Tcl/Tk接口,C調(diào)試;對SystemC的直接支持,和HDL任意混合;支持SystemVerilog的設計功能;對系統(tǒng)級描述語言的最全面支持,如SystemVerilog、SystemC、ASICSignoff。ModelSim分為SE、PE、LE和OEM等幾個版本,其中SE是最高級的版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設計工具中的均是其OEM版本。SE版本和OEM版本在功能和性能方面有較大差別,比如對于大家都關心的仿真速度問題,以Xilinx公司提供的OEM版本ModelSimXE為例,對于代碼少于40000行的設計,ModelSimSE比ModelSimXE要快10倍;對于代碼超過40000行的設計,ModelSimSE要比ModelSimXE快近40倍。ModelSimSE支持PC、UNIX和Linux平臺,提供全面、完善以及高性能的驗證功能,全面支持業(yè)界廣泛應用的標準。本節(jié)介紹的是ModelSimSE10.4版本,它采用用戶圖形界面操作模式,有許多窗口,如Main窗口、Workplace窗口、Objects窗口、Wave窗口、Dataflow窗口、List窗口、Source窗口、Watch窗口。圖7.2-1給出了ModelSim的常用窗口?!ぶ?Main)窗口:ModelSim唯一的控制窗口,也是控制命令的輸入窗口。窗口中顯示了ModelSim執(zhí)行仿真的動作以及相應的信息?!そY構(Workplace)窗口:該窗口按層次關系列出了工程中所有模塊之間的關系。在結構窗口中選擇固定模塊,在信號窗口中會相應地顯示這一模塊信號的信息?!ば盘?Objects)窗口:顯示被選中模塊的信號、信號類型以及信號值?!げㄐ?Wave)窗口:顯示仿真的結果波形。·數(shù)據(jù)流(Dataflow)窗口:用于追蹤數(shù)據(jù)流,并以層次化、圖形化的方式顯示結果?!ち斜?List)窗口:以表格的形式顯示仿真數(shù)據(jù)?!ぴ创a(Source)窗口:顯示工程中的相應源代碼?!び^察(Watch)窗口:用于實時監(jiān)測變量在仿真中的變化情況。ModelSim有三種仿真流程:基本仿真流程(BasicSimulationFlow)、工程仿真流程(ProjectSimulationFlow)和多庫仿真流程(Multi-LibrarySimulation)。在較復雜的設計中,推薦使用工程仿真流程,這種流程更容易管理維護設計中遇到的各種類型的文件,事實上工程仿真流程包含了基本仿真流程和多庫仿真流程的核心內(nèi)容,因此本節(jié)主要介紹工程仿真流程。ModelSim工程仿真流程包括建立庫、建立工程、將設計文檔(包括源文件和測試文件)加入到工程中并編譯、仿真、調(diào)試。1.建立庫并映射建立并映射庫有兩種方法。第一種方法:在ModelSim中選擇File→New→Library菜單命令,在彈出的對話框中填入庫名稱,點擊OK按鈕就完成了庫的建立和映射。第二種方法:在ModelSim>?提示符下運行如下命令:vlibwork2vmapworkwork2其中,第一條命令實現(xiàn)的是建立新庫,第二條命令實現(xiàn)的是映射新庫。work2代表的是新建的工作庫。運行完畢后就完成了庫的建立和映射操作。運行完vlib命令后會產(chǎn)生work庫目錄,該目錄里存放有_info文件,用于記錄各種庫中的各種模塊。運行完vmap命令后會將ModelSim安裝目錄下的ModelSim.ini復制到當前的工作目錄中并將庫和目錄對應起來,在[Library]中增加work=work2語句。2.新建工程項目選擇Main窗口的File→New→Project菜單命令,新建一個工程。在ProjectName中輸入工程名,在ProjectLocation下的對話框中輸入保存該工程所有文件的文件夾的路徑名。DefaultLibraryName對話框使用默認設置work即可。3.輸入源代碼選擇Main窗口的File→New→Source→VerilogHDL菜單命令,出現(xiàn)源代碼編輯窗口,將源代碼輸入并保存。源代碼文件shiftregist.v如下:4.將文件添加到工程中剛才輸入的文件已經(jīng)保存在當前Project的文件夾中。在Main窗口中選擇Project→AddtoProject→ExistingFile…菜單命令,將文件添加到工程中。5.編譯源代碼
在Workplace窗口的Project對話框中選中shiftregist.v,然后在Main窗口中選擇Compile→CompileSelected菜單命令,對源代碼進行編譯。編譯成功后,Transcript對話框中將報告“#Compileofshiftregist.vwassuccessful”。如果當前工程中有多個?.v文件,則可以選擇Compile→CompileAll菜單命令完成對源代碼文件的批量編譯,也可以一次選擇多個文件進行編譯。6.建立并添加測試文件用VerilogHDL編寫測試激勵文件,然后進行仿真操作。先輸入測試激勵文件的源代碼,并存盤;然后將該文件添加到當前的工程項目中,再對該文件進行編譯。其操作過程與前面介紹的相同。帶控制端的移位寄存器的測試激勵源代碼文件testbench_shiftregist.v如下:7.打開仿真器在Main窗口中選擇Simulate→StartSimulation…菜單命令,得到仿真設置對話框(注意:將當前工作庫work前面的加號“+”點開,選擇testbench_shiftregist作為頂層文件進行仿真)。在Design選項卡相應的庫名下選擇testbench_shiftregist模塊,再單擊OK按鈕。圖7.2-2顯示的就是打開仿真器后的界面。在這里需要注意的是,在SE版本中有個使能優(yōu)化(EnableOptimization)選項,建議初學者不要選擇優(yōu)化。因為進行仿真時加載的是一個測試平臺,而測試平臺的很多語言是會被優(yōu)化器優(yōu)化掉的。8.打開調(diào)試窗口在ModelSim的Main窗口的View下面有各種全面反映用戶設計模塊各方面特性與內(nèi)容的窗口,便于用戶管理和調(diào)試。用戶對一個窗口的修改將會自動引起相關窗口的變化,同時用戶也可以方便地利用鼠標在窗口之間進行選擇和拖放。要打開窗口,在Main窗口的View下拉菜單中,單擊相應的窗口名即可。已打開的窗口名前有“√”符號提示,再次單擊該窗口名將關閉相應窗口,前面的“√”符號也將消失。例如,選擇View→Wave菜單命令,將打開仿真波形窗口。9.添加需要觀察的信號在Workplace窗口的Sim對話框中單擊需要觀察的模塊名,在Objects窗口中則會列出該模塊的各端口名及內(nèi)部信號??梢詥螕暨x中其中一個需要觀察的信號名,如果按住Ctrl鍵,則可以通過單擊選中多個需要觀察的信號名,然后選擇下拉菜單中的Add→ToWave→SlectedSignals命令打開Wave窗口,則被選中的信號就添加到Wave窗口中了。設計者還可以根據(jù)調(diào)試和測試需要,刪除Wave窗口中的信號,或向其中添加新的信號。10.運行仿真器在Main窗口的下拉菜單Simulate選項下有控制仿真器運行的多個命令選項。選擇Simulate→Run菜單命令,仿真會運行100ns(默認的仿真長度)后停止。在Main窗口的VSIM>提示符下,輸入“run500”,仿真器會再進行500ns的仿真,共計仿真了600ns。在主菜單、波形窗口或源代碼窗口的工具條上,單擊Run-All圖標,仿真連續(xù)運行,直到被中斷或在代碼中遇到諸如VerilogHDL中的$stop語句等,暫停仿真。若單擊Break圖標,則終止仿真運行。在Main窗口中選擇Simulate→EndSimulation…菜單命令,即可結束仿真。11.調(diào)試ModelSim中的調(diào)試手段很多,主要包括:在代碼中設置斷點,步進調(diào)試;觀察Wave窗口,測量時間;通過Dataflow窗口分析物理連接;通過Memory窗口觀察設計中存儲器的數(shù)值;統(tǒng)計測試代碼覆蓋率;比較波形。Wave窗口、Dataflow窗口和List窗口是常用的分析手段。1)使用Wave窗口觀察設計波形是調(diào)試設計的一種方法。加載仿真后,就可以使用Wave窗口了。通過View→Wave菜單命令打開Wave窗口,如圖7.2-3所示。在Wave窗口中可以采用多種手段進行調(diào)試,如向Wave窗口添加項目,對波形顯示的圖像進行縮放,在Wave窗口中使用游標,設置斷點,存儲波形窗口格式,將當前的仿真結果存儲到波形記錄格式文件(WLF)中等。在Wave窗口中,游標用于指示仿真的時間位置。當ModelSim首次畫波形時,自動地將一個游標放在0時刻的位置。使用游標可以測量時間間隔,也可以查找信號跳變的位置。在Wave窗口的任何位置單擊,游標將重新回到鼠標單擊的位置??梢詫τ螛诉M行添加、命名、鎖定和刪除等操作。要養(yǎng)成保存波形文件的良好習慣,以便進行項目的檢查和對比。在ModelSim中可保存的波形文件及其保存方法如下:(1)?Format文件。在Wave窗口中選擇File→SaveFormat...菜單命令,在新打開的窗口中填入DO文件(仿真腳本文件)的存儲路徑E:/shiftregist/wave.do,單擊OK按鈕完成文件的存儲。如果需要加載該文件,則在打開的Wave窗口中選擇File→Open菜單命令,然后在彈出的OpenFile窗口中選擇wave.do文件,即可打開該文件。在Transcript對話框中輸入該文件的腳本內(nèi)容并回車,將打開Wave窗口,恢復原來的信號、波形和游標狀態(tài)。(2)?WLF文件(Datasets)。ModelSim的仿真結果也可以存儲到一個波形格式記錄文件中,用于以后瀏覽和與當前的仿真結果進行比較。通常使用術語“Dataset”表示已創(chuàng)建并可重加載的WLF文件。可在主菜單中選擇File→Datasets→Saveas命令,在Saveas對話框中輸入要保存的波形文件名稱,點擊OK按鈕就完成了波形文件的保存。選擇File→Datasets→Open菜單命令,在彈出的OpenDataset對話框中,在Browse中輸入Datasets的路徑,即可打開已保存的波形文件。(3)?VCD文件。VCD文件是IEEE1364標準(VerilogHDL標準)中定義的一種ASCII文件。它是一種EDA工具普遍支持的通用波形信息記錄文件。2)使用Dataflow窗口Dataflow窗口能夠對VHDL信號或者VerilogHDL的線網(wǎng)型變量進行圖示化追蹤。雙擊Wave窗口中需要追蹤的信號,即可打開Dataflow窗口,如圖7.2-4所示。Dataflow窗口有以下四個功能:(1)觀察設計的連續(xù)性:可以檢查設計的物理連接性,并可以逐個單元地觀測所關注的信號、互連網(wǎng)絡或寄存器的輸入/輸出情況。(2)追蹤事件:跟蹤一個非預期輸出的事件;使用嵌入波形觀察器,可以由一個信號的跳變回溯追蹤,查到事件源頭。(3)追蹤未知態(tài):數(shù)據(jù)流窗口追蹤不定態(tài)的功能是工程師比較青睞的。在Dataflow窗口中使用Trace→ChaseX功能,會不斷往驅動級追蹤不定態(tài)傳遞的源頭。當選擇ChaseX,圖形界面不再變化時,就是不定態(tài)的源頭了。之后就可以根據(jù)Dataflow窗口的結果,定位源代碼產(chǎn)生不定態(tài)的語句,并加以改正。(4)顯示層次結構:可以使用層次化實例顯示設計的連通性。3)使用List窗口List窗口以表格化的方式顯示數(shù)據(jù),可以方便地通過搜索特殊值或者特定條件的數(shù)據(jù),簡化分析數(shù)據(jù)的過程。選擇View→List菜單命令,打開List窗口,如圖7.2-5所示。在Sim對話框中單擊需要觀察的模塊名,點擊鼠標右鍵,選擇菜單命令Add→ToList→Alliteminregion,可以將所有信號添加到List窗口,在窗口的左邊顯示的是仿真的時間點,右邊顯示的是每個時間點對應的變量值。當要搜索特定的數(shù)值時,可在List窗口中選擇Edit→Search...菜單命令,在彈出的ListSignalSearch對話框中選擇SearchType下的SearchforSignalValue項,并輸入想要搜索的數(shù)值。使用這種方式,可以很方便地查找仿真中的特殊值,還可以通過這種方式確定特殊值在什么時間點發(fā)生,并根據(jù)此時間點在Wave窗口中定位相應的波形。除此之外,還可以進行條件搜索,方法是在SearchType下的SearchforExpression中點擊后面的Builder,建立搜索條件;條件可以是信號、事件、邊沿等。與Wave窗口一樣,List窗口可以保存數(shù)據(jù)的列表格式和列表內(nèi)容。在List窗口中選擇File→SaveFormat菜單命令,在彈出的SaveFormat對話框中輸入所保存列表的名稱,再點擊“保存”按鈕就可以了。數(shù)據(jù)列表文件也是一個后綴為?.do的可執(zhí)行腳本文件,可以通過命令dofile_name.do打開列表文件。在File→WriteList選項下選擇一種格式,可完成對列表內(nèi)容的保存。列表內(nèi)容文件是?.lst格式的文件;要查看文件內(nèi)容,可通過記事本打開該類型文件。12.覆蓋率測試覆蓋率是衡量仿真驗證是否完備的重要指標。ModelSim具有代碼覆蓋率(CodeCoverage)測試功能,能統(tǒng)計statement(語句)、branch(分支)、condition(條件)、expression(表達)、toggle(信號翻轉)、fsm(有限狀態(tài)機)等多種覆蓋情況。1)編譯在ModelSim的Workspace里選中需要仿真代碼覆蓋率的VerilogHDL文件,然后點擊右鍵,選擇Compile→CompileProperties,之后選擇Coverage選項,出現(xiàn)如圖7.2-6所示的窗口,根據(jù)需要選擇選項,這里選statement、branch、condition、expression、toggle和FSM。選擇后點OK按鈕,進行文件編譯。2)仿真仿真時需要加入代碼覆蓋率選項,一種方式是點擊Simulate→StartSimulate→Other,出現(xiàn)圖7.2-7(a)所示窗口,將Enablecodecoverage選中;另一種方式是在Library窗口選擇仿真模塊后,點擊右鍵,直接選擇SimulatewithCoverage,如圖7.2-7(b)所示。最后點擊Run按鈕進行仿真。3)觀察結果在InstanceCoverage窗口即可看到不同模塊的各種覆蓋率統(tǒng)計結果,如圖7.2-8所示。同時,覆蓋率統(tǒng)計結果也會以報告的形式給出,點擊InstanceCoverage→CodeCoverageReport→OK,就會出現(xiàn)如圖7.2-9所示的統(tǒng)計報告。這個報告也可以存成文件。13.ModelSim常用交互命令ModelSim的圖形化界面提供了多種指令,既可以是單步指令,通過在主窗口的命令窗口中輸入命令,也可以構成批處理文件(如DO文件),用來控制編輯、編譯和仿真流程。下面介紹ModelSim中用于仿真的一些常用命令,其他指令可參考ModelSim說明書或幫助。1)?run指令指令格式: run[<timesteps>][<time_unit>]其中,參數(shù)timesteps(時間步長)和time_unit(時間單位)是可選項,time_unit可以是fs(10-15s)、ps(10-12s)、ns(10-9s)、ms(10-6s)、sec(1s)等幾種。2)?force指令指令格式: force<item_name><value>[<time>],[<value>][<time>]其中,參數(shù)item_name不能默認,它可以是端口信號,也可以是內(nèi)部信號,而且還支持通配符號,但只能匹配一個;參數(shù)value也不能默認,其類型必須與item_name一致;time是可選項,支持時間單元。3)?force-repeat指令指令格式: force<開始時間><開始電平值>,<結束電平值><忽略時間>-repeat<周期>指令功能:每隔一定的周期(period)重復一定的force命令。該指令常用來產(chǎn)生時鐘信號。4)?force-cancel指令指令格式: force-cancel<period>指令功能:執(zhí)行period周期時間后取消force命令。5)?view指令指令格式: view窗口名指令功能:打開ModelSim窗口。14.DO文件創(chuàng)建DO文件就像在文本文件中輸入命令一樣簡單,當然也可以將主窗口的復本保存為DO文件。例如,在ModelSim中創(chuàng)建一個DO文件,在該DO文件中添加腳本,實現(xiàn)向Wave窗口添加信號,并給這些信號提供激勵,而后進行仿真。選擇File→New→Source→Do菜單命令,創(chuàng)建一個DO文件。在窗口中輸入以下命令行:
vlibwork vmapwork vlogshiftregist.vtestbench_shiftregist.v vsim-Lwork-novoptwork.testbench_shiftregist.v addwave-positioninsertpointsim:/testbench_shiftregist.v/* run2000ns將以上文件保存為shiftregist.do文件,每次使用命令doshiftregist.do即可自動執(zhí)行所需的仿真動作。shiftregist.do的功能:新建work庫,將work庫映射到當前工作目錄,編譯shiftregist.vtestbench_shiftregist.v文件(默認編譯到work庫下),仿真work庫中名為testbench_shiftregist的模塊,將testbench_shiftregist的所有信號加入到波形圖中,運行2000ns。完成移位寄存器仿真批處理文件的編輯后,以shiftregist.do為文件名,保存到與計數(shù)器設計文件相同的文件夾中,并通過ModelSim進行編譯。在ModelSim的命令窗口中執(zhí)行shiftregist.do命令,可完成對移位寄存器的仿真。7.2.2NC-Verilog的使用CadenceNC-Verilog是業(yè)界優(yōu)秀的VerilogHDL仿真器,提供了高性能、高容量的事務/信號視窗和集成的覆蓋率分析功能,并支持VerilogHDL2001特性。NC-Verilog完全兼容Incisive一體化平臺(UnifiedPlatform),使得用戶能夠很容易實現(xiàn)納米(Nanometer)工藝集成電路上系統(tǒng)設計的數(shù)字化驗證。NC-Verilog為VerilogHDL設計提供了業(yè)界優(yōu)秀的仿真性能,它使用獨特的本地Incisive一體化仿真器編譯架構,從VerilogHDL直接生成高效的機器碼用于高速執(zhí)行。一體化的NC-Verilog仿真和調(diào)試環(huán)境,很容易管理多個設計的運行和分析設計與測試平臺。它的事務/波形視窗和原理圖追蹤器能迅速追蹤設計行為到源代碼。NC-Verilog是全編譯仿真器,它直接將VerilogHDL代碼編譯為機器碼執(zhí)行。其過程如下:ncvlog編譯VerilogHDL源文件,按照編譯指導(CompileDirective)檢查語義及語法,產(chǎn)生中間數(shù)據(jù);ncelab按照設計指示構造設計的數(shù)據(jù)結構,建立信號連接,產(chǎn)生可執(zhí)行代碼和中間數(shù)據(jù);ncsim啟動仿真核,調(diào)入設計的數(shù)據(jù)結構,構造事件序列,調(diào)度并執(zhí)行事件的機器碼。1.工作模式的選擇運行NC-Verilog的命令是nclunch。第一次運行NC-Verilog時,需要選擇工作模式。這里可供選擇的主要是MultipleStep和SingleStep模式。請選擇Multiple模式,此模式對應的仿真流程是ncvlog、ncelab、ncsim三步。這兩種工作模式在參考手冊內(nèi)有詳細說明。圖7.2-10顯示的是NC-Verilog的啟動界面。2.建立工作環(huán)境作為編譯仿真工具,最核心的是源代碼部分,由于NC-Verilog的源文件編輯界面效果不佳,這里建議用戶使用其他支持VHDL/VerilogHDL的工具編寫代碼,在確保沒有語法錯誤后再導入到NC-Verilog中進行編譯。選擇File→SetDesignDirectory菜單命令進行設置,彈出的對話框如圖7.2-11所示,會要求填寫如下的選項:·DesignDirectory:一般就是項目所在的目錄,即啟動NCLaunch時所在的目錄。·LibraryMappingFile:點擊“Createcds.libFile...”按鈕,會彈出一個Createacds.libfile對話框。其中的文件名是“cds.lib”,選擇“Save”。此時在彈出的對話框中選擇“IncludeDefaultLibraries”,將會在當前項目目錄下建立INCA_lib文件夾,用來保存整個設計中全部的庫信息?!orkLibrary:在建立了cds.lib之后將出現(xiàn)worklib的默認選項,無須更改。需要說明的是,當完成上述環(huán)境設置之后,在工作平臺的右上方將出現(xiàn)“Error:Unabletofindanhdl.varfiletoloadin”的錯誤,暫時無須關注此錯誤。在進行任意文件編譯之后軟件將自動生成hdl.var文件,重新載入工作目錄后(File→SetDesignDirectory),此錯誤將消失。3.編譯用鼠標左鍵選擇NCLaunch界面左窗口中的源文件“shiftregist.v”和“testbench_shiftregist.v”。若有多個設計文件,可以按住Ctrl鍵的同時選擇。第一次編譯時選擇Tool→VerilogCompiler菜單命令,以后可以直接點擊工具欄中的vlog按鈕。應特別注意的是,在編譯成功第一個文件后,應重新載入工作目錄(File→SetDesignDirectory)以確保錯誤消失。4.載入設計文件用鼠標左鍵選擇NCLaunch界面右窗口中工作目錄(worklib)下的頂層實體worklib/testbench_shiftregist/module(必須提醒的是:如果右邊的worklib前面沒有出現(xiàn)“+”,則請首先檢查右邊工作平臺上對應的的工作路徑,確定工作路徑已經(jīng)轉換到了和左邊一致的目錄下),然后選擇Tool→Elaborator菜單命令,在彈出的對話框里選中“AccessVisibility”的Read屬性,再確定。載入設計文件后的NCLaunch界面如圖7.2-12所示。5.仿真
用鼠標左鍵選擇NCLaunch界面右窗口中Snapshots下的頂層實體(snapshots/worklib/testbench_shiftregist/module)。然后選擇Tool→Simulator菜單命令,在彈出的對話框中單擊“確定”按鈕,彈出仿真器窗口,如圖7.2-13所示。彈出的默認窗口有兩個,點擊DesignBrowser→SimVision窗口工具欄中的波形按鈕,開啟波形仿真窗口。在DesignBrowser→SimVision窗口內(nèi)展開左邊瀏覽器中的Simulator,在右邊的列表中選擇希望觀察的信號。選中后,點擊鼠標右鍵,選擇SendtoWaveformWindow。根據(jù)實際波形的需要,在Waveform→SimVision窗口內(nèi)把時間顯示單位換成μs、ns或ps,然后開始仿真:(1)選擇Simulation→Run菜單命令或者直接點擊工具欄中“開始”按鈕,開始仿真波形。如果加入了新的信號,需要重新仿真;點擊復位,再次仿真。(2)在Console窗口中直接輸入命令,設定仿真時間,例如輸入run2000ns。仿真驗證在整個項目設計過程中有著重要的意義??茖W合理的仿真方法和仿真技巧可以達到事半功倍的效果;反之,如果只是一味地進行理論分析而不會利用多種工具的優(yōu)點,則可能會使實際項目寸步難行。設計者在設計過程中應時刻仿真驗證自己的設計。一個系統(tǒng)由很多模塊構成,建議每個模塊完成后,都要進行完整的仿真測試,不要等到整個系統(tǒng)完成了再整體仿真。這樣可以縮短整個設計的周期,提高設計效率。7.3綜
合
工
具7.3.1Synplify的使用Synplify、SynplifyPro和SynplifyPremier是Synplicity公司(Synopsys公司于2008年收購了Synplicity)提供的專門針對FPGA和CPLD實現(xiàn)的邏輯綜合工具。Synplicity公司的工具涵蓋了可編程邏輯器件(FPGA、PLD和CPLD)的綜合、驗證、調(diào)試、物理綜合及原型驗證等方面。SynplifyPro是高性能的FPGA綜合工具,為復雜可編程邏輯設計提供了優(yōu)秀的HDL綜合解決方案:其包含的BEST算法可對設計進行整體優(yōu)化;自動對關鍵路徑進行Retiming,可以使性能提高25%,支持VHDL和VerilogHDL的混合設計輸入,并支持網(wǎng)表*.edn文件的輸入;增強了對SystemVerilog的支持;Pipeline功能提高了乘法器和ROM的性能;有限狀態(tài)機優(yōu)化器可以自動找到最優(yōu)的編碼方法;在Timing報告和RTL視圖及RTL源代碼之間可進行交互索引;自動識別RAM,避免了繁復的RAM例化。SynplifyPremier是功能強大的FPGA綜合環(huán)境。SynplifyPremier不僅集成了SynplifyPro所有的優(yōu)化選項,包括BEST算法、ResourceSharing、Retiming和Cross-Probing等,而且更是集成了具有專利的Graph-BasedPhysicalSynthesis綜合技術,并提供FloorPlan選項,是業(yè)界領先的FPGA物理綜合解決方案,能把高端FPGA性能發(fā)揮到最優(yōu),從而可以輕松應對復雜的高端FPGA設計和單芯片ASIC原型驗證。這些特有的功能包括:全面兼容ASIC代碼;支持GatedClock的轉換;支持DesignWare的轉換。同時,因為整合了在線調(diào)試工具Identify,極大地方便了用戶進行軟硬件協(xié)同仿真,確保設計一次成功,從而大大縮短了整個軟硬件開發(fā)和調(diào)試的周期。Identify是RTL級調(diào)試工具,能夠在FPGA運行時對其進行實時調(diào)試,加快整個FPGA驗證的速度。Identify軟件有Instrumentor和Debugger兩部分,在調(diào)試前,通過Instrumentor設定需要觀測的信號和斷點信息,然后進行綜合,布局布線;最后,通過Debugger進行在線調(diào)試。SynplifyPremierHDLAnalyst提供優(yōu)秀的代碼優(yōu)化和圖形化分析調(diào)試界面;Certify確??蛻粼谑褂枚嗥現(xiàn)PGA進行ASIC/SoC驗證時快速而高效地完成工作;之后,Synopsys公司又推出了基于DSP算法的代碼產(chǎn)生和綜合工具SynplifyDSP,架起了算法驗證和RTL代碼實現(xiàn)之間的橋梁;HAPS是高性能的ASIC原型驗證系統(tǒng),大大減少了流片失敗的風險,節(jié)省了產(chǎn)品推向市場的時間。Synplify軟件的界面如圖7.3-1所示。Synplify軟件的具體使用步驟如下。1.創(chuàng)建工程選擇File→New→ProjectFile菜單命令,然后填入工程名,點擊OK按鈕保存。創(chuàng)建工程后,其中rev_1表示版本1。Synplify允許對同一個設計根據(jù)不同的綜合約束條件,創(chuàng)建多個不同的綜合版本。2.添加文件該步驟是把設計的源文件添加到工程中。設計文件可以是一個,也可以是多個。添加文件的方法是:選擇Project→AddSourceFile菜單命令或者單擊界面左邊的AddFile...按鈕,在彈出的對話框中選擇要添加的源文件即可。如果事先沒有源文件,可以選擇新建VHDL或者VerilogHDL源文件,然后在HDL編輯器中編寫代碼并保存。3.保存工程點擊工具欄中的Save圖標,對工程及源文件進行保存。4.語法和綜合檢測可以用Run菜單中的SyntaxCheck和Synthesis對源程序進行檢測,檢測的結果保存在Syntax.log文件中。如果有錯誤,則會用紅色標出;雙擊標注,可以對錯誤進行定位。另外,選擇Run→CompilerOnly菜單命令,也可以對源文件進行檢測。5.編譯綜合前的設置選擇Project→ImplementationOptions菜單命令或者單擊界面左側的ImplementationOptions...按鈕,即可出現(xiàn)設置對話框。在設置對話框中,設計者可以選擇器件、添加一些簡單約束等。在Device中選擇AlteraCYCLONEⅡ器件,同時,還可以對與器件映射有關的選項進行設定,包括最大扇出、IO、Pipelining等。在Options中可以對PhysicalSynthesis、FSMCompiler、ResourceSharing、Retiming等優(yōu)化選項進行設定。在Constraints中可以對時鐘頻率進行約束,設置時鐘頻率為100MHz。在TimingReport中可以設定關鍵路徑的數(shù)量。在VerilogHDL中的TopLevelModule中填入shiftregist。6.編譯選擇Run→CompilerOnly菜單命令,就可以對設計進行單獨編譯。在編譯后產(chǎn)生的文件中,擴展名為?.srr的文件是工程報告文件,包括工程檢錯、編譯、綜合和時序等所有工程信息;擴展名為?.tlg的文件是工程組織結構信息文件;擴展名為?.srs的為RTL視圖文件,是設計者經(jīng)常要檢查的,雙擊該文件或者點擊工具欄的圖標,會出現(xiàn)如圖7.3-2所示的移位寄存器的RTL視圖。RTL視圖由兩部分組成,左邊區(qū)域是模塊、結構的分類目錄,包括例化(Instances)、端口(Ports)、網(wǎng)線(Nets)和時鐘樹(ClockTree)四部分。Instances目錄下是本工程所有調(diào)用的模塊的實例名和硬件原語,Ports是模塊各層次IO端口的組織關系,Nets是模塊中所有連線名稱,ClockTree是以樹狀結構圖顯示的時鐘的依賴關系。RTL視圖具有強大的CrossProbing互連切換功能,雙擊RTL視圖的某一模塊,就可以連接到產(chǎn)生該模塊的RTL源代碼處,這有利于用戶理解代碼與硬件的對應關系,方便調(diào)試。7.綜合選擇Run→SynthesizeAll菜單命令或者單擊面板上的Run按鈕,即可進行綜合。綜合后主要產(chǎn)生設計的門級網(wǎng)表,門級網(wǎng)表可以拿到布局布線工具中進行設計的最后實現(xiàn)。綜合后還會產(chǎn)生一些其他文件,包括綜合報告、Log文件、腳本文件等。綜合后已經(jīng)根據(jù)所選的器件產(chǎn)生了門級電路,設計者可以通過Technology視圖功能觀察門級電路,方法是選擇HDL-Analyst→Technology→HierarchicalView菜單命令,或者點擊工具欄的圖標即可。使用這種方法可以查看層次結構顯示的與工藝相關的綜合結果。移位寄存器的Technology視圖如圖7.3-3所示。在Technology視圖下可以利用Push/PopHierarchy層次功能進入硬件的更底層,也可以在此圖上顯示關鍵路徑;還可以把Technology視圖展平成門級,方法是選擇HDL-Analyst→Technology→FlattenedtoGatesView菜單命令,如圖7.3-4所示,可查看到門級電路的與工藝相關的綜合結果。需要注意的是,之前介紹的RTLViewer顯示的其實是綜合工具對RTL代碼的編譯結果,是由基本電路單元連接成的電路,與綜合器件無關。由于不同語句、不同方法會導致不同的RTL電路,因此RTL電路可以用于客觀地評價電路的設計效果。在RTL視圖中看到的不是實際綜合出來的結果,只有通過HierarchicalView工具才能觀測到最后的綜合結果。在綜合后生成的?.srr文件中包含了詳細的時序和資源利用情況的報告,包括時間特性(TimingReport),即最長延遲時間/最高頻率、各端口的時間信息;面積特性(AreaReport),即器件使用數(shù)量(IO單元、LUT單元、DSP塊)、門輸入數(shù)量、節(jié)點數(shù)量。用戶可以通過這個報告,分析設計能夠運行的速度和硬件上資源的消耗。但這些都是綜合后的估計,更準確的報告通過布局布線后才能得出。8.分析綜合結果綜合通過后,設計者可以點擊ViewLog按鈕或者雙擊打開shiftregist.srr文件來查看綜合報告。綜合報告包括了如圖7.3-5所示的信息。通過查看綜合結果,檢查系統(tǒng)設計是否滿足要求,如系統(tǒng)時鐘頻率是否達到要求、資源消耗了多少等。同時還可以找出系統(tǒng)設計中存在的問題,如較差路徑的起點和較差路徑的終點、最差路徑等信息。其中,比較重要的是時序方面的報告。綜合后會產(chǎn)生時序報告以及相應的時序估計值。設計的實際時序狀況依賴于布局布線工具,如果調(diào)整布局布線工具的時間約束,則可以很容易地讓設計的工作頻率在10%~20%的范圍內(nèi)變化。在TimingReport中,設計者可以看到用戶要求的工作頻率(RequestedFrequency)和Synplify綜合后系統(tǒng)估計的最高允許的工作頻率(EstimatedFrequency);同時也可以看到用戶要求的工作周期(RequestedPeriod)、系統(tǒng)估計允許的工作周期(EstimatedPeriod)以及裕量(Slack)。其中,裕量?=?要求周期?-?估計周期。如果裕量大于0,則滿足時序要求;如果裕量小于0,則不滿足時序要求。圖7.3-6所示的是時序報告。如果裕量小于0,不滿足時序要求,就要分析長延時路徑的起點信息(StartingPointswithWorstSlack),如圖7.3-7所示。ArrivalTime是時鐘從開始端到達該路徑終點的延遲時間(也可以說是傳播時間)。不符合時序要求的路徑裕量會是負值。同樣,在終點信息的報告中,相應路徑的Slack也是最小的。最差路徑信息是對最差路徑作的一個總結,它指出了最差路徑的時間裕量以及路徑的起點和終點。圖7.3-8顯示的是最差路徑信息。最差路徑通常叫做關鍵路徑(CriticalPath)。設計者通過分析這些路徑,可以尋找到優(yōu)化這些路徑的方法。7.3.2DesignCompiler的使用DesignCompiler是Synopsys公司綜合軟件的核心產(chǎn)品,它提供了約束驅動時序最優(yōu)化選擇,并支持眾多的設計類型,能把設計者的HDL描述綜合成與工藝相關的門級設計。它能夠從速度、面積和功耗等方面來優(yōu)化組合電路和時序電路設計,并支持層次化設計。DesignCompiler按照所有標準EDA格式讀/寫文件,包括Synopsys內(nèi)部數(shù)據(jù)庫(.db)和方程式(.eqn)格式。除此之外,DesignCompiler還提供與第三方EDA工具的鏈接,比如布局布線工具,這些鏈接使得DesignCompiler和其他工具實現(xiàn)了信息共享。通過DesignCompiler,設計者可以利用用戶指定的門陣列、FPGA或標準單元庫,生成高速、面積優(yōu)化的ASIC;能夠在不同工藝技術之間轉換設計;探索設計的均衡性,包括延時、面積和在不同負載、溫度、電壓情況下的功耗等設計約束條件;優(yōu)化有限狀態(tài)機的綜合,包括狀態(tài)的自動分配和狀態(tài)的優(yōu)化。當?shù)谌江h(huán)境仍支持延時信息和布局布線約束時,可將輸入網(wǎng)表和輸出網(wǎng)表或電路圖整合在一起輸入至第三方環(huán)境,自動生成和分割層次化電路圖。圖7.3-9所示是DesignCompiler的工作界面。DesignCompiler基本的綜合流程如下。1.編寫HDL文件輸入DesignCompiler的設計文件通常都是用諸如VHDL和VerilogHDL等硬件描述語言編寫的。這些設計描述必須謹慎地編寫,以獲得可能的最好的綜合結果。在編寫HDL代碼時,設計者需要考慮設計數(shù)據(jù)的管理、設計劃分和HDL編碼風格。劃分和編碼風格直接影響綜合和優(yōu)化過程。雖然DesignCompiler的綜合流程中包含該步驟,但實際上它并不是DesignCompiler的一個步驟。設計者不能用DesignCompiler工具來編寫HDL文件。2.指定庫選擇File→Setup菜單命令,通過link_library、target_library、symbol_library和synthetic_library命令為DesignCompiler指定鏈接庫、對象庫、符號庫和綜合庫。鏈接庫和對象庫是工藝庫。對象庫是指用RTL級的HDL描述門級時所需要的標準單元綜合庫,它是由芯片制造商(Foundry)提供的,包含了物理信息的單元模型。鏈接庫可以是同target_library一樣的單元庫,或者是已綜合到門級的底層模塊設計,其作用如下:在由下向上的綜合過程中,上一層的設計調(diào)用底層已綜合的模塊時,將從link_library中尋找并鏈接起來。符號庫定義了設計電路圖時所調(diào)用的符號。設計者在應用DesignAnalyzer圖形用戶界面時,就會用到這個庫。另外,設計者必須通過synthetic_library命令來指定任何一種特殊的有許可的設計工具庫(不需要指定標準設計工具庫)。3.讀入設計DesignCompiler使用HDLCompiler將RTL級設計和門級網(wǎng)表作為設計輸入文件讀入。選擇File→Read菜單命令,在打開的文件對話框中選中要打開的文件,例如選擇shiftregist.v文件。在Log框中出現(xiàn)successfully字樣,表明讀入文件成功。有時可能要讀入多個文件,每個文件中都有電路module,則讀入后要指定這些module中的最頂層module,例如頂層module名是top,則可以鍵入命令current_designtop來指定它。點擊Symbol按鈕,可以查看該電路的Symbol圖,如圖7.3-10所示。如果設計者用read_file或read命令讀入RTL設計,等于實現(xiàn)了analyze和elaborate命令組合的功能。4.定義設計環(huán)境DesignCompiler要求設計者模擬出待綜合設計的環(huán)境。這個模型由外部的操作環(huán)境(制造流程、溫度和電壓)、負載、驅動、扇出、線負載模型等組成,它直接影響到設計綜合和優(yōu)化的結果。5.設置設計約束設計約束定義了時序(時鐘、時鐘錯位、輸入延時和輸出延時)和面積(最大面積)等設計目標。在最優(yōu)化過程中,DesignCompiler試圖滿足這些目標,但不會違反任何設計規(guī)則。為能夠正確地優(yōu)化設計,必須設置更接近現(xiàn)實情況的約束。1)設置時鐘約束在Symbol圖上選中clk端口,再選擇Attributes→SpecifyClock菜單命令來設置時鐘約束,例如設計者可以進行如下設置:給時鐘取名為clock,周期為20ns,上升沿為0ns,下降沿為10ns。然后點擊OK按鈕,時鐘約束設置完成。以上操作的相應命令是:create_clock-nameclock-period20-waveform{010}[get_portsclk_i]2)設置復位信號約束在Symbol圖上選中rst_n端口(在本例中它是復位端口),再選擇Attributes→OptimizationDirectives→InputPort菜單命令;勾選Don’ttouchnetwork選項,然后點擊OK按鈕。以上操作的相應命令是:set_dont_touch_network3)設置輸入信號延時約束在Symbol圖上同時選中輸入端口,再選擇Attributes→OperatingEnvironment→InputDelay菜單命令。設置Relativetoclock為clock(即剛才加約束的時鐘信號),并設置上升延時為12ns(根據(jù)經(jīng)驗,該值是時鐘周期的60%,本例中設置了時鐘周期為20ns,20?×?0.6?=?12ns)。以上操作的相應命令是:set_input_delay4)設置輸出端口約束在Symbol圖上選中輸出端口,再選擇Attributes→OperatingEnvironment→OutputDelay菜單命令,設置輸出延時為8ns。以上操作的相應指令是:set_output_delay5)設置面積約束選擇Attributes→OptimizationConstraints→DesignConstraints菜單命令,設置Maxarea的值為0,表明讓DC沿電路面積為0的方向優(yōu)化電路,使面積最小。當然,面積為0是達不到的。Maxfanout為4,Maxtransition為0.5(具體含義參見synthesis.pdf)。以上操作的相應命令是:set_max_area0,set_max_fanout4,set_max_transition0.56.優(yōu)化設計選擇Design→CompileDesign菜單命令,點擊OK按鈕,啟動綜合和優(yōu)化進程。以上操作的相應命令是:compile-map_effortmedium特別地,map_effort選項可以設置為low、medium或high。初步編譯時,如果設計者想對設計面積和性能有一個快速的了解,則將map_effort設置為low;默認編譯時,如果設計者在進行設計開發(fā),則將map_effort設置為medium;當在進行最后設計實現(xiàn)編譯時,則將map_effort設置為high。通常設置map_effort為medium。7.查看報告通常DesignCompiler根據(jù)設計綜合和優(yōu)化的結果生成眾多的報告,設計者根據(jù)諸如面積、約束和時序報告來分析和解決任何的設計問題,或者改進綜合結果。選擇Design→ReportArea菜單命令,點擊OK按鈕,查看面積報告,如圖7.3-11所示。相應的命令為report_area。報告總面積為1092.608009,單位是平方微米。選擇Design→ReportConstraints,點擊OK按鈕,查看約束報告。相應的命令為report_constraint-all_violators。從圖7.3-12可以看出,max_area(最大面積)一項約束不滿足。因為我們設置的最大面積約束是0,而實際綜合出的電路面積是1092.61平方微米,所以該項violator是合理的。如果是較為復雜的設計代碼,還會有max_fanout這一項約束不滿足。由于rst_i是復位信號,故其扇出非常高,同時由于之前對rst_i信號設置了don’t_touch,DC在綜合的過程中沒有對該信號進行優(yōu)化,在DRC的時候會違反設定的max_fanout(最大扇出),所以該項violator也是合理的。如果還存在其他violators,說明前面的約束設置不合理或電路設計不合理,需要對其進行修改。選擇Design→ReportTiming,點擊OK按鈕,查看時序報告。其相應的命令為report_timing。報告的是最大延時路徑,這里看到圖7.3-13中所標slack值為6.61,是正值,說明電路滿足時序要求。如果該值是負的,就表明電路不滿足前面所設定的時序約束條件,要更改原設計或調(diào)整約束。8.保存設計數(shù)據(jù)
利用write命令可保存綜合過的設計。DesignCompiler在退出時并不自動保存設計。在使用Synplify或DesignCompiler對設計進行約束時,如果對電路結構不熟悉,就不要進行過多的約束。約束越多,意味著使用者必須對自己的設計越了解;不恰當?shù)募s束不僅不能優(yōu)化綜合結果,反而會帶來負面影響。7.4布局布線工具及后仿真7.4.1工具簡介本小節(jié)以Altera公司的QuartusⅡ軟件為例介紹用于數(shù)字集成電路設計的自動布局布線及后仿真流程。QuartusⅡ是一個完全集成化的可編程邏輯設計環(huán)境,軟件界面友好,使用便捷,功能強大,具有開放性、與結構無關、多平臺、完全集成化、豐富的設計庫、模塊化工具等特點,支持原理圖、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多種設計輸入形式,內(nèi)嵌綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。此外,QuartusⅡ通過DSPBuilder工具與Matlab/Simulink相結合,可以方便地實現(xiàn)各種DSP應用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設計、嵌入式軟件開發(fā)、可編程邏輯設計于一體,是一種綜合性的開發(fā)平臺;提供FPGA與Mask-ProgrammedDevices開發(fā)的統(tǒng)一工作流程。1.支持的器件QuartusⅡ的不同版本軟件可以支持Altera公司的MAX3000A系列、MAX7000系列、MAX9000系列、ACEX1K系列、APEX20K系列、APEXⅡ系列、FLEX6000系列、FLEX10K系列和MAX7000/MAX3000等乘積項器件,并支持MAXⅡCPLD系列、Cyclone、CycloneⅡ/Ⅲ/Ⅳ/Ⅴ、StratixⅡ/Ⅲ/Ⅳ/Ⅴ等,還支持IP核,用戶可以充分利用成熟的模塊,簡化設計的復雜性,加快設計速度。2.對第三方EDA工具的支持QuartusⅡ軟件并不直接集成第三方軟件,而僅僅提供與這些EDA工具的接口。用來實現(xiàn)這種鏈接的工具是NativeLink。NativeLink能實現(xiàn)第三方工具與QuartusⅡ的無縫交互,雙方在后臺進行參數(shù)行和命令的溝通,使用者完全不必在意NativeLink操作的具體細節(jié)。它提供給用戶的是具有良好互動性的用戶界面,設計人員甚至可以在任何一方工具中完成整個操作流程。QuartusⅡ集成設計環(huán)境對第三方EDA工具的良好支持也使用戶可以在設計流程的各階段使用熟悉的第三方EDA工具,如使用ModelSim對邏輯進行仿真驗證,使用SynplifyPro進行邏輯綜合。常用第三方EDA工具的使用方法可參照7.2節(jié)和7.3節(jié)。3.QuartusⅡ用戶界面正確安裝QuartusⅡ集成設計環(huán)境(本小節(jié)以QuartusⅡ13.0版本為例)后,雙擊桌面圖標
,啟動
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年甲醇汽油市場調(diào)研報告
- 2020-2025年中國舒肝丸行業(yè)投資潛力分析及行業(yè)發(fā)展趨勢報告
- 2025年中國石材養(yǎng)護行業(yè)市場前景預測與投資戰(zhàn)略規(guī)劃分析報告
- 2024-2025年中國圖片編輯軟件行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y方向研究報告
- 2025年開采磁石行業(yè)深度研究分析報告
- 2021-2026年中國13價肺炎球菌疫苗市場全面調(diào)研及行業(yè)投資潛力預測報告
- 2025年中國純棉內(nèi)衣行業(yè)市場全景評估及發(fā)展戰(zhàn)略研究報告
- 2025年中國車載發(fā)射器電商市場供需現(xiàn)狀及投資戰(zhàn)略研究報告
- 2024年國學培訓行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 課程設計重力壩心得體會
- 物業(yè)民法典知識培訓課件
- 2023年初中畢業(yè)生信息技術中考知識點詳解
- 2024-2025學年山東省德州市高中五校高二上學期期中考試地理試題(解析版)
- 《萬方數(shù)據(jù)資源介紹》課件
- 麻風病病情分析
- 《急診科建設與設備配置標準》
- 第一章-地震工程學概論
- JJF(陜) 063-2021 漆膜沖擊器校準規(guī)范
- TSGD7002-2023-壓力管道元件型式試驗規(guī)則
- 2024年度家庭醫(yī)生簽約服務培訓課件
- 建筑工地節(jié)前停工安全檢查表
評論
0/150
提交評論