版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
微電子技術(shù)概述集成電路的發(fā)展回顧全球集成電路發(fā)展的路程,基本上可以總結(jié)為六個階段:第一階段:1962年制造出包含12個晶體管的小規(guī)模集成電路(SSI,Small-ScaleIntegration)。第二階段:1966年發(fā)展到集成度為100?1000個晶體管的中規(guī)模集成電路(MSI,Medium-ScaleIntegration)。第三階段:1967?1973年,研制出1000?100000個晶體管的大規(guī)模集成電路(LSI,Large-ScaleIntegration)。第四階段:1977年研制出在30平方毫米的硅晶片上集成15萬個晶體管的超大規(guī)模集成電路(VLSI,VeryLarge-ScaleIntegration)。這是電子技術(shù)的第4次重大突破,從此真正邁入了微電子時代。第五階段:1993年隨著集成了1000萬個晶體管的16MBFLASH和256MBDRAM的研制成功,進入了特大規(guī)模集成電路(ULSI,UltraLarge-ScaleIntegration)時代。第六階段:1994年由于集成1億個元件的1GBDRAM的研制成功,進入巨大規(guī)模集成電路(GSI,GigaScaleIntegration)時代。集成電路產(chǎn)業(yè)分工微電子技術(shù)的迅速發(fā)展得益于集成電路產(chǎn)業(yè)內(nèi)部的細(xì)致分工。目前,集成電路產(chǎn)業(yè)鏈主要包括設(shè)計、制造、封裝和測試,如圖所示。在這歷史過程中,世界IC產(chǎn)業(yè)為適應(yīng)技術(shù)的發(fā)展和市場的需求,其產(chǎn)業(yè)結(jié)構(gòu)經(jīng)歷了3次重大變革。1、以生產(chǎn)為導(dǎo)向的初級階段20世紀(jì)60年代的集成電路產(chǎn)業(yè)就是半導(dǎo)體產(chǎn)業(yè),IC設(shè)計只是附屬產(chǎn)品。70年代出現(xiàn)獨立的IC廠家設(shè)計IC產(chǎn)品。2、Foundry與Fabless設(shè)計公司的崛起20世紀(jì)80年代,工藝設(shè)備生產(chǎn)能力已經(jīng)相當(dāng)強大,但是費用十分昂貴,IC廠家自己的設(shè)計不足以供其飽和運行,因此開始承接對外加工,繼而由部分到全部對外加工,形成了Foundry加工和Fabless設(shè)計的分工。Foundry:芯片代工廠的簡稱,不搞設(shè)計,沒有自己的IC產(chǎn)品,為Fabless提供完全意義上的代工,這使得Fabless可以放心地把產(chǎn)品交給Foundry而無需擔(dān)心知識產(chǎn)權(quán)外流。Fabless:半導(dǎo)體集成電路行業(yè)中無生產(chǎn)線設(shè)計公司的簡稱。Fabless開拓市場后進行產(chǎn)品設(shè)計,將設(shè)計的成果外包給Foundry廠家進行芯片生產(chǎn),生產(chǎn)出來的芯片經(jīng)過封裝測試后由設(shè)計公司自己銷售。3、“四業(yè)分離”的IC產(chǎn)業(yè)20世紀(jì)90年代,IC產(chǎn)業(yè)結(jié)構(gòu)開始向高度專業(yè)化轉(zhuǎn)變,開始形成設(shè)計、制造、封裝、測試獨立成型的局面。這次分工的另一個特征是:系統(tǒng)設(shè)計和IP(知識產(chǎn)權(quán))設(shè)計開始分工,它對集成電路產(chǎn)業(yè)的影響不亞于20世紀(jì)80年代Foundry與Fabless的分工。1.2SoC概述隨著設(shè)計與制造技術(shù)的發(fā)展,集成電路設(shè)計從晶體管的集成發(fā)展到邏輯門的集成,現(xiàn)在又發(fā)展到IP的集成,即SoC(System-on-a-Chip)設(shè)計技術(shù),SoCdesign=systemarchitecture+IC。在經(jīng)過了多年的爭論后,專家們就SoC的定義達成了一致意見。這個定義雖然不是非常嚴(yán)格,但明確地表明了SoC的特征:①實現(xiàn)復(fù)雜系統(tǒng)功能的VLSI;采用超深亞微米工藝技術(shù);②使用一個以上嵌入式CPU/數(shù)字信號處理器(DSP);③外部可以對芯片進行編程;注:晶圓:指硅半導(dǎo)體集成電路所用的硅晶片,由于其形狀為圓形,故稱為晶圓,晶圓是生產(chǎn)集成電路所用的載體。晶圓越大,同一圓片上可生產(chǎn)的IC就越多,可降低成本;但對材料技術(shù)和生產(chǎn)技術(shù)的要求更高,一般認(rèn)為硅晶圓的直徑越大,代表這座晶圓廠有更好的技術(shù),在生產(chǎn)晶圓的過程當(dāng)中,良品率是很重要的條件。工藝等級:通常把0.8?0.35um稱為亞微米,0.25um及其以下稱為深亞微米,0.18um或以下稱為超深亞微米,0.05um及其以下稱為納米級。SoC中包含了微處理器/微控制器、存儲器以及其他專用功能邏輯(DSP等),但并不是包含了微處理器、存儲器以及其他專用功能邏輯的芯片就是SoC。SoC技術(shù)被廣泛認(rèn)同的根本原因,并不在于SoC可以集成多少個晶體管,而在于SoC可以用較短時間被設(shè)計出來。這是SoC的主要價值所在——縮短產(chǎn)品的上市周期,因此,SoC更合理的定義為:SoC是在一個芯片上由于廣泛使用預(yù)定制模塊IP(IntellectualProperty)而得以快速開發(fā)的集成電路。從設(shè)計上來說,SoC就是一個通過設(shè)計復(fù)用達到高生產(chǎn)率的硬件軟件協(xié)同設(shè)計的過程。從方法學(xué)的角度來看,SoC是一套極大規(guī)模集成電路的設(shè)計方法學(xué),包括IP核可復(fù)用設(shè)計/測試方法及接口規(guī)范、系統(tǒng)芯片總線式集成設(shè)計方法學(xué)、系統(tǒng)芯片驗證和測試方法學(xué)。SoC是一種設(shè)計理念,就是將各個可以集成在一起的模塊集成到一個芯片上,他借鑒了軟件的復(fù)用概念,也有了繼承的概念。也可以說是包含了設(shè)計和測試等更多技術(shù)的一項新的設(shè)計技術(shù)。SoC的一般構(gòu)成:從大處來分,SoC含有:.邏輯核包括CPU、時鐘電路、定時器、中斷控制器、串并行接口、其它外圍設(shè)備、I/O端口以及用于各種IP核之間的粘合邏輯等等;.存儲器核包括各種易失、非易失以及Cache等存儲器;.模擬核包括ADC、DAC、PLL以及一些高速電路中所用的模擬電路。現(xiàn)在的SoC芯片上可綜合實現(xiàn)CPU、DSP、數(shù)字電路、模擬電路、存儲器、片上可編程邏輯等多種電路;綜合實現(xiàn)圖像處理、語音處理、通信協(xié)議、通信機能、數(shù)據(jù)處理等功能。SoC按用途可分為兩種類型:一種是專用SoC芯片,是專用集成電路(ASIC)向系統(tǒng)級集成的自然發(fā)展;另一種是通用SoC芯片,將絕大多數(shù)部件,如CPU、DSP、RAM、I/O等集成在芯片上,同時提供用戶設(shè)計所需要的邏輯資源和軟件編程所需的軟件資源。IP核是具有復(fù)雜系統(tǒng)功能的能夠獨立出售的VLSI塊,經(jīng)過驗證并能在設(shè)計中復(fù)用的功能模塊。SoC設(shè)計流程軟硬件協(xié)同設(shè)計SoC通常被稱作系統(tǒng)級芯片或者片上系統(tǒng),作為一個完整的系統(tǒng),其包含硬件和軟件兩部分內(nèi)容。這里所說的硬件指SoC芯片部分,軟件是指運行在SoC芯片上的系統(tǒng)及應(yīng)用程序。既然它是由軟件和硬件組合而成,則在進行系統(tǒng)設(shè)計時,就必須同時從軟件和硬件的角度去考慮。高鍬算法建模與仿真系統(tǒng)需求悅明基本輸入/輸出基本算法需求計克模型通信模型硬件系統(tǒng)側(cè)試軟硬件協(xié)同設(shè)計的SoC設(shè)計流程一個完整的SoC設(shè)計包括系統(tǒng)結(jié)構(gòu)設(shè)計(也稱為架構(gòu)設(shè)計),軟件結(jié)構(gòu)設(shè)計和ASIC設(shè)計(硬件設(shè)計)。SoC設(shè)計與傳統(tǒng)的ASIC設(shè)計最大的不同在于以下兩方面:1)SoC設(shè)計更需要了解整個系統(tǒng)的應(yīng)用,定義出合理的芯片架構(gòu),使得軟硬件配合達到系統(tǒng)最佳工作狀態(tài)。因而,軟硬件協(xié)同設(shè)計被越來越多地采用。SoC設(shè)計是以IP復(fù)用或更大的平臺復(fù)用為基礎(chǔ)的。因而,基于IP復(fù)用的設(shè)計是硬件實現(xiàn)的特點。1.系統(tǒng)需求說明系統(tǒng)設(shè)計首先從確定所需的功能開始,包含系統(tǒng)基本輸入和輸出及基本算法需求,以及系統(tǒng)要求的功能、性能、功耗、成本和開發(fā)時間等。在這一階段,通常會將用戶的需求轉(zhuǎn)換為用于設(shè)計的技術(shù)文檔,并初步確定系統(tǒng)的設(shè)計流程。2.高級算法建模與仿真設(shè)計者將使用如C和C++等高級語言創(chuàng)建整個系統(tǒng)的高級算法模型和仿真模型。目前,一些EDA工具可以幫助我們完成這一步驟。有了高級算法模型,便可以得到軟硬件協(xié)同仿真所需的可執(zhí)行的說明文檔。此類文檔會隨著設(shè)計進程的深入而不斷地完善和細(xì)化。3.軟硬件劃分過程設(shè)計者通過軟硬件劃分來決定哪些功能應(yīng)該由硬件完成,哪些功能應(yīng)該由軟件來實現(xiàn)。這是一個需要反復(fù)評估-修改直至滿足系統(tǒng)需求的過程。軟硬件劃分的合理性對系統(tǒng)的實現(xiàn)至關(guān)重要。有些功能既可以用軟件實現(xiàn)也可以用硬件實現(xiàn),這取決于所要達到的性能指標(biāo)與實現(xiàn)的復(fù)雜程度及成本口4.軟硬件同步設(shè)計由于軟硬件的分工已明確,芯片的架構(gòu)及同軟件的接口也已定義,接下來便可以進行軟硬件的同步設(shè)計了。其中硬件設(shè)計包括RTL設(shè)計和集成、綜合、布局布線及最后的流片。軟件設(shè)計則包括算法優(yōu)化、應(yīng)用開發(fā),以及操作系統(tǒng)、接口驅(qū)動和應(yīng)用軟件的開發(fā)。下面主要介紹硬件(芯片)設(shè)計:基于標(biāo)準(zhǔn)單元的SoC芯片設(shè)計流程.硬件設(shè)計定義說明硬件設(shè)計定義說明描述芯片總體結(jié)構(gòu)、規(guī)格參數(shù)、模塊劃分、使用的總線,以及各個模塊的詳細(xì)定義等。.模塊設(shè)計及IP復(fù)用根據(jù)所劃分出的功能模塊,確定需要重新設(shè)計的部分及可復(fù)用的IP核,對于需要重新設(shè)計的模塊進行設(shè)計;對于可復(fù)用的IP核,通常由于總線接口標(biāo)準(zhǔn)不一致需要做一定的修改。IP核可自主研發(fā)或者購買其他公司的IP。目前,設(shè)計的輸入是采用硬件描述語言(HDL),如Verilog或VHDL,所以,數(shù)字模塊的設(shè)計通常稱為RTL代碼編寫。.頂層模塊集成頂層模塊集成是將各個不同的功能模塊,包括新設(shè)計的與復(fù)用的整合在一起,形成一個完整的設(shè)計。通常采用硬件描述語言對電路進行描述,其中需要考慮系統(tǒng)時鐘/復(fù)位、I/O環(huán)等問題。.前仿真前仿真也叫RTL級仿真,功能仿真。通過HDL仿真器驗證電路邏輯功能是否有效,及HDL描述是否符合設(shè)計所定義的功能期望。在前仿真時,通常與具體的電路物理實現(xiàn)無關(guān),沒有時序信息。.邏輯綜合邏輯綜合是指使用EDA工具把由硬件描述語言設(shè)計的電路自動轉(zhuǎn)換成特定工藝下的網(wǎng)表,即從RTL級的HDL描述通過編譯與優(yōu)化產(chǎn)生符合約束條件的門級網(wǎng)表。網(wǎng)表是一種描述邏輯單元和他們之間互連的數(shù)據(jù)文件。約束條件包括時序、面積和功耗的約束。其中,時序是最復(fù)雜和最關(guān)鍵的約束,決定了整個芯片的性能。在綜合過程中,EDA工具會根據(jù)約束條件對電路進行優(yōu)化,優(yōu)化(這里指的是初次邏輯綜合優(yōu)化)的主要目的是在滿足時序要求的前提下盡量減小芯片面積。與工藝無關(guān)的優(yōu)化缺乏非常準(zhǔn)確的時序信息,因而注意力往往集中在優(yōu)化面積上。等到映射之后時序信息比較準(zhǔn)確時再進行修正更有效。.版圖布局規(guī)劃版圖布局規(guī)劃完成的任務(wù)是確定設(shè)計中各個模塊在版圖上的位置,主要包括:▲I/O規(guī)劃,確定I/O的位置,定義電源和接地口的位置;▲模塊放置,定義各種物理的組、區(qū)域或模塊,對這些大的宏單元進行放置;▲供電設(shè)計,設(shè)計整個版圖的供電網(wǎng)絡(luò),基于電壓降(IRDrop)和電遷移進行拓?fù)鋬?yōu)化。版圖布局規(guī)劃的挑戰(zhàn)是在保證布線能夠走通且性能允許的前提下,如何最大限度地減少芯片面積,是物理設(shè)計過程中需要設(shè)計者付出最大努力的地方之一。.功耗分析▲在設(shè)計中的許多步驟都需要對芯片功耗進行分析,從而決定是否需要對設(shè)計進行改進?!诎鎴D布局規(guī)劃后,需要對電源網(wǎng)絡(luò)進行功耗分析(PNA,PowerNetworkAnalysis),確定電源引腳的位置和電源線寬度?!谕瓿刹季植季€后,需要對整個版圖的布局進行動態(tài)功耗分析和靜態(tài)功耗分析?!藢Π鎴D進行功耗分析以外,還應(yīng)通過仿真工具快速計算動態(tài)功耗,找出主要的功耗模塊或單元。.單元布局和優(yōu)化單元布局和優(yōu)化主要定義每個標(biāo)準(zhǔn)單元的擺放位置并根據(jù)擺放的位置進行優(yōu)化?,F(xiàn)在,EDA工具廣泛支持物理綜合,即將布局和優(yōu)化與邏輯綜合統(tǒng)一起來,引入真實(實際)的連線延時信息,減少了時序收斂所需要的迭代次數(shù)。注:綜合(synthesis):就是把思想轉(zhuǎn)換為實現(xiàn)欲想功能的可制造的設(shè)計,綜合是約束驅(qū)動和基于路徑的:在進行綜合時,對時序的約束和優(yōu)化都是針對路徑的,優(yōu)化時序就是優(yōu)化路徑上的時序,因為選定工藝后,單元的建立保持時間是固定的,因此只有改變路徑來滿足約束,綜合工具總是計算路徑的延時,并根據(jù)邏輯單元對時序的要求來判斷綜合結(jié)果中的路徑是否滿足設(shè)計要求。在邏輯設(shè)計中,時序路徑延時通常由組合邏輯延時和布線延時組成,其中布線延時可以通過工具優(yōu)化,而組合邏輯延時屬于器件延時,因此如何在設(shè)計階段進行優(yōu)化以減少組合邏輯延時(減少組合邏輯的器件級數(shù))是我們需要考慮的。在0.13微米以前的工藝時,互連線上延遲非常的不明顯,標(biāo)準(zhǔn)單元的延遲占絕對主導(dǎo)因素,因此在邏輯綜合后,網(wǎng)表就被直接拿來進行布局布線,時序往往也沒有問題。然而自0.13微米的工藝以來,連線延時越來越起主導(dǎo)作用了。物理綜合是將邏輯綜合和布局布線結(jié)合起來設(shè)計方法學(xué)。簡單地說,物理綜合工具除了具有原來邏輯綜合,簡單的自動放置標(biāo)準(zhǔn)單元的能力外,還會把標(biāo)準(zhǔn)單元在放置過程中實際位置的不同而導(dǎo)致的連線電容、電阻值的種種變化考慮進去,從而得到具有實際物理意義的準(zhǔn)確的RC延遲及時序信息。如果當(dāng)前的布置無法滿足時序要求時,物理綜合工具就會自動地嘗試改變標(biāo)準(zhǔn)單元的放置或優(yōu)化電路結(jié)構(gòu),直到時序滿足輸入約束(或能達到的最優(yōu)情況)為止。傳統(tǒng)的邏輯綜合方法是依賴于連線負(fù)載模型(Wire-loadModel)的,所用的連線延時信息是根據(jù)wire-loadmodel估算出來的。在物理綜合時,就考慮布局布線的問題了(邏輯綜合沒有包含布局布線的信息),計算延時的方法不是通過連線負(fù)載模型得出的,而是通過布局信息得到。它(指物理綜合)在綜合(轉(zhuǎn)換成可制造的設(shè)計)的同時也根據(jù)版圖規(guī)劃(Floorplan)的信息來完成電路布局過程(所以這是一個邏輯綜合+布局結(jié)合的過程),同時進行電路綜合(換成可制造的設(shè)計)和布局的過程能提供準(zhǔn)確的互連線延時信息。物理綜合要求的約束條件通常有芯片尺寸、引腳位置、線上負(fù)載信息、版圖規(guī)劃信息等。一般使用以下兩種操作模式。1)RTL到門級模式:在RTL到門級模式下,物理綜合的輸入信息是RTL級的設(shè)計電路、版圖規(guī)劃信息及含有版圖信息的物理綜合的庫文件。經(jīng)過綜合后,輸出帶有布局(placement)數(shù)據(jù)的門級網(wǎng)表及布局信息。(這是上述意義上的物理綜合過程)2)門級到布局后門級模式:在這一模式下,與RTL到門級模式的唯一區(qū)別是物理綜合的輸入信息是門級網(wǎng)表,而不是RTL級的設(shè)計電路。門級網(wǎng)表是由傳統(tǒng)方法通過邏輯綜合方法運用連線負(fù)載模型wire-loadmodel得出的,通過物理綜合能夠優(yōu)化網(wǎng)表并得到門級電路的布局信息。當(dāng)設(shè)計電路很龐大的時候,RTL到網(wǎng)表需要花費的時間會很長,而由于缺少實際的布局布線的信息,所得的網(wǎng)表對實際布局而言并不是優(yōu)化的。建議在這一級的綜合時不要花太多的時間優(yōu)化,而把優(yōu)化工作由物理綜合完成。換句話說,可以先通過簡單的邏輯綜合將RTL級的設(shè)計轉(zhuǎn)換為網(wǎng)表,然后通過物理綜合對網(wǎng)表進行布局與優(yōu)化,最終得到滿足時序的電路結(jié)構(gòu)。隨著物理綜合工具的不斷成熟,物理綜合在0.18mm以下工藝的大型SOC設(shè)計中被廣泛采用。.靜態(tài)時序分析STA是一種靜態(tài)驗證方法通過對提取電路中所有路徑上的延遲等信息的分析,計算出信號在時序路徑上的延遲,找出違背時序約束的錯誤,如檢查建立時間(SetupTime)和保持時間(HoldTime)是否滿足要求。靜態(tài)時序分析的方法不依賴于激勵,而且可以窮盡所有的路徑,運行速度快,占用內(nèi)存少。它完全克服了動態(tài)時序驗證的缺陷,是SoC設(shè)計中重要的一個環(huán)節(jié)。在后端設(shè)計的很多步驟完成后都要進行靜態(tài)時序分析,如在邏輯綜合完成之后、在布局優(yōu)化之后、在布線完成后等。動態(tài)驗證的缺陷有:①現(xiàn)在SoC的發(fā)展趨勢是將上百萬個甚至更多門級電路集成在一個芯片上,通過動態(tài)仿真的方法驗證這樣的電路設(shè)計,則需要花費很長的時間。②動態(tài)仿真取決于驗證時采用的測試向量的覆蓋率及仿真平臺(Testbench)的性質(zhì),因此往往只能測試到部分邏輯而其他的邏輯被忽略。.形式驗證形式驗證也是一種靜態(tài)驗證方法,與靜態(tài)時序分析一起構(gòu)成設(shè)計的靜態(tài)驗證。在整個設(shè)計流程中會多次引入形式驗證用于比較RTL代碼之間、門級網(wǎng)表與RTL代碼之間,以及門級網(wǎng)表之間在修改之前與修改之后功能的一致性。.可測性電路插入可測性設(shè)計是SoC設(shè)計中的重要一步。通常,對于邏輯電路采用掃描鏈的可測試結(jié)構(gòu),對于芯片的輸入/輸出端口采用邊界掃描的可測試結(jié)構(gòu)。基本思想是通過插入掃描鏈,增加電路內(nèi)部節(jié)點的可控性和可觀測性,以達到提高測試效率的目的。一般在邏輯綜合或物理綜合后進行掃描電路的插入和優(yōu)化。注:在集成電路設(shè)計領(lǐng)域,通常所說的驗證和測試是指兩種不同的事,其主要區(qū)別在于:驗證是在設(shè)計過程中確認(rèn)所設(shè)計的電路功能的正確性,測試是指采用測試設(shè)備檢查芯片是否存在制造或封裝過程中產(chǎn)生的缺陷。驗證可以通過軟件仿真、硬件模擬和形式驗證等方法進行,它是在流片之前要做的。.時鐘樹綜合SoC設(shè)計方法強調(diào)同步電路的設(shè)計,即所有的寄存器或一組寄存器是由同一個時鐘的同一個邊沿驅(qū)動的。構(gòu)造芯片內(nèi)部全局或局部平衡的時鐘鏈的過程稱為時鐘樹綜合。分布在芯片內(nèi)部寄存器與時鐘的驅(qū)動電路構(gòu)成了一種樹狀結(jié)構(gòu),這種結(jié)構(gòu)稱為時鐘樹。時鐘樹綜合是在布線設(shè)計之前進行的。.布線設(shè)計這一階段完成所有節(jié)點的連接。布線工具通常將布線分為兩個階段:全局布線與詳細(xì)布線。在布局之后,電路設(shè)計通過全局布線決定布局的質(zhì)量及提供大致的延時信息。為了減少綜合到布局的迭代次數(shù)及提高布局的質(zhì)量,通常在全局布線之后要提取一次時序信息,盡管此時的時序信息沒有詳細(xì)布線之后得到的準(zhǔn)確,得到的時序信息將被反標(biāo)(Back-Annotation)到設(shè)計網(wǎng)表上(用于替代wireloadmodel估算的連線延時),用于做靜態(tài)時序分析,只有當(dāng)時序得到滿足時才進行到下一階段。詳細(xì)布線是布局工具做的最后一步,在詳細(xì)布線完成之后,可以得到精確的時序信息。.寄生參數(shù)提取通過提取版圖上內(nèi)部互連所產(chǎn)生的寄生電阻和電容值,得到SPEF文件,SPEF通過PT轉(zhuǎn)換成SDF被反標(biāo)回設(shè)計,用于做靜態(tài)時序分析和后仿真。.后仿真后仿真也叫門級仿真、時序仿真、帶反標(biāo)的仿真,需要利用在布局布線后獲得的精確延遲參數(shù)和網(wǎng)表進行仿真,驗證網(wǎng)表的功能和時序是否正確。后仿真一般使用標(biāo)準(zhǔn)延時(SDF,StandardDelayFormat)文件來輸入延時信息。.ECO修改1)ECO修改是工程修改命令的意思。2)這一步實際上是正常設(shè)計流程的一個例外。當(dāng)在設(shè)計的最后階段發(fā)現(xiàn)個別路徑有時序問題或邏輯錯誤時,有必要通過ECO對設(shè)計的局部進行小范圍的修改和重新布線,并不影響芯片其余部分的布局布線。在大規(guī)模的IC設(shè)計中,ECO修改是一種有效、省時的方法,通常會被采用。.物理驗證物理驗證是對版圖的設(shè)計規(guī)則檢查(DRC,DesignRuleCheck)及邏輯圖網(wǎng)表和版圖網(wǎng)表比較(LVS,LayoutVs.Schematic)oDRC用以保證制造良率。LVS用以確認(rèn)電路版圖網(wǎng)表結(jié)構(gòu)是否與其原始電路原理圖(網(wǎng)表)一致。SOC設(shè)計與EDA工具電子系統(tǒng)級設(shè)計與工具SoC的設(shè)計趨勢正從RTL向電子系統(tǒng)級(ESL,ElectronicSystemLevel)轉(zhuǎn)移。ESL可以幫助設(shè)計者從更高層次進行電路設(shè)計,能協(xié)助工程師進行系統(tǒng)級設(shè)計、結(jié)構(gòu)定義、算法開發(fā)、軟硬件劃分和協(xié)同設(shè)計、建立虛擬原型機,以及驗證不同架構(gòu)方案的可行性等。目前的ESL工具通常采用工業(yè)標(biāo)準(zhǔn)語言進行建模,如C/C++、SystemC、SystemVerilog等,常用的軟硬件協(xié)同設(shè)計驗證工具有Mentor公司的Seamless和CarbonDesignSystems公司的SoCDesigner。Mentor的Catapult可實現(xiàn)C++到RTL級的綜合(高層次的綜合)。驗證的分類及相關(guān)工具SOC設(shè)計中驗證包含以下幾個方面:▲驗證原始描述的正確性;▲驗證設(shè)計的邏輯功能是否符合設(shè)計規(guī)范的要求;▲驗證設(shè)計結(jié)果的時序是否符合原始設(shè)計規(guī)范的性能指標(biāo);▲驗證結(jié)果是否包含違反物理設(shè)計規(guī)則的錯誤。驗證方法的分類.動態(tài)驗證動態(tài)驗證也叫仿真,是指從電路的描述提取模型,然后將外部激勵信號或數(shù)據(jù)施加于此模型,通過觀察該模型在外部的激勵信號作用下的實時響應(yīng)來判斷該電路系統(tǒng)是否實現(xiàn)了預(yù)期的功能。仿真目前最常用的是基于事件驅(qū)動的方法,也在發(fā)展周期驅(qū)動的方法。.靜態(tài)驗證靜態(tài)驗證是指采用分析電路的某些特性是否滿足設(shè)計要求的方法,來驗證電路的正確與否。形式驗證時近幾年來興起的一種驗證方法,它需要有一個正確的模型作為參考,把待驗證的電路與正確的模型進行比較,并給出不同版本的電路是否在功能上等效的結(jié)論,他利用理論證明的方法來驗證設(shè)計結(jié)果的正確性。比較動態(tài)驗證和靜態(tài)驗證,各有優(yōu)勢和不足。動態(tài)仿真主要是模擬電路的功能行為,必須給出適當(dāng)?shù)募钚盘?,然而很難選擇激勵來達到覆蓋電路所有功能的目的,同時動態(tài)仿真很耗費時間。靜態(tài)驗證只限于數(shù)字邏輯單路,其準(zhǔn)確性低于動態(tài)驗證,偶爾還會提供錯誤信息。動態(tài)驗證及相關(guān)工具動態(tài)驗證的工具很多,主要由電路級仿真工具,如SPICE、TimeMill、NanoSim,以及邏輯仿真工具,如VCS、Verilog-XL、NCVerilog、Modelsiim等?!娐芳壏抡婀ぞ吣M晶體管級的電路行為特性,主要用于模擬電路的設(shè)計。▲邏輯仿真工具可以仿真行為級、RTL級和門級網(wǎng)表的數(shù)字電路,有Synopsys的VCS和Mentor的Modelsim。靜態(tài)驗證及相關(guān)工具靜態(tài)驗證包括形式驗證(從功能上對設(shè)計進行驗證)和靜態(tài)時序分析(從時序上對設(shè)計驗證)?!问津炞C工具有Synopsys公司的Formality及Cadance公司的EncounterConformalEquivalentChecker等?!o態(tài)時序分析工具有Synopsys公司的Primetime。注:下面列出IC前端設(shè)計流程中使用到的EDA工具數(shù)字前端設(shè)計:以生成可以布局布線的網(wǎng)表為終點。數(shù)字后端設(shè)計:以生成可以送交foundry進行流片的GDS2文件為終點。
1 硬件設(shè)計定義 1模塊設(shè)計及IP復(fù)用頂層模塊集成 ]前仿真、邏輯綜合1靜態(tài)時序分析r 版圖布局規(guī)劃 ’電源戰(zhàn)]絡(luò)功耗分析] 單元布局和優(yōu)化 ’在DFT插入*t1靜態(tài)時序分析'1時鐘樹綜合腦式驗證 :布線設(shè)計功耗分析「 F信號完整性1 憂憶 1t寄生基數(shù)提取」( 形式驗證靜態(tài)時序分析布局后仿真反。修改,+、5 r1 r靜■態(tài)時序分折后仿真形式騙證 d &物理驗證r ~交付芯片制造廠圖中沒有物理綜合,這是一個傳統(tǒng)的流程:邏輯綜合+布局布線,目前的一個趨勢是邏輯綜合和布局布線的集成,即物理綜合,所以物理綜合慢慢的取代了從邏輯綜合到布線這一系列步驟,即物理綜合工具可以完成從邏輯綜合到布線之間多個工具完成的功能。
eetrequirementsNETLIST▲以往的方法是對網(wǎng)表文件(綜合后文件)做門級仿真。此種方式的仿真時間較長,且覆蓋率相對較低。eetrequirementsNETLIST▲以往的方法是對網(wǎng)表文件(綜合后文件)做門級仿真。此種方式的仿真時間較長,且覆蓋率相對較低。形式驗證布局布線前靜態(tài)時序分析▲形式驗證+靜態(tài)時序分析。此種方法仿真時間短,覆蓋率高,為業(yè)界普遍采用的方式。SYNOPSYS—DesignCompiler:傳統(tǒng)的邏輯綜合工具
Ftgure1-1DesignCompilerandtheDesignRowHDLHDLCompilerDesignConpIerConstraintsTecnnoiog/Library七~1ITimingoptimization'synthesis1DesignConpIerConstraintsTecnnoiog/Library七~1ITimingoptimization'synthesis1closurej-SymbolLbrarjjIPDesignAar
LibraryOptimizednellist初次綜合時,使用wireloadmodel來估算延時。OptimizednellistSYNOPSYS-PrimeTime在初次進行靜態(tài)時序分析時,仍然采用wireloadmodel來估算電路時序。▲布局布線前(即初次綜合和STA分析時),由于無布線信息,所以連線(wire)延時只能夠通過連接關(guān)系(與fanout相關(guān))估計得到?!?dāng)特征尺寸降低時,此種估計方法越來越不準(zhǔn)確,所以可以使用physicalsynthesis技術(shù)?!诓季植季€后,布局布線工具可以提取出實際布線后的線網(wǎng)負(fù)載電容,此時PT可以計算實際延時(back-annote)。可以將延時信息寫入SDF文件用,然后反向標(biāo)注到DC綜合工具進行時序的優(yōu)化。PT使用方法與DC類似.指定使用的庫.讀入網(wǎng)表文件.指定時序約束及工作環(huán)境.進行靜態(tài)時序分析,給出報告。
以上是后端設(shè)計流程及EDA工具,也是傳統(tǒng)的流程。目前隨著EDA軟件的功能越來越強,各大EDA公司都推出了RTL到GDSII的完整工具包。這樣大大減少了使用不同工具帶來的數(shù)據(jù)格式不同等問題,如Synopsys的Galaxy平臺、Candence公司的SOCEncounter、Magma公司的Blaster等。4SOC系統(tǒng)結(jié)構(gòu)設(shè)計嵌入式軟件是運行在SOC芯片之上的。軟件和硬件的有效結(jié)合決定了系統(tǒng)的效率和性能。電子系統(tǒng)級(ESL,electronicsystemlever)設(shè)計以抽象方式來描述SOC系統(tǒng),給軟硬件工程師提供一個虛擬的硬件原型平臺(已經(jīng)比較細(xì)節(jié)化了,面向某一應(yīng)用領(lǐng)域的基礎(chǔ)底層平臺,針對該領(lǐng)域內(nèi)不同應(yīng)用的特點進行微小的擴展或者裁剪即可滿足需求,增加了設(shè)計的復(fù)用性一ESL三步走的最有一步的結(jié)果),用以進行硬件系統(tǒng)結(jié)構(gòu)的探索和軟件程序的開發(fā)。SOC的系統(tǒng)結(jié)構(gòu)設(shè)計的過程可以分為以下三個階段(上述的三步走):功能設(shè)計階段、應(yīng)用驅(qū)動的系統(tǒng)結(jié)構(gòu)設(shè)計階段及平臺導(dǎo)向的系統(tǒng)結(jié)構(gòu)設(shè)計階段。(1)功能設(shè)計階段這一階段的主要目標(biāo)是根據(jù)應(yīng)用的需要,正確地定義系統(tǒng)功能,以此為基礎(chǔ)建立一個面向應(yīng)用需求的系統(tǒng)功能模型。需要考慮以下問題:①正確定義系統(tǒng)的輸入/輸出;②確定系統(tǒng)中各功能組件的功能行為;③各功能組件之間的互連結(jié)構(gòu)和通信方式。(2)應(yīng)用驅(qū)動的系統(tǒng)結(jié)構(gòu)設(shè)計階段主要目標(biāo)是針對特定的應(yīng)用需求(如需要支持播放視頻、音頻等),確定SOC的系統(tǒng)結(jié)構(gòu)。將設(shè)計劃分為一系列硬件模塊和軟件任務(wù),并確定各軟硬件之間的接口規(guī)范。系統(tǒng)結(jié)構(gòu)設(shè)計的最初級階段需要確定芯片上使用的處理器(如處理器類型及個數(shù))、總線(總線標(biāo)準(zhǔn)、總線架構(gòu))和存儲器類型(需要哪些處理器)。在這一階段也確定了軟硬件的劃分,如那些任務(wù)用處理器完成,哪些任務(wù)用硬件加速器完成。通過這一階段,可以得到一個高抽象層次的SOC系統(tǒng)結(jié)構(gòu)平臺。(3)平臺導(dǎo)向的系統(tǒng)結(jié)構(gòu)設(shè)計階段主要目標(biāo)是創(chuàng)建一個較低抽象層次的SOC硬件平臺(即上面說的硬件原型平臺)。在該階段需要關(guān)注更多的設(shè)計細(xì)節(jié),如處理器的型號、存儲器容量、總線仲裁等。本階段所構(gòu)建的SOC平臺將是面向某一應(yīng)用領(lǐng)域(如手機)的基礎(chǔ)底層平臺,針對該領(lǐng)域內(nèi)不同的應(yīng)用特點僅需對該平臺進行微小的擴展或裁減即可,大大增加設(shè)計復(fù)用性?;谠撾A段構(gòu)建的SOC平臺進行設(shè)計的方法稱為基于平臺的設(shè)計方法。SOC中常用的處理器分為三類:通用處理器、數(shù)字信號處理器和可配置處理器。通用處理器:主要負(fù)責(zé)控制、操作系統(tǒng)平臺和一般的信號處理等任務(wù)。無法滿足計算密集型任務(wù)對于實時性的需要。如ARM系列處理器、MIPS系列處理器、PowerPC系列處理器數(shù)字信號處理器DSP:常常被作為SOC中的核心處理器或者在多核SOC中被作為對計算密集型任務(wù)進行加速的處理器。如TI系列DSP、ADI系列DSP、Freescale系列DSP??膳渲锰幚砥鳎横槍Σ煌瑧?yīng)用的需求,允許用戶配置具有不同體系結(jié)構(gòu)的處理器。如Tensilica系列處理器、Nios系列處理器、ARC系列處理器。SOC中常用的總線較有影響力的片上總線標(biāo)準(zhǔn)有ARM公司的AMBA總線、IBM公司的CoreConnect總線、SilicoreCorp公司的Wishbone總線和Altera公司的Avalon總線等。(1)AMBA總線標(biāo)準(zhǔn)包括AHB(AdvancedHigh-performanceBus)總線、ASB(AdvancedSystemBus)總線、APB(AdvancedPeripheralBus)總線和AXI總線。AHB和ASB總線連接高性能系統(tǒng)模塊,ASB是舊版本的系統(tǒng)總線,使用三態(tài)總線,目前已被新版本的AHB總線所代替。AHB是AMBA2.0標(biāo)準(zhǔn),而AXI是最新推出的新一代AMBA3.0標(biāo)準(zhǔn)。APB連接低性能外圍設(shè)備。(2)CoreConnect總線包括PLB(ProcesorLocalBus)總線、OPB(On-ChipPeripheralBus)總線、DCR(DeviceControlRegister)總線在CoreConnect總線中,PLB總線連接高性能設(shè)備如處理器、存儲器接口、DMA等。OPB總線連接低性能設(shè)備如各種外圍接口等DCR總線主要用來訪問和配置PLB和OPB總線設(shè)備的狀態(tài)和控制寄存器(3)Wishbone總線是由Silicore公司推出的片上總線標(biāo)準(zhǔn),這種總線具有簡單、靈活和開放的特點,現(xiàn)在已經(jīng)被OpenCores采用并組織維護。在Wishbone中,所有核都連接在同一標(biāo)準(zhǔn)接口上。當(dāng)需要時,系統(tǒng)設(shè)計者可以選擇在一個微處理器核上實現(xiàn)兩個接口,一個給高速設(shè)備,另一個給低速設(shè)備一個Wishbone系統(tǒng)由主設(shè)備、從設(shè)備、INTERCON和SYSCON組成。其中INTERCON定義了主設(shè)備和從設(shè)備之間的連接方式,而SYSCON用來產(chǎn)生系統(tǒng)時鐘和復(fù)位信號在Wishbone中有4種不同的連接方式可以使用,它們分別是點對點、數(shù)據(jù)流、共享總線和交叉連接方式(4)AVALON總線主要應(yīng)用在FPGA中,作為SOPC(SystemOnaProgrammableChip)中的片上總線。SOPC:System-on-a-Programmable-Chip,即可編程片上系統(tǒng),可編程片上系統(tǒng)(SOPC)是一種特殊的嵌入式系統(tǒng):首先它是片上系統(tǒng)(SOC),即由單個芯片完成整個系統(tǒng)的主要邏輯功能;其次,它是可編程系統(tǒng),具有靈活的設(shè)計方式,可裁減、可擴充、可升級,并具備軟硬件在系統(tǒng)可編程的功能。OCP:開放核協(xié)議(OCP,OpenCoreProtocol)是由OCP-IP組織定義的IP互連協(xié)議。它不是總線定義,而是在IP核之間的一種獨立于總線之外的高性能接口規(guī)范。一個IP核可以是處理器、外圍設(shè)備或者片上總線(帶有這一標(biāo)準(zhǔn)接口的總線),OCP在兩個通信實體之間定義了點到點的接口。SOC中典型的存儲器存儲器分RAM、ROM和FLASH三種。(1)RAM有SRAM、DRAM兩大類:▲SRAM(StaticRAM,靜態(tài)隨機存儲器),是目前讀寫最快的存儲設(shè)備,可以達到和處理器的時鐘同步,SRAM存儲器的接口簡單,比較容易設(shè)計,SRAM在系統(tǒng)中常常作為處理器的緩存(如CPU的一級緩存和二級緩存)。但是一個SRAM的每1位需要6個晶體管,因此相同存儲空間的RAM的面積較大,在SoC中只能少量使用。DRAM(DynamicRAM,動態(tài)隨機存取存儲器),通常都用作計算機內(nèi)的主存儲器。DRAM保留數(shù)據(jù)的時間很短,速度也比SRAM慢,不過它還是比任何的ROM都要快。計算機內(nèi)存就是DRAM的。DRAM分為很多種,最常見的就是SDRAM、DDRRAM。SDRAM:SDRAM(同步動態(tài)隨機存儲器)的價格低、體積小、容量大,與SRAM相比,SDRAM的控制邏輯復(fù)雜,速度較慢。DDRAM:DDRAM(雙倍傳輸速度隨機存儲器)采用雙倍數(shù)據(jù)技術(shù),這種改進型的RAM和SDRAM是基本一樣的,不同之處在于它可以在一個時鐘讀寫兩次數(shù)據(jù),支持在時鐘的上升沿和下降沿同時進行數(shù)據(jù)的傳輸,從而增加數(shù)據(jù)的吞吐量。其最大帶寬可達SDRAM的兩倍。當(dāng)然它的設(shè)計也更復(fù)雜。這是目前電腦中用得最多的內(nèi)存,而且它有著成本優(yōu)勢。在很多高端的顯卡上,也配備了高速DDRAM來提高帶寬,這可以大幅度提高3D加速卡的像素渲染能力。ROM(只讀存儲器)是一種只讀存儲器,包括掩膜式ROM、可編程ROM(PROM)、可擦除的可編程ROM(EPROM)和電可擦除的可編程ROM(EEPROM)等。ROM在SoC中一般用來存儲固定的代碼或資料。FLASH(閃存),它結(jié)合了ROM和RAM的長處,不僅具備電子可擦出可編程(EEPROM)的性能,還不會斷電丟失數(shù)據(jù)同時可以快速讀取數(shù)據(jù)(NVRAM的優(yōu)勢),U盤和MP3里用的就是這種存儲器。NORFlash和NANDFlash是現(xiàn)在市場上兩種主要的Flash存儲器。NORFLASH的特點是芯片內(nèi)可以直接運行程序,而不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,但寫入和擦除速度較低,這大大影響了它的性能。NANDFLASH寫入和擦除速度很快,但NANDFLASH沒有采取內(nèi)存的隨機讀取技術(shù),它的讀取是以一次讀取一快的形式來進行的,通常是一次讀取512個字節(jié),采用這種技術(shù)的Flash比較廉價。用戶不能直接運行NANDFlash上的代碼,因此好多使用NANDFlash的開發(fā)板除了使用NANDFLASH。以外,還作上了一塊小的NORFlash來運行啟動代碼。多核SOC的系統(tǒng)結(jié)構(gòu)設(shè)計多核與多處理器:①多核處理器(CMP )是指在一枚處理器(processor)中集成兩個或多個完整的計算引擎(內(nèi)核core)。多核處理器可以在處理器內(nèi)部共享緩存。形象的比喻是:雙核心可以形象比喻成一套兩居室,房子里有兩個屋子,每個屋子都是獨立存在的,不互相干擾。出門時也可以各走各的臥室門到大門口。不過如果因為某些原因,例如放音響聲音過大等情況,在同一套兩居室里的兩個屋子之間也會相互影響。而且房子里的其他設(shè)施都是共享的,所以多核共享緩存。②多處理器(SMPSymmetricMulti-Processing)是指在一個計算機上匯集了一組處理器(多CPU),多CPU則是真正意義上的多核心,不光是處理器核心有多個,其他例如緩存等硬件配置也都是多份的。即每個CPU都有自己的緩存。各CPU之間共享內(nèi)存子系統(tǒng)以及總線結(jié)構(gòu)。形象的比喻是:雙CPU,他就是名副其實的兩套房子,每個房子有每個房子的大門,不會出現(xiàn)雙核心那樣一個房間因為某些原因影響另一間,即使某個房子播放音響也不會影響到另外一套房子。每個房子都有自己的設(shè)施。但是兩個房子在一個小區(qū),所以共享小區(qū)的公共設(shè)施,所以多CPU之間共享內(nèi)存、總線結(jié)構(gòu)等。③而超線程則是用軟件將一個物理核心模擬出雙核的效果。形象的比喻是:超線程技術(shù)實際上就相當(dāng)于把一個房間人為的通過添加屏風(fēng)或者推拉門來劃分成兩小間,雖然表面上每間居住者可以自己干自己的事,不互相影響,但是在出門時都要走同一個臥室門。▲核心與核心之間的通信是由CPU芯片內(nèi)部的總線完成的;而多塊CPU芯片之間的通信則應(yīng)該有CPU與CPU之間的總線完成,如上面所述的AMBA等總線。上述說的是一個處理器芯片上集成核數(shù)的問題,然則在SOC中,本身就是一個芯片集成了一個系統(tǒng),因此多核SOC和多處理器SOC是一個概念,因為都是多個處理引擎集成在一個芯片中。因此在書本中是這么表達的:多核SOC或多處理器SOC——P45《SOC的設(shè)計方法與實現(xiàn)》第二版。原文中還說明:實際上,由于不同的任務(wù)可在很大的程度上互相獨立運行,如音頻和視頻處理及網(wǎng)絡(luò)協(xié)議處理等,可以將具有內(nèi)在執(zhí)行并行性的復(fù)雜任務(wù)分解為一系列子任務(wù),并行執(zhí)行,因此我們說多核SOC中的核不僅僅指通用處理器核,也可以是音頻解碼核、視頻解碼核及網(wǎng)絡(luò)協(xié)議處理器核。多核結(jié)構(gòu)的設(shè)計可以復(fù)用現(xiàn)有的成熟的單核處理器作為處理器核心??捎玫牟l(fā)性設(shè)計師可以利用許多不同級別的并發(fā)性,通常這些級別的并發(fā)性可歸納為3中:指令并級發(fā)性、數(shù)據(jù)級并發(fā)性和任務(wù)級并發(fā)性。(1)指令級并發(fā)性(ILP,InstructionLevelParallelism)利用指令之間的無關(guān)性,使得多條指令可以同時執(zhí)行,改變傳統(tǒng)串行執(zhí)行指令造成的較大延時,提高指令和程序的執(zhí)行效率。最常見的指令并行是利用指令流水線保證多條相互無關(guān)的指令重疊執(zhí)行不同的流水階段,從而提高指令執(zhí)行的吞吐率。(2)數(shù)據(jù)級并發(fā)性(DLP,DataLevelParallelism)是指,一組待處理的數(shù)據(jù)內(nèi)部存在較為松散的依賴關(guān)系,在理論上可以對這些松散數(shù)據(jù)并行執(zhí)行(3)任務(wù)級并行(TLP,TaskLevelParallelism),由于系統(tǒng)往往需要完成多種功能,而這些功能可能獨立于系統(tǒng)中的其他功能。任務(wù)級并行性可以從原本的一個串行任務(wù)中提取出來。與前兩類并行性相比,任務(wù)級并行性對于結(jié)構(gòu)設(shè)計師更為重要。多核SOC設(shè)計中的系統(tǒng)結(jié)構(gòu)選擇(1)處理器結(jié)構(gòu)需要重點考慮對處理器的選型、處理器間的互連結(jié)構(gòu)及存儲器的共享方式等方面。因為多核SOC中的核不僅僅指通用處理器核,也可以是音頻解碼核、視頻解碼核及網(wǎng)絡(luò)協(xié)議處理器核。所以多核結(jié)構(gòu)可以根據(jù)處理器核的特性分為同構(gòu)多核結(jié)構(gòu)和異構(gòu)多核結(jié)構(gòu)。①同構(gòu)多核結(jié)構(gòu):一個芯片上集成了多個相同的處理器,這些處理器執(zhí)行相同或類似的任務(wù),多用于服務(wù)器市場。②異構(gòu)多核結(jié)構(gòu):處理器中只有一個或數(shù)個同用核心承擔(dān)任務(wù)指派功能,而諸如協(xié)處理器、加速器和外設(shè)等功能都可以通過專業(yè)核心如DSP來完成。應(yīng)用很廣泛,比如多媒體應(yīng)用中。(2)核間通信多核處理器的各個核心之間需要進行數(shù)據(jù)共享與同步,因此其硬件結(jié)構(gòu)必須支持核間通信。高效的通信機制是保證多核處理器高性能的關(guān)鍵。目前比較主流的片上高效通信機制有兩種,一種是基于總線共享Cache結(jié)構(gòu),一種是基于片上的互連結(jié)構(gòu)?!诳偩€共享cache結(jié)構(gòu),是指每個處理器內(nèi)核擁有共享的二級或三級cache(每個處理器核擁有私有的一級cache),cache中保存比較常用的數(shù)據(jù),并通過連接核心的總線進行通信?!谄匣ミB的結(jié)構(gòu)?;谄匣ミB的結(jié)構(gòu)是指每個處理器核具有獨立的處理單元和cache,各個處理器核通過總線(交叉開關(guān)或片上網(wǎng)絡(luò)等方式)連接在一起,利用消息傳遞機制進行通信。典型的多核SOC系統(tǒng)結(jié)構(gòu):①片上網(wǎng)絡(luò)NOC:隨著同一芯片內(nèi)部集成的處理器數(shù)量不斷增加,利用傳統(tǒng)的基于總線的互連結(jié)構(gòu)已成為多核間通信的主要瓶頸。總線帶寬有限,分時復(fù)用難以解決數(shù)據(jù)計算密集型的應(yīng)用中。在基于NOC的SOC中,處理器核之間依靠網(wǎng)絡(luò)和數(shù)據(jù)包交換機制,在一條由其他處理器或IP核構(gòu)成的連接或路由上完成數(shù)據(jù)的交互。NOC借鑒了計算機網(wǎng)絡(luò)的理念。較好的解決了傳統(tǒng)的基于總線的多核SOC系統(tǒng)在總線結(jié)構(gòu)設(shè)計上所面臨的帶寬和復(fù)雜邏輯協(xié)議問題。圖典型的NOC系統(tǒng)結(jié)構(gòu)NOC包括計算和通信兩個子系統(tǒng),計算子系統(tǒng)(PE,processingelement構(gòu)成的子系統(tǒng)),完成廣義的“計算”任務(wù),PE既可以是處理器也可以是各種專用功能的IP核或存儲器陣列等。通信子系統(tǒng)(S,switch組成的子系統(tǒng)),負(fù)責(zé)連接PE,實現(xiàn)計算資源之間的高速通信。②TI的開放式多媒體應(yīng)用平臺(OMAP)架構(gòu):在異構(gòu)多核處理器方面,RISC通用處理器和DSP的結(jié)構(gòu)收到了業(yè)界的廣泛關(guān)注,產(chǎn)品以TI的OMAP最具代表性。它采用雙核結(jié)構(gòu),把TI的高性能低功耗DSP核與控制性能強的ARM微處理器結(jié)合起來。此外,芯片中還包括圖像、圖形的加速器及一些輸入輸出接口。在該SOC中,利用低功耗的ARM處理器實現(xiàn)接口和控制方面的需求,而DSP用來增加芯片對音視頻應(yīng)用中的信號處理能力。圖TIOMAP結(jié)構(gòu)
SOC中的軟件結(jié)構(gòu)在一個SOC的系統(tǒng)結(jié)構(gòu)設(shè)計中,除了硬件結(jié)構(gòu)外,還包括軟件結(jié)構(gòu)。IO接口——?應(yīng)用程序應(yīng)用程序應(yīng)用程序調(diào)試接口 應(yīng)用程序源代碼標(biāo)準(zhǔn)接口編譯器標(biāo)準(zhǔn)庫連接器操作系統(tǒng)核心驅(qū)動硬件驅(qū)動中斷服務(wù)等系統(tǒng)軟件圖形化調(diào)試工具初始化、復(fù)位、BMI]口ader等程序芯片《CPU/1O/存簡耦/其他硬件)硬件調(diào)試接口圖SOC中的應(yīng)用軟件運行環(huán)境及開發(fā)工具結(jié)構(gòu)IP復(fù)用的設(shè)計與方法ip是知識產(chǎn)權(quán)的意思在集成電路行業(yè)里,IP通常是指硅知識產(chǎn)權(quán)(SiliconIntellectualProperty),即IP核。(1)從差異化的程度來區(qū)分除可集成到芯片上的IP核外,還有大量專門用于驗證電路的IP。這些IP稱為驗證IP(VerificationIP),如用于驗證USB2.0的IP,用于驗證AHB的總線功能模型等,這些IP是不需要可綜合的。(2)從設(shè)計流程上來區(qū)分①軟核(SoftIP)利用Verilog或VHDL等硬件描述語言,依照所制定的規(guī)格,將系統(tǒng)所需的功能寫成RTL的程序,被稱為軟核。與具體的實現(xiàn)工藝無關(guān)。②固核(FirmIP)RTL程序經(jīng)過仿真后,通過綜合從單元庫中選取相應(yīng)的邏輯門,轉(zhuǎn)換成漉輯門單元形式呈現(xiàn)的網(wǎng)表文件,即所謂的固核。③硬核(HardIP)網(wǎng)表文件經(jīng)過驗證后,經(jīng)過布局規(guī)劃和布局布線后所產(chǎn)生的GDSII文件,即稱為硬核。硬核的設(shè)計與工藝已經(jīng)完成而且無法修改,用戶得到的硬核僅是產(chǎn)品功能而不是產(chǎn)品設(shè)計。與軟核和固核不同,硬核在物理設(shè)計完成后必須用特定的工具對其進行建模。一個完整的硬核通常包含以下模型:▲功能模型▲時序模型▲功耗模型▲測試模型▲物理模型RTL代碼的編寫代碼編寫前的準(zhǔn)備(1)總線設(shè)計的考慮目前,片上總線尚處于發(fā)展階段,沒有一個統(tǒng)一的標(biāo)準(zhǔn),國際上比較成熟的總線結(jié)構(gòu)有PCI總線、ARM公司的AMBA和AXI總線、IBM的coreconnect等(2)模塊的劃分模塊劃分是將復(fù)雜的設(shè)計劃分成許多小模塊,它的好處是區(qū)分不同的功能模塊,使得每個功能模塊的尺寸和功能不至于太復(fù)雜,利于一個團隊共同完成設(shè)計。模塊劃分的技巧如下:①關(guān)于芯片級的模塊劃分在進行芯片級的模塊劃分時,建立明確的層次結(jié)構(gòu)仍然是經(jīng)典的設(shè)計形式,這種方式有助于基于IP復(fù)用設(shè)計的進行。頂層模塊組織結(jié)構(gòu)要簡單,這樣可以使得頂層連接更加簡單、直觀,同時也有利于分塊式的布局布線。要確保只有在頂層模塊才包含I/O引腳。②基于核心邏輯的模塊劃分②基于核心邏輯的模塊劃分對核心邏輯進行模塊劃分時,要避免子模塊間出現(xiàn)連接用的粘附邏輯。寄不苫<寄不苫<圖粘附邏輯圖消除粘附邏輯盡可能地把相關(guān)的組合邏輯集中到一個模塊中處理。這是因為綜合器在默認(rèn)的工作模式下綜合優(yōu)化時,不能跨越模塊邊界對相關(guān)的組合邏輯做歸并優(yōu)化處理。圖組合邏輯被分散在多個模塊寄存器A寄存器A圖組合邏輯歸并③把多周期路徑或偽路徑限制到一個模塊中▲如果在設(shè)計中包含了多周期路徑或偽路徑,應(yīng)盡可能地把這些邏輯限制到一個模塊中,并在代碼編寫時用注釋行明確指出注:多周期路徑約束和FALSEpath約束稱為慢速例外時間約束?!鴤温窂绞窃O(shè)計者告訴靜態(tài)時許分析工具已經(jīng)認(rèn)定的時序不滿足的路徑。把多周期路徑限制到一個模塊中處理可以減少綜合時間和優(yōu)化非多周期路徑的綜合結(jié)果。把多周期路徑或偽路徑限制到一個模塊中,可以方便設(shè)計者給出相關(guān)的綜合及靜態(tài)時序分析的約束,同時也便于設(shè)計者在后端設(shè)計實現(xiàn)后進行檢查。④根據(jù)時鐘的相關(guān)性劃分模塊應(yīng)當(dāng)盡量根據(jù)時鐘的相關(guān)性來劃分模塊。簡單地說,就是將時鐘分頻、門控單元和復(fù)位產(chǎn)生等電路盡量放在同一模塊中這么做使得在綜合的時候便于設(shè)置時鐘約束。每個模塊盡量只使用一個時鐘,,如果實在不能避免的話,應(yīng)該設(shè)計一個單獨的模塊負(fù)責(zé)時鐘同步。圖同步時鐘模塊(3)對時鐘的處理設(shè)計中需要多少個時鐘,芯片中的時鐘是從哪里來的呢,是內(nèi)部產(chǎn)生的嗎,是由鎖相環(huán)(PLL)產(chǎn)生的嗎,還是由電路分頻器、異步計數(shù)器、串行計數(shù)器或者同步計數(shù)器提供的時鐘?為了方便后續(xù)設(shè)計,最好將時鐘產(chǎn)生電路與芯片的其余部分分開。為了到達這一目的,可以使用層次化設(shè)計。(4)IP的選擇及設(shè)計復(fù)用的考慮系統(tǒng)結(jié)構(gòu)設(shè)計做好模塊劃分時,必須確定哪些模塊基于標(biāo)準(zhǔn)單元庫進行設(shè)計,哪些模塊需要購買IP,IP模塊的對接需要增加哪些連接性設(shè)計。模塊劃分過程中還需要考慮以下幾點:▲時鐘生成應(yīng)該被劃分為單獨的模塊,如分頻電路、計數(shù)器、多路時鐘信號選擇器等?!偩€接口邏輯應(yīng)被劃分為單獨的模塊,如總線接口、地址譯碼器。▲提供特殊測試功能的邏輯應(yīng)該被劃分為單獨的模塊?!鴮τ诠δ苣K的設(shè)計采用必要的層次化描述。(5)芯片速度的考慮設(shè)計者計劃在設(shè)計中實現(xiàn)多少功能,運行在什么速度下采用什么工藝實現(xiàn),對設(shè)計做什么改動來實現(xiàn)速度要求,選擇流水線結(jié)構(gòu)還是寄存器重新排序,組合邏輯不能太多地集中在兩個寄存器之間,有時候為了改進速度,會選擇特殊結(jié)構(gòu)單元,如單周期乘法器、串行加法器鏈、復(fù)雜控制邏輯、大指令解碼單元等,這些可以在RTL中直接調(diào)用Synopsys的DesignWare庫。注:對于一些特定的功能單元,如加法器、乘法器、存儲器,其性能與實現(xiàn)的架構(gòu)有著緊密的關(guān)系。DesignWare是由Synopsys公司提供的IP庫,其中的FoundationIP中包含很多設(shè)計中經(jīng)常會用到的功能單元,這些功能單元是用特定的架構(gòu)實現(xiàn)的。使用Synopsys的綜合工具時調(diào)用Designware中的IP進行綜合,能獲得更優(yōu)的結(jié)果,如速度更快或面積更小等(這些IP采用特定的架構(gòu)實現(xiàn),綜合的結(jié)果更好,因此在設(shè)計時,某些功能電路可以用designware中的IP來實現(xiàn),這樣對整個設(shè)計進行綜合時,會綜合出比較滿意的結(jié)果)。Designware在綜合時的調(diào)用可以是自動的,也可以是手工的。手工的方法是指在RTL代碼編寫時將選用的Designware單元“隱含”進去,這樣在綜合時就能夠選用指定的Designware了。使用詳見《SOC設(shè)計方法與實現(xiàn)》P108(6)對布線的考慮在芯片設(shè)計流程中,布線是最后的階段,其功能是根據(jù)門級網(wǎng)表的描述實現(xiàn)各個單元的連接。有時RTL級設(shè)計者為了方便把大量信號組合起來形成一個大的邏輯,不僅會造成由于這一級組合邏輯太多而難以滿足時序要求,而且會形成一個很大的多路選擇器(MUX),造成連線過于集中,從而在一小塊面積內(nèi)占用大量的布線資源。其實,如果多路選擇器的輸出是供給設(shè)計中的不同部分使用的,就應(yīng)該將一個大的多路選擇器分解為多級的較小的多路選擇器,使原來非常集中的連線變得分散,從而解決布線的困難。另一個常見的布線擁擠的例子是多個偏上RAM/ROM共用一個BIST模塊,由于BIST信號送到每一塊RAM/ROM上,在這個BIST模塊附近常會出現(xiàn)布線阻塞。BIST(Built-inSelfTest)是在設(shè)計時在電路中植入相關(guān)功能電路用于提供自我測試功能的技術(shù),以此降低器件測試對自動測試設(shè)備(ATE)的依賴程度。簡言之,就是設(shè)計時,在電路中植入的提供芯片測試的電路。ATE是AutomaticTestEquipment的縮寫,于半導(dǎo)體產(chǎn)業(yè)意指集成電路(IC)自動測試機,用于檢測集成電路功能之完整性,為集成電路生產(chǎn)制造之最后流程,以確保集成電路生產(chǎn)制造之品質(zhì)??删C合RTL代碼編寫指南編碼風(fēng)格(1)在系統(tǒng)設(shè)計階段應(yīng)該為每個模塊進行命名,最終的頂層模塊應(yīng)該以芯片的名稱來命名。在頂層模塊中,除I/O引腳和不需要綜合的模塊外,其余作為次級頂層模塊,建議以xx_core.v命名。(2)一個文件只能包含一個模塊,而文件名應(yīng)該與模塊名相同,這樣做可以方便修改設(shè)計。(3)語句塊之間應(yīng)由begin和end劃分清楚,initial、always等語句塊的begin關(guān)鍵詞跟在本行的末尾,相應(yīng)的end關(guān)鍵詞與initial、always對齊。(4)對于時序單元(建立時序電路時)必須采用非阻塞賦值。時序電路基本工作原理是依據(jù)當(dāng)前狀態(tài)和輸入信號,在時鐘同步信號的作用下進入到下一狀態(tài),同時產(chǎn)生相應(yīng)的輸出。輸出信號和下一狀態(tài)都與當(dāng)前狀態(tài)和當(dāng)前輸入信號相關(guān),客觀上要求采用并發(fā)的非阻塞賦值語句進行處理。(5)描述組合邏輯時,可以使用阻塞賦值和非阻塞賦值,但建議使用阻塞賦值語句。(6)不要在同一個always塊中同時使用阻塞賦值和非阻塞賦值語句。(7)保證敏感列表完整,避免仿真和綜合過程中出現(xiàn)功能錯誤。6.2.2綜合考慮(1)每個模塊盡可能只使用一個時鐘(2)不在數(shù)據(jù)通路上的觸發(fā)器都需要有復(fù)位信號(3)如果電路中同時存在具備復(fù)位信號和不具備復(fù)位信號的觸發(fā)器,不要將他們放在一個程序塊中(如不要放在always程序塊中)。(4)在case語句中,指明所有可能出現(xiàn)的情況,如果不需要所有情況,加上default語句。不要使用casex和casezo(5)不要在代碼描述中加入specify語句去規(guī)定多周期路徑(6)避免觸發(fā)器在綜合過程中生成鎖存器,在if…else…語句中,如果設(shè)計沒有很好地覆蓋到各種情況,就很有可能綜合產(chǎn)生一些鎖存器的結(jié)構(gòu)。(7)盡量避免異步邏輯、帶有反饋環(huán)的組合電路及自同步邏輯。一個模塊內(nèi)盡量使用同步邏輯+組合邏輯的方式。(8)盡量把需要綜合的代碼置于節(jié)點模塊,層次化模塊僅起到連接節(jié)點模塊的作用。(9)通常在Verilog語言中,有always和initial兩個程序塊,synopsys的綜合工具忽略initial程序塊,并將產(chǎn)生警告。(10)在綜合過程中,工具將忽略電路中的延時語句,例如“assign#10C=A&B”在綜合的時候就相當(dāng)于"assignC=A&B",因為綜合的時候相關(guān)的時序在選用的標(biāo)準(zhǔn)單元庫中都有描述。否則,會造成前仿真和后仿真的結(jié)果不一致。7Verilog需要重點記住的語法問題數(shù)據(jù)類型(1)常量有三種類型:整形(對080「)、實型(91)和字符串型*仃臃)。1)整形可以按照如下兩種方式書寫:▲簡單的十進制格式:32是是十進制的32▲基數(shù)格式:4'b1101四位二進制數(shù)2)實數(shù)實數(shù)也有兩種形式▲十進制表示法:5.768▲科學(xué)表示法:5E-4——0.0005 3.6E2 360.03)字符串字符串是雙引號內(nèi)的字符序列,不能分成多行寫“internalerror”。(2)變量有三種類型:線網(wǎng)(net)、寄存器(reg)和存儲器(memory)。1)線網(wǎng):用wire進行聲明,默認(rèn)位寬為1,線網(wǎng)類型表達了電路網(wǎng)絡(luò)中的物理連線,該類型變量的值則由連接器件的輸出端連續(xù)驅(qū)動,只要輸入發(fā)生變化,輸出就重新進行計算、更新。如果沒有驅(qū)動源,線網(wǎng)缺省值為z。2)寄存器:寄存器(reg)變量是電路存儲單元的抽象表示,定義時用關(guān)鍵字reg。與線網(wǎng)變量剛相反,reg變量如同觸發(fā)器,只在某種條件下(通常為時鐘信號邊沿)輸入驅(qū)動才傳輸?shù)捷敵?并保持該值,此時即使輸入變化或者沒有輸入驅(qū)動,輸出仍然保持不變。它只能在always和initial語句中被賦值。缺省值為x?!鎯ζ鳎╩emory)是由reg來進行聲明,用于對寄存器文件、RAM、ROM等建模,Verilog中存儲器是一維寄存器數(shù)組,每一個數(shù)組元素稱為一個字(word),每個字是一個寄存器型位向量,寬度可以是1位或n位向量。reg標(biāo)量表示觸發(fā)器,reg向量表示寄存器,存儲器是一維寄存器數(shù)組,由寄存器組成。存儲器能夠通過數(shù)組下標(biāo)作為地址來進行訪問某個字,但每個存儲器字是一個向量型寄存器,只能整體訪問,無法訪問其中的某個位。同時,存儲器是數(shù)組,無法整體訪問。建模方式(1)門級單元建模數(shù)字電路絕大多數(shù)是建立在門級或者更高的抽象層次上的。在門級,電路網(wǎng)絡(luò)用所有邏輯門的互連來表達是很直觀的。一般使用門級電路的實例引用來建模。(2)數(shù)據(jù)流建模邏輯電路的另一種觀點是試圖將電路的工作看做一系列的邏輯操作,組合電路是由輸入信號到輸出的傳遞,時序電路則由輸入信號以及當(dāng)前狀態(tài)到輸出以及下一存儲狀態(tài)的傳遞。連續(xù)賦值語句是數(shù)據(jù)流建模的基本語句,語句的目標(biāo)類型必須是線網(wǎng)變量。用assign語句,只要右端表達式上的某一操作數(shù)發(fā)生變化,表達式立即重新計算,并將值傳遞給左邊。(3)行為級建模對于復(fù)雜的設(shè)計,設(shè)計者更傾向于從電路外部功能的角度,也即從算法的角度對電路進行描述。主要利用initial和always語句塊來描述。路徑延時模型(1)邏輯單元的慣性延時與傳播延時邏輯設(shè)計最終的實現(xiàn)依靠半導(dǎo)體元件及他們之間的金屬互連,數(shù)字電路的邏輯轉(zhuǎn)換需要線網(wǎng)及元件上電荷的積累或耗散導(dǎo)致的電平變化,因而信號在電路網(wǎng)絡(luò)中的傳遞以及邏輯元件相應(yīng)信號的變化都需要一定的延時。這些延時不僅僅決定了電路工作的性能,如果設(shè)計不周,它們會影響電路工作的正確性。電路延時按形成原理可分成兩種。一種是基本門在建立一個0或1的邏輯電平之前,電路中的電荷必須聚集到一定的程度。如果把信號加到門輸入端,但在聚集足夠的電荷之前撤銷掉,輸出端則不會產(chǎn)生對應(yīng)的電平變化。這個電荷聚集所需的時間稱為慣性延時。另一種延時表示為信號在經(jīng)由金屬導(dǎo)線傳輸時產(chǎn)生的。因為芯片上的金屬連線并非理想導(dǎo)線,特別是隨著特征工藝線寬不斷縮小時、電路規(guī)模不斷擴大和電路工作頻率不斷加快,金屬連線的電阻、連線間電容、電感等越來越不可忽略,所呈現(xiàn)的傳輸線效應(yīng)越來越明顯。與慣性延時不同,這種信號傳播延時不會一直窄脈沖,所有驅(qū)動端的信號毛刺會顯現(xiàn)在接收端,給電路設(shè)計制造麻煩。(2)門級建模延時門級建模設(shè)計中,Verilog語言可以在門實例化語句中規(guī)定慣性延時,即從門的任意輸入到輸出的傳輸延遲。若沒有規(guī)定則延時值為0。門延時在三類不同的信號轉(zhuǎn)換情形時可以有不同的值,這三種情形是:①信號上升:在門的輸入發(fā)生變化的情況下,門的輸出從0,x,z變化到1所需的時間稱為上升延遲時間。②信號下降:在門的輸入發(fā)生變化的情況下,門的輸出從1,x,z變化到0所需的時間。③信號關(guān)斷:在門的輸入發(fā)生變化的情況下,門的輸出從0,1,x變化到高阻態(tài)z所需的時間。包含多個延時值的時候,多個延時值定義的順序是上升、下降、關(guān)斷。門延時的值不是固定的,這與輸入端驅(qū)動能力、輸出端負(fù)載狀況都有關(guān)系,因而每種延時又有最小值、典型值、最大值之分,形式為min:typ:max。三態(tài)門可以有三種延時,但其他門只有兩種延時:信號上升延時和信號下降延時。nand#(1:2:3,3:4:5); //定義了兩個延時,上升和下降(3)數(shù)據(jù)流建模延時在數(shù)據(jù)流建模設(shè)計中,延時的定義主要出現(xiàn)在連續(xù)賦值語句中。assign#5change=up&&down //右端事件需經(jīng)5個時間單位到達change端這種表示形式同樣用于描述慣性延時。數(shù)據(jù)流建模中延時也可以定義上升、下降、關(guān)斷三種,并且每種延時值還可設(shè)定最小、典型、最大值。除了在連續(xù)賦值語句中定義延時外,也可以在線網(wǎng)聲明時說明。Wire#2turn;Assign#3turn=left||right;最終延時是兩種延時的累加,left變化后計算表達式,在3時間單位后到達連續(xù)賦值左端,但定義了線網(wǎng)延時,要在經(jīng)過2個時間單位才完成。注:語句間延時和語句內(nèi)延時的定義如下:#Nsum=a+b;//語句間延時:從到達該語句到執(zhí)行該語句的時間間隔,可以看作是在語句執(zhí)行前的“等待時間”,因此在這個延時過程中,語句壓根就還沒開始執(zhí)行。sum=#Na+b;//語句內(nèi)延時:該語句已經(jīng)開始執(zhí)行了,但把右式的值賦給左式的目標(biāo)之前延遲一段時間。▲在連續(xù)賦值語句中使用語句間延時,可以描述慣性延時。▲在非阻塞賦值語句中使用語句內(nèi)延時,可以描述傳輸延時。在持續(xù)賦值中插入語句內(nèi)延時是非法的,這是因為語句內(nèi)延時需要將T時刻的結(jié)果保持到T+N時刻進行賦值,表現(xiàn)出記憶特性,與持續(xù)賦值的意義相沖突。我們可以將一個語句理解為一個進程,首先是進程的觸發(fā),其次是執(zhí)行進程,如有延時則執(zhí)行進程掛起,等到延時結(jié)束時刻執(zhí)行進程。所以上述連續(xù)賦值語句只有句間延時,當(dāng)連續(xù)賦值語句的右側(cè)表達式中的操作數(shù)改變時,就會計算右側(cè)表達式,若新的結(jié)果值與原來的值不同,進程被觸發(fā)。若在把右側(cè)的值傳遞給左側(cè)之前,右側(cè)的值發(fā)生了變化,則在延時期間右側(cè)表達式發(fā)生的變化會被濾掉,即這期間右側(cè)表達式的變化直接忽略不管。連續(xù)賦值語句為組合邏輯和門控鎖存器建模(條件賦值語句)建模,只能使用語句間延時。連續(xù)賦值語句可以用來對線網(wǎng)進行賦值,不能用來對寄存器進行賦值。這是由它的硬件背景決定的,數(shù)據(jù)流建模的連續(xù)賦值語句基于電平敏感行為,總是處于活躍狀態(tài),即只要賦值語句右邊表達式中任一變量發(fā)生電平變化,該表達式即被重新計算,然后將新值傳遞給左邊。用于對組合邏輯建模,條件賦值語句可以描述門控鎖存器。邏輯行為建模行為描述基本結(jié)構(gòu)是由initial和always結(jié)構(gòu)組成的。Initial和always結(jié)構(gòu)只能對寄存器變量進行賦值。行為描述是基于周期行為的,always結(jié)構(gòu)依次執(zhí)行語句,并且是無限反復(fù)運行。這種周期的觸發(fā)可以是電平敏感控制(這種周期是異步周期性行為),也可以是時鐘邊沿控制(一旦觸發(fā)即開始一個新的周期)。因為是周期性行為,在周期之間信號或變量保持其狀態(tài)(具有記憶功能),所以在行為描述結(jié)構(gòu)中只能對寄存器類型變量賦值。其中,基于電平觸發(fā)的always為組合邏輯建模,基于時鐘邊沿觸發(fā)的always為時序邏輯建模。分為阻塞賦值和非阻塞賦值,也可以分為語句間延時和語句內(nèi)延時:1)阻塞賦值:該語句執(zhí)行完才能執(zhí)行下一條語句。特點是:等號“=”右邊表達式的結(jié)果計算和將計算結(jié)果賦值給左邊變量的操作,是一個統(tǒng)一、連續(xù)的過程,不允許在其中插入其他動作。在語句啟動后延時的一段時間輸出當(dāng)前時刻(語句間延時)或語句啟動時刻(語句內(nèi)延時)的邏輯結(jié)果,并且會忽略這段時間內(nèi)所有的輸入改變事件。在阻塞賦值語句中插入延時不能模擬實際電路中的慣性延時或者傳輸延時,因此不適合在阻塞賦值中插入延時。2)非阻塞賦值:體現(xiàn)一定程度的并行特征。在非阻塞賦值中,對目標(biāo)的賦值在將來的某個時刻發(fā)生,但一組賦值語句沒有前后順序關(guān)系,他們在同一時刻開始計算右邊表達式,也就不等當(dāng)前語句執(zhí)行完即開始進行下一條語句的執(zhí)行。非阻塞賦值對于左邊賦值變量的更新操作的優(yōu)先級要低于阻塞賦值,也要低于非阻塞賦值本身等號右邊的表達式計算。非阻塞賦值也可以插入語句間延時和語句內(nèi)延時,在非阻塞賦值中插入語句內(nèi)延時可以很好的描述實際電路行為中的傳輸延時,這也是在過程賦值中唯一推薦使用的延時描述。非阻塞賦值中,而非阻塞賦值中插入語句間延時的效果大致與阻塞賦值中相同,會在當(dāng)前的語句啟動以后,延時一段時間輸出當(dāng)前時刻的邏輯結(jié)果,并且會忽略這段時間內(nèi)的所有輸入改變事件,不符合慣性延時和內(nèi)定延時的行為特點。任務(wù)與函數(shù)在硬件邏輯設(shè)計中會出現(xiàn)這樣的情況,某種共通的功能經(jīng)常在不同的地方重復(fù)出現(xiàn),因而有必要將這些通用的功能抽取出來,組成庫的形式,而后在各個需要使用該功能的地方只需要調(diào)用庫中的子程序。可分為任務(wù)和函數(shù)兩種。任務(wù)支持輸入、輸出和雙向的參數(shù)變量,但任務(wù)本身沒有類型的含意,所以沒有返回值。如果任務(wù)需要返回某種結(jié)果,只能通過輸出或雙向參數(shù)變量。任務(wù)是一種具有較強行為能力的子程序(描述行為的能力強)。在某個任務(wù)內(nèi)可以調(diào)用另一個任務(wù)或函數(shù),并可包含時延、事件或時序控制的聲明語句。子程序的好處不僅僅體現(xiàn)在以下兩方面:▲避免對共通的程序段的重復(fù)書寫▲有利于使整個設(shè)計代碼結(jié)構(gòu)清晰可讀。函數(shù)是一種具有較弱行為能力的子程序(描述行為的能力弱),只能描述純組合電路的行為,包含一個或多個輸入?yún)?shù),但不能包含輸出及雙向參數(shù),此外它一定有一個返回值。函數(shù)可以調(diào)用另一個函數(shù),但不能調(diào)用任務(wù),函數(shù)內(nèi)不能包含時延、事件或時序控制的聲明語句。和一般軟件中的子程序庫不同,任務(wù)和函數(shù)只能定義在某個模塊中,并且作用范圍也僅僅限于該模塊。另外,任務(wù)和函數(shù)只能具有局部行為描述能力,不能包含完整的always和initial控制結(jié)構(gòu),而只能在模塊的這些結(jié)構(gòu)中調(diào)用(即只能在initial或always中調(diào)用函數(shù)或者任務(wù))。(1)任務(wù)task任務(wù)以關(guān)鍵字task和endtask來聲明,任務(wù)的定義很想模塊,必須定義在調(diào)用它的模塊內(nèi),不過可以在模塊的功能描述主體之前,也可以在之后。任務(wù)調(diào)用是通過任務(wù)名后跟參數(shù)列表來進行的,其形式參數(shù)和實參數(shù)在次序上必須相同。任務(wù)是靜態(tài)的,即任務(wù)中局部聲明項的地址是靜態(tài)分配的。如果某任務(wù)在模塊的多個地方被并發(fā)調(diào)用,則會對同一存儲區(qū)進行操作,這樣可能會導(dǎo)致出錯。為了避免這種情況的發(fā)生,可以在task關(guān)鍵字之后加上automatic修飾字,使任務(wù)在多次調(diào)用時地址空間多次分配,互不干涉。這樣的任務(wù)稱為自動任務(wù)。任務(wù)可以包含時序控制,即延遲,但任務(wù)中對變量的控制作用無法通過參數(shù)傳遞,參數(shù)只能傳送任務(wù)調(diào)用結(jié)束時的結(jié)果。為了傳送變量的時序過程,只能采取全局變量的方法。(2)函數(shù)function函數(shù)使用關(guān)鍵字function和endfunction來聲明。函數(shù)的聲明與任務(wù)最大的不同是函數(shù)具有返回值范圍。如果函數(shù)聲明中沒有指定取值范圍,則缺省的返回值為1位二進制數(shù)。函數(shù)通過在函數(shù)定義中顯示的給函數(shù)名賦值來實現(xiàn)返回值。函數(shù)調(diào)用可以在行為描述語句中,也可以在數(shù)據(jù)流描述的連續(xù)賦值語句的右邊表達式中。函數(shù)中不能包含任何延遲。8HDL邏輯設(shè)計組合邏輯的設(shè)計通常組合電路設(shè)計可以通過三種方式:第一是使用UDP真值表定義,第二是assign連續(xù)賦值語句,第三是電平敏感控制的always結(jié)構(gòu)。為了避免自動綜合出鎖存器,要求分支語句必須寫完整所有的分支,此外敏感列表中也應(yīng)列舉齊所有的變量輸入和判斷條件中的信號。需要注意的是,為了避免自動綜合工具產(chǎn)生不必要的鎖存器結(jié)構(gòu),在case分支語句中,應(yīng)增加默認(rèn)選項,默認(rèn)項賦值為無關(guān)值(x),有利于綜合器綜和出更優(yōu)化的電路。組合電路的case最好有default,因為如果你的case不全,就會產(chǎn)生鎖存器;即使case包含完整,還是建議加上一條default并賦值x。雖然case列舉完整,default值不可能到達,顯然default也不是需要關(guān)心的。但是加上default就是告訴綜合器,別的分支情況我不關(guān)心,你想賦什么值都可以,綜合器就會根據(jù)前面的賦值情況,綜合出一個面積最小的組合邏輯出來or使綜合工具進行更有效的邏輯化簡。但是完整的case加上default也有缺點,增加了工作的同時會降低代碼的覆蓋率(額外的default在作代碼覆蓋率檢查時是不覆蓋的)。組合電路的Verilog描述可以使用門級結(jié)構(gòu)建模的方式,基于連續(xù)賦值的數(shù)據(jù)流方式,也可以用異步周期性行為描述,以及以上幾種描述方式的組合。時序電路設(shè)計時序邏輯可分為電平控制的鎖存器類型和時鐘邊沿控制的觸發(fā)器類型。對于鎖存器類型的時序邏輯設(shè)計,可用帶反饋的條件操作符的連續(xù)賦值語句實現(xiàn),例如,SRAM存儲器單元可建模成:Assigndataout=(CS_b==0)?(WE_b==0)?datain:dataout:1’bz;鎖存器也可以由行為描述建模,采用電平敏感建模,對于不完整的分支語句會自動綜合出鎖存器。帶觸發(fā)器的時序邏輯僅由邊沿觸發(fā)的行為綜合而來。通常的同步時序電路是指時鐘的上升沿或者下降沿同步,一般不建議采用雙邊沿觸發(fā),因為在目前數(shù)字芯片設(shè)計內(nèi)部時鐘多由PLL產(chǎn)生,此類時鐘源一般只能使單邊沿保持很好的指標(biāo),另一邊沿會因為時鐘的抖動、偏斜等影響電路的工作性能。邊沿敏感always語句的事件列表中,時鐘不是由信號的名稱確定的。對于包含多個邊沿信號的事件列表,則由譯碼的順序確定某個信號是時鐘,而其他是控制信號。復(fù)位信號時最常見的控制信號。同步時序電路由同步復(fù)位和異步復(fù)位兩種方式。異步復(fù)位是指該時序電路當(dāng)復(fù)位信號到來后即可進入復(fù)位處理。在行為建模時,復(fù)位信號作為控制信號被加入到事件列表中。對于同步復(fù)位時序電路,復(fù)位信號并不出現(xiàn)在事件列表中,復(fù)位行為只在時鐘邊沿時發(fā)生。在always語句中,所有的左端變量都需定義為reg類型,但并非所有reg類型變量都會綜合成觸發(fā)器,只有滿足下列條件的reg變量將被綜合為觸發(fā)器:▲該reg變量在always語句外被使用;▲該reg變量未被賦值前已在always語句中使用;▲該reg變量僅在描述行為的某些條件分支上被賦值。復(fù)位信號的處理十分重要,為了保證系統(tǒng)在上電后或者出現(xiàn)意外故障后可以回到一個固定的初始狀態(tài),一般設(shè)計中都會有一個全局復(fù)位信號。①如果復(fù)位信號是從芯片外部輸入的,而這個信號可能由于源端或PCB走線的原因引入毛刺的話,應(yīng)該首先對輸入的復(fù)位信號用時鐘打一拍進行同步化處理。如果引入的毛刺寬度有可能超過一個時鐘周期的話,還需要增加一個簡易的延時濾波電路。如圖所示利用移位寄存器可以實現(xiàn)這一功能。由圖可知,當(dāng)輸入復(fù)位信號大于四個時鐘周期時可產(chǎn)生有效復(fù)位信號。輸入復(fù)位森陵時鐘②如果復(fù)位信號是由內(nèi)部的組合邏輯產(chǎn)生,則為了克服毛刺的影響,一定要把復(fù)位信號接到寄存器的同步復(fù)位端,而不能做異步復(fù)位,或者作為寄存器的輸入復(fù)位森陵時鐘②如果復(fù)位信號是由內(nèi)部的組合邏輯產(chǎn)生,則為了克服毛刺的影響,一定要把復(fù)位信號接到寄存器的同步復(fù)位端,而不能做異步復(fù)位,或者作為寄存器的D輸入端的組合輸入。圖中所示為兩種轉(zhuǎn)換內(nèi)部復(fù)位信號的方法。在圖中,當(dāng)計數(shù)器的QX和Q0由01翻轉(zhuǎn)到10的時候(功能冒險),就可能會出現(xiàn)毛刺,轉(zhuǎn)為同步復(fù)位后,就可以利用時鐘采樣濾掉毛刺,從而避免復(fù)位信號的誤動作。組合電路輸出出現(xiàn)毛刺這種錯
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 古代漢語的詞類活用
- 信息技術(shù)(第2版)(拓展模塊)教案1-模塊3 3.1 認(rèn)知大數(shù)據(jù)
- 高中物理第一章電場第一節(jié)認(rèn)識靜電課件粵教版選修3-
- 小學(xué)生心理健康教育教案12
- 初中健康教育教案
- 課時4 七年級 Unit 4 2025年中考英語(仁愛版)一輪復(fù)習(xí)基礎(chǔ)練(含答案)
- 【中考考點基礎(chǔ)練】階段檢測二 力學(xué)綜合素養(yǎng)提升 2025年物理中考總復(fù)習(xí)(福建)(含答案)
- 2024至2030年中國晶閘管交流電力控制柜數(shù)據(jù)監(jiān)測研究報告
- 2010-2012年中國工程塑料行業(yè)市場研究及投資分析報告
- 2024至2030年中國工藝霓虹燈數(shù)據(jù)監(jiān)測研究報告
- 鑄造行業(yè)的危險因素辨識及預(yù)防措施
- ICH指南指導(dǎo)原則Q2(R1)分析方法的驗證課件
- S32101雙相不銹鋼分段制作保護
- 農(nóng)業(yè)技術(shù)員專業(yè)知識考試題庫與答案
- 我的應(yīng)許之地:以色列的榮耀與悲情
- 農(nóng)村寄宿制高中生心理健康現(xiàn)狀及對策研究 論文
- led燈珠參數(shù)和應(yīng)用
- 基礎(chǔ)護理服務(wù)工作規(guī)范(全文)
- DBJ51-T 196-2022 四川省智慧工地建設(shè)技術(shù)標(biāo)準(zhǔn)
- 20世紀(jì)時尚流行文化智慧樹知到答案章節(jié)測試2023年浙江理工大學(xué)
- 化工原理版天津大學(xué)上下冊課后答案
評論
0/150
提交評論