Verilog HDL數(shù)字集成電路高級程序設計課件:仿真測試工具和綜合工具_第1頁
Verilog HDL數(shù)字集成電路高級程序設計課件:仿真測試工具和綜合工具_第2頁
Verilog HDL數(shù)字集成電路高級程序設計課件:仿真測試工具和綜合工具_第3頁
Verilog HDL數(shù)字集成電路高級程序設計課件:仿真測試工具和綜合工具_第4頁
Verilog HDL數(shù)字集成電路高級程序設計課件:仿真測試工具和綜合工具_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

仿真測試工具和

綜合工具11/11/202417.1數(shù)字集成電路設計流程簡介11/11/202427.1.1設計規(guī)范

設計規(guī)范文件是一個包含功能、定時、硅片面積、功耗、可測性、故障覆蓋率以及其它的設計準則的詳細說明書。設計規(guī)范描述了項目完成的功能,確定設計的總體方案,平衡各個方面的因素,對整個項目有一個初步的規(guī)劃。在系統(tǒng)設計階段,根據(jù)對設計面積、功耗、I/O和IP使用等情況進行估算,確定所使用的芯片工藝和設計工具。7.1.2設計劃分設計劃分過程就是把一個復雜設計逐漸劃分成較小而且較為簡單的功能單元。這樣一個過程通常被稱為自頂向下的設計方法,或者是分層設計法。11/11/202437.1.3設計輸入

設計輸入是指將設計劃分階段定義好的模塊借助一定的設計輸入手段轉換為EDA工具能接受的信息格式。目前主要的設計輸入手段有:高級硬件描述語言HDL(VerilogHDL/VHDL)和原理圖。HDL語言支持不同層次的描述,不依賴于各個廠家的工藝器件,便于修改。

邏輯輸入工具的功能是把邏輯圖,狀態(tài)機,真值表,輸入到計算機中,并進行語法、可綜合性檢查等。目前主流工具有Cadence公司的Composer,Synopsys公司Leda以及UltraEdit,Vim等第三方的編輯工具。11/11/202447.1.4仿真

驗證是指通過仿真軟件驗證其功能是否符合制定的設計規(guī)范,這一階段的驗證常被稱為功能仿真或行為仿真。

仿真的結果取決于設計描述是否準確反映了設計的物理實現(xiàn)。仿真器不是一個靜態(tài)工具,需要Stimulus和Response。Stimulus由模擬設計工作環(huán)境的testbench產(chǎn)生,Response為仿真的輸出,由設計者確定輸出的有效性。目前,仿真工具比較多,其中Cadence公司的NC-VerilogHDL,Synopsys公司的VCS和Mentor公司的Modelsim都是業(yè)界廣泛使用的仿真工具。7.1.5綜合

綜合實際上是根據(jù)設計功能和實現(xiàn)該設計的約束條件(如面積、速度、功耗和成本等),將設計描述(如HDL文件、原理圖等)變換成滿足要求的電路設計方案,該方案必須同時滿足預期的功能和約束條件。

目前常用的邏輯綜合工具有Synopsys公司的Synplify和DesignCompiler,PhysicalCompiler,Cadence公司的RTLCompiler等。11/11/202457.1.6適配布線

按照特定的工藝要求和約束條件利用適配器進行布局布線,最后生成版圖。對于芯片設計來講,這個過程通常分3步:(1)布局規(guī)劃。主要是標準單元、I/OPad和宏單元的布局。(2)時鐘樹生成(CTSClockTreeSynthesis)。(3)布局布線。

適配完成后,產(chǎn)生多項設計結果:(1)適配報告。(2)適配后的仿真模型。(3)器件編程文件。

在FPGA設計中各個廠家都提供了相應的布局布線工具,例如Altera公司的QuartusII,Xilinx公司的ISE等。在芯片設計領域,有Cadence公司提供的SOCEncounter和Synopsys公司的Astro等布局布線工具。11/11/202467.1.7時序分析

時序驗證的目的是為了檢查設計中是否有時序上的違規(guī)。同步電路的驗證采用靜態(tài)時序分析實現(xiàn),異步電路的驗證則需要運行特殊仿真激勵確認。仿真工具可以用前仿真所用的工具。

靜態(tài)時序分析(STA)的功能是根據(jù)設計規(guī)范的要求檢查所有可能路徑的時序,不需要通過仿真或測試向量就可以有效地覆蓋門級網(wǎng)表中的每一條路徑,在同步電路設計中快速地找出時序上的異常。

可以識別的時序故障包括:建立/保持和恢復/移除檢查(包括反向建立/保持);最小和最大跳變;時鐘脈沖寬度和時鐘畸變;門級時鐘的瞬時脈沖檢測;總線競爭與總線懸浮錯誤;不受約束的邏輯通道;計算經(jīng)過導通晶體管、傳輸門和雙向鎖存的延遲;自動對關鍵路徑、約束性沖突、異步時鐘域和某些瓶頸邏輯進行識別與分類。 PrimeTime是Synopsys公司開發(fā)的進行靜態(tài)時序分析(STA)的工具,它可以進行精確的RC延遲計算,先進的建模和時序驗收11/11/202477.1.8物理驗證

