【《低溫CMOS數(shù)字電路設(shè)計(jì)及仿真探究》16000字】_第1頁(yè)
【《低溫CMOS數(shù)字電路設(shè)計(jì)及仿真探究》16000字】_第2頁(yè)
【《低溫CMOS數(shù)字電路設(shè)計(jì)及仿真探究》16000字】_第3頁(yè)
【《低溫CMOS數(shù)字電路設(shè)計(jì)及仿真探究》16000字】_第4頁(yè)
【《低溫CMOS數(shù)字電路設(shè)計(jì)及仿真探究》16000字】_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第PAGE低溫CMOS數(shù)字電路設(shè)計(jì)及仿真研究目錄TOC\o"1-3"\h\u23286第一章緒論 2190211.1摩爾定律與后摩爾時(shí)代 221291.2低溫CMOS特性 3116161.3低溫CMOS的應(yīng)用 3223541.3.1量子計(jì)算機(jī) 4109571.3.2低溫接收器 598151.3.3其他 5214961.4低溫CMOS的研究現(xiàn)狀與未來(lái) 59160第二章數(shù)字集成電路設(shè)計(jì)及其工具 6158592.1數(shù)字電路基礎(chǔ)知識(shí) 6224122.1.1反向器 69302.1.2組合邏輯電路 7166862.1.3時(shí)序電路 8322062.1.4復(fù)雜電路 9307402.2IC設(shè)計(jì)流程與工具 1023052.2.1Verilog 11262252.2.2DesignCompiler 11120712.2.3Innovus 12155882.2.4VCS 1331553第三章加法器設(shè)計(jì)實(shí)例 14276103.1加法器 14122113.1.1Ripple-CarryAdder 1464423.1.2CarryBypassAdder 1571513.1.3Brent-KungAdderTree 16316323.2不同類型加法器比較 34298363.3行波進(jìn)位加法器變參仿真 344841第四章浮點(diǎn)乘法器的設(shè)計(jì)、綜合與仿真 35268944.1浮點(diǎn)乘法器Verilog設(shè)計(jì) 35111034.2浮點(diǎn)乘法器邏輯綜合 37196824.2浮點(diǎn)乘法器布局布線 40191724.3浮點(diǎn)乘法器VCS仿真 455479第五章總結(jié) 47摘要隨著后摩爾時(shí)代的來(lái)臨,一味降低晶體管尺寸以換取更高性能的研究方向已經(jīng)漸漸駛?cè)肽┞?,功耗成為了制約高性能集成電路的首要痛點(diǎn)。低溫較于常溫有著更高的遷移率、亞閾值斜率和更小的漏電修,這意味著更快的速度、更低的功耗、更強(qiáng)的性能,是后摩爾時(shí)代的重要研究方向。今年量子計(jì)算機(jī)的發(fā)展也帶動(dòng)了對(duì)其外圍電路研究的需求,低溫CMOS電路需要負(fù)責(zé)對(duì)超低溫量子處理器進(jìn)行測(cè)量和調(diào)控,是量子計(jì)算走向應(yīng)用必不可少的一環(huán)。在航空航天、生物醫(yī)療等領(lǐng)域,由于低溫場(chǎng)景的應(yīng)用和對(duì)低溫CMOS優(yōu)勢(shì)的利用,也昭示著低溫CMOS的巨大應(yīng)用場(chǎng)景本文借用了華力提供的40lp的低溫工藝庫(kù),利用了DC、Innovus等集成電路設(shè)計(jì)工具,對(duì)加法器、浮點(diǎn)乘法器等電路進(jìn)行了低溫電路設(shè)計(jì)方法的研究。用Verilog實(shí)現(xiàn)了三種不同算法的16位加法器,比較其DC綜合過(guò)后的時(shí)延、功耗、面積等差異。后選擇一種固定算法的加法器,進(jìn)行了變參仿真,比較了其性能隨著溫度的變化,以及在不同溫度下設(shè)計(jì)參數(shù)的調(diào)節(jié)。最后實(shí)現(xiàn)了一個(gè)32位浮點(diǎn)乘法器的設(shè)計(jì)與仿真,分別采用了工藝庫(kù)中常溫和低溫的兩個(gè)溫度節(jié)點(diǎn),對(duì)同一個(gè)算法進(jìn)行綜合、布局布線以及后仿真,比較了不同溫度節(jié)點(diǎn)下的設(shè)計(jì)差異,為更大規(guī)模的低溫設(shè)計(jì)奠定了基礎(chǔ)。關(guān)鍵詞:低溫CMOS,電路設(shè)計(jì)第一章緒論1.1摩爾定律與后摩爾時(shí)代1965年,戈登·摩爾根據(jù)觀察經(jīng)驗(yàn)提出摩爾定律:每18個(gè)月,每單位面積上的晶體管數(shù)量翻一倍,微處理器的性能就可以增加一倍。摩爾定律并非是絕對(duì)的自然定律,它是經(jīng)驗(yàn)預(yù)測(cè)的集成電路發(fā)展趨勢(shì),也是行業(yè)的追求和指南針。過(guò)去的半個(gè)世紀(jì)里,在科研人員和工程師的不懈努力下,摩爾定律始終被一次又一次地驗(yàn)證。圖1-11971-2011年集成電路晶體管數(shù)量然而隨著工藝手段的不斷升級(jí),從最初龐大的真空三極管到后來(lái)的半導(dǎo)體晶體管從幾十微米縮進(jìn)到幾納米,5nm工藝的芯片上每平方毫米可容納約6億個(gè)晶體管。然而器件的尺寸必然會(huì)迎來(lái)物理極限,晶體管數(shù)量難以維持像過(guò)去半個(gè)世紀(jì)一樣的增長(zhǎng)率。除了物理限制的工藝瓶頸之外,功耗問(wèn)題更是成為了推進(jìn)摩爾定律的巨大壁壘,芯片的實(shí)際應(yīng)用價(jià)值勢(shì)必受到能耗密度的約束。尺寸的縮小可以得到性能的提高,但隨之而來(lái)的短溝道效應(yīng)也會(huì)帶來(lái)許多影響,包括閾值電壓降低,為抑制閾值電壓降低對(duì)柵介質(zhì)的減薄導(dǎo)致的隧穿電流增加、溝道載流子遷移率減小以及驅(qū)動(dòng)電流的減小,增加功耗。[1]在進(jìn)入后摩爾時(shí)代后,為了提升性能,新的器件結(jié)構(gòu)被研究出來(lái)以對(duì)抗短溝道效應(yīng),包括SOI、FinFET、GAAFET等工藝。而另一方面,低溫CMOS的研究因器件卓越的低溫特性和豐富緊要的實(shí)際需求愈來(lái)愈被學(xué)術(shù)界所重視,擁有極大的研究?jī)r(jià)值和應(yīng)用前景。1.2低溫CMOS特性許多研究發(fā)現(xiàn)CMOS在極低溫環(huán)境下有著諸多性能上的優(yōu)勢(shì)[2]、[3],包括:更高的遷移率、短溝道效應(yīng)減弱、更大的閾值電壓、閾值電壓擺幅的減小、更小的熱噪聲、以及更低的功耗等等。遷移率是電子在單位電場(chǎng)下感應(yīng)產(chǎn)生的速度,反映的是其散射機(jī)制,受到平均自由時(shí)間的影響,由于低溫下粒子熱運(yùn)動(dòng)速度減小,最終使得77K的遷移率約可達(dá)到室溫的5倍。得益于高遷移率,低溫CMOS具有高電流、高跨導(dǎo)等。相比遷移率,載流子飽和速度在低溫環(huán)境下的提升沒(méi)有那么顯著(約2倍)。閾值電壓公式:VT=?ms?Q其中功函數(shù)?ms,氧化物電荷Qf基本與溫度無(wú)關(guān),只有ψB=kTqlnNAnini2∝T3exp?(?E當(dāng)溫度從296K降到77K時(shí),閾值電壓可從0.25V降至0.5V左右,而亞閾值擺幅也從80mV/dec降低至22mV/dec[4]。亞閾值擺幅的減小可以提高器件的開(kāi)關(guān)速度,減小邏輯電壓的擺幅,減少功耗。低溫下由晶格散射導(dǎo)致的熱噪聲減弱,一方面是減小了逸散功耗,另一方面也提升了信噪比。同時(shí)聲子散射的減弱也使得大部分金屬互聯(lián)的電阻率降低,可以承載更大的驅(qū)動(dòng)電流。低溫下器件的短溝道效應(yīng)減弱,由漏誘勢(shì)壘效應(yīng)降低(DIBL,DrainInducesBarrierLowering)導(dǎo)致的現(xiàn)象幾近于五,漏電流減小,減小功耗、亦有利于提高電路集成度[5]。1.3低溫CMOS的應(yīng)用低溫CMOS的應(yīng)用方向可以大體分為兩個(gè)方向,一是利用如上一節(jié)內(nèi)容中提到的低溫CMOS的種種優(yōu)勢(shì)提高性能,二是特殊應(yīng)用場(chǎng)景下需要器件在極低溫條件下工作或者需要與極低溫工作的設(shè)備耦合。早在20世紀(jì)80年代,就有低溫CMOS被應(yīng)用在實(shí)際電路中。1989年,ETA制造了幾臺(tái)可以在液氮中工作的計(jì)算機(jī),共有約2000多顆芯片工作在低溫中[6]。IBM也在80年代設(shè)計(jì)過(guò)在液氮溫度下工作的低溫DRAM芯片[7]。1.3.1量子計(jì)算機(jī)量子計(jì)算機(jī)是利用量子自旋態(tài)替代傳統(tǒng)電路中的高低電平以表示“0”、“1”邏輯的新型計(jì)算機(jī),其物理實(shí)現(xiàn)方式有許多種,比如核磁共振量子比特、超導(dǎo)量子比特、硅自旋量子比特等。而無(wú)論是何種手段,由于量子態(tài)十分脆弱且易于消聚,量子計(jì)算機(jī)必須共工作在極低溫的狀態(tài)下,其主體溫度低至20mk[8]。圖1-2量子處理器控制讀出通用電子接口而在量子位組成的核心運(yùn)算模塊之外,需要有電路控制和讀取量子位,并且對(duì)這些數(shù)據(jù)進(jìn)行預(yù)處理。而傳統(tǒng)的CMOS大多無(wú)法在極低溫下正常運(yùn)行,如果單純用傳輸線將20mK下的量子計(jì)算機(jī)與室溫進(jìn)行數(shù)據(jù)傳輸,會(huì)有諸多問(wèn)題。首先是較長(zhǎng)的互連線會(huì)引入較大的電磁干擾、熱噪音、較大的延遲以及由于巨大溫度梯度導(dǎo)致的不穩(wěn)定性,并且在引腳數(shù)量上也會(huì)大受限制,無(wú)法實(shí)現(xiàn)較多位數(shù)的量子位控制。由此可見(jiàn),沒(méi)有低溫CMOS的輔助,量子計(jì)算機(jī)想要從理論落地至實(shí)際應(yīng)用必是空談。圖1-3可延展超導(dǎo)量子計(jì)算機(jī)理論結(jié)構(gòu) 為了使量子計(jì)算成為可能,首先要有控制單元對(duì)量子比特實(shí)行控制和讀出等操作,控制單元一般在臨近量子單元的位置,溫度為4K,可以大大減少時(shí)延和傳輸錯(cuò)誤。由于描述每一個(gè)量子位態(tài)的數(shù)據(jù)都十分龐大,并且需要根據(jù)這些信息進(jìn)行糾錯(cuò),如果就簡(jiǎn)單地傳至室溫的主機(jī),會(huì)由于較大的延遲難以進(jìn)行高頻有效地讀出、糾錯(cuò)。要將數(shù)據(jù)在低溫下進(jìn)行預(yù)處理業(yè)機(jī)位態(tài)的靜態(tài)編譯和糾錯(cuò),就需要低溫存儲(chǔ)單元來(lái)存儲(chǔ)任意旋轉(zhuǎn)的分解量和從量子位中讀到的數(shù)據(jù)。有研究計(jì)劃實(shí)現(xiàn)針對(duì)量子計(jì)算的多溫度層次存儲(chǔ)結(jié)構(gòu),比如在4K溫度下為控制單元建立閃存輔助運(yùn)算單元,77K環(huán)境中放置主存存儲(chǔ)數(shù)據(jù)[9]。1.3.2低溫接收器在許多針對(duì)微弱信號(hào)的高精度探測(cè)器中,都存在許多低溫CMOS的應(yīng)用,因?yàn)榈蜏谻MOS本身低熱噪的性能,系統(tǒng)本身產(chǎn)生的噪聲相比常溫系統(tǒng)的噪聲要低得多,有利于提升信噪比。由低溫CMOS制作的低噪聲放大器在天文、物理、軍事等領(lǐng)域中的許多儀器都有所應(yīng)用,如低溫引力波接收器、射電天文學(xué)毫米波接收器、冷卻核磁共振接收器、冷粒子探測(cè)器等等[10],[11]。在通信領(lǐng)域中,低溫CMOS也有所應(yīng)用,同樣是因?yàn)槠鋬?yōu)越的噪聲特性,可被用于無(wú)線接收端前端[12],[13]。1.3.3其他除了前文提到的兩種代表性應(yīng)用,還有許多應(yīng)用實(shí)例。比如航空航天器由于其低溫的工作環(huán)境,需要低溫集成電路替代傳統(tǒng)常溫電路在低溫真空環(huán)境中作為航天器的控制、運(yùn)算中心。在生物領(lǐng)域,低溫電鏡、低溫細(xì)胞存儲(chǔ)器的控制與記憶芯片,也證明了低溫CMOS在生物領(lǐng)域的應(yīng)用潛力[14]。1.4低溫CMOS的研究現(xiàn)狀與未來(lái)自步入后摩爾時(shí)代開(kāi)始,便陸續(xù)有了針對(duì)低溫CMOS的研究,有許多實(shí)驗(yàn)組將已有的商業(yè)常溫器件放入低溫環(huán)境中進(jìn)行測(cè)試,研究傳統(tǒng)電路在低溫條件下的運(yùn)行情況和應(yīng)用價(jià)值[15]。也有許多實(shí)驗(yàn)組在低溫環(huán)境下對(duì)器件層面進(jìn)行實(shí)驗(yàn),對(duì)其低溫物理性能進(jìn)行了深入研究[16][17],并且對(duì)低溫器件進(jìn)行了測(cè)試與建模[18]。在低溫電路設(shè)計(jì)方面,有一些實(shí)驗(yàn)組選擇利用現(xiàn)有的FPGA硬件資源進(jìn)行低溫設(shè)計(jì)[18][19],也取得了不錯(cuò)的成果,而低溫ASIC的設(shè)計(jì)與研究則由于低溫工藝庫(kù)的缺失而相對(duì)較少。得益于實(shí)驗(yàn)室前輩的實(shí)驗(yàn)與研究,我們已經(jīng)對(duì)華力提供的40納米低功率工藝MOSFET進(jìn)行了從10K到300K的直流變溫測(cè)試,并對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分析處理和參數(shù)提取,進(jìn)行了模型擬合,建立了低溫40LP工藝PDK,為低溫IC設(shè)計(jì)和仿真提供了便利的平臺(tái)。本文利用了這個(gè)難得的工藝平臺(tái),對(duì)低溫CMOS的數(shù)字電路設(shè)計(jì)方法進(jìn)行了研究,驗(yàn)證了利用現(xiàn)有設(shè)計(jì)工具和工藝庫(kù)進(jìn)行低溫?cái)?shù)字電路設(shè)計(jì)的可能性,為未來(lái)的更大規(guī)模低溫設(shè)計(jì)奠定了研究基礎(chǔ)。具體來(lái)講,本文將從比較基礎(chǔ)的加法器做起,研究不同算法對(duì)性能的影響,比較不同溫度節(jié)點(diǎn)下的實(shí)驗(yàn)性能以及相應(yīng)的參數(shù)調(diào)整;再針對(duì)浮點(diǎn)乘法器的電路分別采用兩個(gè)溫度節(jié)點(diǎn),對(duì)其進(jìn)行完整的綜合、布局布線和仿真流程,比較不同溫度節(jié)點(diǎn)的設(shè)計(jì)差異,為以后的大規(guī)模低溫設(shè)計(jì)積累經(jīng)驗(yàn)。

