Verilog HDL數(shù)字集成電路設(shè)計(jì)原理與應(yīng)用(第三版)課件 第7章 仿真測(cè)試工具和綜合工具_(dá)第1頁(yè)
Verilog HDL數(shù)字集成電路設(shè)計(jì)原理與應(yīng)用(第三版)課件 第7章 仿真測(cè)試工具和綜合工具_(dá)第2頁(yè)
Verilog HDL數(shù)字集成電路設(shè)計(jì)原理與應(yīng)用(第三版)課件 第7章 仿真測(cè)試工具和綜合工具_(dá)第3頁(yè)
Verilog HDL數(shù)字集成電路設(shè)計(jì)原理與應(yīng)用(第三版)課件 第7章 仿真測(cè)試工具和綜合工具_(dá)第4頁(yè)
Verilog HDL數(shù)字集成電路設(shè)計(jì)原理與應(yīng)用(第三版)課件 第7章 仿真測(cè)試工具和綜合工具_(dá)第5頁(yè)
已閱讀5頁(yè),還剩89頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

7.1數(shù)字集成電路設(shè)計(jì)流程簡(jiǎn)介

7.2測(cè)試和仿真工具

7.3綜合工具

7.4布局布線工具及后仿真7.1數(shù)字集成電路設(shè)計(jì)流程簡(jiǎn)介在EDA技術(shù)高度發(fā)達(dá)的今天,沒有一個(gè)設(shè)計(jì)工程師隊(duì)伍能夠用人工方法有效、全面、正確地設(shè)計(jì)和管理含有幾百萬個(gè)門的現(xiàn)代集成電路。利用EDA工具,工程師可以從概念、算法、協(xié)議等方面開始設(shè)計(jì)電子系統(tǒng),通過計(jì)算機(jī)完成大量的工作,并可以將電子產(chǎn)品從系統(tǒng)規(guī)劃、電路設(shè)計(jì)、性能分析到版圖、封裝的整個(gè)過程在計(jì)算機(jī)上自動(dòng)完成。使用EDA工具有利于縮短設(shè)計(jì)周期,提高設(shè)計(jì)正確性,降低設(shè)計(jì)成本、保證產(chǎn)品性能,尤其是增加了一次投片成功率,因此,EDA工具在大規(guī)模集成電路設(shè)計(jì)中已經(jīng)被普遍采用。利用EDA工具進(jìn)行集成電路設(shè)計(jì)需要遵循一定的設(shè)計(jì)流程,這樣才能保證設(shè)計(jì)任務(wù)高效率地完成。數(shù)字集成電路設(shè)計(jì)的典型流程如圖7.1-1所示。下面分別介紹各設(shè)計(jì)階段的主要任務(wù)。1.設(shè)計(jì)規(guī)范設(shè)計(jì)流程從已寫出的設(shè)計(jì)規(guī)范開始。設(shè)計(jì)規(guī)范是一個(gè)包含功能、定時(shí)、硅片面積、功耗、可測(cè)性、故障覆蓋率以及其他的設(shè)計(jì)準(zhǔn)則的詳細(xì)說明書。設(shè)計(jì)規(guī)范描述了項(xiàng)目要實(shí)現(xiàn)的功能,并確定設(shè)計(jì)的總體方案,以平衡各方面的因素,從而對(duì)整個(gè)項(xiàng)目有一個(gè)初步的規(guī)劃;在系統(tǒng)設(shè)計(jì)階段,根據(jù)對(duì)設(shè)計(jì)面積、功耗、I/O和IP使用等情況的估算,確定所使用的芯片工藝和設(shè)計(jì)工具。有了設(shè)計(jì)規(guī)范,就可以進(jìn)行設(shè)計(jì)劃分了。2.設(shè)計(jì)劃分設(shè)計(jì)劃分就是把一個(gè)復(fù)雜設(shè)計(jì)劃分成較小而且較為簡(jiǎn)單的功能單元。這樣一個(gè)過程通常被稱為自頂向下的設(shè)計(jì)方法,或者是分層設(shè)計(jì)法。HDL可以為需要進(jìn)行劃分、綜合和驗(yàn)證的大型復(fù)雜系統(tǒng)提供一個(gè)通用框架,它支持具有混合抽象級(jí)別的自頂向下設(shè)計(jì),可以將大型設(shè)計(jì)中的各部分連接在一起,來進(jìn)行整個(gè)設(shè)計(jì)的功能和性能驗(yàn)證。3.設(shè)計(jì)輸入設(shè)計(jì)輸入是指將設(shè)計(jì)劃分階段定義好的模塊借助一定的設(shè)計(jì)輸入手段轉(zhuǎn)換為EDA工具能接受的信息格式。目前主要的設(shè)計(jì)輸入手段有高級(jí)硬件描述語(yǔ)言HDL(VerilogHDL/VHDL)和原理圖方式。HDL支持不同層次的描述,不依賴于各廠家的工藝器件,便于修改。邏輯輸入工具的功能是把邏輯圖、狀態(tài)機(jī)、真值表輸入到計(jì)算機(jī)中,并進(jìn)行語(yǔ)法、綜合性檢查等。目前的主流工具有Cadence公司的Composer、Synopsys公司的Leda以及UltraEdit、Vim等第三方的編輯工具。Leda是可編程的語(yǔ)法和設(shè)計(jì)規(guī)范檢查工具,它能夠?qū)θ酒腣HDL和VerilogHDL描述或者兩者混合描述進(jìn)行檢查,加速SoC的設(shè)計(jì)流程。Leda預(yù)先將IEEE可綜合規(guī)范、可仿真規(guī)范、可測(cè)性規(guī)范和設(shè)計(jì)復(fù)用規(guī)范進(jìn)行了集成,以提高設(shè)計(jì)者分析代碼的能力。UltraEdit是一款功能強(qiáng)大的文本編輯器,可以編輯文字、Hex、ASCII碼,內(nèi)建英文單詞檢查、C++及VB指令突顯,可同時(shí)編輯多個(gè)文件,而且即使開啟很大的文件,速度也不會(huì)變慢。它是一個(gè)使用廣泛的編輯器,但它并不直接支持HDL。讀者可以通過官方網(wǎng)站的鏈接下載VerilogHDL/VHDL的語(yǔ)法高亮文件,并把下載的文件復(fù)制到WordFile.txt文件中(在UltraEdit的安裝目錄下),一般加在最后。這樣就可以使用UltraEdit編輯HDL源代碼了。4.仿真設(shè)計(jì)輸入完成并經(jīng)HDL編譯器檢查沒有語(yǔ)法錯(cuò)誤后,就可以對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證了。這里的驗(yàn)證是指通過仿真軟件驗(yàn)證其功能是否符合制定的設(shè)計(jì)規(guī)范;這一階段的驗(yàn)證常被稱為功能仿真或行為仿真。布局布線后,提取有關(guān)的器件延時(shí)、連線延時(shí)等時(shí)序參數(shù)(這些信息在反標(biāo)注文件中)。在此基礎(chǔ)上進(jìn)行的仿真稱為后仿真,也稱時(shí)序仿真,它是接近真實(shí)器件運(yùn)行的仿真。仿真的結(jié)果取決于設(shè)計(jì)描述是否準(zhǔn)確反映了設(shè)計(jì)的物理實(shí)現(xiàn)。仿真器不是一個(gè)靜態(tài)工具,需要Stimulus(激勵(lì))和Response(輸出)。Stimulus由模擬設(shè)計(jì)工作環(huán)境的Testbench產(chǎn)生,Response為仿真的輸出,由設(shè)計(jì)者確定輸出的有效性。目前,仿真工具比較多,幾乎每個(gè)公司的EDA產(chǎn)品都有仿真工具。Cadence公司的NC-Verilog用于Verilog仿真,Mentor公司推出的是Verilog和VHDL雙仿真器ModelSim,Synopsys公司的則是VSS/VCS仿真器,這些都是業(yè)界廣泛使用的仿真工具。5.綜合利用綜合器對(duì)HDL代碼進(jìn)行綜合優(yōu)化處理,生成門級(jí)描述的網(wǎng)表文件,是將高層次描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。綜合優(yōu)化是針對(duì)ASIC芯片供應(yīng)商的某一產(chǎn)品系列進(jìn)行的,所以綜合的過程要在相應(yīng)的廠家綜合庫(kù)支持下才能完成。綜合實(shí)際上是根據(jù)設(shè)計(jì)功能和實(shí)現(xiàn)該設(shè)計(jì)的約束條件(如面積、速度、功耗和成本等),將設(shè)計(jì)描述(如HDL文件、原理圖等)變換成滿足要求的電路設(shè)計(jì)方案;該方案必須同時(shí)滿足預(yù)期的功能和約束條件。對(duì)于綜合來說,滿足要求的方案可能有多個(gè),綜合器將產(chǎn)生一個(gè)最優(yōu)的或接近最優(yōu)的結(jié)果。因此,綜合的過程也就是設(shè)計(jì)目標(biāo)的優(yōu)化過程,最后獲得的結(jié)構(gòu)與綜合器的性能有關(guān)。這個(gè)階段產(chǎn)生目標(biāo)FPGA的標(biāo)準(zhǔn)單元網(wǎng)表和數(shù)據(jù)庫(kù),供布局布線使用。網(wǎng)表中包含了目標(biāo)器件中的邏輯元件和互連的信息。在傳統(tǒng)的IC設(shè)計(jì)流程中,前端綜合或時(shí)序分析時(shí)沒有精確的線和CELL延時(shí)信息,這樣就容易造成布局前后的時(shí)序不收斂。隨著工藝的進(jìn)步,線延時(shí)占主導(dǎo)地位,時(shí)序收斂問題越來越嚴(yán)重。其根本的解決方法是將前后端的設(shè)計(jì)流程整合起來。物理綜合就針對(duì)的是這種情況。在0.18?μm以下工藝技術(shù)的IC設(shè)計(jì)環(huán)境下,物理綜合將綜合、布局、布線集成于一體,讓RTL設(shè)計(jì)者可以在最短的時(shí)間內(nèi)得到性能最優(yōu)的電路。通過集成綜合算法、布局算法和布線算法,在RTL到GDSⅡ的設(shè)計(jì)流程中,提供可以確保IC設(shè)計(jì)的性能預(yù)估性和時(shí)序收斂性。目前常用的邏輯綜合工具有Synopsys公司的Synplify和DesignCompiler、PhysicalCompiler,以及Cadence公司的RTLCompiler等。6.適配布線適配布線就是按照特定的工藝要求和約束條件利用適配器進(jìn)行布局布線,最后生成版圖。對(duì)于芯片設(shè)計(jì)而言,這個(gè)過程通常分為三步。①