物理驗證通常包括設計規(guī)則檢測(DRC)、版圖與原理圖對照(LVS)和信號完整性分析(SI)等。

目前主要的物理驗證工具有Mentor公司的Calibre,Cadence公司的Dracula和Diva以及Synopsys公司的Hercules。此外各大廠商也推出了針對信號完整性分析的工具。11/11/202487.1.9設計結束

在所有設計約束都已滿足,也達到了定時約束條件的情況下,就會發(fā)出最終設計結束的信號。這時可用于制造集成電路的掩膜集就準備好了。掩膜集的描述是由幾何數(shù)據(jù)(通常為GDS-II格式)構成的,這些數(shù)據(jù)決定了集成電路制造過程中的光掩膜步驟的順序。

將適配器布局布線后形成的器件編程文件通過下載工具載入到具體的FPGA或CPLD芯片中,可以方便的實現(xiàn)設計要求。如果是大批量產(chǎn)品開發(fā),通過更換相應的廠家綜合庫,便可以轉由ASIC實現(xiàn)。11/11/202497.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等。11/11/202410 Modelsim仿真器在FPGA/CPLD設計中應用廣泛,這是因為Modelsim的出品公司為各種FPGA/CPLD廠家提供了OEM版本的Modelsim工具。Modelsim仿真器可以用于仿真VerilogHDL語言,也可以用于仿真VHDL語言,同時也支持兩種語言混合仿真。 NCsim(根據(jù)使用語言不同分為NC-Verilog和NC-VHDL)和VCS分別由知名的EDA工具廠商Cadence和Synopsys公司提供,在IC設計中應用廣泛。11/11/2024117.2.1Modelsim的使用11/11/2024121.建立庫并映射建立并映射庫有兩種方法:在Modelsim中選擇File/New/Library,在彈出的對話框中填入庫名稱,點擊OK就完成了庫的建立和映射。在Modelsim>提示符下運行命令:vlibwork2vmapworkwork22.新建工程項目選擇下拉菜單File/New/Project命令,新建一個工程。在ProjectName中輸入工程名,在ProjectLocation下的對話框中,輸入保存該工程所有文件的文件夾的路徑名。DefaultLibraryName對話框使用默認設置work即可。11/11/2024133.輸入源代碼選擇主控Main窗口的下拉菜單File/New/Source/VerilogHDL選項,出現(xiàn)源代碼編輯窗口。將源代碼輸入并保存。源代碼文件shiftregist.v如下:moduleshiftregist(data_out,clk,rst_n,load,data_load,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftleft);parametershiftregist_width=4;output[shiftregist_width-1:0]data_out;input[shiftregist_width-1:0]data_load;inputload,clk,rst_n,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftleft;reg[shiftregist_width-1:0]data_out;always@(posedgeclkornegedgerst_n)

if(!rst_n)data_out<=0;

elseif(load)data_out<=data_load;

elseif(ctr_shiftright)data_out<={data_shiftright,data_out[shiftregist_width-1:1]};

elseif(ctr_shiftleft)data_out<={data_out[shiftregist_width-2:0],data_shiftleft};

elsedata_out<=data_out;endmodule11/11/2024144.將文件添加到工程中剛才輸入的文件已經(jīng)保存在當前Project的文件夾中。在Main窗口選擇Project/AddtoProject/ExistingFile…選項將文件添加到工程中。5.編譯源代碼在Workplace窗口Project對話框中選中shiftregist.v,然后在主控Main窗口中選中Compile/Compileselected選項對源代碼進行編譯。編譯成功后,transcript對話框中將報告“#Compileofshiftregist.vwassuccessful”。如果當前工程中有多個.v文件,則可以選擇Compile/Compileselected選項完成對源代碼文件的批量編譯,也可以一次選擇多個文件進行編譯。11/11/2024156.建立并添加測試文件用VerilogHDL編寫測試激勵文件,然后進行仿真的操作。先輸入測試激勵文件,然后進行仿真的操作。先輸入測試激勵文件的源代碼,并存盤;然后將該文件添加到當前的工程項目中,再對該文件進行編譯,其操作過程與前面介紹的相同。帶控制端的移位寄存器的測試激勵源代碼文件testbench_shiftregist.v如下:moduletestbench_shiftregist;parametershiftregist_width=4;reg[shiftregist_width-1:0]data_load;regload,clk,rst_n,ctr_shiftright,ctr_shiftleft,data_shiftright,data_shiftleft;wire[shiftregist_width-1:0]data_out;always#5clk=~clk;initialbegindata_load=0;load=0;rst_n=1;ctr_shiftright=0;ctr_shiftleft=0;clk=0;data_shiftright=0;data_shiftleft=0;end11/11/202416initialbegin#10rst_n=0;#3rst_n=1;endinitialbegin#15load=1;data_load=4'b1010;#10load=0;endinitialbegin#30ctr_shiftright=1;#20data_shiftright=1;#20ctr_shiftright=0;#20ctr_shiftleft=1;#25data_shiftleft=1;#20data_shiftleft=0;endshiftregistU1(.clk(clk),.rst_n(rst_n),.load(load),.ctr_shiftright(ctr_shiftright),.ctr_shiftleft(ctr_shiftleft),.data_shiftright(data_shiftright),.data_shiftleft(data_shiftleft),.data_load(data_load),.data_out(data_out));endmodule11/11/2024177.打開仿真器在主控窗口中選擇Simulate/StartSimulation…命令,得到仿真設置對話框(注意:將當前工作庫work前面的加號“+”點開,選擇testbench_shiftregist作為頂層文件進行仿真)。在Design選項卡相應的庫名下選擇testbench_shiftregist模塊,再單擊OK按鈕。下圖顯示的就是打開仿真器后的界面。11/11/2024188.打開調試窗口在Modelsim的Main窗口的View下面有各種全面反映用戶設計模塊的各個方面的特性與內容的窗口,非常便于用戶管理和調試。用戶對一個窗口的修改將會自動影響到相關窗口的變化,同時用戶也可以方便地利用鼠標在窗口之間進行選擇和拖放。打開窗口的操作方法是:在主控Main窗口的View下拉菜單中,單擊相應的窗口名即可。已打開的窗口名前有“√”符號提示,再次單擊該窗口名將關閉相應窗口,前面的“√”符號也將消失。例如,選擇View/Wave命令,將打開仿真波形窗口等。11/11/2024199.添加需要觀察的信號