第二章數(shù)字集成電路設(shè)計(jì)及其工具2.1數(shù)字電路基礎(chǔ)知識(shí)2.1.1反向器反向器是數(shù)字電路最基礎(chǔ)的邏輯單元,由一對(duì)NMOS、PMOS組成,如圖2-1(a)所示。當(dāng)Vin為高電平時(shí),PMOS打開(kāi),NMOS關(guān)斷,Vout與VDD形成通路,電容充電達(dá)到高電平,如圖2-1(b);當(dāng)Vin為高電平時(shí),NMOS打開(kāi),PMOS關(guān)斷,Vout與地形成通路,經(jīng)過(guò)電容放電后達(dá)到低電平,如圖2-1(c)。簡(jiǎn)而言之,是利用NMOS、PMOS相反的柵-漏極電壓差開(kāi)關(guān)特性,由Vin控制形成不同通路以達(dá)到Vout與Vin相反的數(shù)字邏輯,這一原理也是更復(fù)雜的門級(jí)電路的設(shè)計(jì)準(zhǔn)則。圖2-1靜態(tài)反相器電路與等效開(kāi)關(guān)模型Vdd=1.2V,β=1條件下,不同溫度的反相器電壓傳輸特性曲線如圖2-2所示,反映了輸入電壓與輸出電壓的靜態(tài)關(guān)系,亦本別標(biāo)注了不同電壓下NPMOS的工作區(qū)間——截至區(qū)、電阻區(qū)、飽和區(qū)。圖2-2反相器VTC曲線當(dāng)Vin等于Vout時(shí),該電壓值定義為VM,此時(shí)NPMOS都飽和,將兩者電壓公式聯(lián)立可算得VknVM=VTn+VDSATn當(dāng)Vdd較大時(shí),公式(2-2)可以簡(jiǎn)化成VM一般情況下理想的Vm值為Vdd/2,即欲使r=1。NMOS載流子為電子,PMOS載流子為空穴,由于電子的有效質(zhì)量更小,其遷移率vsatntpHL=0.69C當(dāng)Vdd較大時(shí)tpHL~0.52CLknVDSATn,同理可得圖2-3反相器時(shí)延與PMOS/NMOS寬度比β關(guān)系曲線2.1.2組合邏輯電路 在inverter利用前文提到的數(shù)字電路設(shè)計(jì)準(zhǔn)則便可以用CMOS實(shí)現(xiàn)更復(fù)雜的門級(jí)電路。單級(jí)的CMOS邏輯電路分為PMOS的上拉網(wǎng)絡(luò)和NMOS的下拉網(wǎng)絡(luò)。對(duì)NMOS/PMOS網(wǎng)絡(luò)來(lái)說(shuō),MOS管并聯(lián)相當(dāng)于“或”,串聯(lián)則相當(dāng)于“與”,又可知兩者柵壓的開(kāi)關(guān)邏輯相反,則可知兩者可一一對(duì)應(yīng),NMOS串聯(lián)則對(duì)應(yīng)PMOS并聯(lián),反之亦然。確定輸入和輸出關(guān)系后,便可以用真值表輔助或直接寫出邏輯表達(dá)式,進(jìn)而畫出相應(yīng)的CMOS網(wǎng)絡(luò),如圖2-4中的NAND門。圖2-4NAND門邏輯表達(dá)式與電路結(jié)構(gòu) 在計(jì)算CMOS邏輯電路的時(shí)延時(shí),只需要計(jì)算最長(zhǎng)時(shí)延,電容大小取決于下一級(jí)電路,則對(duì)本級(jí)電路來(lái)說(shuō)只需選擇讓電阻最大的通路。而所有單級(jí)的CMOS邏輯門都可以簡(jiǎn)化成反相器,而單個(gè)MOS管寬度增加則電容增大、電阻減小,為使最長(zhǎng)通路的電阻與標(biāo)準(zhǔn)反相器匹配則可以對(duì)MOS管的寬度做調(diào)整。 理論上任何組合邏輯都可以用單級(jí)電路實(shí)現(xiàn),但是過(guò)大的單機(jī)電路會(huì)形成龐大的扇出,導(dǎo)致時(shí)延過(guò)長(zhǎng),所以將復(fù)雜電路拆分成多級(jí)是十分必要的。而多級(jí)電路的時(shí)延可以用邏輯努力法進(jìn)行計(jì)算,具體方法在本文不與贅述,基本原理仍舊是將之簡(jiǎn)化成反相器鏈,并用各各門級(jí)電路與標(biāo)準(zhǔn)反相器的參數(shù)比代入,以簡(jiǎn)化計(jì)算。 許多前任已經(jīng)憑借只會(huì)與經(jīng)驗(yàn)對(duì)常用的組合邏輯單元電路做了相當(dāng)程度的優(yōu)化,例如圖2-5的全加器(FA)電路,將SUM=A?B?C,CARRY=AB+CA+B的邏輯表達(dá)式變形為圖2-5全加器電路圖2.1.3時(shí)序電路 時(shí)序電路即為帶時(shí)鐘的電路,一般與組合邏輯作區(qū)分。鎖存器(Latch)和寄存器(Register)是時(shí)序電路的基礎(chǔ)原件,前者在時(shí)鐘信號(hào)為高電平時(shí)傳輸、低電平時(shí)保留,后者僅在時(shí)鐘上升或者下降沿時(shí)傳輸數(shù)據(jù)。兩者的實(shí)現(xiàn)方式也很多,在此不一一介紹,僅以推挽寄存器為例。圖2-6基于選擇器的推挽寄存器 如圖2-6所示,在CLK為低電平時(shí)T1開(kāi)啟T2關(guān)閉,T3關(guān)閉T4開(kāi)啟,數(shù)據(jù)D傳遞到QM,無(wú)法傳到Q,而Q的值仍保持同上個(gè)半周期的值,鎖存在I5、I6的反饋網(wǎng)絡(luò)中;在CLK為高電平時(shí),T1關(guān)斷T2開(kāi)啟,QM的值鎖存在I2、I3組成的反饋網(wǎng)絡(luò)中,T3開(kāi)啟T4關(guān)閉,I5、I6的反饋增強(qiáng)被切斷,QM的數(shù)據(jù)傳遞到Q。將主從兩部分鎖存視為整體,則表現(xiàn)為D在CLK上升沿傳遞到Q。2.1.4復(fù)雜電路有了組合邏輯和時(shí)序邏輯所謂基礎(chǔ),便幾乎可以實(shí)現(xiàn)所有功能的數(shù)字電路,比如加法器、乘法器、運(yùn)算器(ALU)、核心處理器(CPU)等等。為了實(shí)現(xiàn)更有效率與價(jià)值的電路,算法層面優(yōu)化的重要性,在越是龐大的電路里就越是突出。 以多位加法器為例,前文提到的全加器(FA)是基礎(chǔ)單元,而簡(jiǎn)單串聯(lián)的時(shí)延相對(duì)較長(zhǎng),每一級(jí)的最終結(jié)果取決于前一級(jí)FA的Cout。而若采用CarryBypass結(jié)構(gòu),可以將一組FA的PG單獨(dú)處理,只要知道前一組末位的Cout便可以判斷這一組最后一級(jí)FA的Cout,提前傳送給下一組計(jì)算。這種方法可以將一條完整的鏈路拆分成數(shù)段,縮減了總體的計(jì)算時(shí)間(worstcase)。圖2-7CarryBypass加法器類似的方法還有LinearSelect,是將前一組末尾Cout為0和為1的兩種情況下的當(dāng)組結(jié)果都進(jìn)行計(jì)算,在正確的Cout傳至后選擇正確的數(shù),這種方法速度更快,但是消耗的硬件資源更多。圖2-8CarrySelect加法器 這兩種加法器都是區(qū)塊劃分,在位數(shù)較多是,考慮區(qū)塊間Co的傳遞時(shí)延,可以采用不均勻的分塊方法,也即SquareRootCarryBypass和SquareRootSelectBypass,后者與Ripple、LinearSelectAdder隨級(jí)數(shù)變化對(duì)時(shí)延的優(yōu)化如圖2-9所示。圖2-9三種加法器時(shí)延隨級(jí)數(shù)的變化而站在CPU層面來(lái)說(shuō),多位加法器也不過(guò)是冰山一角而已,更加困難的還屬芯片架構(gòu)設(shè)計(jì),數(shù)據(jù)與指令的傳遞、計(jì)算、編譯、存儲(chǔ),控制邏輯對(duì)于流水線時(shí)序和沖突數(shù)據(jù)的調(diào)配等等,都是十分具有挑戰(zhàn)性。而這種超大規(guī)模集成電路一般就需要借助Veriloog、VHDL等硬件編譯語(yǔ)言,再由EDA工具結(jié)合庫(kù)層層編譯,生成電路結(jié)構(gòu)與版圖,這也是電路設(shè)計(jì)行業(yè)的主流,具體的流程和工具將在下節(jié)介紹。2.2IC設(shè)計(jì)流程與工具主流的IC設(shè)計(jì)前端一般會(huì)采用HDL語(yǔ)言進(jìn)行硬件編程,主要語(yǔ)言包括VHDL和verilogHDL,兩者都可以描述硬件的層級(jí)結(jié)構(gòu)和各模塊功能。爾后電子設(shè)計(jì)自動(dòng)化(EDA)工具可以將硬件語(yǔ)言轉(zhuǎn)化為寄存器傳輸級(jí)(RTL)的網(wǎng)表,對(duì)設(shè)計(jì)進(jìn)行前仿驗(yàn)證功能。后可采用自動(dòng)綜合工具將其綜合成門級(jí)電路網(wǎng)表。下一步可以用可編程門陣列(FPGA)將網(wǎng)表對(duì)應(yīng)到自身的硬件資源,再進(jìn)行自動(dòng)布局布線;也可以用專用集成電路(ASIC)實(shí)現(xiàn),將庫(kù)中的單元與網(wǎng)表映射,再進(jìn)行布局布線。本文采用的語(yǔ)言是Verilog,并且將對(duì)設(shè)計(jì)進(jìn)行ASIC實(shí)現(xiàn)。2.2.1VerilogVerilog是一種通用的硬件編程語(yǔ)言,顧名思義是基于對(duì)硬件的描述編程,可以從頂層到底層分層描述硬件設(shè)計(jì)。Verilog是一種類C語(yǔ)言,相比VHDL更為靈活便捷、容易掌握。而與C語(yǔ)言不同的是,Verilog做為硬件編程語(yǔ)言,可以實(shí)現(xiàn)所有代碼的并行執(zhí)行,符合硬件規(guī)律。從編程邏輯上來(lái)將,Verilog也是需要從硬件的結(jié)構(gòu)出發(fā)進(jìn)行設(shè)計(jì),而非用軟件編程的思維。Verilog的邏輯系統(tǒng)中有4種值:0,1,X(未知),Z(高阻態(tài));而數(shù)據(jù)類型主要分為三類:寄存器數(shù)據(jù)類型(reg/integer/real等)、網(wǎng)線數(shù)據(jù)類型(wire/wand等)和參數(shù)數(shù)據(jù)類型(parameter);運(yùn)算符大概包括:算術(shù)、關(guān)系、邏輯、條件、位、移位、拼接運(yùn)算符等。Verilog的基本語(yǔ)法結(jié)構(gòu)是由模塊組成的,每個(gè)模塊由“module”申明,可以相互嵌套,用信號(hào)連接。每個(gè)模塊都必須聲明端口,說(shuō)明位輸和輸入輸出。爾后可在模塊內(nèi)建立各種數(shù)據(jù)類型,并對(duì)其進(jìn)行邏輯描述,實(shí)現(xiàn)邏輯功能。這種方式可以將一個(gè)龐大的系統(tǒng)分切成較小的模塊設(shè)計(jì),便于區(qū)域性的功能驗(yàn)證和團(tuán)隊(duì)協(xié)作。而整體的邏輯可以由底層到頂層,先分別設(shè)計(jì)各個(gè)小模塊的功能在進(jìn)行組合;也可以由頂層到底層,先確定上層架構(gòu),固定下層模塊的功能與接口,再編寫下層模塊。Vivado自帶仿真工具,可以用Verilog編寫的testbench調(diào)用頂層模塊對(duì)設(shè)計(jì)進(jìn)行RTL層面的驗(yàn)證,俗稱前仿。然而前仿忽略時(shí)延信息,雖然可以進(jìn)行一定程度上的功能驗(yàn)證,但是在后仿納入硬件時(shí)延后,很可能會(huì)出現(xiàn)功能性錯(cuò)誤。編程者可以積累經(jīng)驗(yàn)、規(guī)范結(jié)構(gòu)來(lái)避免時(shí)序性錯(cuò)誤的發(fā)生。2.2.2DesignCompilerDesignCompiler是Synopsys旗下的系列工具之一,用來(lái)對(duì)設(shè)計(jì)進(jìn)行邏輯綜合,將RTL轉(zhuǎn)化成門級(jí)網(wǎng)表。圖2-10DC綜合流程圖DC綜合的過(guò)程主要分為三步:轉(zhuǎn)譯(Translation),將HDL描述代碼轉(zhuǎn)化為DC自帶的GTECH網(wǎng)表;映射(Mapping),將GTECH庫(kù)元件映射到設(shè)計(jì)采用的特殊工藝庫(kù)中,庫(kù)文件中包含了各個(gè)元件的工藝參數(shù);優(yōu)化(Optimozation),根據(jù)用戶提供的標(biāo)準(zhǔn)設(shè)計(jì)約束文件(SDC)中設(shè)定的時(shí)延、面積、負(fù)載等要求,對(duì)電路網(wǎng)表進(jìn)行進(jìn)一步優(yōu)化。最終DC會(huì)生成與工藝庫(kù)相關(guān)的門級(jí)網(wǎng)表,即利用工藝庫(kù)中的元件作為門級(jí)元件實(shí)現(xiàn)HDL中描述的功能,并且可以在GateLevel進(jìn)行電路的時(shí)延、面積和功耗分析。DC的基本操作步驟可參考下圖2-11。圖2-10DC綜合基本步驟2.2.3InnovusInnovus是Cadence開(kāi)發(fā)的數(shù)字芯片P&R布局布線版圖設(shè)計(jì)工具,可以對(duì)DC生成的網(wǎng)表、結(jié)合工藝庫(kù)進(jìn)行布局布線,生成版圖,并對(duì)版圖上的電路進(jìn)行時(shí)延、功耗、面積的報(bào)告生成時(shí)延信息等等,此時(shí)的報(bào)告最為貼近實(shí)際電路,可以代入后仿。要進(jìn)行時(shí)序、SI(信號(hào)完整性)分析,需要先建立多模多角的MMMC環(huán)境,配置好庫(kù)文件、RC角、工作條件、時(shí)延角和約束文件。便可讀入網(wǎng)表文件進(jìn)行包括布局大小規(guī)劃、電源布局布線、元件放置、時(shí)鐘樹(shù)生成、布局優(yōu)化、布線、布線優(yōu)化等操作,最終生成版圖gds文件?;静僮髁鞒炭梢?jiàn)圖2-11,具體操作請(qǐng)見(jiàn)后文。圖2-10Innovus基本操作流程2.2.4VCSVCS(VerilogCompileSimulator)是Synopsys旗下的電路仿真工具,可以進(jìn)行前后仿的時(shí)序模擬。首先要編寫好包括testbench和頂層模塊的Verilog代碼,運(yùn)行VCS將verilog編譯成可執(zhí)行的模擬文件并運(yùn)行,查看輸出波形。VCS可以直接讀入原始的設(shè)計(jì)verilog進(jìn)行前仿,如果要進(jìn)行后仿則需要在testbench中反標(biāo)Innovus生成的電路版圖時(shí)序分析文件sdf,便可將元件布局布線導(dǎo)致的時(shí)延納入仿真中,基本可以對(duì)該電路的實(shí)際運(yùn)行進(jìn)行功能性驗(yàn)證。具體操作可見(jiàn)后文的實(shí)例。完整的IC設(shè)計(jì)流程以及驗(yàn)證已基本闡述完畢,然而其中許多問(wèn)題,比如說(shuō)verilog算法的優(yōu)化、約束文件的編寫、庫(kù)文件的選擇和其他環(huán)境配置等等,都需要設(shè)計(jì)者慢慢累積經(jīng)驗(yàn)、根據(jù)設(shè)計(jì)電路的需要進(jìn)行調(diào)整,在不斷的反饋與修正中達(dá)到理想的結(jié)果。

