三模冗余在ASIC設(shè)計(jì)中的實(shí)現(xiàn)方法
圖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ò)的狀況。本文引用地址:http://butianyuan.cn/article/177765.htm
如果減小時(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ā)器改為三模冗余觸發(fā)器,用門級(jí)描述編寫三模冗余觸發(fā)器模塊,然后和修改的網(wǎng)表一起再次綜合就可得到三模冗余加固后的網(wǎng)表文件。值得說明的是DC綜合庫里面有多種類型的觸發(fā)器,比如SDFF,EDFF,SEDFF,JK,DFF,即使在綜合腳本中限定只用DFF觸發(fā)器,也會(huì)有好幾種,所以對(duì)于不同的單元要編寫相應(yīng)的三模冗余觸發(fā)器模塊(其結(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)⒖紟欤a(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)論