在Workplace窗口的sim對話框中單擊需要觀察的模塊名,在Objects窗口中則會列出該模塊的各個端口名及內部信號。可以單擊選中其中一個需要觀察的信號名,如果按住Ctrl鍵,則可以通過單擊選中多個需要觀察的信號名,然后在選擇下拉菜單Add/Wave/SlectedInstance命令打開Wave窗口,而且剛才被選中的信號已經(jīng)被添加到Wave窗口中。設計者還可以根據(jù)調試和測試需要,刪除Wave窗口中的信號,或向其中添加新的信號。11/11/20242010.運行仿真器在主控Main窗口的下拉菜單Simulate選項下有控制仿真器運行的多個命令選項。點擊Simulate/Run,仿真會運行100ns(默認的仿真長度)后停止。在主窗口的VSIM>提示符下,輸入“run500”,仿真器會再進行另外500ns的仿真,共計仿真了600ns。在主菜單、波形窗口或源代碼窗口的工具條上,單擊Run-all圖標,仿真連續(xù)運行,直到被中斷或在代碼中遇到諸如VerilogHDL中的$stop語句等,暫停仿真。單擊break圖標,終止仿真運行。在主控Main窗口中,單擊Simulate/EndSimulation…選項,即可結束仿真。11/11/20242111.調試debugModelsim的調試手段有很多,主要包括:在代碼中設置斷點、步進調試;觀察波形窗口(Wave),測量時間;通過數(shù)據(jù)流窗口(Dataflow),分析物理連接;通過Memory窗口,觀察設計中存儲器的數(shù)值;統(tǒng)計測試代碼覆蓋率;波形比較。利用Wave窗口、Dataflow窗口和List窗口是常用的分析手段。11/11/202422(1)使用波形窗口觀察設計波形是調試設計的一種方法,加載仿真后,就可以使用波形窗口了??梢杂貌藛蝪iew/wave打開波形窗口,圖7.2-3是波形窗口打開之后的界面。在波形窗口中可以采用向波形窗口添加項目,對波形顯示的圖像縮放,在波形窗口中使用游標,設置斷點,存儲波形窗口格式,將當前的仿真結果存儲到波形記錄格式文件(WLF)中等手段進行調試。11/11/202423Modelsim中保存波形文件大致有以下三種方法:Format文件:在波形窗口的主菜單中選擇File/Save保存waveformat,在新打開的窗口中填入DO文件的存儲路徑E:/shiftregist/wave.do,單擊OK完成文件存儲。如果需要加載該文件,在打開的波形窗口中選擇“FileOpenFormat”,在OpenFormat窗口中選擇wave.do文件,單擊Open按鈕打開該文件。Modelsim將恢復該窗口的信號和游標的前一次狀態(tài)。WLF文件(Datasets):Modelsim仿真結果也可以存儲到一個波形格式記錄文件中,用于以后瀏覽和與當前的仿真結果的比較。通常使用術語“Dataset”表示已創(chuàng)建并可重加載的WLF文件。可在主菜單中選擇“File/Datasets/Saveas”,在Saveas對話框中輸入要保存的波形文件名稱,點擊OK就完成了波形文件的保存。使用File/datasets/open,在彈出的OpenDataset對話框中在Browse中輸入dataset的路徑,即可打開以保存的波形文件。11/11/202424VCD文件:VCD文件是一個IEEE1364標準(VerilogHDL語言標準)中定義的一種ASCII文件。它是一種EDA工具普遍支持的通用的波形信息記錄文件。在前面的章節(jié)的內容已經(jīng)詳細介紹了如何使用VerilogHDL中的系統(tǒng)函數(shù)來dumpVCD文件。11/11/202425(2)使用數(shù)據(jù)流窗口Dataflow窗口能夠對VHDL信號或者VerilogHDL的線網(wǎng)型變量進行圖示化追蹤,在界面中驅動信號或驅動線網(wǎng)變量的進程顯示在左邊,反之被驅動信號顯示在右邊??梢酝ㄟ^雙擊Wave窗口中需要追蹤的信號打開Dataflow窗口。下圖顯示的是數(shù)據(jù)流窗口的界面。11/11/202426數(shù)據(jù)流窗口有四個功能:觀察設計的連續(xù)性:可以檢查設計的物理連接性,可以逐個單元地觀測所關注的信號、互聯(lián)網(wǎng)絡或寄存器的輸入/輸出情況。追蹤事件:跟蹤一個非預期輸出的事件,使用嵌入波形觀察器,可以由一個信號的跳變回溯追蹤,查到事件源頭。追蹤未知態(tài):數(shù)據(jù)流窗口追蹤不定態(tài)的功能是工程師比較親睞的,在Dataflow窗口中使用Trace/ChaseX功能,會不斷往驅動級追蹤不定態(tài)傳遞的源頭。當選擇ChaseX時,圖形界面不再變化時,就是不定態(tài)的源頭了。之后就可以根據(jù)數(shù)據(jù)流窗口的結果,去定位源代碼產(chǎn)生不定態(tài)的語句,并加以改正。顯示層次結構:可以使用層次化實例顯示設計的連通性。11/11/202427(3)使用列表窗口List窗口以表格化的方式顯示數(shù)據(jù),可以方便的通過搜索特殊值或者特定條件的數(shù)據(jù),簡化分析數(shù)據(jù)的過程??梢杂胿iew/list打開List窗口。在List窗口的左邊顯示的是仿真的時間點,右邊顯示的是每個時間點對應的變量值。圖7.2-5顯示的是列表窗口。11/11/202428(3)使用列表窗口List窗口以表格化的方式顯示數(shù)據(jù),可以方便的通過搜索特殊值或者特定條件的數(shù)據(jù),簡化分析數(shù)據(jù)的過程??梢杂胿iew/list打開List窗口。在List窗口的左邊顯示的是仿真的時間點,右邊顯示的是每個時間點對應的變量值。下圖顯示的是列表窗口。11/11/202429與Wave窗口一樣,List窗口可以保持數(shù)據(jù)的列表格式和列表內容。在List窗口中選擇File/Save,在彈出的SaveFormat對話框中輸入保存列表的名稱,點擊保存就可以了。數(shù)據(jù)列表也是一個.do的可執(zhí)行腳本文件,可以通過命令dofile_name.do打開列表文件。在File/WriteList選項下選擇一種格式,完成對列表內容的保存。列表內容文件是lst格式的文件,要查看文件內容是可通過記事本打開該文件。11/11/20243012.Modesim常用交互命令Modelsim圖形提供了多種指令,既可以是單步指令,通過在主窗口的命令窗口中輸入命令;也可以構成批處理文件(如DO文件),用來控制編輯、編譯和仿真流程。run指令指令格式:Run[<timesteps>][<time_unit>]其中,參數(shù)timesteps(時間步長)和time_unit(時間單位)是可選項,time_unit可以是fs(10-15s),ps(10-12s),ns(10-9s),ms(10-6s),sec(s)這幾種。例如,“run”表示運行;“run1000表示運行1000個默認的時間單元(ps)”;“run3500ns”表示運行3500ns;“run-continue”表示繼續(xù)運行;“run-all”表示運行全程。11/11/202431force指令指令格式:force<item_name><value>[<time>],[<value>][<time>]其中,參數(shù)item_name不能默認,它可以是端口信號,也可以是內部信號,而且還支持通配符號,但只能匹配一個;參數(shù)value也不能默認,其類型必須與item_name一致;time是可選項,支持時間單元。例如,“forceclr1”;“forceclr1100”表示經(jīng)歷100個默認時間單元延遲后為clr賦值為1;“forceclr1,01000”表示為clr賦值1后,經(jīng)歷1000默認時間單元延遲后為clr賦值0。11/11/202432force-repeat指令格式:force<開始時間><開始電平值>,<結束電平值><忽略時間>-repeat<周期>指令功能:每隔一定的周期(period)重復一定的force命令。該指令常用來產(chǎn)生時鐘信號。例如,“forceclk00,130-repeat100”(-repeat指令可以用-r替代)表示強制clk從0時間單元開始,起始電平為0,結束電平為1,忽略時間(即0電平保持時間)為30個默認時間單元,周期為100個默認時間單元,占空比為(100-30)/100=70%。11/11/202433force-cancel指令指令格式:force-cancel<period>指令功能:執(zhí)行period周期時間后取消force命令。例如,“forceclk00,130-repeat60-cancel1000”表示強制clk從0時間單元開始,直到1000個時間單元結束。view指令指令格式:view窗口名指令功能:打開Modelsim的窗口例如,“viewsource”是打開源代碼窗口;“viewwave”是打開波形窗口;“viewdataflow”是打開數(shù)據(jù)流窗口。11/11/20243413.DO文件在Modelsim中創(chuàng)建一個DO文件,在該DO文件中要完成向波形窗口添加信號,并給這些信號提供激勵,而后進行仿真。

