版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)字集成電路設(shè)計(jì)入門--從HDL到版圖于敦山 北大微電子學(xué)系,,課程內(nèi)容(一),介紹Verilog HDL, 內(nèi)容包括:Verilog應(yīng)用Verilog語(yǔ)言的構(gòu)成元素結(jié)構(gòu)級(jí)描述及仿真行為級(jí)描述及仿真延時(shí)的特點(diǎn)及說(shuō)明介紹Verilog testbench激勵(lì)和控制和描述結(jié)果的產(chǎn)生及驗(yàn)證任務(wù)task及函數(shù)function用戶定義的基本單元(p
2、rimitive)可綜合的Verilog描述風(fēng)格,,課程內(nèi)容(二),介紹Cadence Verilog仿真器, 內(nèi)容包括:設(shè)計(jì)的編譯及仿真源庫(kù)(source libraries)的使用用Verilog-XL命令行界面進(jìn)行調(diào)試用NC Verilog Tcl界面進(jìn)行調(diào)試圖形用戶界面(GUI)調(diào)試延時(shí)的計(jì)算及反標(biāo)注(annotation)性能仿真描述如何使用NC Verilog仿真器進(jìn)行編譯及仿真如何將設(shè)計(jì)環(huán)境傳送給NC
3、Verilog周期(cycle)仿真,,課程內(nèi)容(三),,邏輯綜合的介紹 簡(jiǎn)介 設(shè)計(jì)對(duì)象 靜態(tài)時(shí)序分析 (STA) design analyzer環(huán)境 可綜合的HDL編碼風(fēng)格可綜合的Verilog HDLVerilog HDL中的一些竅門 Designware庫(kù) 綜合劃分 實(shí)驗(yàn) (1),課程內(nèi)容(四),,設(shè)計(jì)約束( Constraint) 設(shè)置設(shè)計(jì)環(huán)境 設(shè)置設(shè)計(jì)約束 設(shè)計(jì)優(yōu)化 設(shè)計(jì)編譯 FSM的優(yōu)化 產(chǎn)
4、生并分析報(bào)告 實(shí)驗(yàn) (2),課程內(nèi)容(五),自動(dòng)布局布線工具(Silicon Ensemble)簡(jiǎn)介,,課程安排,共54學(xué)時(shí) (18)講課,27學(xué)時(shí)Verilog (5) Synthesis (3)Place &Route (1)實(shí)驗(yàn),24學(xué)時(shí)Verilog (5)Synthesis (2)Pl
5、ace &Route (1)考試,3學(xué)時(shí),,參考書目,Cadence Verilog Language and SimulationVerilog-XL Simulation with SynthesisEnvisia Ambit Synthesis《硬件描述語(yǔ)言Verilog》 清華大學(xué)出版社,Thomas &Moorby,劉明業(yè)等譯,2001.8,,第二章 Verilog 應(yīng)用,學(xué)習(xí)內(nèi)容使用HDL
6、設(shè)計(jì)的先進(jìn)性Verilog的主要用途Verilog的歷史如何從抽象級(jí)(levels of abstraction)理解電路設(shè)計(jì)Verilog描述,,術(shù)語(yǔ)定義(terms and definitions),硬件描述語(yǔ)言HDL:描述電路硬件及時(shí)序的一種編程語(yǔ)言仿真器:讀入HDL并進(jìn)行解釋及執(zhí)行的一種軟件抽象級(jí):描述風(fēng)格的詳細(xì)程度,如行為級(jí)和門級(jí)ASIC:專用集成電路(Application Specific Integrat
7、ed Circuit)ASIC Vender:芯片制造商,開(kāi)發(fā)并提供單元庫(kù)自下而上的設(shè)計(jì)流程:一種先構(gòu)建底層單元,然后由底層單元構(gòu)造更大的系統(tǒng)的設(shè)計(jì)方法 。自頂向下的設(shè)計(jì)流程:一種設(shè)計(jì)方法,先用高抽象級(jí)構(gòu)造系統(tǒng),然后再設(shè)計(jì)下層單元RTL級(jí):寄存器傳輸級(jí)(Register Transfer Level),用于設(shè)計(jì)的可綜合的一種抽象級(jí)Tcl:Tool command Language, 向交互程序輸入命令的描述語(yǔ)言,,什么是硬件描
8、述語(yǔ)言HDL,具有特殊結(jié)構(gòu)能夠?qū)τ布壿嬰娐返墓δ苓M(jìn)行描述的一種高級(jí)編程語(yǔ)言這種特殊結(jié)構(gòu)能夠:描述電路的連接描述電路的功能在不同抽象級(jí)上描述電路描述電路的時(shí)序表達(dá)具有并行性HDL主要有兩種:Verilog和VHDLVerilog起源于C語(yǔ)言,因此非常類似于C語(yǔ)言,容易掌握VHDL起源于ADA語(yǔ)言,格式嚴(yán)謹(jǐn),不易學(xué)習(xí)。VHDL出現(xiàn)較晚,但標(biāo)準(zhǔn)化早。IEEE 1706-1985標(biāo)準(zhǔn)。,,為什么使用HDL,使用HDL描述設(shè)
9、計(jì)具有下列優(yōu)點(diǎn):設(shè)計(jì)在高層次進(jìn)行,與具體實(shí)現(xiàn)無(wú)關(guān)設(shè)計(jì)開(kāi)發(fā)更加容易早在設(shè)計(jì)期間就能發(fā)現(xiàn)問(wèn)題能夠自動(dòng)的將高級(jí)描述映射到具體工藝實(shí)現(xiàn)在具體實(shí)現(xiàn)時(shí)才做出某些決定HDL具有更大的靈活性可重用可以選擇工具及生產(chǎn)廠HDL能夠利用先進(jìn)的軟件更快的輸入易于管理,,Verilog的歷史,Verilog HDL是在1983年由GDA(GateWay Design Automation)公司的Phil Moorby所創(chuàng)。Phi Moorb
10、y后來(lái)成為Verilog-XL的主要設(shè)計(jì)者和Cadence公司的第一個(gè)合伙人。在1984~1985年間,Moorby設(shè)計(jì)出了第一個(gè)Verilog-XL的仿真器。1986年,Moorby提出了用于快速門級(jí)仿真的XL算法。1990年,Cadence公司收購(gòu)了GDA公司1991年,Cadence公司公開(kāi)發(fā)表Verilog語(yǔ)言,成立了OVI(Open Verilog International)組織來(lái)負(fù)責(zé)Verilog HDL語(yǔ)
11、言的發(fā)展。1995年制定了Verilog HDL的IEEE標(biāo)準(zhǔn),即IEEE1364。,,Verilog的用途,Verilog的主要應(yīng)用包括:ASIC和FPGA工程師編寫可綜合的RTL代碼高抽象級(jí)系統(tǒng)仿真進(jìn)行系統(tǒng)結(jié)構(gòu)開(kāi)發(fā)測(cè)試工程師用于編寫各種層次的測(cè)試程序用于ASIC和FPGA單元或更高層次的模塊的模型開(kāi)發(fā),,抽象級(jí)(Levels of Abstraction),Verilog既是一種行為描述的語(yǔ)言也是一種結(jié)構(gòu)描述語(yǔ)言。Ver
12、ilog模型可以是實(shí)際電路的不同級(jí)別的抽象。這些抽象的級(jí)別包括:,,系統(tǒng)說(shuō)明-設(shè)計(jì)文檔/算法描述RTL/功能級(jí)-Verilog門級(jí)/結(jié)構(gòu)級(jí)-Verilog版圖/物理級(jí)-幾何圖形,行為綜合綜合前仿真邏輯綜合綜合后仿真版圖,,,,,,,,,抽象級(jí)(Levels of Abstraction),在抽象級(jí)上需要進(jìn)行折衷,,系統(tǒng)說(shuō)明-設(shè)計(jì)文檔/算術(shù)描述RTL/功能級(jí)-Verilog門級(jí)/結(jié)構(gòu)級(jí)-
13、Verilog版圖/物理級(jí)-幾何圖形,詳細(xì)程度 低 高,,輸入/仿真速度 高 低,,抽象級(jí)(Levels of Abstraction),Verilog可以在三種抽象級(jí)上進(jìn)行描述,,行為級(jí) 用功能塊之間的數(shù)據(jù)流對(duì)系統(tǒng)進(jìn)行描述 在需要時(shí)在函數(shù)塊之間進(jìn)行調(diào)度賦值。RTL級(jí)/功能級(jí)用功能塊內(nèi)部或功能塊之間的數(shù)據(jù)流和控制信號(hào)描述系統(tǒng)基于一個(gè)已定
14、義的時(shí)鐘的周期來(lái)定義系統(tǒng)模型結(jié)構(gòu)級(jí)/門級(jí)用基本單元(primitive)或低層元件(component)的連接來(lái)描述系統(tǒng)以得到更高的精確性,特別是時(shí)序方面。在綜合時(shí)用特定工藝和低層元件將RTL描述映射到門級(jí)網(wǎng)表,抽象級(jí)(Levels of Abstraction),設(shè)計(jì)工程師在不同的設(shè)計(jì)階段采用不同的抽象級(jí)首先在行為級(jí)描述各功能塊,以降低描述難度,提高仿真速度。在綜合前將各功能模塊進(jìn)行RTL級(jí)描述。用于綜合的庫(kù)中的大多數(shù)單
15、元采用結(jié)構(gòu)級(jí)描述。在本教程中的結(jié)構(gòu)級(jí)描述部分將對(duì)結(jié)構(gòu)級(jí)(門級(jí))描述進(jìn)行更詳細(xì)的說(shuō)明。Verilog還有一定的晶體管級(jí)描述能力及算法級(jí)描述能力,,行為級(jí)和RTL級(jí),MUX的行為可以描述為:只要信號(hào)a或b或sel發(fā)生變化,如果sel為0則選擇a輸出;否則選擇b輸出。,,module muxtwo (out, a, b, sel); input a, b, sel; output out; reg out;always @(
16、sel or a or b) if (! sel) out = a; else out = b;endmodule,這個(gè)行為級(jí)RTL描述不處理X和Z狀態(tài)輸入,并且沒(méi)有延時(shí)。在行為級(jí)模型中,邏輯功能描述采用高級(jí)語(yǔ)言結(jié)構(gòu),如@, while,wait,if, case。Testbench(test fixture)通常采用行為級(jí)描述。所有行為級(jí)結(jié)構(gòu)在testbench描述中都可以采用。RTL模型中數(shù)據(jù)流都是
17、基于時(shí)鐘的。任何時(shí)鐘元件在時(shí)鐘沿處的行為都要精確描述。RTL級(jí)描述是行為級(jí)Verilog的子集。,結(jié)構(gòu)級(jí)描述,結(jié)構(gòu)級(jí)Verilog適合開(kāi)發(fā)小規(guī)模元件,如ASIC和FPGA的單元Verilog內(nèi)部帶有描述基本邏輯功能的基本單元(primitive),如and門。用戶可以定義自己的基本單元UDP(User Defined Privitives)綜合產(chǎn)生的結(jié)果網(wǎng)表通常是結(jié)構(gòu)級(jí)的。用戶可以用結(jié)構(gòu)級(jí)描述粘接(glue)邏輯。下面是MUX的
18、結(jié)構(gòu)級(jí)描述,采用Verilog基本單元(門)描述。描述中含有傳輸延時(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, se
19、lb);endmodule,綜合不支持!,僅需一種語(yǔ)言,Verilog的一個(gè)主要特點(diǎn)是可應(yīng)用于各種抽象級(jí)。建模時(shí)可采用門級(jí)和RTL級(jí)混合描述,在開(kāi)發(fā)testfixture時(shí)可以采用行為級(jí)描述。,,復(fù)習(xí),什么是Verilog ?Verilog是公開(kāi)的嗎?設(shè)計(jì)時(shí)什么時(shí)候采用Verilog RTL級(jí)描述?Verilog適合做什么樣的設(shè)計(jì)?,,解答:Verilog是用于硬件描述的具有時(shí)間概念的并行編程語(yǔ)言Verilog是一種公開(kāi)語(yǔ)言
20、, 由OVI負(fù)責(zé)組織,有IEEE1394標(biāo)準(zhǔn)RTL描述用于綜合,或用于必須精確到每個(gè)時(shí)鐘周期的模型的建模。Verilog適用于各種抽象級(jí)模型的開(kāi)發(fā)及驗(yàn)證,第三章 Cadence仿真器,學(xué)習(xí)內(nèi)容邏輯仿真算法如何啟動(dòng)Verilog-XL和NC Verilog仿真器如何顯示波形,,仿真算法,主要有三種仿真算法基于時(shí)間的(SPICE仿真器)基于事件的(Verilog-XL和NC Verilog仿真器)基于周期的(cycle),
21、,仿真算法,基于時(shí)間的算法用于處理連續(xù)的時(shí)間及變量在每一個(gè)時(shí)間點(diǎn)對(duì)所有電路元件進(jìn)行計(jì)算效率低。在一個(gè)時(shí)間點(diǎn)只有約2~10%的電路活動(dòng)基于事件的算法處理離散的時(shí)間、狀態(tài)和變量只有電路狀態(tài)發(fā)生變化時(shí)才進(jìn)行處理,只模擬哪些可能引起電路狀態(tài)改變的元件。仿真器響應(yīng)輸入引腳上的事件,并將值在電路中向前傳播。是應(yīng)用最為廣泛的仿真算法效率高。“evaluate when necessary”基于周期的仿真以時(shí)鐘周期為處理單位(與時(shí)間無(wú)關(guān))
22、只在時(shí)鐘邊沿進(jìn)行計(jì)算,不管時(shí)鐘周期內(nèi)的時(shí)序使用兩值邏輯 (1, 0) 只關(guān)心電路功能而不關(guān)心時(shí)序,對(duì)于大型設(shè)計(jì),效率高僅適用于同步電路。,,基于事件仿真的時(shí)輪(time wheel),仿真器在編譯數(shù)據(jù)結(jié)構(gòu)時(shí)建立一個(gè)事件隊(duì)列。只有當(dāng)前時(shí)間片中所有事件都處理完成后,時(shí)間才能向前。仿真從時(shí)間0開(kāi)始,而且時(shí)輪只能向前推進(jìn)。只有時(shí)間0的事件處理完后才能進(jìn)入下一時(shí)片。在同一個(gè)時(shí)間片內(nèi)發(fā)生的事件在硬件上是并行的理論上時(shí)間片可以無(wú)限。但
23、實(shí)際上受硬件及軟件的限制。,,一個(gè)時(shí)間片的事件可引起新的事件,在當(dāng)前時(shí)片或以后,時(shí)間片timeslice,,Cadence Verilog仿真器,Verilog-XL和NC Verilog仿真器都是基于事件算法的仿真器。仿真器讀入Verilog HDL描述并進(jìn)行仿真以反映實(shí)際硬件的行為。Verilog-XL和NC Verilog仿真器遵循IEEE 1364 Verilog規(guī)范制定的基于事件的調(diào)度語(yǔ)義仿真器可用于確定想法的可行
24、性用不同的方法解決設(shè)計(jì)問(wèn)題功能驗(yàn)證確定設(shè)計(jì)錯(cuò)誤,,仿真過(guò)程,Verilog仿真分下列步驟:編譯讀入設(shè)計(jì)描述,處理編譯指導(dǎo)(compiler directive),建立一個(gè)數(shù)據(jù)結(jié)構(gòu)定義設(shè)計(jì)的層次結(jié)構(gòu)這一步有時(shí)分為兩步:compilation,elaboration初始化參數(shù)初始化;沒(méi)有驅(qū)動(dòng)的Net缺省值為Z;其它節(jié)點(diǎn)初始值為X。這些值延著設(shè)計(jì)層次傳播。仿真剛開(kāi)始時(shí)間為0時(shí),仿真器將initial和always中的語(yǔ)句執(zhí)
25、行一次,遇到有時(shí)序控制時(shí)停止。這些賦值可產(chǎn)生在時(shí)間0或其后時(shí)間的事件。隨著時(shí)間推進(jìn),被調(diào)度事件的執(zhí)行引起更多的調(diào)度事件,直至仿真結(jié)束。,,Versus 交互式編譯仿真器,Verilog-XL是一個(gè)交互式仿真器,過(guò)程如下:讀入Verilog描述,進(jìn)行語(yǔ)義語(yǔ)法檢查,處理編譯指導(dǎo)(compiler directive)在內(nèi)存中將設(shè)計(jì)編譯為中間格式,將所有模塊和實(shí)例組裝成層次結(jié)構(gòu)(設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu))。源代碼中的每個(gè)元件都被重新表示并能在產(chǎn)生的
26、數(shù)據(jù)結(jié)構(gòu) 找到。決定仿真的時(shí)間精度,在內(nèi)存中構(gòu)造一個(gè)事件隊(duì)列的時(shí)間數(shù)據(jù)結(jié)構(gòu)(時(shí)輪) 。讀入、調(diào)度并根據(jù)事件執(zhí)行每一個(gè)語(yǔ)句,,Verilog-XL采用多種加速算法提高各種抽象級(jí)的仿真速度。每次重新啟動(dòng)Verilog-XL,將重復(fù)上述步驟。當(dāng)進(jìn)入交互模式時(shí),可以輸入Verilog HDL語(yǔ)句并加到設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)中。,Versus 交互式編譯仿真,Verilog-XL仿真器是與Verilog HDL同時(shí)開(kāi)發(fā)的,因此它成為Verilog
27、 HDL仿真器的事實(shí)上的標(biāo)準(zhǔn)。Verilog-XL采用了多種加速算法,對(duì)每種抽象級(jí)描述都能很好的仿真。這些加速算法包括Turbo算法,XL算法及Switch-XL算法。在后面的教程中將對(duì)這些算法進(jìn)行更為詳盡的介紹。,,NC Verilog-全編譯仿真,NC Verilog是全編譯仿真器,它直接將Verilog代碼編譯為機(jī)器碼執(zhí)行。其過(guò)程為:ncvlog編譯Verilog源文件,按照編譯指導(dǎo)(compile directive)檢查
28、語(yǔ)義及語(yǔ)法,產(chǎn)生中間數(shù)據(jù)。ncelab按照設(shè)計(jì)指示構(gòu)造設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),產(chǎn)生可執(zhí)行代碼。除非對(duì)優(yōu)化進(jìn)行限制,否則源代碼中的元件(element)可能被優(yōu)化丟失。產(chǎn)生中間數(shù)據(jù)。ncsim啟動(dòng)仿真核。核調(diào)入設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),構(gòu)造事件序列(時(shí)輪),調(diào)度并執(zhí)行事件的機(jī)器碼。有些事件可能消失(從不執(zhí)行)除非限制優(yōu)化過(guò)程。,,編譯后的所有代碼的執(zhí)行使用同一個(gè)核。當(dāng)重新啟動(dòng)仿真時(shí),要對(duì)修改過(guò)的模塊重新編譯。省略這個(gè)手工過(guò)程的方法是直接對(duì)設(shè)計(jì)進(jìn)行仿真
29、,這將自動(dòng)地對(duì)修改過(guò)的模塊進(jìn)行重新編譯。當(dāng)采用交互模式時(shí),可以使用Tcl命令和針對(duì)NC Verilog的Tcl擴(kuò)展命令。,NC Verilog全編譯仿真,NC Verilog是最近才開(kāi)發(fā)的,但其對(duì)描述的仿真與Verilog-XL完全相同NC Verilog仿真器用同一個(gè)核(kernel)對(duì)所有抽象級(jí)進(jìn)行混合仿真,也就是說(shuō)用戶可以采用各種不同抽象級(jí)混合設(shè)計(jì)。但在門級(jí)仿真的效率差一些。NC Verilog仿真器對(duì)源代碼采用增量編譯方式
30、,減少了編譯時(shí)間。在交互模式下,可以使用Tcl命令及其針對(duì)NC Verilog的擴(kuò)展命令來(lái)修改設(shè)計(jì)和控制仿真。這將在后面進(jìn)行詳細(xì)描述。,,對(duì)Verilog語(yǔ)言的支持,Verilog-XL和NC Verilog計(jì)劃支持Verilog語(yǔ)言全集。用戶可依據(jù)下列標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì):IEEE1364-1995 Verilog語(yǔ)言參考手冊(cè)O(shè)VI 2.0 Verilog語(yǔ)言參考手冊(cè),但不支持:Attributes: Verilog描述中對(duì)象的屬性。
31、函數(shù)中output或inout變?cè)?argument):OVI2.0允許函數(shù)中output和inout變?cè)的軌蚍祷亍?,啟動(dòng)Verilog-XL,在命令窗口啟動(dòng)Verilog-XL: verilog [verilog-xl_options] design_files沒(méi)有option啟動(dòng)的例子 verilog mux.v test.v使用 – c選項(xiàng)只對(duì)設(shè)計(jì)進(jìn)行語(yǔ)法和連接檢查
32、 verilog – c mux.v test.v使用-f選項(xiàng)指定一個(gè)包含命令行參數(shù)的文件 verilog –f run.f run.f文件的內(nèi)容Verilog-XL將所有終端輸出保存到名為verilog.log的文件,,mux.vtest.v-c,,啟動(dòng)NC Verilog,雖然NC Verilog仿真過(guò)程包括三個(gè)分立的步驟(ncvlog,
33、ncelab, ncsim),但仿真時(shí)不需要三個(gè)命令,可以用帶有命令行參數(shù)的ncverilog命令啟動(dòng)NC Verilog: ncverilog [ncverilog_options] verilog-xl_argumentsExamples:ncverilog mux.v test.vncverilog –c mux.v test.vncverilog –f run.f
34、 run.f文件的內(nèi)容NC Verilog將所有終端輸出保存到名為ncverilog.log的文件,,mux.vtest.v-c,,NC Verilog有什么不同?,除+gui、-q和-s這些只影響運(yùn)行時(shí)間的參數(shù)外,其它任何命令行參數(shù)的改變將使設(shè)計(jì)重新編譯、elaborate及仿真。如果更新了源文件及仿真時(shí)用到的SDF文件,則與它們相關(guān)的文件將重新編譯,設(shè)計(jì)也將重新elaborate和仿真。,,NC Verilo
35、g為編譯的元件及其它文件建立一個(gè)庫(kù)結(jié)構(gòu)。增量編譯依賴于源文件、SDF文件和命令行參數(shù)。,ncverilog還有其它一些命令行參數(shù),如,在調(diào)試時(shí)有完全的讀、寫及連接操作,用 +access + argument ncverilog –f run.f + access+RWC要得到源文件行操作能力,用+linedebug ncverilog -f run.f +lined
36、ebug強(qiáng)制重編譯所有設(shè)計(jì)單元,使用+noupdate,NC Verilog有什么不同?,,使用+access選項(xiàng)可以設(shè)置對(duì)所有對(duì)象的缺省操作。對(duì)象的缺省設(shè)置是無(wú)操作。用+access+打開(kāi)操作,+access-關(guān)掉操作。args可以是R、W、C的任何組合。使用+linedebug可以打開(kāi)R、W、C,同時(shí)可對(duì)源文件行進(jìn)行操作,如在行上設(shè)置一斷點(diǎn)。 使用+noupdate強(qiáng)制重編譯整個(gè)設(shè)計(jì)。缺省時(shí)只重新編譯修改過(guò)的文件。
37、只有當(dāng)庫(kù)可能被破壞時(shí)才這樣做。 +gui選項(xiàng)啟動(dòng)圖形界面;-q選項(xiàng)抑制標(biāo)識(shí)信息;-s選項(xiàng)使仿真器在時(shí)間0時(shí)停止,進(jìn)入交互模式。,波形顯示工具—SignalScan,,> signalscan & 或 signalscan 數(shù)據(jù)庫(kù)文件名 &,波形顯示工具—SignalScan,,Title Bar:顯示這是SignalScan窗口并以數(shù)字編號(hào)。若啟動(dòng)幾個(gè)SignalScan窗口它們將順序編號(hào)。
38、Menu Bar:通過(guò)菜單可以執(zhí)行所有基本命令。Tool Bar中的按鈕有:copy, cut, paste, undo, delete, zoom, create marker, expand buses, launch the Design Brower等等。用戶可以自定義。,,在命令行輸入signalscan啟動(dòng)。SignalScan窗口包括:,注:必須用Design Brower在波形窗口中添加信號(hào)。,Groups Pane列
39、出用戶建立的波形組Waveforms Region顯示加入信號(hào)的波形Names Pane在波形的左邊顯示信號(hào)名。這些信號(hào)名可以拖拽,在pane中雙擊右鍵可以移動(dòng)插入的markerTime-Display Region顯示兩個(gè)指針的時(shí)間值及其時(shí)間差,SHM:波形數(shù)據(jù)庫(kù),,,波形顯示工具從數(shù)據(jù)庫(kù),如SHM數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)。使用下面的系統(tǒng)任務(wù)可以對(duì)SHM數(shù)據(jù)庫(kù)進(jìn)行操作:,例子:initialbegin $shm_open(“
40、lab.shm”); $shm_probe();end,SHM:波形數(shù)據(jù)庫(kù),,,仿真歷史管理器(Simulation History Manager,SHM)數(shù)據(jù)庫(kù)記錄用戶的設(shè)計(jì)在仿真時(shí)數(shù)據(jù)信號(hào)的變化。只記錄用戶要觀察(probe)的信號(hào)。 用戶可以用$shm_系統(tǒng)任務(wù)打開(kāi)一個(gè)SHM數(shù)據(jù)庫(kù),設(shè)置信號(hào)探針并將結(jié)果保存到數(shù)據(jù)庫(kù)中。這些系統(tǒng)任務(wù)的功能除$shm_probe外都非常直觀。對(duì)$shm_probe將在下面詳
41、細(xì)討論。 用戶必須在仿真前(時(shí)間0前)設(shè)置探針信號(hào)才能看到信號(hào)在仿真過(guò)程中全部變化。,用$shm_probe設(shè)置信號(hào)探針,,,在$shm_probe中使用scope/node對(duì)作為參數(shù)。參數(shù)可以使用缺省值或兩個(gè)參數(shù)都設(shè)置。例如: $shm_probe( ); 觀測(cè)當(dāng)前范圍(scope)所有端口 $shm_probe(“A”); 觀測(cè)當(dāng)前范圍所有節(jié)點(diǎn) $shm_probe(alu, adder); 觀測(cè)實(shí)例alu和a
42、dder的所有端口 $shm_probe(“S”, top.alu, “AC”); 觀測(cè): (1): 當(dāng)前范圍及其以下所有端口,除庫(kù)單元 (2):top.alu模塊及其以下所有節(jié)點(diǎn),包括庫(kù)單元,用$shm_probe設(shè)置信號(hào)探針,,,$shm_probe的語(yǔ)法: $shm_probe(scope0, node0, scope1, node1, ...); 每個(gè)node都是基于前面scope的說(shuō)明(層
43、次化的) scope參數(shù)缺省值為當(dāng)前范圍(scope)。node參數(shù)缺省值為指定范圍的所有輸入、輸出及輸入輸出。,相關(guān)工具,,Affirma NC VHDL仿真器Envisia Ambit綜合工具Verilog-XL故障仿真器, 用于評(píng)價(jià)用戶測(cè)試向量的有效性SignalScan-TX圖形界面調(diào)試工具包Affirma equivalence checker完成門級(jí)設(shè)計(jì)之間或門級(jí)與RTL級(jí)之間的靜態(tài)功能驗(yàn)證Affirma m
44、odel checker形式驗(yàn)證工具,將Verilog或VHDL描述與設(shè)計(jì)說(shuō)明進(jìn)行驗(yàn)證Affirma model packager,用戶的Verilog, VHDL或C語(yǔ)言可執(zhí)行模型分發(fā)時(shí)進(jìn)行編譯及分發(fā)許可證Affirma Advanced Analysis Environment includes CoverScan, a code profiler, and HAL, a lint checker,,與Cadence Veril
45、og仿真器相關(guān)的工具有:,總結(jié),,邏輯仿真運(yùn)行Verilog-XL和NC Verilog仿真器探測(cè)及顯示波形,,本章學(xué)習(xí)內(nèi)容,復(fù)習(xí),,基于事件的仿真器是如何做到并行的?時(shí)間t的事件能否調(diào)度同一時(shí)間t的事件?NC Verilog仿真器不支持IEEE 1364 Verilog LRM的什么元件?,,通過(guò)調(diào)度在一個(gè)給定的時(shí)間片內(nèi)發(fā)生的所有事件來(lái)得到并行性。實(shí)際上仿真器串行處理給定時(shí)間片內(nèi)的事件,但理論上它們都是在同一時(shí)間片內(nèi)發(fā)生的。
46、任何時(shí)間片的事件能夠調(diào)度在同一時(shí)間片或其以后產(chǎn)生的事件。NC Verilog希望支持IEEE 1364 LRM規(guī)范全集。目前主要還不支持實(shí)例陣列(array of instances)。請(qǐng)參見(jiàn)產(chǎn)品發(fā)布手冊(cè)。,第四章 設(shè)計(jì)舉例,,進(jìn)一步學(xué)習(xí)Verilog的結(jié)構(gòu)描述和行為描述Verilog混合(抽象)級(jí)仿真,,學(xué)習(xí)目標(biāo):,語(yǔ)言的主要特點(diǎn),,,module(模塊),module能夠表示:物理塊,如IC或ASIC單元邏輯塊,如一個(gè)CP
47、U設(shè)計(jì)的ALU部分整個(gè)系統(tǒng)每一個(gè)模塊的描述從關(guān)鍵詞module開(kāi)始,有一個(gè)名稱(如SN74LS74,DFF,ALU等等),由關(guān)鍵詞endmodule結(jié)束。,module是層次化設(shè)計(jì)的基本構(gòu)件,邏輯描述放在module內(nèi)部,語(yǔ)言的主要特點(diǎn)—模塊端口(module ports),,,端口在模塊名字后的括號(hào)中列出,端口可以說(shuō)明為input, output及inout,端口等價(jià)于硬件的引腳(pin),,,注意模塊的名稱DFF,端口列表及說(shuō)明
48、模塊通過(guò)端口與外部通信,,語(yǔ)言的主要特點(diǎn),,,模塊實(shí)例化(module instances),module DFF (d, clk, clr, q, qb); ....endmodulemodule REG4( d, clk, clr, q, qb); output [3: 0] q, qb; input [3: 0] d; input clk, clr; DFF d0 (d[ 0], c
49、lk, 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,,,語(yǔ)言的主要特點(diǎn),,可以將模塊的實(shí)例通過(guò)端口連接起來(lái)構(gòu)成一個(gè)大的系統(tǒng)或元件。在上面的例子中,RE
50、G4有模塊DFF的四個(gè)實(shí)例。注意,每個(gè)實(shí)例都有自己的名字(d0, d1, d2, d3)。實(shí)例名是每個(gè)對(duì)象唯一的標(biāo)記,通過(guò)這個(gè)標(biāo)記可以查看每個(gè)實(shí)例的內(nèi)部。實(shí)例中端口的次序與模塊定義的次序相同。模塊實(shí)例化與調(diào)用程序不同。每個(gè)實(shí)例都是模塊的一個(gè)完全的拷貝,相互獨(dú)立、并行。,,模塊實(shí)例化(module instances),一個(gè)完整的簡(jiǎn)單例子 test fixture,,,被測(cè)試器件DUT是一個(gè)二選一多路器。測(cè)試裝置(test fixt
51、ure)提供測(cè)試激勵(lì)及驗(yàn)證機(jī)制。Test fixture使用行為級(jí)描述,DUT采用門級(jí)描述。下面將給出Test fixture的描述、DUT的描述及如何進(jìn)行混合仿真。,DUT 被測(cè)器件 (device under test),,,module MUX2_1 (out, a, b, sel); // Port declarations output out; input a, b, sel; wire
52、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í)例,a, b, sel是輸入端口,out是輸出端口。
53、所有信號(hào)通過(guò)這些端口從模塊輸入/輸出。另一個(gè)模塊可以通過(guò)模塊名及端口說(shuō)明使用多路器。實(shí)例化多路器時(shí)不需要知道其實(shí)現(xiàn)細(xì)節(jié)。這正是自上而下設(shè)計(jì)方法的一個(gè)重要特點(diǎn)。模塊的實(shí)現(xiàn)可以是行為級(jí)也可以是門級(jí),但并不影響高層次模塊對(duì)它的使用。,多路器由關(guān)鍵詞module和endmodule開(kāi)始及結(jié)束。,,,Test Fixture template,,,module testfixture; // Data type declaration
54、 // Instantiate modules // Apply stimulus // Display resultsendmodule,為什么沒(méi)有端口?,由于testfixture是最頂層模塊,不會(huì)被其它模塊實(shí)例化。因此不需要有端口。,,Test Fixture — 如何說(shuō)明實(shí)例,,,module testfixture; // Data type declaration // I
55、nstantiate modules MUX2_1 mux (out, a, b, sel); // Apply stimulus // Display resultsendmodule,多路器實(shí)例化語(yǔ)句,MUX的實(shí)例化語(yǔ)句包括: 模塊名字:與引用模塊相同 實(shí)例名字:任意,但要符合標(biāo)記命名規(guī)則 端口列表:與引用模塊的次序相同,Test Fixture —過(guò)程(procedural block)
56、,,,所有過(guò)程在時(shí)間0執(zhí)行一次過(guò)程之間是并行執(zhí)行的,過(guò)程語(yǔ)句有兩種: initial :只執(zhí)行一次 always :循環(huán)執(zhí)行,Test Fixture —過(guò)程(procedural block),,,通常采用過(guò)程語(yǔ)句進(jìn)行行為級(jí)描述。test fixture的激勵(lì)信號(hào)在一個(gè)過(guò)程語(yǔ)句中描述。過(guò)程語(yǔ)句的活動(dòng)與執(zhí)行是有差別的所有過(guò)程在時(shí)間0處于活動(dòng)狀態(tài),并根據(jù)用戶定義的條件等待執(zhí)行;所有過(guò)程并行執(zhí)行,以描述硬件內(nèi)在的并行性;,T
57、est fixture 激勵(lì)描述,,,module 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; s
58、el = 0; #5 b = 0; #5 b = 1; sel = 1; #5 a = 1; #5 $finish; end // Display resultsendmodule,Time Values a b sel0 0 1 05 0 0 01
59、0 0 1 115 1 1 1,例子中,a, b, sel說(shuō)明為reg類數(shù)據(jù)。reg類數(shù)據(jù)是寄存器類數(shù)據(jù)信號(hào),在重新賦值前一直保持當(dāng)前數(shù)據(jù)。#5 用于指示等待5個(gè)時(shí)間單位。$finish是結(jié)束仿真的系統(tǒng)任務(wù)。,Test Fixture 響應(yīng)產(chǎn)生,,,$time 系統(tǒng)函數(shù),給出當(dāng)前仿真時(shí)間$monitor 系統(tǒng)任務(wù),若參數(shù)列表中的參數(shù)值發(fā)生變化,則在時(shí)間單位末顯
60、示參數(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提供了一些系統(tǒng)任務(wù)和系統(tǒng)函數(shù),包括:,注
61、意不能有空格,Test Fixture 響應(yīng)產(chǎn)生,,,$time是一個(gè)系統(tǒng)函數(shù),返回當(dāng)前返回仿真時(shí)間。時(shí)間用64位整數(shù)表示。$monitor 在時(shí)間單位末,若參數(shù)列表中的參數(shù)值發(fā)生變化則顯示所列參數(shù)的值。由$time引起的變化不會(huì)顯示。$monitor系統(tǒng)任務(wù)支持不同的數(shù)基。缺省數(shù)基是十進(jìn)制。支持的數(shù)基還有二進(jìn)制、八進(jìn)制、十進(jìn)制。,,,,完整的Test Fixture,,,module testfixture; // Data
62、 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;
63、#5 a = 1; #5 $finish; end// Display results initial $monitor($time,," out=%b a=%b b=%b sel=%b", out, a, b, sel);endmodule,0 out= 0 a= 0 b= 1 sel= 05 out= 0 a= 0 b= 0 sel= 010
64、 out= 1 a= 0 b= 1 sel= 115 out= 1 a= 1 b= 1 sel= 1,結(jié)果輸出,時(shí)間單位末的概念,,,`timescale 1ns/1ns module testfixture; // Data type declaration reg a, b, sel; wire out; // MUX instance MUX2_1 mux (out, a, b
65、, sel); // Apply stimulus initial begin a = 0; b = 1; sel = 0; #5.7 b = 0; #5 b = 1; sel = 1; #5 a = 1; #5 $finish; end// Display results initial $monitor($time,," out
66、=%b a=%b b=%b sel=%b", out, a, b, sel);endmodule,0 out= 0 a= 0 b= 1 sel= 06 out= 0 a= 0 b= 0 sel= 011 out= 1 a= 0 b= 1 sel= 116 out= 1 a= 1 b= 1 sel= 1,結(jié)果輸出,VCD數(shù)據(jù)庫(kù),,,Verilog提供一系列系統(tǒng)任務(wù)用于記錄信
67、號(hào)值變化保存到標(biāo)準(zhǔn)的VCD(Value Change Dump)格式數(shù)據(jù)庫(kù)中。大多數(shù)波形顯示工具支持VCD格式。,VCD數(shù)據(jù)庫(kù),,,用戶可以用$dump*系統(tǒng)任務(wù)打開(kāi)一個(gè)數(shù)據(jù)庫(kù),保存信號(hào)并控制信號(hào)的保存。除$dumpvars外,其它任務(wù)的作用都比較直觀。 $dumpvars將在后面詳細(xì)描述。必須首先使用$dumpfile系統(tǒng)任務(wù),并且在一次仿真中只能打開(kāi)一個(gè)VCD數(shù)據(jù)庫(kù)。在仿真前(時(shí)間0前)必須先指定要觀測(cè)的波形,這樣才能看到信號(hào)完
68、整的變化過(guò)程。仿真時(shí)定期的將數(shù)據(jù)保存到磁盤是一個(gè)好的習(xí)慣,萬(wàn)一系統(tǒng)出現(xiàn)問(wèn)題數(shù)據(jù)也不會(huì)全部丟失。VCD數(shù)據(jù)庫(kù)不記錄仿真結(jié)束時(shí)的數(shù)據(jù)。因此如果希望看到最后一次數(shù)據(jù)變化后的波形,必須在結(jié)束仿真前使用$dumpall。,VCD數(shù)據(jù)庫(kù)是仿真過(guò)程中數(shù)據(jù)信號(hào)變化的記錄。它只記錄用戶指定的信號(hào)。,$dumpvars,,,$dumpvars[(, *)];scope可以是層次中的信號(hào),實(shí)例或模塊。仿真時(shí)所有信號(hào)必須在同一時(shí)間下使用$dumpva
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 集成電路和微電子學(xué)
- 數(shù)字集成電路設(shè)計(jì)與分析
- 數(shù)字集成電路設(shè)計(jì)與實(shí)現(xiàn)
- 數(shù)字集成電路設(shè)計(jì)方法的研究.pdf
- 數(shù)字集成電路綜合設(shè)計(jì)
- 數(shù)字集成電路的設(shè)計(jì)形式
- 數(shù)字集成電路測(cè)試儀測(cè)試通道電路設(shè)計(jì)
- 數(shù)字集成電路的設(shè)計(jì)流程
- 數(shù)字集成電路測(cè)試儀測(cè)試通道電路設(shè)計(jì).pdf
- 數(shù)字集成電路復(fù)習(xí)筆記
- 數(shù)字集成電路課程設(shè)計(jì)報(bào)告——通訊集成電路
- 常用基本數(shù)字集成電路
- 中國(guó)數(shù)字集成電路行業(yè)調(diào)查分析與數(shù)字集成電路龍頭企業(yè)研究
- 數(shù)字集成電路驗(yàn)證方法學(xué)
- 畢業(yè)論文——數(shù)字集成電路
- 數(shù)字集成電路課程實(shí)驗(yàn)報(bào)告
- 數(shù)字集成電路的結(jié)構(gòu)特點(diǎn)cmos電路
- 基于MIPI協(xié)議的LCD驅(qū)動(dòng)接口數(shù)字集成電路設(shè)計(jì).pdf
- 數(shù)字集成電路測(cè)試儀硬件的設(shè)計(jì)
- 數(shù)字集成電路低功耗優(yōu)化設(shè)計(jì)研究.pdf
評(píng)論
0/150
提交評(píng)論