一種構(gòu)造存儲(chǔ)器編譯軟件的流程方法
【專利摘要】本發(fā)明涉及集成電路輔助設(shè)計(jì)軟件工具中存儲(chǔ)器設(shè)計(jì)領(lǐng)域。存儲(chǔ)器設(shè)計(jì)中,由于硬件設(shè)計(jì)人員一般不具備軟件開發(fā)能力,所以存儲(chǔ)器編譯軟件的開發(fā)一般是委托給軟件設(shè)計(jì)公司,價(jià)格昂貴。本發(fā)明設(shè)計(jì)并實(shí)現(xiàn)了一種適用于硬件工程師的存儲(chǔ)器編譯器描述語言,通過該語言可以有效地描述版圖拼接,網(wǎng)表連接,和仿真測(cè)量。這些程序經(jīng)過打包后就生成了存儲(chǔ)器編譯器。使用該編譯器最終產(chǎn)生存儲(chǔ)器的GDSII版圖,CDL網(wǎng)表,和Lib時(shí)延文件。本發(fā)明可以極大降低存儲(chǔ)器編譯器的開發(fā)難度,從而使硬件工程師自身就能完成編譯器的開發(fā),這極大加速了存儲(chǔ)器設(shè)計(jì)的收斂過程,縮減了開發(fā)周期與成本。
【專利說明】一種構(gòu)造存儲(chǔ)器編譯軟件的流程方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及集成電路輔助設(shè)計(jì)軟件工具中存儲(chǔ)器設(shè)計(jì)領(lǐng)域。
【背景技術(shù)】
[0002]存儲(chǔ)器設(shè)計(jì)(Memory)是集成電路開發(fā)過程中的一個(gè)專門領(lǐng)域,存儲(chǔ)器包括SRAM,DRAM, ROM, Register File, Flash等類型。為了能使存儲(chǔ)器在多款I(lǐng)C芯片中使用,一般是將存儲(chǔ)器劃分成多個(gè)底層單元(Leaf Cell),再根據(jù)一定的拼接規(guī)則將底層單元拼接成指定大小的存儲(chǔ)器,例如字(Words)的容量,每個(gè)字有多少位(Bits),以及多路復(fù)用器(Mux)的寬度。除了⑶SII版圖外,一個(gè)存儲(chǔ)器的完整開發(fā)還包括⑶L網(wǎng)表,LEF端口描述,以及LIB時(shí)序性能表等。
[0003]手工拼接存儲(chǔ)器既費(fèi)時(shí)又容易出錯(cuò),所以每一存儲(chǔ)器最終都會(huì)配套一款自動(dòng)編譯軟件,叫做存儲(chǔ)器編譯器(Memory Compiler),可以根據(jù)用戶指定的Words, Bits,和Mux產(chǎn)生對(duì)應(yīng)的存儲(chǔ)器。由于硬件設(shè)計(jì)人員一般不具備軟件開發(fā)能力,所以存儲(chǔ)器編譯軟件的開發(fā)一般是委托給軟件設(shè)計(jì)公司。也有專門從事存儲(chǔ)器開發(fā)的IP服務(wù)公司,他們根據(jù)存儲(chǔ)器的規(guī)格說明完成硬件及軟件的所有開發(fā),價(jià)格昂貴。
[0004]本發(fā)明設(shè)計(jì)了一種適用于硬件工程師的存儲(chǔ)器編譯器描述語言(MemoryCompiler Descript1n Language),簡(jiǎn)稱MCDL。使用該語言可以極大降低存儲(chǔ)器編譯器的開發(fā)難度,從而使硬件工程師自身就能完成編譯器的開發(fā);同時(shí)也極大加速了存儲(chǔ)器設(shè)計(jì)的收斂過程,縮減了開發(fā)周期與成本。
【發(fā)明內(nèi)容】
[0005]附圖1是使用本發(fā)明進(jìn)行存儲(chǔ)器編譯器開發(fā)的系統(tǒng)框圖。其中MCDL語言庫(kù)是已經(jīng)實(shí)現(xiàn)的一組計(jì)算機(jī)程序庫(kù),存儲(chǔ)器底層單元和拼接規(guī)則也已經(jīng)定義完成。在此基礎(chǔ)上,硬件工程師使用MCDL語言編寫版圖拼接程序,網(wǎng)表連接程序,和仿真測(cè)量程序。由于MCDL語言的簡(jiǎn)單性,硬件工程師完全可以自主完成程序的編制。連接到MCDL實(shí)現(xiàn)庫(kù)后,這些程序就可以分別產(chǎn)生GDSII版圖,CDL網(wǎng)表,延時(shí)插值數(shù)據(jù)庫(kù)等一系列結(jié)果文件。在驗(yàn)證上述程序結(jié)果的正確性后,通過MCDL可以打包產(chǎn)生一個(gè)適用于該處儲(chǔ)器的編譯器。IC芯片設(shè)計(jì)人員使用該編譯器,指定相關(guān)參數(shù),例如W0rdS,BitS,MUX,就可以馬上產(chǎn)生需要的存儲(chǔ)器設(shè)計(jì)了。
[0006]MCDL語言是一種腳本語言,米用TCL (Toolkit Command Language)語言作為基礎(chǔ)實(shí)現(xiàn),即支持的變量存取,表達(dá)式計(jì)算,和控制結(jié)構(gòu)(if,while, for)等都與TCL語言一致。MCDL語言的核心是提供了一組函數(shù),用以方便的定義版圖的拼接,網(wǎng)表的連接,和仿真測(cè)量的提取。下面列出主要的函數(shù)。
[0007]l)MCDL_CreateCell:該函數(shù)生成一個(gè)單元。一個(gè)存取器設(shè)計(jì)是從底向上由層次化的多個(gè)單元構(gòu)建的,最底層的稱為L(zhǎng)eaf Cell。例如,一個(gè)BitCell單元由4個(gè)CELL_6T單元拼接而成,多個(gè)BitCell單元拼接生成RowCol單元,多個(gè)RowCol單元再拼接生成ArrayLeft單元。MCDL_CreateCell函數(shù)就用于創(chuàng)建這種層次化的結(jié)構(gòu)。
[0008]2)MCDL_Place:該函數(shù)用于版圖單元拼接。一個(gè)版圖單元的放置由兩個(gè)參數(shù)決定,一個(gè)是其坐標(biāo)(X,y),一個(gè)是其旋轉(zhuǎn)方向,有8種旋轉(zhuǎn)方向,分別為RO,R90,R180,R270,MX,MXR90,MY,MYR90。坐標(biāo)需要根據(jù)旋轉(zhuǎn)方向進(jìn)行調(diào)整。在MCDL中,單元放置不需要考慮坐標(biāo),而只需要考慮放置在已有圖形的上方,下方,左方,還是右方,大大簡(jiǎn)化了拼接過程。如附圖2所示,先放置一個(gè)RO的單元A,再在A的上方放置一個(gè)MX的單元B,最后在AB的右方放置R90的單元C。3條MCDL語句如下:
[0009]MCDL_Place Left A RO
[0010]MCDL_Place Top B MX
[0011]MCDL_Place Right C R90
[0012]每一次放置,MCDL都會(huì)檢查拼接的單元是否對(duì)齊,例如檢查A和B的寬度是否一致,C的高度是否等于A加B的高度。
[0013]3)MCDL_Connect:該函數(shù)用于網(wǎng)表單元連接。格式采用硬件設(shè)計(jì)人員熟悉的Verilog連接語句形式,支持按名連接和按位置連接兩種形式,支持?jǐn)?shù)據(jù)向量連接,并且,當(dāng)局部信號(hào)和端口同名時(shí),可以忽略連接不寫,這極大簡(jiǎn)化了連接過程,據(jù)統(tǒng)計(jì)代碼量平均要比 Verilog 減少 60%。
[0014]4)MCDL_PromapLabel:該函數(shù)用于產(chǎn)生頂層單元的端口名及圖形。
[0015]5)MCDL_AddStimus:該函數(shù)用于產(chǎn)生仿真激勵(lì)。支持Pulse, Sin,和PWL等多種格式的波形定義。
[0016]6)MCDL_Meas:該函數(shù)用于從仿真結(jié)果數(shù)據(jù)中提取相應(yīng)的測(cè)量值,對(duì)一組指定大小的存儲(chǔ)器運(yùn)行該函數(shù)就可以形成最終的插值數(shù)據(jù)庫(kù)。測(cè)量類型包括:建立時(shí)間(如附圖3),即在時(shí)鐘信號(hào)有效前,數(shù)據(jù)信號(hào)必須已有效的時(shí)間;保持時(shí)間(如附圖3),即在時(shí)鐘信號(hào)有效后,數(shù)據(jù)信號(hào)必須保持有效的時(shí)間;傳輸時(shí)間,即在輸入信號(hào)有效后到輸出信號(hào)有效的時(shí)間等等。根據(jù)上升沿和下降沿以及有效百分比,上述測(cè)量有多種組合。
[0017]7)MCDL_GenLib:該函數(shù)用于從插值數(shù)據(jù)庫(kù)中根據(jù)指定的存儲(chǔ)器參數(shù),例如Words, Bits, Mux,溫度,頻率等,綜合出描述存儲(chǔ)器時(shí)延和功率的LIB文件。這里插值的意義在于:由于存儲(chǔ)器可取值的大小范圍很大,例如Words可取值范圍在8至4096,Bits可取值范圍在2至64,Mux可取值范圍在8,16,32。所以,我們不可能對(duì)每一種大小都進(jìn)行仿真得到其時(shí)延特性。我們只選取幾個(gè)邊界和中間值的存儲(chǔ)器實(shí)例進(jìn)行仿真,用它們的結(jié)果構(gòu)成插值數(shù)據(jù)庫(kù)。每當(dāng)我們需要一個(gè)特定大小的存儲(chǔ)器性能時(shí),就通過插值算法根據(jù)數(shù)據(jù)庫(kù)中的已有數(shù)據(jù)綜合出該需求存儲(chǔ)器的性能。除了實(shí)現(xiàn)多維插值外,MCDL還可以對(duì)插值數(shù)據(jù)進(jìn)行縮放(Margin)操作,例如將數(shù)據(jù)統(tǒng)一增加20%的余量,以確保電路工作穩(wěn)定。
[0018]打包后的編譯器具有如下特點(diǎn):1)所有程序及底層單元數(shù)據(jù)庫(kù)都進(jìn)行加密;2)產(chǎn)生的版圖和網(wǎng)表都進(jìn)行了打散處理。上述兩點(diǎn)用于有效保護(hù)存儲(chǔ)器的設(shè)計(jì)思想。
【專利附圖】
【附圖說明】
[0019]圖1:生成存儲(chǔ)器編譯器的系統(tǒng)框圖。
[0020]圖2:MCDL_Place 命令示例。
[0021]圖3:建立時(shí)間與保持時(shí)間的時(shí)序圖。
[0022]圖4:存儲(chǔ)器編譯器生成流程。
【具體實(shí)施方式】
:
[0023]參見附圖4:
[0024]第一步:硬件工程師設(shè)計(jì)存儲(chǔ)器底層單元與拼接規(guī)則。
[0025]第二步:使用MCDL語言編寫版圖拼接程序,執(zhí)行該程序,即可得到指定Words,Bits, Mux的存儲(chǔ)器⑶SII版圖以及描述存儲(chǔ)器端口的LEF文件。
[0026]第三步:使用MCDL語言編寫網(wǎng)表連接程序,執(zhí)行該程序,即可得到指定Words,Bits, Mux的存儲(chǔ)器⑶L網(wǎng)表。這一步可以和第二步并行執(zhí)行。
[0027]第四步:使用MCDL語言編寫仿真激勵(lì)及測(cè)量程序,執(zhí)行該程序,程序會(huì)自動(dòng)對(duì)特定的存儲(chǔ)器例化器件調(diào)用SPICE仿真,并提取得到各類時(shí)序和功耗的插值數(shù)據(jù)庫(kù)。
[0028]第五步:對(duì)特定大小的存儲(chǔ)器例化器件調(diào)用LVS比較產(chǎn)生的⑶SII版圖和⑶L網(wǎng)表是否一致,驗(yàn)證版圖拼接程序和網(wǎng)表連接程序的正確性。
[0029]第六步:將版圖拼接程序,網(wǎng)表連接程序,插值數(shù)據(jù)庫(kù),以及底層單元⑶SII文件打包生成該存儲(chǔ)器的編譯器。包中各種文件進(jìn)行加密,以保護(hù)存儲(chǔ)器的設(shè)計(jì)思想。
[0030]最后,生成的編譯器可以發(fā)布給IC芯片設(shè)計(jì)人員,由其根據(jù)芯片需要產(chǎn)生不同大小的存儲(chǔ)器供使用。
【權(quán)利要求】
1.一種構(gòu)造存儲(chǔ)器編譯軟件的流程方法,基本含義是:設(shè)計(jì)并實(shí)現(xiàn)一種適用于硬件工程師的存儲(chǔ)器編譯器描述語言。硬件工程師可以用其來描述版圖拼接,網(wǎng)表連接,和仿真測(cè)量,這些程序經(jīng)過打包后生成存儲(chǔ)器的編譯器,并最終產(chǎn)生存儲(chǔ)器的⑶SII版圖,⑶L網(wǎng)表,和Lib時(shí)延文件。使用該語言可以極大降低存儲(chǔ)器編譯器的開發(fā)難度,從而使硬件工程師自身就能完成編譯器的開發(fā),加速存儲(chǔ)器設(shè)計(jì)的收斂過程,縮減開發(fā)周期與成本。 具有如下特點(diǎn): 1)定義并實(shí)現(xiàn)了用于生成存儲(chǔ)器編譯器的一種腳本語言,使用其可以方便的定義版圖的拼接,網(wǎng)表的連接,和仿真測(cè)量的提取。 2)版圖拼接使用相對(duì)位置替代絕對(duì)坐標(biāo),極大簡(jiǎn)化了拼接中的計(jì)算工作量;對(duì)齊檢查則保證拼接正確性,加速拼接過程的收斂。 3)支持多維插值運(yùn)算,對(duì)插值結(jié)果可以進(jìn)行Margin修正以保證電路的穩(wěn)定工作。 4)編譯器內(nèi)對(duì)程序及底層單元數(shù)據(jù)庫(kù)進(jìn)行加密,并且對(duì)最終拼接結(jié)果進(jìn)行打散處理,有效保護(hù)了存儲(chǔ)器的設(shè)計(jì)思想。
【文檔編號(hào)】G06F9/44GK104376137SQ201310356112
【公開日】2015年2月25日 申請(qǐng)日期:2013年8月15日 優(yōu)先權(quán)日:2013年8月15日
【發(fā)明者】王勇, 侯勁松, 張萍, 李寧 申請(qǐng)人:天津藍(lán)海微科技有限公司