選擇File/New/Source/Do,創(chuàng)建一個DO文件。在窗口中敲入以下命令行:vlibwork//新建work庫vmapwork//將work庫映射到當前工作目錄vlogshiftregist.vtestbench_shiftregist.v//編譯shiftregist.vtestbench_shiftregist.v文件vsimshiftregist.v//仿真work庫中名為testbench_shiftregist模塊addwave/testbench_shiftregist.v/*//將testbench_shiftregist所有信號加入到波形圖中run2000viewdataflow將以上文件保存為shiftregist.do文件,每次用命令doshiftregist.do就可以自動執(zhí)行想要的仿真動作。11/11/2024357.2.2NC-Verilog的使用1.工作模式的選擇運行NCsim的命令是nclunch。第一次運行NCSim的時候,需要用戶選擇工作模式。這里可供選擇的主要是MultipleStep和SingleStep,請選擇Multiple模式,此模式對應的仿真流程是ncvlog、ncelab、ncsim三步。對于兩種工作模式在參考手冊內有詳細說明。右圖顯示的是NC-Verilog的啟動界面。11/11/2024362.建立工作環(huán)境選擇File/SetDesignDirectory菜單進行設置,彈出的對話框會要求填寫如下的選項。DesignDirectory:一般就是項目所在的目錄,即啟動nclaunch時所在的目錄。LibraryMappingFile:點擊“Createcds.libFile”按鈕,會彈出一個“Createacds.libfile”的對話框,里面的文件名是“cds.lib”,選擇“Save”,此時在彈出的對話框中選擇“IncludeDefualtLibraries”,將會在當前項目目錄下建立INCA_lib文件夾用來保存整個設計中全部的庫信息;WorkLibrary:在建立了cds.lib之后將出現(xiàn)worklib的默認選項,無需更改。11/11/2024373.編譯用鼠標左鍵選擇Nclaunch左面窗口里的源文件“counter.v”,“counter_tb.v”可以按ctrl鍵以同時選擇多個文件。第一次編譯的時候選Tool/VerilogHDLCompiler菜單,以后就可以直接點擊工具欄中的“vlog”按鈕。編譯文件。特別注意,請在編譯成功第一個文件后,重新載入工作目錄(File/SetDesignDirectory)以確保警告消失。11/11/2024384.載入設計文件