布局規(guī)劃,主要是標(biāo)準(zhǔn)單元、I/OPad和宏單元的布局。I/OPad預(yù)先給出了位置,而宏單元?jiǎng)t根據(jù)時(shí)序要求進(jìn)行擺放,標(biāo)準(zhǔn)單元?jiǎng)t是給出了一定的區(qū)域,由工具自動(dòng)擺放。布局規(guī)劃后,芯片的大小,Core的面積,Row的形式、電源及地線的Ring和Strip就都確定下來了。②

時(shí)鐘樹生成(ClockTreeSynthesis)。③

布局布線。適配布線完成后,會(huì)產(chǎn)生多項(xiàng)設(shè)計(jì)結(jié)果。①

適配報(bào)告,包括芯片內(nèi)部資源利用情況、設(shè)計(jì)的布爾方程描述情況等。②

適配后的仿真模型。③

器件編程文件,根據(jù)適配后的仿真模型,可以進(jìn)行適配后的時(shí)序仿真。因?yàn)榇藭r(shí)已經(jīng)得到了器件的實(shí)際硬件特性(如時(shí)延特性等),所以此仿真結(jié)果能比較精確地預(yù)期未來芯片的實(shí)際性能。在FPGA設(shè)計(jì)中,各廠家都提供了相應(yīng)的布局布線工具,例如Altera公司的QuartusⅡ、Xilinx公司的ISE等。在芯片設(shè)計(jì)領(lǐng)域,有Cadence公司提供的SoCEncounter和Synopsys公司的Astro等布局布線工具。7.時(shí)序分析時(shí)序分析的目的是檢查設(shè)計(jì)中是否有時(shí)序上的違規(guī)。同步電路的分析采用靜態(tài)時(shí)序分析(STA)實(shí)現(xiàn),異步電路的分析則需要運(yùn)行特殊仿真激勵(lì)確認(rèn)。仿真工具可以用前仿真所用的工具。靜態(tài)時(shí)序分析的功能是根據(jù)設(shè)計(jì)規(guī)范的要求檢查所有可能路徑的時(shí)序,不需要通過仿真或測(cè)試向量就可以有效地覆蓋門級(jí)網(wǎng)表中的每一條路徑,在同步電路設(shè)計(jì)中快速地找出時(shí)序上的異常??梢宰R(shí)別的時(shí)序故障包括:建立/保持和恢復(fù)/移除檢查(包括反向建立/保持),最小和最大跳變,時(shí)鐘脈沖寬度和時(shí)鐘畸變,門級(jí)時(shí)鐘的瞬時(shí)脈沖檢測(cè),總線競(jìng)爭(zhēng)與總線懸浮錯(cuò)誤,不受約束的邏輯通道,計(jì)算經(jīng)過導(dǎo)通晶體管、傳輸門和雙向鎖存的延時(shí),自動(dòng)對(duì)關(guān)鍵路徑、約束性沖突、異步時(shí)鐘域和某些瓶頸邏輯進(jìn)行識(shí)別與分類。PrimeTime是Synopsys公司開發(fā)的進(jìn)行靜態(tài)時(shí)序分析的工具,它可以進(jìn)行精確的RC延時(shí)計(jì)算、先進(jìn)的建模和時(shí)序驗(yàn)收。對(duì)于大型多時(shí)鐘的設(shè)計(jì),比如綜合出的邏輯電路、嵌入式存儲(chǔ)器和微處理器核的設(shè)計(jì),PrimeTime起到了關(guān)鍵性的作用。動(dòng)態(tài)時(shí)序分析主要是指門級(jí)(或?qū)Π鎴D參數(shù)提取結(jié)果)的仿真,它主要應(yīng)用在異步邏輯、多周期路徑、錯(cuò)誤路徑的驗(yàn)證中。隨著設(shè)計(jì)向10nm以下的工藝發(fā)展,只用靜態(tài)分析工具將無法精確驗(yàn)證串?dāng)_等動(dòng)態(tài)效應(yīng)。動(dòng)態(tài)時(shí)序分析與靜態(tài)時(shí)序分析的結(jié)合,可以驗(yàn)證時(shí)序邏輯的建立/保持時(shí)間,并利用動(dòng)態(tài)技術(shù)來解決串?dāng)_效應(yīng)、動(dòng)態(tài)模擬時(shí)鐘網(wǎng)絡(luò)等問題。8.物理驗(yàn)證物理驗(yàn)證通常包括設(shè)計(jì)規(guī)則檢測(cè)(DRC)、版圖與原理圖對(duì)照(LVS)和信號(hào)完整性分析(SI)等。其中DRC用來檢查版圖設(shè)計(jì)是否滿足工藝線能夠加工的最小線寬、最小圖形間距、金屬寬度、柵和有源區(qū)交疊的最小長(zhǎng)度等要求。如果版圖設(shè)計(jì)違反設(shè)計(jì)規(guī)則,那么極有可能導(dǎo)致芯片在加工的過程中成為廢品。LVS則用來保證版圖設(shè)計(jì)與其電路設(shè)計(jì)的匹配,保證它們的一致性。如果不一致,就需要修改版圖設(shè)計(jì)。SI用來分析和調(diào)整芯片設(shè)計(jì)的一致性,避免串?dāng)_噪聲、串?dāng)_延時(shí)以及電遷移等問題的產(chǎn)生。目前主要的物理驗(yàn)證工具有Mentor公司的Calibre、Cadence公司的Dracula和Diva以及Synopsys公司的Hercules。此外,各大廠商也推出了針對(duì)信號(hào)完整性分析的工具。9.設(shè)計(jì)結(jié)束在所有設(shè)計(jì)約束都已滿足,也達(dá)到了定時(shí)約束條件的情況下,軟件就會(huì)發(fā)出最終設(shè)計(jì)結(jié)束的信號(hào)。這時(shí)可用于制造集成電路的掩膜集就準(zhǔn)備好了。掩膜集的描述是由幾何數(shù)據(jù)(通常為GDSⅡ格式)構(gòu)成的,這些數(shù)據(jù)決定了集成電路制造過程中的光掩膜步驟的順序。將適配器布局布線后形成的器件編程文件通過下載工具載入到具體的FPGA或CPLD芯片中,可以方便地實(shí)現(xiàn)設(shè)計(jì)要求。如果是大批量產(chǎn)品的開發(fā),則通過更換相應(yīng)的廠家綜合庫(kù),便可以轉(zhuǎn)由ASIC實(shí)現(xiàn)。7.2測(cè)試和仿真工具用HDL描述完一個(gè)硬件系統(tǒng)后要進(jìn)行仿真驗(yàn)證,而如果想在計(jì)算機(jī)終端看到硬件描述語(yǔ)言的輸出,則需要通過硬件描述語(yǔ)言的仿真器來完成。常用的HDL仿真器有很多種,例如VCS、NCSim、VerilogHDL-XL、ModelSim、ActiveHDL等。根據(jù)所使用的編程語(yǔ)言的不同,可以將仿真器分為VerilogHDL仿真器和VHDL仿真器;根據(jù)工作方式的不同,可以分為事件驅(qū)動(dòng)(event-driven)仿真器和時(shí)鐘驅(qū)動(dòng)(cycle-driven)仿真器等類型。這些工具中,有的側(cè)重于IC設(shè)計(jì),如NCSim、VCS等;有的側(cè)重于FPGA/CPLD的設(shè)計(jì),如ModelSim和ActiveHDL等。ModelSim在FPGA/CPLD設(shè)計(jì)中應(yīng)用廣泛,這是因?yàn)镸odelSim的出品公司為各種FPGA/CPLD廠家提供了OEM版本的ModelSim工具。ModelSim可以用于仿真VerilogHDL,也可以用于仿真VHDL,同時(shí)也支持兩種語(yǔ)言的混合仿真。NCSim(根據(jù)使用語(yǔ)言不同,分為NC-Verilog和NC-VHDL)和VCS分別由知名的EDA工具廠商Cadence和Synopsys公司提供,在IC設(shè)計(jì)中應(yīng)用廣泛。本節(jié)首先介紹ModelSim的使用方法,然后介紹交互方式下NC-Verilog的使用。根據(jù)設(shè)計(jì)階段的不同,仿真可以分為RTL行為級(jí)仿真、邏輯綜合后門級(jí)仿真和時(shí)序仿真三大類型。在仿真的后兩個(gè)階段,除了VerilogHDL源代碼外還需要添加兩個(gè)文件,即工藝廠商提供的庫(kù)單元文件和延時(shí)反標(biāo)注文件。下面會(huì)介紹如何在仿真器中加入這兩個(gè)文件。7.2.1ModelSim的使用Mentor公司的ModelSim是一種常用的HDL仿真軟件,能提供友好的仿真環(huán)境,是業(yè)界唯一的單內(nèi)核支持VHDL和VerilogHDL混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺(tái)無關(guān),便于保護(hù)IP核。其個(gè)性化的圖形界面和用戶接口,為用戶加快糾錯(cuò)提供了強(qiáng)有力的手段。ModelSim的主要特點(diǎn)是:RTL和門級(jí)優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快,跨平臺(tái)、跨版本仿真;單內(nèi)核VHDL和VerilogHDL混合仿真;源代碼模板和助手,項(xiàng)目管理;集成了性能分析、波形比較、代碼覆蓋、數(shù)據(jù)流ChaseX、SignalSpy、虛擬對(duì)象VirtualObject、Memory窗口、Assertion窗口、源碼窗口顯示信號(hào)值、信號(hào)條件斷點(diǎn)等眾多調(diào)試功能;C和Tcl/Tk接口,C調(diào)試;對(duì)SystemC的直接支持,和HDL任意混合;支持SystemVerilog的設(shè)計(jì)功能;對(duì)系統(tǒng)級(jí)描述語(yǔ)言的最全面支持,如SystemVerilog、SystemC、ASICSignoff。ModelSim分為SE、PE、LE和OEM等幾個(gè)版本,其中SE是最高級(jí)的版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計(jì)工具中的均是其OEM版本。SE版本和OEM版本在功能和性能方面有較大差別,比如對(duì)于大家都關(guān)心的仿真速度問題,以Xilinx公司提供的OEM版本ModelSimXE為例,對(duì)于代碼少于40000行的設(shè)計(jì),ModelSimSE比ModelSimXE要快10倍;對(duì)于代碼超過40000行的設(shè)計(jì),ModelSimSE要比ModelSimXE快近40倍。ModelSimSE支持PC、UNIX和Linux平臺(tái),提供全面、完善以及高性能的驗(yàn)證功能,全面支持業(yè)界廣泛應(yīng)用的標(biāo)準(zhǔn)。本節(jié)介紹的是ModelSimSE10.4版本,它采用用戶圖形界面操作模式,有許多窗口,如Main窗口、Workplace窗口、Objects窗口、Wave窗口、Dataflow窗口、List窗口、Source窗口、Watch窗口。圖7.2-1給出了ModelSim的常用窗口?!ぶ?Main)窗口:ModelSim唯一的控制窗口,也是控制命令的輸入窗口。窗口中顯示了ModelSim執(zhí)行仿真的動(dòng)作以及相應(yīng)的信息?!そY(jié)構(gòu)(Workplace)窗口:該窗口按層次關(guān)系列出了工程中所有模塊之間的關(guān)系。在結(jié)構(gòu)窗口中選擇固定模塊,在信號(hào)窗口中會(huì)相應(yīng)地顯示這一模塊信號(hào)的信息?!ば盘?hào)(Objects)窗口:顯示被選中模塊的信號(hào)、信號(hào)類型以及信號(hào)值?!げㄐ?Wave)窗口:顯示仿真的結(jié)果波形?!?shù)據(jù)流(Dataflow)窗口:用于追蹤數(shù)據(jù)流,并以層次化、圖形化的方式顯示結(jié)果?!ち斜?List)窗口:以表格的形式顯示仿真數(shù)據(jù)?!ぴ创a(Source)窗口:顯示工程中的相應(yīng)源代碼?!び^察(Watch)窗口:用于實(shí)時(shí)監(jiān)測(cè)變量在仿真中的變化情況。ModelSim有三種仿真流程:基本仿真流程(BasicSimulationFlow)、工程仿真流程(ProjectSimulationFlow)和多庫(kù)仿真流程(Multi-LibrarySimulation)。在較復(fù)雜的設(shè)計(jì)中,推薦使用工程仿真流程,這種流程更容易管理維護(hù)設(shè)計(jì)中遇到的各種類型的文件,事實(shí)上工程仿真流程包含了基本仿真流程和多庫(kù)仿真流程的核心內(nèi)容,因此本節(jié)主要介紹工程仿真流程。ModelSim工程仿真流程包括建立庫(kù)、建立工程、將設(shè)計(jì)文檔(包括源文件和測(cè)試文件)加入到工程中并編譯、仿真、調(diào)試。1.建立庫(kù)并映射建立并映射庫(kù)有兩種方法。第一種方法:在ModelSim中選擇File→New→Library菜單命令,在彈出的對(duì)話框中填入庫(kù)名稱,點(diǎn)擊OK按鈕就完成了庫(kù)的建立和映射。第二種方法:在ModelSim>?提示符下運(yùn)行如下命令:vlibwork2vmapworkwork2其中,第一條命令實(shí)現(xiàn)的是建立新庫(kù),第二條命令實(shí)現(xiàn)的是映射新庫(kù)。work2代表的是新建的工作庫(kù)。運(yùn)行完畢后就完成了庫(kù)的建立和映射操作。運(yùn)行完vlib命令后會(huì)產(chǎn)生work庫(kù)目錄,該目錄里存放有_info文件,用于記錄各種庫(kù)中的各種模塊。運(yùn)行完vmap命令后會(huì)將ModelSim安裝目錄下的ModelSim.ini復(fù)制到當(dāng)前的工作目錄中并將庫(kù)和目錄對(duì)應(yīng)起來,在[Library]中增加work=work2語(yǔ)句。2.新建工程項(xiàng)目選擇Main窗口的File→New→Project菜單命令,新建一個(gè)工程。在ProjectName中輸入工程名,在ProjectLocation下的對(duì)話框中輸入保存該工程所有文件的文件夾的路徑名。DefaultLibraryName對(duì)話框使用默認(rèn)設(shè)置work即可。3.輸入源代碼選擇Main窗口的File→New→Source→VerilogHDL菜單命令,出現(xiàn)源代碼編輯窗口,將源代碼輸入并保存。源代碼文件shiftregist.v如下:4.將文件添加到工程中剛才輸入的文件已經(jīng)保存在當(dāng)前Project的文件夾中。在Main窗口中選擇Project→AddtoProject→ExistingFile…菜單命令,將文件添加到工程中。5.編譯源代碼

