




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)字集成電路設(shè)計(jì)入門-從HDL到版圖于敦山 北大微電子學(xué)系課程內(nèi)容(一) 介紹Verilog HDL, 內(nèi)容包括: Verilog應(yīng)用 Verilog語言的構(gòu)成元素 結(jié)構(gòu)級描述及仿真 行為級描述及仿真 延時(shí)的特點(diǎn)及說明 介紹Verilog testbench 激勵(lì)和控制和描述 結(jié)果的產(chǎn)生及驗(yàn)證 任務(wù)task及函數(shù)function 用戶定義的基本單元(primitive) 可綜合的Verilog描述風(fēng)格課程內(nèi)容(二) 介紹Cadence Verilog仿真器, 內(nèi)容包括: 設(shè)計(jì)的編譯及仿真 源庫(source libraries)的使用 用Verilog-XL命令行界面進(jìn)行調(diào)試 用NC Veri
2、log Tcl界面進(jìn)行調(diào)試 圖形用戶界面(GUI)調(diào)試 延時(shí)的計(jì)算及反標(biāo)注(annotation) 性能仿真描述 如何使用NC Verilog仿真器進(jìn)行編譯及仿真 如何將設(shè)計(jì)環(huán)境傳送給NC Verilog 周期(cycle)仿真課程內(nèi)容(三) 邏輯綜合的介紹邏輯綜合的介紹 簡介簡介 設(shè)計(jì)對象設(shè)計(jì)對象 靜態(tài)時(shí)序分析靜態(tài)時(shí)序分析 (STA) design analyzer環(huán)境環(huán)境 可綜合的可綜合的HDL編碼風(fēng)格編碼風(fēng)格 可綜合的可綜合的Verilog HDL Verilog HDL中的一些竅門中的一些竅門 Designware庫庫 綜合劃分綜合劃分 實(shí)驗(yàn)實(shí)驗(yàn) (1)課程內(nèi)容(四) 設(shè)計(jì)約束( Co
3、nstraint) 設(shè)置設(shè)計(jì)環(huán)境 設(shè)置設(shè)計(jì)約束 設(shè)計(jì)優(yōu)化 設(shè)計(jì)編譯 FSM的優(yōu)化 產(chǎn)生并分析報(bào)告 實(shí)驗(yàn) (2)課程內(nèi)容(五) 自動布局布線工具(Silicon Ensemble)簡介課程安排 共54學(xué)時(shí) (18) 講課,27學(xué)時(shí) Verilog (5) Synthesis (3) Place &Route (1) 實(shí)驗(yàn),24學(xué)時(shí) Verilog (5) Synthesis (2) Place &Route (1) 考試,3學(xué)時(shí)參考書目 Cadence Verilog Language and Simulation Verilog-XL Simulation with Synth
4、esis Envisia Ambit Synthesis 硬件描述語言Verilog 清華大學(xué)出版社,Thomas &Moorby,劉明業(yè)等譯,2001.8第二章 Verilog 應(yīng)用 學(xué)習(xí)內(nèi)容 使用HDL設(shè)計(jì)的先進(jìn)性 Verilog的主要用途 Verilog的歷史 如何從抽象級(levels of abstraction)理解 電路設(shè)計(jì) Verilog描述術(shù)語定義(terms and definitions)硬件描述語言硬件描述語言HDL:描述電路硬件及時(shí)序的一種編程語言仿真器仿真器:讀入HDL并進(jìn)行解釋及執(zhí)行的一種軟件抽象級抽象級:描述風(fēng)格的詳細(xì)程度,如行為級和門級ASIC:專用集
5、成電路(Application Specific Integrated Circuit)ASIC Vender:芯片制造商,開發(fā)并提供單元庫自下而上的設(shè)計(jì)流程自下而上的設(shè)計(jì)流程:一種先構(gòu)建底層單元,然后由底層單元構(gòu)造更大的系統(tǒng)的設(shè)計(jì)方法 。自頂向下的設(shè)計(jì)流程自頂向下的設(shè)計(jì)流程:一種設(shè)計(jì)方法,先用高抽象級構(gòu)造系統(tǒng),然后再設(shè)計(jì)下層單元RTL級級:寄存器傳輸級(Register Transfer Level),用于設(shè)計(jì)的可綜合的一種抽象級Tcl:Tool command Language, 向交互程序輸入命令的描述語言什么是硬件描述語言什么是硬件描述語言HDL 具有特殊結(jié)構(gòu)能夠?qū)τ布壿嬰娐返墓δ苓M(jìn)
6、行描述的具有特殊結(jié)構(gòu)能夠?qū)τ布壿嬰娐返墓δ苓M(jìn)行描述的一種高級編程語言一種高級編程語言 這種特殊結(jié)構(gòu)能夠:這種特殊結(jié)構(gòu)能夠: 描述電路的連接描述電路的連接 描述電路的功能描述電路的功能 在不同抽象級上描述電路在不同抽象級上描述電路 描述電路的時(shí)序描述電路的時(shí)序 表達(dá)具有并行性表達(dá)具有并行性 HDL主要有兩種:主要有兩種:Verilog和和VHDL Verilog起源于起源于C語言,因此非常類似于語言,因此非常類似于C語言,容易掌握語言,容易掌握 VHDL起源于起源于ADA語言,格式嚴(yán)謹(jǐn),不易學(xué)習(xí)。語言,格式嚴(yán)謹(jǐn),不易學(xué)習(xí)。 VHDL出現(xiàn)較晚,但標(biāo)準(zhǔn)化早。出現(xiàn)較晚,但標(biāo)準(zhǔn)化早。IEEE 1706
7、-1985標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。為什么使用為什么使用HDL 使用使用HDL描述設(shè)計(jì)具有下列優(yōu)點(diǎn):描述設(shè)計(jì)具有下列優(yōu)點(diǎn): 設(shè)計(jì)在高層次進(jìn)行,與具體實(shí)現(xiàn)無關(guān)設(shè)計(jì)在高層次進(jìn)行,與具體實(shí)現(xiàn)無關(guān) 設(shè)計(jì)開發(fā)更加容易設(shè)計(jì)開發(fā)更加容易 早在設(shè)計(jì)期間就能發(fā)現(xiàn)問題早在設(shè)計(jì)期間就能發(fā)現(xiàn)問題 能夠自動的將高級描述映射到具體工藝實(shí)現(xiàn)能夠自動的將高級描述映射到具體工藝實(shí)現(xiàn) 在具體實(shí)現(xiàn)時(shí)才做出某些決定在具體實(shí)現(xiàn)時(shí)才做出某些決定 HDL具有更大的靈活性具有更大的靈活性 可重用可重用 可以選擇工具及生產(chǎn)廠可以選擇工具及生產(chǎn)廠 HDL能夠利用先進(jìn)的軟件能夠利用先進(jìn)的軟件 更快的輸入更快的輸入 易于管理易于管理Verilog的歷史的歷史Ve
8、rilog HDL是在是在1983年由年由GDA(GateWay Design Automation)公司的公司的Phil Moorby所創(chuàng)。所創(chuàng)。Phi MoorbyPhi Moorby后來成為后來成為VerilogVerilog-XL-XL的主要設(shè)計(jì)者和的主要設(shè)計(jì)者和CadenceCadence公司的第一個(gè)合伙人。公司的第一個(gè)合伙人。在在1984198519841985年間,年間,MoorbyMoorby設(shè)計(jì)出了第一個(gè)設(shè)計(jì)出了第一個(gè)VerilogVerilog-XL-XL的仿真器。的仿真器。19861986年,年,MoorbyMoorby提出了用于快速門級仿真的提出了用于快速門級仿真的XL
9、XL算法。算法。19901990年,年,CadenceCadence公司收購了公司收購了GDAGDA公司公司19911991年,年,CadenceCadence公司公開發(fā)表公司公開發(fā)表VerilogVerilog語言,成立了語言,成立了OVI(Open OVI(Open VerilogVerilog International) International)組織來負(fù)責(zé)組織來負(fù)責(zé)VerilogVerilog HDL HDL語言的發(fā)展。語言的發(fā)展。19951995年制定了年制定了VerilogVerilog HDL HDL的的IEEEIEEE標(biāo)準(zhǔn),即標(biāo)準(zhǔn),即IEEE1364IEEE1364。Ver
10、ilog的用途的用途 Verilog的主要應(yīng)用包括:的主要應(yīng)用包括: ASICASIC和和FPGAFPGA工程師編寫可綜合的工程師編寫可綜合的RTLRTL代碼代碼 高抽象級系統(tǒng)仿真進(jìn)行系統(tǒng)結(jié)構(gòu)開發(fā)高抽象級系統(tǒng)仿真進(jìn)行系統(tǒng)結(jié)構(gòu)開發(fā) 測試工程師用于編寫各種層次的測試程序測試工程師用于編寫各種層次的測試程序 用于用于ASICASIC和和FPGAFPGA單元或更高層次的模塊的模型開發(fā)單元或更高層次的模塊的模型開發(fā)抽象級抽象級(Levels of Abstraction) VerilogVerilog既是一種行為描述的語言也是一種結(jié)構(gòu)描述語既是一種行為描述的語言也是一種結(jié)構(gòu)描述語言。言。VerilogV
11、erilog模型可以是實(shí)際電路的不同級別的抽象。模型可以是實(shí)際電路的不同級別的抽象。這些抽象的級別包括:這些抽象的級別包括:系統(tǒng)說明系統(tǒng)說明-設(shè)計(jì)文檔設(shè)計(jì)文檔/算法描述算法描述RTL/功能級功能級-Verilog門級門級/結(jié)構(gòu)級結(jié)構(gòu)級-Verilog版圖版圖/物理級物理級-幾何圖形幾何圖形行為綜合行為綜合綜合前仿真綜合前仿真邏輯綜合邏輯綜合綜合后仿真綜合后仿真版圖版圖抽象級抽象級(Levels of Abstraction) 在抽象級上需要進(jìn)行折衷在抽象級上需要進(jìn)行折衷系統(tǒng)說明系統(tǒng)說明-設(shè)計(jì)文檔設(shè)計(jì)文檔/算術(shù)描述算術(shù)描述RTL/功能級功能級-Verilog門級門級/結(jié)構(gòu)級結(jié)構(gòu)級-Verilog
12、版圖版圖/物理級物理級-幾何圖形幾何圖形詳細(xì)程度詳細(xì)程度 低低 高高輸入輸入/仿真速度仿真速度 高高 低低抽象級抽象級(Levels of Abstraction)VerilogVerilog可以在三種抽象級上進(jìn)行描述可以在三種抽象級上進(jìn)行描述行為級行為級 用功能塊之間的數(shù)據(jù)流對系統(tǒng)進(jìn)行描述用功能塊之間的數(shù)據(jù)流對系統(tǒng)進(jìn)行描述 在需要時(shí)在函數(shù)塊之間進(jìn)行調(diào)度賦值。在需要時(shí)在函數(shù)塊之間進(jìn)行調(diào)度賦值。RTL級級/功能級功能級用功能塊內(nèi)部或功能塊之間的數(shù)據(jù)流和控制信號描述系統(tǒng)用功能塊內(nèi)部或功能塊之間的數(shù)據(jù)流和控制信號描述系統(tǒng)基于一個(gè)已定義的時(shí)鐘的周期來定義系統(tǒng)模型基于一個(gè)已定義的時(shí)鐘的周期來定義系統(tǒng)模型
13、結(jié)構(gòu)級結(jié)構(gòu)級/門級門級用基本單元用基本單元(primitive)或低層元件或低層元件(component)的連接來描述系的連接來描述系統(tǒng)以得到更高的精確性,特別是時(shí)序方面。統(tǒng)以得到更高的精確性,特別是時(shí)序方面。在綜合時(shí)用特定工藝和低層元件將在綜合時(shí)用特定工藝和低層元件將RTL描述映射到門級網(wǎng)表描述映射到門級網(wǎng)表抽象級抽象級(Levels of Abstraction) 設(shè)計(jì)工程師在不同的設(shè)計(jì)階段采用不同的抽象級設(shè)計(jì)工程師在不同的設(shè)計(jì)階段采用不同的抽象級 首先在行為級描述各功能塊,以降低描述難度,提高仿真速度。首先在行為級描述各功能塊,以降低描述難度,提高仿真速度。 在綜合前將各功能模塊進(jìn)行在綜
14、合前將各功能模塊進(jìn)行RTL級描述。級描述。 用于綜合的庫中的大多數(shù)單元采用結(jié)構(gòu)級描述。在本教程中的結(jié)用于綜合的庫中的大多數(shù)單元采用結(jié)構(gòu)級描述。在本教程中的結(jié)構(gòu)級描述部分將對結(jié)構(gòu)級構(gòu)級描述部分將對結(jié)構(gòu)級(門級門級)描述進(jìn)行更詳細(xì)的說明。描述進(jìn)行更詳細(xì)的說明。 Verilog還有一定的晶體管級描述能力及算法級描述能力還有一定的晶體管級描述能力及算法級描述能力行為級和行為級和RTL級級MUX的行為可以描述為:只要信號的行為可以描述為:只要信號a或或b或或sel發(fā)生變化,如果發(fā)生變化,如果sel為為0則選擇則選擇a輸出;否則選擇輸出;否則選擇b輸出。輸出。module muxtwo (out, a,
15、b, sel); input a, b, sel; output out; reg out;always ( sel or a or b) if (! sel) out = a; else out = b;endmodule這個(gè)行為級這個(gè)行為級RTL描述不處理描述不處理X和和Z狀態(tài)輸入,并且沒有延時(shí)。狀態(tài)輸入,并且沒有延時(shí)。在行為級模型中,邏輯功能描述采用高級語言結(jié)構(gòu),如在行為級模型中,邏輯功能描述采用高級語言結(jié)構(gòu),如, while,wait,if, case。Testbench(test fixture)通常采用行為級描述。所有行為級結(jié)構(gòu)在通常采用行為級描述。所有行為級結(jié)構(gòu)在testbenc
16、h描描述中都可以采用。述中都可以采用。RTL模型中數(shù)據(jù)流都是基于時(shí)鐘的。任何時(shí)鐘元件在時(shí)鐘沿處的行為都要精模型中數(shù)據(jù)流都是基于時(shí)鐘的。任何時(shí)鐘元件在時(shí)鐘沿處的行為都要精確描述。確描述。RTL級描述是行為級級描述是行為級Verilog的子集。的子集。結(jié)構(gòu)級描述結(jié)構(gòu)級描述結(jié)構(gòu)級結(jié)構(gòu)級Verilog適合開發(fā)小規(guī)模元件,如適合開發(fā)小規(guī)模元件,如ASIC和和FPGA的單元的單元 Verilog內(nèi)部帶有描述基本邏輯功能的基本單元內(nèi)部帶有描述基本邏輯功能的基本單元(primitive),如,如and門。門。 用戶可以定義自己的基本單元用戶可以定義自己的基本單元UDP(User Defined Priviti
17、ves) 綜合產(chǎn)生的結(jié)果網(wǎng)表通常是結(jié)構(gòu)級的。用戶可以用結(jié)構(gòu)級描述粘接綜合產(chǎn)生的結(jié)果網(wǎng)表通常是結(jié)構(gòu)級的。用戶可以用結(jié)構(gòu)級描述粘接(glue)邏輯。邏輯。下面是下面是MUX的結(jié)構(gòu)級描述,采用的結(jié)構(gòu)級描述,采用Verilog基本單元基本單元(門門)描述。描述描述。描述中含有傳輸延時(shí)。中含有傳輸延時(shí)。module twomux (out, a, b, sl); input a, b, sl; output out; not u1 (nsl, sl ); and #1 u2 (sela, a, nsl); and #1 u3 (selb, b, sl); or #2 u4 (out, sela, sel
18、b);endmodule綜合不綜合不支持支持!僅需一種語言僅需一種語言Verilog的一個(gè)主要特點(diǎn)是可應(yīng)用于各種抽象級。建模時(shí)可采用門的一個(gè)主要特點(diǎn)是可應(yīng)用于各種抽象級。建模時(shí)可采用門級和級和RTL級混合描述,在開發(fā)級混合描述,在開發(fā)testfixture時(shí)可以采用行為級描述。時(shí)可以采用行為級描述。復(fù)習(xí)復(fù)習(xí)什么是什么是Verilog ?Verilog是公開的嗎是公開的嗎?設(shè)計(jì)時(shí)什么時(shí)候采用設(shè)計(jì)時(shí)什么時(shí)候采用Verilog RTL級描述級描述?Verilog適合做什么樣的設(shè)計(jì)適合做什么樣的設(shè)計(jì)?解答:解答:Verilog是用于硬件描述的具有時(shí)間概念的并行編程語言是用于硬件描述的具有時(shí)間概念的并行
19、編程語言Verilog是一種公開語言,是一種公開語言, 由由OVI負(fù)責(zé)組織,有負(fù)責(zé)組織,有IEEE1394標(biāo)準(zhǔn)標(biāo)準(zhǔn)RTL描述用于綜合,或用于必須精確到每個(gè)時(shí)鐘周期的模型的建模。描述用于綜合,或用于必須精確到每個(gè)時(shí)鐘周期的模型的建模。Verilog適用于各種抽象級模型的開發(fā)及驗(yàn)證適用于各種抽象級模型的開發(fā)及驗(yàn)證第三章第三章 Cadence仿真器仿真器 學(xué)習(xí)內(nèi)容學(xué)習(xí)內(nèi)容 邏輯仿真算法邏輯仿真算法 如何啟動如何啟動Verilog-XL和和NC Verilog仿真器仿真器 如何顯示波形如何顯示波形仿真算法仿真算法 主要有三種仿真算法主要有三種仿真算法 基于時(shí)間的基于時(shí)間的(SPICE仿真器仿真器) 基
20、于事件的基于事件的(Verilog-XL和和NC Verilog仿真器仿真器) 基于周期的基于周期的(cycle)仿真算法仿真算法 基于時(shí)間的算法用于處理連續(xù)的時(shí)間及變量基于時(shí)間的算法用于處理連續(xù)的時(shí)間及變量 在每一個(gè)時(shí)間點(diǎn)對所有電路元件進(jìn)行計(jì)算在每一個(gè)時(shí)間點(diǎn)對所有電路元件進(jìn)行計(jì)算 效率低。在一個(gè)時(shí)間點(diǎn)只有約效率低。在一個(gè)時(shí)間點(diǎn)只有約210%的電路活動的電路活動 基于事件的算法處理離散的時(shí)間、狀態(tài)和變量基于事件的算法處理離散的時(shí)間、狀態(tài)和變量 只有電路狀態(tài)發(fā)生變化時(shí)才進(jìn)行處理,只模擬哪些可能引起只有電路狀態(tài)發(fā)生變化時(shí)才進(jìn)行處理,只模擬哪些可能引起電路狀態(tài)改變的元件。仿真器響應(yīng)輸入引腳上的事件,
21、并將電路狀態(tài)改變的元件。仿真器響應(yīng)輸入引腳上的事件,并將值在電路中向前傳播。值在電路中向前傳播。 是應(yīng)用最為廣泛的仿真算法是應(yīng)用最為廣泛的仿真算法 效率高。效率高。“evaluate when necessary” 基于周期的仿真以時(shí)鐘周期為處理單位基于周期的仿真以時(shí)鐘周期為處理單位(與時(shí)間無關(guān)與時(shí)間無關(guān)) 只在時(shí)鐘邊沿進(jìn)行計(jì)算,不管時(shí)鐘周期內(nèi)的時(shí)序只在時(shí)鐘邊沿進(jìn)行計(jì)算,不管時(shí)鐘周期內(nèi)的時(shí)序 使用兩值邏輯使用兩值邏輯 (1, 0) 只關(guān)心電路功能而不關(guān)心時(shí)序,對于大型設(shè)計(jì),效率高只關(guān)心電路功能而不關(guān)心時(shí)序,對于大型設(shè)計(jì),效率高 僅適用于同步電路。僅適用于同步電路?;谑录抡娴臅r(shí)輪基于事件仿真
22、的時(shí)輪(time wheel)仿真器在編譯數(shù)據(jù)結(jié)構(gòu)時(shí)建立一個(gè)事件隊(duì)列。仿真器在編譯數(shù)據(jù)結(jié)構(gòu)時(shí)建立一個(gè)事件隊(duì)列。只有當(dāng)前時(shí)間片中所有事件都處理完成后,時(shí)間才能向前。只有當(dāng)前時(shí)間片中所有事件都處理完成后,時(shí)間才能向前。仿真從時(shí)間仿真從時(shí)間0開始,而且時(shí)輪只能向前推進(jìn)。只有時(shí)間開始,而且時(shí)輪只能向前推進(jìn)。只有時(shí)間0的事件處的事件處理完后才能進(jìn)入下一時(shí)片。理完后才能進(jìn)入下一時(shí)片。在同一個(gè)時(shí)間片內(nèi)發(fā)生的事件在硬件上是并行的在同一個(gè)時(shí)間片內(nèi)發(fā)生的事件在硬件上是并行的理論上時(shí)間片可以無限。但實(shí)際上受硬件及軟件的限制。理論上時(shí)間片可以無限。但實(shí)際上受硬件及軟件的限制。一個(gè)時(shí)間片的事件一個(gè)時(shí)間片的事件可引起新的
23、事件,可引起新的事件,在當(dāng)前時(shí)片或以后在當(dāng)前時(shí)片或以后時(shí)間片timesliceCadence Verilog仿真器仿真器 Verilog-XL和和NC Verilog仿真器都是基于事件算法的仿真器都是基于事件算法的仿真器。仿真器讀入仿真器。仿真器讀入Verilog HDL描述并進(jìn)行仿真以反描述并進(jìn)行仿真以反映實(shí)際硬件的行為。映實(shí)際硬件的行為。 Verilog-XL和和NC Verilog仿真器遵循仿真器遵循IEEE 1364 Verilog規(guī)范制定的基于事件的調(diào)度語義規(guī)范制定的基于事件的調(diào)度語義 仿真器可用于仿真器可用于 確定想法的可行性確定想法的可行性 用不同的方法解決設(shè)計(jì)問題用不同的方法解
24、決設(shè)計(jì)問題 功能驗(yàn)證功能驗(yàn)證 確定設(shè)計(jì)錯(cuò)誤確定設(shè)計(jì)錯(cuò)誤仿真過程仿真過程 Verilog仿真分下列步驟:仿真分下列步驟: 編譯編譯讀入設(shè)計(jì)描述,處理編譯指導(dǎo)讀入設(shè)計(jì)描述,處理編譯指導(dǎo)(compiler directive),建立,建立一個(gè)數(shù)據(jù)結(jié)構(gòu)定義設(shè)計(jì)的層次結(jié)構(gòu)一個(gè)數(shù)據(jù)結(jié)構(gòu)定義設(shè)計(jì)的層次結(jié)構(gòu)這一步有時(shí)分為兩步:這一步有時(shí)分為兩步:compilation,elaboration 初始化初始化參數(shù)初始化;沒有驅(qū)動的參數(shù)初始化;沒有驅(qū)動的Net缺省值為缺省值為Z;其它節(jié)點(diǎn)初始值;其它節(jié)點(diǎn)初始值為為X。這些值延著設(shè)計(jì)層次傳播。這些值延著設(shè)計(jì)層次傳播。 仿真仿真剛開始時(shí)間為剛開始時(shí)間為0時(shí),仿真器將時(shí),
25、仿真器將initial和和always中的語句執(zhí)中的語句執(zhí)行一次,遇到有時(shí)序控制時(shí)停止。這些賦值可產(chǎn)生在時(shí)間行一次,遇到有時(shí)序控制時(shí)停止。這些賦值可產(chǎn)生在時(shí)間0或其后時(shí)間的事件?;蚱浜髸r(shí)間的事件。隨著時(shí)間推進(jìn),被調(diào)度事件的執(zhí)行引起更多的調(diào)度事件,隨著時(shí)間推進(jìn),被調(diào)度事件的執(zhí)行引起更多的調(diào)度事件,直至仿真結(jié)束。直至仿真結(jié)束。Versus 交互式編譯仿真器交互式編譯仿真器Verilog-XL是一個(gè)交互式仿真器,過程如下:是一個(gè)交互式仿真器,過程如下:1.讀入讀入Verilog描述,進(jìn)行語義語法檢查,處理編譯指導(dǎo)描述,進(jìn)行語義語法檢查,處理編譯指導(dǎo)(compiler directive)2.在內(nèi)存中
26、將設(shè)計(jì)編譯為中間格式,將所有模塊和實(shí)例組裝成在內(nèi)存中將設(shè)計(jì)編譯為中間格式,將所有模塊和實(shí)例組裝成層次結(jié)構(gòu)層次結(jié)構(gòu)(設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu))。源代碼中的每個(gè)元件都被重新表。源代碼中的每個(gè)元件都被重新表示并能在產(chǎn)生的數(shù)據(jù)結(jié)構(gòu)示并能在產(chǎn)生的數(shù)據(jù)結(jié)構(gòu) 找到。找到。3.決定仿真的時(shí)間精度,在內(nèi)存中構(gòu)造一個(gè)事件隊(duì)列的時(shí)間數(shù)決定仿真的時(shí)間精度,在內(nèi)存中構(gòu)造一個(gè)事件隊(duì)列的時(shí)間數(shù)據(jù)結(jié)構(gòu)據(jù)結(jié)構(gòu)(時(shí)輪時(shí)輪) 。4.讀入、調(diào)度并根據(jù)事件執(zhí)行每一個(gè)語句讀入、調(diào)度并根據(jù)事件執(zhí)行每一個(gè)語句Verilog-XL采用多種加速算法提高各種抽象級的仿真速度。采用多種加速算法提高各種抽象級的仿真速度。每次重新啟動每次重新啟動Ver
27、ilog-XL,將重復(fù)上述步驟。,將重復(fù)上述步驟。當(dāng)進(jìn)入交互模式時(shí),可以輸入當(dāng)進(jìn)入交互模式時(shí),可以輸入Verilog HDL語句并加到設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)中。語句并加到設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)中。Versus 交互式編譯仿真交互式編譯仿真Verilog-XL仿真器是與仿真器是與Verilog HDL同時(shí)開發(fā)的,因同時(shí)開發(fā)的,因此它成為此它成為Verilog HDL仿真器的事實(shí)上的標(biāo)準(zhǔn)。仿真器的事實(shí)上的標(biāo)準(zhǔn)。Verilog-XL采用了多種加速算法,對每種抽象級描述采用了多種加速算法,對每種抽象級描述都能很好的仿真。這些加速算法包括都能很好的仿真。這些加速算法包括Turbo算法,算法,XL算法及算法及Switch
28、-XL算法。在后面的教程中將對這些算算法。在后面的教程中將對這些算法進(jìn)行更為詳盡的介紹。法進(jìn)行更為詳盡的介紹。NC Verilog-全編譯仿真全編譯仿真NC Verilog是全編譯仿真器,它直接將是全編譯仿真器,它直接將Verilog代碼編代碼編譯為機(jī)器碼執(zhí)行。其過程為:譯為機(jī)器碼執(zhí)行。其過程為:ncvlog編譯編譯Verilog源文件,按照編譯指導(dǎo)源文件,按照編譯指導(dǎo)(compile directive)檢查語義及語法,產(chǎn)生中間數(shù)據(jù)。檢查語義及語法,產(chǎn)生中間數(shù)據(jù)。ncelab按照設(shè)計(jì)指示構(gòu)造設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),產(chǎn)生可執(zhí)行代碼。按照設(shè)計(jì)指示構(gòu)造設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),產(chǎn)生可執(zhí)行代碼。除非對優(yōu)化進(jìn)行限制,否
29、則源代碼中的元件除非對優(yōu)化進(jìn)行限制,否則源代碼中的元件(element)可能被優(yōu)可能被優(yōu)化丟失。產(chǎn)生中間數(shù)據(jù)?;瘉G失。產(chǎn)生中間數(shù)據(jù)。ncsim啟動仿真核。核調(diào)入設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),構(gòu)造事件序列啟動仿真核。核調(diào)入設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),構(gòu)造事件序列(時(shí)輪),調(diào)度并執(zhí)行事件的機(jī)器碼。有些事件可能消失(時(shí)輪),調(diào)度并執(zhí)行事件的機(jī)器碼。有些事件可能消失(從不從不執(zhí)行執(zhí)行)除非限制優(yōu)化過程。除非限制優(yōu)化過程。編譯后的所有代碼的執(zhí)行使用同一個(gè)核。編譯后的所有代碼的執(zhí)行使用同一個(gè)核。當(dāng)重新啟動仿真時(shí),要對修改過的模塊重新編譯。省略這個(gè)手工過程的方當(dāng)重新啟動仿真時(shí),要對修改過的模塊重新編譯。省略這個(gè)手工過程的方法是直接對
30、設(shè)計(jì)進(jìn)行仿真,這將自動地對修改過的模塊進(jìn)行重新編譯。法是直接對設(shè)計(jì)進(jìn)行仿真,這將自動地對修改過的模塊進(jìn)行重新編譯。當(dāng)采用交互模式時(shí),可以使用當(dāng)采用交互模式時(shí),可以使用Tcl命令和針對命令和針對NC Verilog的的Tcl擴(kuò)展命令。擴(kuò)展命令。NC Verilog全編譯仿真全編譯仿真NC Verilog是最近才開發(fā)的,但其對描述的仿真與是最近才開發(fā)的,但其對描述的仿真與Verilog-XL完全完全相同相同NC Verilog仿真器用同一個(gè)核仿真器用同一個(gè)核(kernel)對所有抽象級進(jìn)行混合仿真,對所有抽象級進(jìn)行混合仿真,也就是說用戶可以采用各種不同抽象級混合設(shè)計(jì)。但在門級仿真的也就是說用戶可以
31、采用各種不同抽象級混合設(shè)計(jì)。但在門級仿真的效率差一些。效率差一些。NC Verilog仿真器對源代碼采用增量編譯方式,減少了編譯時(shí)間。仿真器對源代碼采用增量編譯方式,減少了編譯時(shí)間。在交互模式下,可以使用在交互模式下,可以使用Tcl命令及其針對命令及其針對NC Verilog的擴(kuò)展命令的擴(kuò)展命令來修改設(shè)計(jì)和控制仿真。這將在后面進(jìn)行詳細(xì)描述。來修改設(shè)計(jì)和控制仿真。這將在后面進(jìn)行詳細(xì)描述。對對Verilog語言的支持語言的支持Verilog-XL和和NC Verilog計(jì)劃支持計(jì)劃支持Verilog語言全集。用語言全集。用戶可依據(jù)下列標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì):戶可依據(jù)下列標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì):-IEEE1364-19
32、95 Verilog語言參考手冊語言參考手冊-OVI 2.0 Verilog語言參考手冊,但不支持:語言參考手冊,但不支持:Attributes: Verilog描述中對象的屬性。描述中對象的屬性。函數(shù)中函數(shù)中output或或inout變元變元(argument):OVI2.0允許函數(shù)中允許函數(shù)中output和和inout變元值能夠返回。變元值能夠返回。啟動啟動Verilog-XL在命令窗口啟動在命令窗口啟動Verilog-XL: verilog verilog-xl_options design_files沒有沒有option啟動的例子啟動的例子 verilog mux.v test.v使用
33、使用 c選項(xiàng)只對設(shè)計(jì)進(jìn)行語法和連接檢查選項(xiàng)只對設(shè)計(jì)進(jìn)行語法和連接檢查 verilog c mux.v test.v使用使用-f選項(xiàng)指定一個(gè)包含命令行參數(shù)的文件選項(xiàng)指定一個(gè)包含命令行參數(shù)的文件 verilog f run.f run.f文件的內(nèi)容文件的內(nèi)容Verilog-XL將所有終端輸出保存到名為將所有終端輸出保存到名為verilog.log的文件的文件mux.vtest.v-c啟動啟動NC Verilog雖然NC Verilog仿真過程包括三個(gè)分立的步驟(ncvlog, ncelab, ncsim),但仿真時(shí)不需要三個(gè)命令,可以用帶有命令行參數(shù)的ncverilog命令啟動NC Verilog
34、: ncverilog ncverilog_options verilog-xl_argumentsExamples:ncverilog mux.v test.vncverilog c mux.v test.vncverilog f run.f run.f文件的內(nèi)容NC Verilog將所有終端輸出保存到名為ncverilog.log的文件mux.vtest.v-cNC Verilog有什么不同?有什么不同?除除+gui、-q和和-s這些只影響運(yùn)行時(shí)間的參數(shù)外,其它任何命令行這些只影響運(yùn)行時(shí)間的參數(shù)外,其它任何命令行參數(shù)的改變將使設(shè)計(jì)重新編譯、參數(shù)的改變將使設(shè)計(jì)重新編譯、elaborate及仿
35、真。及仿真。如果更新了源文件及仿真時(shí)用到的如果更新了源文件及仿真時(shí)用到的SDF文件,則與它們相關(guān)的文文件,則與它們相關(guān)的文件將重新編譯,設(shè)計(jì)也將重新件將重新編譯,設(shè)計(jì)也將重新elaborate和仿真。和仿真。NC Verilog為編譯的元件及其它文件建立一個(gè)庫結(jié)構(gòu)。增量編譯依賴于源文件、SDF文件和命令行參數(shù)。ncverilog還有其它一些命令行參數(shù),如在調(diào)試時(shí)有完全的讀、寫及連接操作,用在調(diào)試時(shí)有完全的讀、寫及連接操作,用 +access + argument ncverilog f run.f + access+RWC要得到源文件行操作能力,用要得到源文件行操作能力,用+linedebug
36、 ncverilog -f run.f +linedebug強(qiáng)制重編譯所有設(shè)計(jì)單元,使用強(qiáng)制重編譯所有設(shè)計(jì)單元,使用+noupdateNC Verilog有什么不同?有什么不同? 使用+access選項(xiàng)可以設(shè)置對所有對象的缺省操作。對象的缺省設(shè)置是無操作。用+access+打開操作,+access-關(guān)掉操作。args可以是R、W、C的任何組合。使用+linedebug可以打開R、W、C,同時(shí)可對源文件行進(jìn)行操作,如在行上設(shè)置一斷點(diǎn)。 使用+noupdate強(qiáng)制重編譯整個(gè)設(shè)計(jì)。缺省時(shí)只重新編譯修改過的文件。只有當(dāng)庫可能被破壞時(shí)才這樣做。 +gui選項(xiàng)啟動圖形界面;-q選項(xiàng)抑制標(biāo)識信息;-s選項(xiàng)使
37、仿真器在時(shí)間0時(shí)停止,進(jìn)入交互模式。波形顯示工具波形顯示工具SignalScan signalscan & 或 signalscan 數(shù)據(jù)庫文件名 &波形顯示工具波形顯示工具SignalScanTitle Bar:顯示這是:顯示這是SignalScan窗口并以數(shù)字編號。若啟動幾窗口并以數(shù)字編號。若啟動幾個(gè)個(gè)SignalScan窗口它們將順序編號。窗口它們將順序編號。Menu Bar:通過菜單可以執(zhí)行所有基本命令。:通過菜單可以執(zhí)行所有基本命令。Tool Bar中的按鈕有:中的按鈕有:copy, cut, paste, undo, delete, zoom, create mar
38、ker, expand buses, launch the Design Brower等等等。用戶可以自定義。等。用戶可以自定義。在命令行輸入在命令行輸入signalscan啟動。啟動。SignalScan窗口包括:窗口包括:注:必須用Design Brower在波形窗口中添加信號。Groups Pane列出用戶建立的波形組列出用戶建立的波形組Waveforms Region顯示加入信號的波形顯示加入信號的波形Names Pane在波形的左邊顯示信號名。這些信號名可以拖拽,在波形的左邊顯示信號名。這些信號名可以拖拽,在在pane中雙擊右鍵可以移動插入的中雙擊右鍵可以移動插入的markerTim
39、e-Display Region顯示兩個(gè)指針的時(shí)間值及其時(shí)間差顯示兩個(gè)指針的時(shí)間值及其時(shí)間差SHM:波形數(shù)據(jù)庫:波形數(shù)據(jù)庫波形顯示工具從數(shù)據(jù)庫,如波形顯示工具從數(shù)據(jù)庫,如SHM數(shù)據(jù)庫中讀取數(shù)據(jù)。使數(shù)據(jù)庫中讀取數(shù)據(jù)。使用下面的系統(tǒng)任務(wù)可以對用下面的系統(tǒng)任務(wù)可以對SHM數(shù)據(jù)庫進(jìn)行操作:數(shù)據(jù)庫進(jìn)行操作:系統(tǒng)任務(wù)描述$shm_open(“waves.shm”); 打開一個(gè)仿真數(shù)據(jù)庫。同時(shí)只能打開一個(gè)庫寫入。$shm_probe();選擇信號,當(dāng)它們的值變化時(shí)寫入仿真庫$shm_close;$shm_save;關(guān)閉仿真庫將仿真數(shù)據(jù)庫寫到磁盤例子:initialbegin $shm_open(“l(fā)ab.s
40、hm”); $shm_probe();endSHM:波形數(shù)據(jù)庫:波形數(shù)據(jù)庫 仿真歷史管理器仿真歷史管理器(Simulation History Manager,SHM)數(shù)據(jù)庫記錄用戶的設(shè)計(jì)在仿真時(shí)數(shù)據(jù)信號的變化。只記錄數(shù)據(jù)庫記錄用戶的設(shè)計(jì)在仿真時(shí)數(shù)據(jù)信號的變化。只記錄用戶要觀察用戶要觀察(probe)的信號。的信號。 用戶可以用用戶可以用$shm_系統(tǒng)任務(wù)打開一個(gè)系統(tǒng)任務(wù)打開一個(gè)SHM數(shù)據(jù)庫,設(shè)數(shù)據(jù)庫,設(shè)置信號探針并將結(jié)果保存到數(shù)據(jù)庫中。這些系統(tǒng)任務(wù)的功置信號探針并將結(jié)果保存到數(shù)據(jù)庫中。這些系統(tǒng)任務(wù)的功能除能除$shm_probe外都非常直觀。對外都非常直觀。對$shm_probe將在下面將在
41、下面詳細(xì)討論。詳細(xì)討論。 用戶必須在仿真前用戶必須在仿真前(時(shí)間時(shí)間0前前)設(shè)置探針信號才能看到設(shè)置探針信號才能看到信號在仿真過程中全部變化。信號在仿真過程中全部變化。用用$shm_probe設(shè)置信號探針設(shè)置信號探針 在$shm_probe中使用scope/node對作為參數(shù)。參數(shù)可以使用缺省值或兩個(gè)參數(shù)都設(shè)置。例如: $shm_probe( ); 觀測當(dāng)前范圍(scope)所有端口 $shm_probe(“A”); 觀測當(dāng)前范圍所有節(jié)點(diǎn) $shm_probe(alu, adder); 觀測實(shí)例alu和adder的所有端口 $shm_probe(“S”, top.alu, “AC”); 觀測:
42、 (1): 當(dāng)前范圍及其以下所有端口,除庫單元 (2):top.alu模塊及其以下所有節(jié)點(diǎn),包括庫單元用用$shm_probe設(shè)置信號探針設(shè)置信號探針 $shm_probe的語法: $shm_probe(scope0, node0, scope1, node1, .); 每個(gè)node都是基于前面scope的說明(層次化的) scope參數(shù)缺省值為當(dāng)前范圍(scope)。node參數(shù)缺省值為指定范圍的所有輸入、輸出及輸入輸出。node說明保存到數(shù)據(jù)庫存的信號“A”“S”“C”“AS”“AC”指定范圍的所有節(jié)點(diǎn)(包括端口(port)指定范圍及其以下所有端口,不包括庫單元內(nèi)部指定范圍及其以下所有端口
43、,包括庫單元內(nèi)部指定范圍及其以下所有節(jié)點(diǎn)(包括端口),不包括庫單元內(nèi)部指定范圍及其以下所有節(jié)點(diǎn)(包括端口),包括庫單元內(nèi)部相關(guān)工具相關(guān)工具Affirma NC VHDL仿真器Envisia Ambit綜合工具Verilog-XL故障仿真器, 用于評價(jià)用戶測試向量的有效性SignalScan-TX圖形界面調(diào)試工具包Affirma equivalence checker完成門級設(shè)計(jì)之間或門級與RTL級之間的靜態(tài)功能驗(yàn)證Affirma model checker形式驗(yàn)證工具,將Verilog或VHDL描述與設(shè)計(jì)說明進(jìn)行驗(yàn)證Affirma model packager,用戶的Verilog, VHDL
44、或C語言可執(zhí)行模型分發(fā)時(shí)進(jìn)行編譯及分發(fā)許可證Affirma Advanced Analysis Environment includes CoverScan, a code profiler, and HAL, a lint checker與Cadence Verilog仿真器相關(guān)的工具有:總結(jié)總結(jié)邏輯仿真運(yùn)行Verilog-XL和NC Verilog仿真器探測及顯示波形本章學(xué)習(xí)內(nèi)容復(fù)習(xí)復(fù)習(xí)1.基于事件的仿真器是如何做到并行的?2.時(shí)間t的事件能否調(diào)度同一時(shí)間t的事件?3.NC Verilog仿真器不支持IEEE 1364 Verilog LRM的什么元件?1. 通過調(diào)度在一個(gè)給定的時(shí)間片內(nèi)發(fā)
45、生的所有事件來得到通過調(diào)度在一個(gè)給定的時(shí)間片內(nèi)發(fā)生的所有事件來得到并行性。實(shí)際上仿真器串行處理給定時(shí)間片內(nèi)的事件,并行性。實(shí)際上仿真器串行處理給定時(shí)間片內(nèi)的事件,但理論上它們都是在同一時(shí)間片內(nèi)發(fā)生的。但理論上它們都是在同一時(shí)間片內(nèi)發(fā)生的。2. 任何時(shí)間片的事件能夠調(diào)度在同一時(shí)間片或其以后產(chǎn)生任何時(shí)間片的事件能夠調(diào)度在同一時(shí)間片或其以后產(chǎn)生的事件。的事件。3.3. NC VerilogNC Verilog希望支持希望支持IEEE 1364 LRMIEEE 1364 LRM規(guī)范全集。目前主規(guī)范全集。目前主要還不支持實(shí)例陣列要還不支持實(shí)例陣列(array of instances)(array of
46、 instances)。請參見產(chǎn)。請參見產(chǎn)品發(fā)布手冊。品發(fā)布手冊。第四章第四章 設(shè)計(jì)舉例設(shè)計(jì)舉例1. 進(jìn)一步學(xué)習(xí)Verilog的結(jié)構(gòu)描述和行為描述2. Verilog混合(抽象)級仿真學(xué)習(xí)目標(biāo):學(xué)習(xí)目標(biāo):語言的主要特點(diǎn)語言的主要特點(diǎn)module(模塊模塊)module能夠表示:能夠表示:物理塊,如物理塊,如IC或或ASIC單元單元邏輯塊,如一個(gè)邏輯塊,如一個(gè)CPU設(shè)計(jì)的設(shè)計(jì)的ALU部分部分整個(gè)系統(tǒng)整個(gè)系統(tǒng)每一個(gè)模塊的描述從關(guān)鍵詞每一個(gè)模塊的描述從關(guān)鍵詞module開始,有一個(gè)開始,有一個(gè)名稱名稱(如(如SN74LS74,DFF,ALU等等),由關(guān)鍵詞等等),由關(guān)鍵詞endmodule結(jié)束。結(jié)束
47、。module是層是層次化設(shè)計(jì)的基次化設(shè)計(jì)的基本構(gòu)件本構(gòu)件邏輯描述放在邏輯描述放在module內(nèi)部內(nèi)部語言的主要特點(diǎn)語言的主要特點(diǎn)模塊端口(module ports)端口在模塊名字端口在模塊名字后的括號中列出后的括號中列出端口可以說明為端口可以說明為input, output及及inout端口等價(jià)于硬件端口等價(jià)于硬件的引腳的引腳(pin)注意模塊的名稱DFF,端口列表及說明模塊通過端口與外部通信語言的主要特點(diǎn)語言的主要特點(diǎn)模塊實(shí)例化模塊實(shí)例化(module instances)module DFF (d, clk, clr, q, qb); .endmodulemodule REG4( d,
48、clk, clr, q, qb); output 3: 0 q, qb; input 3: 0 d; input clk, clr; DFF d0 (d 0, clk, clr, q 0, qb 0); DFF d1 (d 1, clk, clr, q 1, qb 1); DFF d2 (d 2, clk, clr, q 2, qb 2); DFF d3 (d 3, clk, clr, q 3, qb 3);endmodule語言的主要特點(diǎn)語言的主要特點(diǎn)可以將模塊的實(shí)例通過端口連接起來構(gòu)成一個(gè)大的系可以將模塊的實(shí)例通過端口連接起來構(gòu)成一個(gè)大的系統(tǒng)或元件。統(tǒng)或元件。在上面的例子中,在上面的例子中
49、,REG4有模塊有模塊DFF的四個(gè)實(shí)例。注的四個(gè)實(shí)例。注意,每個(gè)實(shí)例都有自己的名字意,每個(gè)實(shí)例都有自己的名字(d0, d1, d2, d3)。實(shí)例。實(shí)例名是每個(gè)對象唯一的標(biāo)記,通過這個(gè)標(biāo)記可以查看每名是每個(gè)對象唯一的標(biāo)記,通過這個(gè)標(biāo)記可以查看每個(gè)實(shí)例的內(nèi)部。個(gè)實(shí)例的內(nèi)部。實(shí)例中端口的次序與模塊定義的次序相同。實(shí)例中端口的次序與模塊定義的次序相同。模塊實(shí)例化與調(diào)用程序不同。每個(gè)實(shí)例都是模塊的一模塊實(shí)例化與調(diào)用程序不同。每個(gè)實(shí)例都是模塊的一個(gè)完全的拷貝,相互獨(dú)立、并行。個(gè)完全的拷貝,相互獨(dú)立、并行。模塊實(shí)例化模塊實(shí)例化(module instances)一個(gè)完整的簡單例子一個(gè)完整的簡單例子 tes
50、t fixture被測試器件被測試器件DUT是一個(gè)二選一多路器。測試裝置是一個(gè)二選一多路器。測試裝置(test fixture)提提供測試激勵(lì)及驗(yàn)證機(jī)制。供測試激勵(lì)及驗(yàn)證機(jī)制。Test fixture使用行為級描述,使用行為級描述,DUT采用門級描述。下面將給出采用門級描述。下面將給出Test fixture的描述、的描述、DUT的描述及如何進(jìn)行混合仿真。的描述及如何進(jìn)行混合仿真。DUT 被測器件 (device under test) module MUX2_1 (out, a, b, sel); / Port declarations output out; input a, b, sel
51、; wire out, a, b, sel; wire sel_, a1, b1; / The netlist not (sel_, sel); and (a1, a, sel_); and (b1, b, sel); or (out, a1, b1);endmodule注釋行注釋行已定義的已定義的 Verilog基基本單元的本單元的實(shí)例實(shí)例a, b, sel是輸入端口,是輸入端口,out是輸出是輸出端口。所有信號通過這些端口從模端口。所有信號通過這些端口從模塊輸入塊輸入/輸出。輸出。另一個(gè)模塊可以通過模塊名及端口另一個(gè)模塊可以通過模塊名及端口說明使用多路器。實(shí)例化多路器時(shí)說明使用多路器。實(shí)例
52、化多路器時(shí)不需要知道其實(shí)現(xiàn)細(xì)節(jié)。這正是自不需要知道其實(shí)現(xiàn)細(xì)節(jié)。這正是自上而下設(shè)計(jì)方法的一個(gè)重要特點(diǎn)。上而下設(shè)計(jì)方法的一個(gè)重要特點(diǎn)。模塊的實(shí)現(xiàn)可以是行為級也可以是模塊的實(shí)現(xiàn)可以是行為級也可以是門級,但并不影響高層次模塊對它門級,但并不影響高層次模塊對它的使用。的使用。多路器由關(guān)鍵多路器由關(guān)鍵詞詞module和和endmodule開始及結(jié)束。開始及結(jié)束。Test Fixture templatemodule testfixture; / Data type declaration / Instantiate modules / Apply stimulus / Display resultsend
53、module為什么沒為什么沒有端口?有端口?由于由于testfixture是最頂層模是最頂層模塊,不會被其它模塊實(shí)例化。塊,不會被其它模塊實(shí)例化。因此不需要有端口。因此不需要有端口。Test Fixture 如何說明實(shí)例module testfixture; / Data type declaration / Instantiate modules MUX2_1 mux (out, a, b, sel); / Apply stimulus / Display resultsendmodule多路器實(shí)例化語句多路器實(shí)例化語句MUXMUX的實(shí)例化語句包括:的實(shí)例化語句包括: 模塊名字:與引用模塊相
54、同模塊名字:與引用模塊相同 實(shí)例名字:任意,但要符合標(biāo)記命名規(guī)則實(shí)例名字:任意,但要符合標(biāo)記命名規(guī)則 端口列表:與引用模塊的次序相同端口列表:與引用模塊的次序相同Test Fixture 過程(procedural block)所有過程在時(shí)間所有過程在時(shí)間0執(zhí)行一次執(zhí)行一次過程之間是并行執(zhí)行的過程之間是并行執(zhí)行的 過程語句有兩種:過程語句有兩種: initial :只執(zhí)行一次:只執(zhí)行一次 always :循環(huán)執(zhí)行:循環(huán)執(zhí)行Test Fixture 過程(procedural block)通常采用過程語句進(jìn)行行為級描述。通常采用過程語句進(jìn)行行為級描述。test fixture的激的激勵(lì)信號在一個(gè)
55、過程語句中描述。勵(lì)信號在一個(gè)過程語句中描述。過程語句的活動與執(zhí)行是有差別的過程語句的活動與執(zhí)行是有差別的所有過程在時(shí)間所有過程在時(shí)間0處于活動狀態(tài),并根據(jù)用戶定義的條件等待處于活動狀態(tài),并根據(jù)用戶定義的條件等待執(zhí)行;執(zhí)行;所有過程并行執(zhí)行,以描述硬件內(nèi)在的并行性;所有過程并行執(zhí)行,以描述硬件內(nèi)在的并行性;Test fixture 激勵(lì)描述module testfixture; / Data type declaration reg a, b, sel; wire out; / MUX instance MUX2_1 mux (out, a, b, sel); / Apply stimulus
56、initial begin a = 0; b = 1; sel = 0; #5 b = 0; #5 b = 1; sel = 1; #5 a = 1; #5 $finish; end / Display resultsendmoduleTime Values a b sel0 0 1 05 0 0 010 0 1 115 1 1 1例子中,例子中,a, b, sela, b, sel說明為說明為regreg類數(shù)據(jù)。類數(shù)據(jù)。regreg類數(shù)據(jù)是寄存器類數(shù)據(jù)信號,在重新類數(shù)據(jù)是寄存器類數(shù)據(jù)信號,在重新賦值前一直保持當(dāng)前數(shù)據(jù)。賦值前一直保持當(dāng)前數(shù)據(jù)。#5 #5 用于指示等待用于指示等待5 5個(gè)時(shí)間單
57、位。個(gè)時(shí)間單位。$ $finishfinish是結(jié)束仿真的系統(tǒng)任務(wù)。是結(jié)束仿真的系統(tǒng)任務(wù)。Test Fixture 響應(yīng)產(chǎn)生響應(yīng)產(chǎn)生$time 系統(tǒng)函數(shù),給出當(dāng)前仿真時(shí)間$monitor 系統(tǒng)任務(wù),若參數(shù)列表中的參數(shù)值發(fā)生變化,則在時(shí)間單位末顯示參數(shù)值。 $monitor (“format_specifiers”, );例如: $monitor($time, o, in1, in2); $monitor($time, , out, , a, , b, , sel); $monitor($time, “%b %h %d %o”, sig1, sig2, sig3, sig4);Verilog提供
58、了一些系統(tǒng)任務(wù)和系統(tǒng)函數(shù),包括:提供了一些系統(tǒng)任務(wù)和系統(tǒng)函數(shù),包括:注意不能注意不能有空格有空格Test Fixture 響應(yīng)產(chǎn)生響應(yīng)產(chǎn)生$time$time是一個(gè)系統(tǒng)函數(shù),返回當(dāng)前返回仿真時(shí)間。時(shí)間是一個(gè)系統(tǒng)函數(shù),返回當(dāng)前返回仿真時(shí)間。時(shí)間用用6464位整數(shù)表示。位整數(shù)表示。$monitor $monitor 在在時(shí)間單位時(shí)間單位末,若參數(shù)列表中的參數(shù)值發(fā)生末,若參數(shù)列表中的參數(shù)值發(fā)生變化則顯示所列參數(shù)的值。由變化則顯示所列參數(shù)的值。由$time$time引起的變化不會顯引起的變化不會顯示。示。$monitor$monitor系統(tǒng)任務(wù)支持不同的數(shù)基。缺省數(shù)基是十進(jìn)系統(tǒng)任務(wù)支持不同的數(shù)基。缺省
59、數(shù)基是十進(jìn)制。支持的數(shù)基還有二進(jìn)制、八進(jìn)制、十進(jìn)制。制。支持的數(shù)基還有二進(jìn)制、八進(jìn)制、十進(jìn)制。完整的完整的Test Fixturemodule testfixture; / Data type declaration reg a, b, sel; wire out; / MUX instance MUX2_1 mux (out, a, b, sel); / Apply stimulus initial begin a = 0; b = 1; sel = 0; #5 b = 0; #5 b = 1; sel = 1; #5 a = 1; #5 $finish; end/ Display resu
60、lts initial $monitor($time, out=%b a=%b b=%b sel=%b, out, a, b, sel);endmodule0 out= 0 a= 0 b= 1 sel= 05 out= 0 a= 0 b= 0 sel= 010 out= 1 a= 0 b= 1 sel= 115 out= 1 a= 1 b= 1 sel= 1結(jié)果輸出結(jié)果輸出時(shí)間單位末的概念時(shí)間單位末的概念timescale 1ns/1ns module testfixture; / Data type declaration reg a, b, sel; wire out; / MUX instance MUX2_1 mux (
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貨物運(yùn)輸合同(水路)
- 醫(yī)療行業(yè)人才引進(jìn)合同
- 房地產(chǎn)開發(fā)商與購房者合同大全
- 勞動用工安全責(zé)任合同模板:應(yīng)對與處理
- 地區(qū)授權(quán)代理合同書
- 基礎(chǔ)設(shè)施建設(shè)項(xiàng)目土地征用合同
- 房地產(chǎn) -鏈家地產(chǎn) 二手房業(yè)務(wù)知識與經(jīng)驗(yàn)介紹
- 安全責(zé)任的落實(shí)強(qiáng)化企業(yè)安全主體責(zé)任考核試卷
- 攝影器材行業(yè)知識產(chǎn)權(quán)保護(hù)與合規(guī)經(jīng)營策略研究考核試卷
- 數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ)考核試卷
- 統(tǒng)計(jì)學(xué)主要計(jì)算公式21098
- 品質(zhì)控制計(jì)劃(QC工程圖)
- DB15T 1193-2017 城市供水行業(yè)反恐怖防范要求
- 汽車營銷學(xué)(全套課件)
- 現(xiàn)澆墩臺身軸線偏位、全高豎直度檢測記錄表
- 激光共聚焦顯微鏡校準(zhǔn)規(guī)范編制說明
- 靜脈竇血栓(共56張)課件
- 樓板配筋計(jì)算表格(自動版)
- GB∕T 1348-2019 球墨鑄鐵件-行業(yè)標(biāo)準(zhǔn)
- 2022年人教版小學(xué)數(shù)學(xué)四年級下冊教案全冊
- 2022年三角函數(shù)和弦與曲式結(jié)構(gòu)
評論
0/150
提交評論