用鼠標左鍵選擇Nclaunch右面窗口里工作目錄(worklib)下的頂層實體worklib/counter_tb/module。選Tool/Elaborator菜單,在彈出的對話框里選中“Accessvisibility”的READ屬性,然后確定。載入設計文件后的NC界面如右圖所示。11/11/2024395.仿真

用鼠標左鍵選擇Nclaunch右面窗口里snapshots里的頂層實體的實體對snapshots/worklib.shiftregist_tb:module)選Tool/Simulator菜單,在彈出的對話框里選“確定”,將彈出仿真器窗口。彈出的默認窗口有兩個,點擊DesignBrowser/SimVision窗口的工具欄中的波形按鈕開啟波形仿真窗口。在DesignBrowser/SimVision窗口內展開左邊瀏覽器中的Simulator在右邊的列表中選擇希望觀察的信號,選中后,點擊鼠標右鍵選擇sendtoWaveformWindows。根據(jù)實際波形的需要,在Waveform/SimVision窗口內把時間顯示單位煥成us、ns或ps,然后開始仿真,有兩種方法:選擇Simulation/Run或者直接點擊工具欄中“開始”按鈕開始波形仿真。如果加入了新的信號,需要重新仿真點擊復位,然后再次仿真。在Console窗口直接輸入命令,仿真一段時間,例如:run2000ns11/11/2024407.3綜合工具邏輯綜合是前端電路模塊設計的重要步驟之一,邏輯綜合在標準單元庫和特定的設計約束的基礎上,把設計的高層次描述轉換成優(yōu)化的門級網(wǎng)表的過程。DesignCompiler是Synopsys公司用于電路邏輯綜合的核心工具,它可以方便地將HDL語言描述的電路轉換到基于工藝庫的門級網(wǎng)表,它是ASIC設計領域使用較多的邏輯綜合工具之一。在FPGA邏輯綜合領域存在多種邏輯綜合工具,其中Synplify以其邏輯綜合速度快、邏輯綜合效果好而備受關注,成為FPGA設計邏輯綜合和常用工具。11/11/2024417.3.1Synplify的使用11/11/2024421.創(chuàng)建工程