在Workplace窗口的Project對(duì)話框中選中shiftregist.v,然后在Main窗口中選擇Compile→CompileSelected菜單命令,對(duì)源代碼進(jìn)行編譯。編譯成功后,Transcript對(duì)話框中將報(bào)告“#Compileofshiftregist.vwassuccessful”。如果當(dāng)前工程中有多個(gè)?.v文件,則可以選擇Compile→CompileAll菜單命令完成對(duì)源代碼文件的批量編譯,也可以一次選擇多個(gè)文件進(jìn)行編譯。6.建立并添加測(cè)試文件用VerilogHDL編寫測(cè)試激勵(lì)文件,然后進(jìn)行仿真操作。先輸入測(cè)試激勵(lì)文件的源代碼,并存盤;然后將該文件添加到當(dāng)前的工程項(xiàng)目中,再對(duì)該文件進(jìn)行編譯。其操作過程與前面介紹的相同。帶控制端的移位寄存器的測(cè)試激勵(lì)源代碼文件testbench_shiftregist.v如下:7.打開仿真器在Main窗口中選擇Simulate→StartSimulation…菜單命令,得到仿真設(shè)置對(duì)話框(注意:將當(dāng)前工作庫(kù)work前面的加號(hào)“+”點(diǎn)開,選擇testbench_shiftregist作為頂層文件進(jìn)行仿真)。在Design選項(xiàng)卡相應(yīng)的庫(kù)名下選擇testbench_shiftregist模塊,再單擊OK按鈕。圖7.2-2顯示的就是打開仿真器后的界面。在這里需要注意的是,在SE版本中有個(gè)使能優(yōu)化(EnableOptimization)選項(xiàng),建議初學(xué)者不要選擇優(yōu)化。因?yàn)檫M(jìn)行仿真時(shí)加載的是一個(gè)測(cè)試平臺(tái),而測(cè)試平臺(tái)的很多語(yǔ)言是會(huì)被優(yōu)化器優(yōu)化掉的。8.打開調(diào)試窗口在ModelSim的Main窗口的View下面有各種全面反映用戶設(shè)計(jì)模塊各方面特性與內(nèi)容的窗口,便于用戶管理和調(diào)試。用戶對(duì)一個(gè)窗口的修改將會(huì)自動(dòng)引起相關(guān)窗口的變化,同時(shí)用戶也可以方便地利用鼠標(biāo)在窗口之間進(jìn)行選擇和拖放。要打開窗口,在Main窗口的View下拉菜單中,單擊相應(yīng)的窗口名即可。已打開的窗口名前有“√”符號(hào)提示,再次單擊該窗口名將關(guān)閉相應(yīng)窗口,前面的“√”符號(hào)也將消失。例如,選擇View→Wave菜單命令,將打開仿真波形窗口。9.添加需要觀察的信號(hào)在Workplace窗口的Sim對(duì)話框中單擊需要觀察的模塊名,在Objects窗口中則會(huì)列出該模塊的各端口名及內(nèi)部信號(hào)??梢詥螕暨x中其中一個(gè)需要觀察的信號(hào)名,如果按住Ctrl鍵,則可以通過單擊選中多個(gè)需要觀察的信號(hào)名,然后選擇下拉菜單中的Add→ToWave→SlectedSignals命令打開Wave窗口,則被選中的信號(hào)就添加到Wave窗口中了。設(shè)計(jì)者還可以根據(jù)調(diào)試和測(cè)試需要,刪除Wave窗口中的信號(hào),或向其中添加新的信號(hào)。10.運(yùn)行仿真器在Main窗口的下拉菜單Simulate選項(xiàng)下有控制仿真器運(yùn)行的多個(gè)命令選項(xiàng)。選擇Simulate→Run菜單命令,仿真會(huì)運(yùn)行100ns(默認(rèn)的仿真長(zhǎng)度)后停止。在Main窗口的VSIM>提示符下,輸入“run500”,仿真器會(huì)再進(jìn)行500ns的仿真,共計(jì)仿真了600ns。在主菜單、波形窗口或源代碼窗口的工具條上,單擊Run-All圖標(biāo),仿真連續(xù)運(yùn)行,直到被中斷或在代碼中遇到諸如VerilogHDL中的$stop語(yǔ)句等,暫停仿真。若單擊Break圖標(biāo),則終止仿真運(yùn)行。在Main窗口中選擇Simulate→EndSimulation…菜單命令,即可結(jié)束仿真。11.調(diào)試ModelSim中的調(diào)試手段很多,主要包括:在代碼中設(shè)置斷點(diǎn),步進(jìn)調(diào)試;觀察Wave窗口,測(cè)量時(shí)間;通過Dataflow窗口分析物理連接;通過Memory窗口觀察設(shè)計(jì)中存儲(chǔ)器的數(shù)值;統(tǒng)計(jì)測(cè)試代碼覆蓋率;比較波形。Wave窗口、Dataflow窗口和List窗口是常用的分析手段。1)使用Wave窗口觀察設(shè)計(jì)波形是調(diào)試設(shè)計(jì)的一種方法。加載仿真后,就可以使用Wave窗口了。通過View→Wave菜單命令打開Wave窗口,如圖7.2-3所示。在Wave窗口中可以采用多種手段進(jìn)行調(diào)試,如向Wave窗口添加項(xiàng)目,對(duì)波形顯示的圖像進(jìn)行縮放,在Wave窗口中使用游標(biāo),設(shè)置斷點(diǎn),存儲(chǔ)波形窗口格式,將當(dāng)前的仿真結(jié)果存儲(chǔ)到波形記錄格式文件(WLF)中等。在Wave窗口中,游標(biāo)用于指示仿真的時(shí)間位置。當(dāng)ModelSim首次畫波形時(shí),自動(dòng)地將一個(gè)游標(biāo)放在0時(shí)刻的位置。使用游標(biāo)可以測(cè)量時(shí)間間隔,也可以查找信號(hào)跳變的位置。在Wave窗口的任何位置單擊,游標(biāo)將重新回到鼠標(biāo)單擊的位置??梢詫?duì)游標(biāo)進(jìn)行添加、命名、鎖定和刪除等操作。要養(yǎng)成保存波形文件的良好習(xí)慣,以便進(jìn)行項(xiàng)目的檢查和對(duì)比。在ModelSim中可保存的波形文件及其保存方法如下:(1)?Format文件。在Wave窗口中選擇File→SaveFormat...菜單命令,在新打開的窗口中填入DO文件(仿真腳本文件)的存儲(chǔ)路徑E:/shiftregist/wave.do,單擊OK按鈕完成文件的存儲(chǔ)。如果需要加載該文件,則在打開的Wave窗口中選擇File→Open菜單命令,然后在彈出的OpenFile窗口中選擇wave.do文件,即可打開該文件。在Transcript對(duì)話框中輸入該文件的腳本內(nèi)容并回車,將打開Wave窗口,恢復(fù)原來的信號(hào)、波形和游標(biāo)狀態(tài)。(2)?WLF文件(Datasets)。ModelSim的仿真結(jié)果也可以存儲(chǔ)到一個(gè)波形格式記錄文件中,用于以后瀏覽和與當(dāng)前的仿真結(jié)果進(jìn)行比較。通常使用術(shù)語(yǔ)“Dataset”表示已創(chuàng)建并可重加載的WLF文件??稍谥鞑藛沃羞x擇File→Datasets→Saveas命令,在Saveas對(duì)話框中輸入要保存的波形文件名稱,點(diǎn)擊OK按鈕就完成了波形文件的保存。選擇File→Datasets→Open菜單命令,在彈出的OpenDataset對(duì)話框中,在Browse中輸入Datasets的路徑,即可打開已保存的波形文件。(3)?VCD文件。VCD文件是IEEE1364標(biāo)準(zhǔn)(VerilogHDL標(biāo)準(zhǔn))中定義的一種ASCII文件。它是一種EDA工具普遍支持的通用波形信息記錄文件。2)使用Dataflow窗口Dataflow窗口能夠?qū)HDL信號(hào)或者VerilogHDL的線網(wǎng)型變量進(jìn)行圖示化追蹤。雙擊Wave窗口中需要追蹤的信號(hào),即可打開Dataflow窗口,如圖7.2-4所示。Dataflow窗口有以下四個(gè)功能:(1)觀察設(shè)計(jì)的連續(xù)性:可以檢查設(shè)計(jì)的物理連接性,并可以逐個(gè)單元地觀測(cè)所關(guān)注的信號(hào)、互連網(wǎng)絡(luò)或寄存器的輸入/輸出情況。(2)追蹤事件:跟蹤一個(gè)非預(yù)期輸出的事件;使用嵌入波形觀察器,可以由一個(gè)信號(hào)的跳變回溯追蹤,查到事件源頭。(3)追蹤未知態(tài):數(shù)據(jù)流窗口追蹤不定態(tài)的功能是工程師比較青睞的。在Dataflow窗口中使用Trace→ChaseX功能,會(huì)不斷往驅(qū)動(dòng)級(jí)追蹤不定態(tài)傳遞的源頭。當(dāng)選擇ChaseX,圖形界面不再變化時(shí),就是不定態(tài)的源頭了。之后就可以根據(jù)Dataflow窗口的結(jié)果,定位源代碼產(chǎn)生不定態(tài)的語(yǔ)句,并加以改正。(4)顯示層次結(jié)構(gòu):可以使用層次化實(shí)例顯示設(shè)計(jì)的連通性。3)使用List窗口List窗口以表格化的方式顯示數(shù)據(jù),可以方便地通過搜索特殊值或者特定條件的數(shù)據(jù),簡(jiǎn)化分析數(shù)據(jù)的過程。選擇View→List菜單命令,打開List窗口,如圖7.2-5所示。在Sim對(duì)話框中單擊需要觀察的模塊名,點(diǎn)擊鼠標(biāo)右鍵,選擇菜單命令A(yù)dd→ToList→Alliteminregion,可以將所有信號(hào)添加到List窗口,在窗口的左邊顯示的是仿真的時(shí)間點(diǎn),右邊顯示的是每個(gè)時(shí)間點(diǎn)對(duì)應(yīng)的變量值。當(dāng)要搜索特定的數(shù)值時(shí),可在List窗口中選擇Edit→Search...菜單命令,在彈出的ListSignalSearch對(duì)話框中選擇SearchType下的SearchforSignalValue項(xiàng),并輸入想要搜索的數(shù)值。使用這種方式,可以很方便地查找仿真中的特殊值,還可以通過這種方式確定特殊值在什么時(shí)間點(diǎn)發(fā)生,并根據(jù)此時(shí)間點(diǎn)在Wave窗口中定位相應(yīng)的波形。除此之外,還可以進(jìn)行條件搜索,方法是在SearchType下的SearchforExpression中點(diǎn)擊后面的Builder,建立搜索條件;條件可以是信號(hào)、事件、邊沿等。與Wave窗口一樣,List窗口可以保存數(shù)據(jù)的列表格式和列表內(nèi)容。在List窗口中選擇File→SaveFormat菜單命令,在彈出的SaveFormat對(duì)話框中輸入所保存列表的名稱,再點(diǎn)擊“保存”按鈕就可以了。數(shù)據(jù)列表文件也是一個(gè)后綴為?.do的可執(zhí)行腳本文件,可以通過命令dofile_name.do打開列表文件。在File→WriteList選項(xiàng)下選擇一種格式,可完成對(duì)列表內(nèi)容的保存。列表內(nèi)容文件是?.lst格式的文件;要查看文件內(nèi)容,可通過記事本打開該類型文件。12.覆蓋率測(cè)試覆蓋率是衡量仿真驗(yàn)證是否完備的重要指標(biāo)。ModelSim具有代碼覆蓋率(CodeCoverage)測(cè)試功能,能統(tǒng)計(jì)statement(語(yǔ)句)、branch(分支)、condition(條件)、expression(表達(dá))、toggle(信號(hào)翻轉(zhuǎn))、fsm(有限狀態(tài)機(jī))等多種覆蓋情況。1)編譯在ModelSim的Workspace里選中需要仿真代碼覆蓋率的VerilogHDL文件,然后點(diǎn)擊右鍵,選擇Compile→CompileProperties,之后選擇Coverage選項(xiàng),出現(xiàn)如圖7.2-6所示的窗口,根據(jù)需要選擇選項(xiàng),這里選statement、branch、condition、expression、toggle和FSM。選擇后點(diǎn)OK按鈕,進(jìn)行文件編譯。2)仿真仿真時(shí)需要加入代碼覆蓋率選項(xiàng),一種方式是點(diǎn)擊Simulate→StartSimulate→Other,出現(xiàn)圖7.2-7(a)所示窗口,將Enablecodecoverage選中;另一種方式是在Library窗口選擇仿真模塊后,點(diǎn)擊右鍵,直接選擇SimulatewithCoverage,如圖7.2-7(b)所示。最后點(diǎn)擊Run按鈕進(jìn)行仿真。3)觀察結(jié)果在InstanceCoverage窗口即可看到不同模塊的各種覆蓋率統(tǒng)計(jì)結(jié)果,如圖7.2-8所示。同時(shí),覆蓋率統(tǒng)計(jì)結(jié)果也會(huì)以報(bào)告的形式給出,點(diǎn)擊InstanceCoverage→CodeCoverageReport→OK,就會(huì)出現(xiàn)如圖7.2-9所示的統(tǒng)計(jì)報(bào)告。這個(gè)報(bào)告也可以存成文件。13.ModelSim常用交互命令ModelSim的圖形化界面提供了多種指令,既可以是單步指令,通過在主窗口的命令窗口中輸入命令,也可以構(gòu)成批處理文件(如DO文件),用來控制編輯、編譯和仿真流程。下面介紹ModelSim中用于仿真的一些常用命令,其他指令可參考ModelSim說明書或幫助。1)?run指令指令格式: run[<timesteps>][<time_unit>]其中,參數(shù)timesteps(時(shí)間步長(zhǎng))和time_unit(時(shí)間單位)是可選項(xiàng),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不能默認(rèn),它可以是端口信號(hào),也可以是內(nèi)部信號(hào),而且還支持通配符號(hào),但只能匹配一個(gè);參數(shù)value也不能默認(rèn),其類型必須與item_name一致;time是可選項(xiàng),支持時(shí)間單元。3)?force-repeat指令指令格式: force<開始時(shí)間><開始電平值>,<結(jié)束電平值><忽略時(shí)間>-repeat<周期>指令功能:每隔一定的周期(period)重復(fù)一定的force命令。該指令常用來產(chǎn)生時(shí)鐘信號(hào)。4)?force-cancel指令指令格式: force-cancel<period>指令功能:執(zhí)行period周期時(shí)間后取消force命令。5)?view指令指令格式: view窗口名指令功能:打開ModelSim窗口。14.DO文件創(chuàng)建DO文件就像在文本文件中輸入命令一樣簡(jiǎn)單,當(dāng)然也可以將主窗口的復(fù)本保存為DO文件。例如,在ModelSim中創(chuàng)建一個(gè)DO文件,在該DO文件中添加腳本,實(shí)現(xiàn)向Wave窗口添加信號(hào),并給這些信號(hào)提供激勵(lì),而后進(jìn)行仿真。選擇File→New→Source→Do菜單命令,創(chuàng)建一個(gè)DO文件。在窗口中輸入以下命令行:

