<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 三模冗余技術(shù)在ASIC設(shè)計(jì)中的應(yīng)用及實(shí)現(xiàn)

          三模冗余技術(shù)在ASIC設(shè)計(jì)中的應(yīng)用及實(shí)現(xiàn)

          作者: 時(shí)間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

          0 引言

          航天器在空間中飛行時(shí),一直處在帶電粒子構(gòu)成的輻射環(huán)境中。在這種輻射環(huán)境中微處理器可能會(huì)因?yàn)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/單粒子擾動(dòng)">單粒子擾動(dòng)而中斷正常功能從而導(dǎo)致災(zāi)難性事故。這主要涉及到2方面的問題,輻射總劑量效應(yīng)和單粒子效應(yīng)的問題,單粒子效應(yīng)又分為單粒子翻轉(zhuǎn)(SEU)和單粒子閉鎖(SEL)2個(gè)方面。單粒子翻轉(zhuǎn)效應(yīng)能夠?qū)е聰?shù)字電路的存儲(chǔ)單元中的某一位因受到干擾而發(fā)生翻轉(zhuǎn),從而引起存儲(chǔ)內(nèi)容的變化,還可在組合邏輯電路的輸出上引入一個(gè)短暫的脈沖,單粒子翻轉(zhuǎn)效應(yīng)是目前導(dǎo)致處理器運(yùn)行失效的主要原因。星載計(jì)算機(jī)系統(tǒng)中處理器性能的穩(wěn)定與可靠在整個(gè)系統(tǒng)的穩(wěn)定與可靠性中占有重要地位,因此必須對(duì)電路進(jìn)行加固,三模冗余技術(shù)是一種對(duì)單粒子翻轉(zhuǎn)有效的容錯(cuò)技術(shù),能夠極大地提高電路的可靠性。

          本文引用地址:http://www.ex-cimer.com/article/201706/349073.htm

          1 三模冗余介紹

          三模冗余(TMR)技術(shù)是一種時(shí)序電路加固技術(shù),其基本思想是對(duì)于待加固模塊生成2個(gè)相同的模塊,再通過多數(shù)表決輸出,這樣即使有一個(gè)模塊發(fā)生故障電路依然可以正常工作。三模冗余在結(jié)構(gòu)上又有空間冗余和時(shí)間冗余之分,時(shí)間冗余就是3路時(shí)鐘信號(hào)之間存在一定延遲,延遲值應(yīng)大于SEU翻轉(zhuǎn)的最大脈寬。時(shí)間冗余的作用是對(duì)于時(shí)序電路的輸入毛刺,最多只有一路時(shí)鐘會(huì)采樣到錯(cuò)誤值,因此可以有效地防止組合邏輯毛刺所帶來的錯(cuò)誤。圖1是采用普通時(shí)空三模冗余加固的觸發(fā)器的電路圖(以后簡(jiǎn)稱TMR觸發(fā)器),其中VOTER為多數(shù)表決器的組合電路。

          雖然三模冗余技術(shù)可以極大地提高系統(tǒng)的可靠性,但是代價(jià)也是巨大的。由TMR的基本結(jié)構(gòu)不難看出采用TMR技術(shù)的2個(gè)缺點(diǎn):首先由于進(jìn)行了硬件冗余導(dǎo)致芯片面積增大到原來的3倍多;其次由于三路時(shí)鐘信號(hào)之間的延遲和在輸出端加入了表決電路,在關(guān)鍵路徑上引入了額外的延時(shí),導(dǎo)致電路的運(yùn)行速度下降。
          如果設(shè)計(jì)中2個(gè)觸發(fā)器之間的關(guān)鍵路徑延遲太短(比如移位寄存器),圖1的三模冗余電路結(jié)構(gòu)在運(yùn)行中可能會(huì)出現(xiàn)電路輸出不定態(tài)和電路狀態(tài)錯(cuò)誤的問題,圖2是一個(gè)采用三模冗余加固的4位移位寄存器的電路圖,圖中的TMR_DFF模塊的電路如圖2所示。

          圖3為三模冗余加固后的寄存器的頂層模塊的仿真波形圖,圖中標(biāo)線處電路的狀態(tài)出現(xiàn)了錯(cuò)誤(由輸入d可以看出正確的狀態(tài)應(yīng)該是在第3個(gè)時(shí)鐘上升沿后輸出才變?yōu)?),其原因是由于TMR_DFF是組合邏輯輸出,在第1個(gè)上升沿的時(shí)候,reg0的輸入D經(jīng)clk,clk_skew[1]采樣后,out[0]變?yōu)?,reg1的輸入out[0]經(jīng)clk_skew[0]采樣后,其q2(圖1電路中的信號(hào))變?yōu)?,電路狀態(tài)仍為1,在第二個(gè)上升沿來的時(shí)候,由于reg1的q2已經(jīng)為1,所以reg2的輸入out1經(jīng)clk采樣后,其q0變?yōu)?,多數(shù)表決后out1變?yōu)?,電路狀態(tài)為3,reg2的輸入out1經(jīng)clk_skew[1],clk_skew[0]采樣后,其q1,q2變高,輸出out2變高,電路狀態(tài)變?yōu)?,就出現(xiàn)了狀態(tài)出錯(cuò)的狀況。

          如果減小時(shí)鐘間的延遲,電路可能會(huì)出現(xiàn)不定態(tài),原因也是由于組合邏輯的提前輸出,這里就不再討論了。

          2 三模冗余的實(shí)現(xiàn)

          2.1 修改網(wǎng)表二次綜合

          DC綜合的功能是讀取設(shè)計(jì)的RTL代碼并且根據(jù)時(shí)序約束,綜合RTL代碼到結(jié)構(gòu)級(jí),從而產(chǎn)生一個(gè)映射后的門級(jí)網(wǎng)表,其中一個(gè)重要的步驟是指定綜合所使用的綜合庫,綜合庫一般由流片廠商提供,庫中包含了引腳到引腳的時(shí)序,面積,引腳類型和功耗等信息,綜合后的門級(jí)網(wǎng)表中的單元也就是庫中所定義的單元。

          三模冗余的加固過程實(shí)際上就是為設(shè)計(jì)中的每個(gè)觸發(fā)器生成2個(gè)冗余觸發(fā)器并加上表決邏輯,而RTL代碼中無法反應(yīng)出這點(diǎn),因此可以對(duì)原設(shè)計(jì)綜合后的門級(jí)網(wǎng)表進(jìn)行修改,把觸發(fā)器改為,用門級(jí)描述編寫模塊,然后和修改的網(wǎng)表一起再次綜合就可得到三模冗余加固后的網(wǎng)表文件。值得說明的是DC綜合庫里面有多種類型的觸發(fā)器,比如SDFF,EDFF,SEDFF,JK,DFF,即使在綜合腳本中限定只用DFF觸發(fā)器,也會(huì)有好幾種,所以對(duì)于不同的單元要編寫相應(yīng)的模塊(其結(jié)構(gòu)如圖1所示)。此外由于有3路時(shí)鐘信號(hào),所以要編寫時(shí)鐘生成模塊,其功能是由clk產(chǎn)生互有延遲的2路時(shí)鐘信號(hào)。

          首先在Synopsys的綜合工具DsignCompiler下對(duì)原設(shè)計(jì)的RTL代碼進(jìn)行綜合,得到電路的門級(jí)網(wǎng)表。門級(jí)網(wǎng)表中的電路實(shí)際上就是通過例化綜合庫的單元來描述電路的結(jié)構(gòu),可以使用形式驗(yàn)證工具Formality來驗(yàn)證RTL代碼和綜合后的門級(jí)網(wǎng)表在功能上是否一致。

          然后修改門級(jí)網(wǎng)表,在網(wǎng)表中增加線網(wǎng)類型ck[2:0],并且實(shí)例化clkgen模塊,再把網(wǎng)表里面的觸發(fā)器改為三模冗余觸發(fā)器,并修改其時(shí)鐘端口為{clk,ck[1:0]},由于綜合庫中不含有這兩個(gè)模塊,這時(shí)網(wǎng)表中就出現(xiàn)了兩個(gè)綜合工具沒有處理的模塊,時(shí)鐘生成模塊和三模冗余觸發(fā)器模塊,修改后的網(wǎng)表就不是完全映射后的門級(jí)網(wǎng)表。

          最后對(duì)修改后的網(wǎng)表,時(shí)鐘生成模塊及三模冗余觸發(fā)器模塊進(jìn)行再次綜合,這次綜合實(shí)際上就是對(duì)時(shí)鐘生成模塊和三模冗余觸發(fā)器的綜合,把它們映射為綜合庫中的單元,得到的門級(jí)網(wǎng)表即是三模冗余加固后設(shè)計(jì)的門級(jí)網(wǎng)表。

          2.2 建立三模冗余觸發(fā)器的庫單元

          由于三模冗余觸發(fā)器單元的時(shí)鐘端口有3位,即使在庫中加入三模冗余觸發(fā)器的單元,綜合器也無法把設(shè)計(jì)直接映射成該單元,因此可以把時(shí)鐘生成模塊放到TMR_DFF內(nèi)部,這樣三模冗余觸發(fā)器時(shí)鐘端口就只有1位,在庫文件中把觸發(fā)器單元用對(duì)應(yīng)的三模冗余觸發(fā)器單元替換掉,DC就可以把電路中的觸發(fā)器直接映射成TMR_DFF,一次綜合就可以完成設(shè)計(jì)了,但是這樣一來整個(gè)芯片的面積又會(huì)增大很多(時(shí)鐘生成模塊不在共用),除此之外也可以借助上面的方法在原設(shè)計(jì)綜合后修改網(wǎng)表。前面已經(jīng)提到庫文件里面有很多種類型的觸發(fā)器,所以應(yīng)對(duì)不同的DFF觸發(fā)器建立相應(yīng)的庫單元,下面是一種建立庫單元的方法,主要分為2步:版圖設(shè)計(jì)和仿真特性提取。

          單元庫的建立首先要完成單元的版圖設(shè)計(jì),在確定單元庫所包含的單元種類和單元電路后,根據(jù)加工廠家的工藝參數(shù),設(shè)計(jì)規(guī)則等完成單元的版圖設(shè)計(jì),并導(dǎo)出電路網(wǎng)表,此時(shí)網(wǎng)表中不僅有電路結(jié)構(gòu),還有電阻,電容參數(shù)。然后就可以進(jìn)行單元的參數(shù)提取工作。

          參數(shù)提取需要選擇一種用于參數(shù)提取的工具,這里選擇siliconsmart,其次要確定模擬仿真工具,如HSpice。主要步驟包括創(chuàng)建工作目錄配置仿真環(huán)境,引入?yún)⒖紟?,產(chǎn)生仿真文件,運(yùn)行仿真特性提取,生成庫文件。
          創(chuàng)建工作目錄是指創(chuàng)建一個(gè)用于siliconsmart運(yùn)行的目錄,此時(shí)會(huì)自動(dòng)生成一個(gè)名為config.tcl的腳本文件,需要手動(dòng)對(duì)其進(jìn)行一些關(guān)鍵配置,主要包括模擬工具的選擇(這里選擇HSpice),模擬模型的指定,環(huán)境溫度等變量的設(shè)置等。引入?yún)⒖紟焓菫楣ぞ咧付ㄒ粋€(gè)參考的庫單元,工具將參考單元的信息摘取出來,并為該單元生成一個(gè)控制文件,該文件詳細(xì)描述了需要提取的單元的信息。包括單元網(wǎng)表文件,管腳信息,邏輯功能,輸入信號(hào)的上升/下降時(shí)間,輸出管腳負(fù)載情況等。如果沒有參考的庫文件,則需要手動(dòng)編寫該文件。產(chǎn)生仿真文件是告訴工具對(duì)單元的哪些方面進(jìn)行特性提取,比如時(shí)序,功耗,CCS模型等。運(yùn)行仿真提取是對(duì)單元進(jìn)行模擬仿真特性提取工作。生成庫文件會(huì)產(chǎn)生2個(gè)庫單元,其中.v是仿真工具用的仿真庫,.lib是可讀的綜合庫,可以在DC中用read_lib *.lib命令讀入.lib文件,然后用write_ lib* *.db命令可以生成.db綜合庫(*代表庫單元的名字)。

          對(duì)于加固來說,除了用電路加固外可能還需要選擇更加可靠的工藝,SOI工藝就具有很好的性能,它消除了閂鎖效應(yīng),有效地降低了單粒子效應(yīng),而此時(shí)就需要建立自己的單元庫了,庫中的觸發(fā)器單元就可以直接建成三模冗余觸發(fā)器的庫單元。

          3 結(jié)語

          航天系統(tǒng)中芯片的能力是一個(gè)重要的指標(biāo),對(duì)于抗輻射的處理器和存儲(chǔ)器來說,輻照實(shí)驗(yàn)是測(cè)試中的一個(gè)重要環(huán)節(jié)。三模冗余加固技術(shù)只是眾多抗輻照加固技術(shù)的一種,比較常用的還有檢錯(cuò)糾錯(cuò)碼EDAC,SOI工藝加固,其中采用SOI工藝流片的費(fèi)用比普通工藝更為昂貴。標(biāo)準(zhǔn)單元庫的建立對(duì)ASIC設(shè)計(jì)來說是一項(xiàng)基礎(chǔ)性的工作,建立符合設(shè)計(jì)需要的標(biāo)準(zhǔn)單元庫對(duì)芯片設(shè)計(jì)來說是很重要的,對(duì)此文章提供了一種一般性的方法。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();