在File菜單選擇“New”,選擇“ProjectFile”,然后填入工程名,點擊“OK”保存。創(chuàng)建工程后,其中rev_1表示版本一,Synplify允許對同一個設計根據(jù)不同的綜合約束條件,創(chuàng)建多個不同的綜合版本。2.添加文件接下來的步驟是把設計的源文件添加到工程中,設計文件可以是一個,也可以是多個。添加方法是選擇Project/AddSourceFile或者軟件界面左邊的“AddFile”按鈕,在彈出的對話框中選擇要添加的源文件即可。如果事先沒有源文件,可以選擇新建“VHDL”或者“VerilogHDL”源文件,然后在HDL編輯器中編寫代碼并保存。11/11/2024433.保存工程點擊工具欄中save的圖標,對工程及源文件進行保存。4.語法和綜合檢測可以用“RUN”菜單中的“Syntaxcheck”和“Synthesis”對源程序進行檢測,檢測的結果保存在“Syntax.log”文件中,如果有錯誤用紅色標出。雙擊可以對錯誤進行定位。另外,在RUN菜單中的compileronly也可以對源文件進行檢測。11/11/2024445.編譯綜合前的設置選擇“Project”菜單中的“ImplementationOptions”或者軟件界面左側的“ImplementationOptions”按鈕,即可出現(xiàn)設置對話框。在設置對話框中設計者可以選擇器件、添加一些簡單約束等。選擇“AlteraCycloneII”器件,在選擇器件的同時,還可以對與器件映射有關的選項進行設定,包括最大扇出、IO、Pipelining等。在“options”中可以對“PhysicalSynthesis”、“FSMcompiler”、“ResourceSharing”、“Retiming”等優(yōu)化選項進行設定。在“Constraints”中可以對時鐘頻率進行約束。在“TimingReport”中可以設定關鍵路徑的數(shù)量。在“VerilogHDL”中的“TopLevelModule”中填入shiftregist。11/11/2024456.編譯選擇菜單“RUN”中的“compileronly”就可以對設計進行單獨編譯。在編譯后產(chǎn)生的文件中擴展名為“srr”的文件是工程報告文件,包括工程檢錯、編譯、綜合和時序等所有工程信息。擴展名為“tlg”的文件是工程組織結構信息文件。擴展名為“srs”的為RTL視圖文件,是設計者經(jīng)常要檢查的一個。雙擊該文件或者點擊工具欄的

圖標,移位寄存器的RTL視圖如下圖所示。11/11/2024467.綜合選擇菜單“Run”中的“Synthesize”或者面板上的“Run”按鈕,就進行了綜合。綜合后主要產(chǎn)生了設計的門級網(wǎng)表,門級網(wǎng)表可以拿到布局布線工具中進行設計的最后實現(xiàn)。綜合后還產(chǎn)生了一些其它的文件,包括綜合報告、Log文件、腳本文件等。綜合后已經(jīng)根據(jù)所選的器件產(chǎn)生了門級電路,設計者可以通過Technology視圖功能觀察門級電路,方法是選擇菜單“HDLAnalyst/RTL/HierarchicalView”,或者點擊工具欄的