第三章加法器設(shè)計(jì)實(shí)例3.1加法器這一節(jié)將用Verilog編寫幾種常見(jiàn)的16位加法器,包括最基本的串行進(jìn)位加法器(Ripple-CarryAdder)、BrentKung加法樹(shù)。3.1.1Ripple-CarryAdder行波進(jìn)位加法器顧名思義是將基礎(chǔ)的全加器串行排列,每一級(jí)的Cout連接到下一級(jí)的Cin,進(jìn)位信息按級(jí)傳遞。N-bit加法器的關(guān)鍵路徑時(shí)延約為N?1tcarry+t圖3-1N位行波進(jìn)位加法器示意圖16位行波進(jìn)位加法器的Verilog代碼如下:modulefulladder(a,b,c_in,s,c_out);inputa,b,c_in;outputs,c_out;assignc_out=(a&b)|((a^b)&c_in);assigns=a^b^c_in;endmodulemoduleripple_adder_top(A,B,ci_0,S,co_15);input[15:0]A,B;inputci_0;output[15:0]S;outputco_15;wire[15:0]Cout;fulladderu_FA_0(.a(A[0]),.b(B[0]),.c_in(ci_0),.s(S[0]),.c_out(Cout[0]));genvari;generatefor(i=1;i<=15;i=i+1)beginfulladderu_FA_i(.a(A[i]),.b(B[i]),.c_in(Cout[i-1]),.s(S[i]),.c_out(Cout[i]));endendgenerateassignco_15=Cout[15];endmodule代碼解釋:首先根據(jù)定義編寫全加器模塊fulladder,再將16個(gè)FA在ripple_adder_top模塊中調(diào)用并連接,將最后一級(jí)FA的c_out輸出做為本16位加法器的最高位進(jìn)位信息。這個(gè)16位加法器的最低位采用了全加器,保留了ci_0的輸入,可以將多個(gè)16位加法器拼接成更高位數(shù)的加法器,最低位模塊的ci_0,具有可拓展性。而如果不需要拓展則可以將最低位的全加器FA替換成半加器HA,可以減少一些時(shí)延和硬件消耗。3.1.2CarryBypassAdder進(jìn)位旁路加法器(CarrySkipAdder,CSA,或稱CarryBypassAdder)是在行波進(jìn)位加法器的基礎(chǔ)上將M個(gè)全加器分為一組,將對(duì)應(yīng)的M位A、B產(chǎn)生的傳播信息P單獨(dú)做與的處理,結(jié)構(gòu)如圖3-2所示。如果M位的P都為1則說(shuō)明該組最高位的輸出進(jìn)位信息即為該組最低位的輸入進(jìn)位信息;如果M位中有P為0,則說(shuō)明改組最高位的輸出進(jìn)位信息將由組內(nèi)的進(jìn)位傳播鏈決定,一如行波進(jìn)位加法器。圖3-24-bit旁路進(jìn)位加法器單元組 將多組單元串行連接即可組成更高位的加法器,圖3-3中的分組方法是線性分組,即每個(gè)單元的處理位數(shù)一致。每單元M位共N位(假設(shè)N為M的整數(shù)倍)的CSA時(shí)延相比行波進(jìn)位有所提升:td=公式(3-1)表示的關(guān)鍵路徑和行波加法器一樣,除了最低位的P為0,G為1,其他位數(shù)均P=1。其中第一項(xiàng)tsetup表示從拿到輸入A、B到生成每一位的P、G的時(shí)延;第二項(xiàng)表示最低位的單元中進(jìn)位信息的傳播時(shí)間;第三項(xiàng)中的圖3-316-bit(4*4)線性旁路進(jìn)位加法器由于每個(gè)單元之間的進(jìn)位信息傳播也存在時(shí)延tbypass間傳輸?shù)臅r(shí)間在本單元處理更多位數(shù),這樣處理后的N位加法器總單元級(jí)數(shù)約為2N第PAGEmodulefulladder(a,b,c_in,s,c_out);inputa,b,c_in;outputs,c_out;assignc_out=(a&b)|((a^b)&c_in);assigns=a^b^c_in;endmodulemodulebypass_mux(p0,p1,p2,p3,co_3,ci_0,c_out);inputp0,p1,p2,p3,co_3,ci_0;outputc_out;wirebp;assignbp=p0&p1&p2&p3;assignc_out=bp?ci_0:co_3;endmodulemodulecsk_4b_block(Af,Bf,Cf_in,Sf,Cf_out);input[3:0]Af,Bf;inputCf_in;output[3:0]Sf;outputCf_out;wire[3:0]Pf,Cout;fulladderu_FA_0(.a(Af[0]),.b(Bf[0]),.c_in(Cf_in),.s(Sf[0]),.c_out(Cout[0]));genvari;generatefor(i=1;i<=3;i=i+1)beginfulladderu_FA_i(.a(Af[i]),.b(Bf[i]),.c_in(Cout[i-1]),.s(Sf[i]),.c_out(Cout[i]));endendgenerateassignPf=Af^Bf;bypass_muxu_bypass_mux(Pf[0],Pf[1],Pf[2],Pf[3],Cout[3],Cf_in,Cf_out);endmodulemodulecarry_bypass_adder(A,B,S,Cout);input[15:0]A,B;output[15:0]S;outputCout;wire[3:0]Cout_block;csk_4b_blocku_csk_4b_block_0(A[3:0],B[3:0],1'b0,S[3:0],Cout_block[0]);genvark;generatefor(k=1;k<=3;k=k+1)begincsk_4b_blocku_csk_4b_block_k(A[(k*4+3):(k*4)],B[(k*4+3):(k*4)],Cout_block[k-1],S[(k*4+3):(k*4)],Cout_block[k]);endendgenerateassignCout=Cout_block[3];endmodule代碼解釋:基本單位和行波加法器一樣都是全加器FA,P_gen一個(gè)比特的P,bypass_mux是一個(gè)4-bit單元的最高進(jìn)位信息選擇器,將前三者拼接起來(lái)即生成一個(gè)4-bit單元csk_4b_block,將4組單元拼成最后的16為加法器。3.1.3Brent-KungAdderTreeBrent-KungAdder(BKA)是一種經(jīng)典的樹(shù)形加法器,利用樹(shù)形結(jié)構(gòu)大大減少了加法器的時(shí)延,使N-bit的延時(shí)正比與log(N)。BKA利用了進(jìn)位c與p、g的關(guān)系:cn= 為了簡(jiǎn)化表達(dá)式,需引入運(yùn)算符“o”,并定義Gi:j, g,pog',p'=(g+Gi:j,Pi:j=gCout,i=Gi:k+Pi:k·C 將以上運(yùn)算符用黑色實(shí)心圓圈表示,而白色空心圓圈表示數(shù)據(jù)前后沒(méi)有變化,則16-bit加法樹(shù)可以表示成圖3-4,以16-bit為例則可在8個(gè)周期內(nèi)得到每個(gè)位數(shù)上的進(jìn)位信息,并可在下個(gè)周期結(jié)合該位的p、g得到最后的結(jié)果。圖3-316-bitBrentKung加法器進(jìn)位運(yùn)算圖 如果想要在這個(gè)結(jié)構(gòu)基礎(chǔ)上進(jìn)一步優(yōu)化,可以將運(yùn)算符細(xì)分,比如在計(jì)算Gi:0的值時(shí)只需要Gi:k、PmoduleBK_half_black_processor(g1,g2,p2,gout);inputg1,g2,p2;outputgout;assigngout=(p2&g1)|g2;endmodulemoduleBK_black_processor(g1,p1,g2,p2,gout,pout);inputg1,p1,g2,p2;outputgout,pout;assigngout=(p2&g1)|g2;assignpout=p1&p2;endmodule在建造樹(shù)形結(jié)構(gòu)之前,先要將兩個(gè)操作數(shù)進(jìn)行預(yù)處理,用BK_pg_gen模塊計(jì)算單位比特的加數(shù)產(chǎn)生的p、g,并組合為BK_PG_setup,生成各16位的P、G數(shù)組作為PG樹(shù)的輸入,Verilog代碼如下:moduleBK_pg_gen(a,b,p,g);inputa,b;outputp,g;assignp=a^b;assigng=a&b;endmodulemoduleBK_PG_setup(A,B,P,G);input[15:0]A,B;output[15:0]P,G;genvari;generatefor(i=0;i<=15;i=i+1)beginBK_pg_genu_BK_pg_gen(.a(A[i]),.b(B[i]),.p(P[i]),.g(G[i]));endendgenerateendmodule第PAGE如圖3-3所示搭建出PG樹(shù)的結(jié)構(gòu),共有七級(jí)運(yùn)算結(jié)構(gòu),將每一級(jí)之間的半運(yùn)算符和全運(yùn)算符用信號(hào)連接,Verilog代碼如下。moduleBK_PG_tree(G,P,GG);input[15:0]G,P;output[15:0]GG;assignGG[0]=G[0];genvarj;//level1wire[7:0]level1_G,level1_P;generatefor(j=0;j<=7;j=j+1)beginBK_black_processoru_BK_black_processor_level1(.g1(G[j*2]),.p1(P[j*2]),.g2(G[j*2+1]),.p2(P[j*2+1]),.gout(level1_G[j]),.pout(level1_P[j]));endendgenerateassignGG[1]=level1_G[0];//level2wire[3:0]level2_G,level2_P;generatefor(j=0;j<=3;j=j+1)beginBK_black_processoru_BK_black_processor_level2(.g1(level1_G[j*2]),.p1(level1_P[j*2]),.g2(level1_G[j*2+1]),.p2(level1_P[j*2+1]),.gout(level2_G[j]),.pout(level2_P[j]));endendgenerateassignGG[3]=level2_G[0];//level3wire[1:0]level3_G,level3_P;generatefor(j=0;j<=1;j=j+1)beginBK_black_processoru_BK_black_processor_level3(.g1(level2_G[j*2]),.p1(level2_P[j*2]),.g2(level2_G[j*2+1]),.p2(level2_P[j*2+1]),.gout(level3_G[j]),.pout(level3_P[j]));endendgenerateassignGG[7]=level3_G[0];//level4wirelevel4_G,level4_P;BK_black_processoru_BK_black_processor_level4(.g1(level3_G[0]),.p1(level3_P[0]),.g2(level3_G[1]),.p2(level3_P[1]),.gout(level4_G),.pout(level4_P));assignGG[15]=level4_G;//level5wirelevel5_G,level5_P;BK_black_processoru_BK_black_processor_level5(.g1(level3_G[0]),.p1(level3_P[0]),.g2(level2_G[2]),.p2(level2_P[2]),.gout(level5_G[0]),.pout(level5_P[0]));assignGG[11]=level5_G;//level6wire[2:0]level6_G,level6_P;BK_black_processoru_BK_black_processor_level6_0(.g1(level2_G[0]),.p1(level2_P[0]),.g2(level1_G[2]),.p2(level1_P[2]),.gout(level6_G[0]),.pout(level6_P[0]));BK_black_processoru_BK_black_processor_level6_1(.g1(level3_G[0]),.p1(level3_P[0]),.g2(level1_G[4]),.p2(level1_P[4]),.gout(level6_G[1]),.pout(level6_P[1]));BK_black_processoru_BK_black_processor_level6_2(.g1(level5_G),.p1(level5_P),.g2(level1_G[6]),.p2(level1_P[6]),.gout(level6_G[2]),.pout(level6_P[2]));assignGG[5]=level6_G[0];assignGG[9]=level6_G[1];assignGG[13]=level6_G[2];//level7BK_half_black_processoru_BK_half_black_processor_level7_0(.g1(level1_G[0]),.g2(G[2]),.p2(P[2]),.gout(GG[2]) );BK_half_black_processoru_BK_half_black_processor_level7_1(.g1(level2_G[0]),.g2(G[4]),.p2(P[4]),.gout(GG[4]) );BK_half_black_processoru_BK_half_black_processor_level7_2(.g1(level6_G[0]),.g2(G[6]),.p2(P[6]),.gout(GG[6]) );BK_half_black_processoru_BK_half_black_processor_level7_3(.g1(level3_G[0]),.g2(G[8]),.p2(P[8]),.gout(GG[8]) );BK_half_black_processoru_BK_half_black_processor_level7_4(.g1(level6_G[1]),.g2(G[10]),.p2(P[10]),.gout(GG[10]) );BK_half_black_processoru_BK_half_black_processor_level7_5(.g1(level5_G),.g2(G[12]),.p2(P[12]),.gout(GG[12]) );BK_half_black_processoru_BK_half_black_processor_level7_6(.g1(level6_G[2]),.g2(G[14]),.p2(P[14]),.gout(GG[14]) );endmodule第PAGE 最后將所有模塊拼接在頂層模塊BK_Adder_Tree中,便可以得到所有位數(shù)自身的傳播信息P[k]和其自身得到的最終進(jìn)位信息G[k-1],對(duì)兩者進(jìn)行異或操作便可得到該位數(shù)的最終數(shù)值,Verilog代碼如下。moduleBK_Adder_Tree(A_in,B_in,S,Cout);input[15:0]A_in,B_in;output[15:0]S;outputCout;wire[15:0]P_sig,G_sig,GG_sig;BK_PG_setupu_BK_PG_setup(.A(A_in),.B(B_in),.P(P_sig),.G(G_sig));BK_PG_treeu_BK_PG_tree(.G(G_sig),.P(P_sig),.GG(GG_sig));assignS[0]=A_in[0]^B_in[0];genvark;generatefor(k=1;k<=15;k=k+1)beginassignS[k]=GG_sig[k-1]^P_sig[k];endendgenerateassignCout=GG_sig[15];endmodule3.2不同類型加法器比較 本文分別對(duì)上述三類加法器的Verilog用40lp工藝庫(kù)做了常溫的DC綜合,生成了時(shí)間、面積和功耗的報(bào)告。 三種加法器的面積由大到小分別是旁路進(jìn)位(226.674um^2)、BK加法樹(shù)(222.703um^2)、行波進(jìn)位(173.225um^2)。加法樹(shù)從工藝庫(kù)調(diào)用的元件數(shù)量更多,有179個(gè)元件,旁路進(jìn)位只需要150個(gè)元件,但由于加法樹(shù)的主要構(gòu)成是運(yùn)算符模塊,面積相較于全加器要小,故總面積更小。而行波進(jìn)位加法器只需要97個(gè)元件,主要就是全加器,故總面積最小。報(bào)告中總功耗由低到高的排列分別是BK加法樹(shù)(9.665mW)、旁路進(jìn)位(9.6684mW)和行波進(jìn)位(9.9711mW),差異主要來(lái)自于動(dòng)態(tài)的開(kāi)關(guān)功耗。開(kāi)關(guān)功耗除了和對(duì)應(yīng)節(jié)點(diǎn)的阻抗特性相關(guān)外,和其在平均概率輸入下的開(kāi)啟概率亦相關(guān)。在行波進(jìn)位加法器的總元件個(gè)數(shù)較少的情況下,更高節(jié)點(diǎn)高低電平切換頻率也許是導(dǎo)致功耗更大的主要原因。 三種加法器的時(shí)延由低到高分別是BK加法樹(shù)(1.32ns)、行波進(jìn)位(1.68ns)、旁路進(jìn)位(1.87ns)。旁路進(jìn)位加法器的理論時(shí)延應(yīng)該比行波進(jìn)位更短,但是在實(shí)際綜合的時(shí)延報(bào)告中反而時(shí)延更長(zhǎng),經(jīng)過(guò)仔細(xì)研究后發(fā)現(xiàn)是dc在檢測(cè)時(shí)延時(shí)計(jì)算的是數(shù)據(jù)傳播的最長(zhǎng)路徑,而非影響有效結(jié)果的最長(zhǎng)路徑,比如計(jì)算A[0:3]、B[0:3]的單元輸出了一個(gè)進(jìn)位信息Co_3,同時(shí)計(jì)算A[4:7]、B[4:7]的單元也得到了一個(gè)進(jìn)位信息Co_7,理論上Co_7的時(shí)延應(yīng)該是Co_3的時(shí)延再加上一個(gè)選擇器,但是在DC的判斷中,Co_3也要經(jīng)過(guò)第二個(gè)單元的傳播算得該單元最高位的S、C輸出,傳遞給第二單元的Bypass選擇器,才能得到Co_7的時(shí)延,即使這一部分傳播已經(jīng)不會(huì)影響Co_7的結(jié)果卻仍舊被DC算入其中,故使得時(shí)序報(bào)告時(shí)延更長(zhǎng)。要比較真正的數(shù)據(jù)到達(dá)時(shí)間,還需要將DC綜合結(jié)果代入VCS進(jìn)行門級(jí)前仿,仿真后行波進(jìn)位、旁路進(jìn)位和BK加法樹(shù)的關(guān)鍵路徑的時(shí)延大小分別為1.387ns、1.378ns和1.25ns,與預(yù)計(jì)相符。3.3行波進(jìn)位加法器變參仿真 在比較過(guò)不同算法的加法器后,本文選擇了最基礎(chǔ)的行波加法器針對(duì)低溫設(shè)計(jì)進(jìn)行了變參仿真。在確定NPMOS長(zhǎng)度和NMOS寬度為最小尺寸的前提下改變PMOS寬度,以調(diào)節(jié)不同PMOS/NMOS寬長(zhǎng)比(β),其時(shí)延隨溫度變化趨勢(shì)如圖3-6所示。圖3-6不同寬長(zhǎng)比行波進(jìn)位加法器tp-T趨勢(shì)圖 低溫下mos管的遷移率更高,開(kāi)關(guān)時(shí)的等效電阻更小,故時(shí)延(tp=0.69*Req*C)隨著隨著溫度的降低而減小。由圖3-6可知加法器延時(shí)亦隨PMOS/NMOS寬長(zhǎng)比的增加而減小,且這種趨勢(shì)在高溫中更加明顯。為了進(jìn)一步了解β對(duì)時(shí)延的影響,本文分別在10、40、77、150、298K幾個(gè)關(guān)鍵溫度節(jié)點(diǎn)下更寬裕度的長(zhǎng)寬比對(duì)時(shí)延的影響。圖3-7不同溫度節(jié)點(diǎn)比行波進(jìn)位加法器tp-β趨勢(shì)圖 分析可知,10~150K的溫度節(jié)點(diǎn)的時(shí)延均在β為3.5左右時(shí)達(dá)到最小值,而在溫度為298K時(shí)在β為3時(shí)達(dá)到最小值,如圖3-7所示。在β較小時(shí)PMOS增大對(duì)時(shí)延的減小,應(yīng)當(dāng)是由于PMOS寬度的增加使得電阻減小,其對(duì)時(shí)延的貢獻(xiàn)要大于相應(yīng)增大的電容,而且電容隨溫度的變化要比電阻隨溫度的變化小,故溫度越高,β對(duì)時(shí)延的影響愈大。而β值較大后電容的影響較大,β對(duì)于時(shí)延的調(diào)節(jié)漸漸進(jìn)入轉(zhuǎn)折。第四章浮點(diǎn)乘法器的設(shè)計(jì)、綜合與仿真4.1浮點(diǎn)乘法器Verilog設(shè)計(jì) 如圖3-4所示,通用的32位單精度浮點(diǎn)數(shù)由三個(gè)部分組成,可以表示為V=(?1)S:1-bit符號(hào)域(sign),符號(hào)位為0即正,為1即負(fù)。E:8-bit指數(shù)域(exponent),表示2的指數(shù),為了能表示更小的數(shù),一般會(huì)加一個(gè)偏移量-127,則表示的實(shí)際值范圍為-126~127。M:23-bit小數(shù)域(mantissa/fraction),表示“1.”后面的二進(jìn)制小數(shù)位。圖3-432位單精度浮點(diǎn)數(shù)構(gòu)成 在了解浮點(diǎn)數(shù)的結(jié)構(gòu)后我們不難理解它的乘法: (1)對(duì)符號(hào)位進(jìn)行異或; (2)計(jì)算指數(shù)位,由于兩個(gè)操作數(shù)都有偏移量,最終結(jié)果的實(shí)際值加上它的偏移量之后的指數(shù)域應(yīng)當(dāng)是兩個(gè)操作數(shù)的指數(shù)域相加再減去127,如果乘數(shù)部分有進(jìn)位則需要再加上1; (3)計(jì)算尾數(shù)時(shí),需要將兩個(gè)操作數(shù)的隱藏個(gè)位的1還原,也即兩個(gè)數(shù)實(shí)際上都是24位的二進(jìn)制數(shù),整數(shù)位都為1。在兩者相乘之后可得到一個(gè)48位的二進(jìn)制數(shù),有2位的整數(shù)位和44位小數(shù)位。如果整數(shù)位為01則無(wú)需移位,若為11或者10則需要將尾數(shù)規(guī)范化,把乘數(shù)整體左移移位,且指數(shù)位加一。 (4)浮點(diǎn)乘法的最終結(jié)果M[22:0]會(huì)取乘數(shù)P[47:0]中的[46:24]位,而剩余位數(shù)是否進(jìn)1則取決于舍入模式。則設(shè)置[23]位為保留位G(guard),[22]位為近似位R(round),將剩下的22位bit進(jìn)行禍操作則得到粘滯位S(sticky)。則如果保留位G是0,直接舍棄R和S;G是1時(shí),若R、S中有1則進(jìn)位,尾數(shù)的最終結(jié)果即可表達(dá)為P[46:24]+G*(R|S)。 32位浮點(diǎn)乘法器Verilog代碼如下:`defineSIGN 31`defineEXP 30:23`defineM 22:0`defineP 24`defineG 23`defineR 22`defineS 21:0`defineBIAS 127modulefp_mul(inputwireclk,inputwire[31:0]a,inputwire[31:0]b,outputwire[31:0]y); reg[`P-2:0]m; reg[7:0]e; reg[`P*2-1:0]product; regG,R,S; regs,normalized,state,next_state; parameterSTEP_1=1'b0,STEP_2=1'b1;initialbegin next_state<=STEP_1;end always@(posedgeclkornegedgerst)begin if(!rst)begin state<=STEP_1;next_state<=STEP_1;endelsebeginstate<=next_state;end always@(state)begin case(state) STEP_1:begin product={1'b1,a[`M]}*{1'b1,b[`M]}; S=|product[`S]; normalized=product[47]; if(!normalized)product=product<<1; next_state=STEP_2; end STEP_2:begin if(!a[`M]|!b[`M])begin s=0;e=0;m=0; endelsebegin s=a[`SIGN]^b[`SIGN]; m=product[46:24]+(product[`G]&(product[`R]|S)); e=a[`EXP]+b[`EXP]-`BIAS+normalized; end next_state=STEP_1; end endcase end assigny={s,e,m};endmodule 代碼解釋:代碼構(gòu)建了一個(gè)簡(jiǎn)單的只有兩個(gè)狀態(tài)的有限狀態(tài)機(jī)(FSM)。STEP_1的狀態(tài)下進(jìn)行尾數(shù)的相乘;計(jì)算粘滯位S;判斷乘數(shù)的整數(shù)最高位并規(guī)范化尾數(shù)決定是否位移。STEP_2狀態(tài)下,判斷是否有操作數(shù)的尾數(shù)部分全為0,若全為0我們認(rèn)為該浮點(diǎn)數(shù)數(shù)值為0,則結(jié)果亦為0;若都不為0則對(duì)符號(hào)位進(jìn)行異或,通過(guò)上個(gè)狀態(tài)中計(jì)算的尾數(shù)乘數(shù)以及保留位、近似位和粘滯位確定最終結(jié)果的尾數(shù),最后將兩個(gè)操作數(shù)指數(shù)相加并加上是否尾數(shù)規(guī)范化的參數(shù)。在復(fù)位信號(hào)為0時(shí)當(dāng)前狀態(tài)和下一時(shí)刻的狀態(tài)屆為STEP_1,否則兩個(gè)狀態(tài)在執(zhí)行完各自的指令后,在下一個(gè)上升沿?zé)o條件互相轉(zhuǎn)移。4.2浮點(diǎn)乘法器邏輯綜合 邏輯綜合所用的工具為DC,首先可通過(guò).synopsy_dc.setup.dc定義工作路徑,指定工藝庫(kù)。其中TargetLibrary和LinkLibrary為映射和優(yōu)化提供具體的cell生成實(shí)際電路,所用的具體的db文件一般在工藝庫(kù)的synopsys文件夾下,db文件可由lib文件經(jīng)LC編譯而成,一般包含的信息有:元件(cell)的功能、時(shí)延、面積、功耗等等;工作環(huán)境(operatingconditions)的電壓-溫度比例因數(shù)、各元件中的參數(shù)在不同模式下的調(diào)節(jié)等等;設(shè)計(jì)規(guī)則約束(design)比如最小最大電容、轉(zhuǎn)換時(shí)間、扇入扇出等等;連線負(fù)載模型(wireloadmodels)的電阻、電容、面積約束等等。SymbolLibrary為可視化提供cell的符號(hào),可使用默認(rèn)庫(kù)。SyntheticLibrary(IPLibrary)一般由軟件自帶,用來(lái)進(jìn)行從RTL到與軟件庫(kù)對(duì)應(yīng)的門級(jí)網(wǎng)表的綜合。其中Target和Link庫(kù)必須設(shè)置,其他庫(kù)可以不設(shè)置或者采用軟件默認(rèn)的自帶庫(kù),庫(kù)設(shè)置命令形如下文: echo"************DC'ownlibrarypath*********************"set_app_varsynthetic_library[listdw_foundation.sldbstandard.sldb]echo"***********Targetlibraryname*********"set_app_vartarget_library[list…………]echo"***********Linklibraryname************"set_app_varlink_library[list*…………dw_foundation.sldb]echo"***********SymbolLibraryname**********"set_app_varsymbol_library[listgeneric.sdb]設(shè)置好啟動(dòng)環(huán)境后可打開(kāi)DC讀入verilog文件,對(duì)設(shè)計(jì)添加約束。為時(shí)鐘輸入創(chuàng)建時(shí)鐘,對(duì)其他時(shí)序相關(guān)的輸入出之于時(shí)鐘分別建立最大上升/下降時(shí)間,如果有不包含時(shí)序的組合邏輯也可以直接在輸入和輸出之間設(shè)置時(shí)延約束;為輸入端口設(shè)定驅(qū)動(dòng)元件,具體元件可在對(duì)應(yīng)的工藝庫(kù)中選擇,相應(yīng)的,也可以為輸出設(shè)定負(fù)載;將操作條件與工藝庫(kù)的對(duì)應(yīng)模式相匹配,約束命令形如下文:create_clock-name"clk"-period20-waveform{1020}{clk}set_input_delay-clockclk-max-fall10"…………" set_output_delay-clockclk-max-fall10"…………"set_driving_cell-lib_cellXXXXXX-from_pinXX-libraryXX{…………} set_load3.000000[get_ports……]set_operating_conditions-libraryXXXXset_max_fanout50floating_point_MULset_max_transition5floating_point_MUL然后便可以對(duì)設(shè)計(jì)進(jìn)行綜合,并生成約束、時(shí)延、面積、功率的報(bào)告,在達(dá)到設(shè)計(jì)要求之后,輸出網(wǎng)表和時(shí)延等文件,輸出操作命令如下:write-hierarchy-formatddc-output../mapped/floating_point_MUL.ddcwrite_file-fverilog-hier-out../floating_point_MUL.vreport_timing>../report/time.rptreport_area>../report/area.rptreport_power>../report/power.rpt由于華力40lp工藝庫(kù)只提供125、25、0、-40幾個(gè)溫度節(jié)點(diǎn),為了比較常溫與低溫設(shè)計(jì)的異同,本文分別用25和-40攝氏度兩個(gè)溫度節(jié)點(diǎn)對(duì)同一個(gè)浮點(diǎn)乘法器的Verilog進(jìn)行了綜合。由于邏輯綜合只限于門級(jí)的網(wǎng)絡(luò),其報(bào)告參數(shù)取決于庫(kù)文件內(nèi)各個(gè)器件提供的的大致參數(shù),對(duì)不同溫度的優(yōu)化程度有限。查看兩個(gè)溫度節(jié)點(diǎn)的時(shí)延和面積報(bào)告可以發(fā)現(xiàn),報(bào)告中兩者的時(shí)延和面積結(jié)果并沒(méi)有區(qū)別,報(bào)告內(nèi)容節(jié)選分別如下文所示。時(shí)序報(bào)告:Point Incr Pathclockclk(riseedge) 10.00 10.00clocknetworkdelay(ideal) 0.00 10.00state_reg/CK(HSR_DRNQ_2) 0.00 10.00rstate_reg/Q(HSR_DRNQ_2) 0.07 10.07fU152/ZN(HSR_IN_2) 0.01 10.09rstate_reg/D(HSR_DRNQ_2) 0.00 10.09rdataarrivaltime 10.09clockclk(riseedge) 30.00 30.00clocknetworkdelay(ideal) 0.00 30.00state_reg/CK(HSR_DRNQ_2) 0.00 30.00rlibrarysetuptime -0.04 29.96datarequiredtime 29.96datarequiredtime 29.96dataarrivaltime -10.09slack(MET) 19.87面積報(bào)告:Numberofports: 291Numberofnets: 1759Numberofcells: 1267Numberofcombinationalcells: 1204Numberofsequentialcells: 60Numberofmacros/blackboxes: 0Numberofbuf/inv: 155Numberofreferences: 29Combinationalarea: 3106.756785Buf/Invarea: 190.864802Noncombinationalarea: 171.637206Macro/BlackBoxarea: 0.000000NetInterconnectarea: undefined(Nowireloadspecified)Totalcellarea: 3278.393991Totalarea: undefined 而不同溫度節(jié)點(diǎn)DC綜合的功耗報(bào)告卻有細(xì)微差別,低溫的總動(dòng)態(tài)功耗和漏電流功耗都要小于常溫功耗,這一點(diǎn)也符合通常的認(rèn)知。常溫功耗報(bào)告:CellInternalPower=112.1774uW(18%)NetSwitchingPower=499.3588uW(82%)TotalDynamicPower=611.5363uW(100%)CellLeakagePower=7.7603uWInternal Switching Leakage TotalPowerGroupPower Power Power Power(%)Attrsio_pad 0.0000 0.0000 0.0000 0.0000 (0.00%)memory 0.0000 0.0000 0.0000 0.0000 (0.00%)black_box 0.0000 0.0000 0.0000 0.0000 (0.00%)clock_network 0.0000 0.0000 0.0000 0.0000 (0.00%)register 5.3048e-04 3.5858e-05 8.4860 5.7482e-04(0.09%)sequential 9.5716e-03 3.4894e-03 371.8181 1.3433e-02(2.17%)combinational 0.1021 0.4958 7.3799e+03 0.6053 (97.74%)Total 0.1122mW 0.4994mW 7.7602e+03nW0.6193Mw -40度功耗報(bào)告: CellInternalPower=112.1774uW(18%) NetSwitchingPower=499.3588uW(82%)TotalDynamicPower=611.5363uW(100%)CellLeakagePower=7.7603uW Internal Switching Leakage TotalPowerGroup Power Power Power Power (%)Attrsio_pad 0.0000 0.0000 0.0000 0.0000 (0.00%)memory 0.0000 0.0000 0.0000 0.0000 (0.00%)black_box 0.0000 0.0000 0.0000 0.0000 (0.00%)clock_network 0.0000 0.0000 0.0000 0.0000 (0.00%)register 5.3048e-04 3.5858e-05 8.4860 5.7482e-04(0.09%)sequential 9.5716e-03 3.4894e-03 371.8181 1.3433e-02(2.17%)combinational 0.1021 0.4958 7.3799e+03 0.6053 (97.74%)Total 0.1122mW 0.4994mW 7.7602e+03nW0.6193mW4.2浮點(diǎn)乘法器布局布線 在得到DC生成的門級(jí)網(wǎng)表的verilog文件之后,便可以結(jié)合工藝庫(kù)對(duì)元件進(jìn)行布局布線。想要對(duì)布局布線進(jìn)行時(shí)序分析和優(yōu)化,需要先建立多模多角MMMC文件,文件中需定義RCCorner、DelayCorner、ConstraintMode。RC和DelayCorner是基于工藝提供的RC文件CapTbl的時(shí)延分析模型;約束模式ConstraintMode即為對(duì)設(shè)計(jì)的時(shí)延、面積等約束,可以參考DC約束文件,MMMC設(shè)置形如: create_library_set -nameTYPlib-timing{…………}create_rc_corner-nameRCcorner-cap_table{XXXXXXXXXX.CapTbl}\ -T{25}-preRoute_res{1.0}-preRoute_cap{1.0}-preRoute_clkres{0.0}\ -preRoute_clkcap{0.0}-postRoute_res{1.0}-postRoute_cap{1.0}\ -postRoute_xcap{1.0}-postRoute_clkres{0.0}-postRoute_clkcap{0.0}create_delay_corner-nameDELAYcorner-library_set{TYPlib}-rc_corner{RCcorner}create_constraint_mode-nameCONSTRAONTS-sdc_files{XXXX.sdc}create_analysis_view-nameANALYSISview-constraint_modeCONSTRAONTS\ -delay_cornerDELAYcornerset_analysis_view-setup[listANALYSISview]-hold[listANALYSISview]然后讀入網(wǎng)表verilog文件,設(shè)定lef文件,lef文件也是工藝庫(kù)提供的描述器件物理信息的一種文件形式,設(shè)置地VSS和驅(qū)動(dòng)VDD。然后規(guī)定floorplan確定工作區(qū)域,將VDD和VSS設(shè)置為全局網(wǎng)絡(luò)并進(jìn)行布線,定義各個(gè)端口的位置。然后便可進(jìn)行布局,innovus會(huì)將庫(kù)中的cell映射到版圖上,部分代碼如下:setinit_mmmc_file"timing.tcl"setinit_verilogfloating_point_MUL_dc.vsetinit_top_cell"floating_point_MUL"setinit_lef_file{…………}setinit_gnd_netVSSsetinit_pwr_netVDDinit_designfloorPlan-siteCoreSite-rXXXXXXXXXXXXglobalNetConnectVDD-typepgpin-pinVDD-inst*globalNetConnectVSS-typepgpin-pinVSS-inst*sroute-nets{VDDVSS}-blockPinuseLefaddRing-nets{VDDVSS}…………addStripe-nets{VSSVDD}……editPin-pinWidth0.07-pinDepth0.3-fixedPin1-fixOverlap1-spreadDirectionclockwise\-sideLeft-layer1-spreadTyperange\-start0.0100.03-end0.0164.0-pin{a[0],……}…………setAnalysisMode-analysisTypeonChipVariationsetOptMode-usefulSkewfalsesetPlaceMode-timingDriventrue-congEffortauto-ignoreScantrueplace_opt_design然后便可

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論