vlibwork vmapwork vlogshiftregist.vtestbench_shiftregist.v vsim-Lwork-novoptwork.testbench_shiftregist.v addwave-positioninsertpointsim:/testbench_shiftregist.v/* run2000ns將以上文件保存為shiftregist.do文件,每次使用命令doshiftregist.do即可自動(dòng)執(zhí)行所需的仿真動(dòng)作。shiftregist.do的功能:新建work庫(kù),將work庫(kù)映射到當(dāng)前工作目錄,編譯shiftregist.vtestbench_shiftregist.v文件(默認(rèn)編譯到work庫(kù)下),仿真work庫(kù)中名為testbench_shiftregist的模塊,將testbench_shiftregist的所有信號(hào)加入到波形圖中,運(yùn)行2000ns。完成移位寄存器仿真批處理文件的編輯后,以shiftregist.do為文件名,保存到與計(jì)數(shù)器設(shè)計(jì)文件相同的文件夾中,并通過ModelSim進(jìn)行編譯。在ModelSim的命令窗口中執(zhí)行shiftregist.do命令,可完成對(duì)移位寄存器的仿真。7.2.2NC-Verilog的使用CadenceNC-Verilog是業(yè)界優(yōu)秀的VerilogHDL仿真器,提供了高性能、高容量的事務(wù)/信號(hào)視窗和集成的覆蓋率分析功能,并支持VerilogHDL2001特性。NC-Verilog完全兼容Incisive一體化平臺(tái)(UnifiedPlatform),使得用戶能夠很容易實(shí)現(xiàn)納米(Nanometer)工藝集成電路上系統(tǒng)設(shè)計(jì)的數(shù)字化驗(yàn)證。NC-Verilog為VerilogHDL設(shè)計(jì)提供了業(yè)界優(yōu)秀的仿真性能,它使用獨(dú)特的本地Incisive一體化仿真器編譯架構(gòu),從VerilogHDL直接生成高效的機(jī)器碼用于高速執(zhí)行。一體化的NC-Verilog仿真和調(diào)試環(huán)境,很容易管理多個(gè)設(shè)計(jì)的運(yùn)行和分析設(shè)計(jì)與測(cè)試平臺(tái)。它的事務(wù)/波形視窗和原理圖追蹤器能迅速追蹤設(shè)計(jì)行為到源代碼。NC-Verilog是全編譯仿真器,它直接將VerilogHDL代碼編譯為機(jī)器碼執(zhí)行。其過程如下:ncvlog編譯VerilogHDL源文件,按照編譯指導(dǎo)(CompileDirective)檢查語(yǔ)義及語(yǔ)法,產(chǎn)生中間數(shù)據(jù);ncelab按照設(shè)計(jì)指示構(gòu)造設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),建立信號(hào)連接,產(chǎn)生可執(zhí)行代碼和中間數(shù)據(jù);ncsim啟動(dòng)仿真核,調(diào)入設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),構(gòu)造事件序列,調(diào)度并執(zhí)行事件的機(jī)器碼。1.工作模式的選擇運(yùn)行NC-Verilog的命令是nclunch。第一次運(yùn)行NC-Verilog時(shí),需要選擇工作模式。這里可供選擇的主要是MultipleStep和SingleStep模式。請(qǐng)選擇Multiple模式,此模式對(duì)應(yīng)的仿真流程是ncvlog、ncelab、ncsim三步。這兩種工作模式在參考手冊(cè)內(nèi)有詳細(xì)說明。圖7.2-10顯示的是NC-Verilog的啟動(dòng)界面。2.建立工作環(huán)境作為編譯仿真工具,最核心的是源代碼部分,由于NC-Verilog的源文件編輯界面效果不佳,這里建議用戶使用其他支持VHDL/VerilogHDL的工具編寫代碼,在確保沒有語(yǔ)法錯(cuò)誤后再導(dǎo)入到NC-Verilog中進(jìn)行編譯。選擇File→SetDesignDirectory菜單命令進(jìn)行設(shè)置,彈出的對(duì)話框如圖7.2-11所示,會(huì)要求填寫如下的選項(xiàng):·DesignDirectory:一般就是項(xiàng)目所在的目錄,即啟動(dòng)NCLaunch時(shí)所在的目錄?!ibraryMappingFile:點(diǎn)擊“Createcds.libFile...”按鈕,會(huì)彈出一個(gè)Createacds.libfile對(duì)話框。其中的文件名是“cds.lib”,選擇“Save”。此時(shí)在彈出的對(duì)話框中選擇“IncludeDefaultLibraries”,將會(huì)在當(dāng)前項(xiàng)目目錄下建立INCA_lib文件夾,用來保存整個(gè)設(shè)計(jì)中全部的庫(kù)信息?!orkLibrary:在建立了cds.lib之后將出現(xiàn)worklib的默認(rèn)選項(xiàng),無須更改。需要說明的是,當(dāng)完成上述環(huán)境設(shè)置之后,在工作平臺(tái)的右上方將出現(xiàn)“Error:Unabletofindanhdl.varfiletoloadin”的錯(cuò)誤,暫時(shí)無須關(guān)注此錯(cuò)誤。在進(jìn)行任意文件編譯之后軟件將自動(dòng)生成hdl.var文件,重新載入工作目錄后(File→SetDesignDirectory),此錯(cuò)誤將消失。3.編譯用鼠標(biāo)左鍵選擇NCLaunch界面左窗口中的源文件“shiftregist.v”和“testbench_shiftregist.v”。若有多個(gè)設(shè)計(jì)文件,可以按住Ctrl鍵的同時(shí)選擇。第一次編譯時(shí)選擇Tool→VerilogCompiler菜單命令,以后可以直接點(diǎn)擊工具欄中的vlog按鈕。應(yīng)特別注意的是,在編譯成功第一個(gè)文件后,應(yīng)重新載入工作目錄(File→SetDesignDirectory)以確保錯(cuò)誤消失。4.載入設(shè)計(jì)文件用鼠標(biāo)左鍵選擇NCLaunch界面右窗口中工作目錄(worklib)下的頂層實(shí)體worklib/testbench_shiftregist/module(必須提醒的是:如果右邊的worklib前面沒有出現(xiàn)“+”,則請(qǐng)首先檢查右邊工作平臺(tái)上對(duì)應(yīng)的的工作路徑,確定工作路徑已經(jīng)轉(zhuǎn)換到了和左邊一致的目錄下),然后選擇Tool→Elaborator菜單命令,在彈出的對(duì)話框里選中“AccessVisibility”的Read屬性,再確定。載入設(shè)計(jì)文件后的NCLaunch界面如圖7.2-12所示。5.仿真

用鼠標(biāo)左鍵選擇NCLaunch界面右窗口中Snapshots下的頂層實(shí)體(snapshots/worklib/testbench_shiftregist/module)。然后選擇Tool→Simulator菜單命令,在彈出的對(duì)話框中單擊“確定”按鈕,彈出仿真器窗口,如圖7.2-13所示。彈出的默認(rèn)窗口有兩個(gè),點(diǎn)擊DesignBrowser→SimVision窗口工具欄中的波形按鈕,開啟波形仿真窗口。在DesignBrowser→SimVision窗口內(nèi)展開左邊瀏覽器中的Simulator,在右邊的列表中選擇希望觀察的信號(hào)。選中后,點(diǎn)擊鼠標(biāo)右鍵,選擇SendtoWaveformWindow。根據(jù)實(shí)際波形的需要,在Waveform→SimVision窗口內(nèi)把時(shí)間顯示單位換成μs、ns或ps,然后開始仿真:(1)選擇Simulation→Run菜單命令或者直接點(diǎn)擊工具欄中“開始”按鈕,開始仿真波形。如果加入了新的信號(hào),需要重新仿真;點(diǎn)擊復(fù)位,再次仿真。(2)在Console窗口中直接輸入命令,設(shè)定仿真時(shí)間,例如輸入run2000ns。仿真驗(yàn)證在整個(gè)項(xiàng)目設(shè)計(jì)過程中有著重要的意義??茖W(xué)合理的仿真方法和仿真技巧可以達(dá)到事半功倍的效果;反之,如果只是一味地進(jìn)行理論分析而不會(huì)利用多種工具的優(yōu)點(diǎn),則可能會(huì)使實(shí)際項(xiàng)目寸步難行。設(shè)計(jì)者在設(shè)計(jì)過程中應(yīng)時(shí)刻仿真驗(yàn)證自己的設(shè)計(jì)。一個(gè)系統(tǒng)由很多模塊構(gòu)成,建議每個(gè)模塊完成后,都要進(jìn)行完整的仿真測(cè)試,不要等到整個(gè)系統(tǒng)完成了再整體仿真。這樣可以縮短整個(gè)設(shè)計(jì)的周期,提高設(shè)計(jì)效率。7.3綜

具7.3.1Synplify的使用Synplify、SynplifyPro和SynplifyPremier是Synplicity公司(Synopsys公司于2008年收購(gòu)了Synplicity)提供的專門針對(duì)FPGA和CPLD實(shí)現(xiàn)的邏輯綜合工具。Synplicity公司的工具涵蓋了可編程邏輯器件(FPGA、PLD和CPLD)的綜合、驗(yàn)證、調(diào)試、物理綜合及原型驗(yàn)證等方面。SynplifyPro是高性能的FPGA綜合工具,為復(fù)雜可編程邏輯設(shè)計(jì)提供了優(yōu)秀的HDL綜合解決方案:其包含的BEST算法可對(duì)設(shè)計(jì)進(jìn)行整體優(yōu)化;自動(dòng)對(duì)關(guān)鍵路徑進(jìn)行Retiming,可以使性能提高25%,支持VHDL和VerilogHDL的混合設(shè)計(jì)輸入,并支持網(wǎng)表*.edn文件的輸入;增強(qiáng)了對(duì)SystemVerilog的支持;Pipeline功能提高了乘法器和ROM的性能;有限狀態(tài)機(jī)優(yōu)化器可以自動(dòng)找到最優(yōu)的編碼方法;在Timing報(bào)告和RTL視圖及RTL源代碼之間可進(jìn)行交互索引;自動(dòng)識(shí)別RAM,避免了繁復(fù)的RAM例化。SynplifyPremier是功能強(qiáng)大的FPGA綜合環(huán)境。SynplifyPremier不僅集成了SynplifyPro所有的優(yōu)化選項(xiàng),包括BEST算法、ResourceSharing、Retiming和Cross-Probing等,而且更是集成了具有專利的Graph-BasedPhysicalSynthesis綜合技術(shù),并提供FloorPlan選項(xiàng),是業(yè)界領(lǐng)先的FPGA物理綜合解決方案,能把高端FPGA性能發(fā)揮到最優(yōu),從而可以輕松應(yīng)對(duì)復(fù)雜的高端FPGA設(shè)計(jì)和單芯片ASIC原型驗(yàn)證。這些特有的功能包括:全面兼容ASIC代碼;支持GatedClock的轉(zhuǎn)換;支持DesignWare的轉(zhuǎn)換。同時(shí),因?yàn)檎狭嗽诰€調(diào)試工具Identify,極大地方便了用戶進(jìn)行軟硬件協(xié)同仿真,確保設(shè)計(jì)一次成功,從而大大縮短了整個(gè)軟硬件開發(fā)和調(diào)試的周期。Identify是RTL級(jí)調(diào)試工具,能夠在FPGA運(yùn)行時(shí)對(duì)其進(jìn)行實(shí)時(shí)調(diào)試,加快整個(gè)FPGA驗(yàn)證的速度。Identify軟件有Instrumentor和Debugger兩部分,在調(diào)試前,通過Instrumentor設(shè)定需要觀測(cè)的信號(hào)和斷點(diǎn)信息,然后進(jìn)行綜合,布局布線;最后,通過Debugger進(jìn)行在線調(diào)試。SynplifyPremierHDLAnalyst提供優(yōu)秀的代碼優(yōu)化和圖形化分析調(diào)試界面;Certify確??蛻粼谑褂枚嗥現(xiàn)PGA進(jìn)行ASIC/SoC驗(yàn)證時(shí)快速而高效地完成工作;之后,Synopsys公司又推出了基于DSP算法的代碼產(chǎn)生和綜合工具SynplifyDSP,架起了算法驗(yàn)證和RTL代碼實(shí)現(xiàn)之間的橋梁;HAPS是高性能的ASIC原型驗(yàn)證系統(tǒng),大大減少了流片失敗的風(fēng)險(xiǎn),節(jié)省了產(chǎn)品推向市場(chǎng)的時(shí)間。Synplify軟件的界面如圖7.3-1所示。Synplify軟件的具體使用步驟如下。1.創(chuàng)建工程選擇File→New→ProjectFile菜單命令,然后填入工程名,點(diǎn)擊OK按鈕保存。創(chuàng)建工程后,其中rev_1表示版本1。Synplify允許對(duì)同一個(gè)設(shè)計(jì)根據(jù)不同的綜合約束條件,創(chuàng)建多個(gè)不同的綜合版本。2.添加文件該步驟是把設(shè)計(jì)的源文件添加到工程中。設(shè)計(jì)文件可以是一個(gè),也可以是多個(gè)。添加文件的方法是:選擇Project→AddSourceFile菜單命令或者單擊界面左邊的AddFile...按鈕,在彈出的對(duì)話框中選擇要添加的源文件即可。如果事先沒有源文件,可以選擇新建VHDL或者VerilogHDL源文件,然后在HDL編輯器中編寫代碼并保存。3.保存工程點(diǎn)擊工具欄中的Save圖標(biāo),對(duì)工程及源文件進(jìn)行保存。4.語(yǔ)法和綜合檢測(cè)可以用Run菜單中的SyntaxCheck和Synthesis對(duì)源程序進(jìn)行檢測(cè),檢測(cè)的結(jié)果保存在Syntax.log文件中。如果有錯(cuò)誤,則會(huì)用紅色標(biāo)出;雙擊標(biāo)注,可以對(duì)錯(cuò)誤進(jìn)行定位。另外,選擇Run→CompilerOnly菜單命令,也可以對(duì)源文件進(jìn)行檢測(cè)。5.編譯綜合前的設(shè)置選擇Project→ImplementationOptions菜單命令或者單擊界面左側(cè)的ImplementationOptions...按鈕,即可出現(xiàn)設(shè)置對(duì)話框。在設(shè)置對(duì)話框中,設(shè)計(jì)者可以選擇器件、添加一些簡(jiǎn)單約束等。在Device中選擇AlteraCYCLONEⅡ器件,同時(shí),還可以對(duì)與器件映射有關(guān)的選項(xiàng)進(jìn)行設(shè)定,包括最大扇出、IO、Pipelining等。在Options中可以對(duì)PhysicalSynthesis、FSMCompiler、ResourceSharing、Retiming等優(yōu)化選項(xiàng)進(jìn)行設(shè)定。在Constraints中可以對(duì)時(shí)鐘頻率進(jìn)行約束,設(shè)置時(shí)鐘頻率為100MHz。在TimingReport中可以設(shè)定關(guān)鍵路徑的數(shù)量。在VerilogHDL中的TopLevelModule中填入shiftregist。6.編譯選擇Run→CompilerOnly菜單命令,就可以對(duì)設(shè)計(jì)進(jìn)行單獨(dú)編譯。在編譯后產(chǎn)生的文件中,擴(kuò)展名為?.srr的文件是工程報(bào)告文件,包括工程檢錯(cuò)、編譯、綜合和時(shí)序等所有工程信息;擴(kuò)展名為?.tlg的文件是工程組織結(jié)構(gòu)信息文件;擴(kuò)展名為?.srs的為RTL視圖文件,是設(shè)計(jì)者經(jīng)常要檢查的,雙擊該文件或者點(diǎn)擊工具欄的圖標(biāo),會(huì)出現(xiàn)如圖7.3-2所示的移位寄存器的RTL視圖。RTL視圖由兩部分組成,左邊區(qū)域是模塊、結(jié)構(gòu)的分類目錄,包括例化(Instances)、端口(Ports)、網(wǎng)線(Nets)和時(shí)鐘樹(ClockTree)四部分。Instances目錄下是本工程所有調(diào)用的模塊的實(shí)例名和硬件原語(yǔ),Ports是模塊各層次IO端口的組織關(guān)系,Nets是模塊中所有連線名稱,ClockTree是以樹狀結(jié)構(gòu)圖顯示的時(shí)鐘的依賴關(guān)系。RTL視圖具有強(qiáng)大的CrossProbing互連切換功能,雙擊RTL視圖的某一模塊,就可以連接到產(chǎn)生該模塊的RTL源代碼處,這有利于用戶理解代碼與硬件的對(duì)應(yīng)關(guān)系,方便調(diào)試。7.綜合選擇Run→SynthesizeAll菜單命令或者單擊面板上的Run按鈕,即可進(jìn)行綜合。綜合后主要產(chǎn)生設(shè)計(jì)的門級(jí)網(wǎng)表,門級(jí)網(wǎng)表可以拿到布局布線工具中進(jìn)行設(shè)計(jì)的最后實(shí)現(xiàn)。綜合后還會(huì)產(chǎn)生一些其他文件,包括綜合報(bào)告、Log文件、腳本文件等。綜合后已經(jīng)根據(jù)所選的器件產(chǎn)生了門級(jí)電路,設(shè)計(jì)者可以通過Technology視圖功能觀察門級(jí)電路,方法是選擇HDL-Analyst→Technology→HierarchicalView菜單命令,或者點(diǎn)擊工具欄的圖標(biāo)即可。使用這種方法可以查看層次結(jié)構(gòu)顯示的與工藝相關(guān)的綜合結(jié)果。移位寄存器的Technology視圖如圖7.3-3所示。在Technology視圖下可以利用Push/PopHierarchy層次功能進(jìn)入硬件的更底層,也可以在此圖上顯示關(guān)鍵路徑;還可以把Technology視圖展平成門級(jí),方法是選擇HDL-Analyst→Technology→FlattenedtoGatesView菜單命令,如圖7.3-4所示,可查看到門級(jí)電路的與工藝相關(guān)的綜合結(jié)果。需要注意的是,之前介紹的RTLViewer顯示的其實(shí)是綜合工具對(duì)RTL代碼的編譯結(jié)果,是由基本電路單元連接成的電路,與綜合器件無關(guān)。由于不同語(yǔ)句、不同方法會(huì)導(dǎo)致不同的RTL電路,因此RTL電路可以用于客觀地評(píng)價(jià)電路的設(shè)計(jì)效果。在RTL視圖中看到的不是實(shí)際綜合出來的結(jié)果,只有通過HierarchicalView工具才能觀測(cè)到最后的綜合結(jié)果。在綜合后生成的?.srr文件中包含了詳細(xì)的時(shí)序和資源利用情況的報(bào)告,包括時(shí)間特性(TimingReport),即最長(zhǎng)延遲時(shí)間/最高頻率、各端口的時(shí)間信息;面積特性(AreaReport),即器件使用數(shù)量(IO單元、LUT單元、DSP塊)、門輸入數(shù)量、節(jié)點(diǎn)數(shù)量。用戶可以通過這個(gè)報(bào)告,分析設(shè)計(jì)能夠運(yùn)行的速度和硬件上資源的消耗。但這些都是綜合后的估計(jì),更準(zhǔn)確的報(bào)告通過布局布線后才能得出。8.分析綜合結(jié)果綜合通過后,設(shè)計(jì)者可以點(diǎn)擊ViewLog按鈕或者雙擊打開shiftregist.srr文件來查看綜合報(bào)告。綜合報(bào)告包括了如圖7.3-5所示的信息。通過查看綜合結(jié)果,檢查系統(tǒng)設(shè)計(jì)是否滿足要求,如系統(tǒng)時(shí)鐘頻率是否達(dá)到要求、資源消耗了多少等。同時(shí)還可以找出系統(tǒng)設(shè)計(jì)中存在的問題,如較差路徑的起點(diǎn)和較差路徑的終點(diǎn)、最差路徑等信息。其中,比較重要的是時(shí)序方面的報(bào)告。綜合后會(huì)產(chǎn)生時(shí)序報(bào)告以及相應(yīng)的時(shí)序估計(jì)值。設(shè)計(jì)的實(shí)際時(shí)序狀況依賴于布局布線工具,如果調(diào)整布局布線工具的時(shí)間約束,則可以很容易地讓設(shè)計(jì)的工作頻率在10%~20%的范圍內(nèi)變化。在TimingReport中,設(shè)計(jì)者可以看到用戶要求的工作頻率(RequestedFrequency)和Synplify綜合后系統(tǒng)估計(jì)的最高允許的工作頻率(EstimatedFrequency);同時(shí)也可以看到用戶要求的工作周期(RequestedPeriod)、系統(tǒng)估計(jì)允許的工作周期(EstimatedPeriod)以及裕量(Slack)。其中,裕量?=?要求周期?-?估計(jì)周期。如果裕量大于0,則滿足時(shí)序要求;如果裕量小于0,則不滿足時(shí)序要求。圖7.3-6所示的是時(shí)序報(bào)告。如果裕量小于0,不滿足時(shí)序要求,就要分析長(zhǎng)延時(shí)路徑的起點(diǎn)信息(StartingPointswithWorstSlack),如圖7.3-7所示。ArrivalTime是時(shí)鐘從開始端到達(dá)該路徑終點(diǎn)的延遲時(shí)間(也可以說是傳播時(shí)間)。不符合時(shí)序要求的路徑裕量會(huì)是負(fù)值。同樣,在終點(diǎn)信息的報(bào)告中,相應(yīng)路徑的Slack也是最小的。最差路徑信息是對(duì)最差路徑作的一個(gè)總結(jié),它指出了最差路徑的時(shí)間裕量以及路徑的起點(diǎn)和終點(diǎn)。圖7.3-8顯示的是最差路徑信息。最差路徑通常叫做關(guān)鍵路徑(CriticalPath)。設(shè)計(jì)者通過分析這些路徑,可以尋找到優(yōu)化這些路徑的方法。7.3.2DesignCompiler的使用DesignCompiler是Synopsys公司綜合軟件的核心產(chǎn)品,它提供了約束驅(qū)動(dòng)時(shí)序最優(yōu)化選擇,并支持眾多的設(shè)計(jì)類型,能把設(shè)計(jì)者的HDL描述綜合成與工藝相關(guān)的門級(jí)設(shè)計(jì)。它能夠從速度、面積和功耗等方面來優(yōu)化組合電路和時(shí)序電路設(shè)計(jì),并支持層次化設(shè)計(jì)。DesignCompiler按照所有標(biāo)準(zhǔn)EDA格式讀/寫文件,包括Synopsys內(nèi)部數(shù)據(jù)庫(kù)(.db)和方程式(.eqn)格式。除此之外,DesignCompiler還提供與第三方EDA工具的鏈接,比如布局布線工具,這些鏈接使得DesignCompiler和其他工具實(shí)現(xiàn)了信息共享。通過DesignCompiler,設(shè)計(jì)者可以利用用戶指定的門陣列、FPGA或標(biāo)準(zhǔn)單元庫(kù),生成高速、面積優(yōu)化的ASIC;能夠在不同工藝技術(shù)之間轉(zhuǎn)換設(shè)計(jì);探索設(shè)計(jì)的均衡性,包括延時(shí)、面積和在不同負(fù)載、溫度、電壓情況下的功耗等設(shè)計(jì)約束條件;優(yōu)化有限狀態(tài)機(jī)的綜合,包括狀態(tài)的自動(dòng)分配和狀態(tài)的優(yōu)化。當(dāng)?shù)谌江h(huán)境仍支持延時(shí)信息和布局布線約束時(shí),可將輸入網(wǎng)表和輸出網(wǎng)表或電路圖整合在一起輸入至第三方環(huán)境,自動(dòng)生成和分割層次化電路圖。圖7.3-9所示是DesignCompiler的工作界面。DesignCompiler基本的綜合流程如下。1.編寫HDL文件輸入DesignCompiler的設(shè)計(jì)文件通常都是用諸如VHDL和VerilogHDL等硬件描述語(yǔ)言編寫的。這些設(shè)計(jì)描述必須謹(jǐn)慎地編寫,以獲得可能的最好的綜合結(jié)果。在編寫HDL代碼時(shí),設(shè)計(jì)者需要考慮設(shè)計(jì)數(shù)據(jù)的管理、設(shè)計(jì)劃分和HDL編碼風(fēng)格。劃分和編碼風(fēng)格直接影響綜合和優(yōu)化過程。雖然DesignCompiler的綜合流程中包含該步驟,但實(shí)際上它并不是DesignCompiler的一個(gè)步驟。設(shè)計(jì)者不能用DesignCompiler工具來編寫HDL文件。2.指定庫(kù)選擇File→Setup菜單命令,通過link_library、target_library、symbol_library和synthetic_library命令為DesignCompiler指定鏈接庫(kù)、對(duì)象庫(kù)、符號(hào)庫(kù)和綜合庫(kù)。鏈接庫(kù)和對(duì)象庫(kù)是工藝庫(kù)。對(duì)象庫(kù)是指用RTL級(jí)的HDL描述門級(jí)時(shí)所需要的標(biāo)準(zhǔn)單元綜合庫(kù),它是由芯片制造商(Foundry)提供的,包含了物理信息的單元模型。鏈接庫(kù)可以是同target_library一樣的單元庫(kù),或者是已綜合到門級(jí)的底層模塊設(shè)計(jì),其作用如下:在由下向上的綜合過程中,上一層的設(shè)計(jì)調(diào)用底層已綜合的模塊時(shí),將從link_library中尋找并鏈接起來。符號(hào)庫(kù)定義了設(shè)計(jì)電路圖時(shí)所調(diào)用的符號(hào)。設(shè)計(jì)者在應(yīng)用DesignAnalyzer圖形用戶界面時(shí),就會(huì)用到這個(gè)庫(kù)。另外,設(shè)計(jì)者必須通過synthetic_library命令來指定任何一種特殊的有許可的設(shè)計(jì)工具庫(kù)(不需要指定標(biāo)準(zhǔn)設(shè)計(jì)工具庫(kù))。3.讀入設(shè)計(jì)DesignCompiler使用HDLCompiler將RTL級(jí)設(shè)計(jì)和門級(jí)網(wǎng)表作為設(shè)計(jì)輸入文件讀入。選擇File→Read菜單命令,在打開的文件對(duì)話框中選中要打開的文件,例如選擇shiftregist.v文件。在Log框中出現(xiàn)successfully字樣,表明讀入文件成功。有時(shí)可能要讀入多個(gè)文件,每個(gè)文件中都有電路module,則讀入后要指定這些module中的最頂層module,例如頂層module名是top,則可以鍵入命令current_designtop來指定它。點(diǎn)擊Symbol按鈕,可以查看該電路的Symbol圖,如圖7.3-10所示。如果設(shè)計(jì)者用read_file或read命令讀入RTL設(shè)計(jì),等于實(shí)現(xiàn)了analyze和elaborate命令組合的功能。4.定義設(shè)計(jì)環(huán)境DesignCompiler要求設(shè)計(jì)者模擬出待綜合設(shè)計(jì)的環(huán)境。這個(gè)模型由外部的操作環(huán)境(制造流程、溫度和電壓)、負(fù)載、驅(qū)動(dòng)、扇出、線負(fù)載模型等組成,它直接影響到設(shè)計(jì)綜合和優(yōu)化的結(jié)果。5.設(shè)置設(shè)計(jì)約束設(shè)計(jì)約束定義了時(shí)序(時(shí)鐘、時(shí)鐘錯(cuò)位、輸入延時(shí)和輸出延時(shí))和面積(最大面積)等設(shè)計(jì)目標(biāo)。在最優(yōu)化過程中,DesignCompiler試圖滿足這些目標(biāo),但不會(huì)違反任何設(shè)計(jì)規(guī)則。為能夠正確地優(yōu)化設(shè)計(jì),必須設(shè)置更接近現(xiàn)實(shí)情況的約束。1)設(shè)置時(shí)鐘約束在Symbol圖上選中clk端口,再選擇Attributes→SpecifyClock菜單命令來設(shè)置時(shí)鐘約束,例如設(shè)計(jì)者可以進(jìn)行如下設(shè)置:給時(shí)鐘取名為clock,周期為20ns,上升沿為0ns,下降沿為10ns。然后點(diǎn)擊OK按鈕,時(shí)鐘約束設(shè)置完成。以上操作的相應(yīng)命令是:create_clock-nameclock-period20-waveform{010}[get_portsclk_i]2)設(shè)置復(fù)位信號(hào)約束在Symbol圖上選中rst_n端口(在本例中它是復(fù)位端口),再選擇Attributes→OptimizationDirectives→InputPort菜單命令;勾選Don’ttouchnetwork選項(xiàng),然后點(diǎn)擊OK按鈕。以上操作的相應(yīng)命令是:set_dont_touch_network3)設(shè)置輸入信號(hào)延時(shí)約束在Symbol圖上同時(shí)選中輸入端口,再選擇Attributes→OperatingEnvironment→InputDelay菜單命令。設(shè)置Relativetoclock為clock(即剛才加約束的時(shí)鐘信號(hào)),并設(shè)置上升延時(shí)為12ns(根據(jù)經(jīng)驗(yàn),該值是時(shí)鐘周期的60%,本例中設(shè)置了時(shí)鐘周期為20ns,20?×?0.6?=?12ns)。以上操作的相應(yīng)命令是:set_input_delay4)設(shè)置輸出端口約束在Symbol圖上選中輸出端口,再選擇Attributes→OperatingEnvironment→OutputDelay菜單命令,設(shè)置輸出延時(shí)為8ns。以上操作的相應(yīng)指令是:set_output_delay5)設(shè)置面積約束選擇Attributes→OptimizationConstraints→DesignConstraints菜單命令,設(shè)置Maxarea的值為0,表明讓DC沿電路面積為0的方向優(yōu)化電路,使面積最小。當(dāng)然,面積為0是達(dá)不到的。Maxfanout為4,Maxtransition為0.5(具體含義參見synthesis.pdf)。以上操作的相應(yīng)命令是:set_max_area0,set_max_fanout4,set_max_transition0.56.優(yōu)化設(shè)計(jì)選擇Design→CompileDesign菜單命令,點(diǎn)擊OK按鈕,啟動(dòng)綜合和優(yōu)化進(jìn)程。以上操作的相應(yīng)命令是:compile-map_effortmedium特別地,map_effort選項(xiàng)可以設(shè)置為low、medium或high。初步編譯時(shí),如果設(shè)計(jì)者想對(duì)設(shè)計(jì)面積和性能有一個(gè)快速的了解,則將map_effort設(shè)置為low;默認(rèn)編譯時(shí),如果設(shè)計(jì)者在進(jìn)行設(shè)計(jì)開發(fā),則將map_effort設(shè)置為medium;當(dāng)在進(jìn)行最后設(shè)計(jì)實(shí)現(xiàn)編譯時(shí),則將map_effort設(shè)置為high。通常設(shè)置map_effort為medium。7.查看報(bào)告通常DesignCompiler根據(jù)設(shè)計(jì)綜合和優(yōu)化的結(jié)果生成眾多的報(bào)告,設(shè)計(jì)者根據(jù)諸如面積、約束和時(shí)序報(bào)告來分析和解決任何的設(shè)計(jì)問題,或者改進(jìn)綜合結(jié)果。選擇Design→ReportArea菜單命令,點(diǎn)擊OK按鈕,查看面積報(bào)告,如圖7.3-11所示。相應(yīng)的命令為report_area。報(bào)告總面積為1092.608009,單位是平方微米。選擇Design→ReportConstraints,點(diǎn)擊OK按鈕,查看約束報(bào)告。相應(yīng)的命令為report_constraint-all_violators。從圖7.3-12可以看出,max_area(最大面積)一項(xiàng)約束不滿足。因?yàn)槲覀冊(cè)O(shè)置的最大面積約束是0,而實(shí)際綜合出的電路面積是1092.61平方微米,所以該項(xiàng)violator是合理的。如果是較為復(fù)雜的設(shè)計(jì)代碼,還會(huì)有max_fanout這一項(xiàng)約束不滿足。由于rst_i是復(fù)位信號(hào),故其扇出非常高,同時(shí)由于之前對(duì)rst_i信號(hào)設(shè)置了don’t_touch,DC在綜合的過程中沒有對(duì)該信號(hào)進(jìn)行優(yōu)化,在DRC的時(shí)候會(huì)違反設(shè)定的max_fanout(最大扇出),所以該項(xiàng)violator也是合理的。如果還存在其他violators,說明前面的約束設(shè)置不合理或電路設(shè)計(jì)不合理,需要對(duì)其進(jìn)行修改。選擇Design→ReportTiming,點(diǎn)擊OK按鈕,查看時(shí)序報(bào)告。其相應(yīng)的命令為report_timing。報(bào)告的是最大延時(shí)路徑,這里看到圖7.3-13中所標(biāo)slack值為6.61,是正值,說明電路滿足時(shí)序要求。如果該值是負(fù)的,就表明電路不滿足前面所設(shè)定的時(shí)序約束條件,要更改原設(shè)計(jì)或調(diào)整約束。8.保存設(shè)計(jì)數(shù)據(jù)

利用write命令可保存綜合過的設(shè)計(jì)。DesignCompiler在退出時(shí)并不自動(dòng)保存設(shè)計(jì)。在使用Synplify或DesignCompiler對(duì)設(shè)計(jì)進(jìn)行約束時(shí),如果對(duì)電路結(jié)構(gòu)不熟悉,就不要進(jìn)行過多的約束。約束越多,意味著使用者必須對(duì)自己的設(shè)計(jì)越了解;不恰當(dāng)?shù)募s束不僅不能優(yōu)化綜合結(jié)果,反而會(huì)帶來負(fù)面影響。7.4布局布線工具及后仿真7.4.1工具簡(jiǎn)介本小節(jié)以Altera公司的QuartusⅡ軟件為例介紹用于數(shù)字集成電路設(shè)計(jì)的自動(dòng)布局布線及后仿真流程。QuartusⅡ是一個(gè)完全集成化的可編程邏輯設(shè)計(jì)環(huán)境,軟件界面友好,使用便捷,功能強(qiáng)大,具有開放性、與結(jié)構(gòu)無關(guān)、多平臺(tái)、完全集成化、豐富的設(shè)計(jì)庫(kù)、模塊化工具等特點(diǎn),支持原理圖、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多種設(shè)計(jì)輸入形式,內(nèi)嵌綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。此外,QuartusⅡ通過DSPBuilder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺(tái);提供FPGA與Mask-ProgrammedDevices開發(fā)的統(tǒng)一工作流程。1.支持的器件QuartusⅡ的不同版本軟件可以支持Altera公司的MAX3000A系列、MAX7000系列、MAX9000系列、ACEX1K系列、APEX20K系列、APEXⅡ系列、FLEX6000系列、FLEX10K系列和MAX7000/MAX3000等乘積項(xiàng)器件,并支持MAXⅡCPLD系列、Cyclone、CycloneⅡ/Ⅲ/Ⅳ/Ⅴ、StratixⅡ/Ⅲ/Ⅳ/Ⅴ等,還支持IP核,用戶可以充分利用成熟的模塊,簡(jiǎn)化設(shè)計(jì)的復(fù)雜性,加快設(shè)計(jì)速度。2.對(duì)第三方EDA工具的支持QuartusⅡ軟件并不直接集成第三方軟件,而僅僅提供與這些EDA工具的接口。用來實(shí)現(xiàn)這種鏈接的工具是NativeLink。NativeLink能實(shí)現(xiàn)第三方工具與QuartusⅡ的無縫交互,雙方在后臺(tái)進(jìn)行參數(shù)行和命令的溝通,使用者完全不必在意NativeLink操作的具體細(xì)節(jié)。它提供給用戶的是具有良好互動(dòng)性的用戶界面,設(shè)計(jì)人員甚至可以在任何一方工具中完成整個(gè)操作流程。QuartusⅡ集成設(shè)計(jì)環(huán)境對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各階段使用熟悉的第三方EDA工具,如使用ModelSim對(duì)邏輯進(jìn)行仿真驗(yàn)證,使用SynplifyPro進(jìn)行邏輯綜合。常用第三方EDA工具的使用方法可參照7.2節(jié)和7.3節(jié)。3.QuartusⅡ用戶界面正確安裝QuartusⅡ集成設(shè)計(jì)環(huán)境(本小節(jié)以QuartusⅡ13.0版本為例)后,雙擊桌面圖標(biāo)

,啟動(dòng)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論