圖標即可,這種方法可以查看層次結構顯示的工藝相關的綜合結果。移位寄存器的Technology視圖如下圖所示。11/11/202447在Technology視圖下可以利用Push/Pop層次功能進入硬件的更底層,也可以在此圖上顯示關鍵路徑;還可以把Technology視圖展平成門級,方法是選擇“HDLAnalyst/RTL/FlattenedtoGatesView”,如下圖所示可查看到門級電路的工藝相關綜合結果。11/11/2024488.分析綜合結果綜合通過后,設計者可以點擊“ViewLog”按鈕來查看綜合報告。綜合報告包括了如圖所示的信息。通過檢查綜合結果,檢查系統(tǒng)設計是否滿足要求,如系統(tǒng)時鐘頻率是否達到要求,資源消耗了多少等等。同時還可以找出系統(tǒng)設計中存在的問題,如較差路徑的起點和較差路徑的終點、最差路徑等信息。其中,比較重要的是時序方面的報告。下圖展示了綜合報告所包含的信息。11/11/202449綜合產(chǎn)生的時序報告時估計值,設計的實際時序狀況極度程度的依賴于布局布線工具,如果調整布局布線工具的時間約束,可以很容易的讓設計的工作頻率在10%~20%的范圍內變化。在TimingReport中設計者可以看到用戶要求的工作頻率(RequestedFrequency)和Synplify綜合后系統(tǒng)估計最高允許的工作頻率(EstimatedFrequency)。同時也可以看到用戶要求的工作周期(RequestedPeriod)、系統(tǒng)估計允許的工作周期(EstimatedPeriod)以及裕量(Slack)。其中裕量=要求周期-估計周期。如果裕量大于0,則滿足時序要求,如果裕量小于0,則不滿足時序要求。圖7.3-6所示的是時序報告。11/11/202450如果裕量小于0,不滿足時序要求時,就要分析較差路徑的起點信息(StartingPointswithWorstSlack)如圖7.3-7所示。ArrivalTime是時鐘從開始端到達該路徑終點的延時時間(也可以說是傳播時間)。最差路徑的裕量是最小的,在不符合時序要求時最差路徑的裕量會是負值。同樣在最差路徑的終點信息的報告中,最差路徑的Slack也是最小的,在不符合時序要求時最差路徑的裕量也是負值。11/11/202451最差路徑信息是對最差路徑做的一個總結,指出最差路徑的時間裕量以及路徑的起點和終點。圖7.3-8顯示的是最差路徑信息。這條最差路徑通常叫做關鍵路徑(criticalpath)。設計者可以通過分析這些路徑,尋找到優(yōu)化這些路徑的方法。11/11/2024527.3.2DesignCompiler的使用11/11/2024531.編寫HDL文件輸入DesignCompiler的設計文件通常都是用諸如VHDL和VerilogHDL等硬件描述語言編寫。這些設計描述必須小心地編寫以獲得可能的最好的綜合結果。在編寫HDL代碼時,設計者需要考慮設計數(shù)據(jù)的管理、設計劃分和HDL編碼風格。劃分和編碼風格直接影響綜合和優(yōu)化過程。雖然流程中包含該步驟,但實際上它并不是DesignCompiler的一個步驟。設計者不能用DesignCompiler工具來編寫HDL文件。11/11/2024542.指定庫選擇File/Setup,通過link_library,target_library,symbol_library和synthetic_library命令為DesignCompiler指定鏈接庫、對象庫、符號庫和綜合庫。鏈接庫和對象庫是工藝庫,對象庫是指將RTL級的HDL描述門級時所需要的標準單元綜合庫,它是由芯片制造商(Foundry)提供的,包含了物理信息的單元模型。鏈接庫可以是同target_library一樣的單元庫,或者是已綜合到門級的底層模塊設計,其作用如下:在由下向上的綜合過程中,上一層的設計調用底層已綜合的模塊時,將從link_library中尋找并鏈接起來。符號庫定義了設計電路圖所調用的符號。如果設計者想應用DesignAnalyzer圖形用戶界面,就需要這個庫。另外,設計者必須通過synthetic_library命令來指定任何一種特殊的有許可的設計工具庫(不需要指定標準設計工具庫)。11/11/2024553.讀入設計DesignCompiler使用HDLCompiler將RTL級設計和門級網(wǎng)表作為設計輸入文件讀入。選擇File/Read,在打開的文件對話框中選中要打開的文件,例如設計者選擇shiftregist.v文件。在Log框中出現(xiàn)successfully字樣表明讀入文件成功。

點擊symbol按鈕可以查看該電路的symbol圖。如果設計者用read_file或read命令讀入RTL設計,等于實現(xiàn)了analyze和elaborate命令組合的功能。4.定義設計環(huán)境DesignCompiler要求設計者模擬出待綜合設計的環(huán)境。這個模型由外部的操作環(huán)境(制造流程、溫度和電壓)、負載、驅動、扇出、線負載模型等組成。它直接影響到設計綜合和優(yōu)化的結果。11/11/2024565.設置設計約束最優(yōu)化約束則定義了時序(時鐘、時鐘錯位、輸入延時和輸出延時)和面積(最大面積)等設計目標。在最優(yōu)化過程中,DesignCompiler試圖去滿足這些目標,但不會去違反任何設計規(guī)則。為能夠正確地優(yōu)化設計,必須設置更接近現(xiàn)實情況的約束。

(1)設置時鐘約束在symbol圖上選中clk端口,選擇Attributes/SpecifyClock,出來設置時鐘約束對話框,例如設計者可以進行如下設置,給時鐘取名為clock,周期20ns,上升沿0ns,下降沿10ns。點擊OK,時鐘約束設置完成。相應命令:creat_clock。11/11/202457(2)設置復位信號約束在symbol圖中選中rst_n端口(在本例中它是復位端口),選擇Attibutes/OptimizationDirectives/InputPort。勾選Don’ttouchnetwork選項,點擊OK。相應命令:set_dont_touch_network。(3)設置輸入信號延遲約束同時選中輸入端口,例如選擇a,b,c選擇Attributes/OperatingEnvironment/InputDelay。設置Relativetoclock為clock(即剛才加約束的時鐘信號),并設置上升延遲為8ns(根據(jù)經(jīng)驗,該值是時鐘周期的40%,本例中設置了時鐘周期為20ns,20*0.4=8ns)相應命令:set_input_delay11/11/202458(4)設置輸出端口約束在symbol圖上選中輸出端口。選擇Attributes/OperatingEnvironment/OutputDelay設置輸出延遲為8ns。相應指令:set_output_delay(5)設置面積約束選擇Attributes/OptimizationConstraints/DesignConstraints,設置Maxarea的值為0,表明讓DC向電路面積為0的方向來優(yōu)化電路,使面積最小。當然,面積為0是達不到的。Maxfanout為4,Maxtransition為0.5(具體含義參見SYNTHESIS.pdf)。相應命令:set_max_area,set_max_fanout,set_max_transition。11/11/2024596.優(yōu)化設計利用compiler命令啟動DesignCompiler的綜合和優(yōu)化進程。有幾個可選的編譯選項。特別的,map_effort選項可以設置為low、mediu或high。初步編譯,如果設計者想對設計面積和性能有一個快速的概念,將map_effort設置為low;默認編譯,如果設計者在進行設計開發(fā),將map_effort設置為medium;當在進行最后設計實現(xiàn)編譯時,將map_effort設置為high。通常設置map_effort為medium。7.查看約束通常DesignCompiler根據(jù)設計綜合和優(yōu)化的結果生成眾多的報告。設計者根據(jù)諸如面積、約束和時序報告來分析和解決任何設計問題,或者改進綜合結果。設計者可以用check命令來檢查綜合過的設計,也可用其它的check_命令。8.保存設計數(shù)據(jù)利用write命令來保存綜合過的設計。DesignCompiler在退出時并不自動保存設計。11/11/2024607.4測試和綜合舉例工作的思路是:1.設計一個帶控制端的移位寄存器,利用Modelsim做功能仿真;2.利用進行綜合,生成shiftregist.vqm文件;3.利用QuartusII導入shiftregist.vqm進行自動布局布線,并生成shiftregist.vo(VerilogHDLOutputFile)網(wǎng)表文件與shiftregist.sdo(StandardDelayOutputFile)時延文件用做后仿真(Post-Sim);4.利用Modelsim做后仿真,看是否滿足要求。11/11/2024617.4.1自動布局布線1.開啟QuartusII,然后建立一個Project。選擇File/NewProjectWizard新建工程設定WorkDirectory,ProjectName與Top-LevelEntityName,再按Next。

2.加入設計文件點選Add,將Synplify合成出來的shiftregist.vpm加入再按Next。3.定Family和Device設定Family為Statix,Device為EP1S10F780C6,然后按Next。4.設定相關的EDATools在DesignEntry/Synthesis的ToolName下拉點選是Synplifypro,F(xiàn)omats下拉列表點選VQM。在Simulation的ToolName下拉點選Modelsim,F(xiàn)omats下拉列表點選VerilogHDL。5.確認信息,點Finish完成Project的設定和保存。11/11/2024626.編譯點擊Processing/StartCompilation,即可開始編譯。編譯成功后,會在F:\shiftregist\apr目錄下生成Simulation子目錄,打開發(fā)現(xiàn)在F:\shiftregist\apr\simulation\Modelsim下有設計者后仿真需要的shiftregist.vo和shiftregist.sdo文件。右圖所示的是新建工程向導建立工程文件的信息。11/11/2024637.4.2后仿真1.新建工程啟動Modelsim,然后建立一個Project。建立的方法和前面介紹功能仿真時的方法一樣,注意ProjectLocation要填為F:\shiftregist\post-sim,ProjectName要填為shiftregist。2.加入文檔首先將用QuartusII生成的網(wǎng)表文件shiftregist.vo加入。由于設計采用Altera的CellLibrary來合成電路,所以合成后的Netlist里所包括的那些LogicGates與Flip-Flop都是出自于CellLibrary,所以模擬時要將此CellLibrary加入。設計時所選用的Family是Stratix,所以到QuartusIIedasim_lib里將Stratix的CellLibrary(stratix_atoms.v)加入。stratix_atoms.v可以在目錄C:\altera\81\quartus\eda\sim_lib下找到。最后加入Pre-Sim的測試平臺testbench_shiftregist.v,并在測試平臺里加上`timescale1ns/100ps。11/11/2024643.編譯選擇Compile/CompileAll,即可編譯工程中所有文件。4.仿真設置在Modelsim主菜單中,選擇Simulate/StartSimulation在彈出的對話框中要做如下的工作。首先,在design選項卡下的work2庫下選擇測試文件testbench_shiftregist。其次打開Library選項卡,在SearchLibrary項目下點擊添加,將庫work2添加進來。這里因為剛才編譯的時候已經(jīng)將stratix_atoms.v庫的信息加進了work2,所以添加work2庫的同時也就添加了Altera的statix器件庫。最后在SDF選項卡下添加延時反標文件,點擊Add,在彈出的AddSDFEntry對話框中,點擊Browse找到.sdo文件的路徑并加入。在作用區(qū)域(ApplytoRegion)下所填的是測試模塊名和測試模塊中例化文件名,格式是“/測試文件頂層模塊名/測試文件中例化文件名”。在本例中填寫為“/testbench_shiftregist/U1”。

以上工作完成后,點擊OK后Modelsim自動按照設定完成對仿真目標的加載。11/11/202465

5.仿真調試在以上工作都做完之后。按照7.2.1節(jié)的方法,運行仿真器。打開波形窗口,將信號添加進去,點擊RUN。將后仿真的波形與前仿真的波形進行對比。波形對比能快速定位設計在修改前后的區(qū)別,在進行波形對比前要先保存原設計的波形文件,此文件稱為對比對象。在Modelsim中使用波形對比向導,可以方便的完成波形對比功能。具體的工作可以分為幾個步驟:打開波形對比向導設置。在Wave界面上選擇Tools/WaveformCompare/ComparisionWizard選項,打開波形對比向導。導入波形

溫馨提示

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

評論

0/150

提交評論