專(zhuān)利名稱(chēng)::集成電路仿真模擬波形壓縮和解壓縮方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于集成電路
技術(shù)領(lǐng)域:
,具體涉及一種集成電路仿真模擬波形壓縮和解壓縮方法及裝置。
背景技術(shù):
:在集成電路設(shè)計(jì)過(guò)程中,功能驗(yàn)證是非常關(guān)鍵和耗時(shí)的一個(gè)步驟,而功能驗(yàn)證最重要的一個(gè)技術(shù)方法就是仿真。仿真的過(guò)程如下一組需要驗(yàn)證的向量和初始化參數(shù)輸入給電路,然后生成大量的波形文件。隨著集成電路設(shè)計(jì)高速的發(fā)展,電路的規(guī)模越來(lái)越龐大和復(fù)雜,相對(duì)應(yīng)生成的仿真波形文件也越來(lái)越大,需要的硬盤(pán)空間動(dòng)輒上Giga字節(jié),對(duì)于存儲(chǔ)的空間和時(shí)間越來(lái)越多,因此快速的波形壓縮技術(shù)目前不可或缺,并且不能影響現(xiàn)有的仿真速度和精度。盡管對(duì)于目前來(lái)說(shuō),波形壓縮顯得十分重要,并且是一項(xiàng)充滿(mǎn)挑戰(zhàn)的問(wèn)題,但是很少有這方面的工作。有一些經(jīng)典的壓縮算法[1,2,3],雖然他們可以有效的減小文件的尺寸,也有不少優(yōu)化的算法,但是這些算法都需要消耗大量的運(yùn)算時(shí)間,而且對(duì)于模擬波形壓縮來(lái)說(shuō),通常壓縮比不是很理想。現(xiàn)在還有一些商業(yè)軟件可以支持壓縮波形的保存,常用的比如MentorGraphics公司Modelsim支持的波形文件WLF(WaveLogFile),SpringSoft(Novas)^W]Debussy/Verdi^^fWAW^Xi^fsdb(FastSignalDataBase),Cadence公司NCverilog和Simvision支持的波形文件shm、以及Synopsys公司VCSDVE支持的波形文件vpd,但是他們的算法都不是公開(kāi)的,基于以上需求,本發(fā)明對(duì)仿真出的波形進(jìn)行分析,提出一種高效的算法,并且有著很高的壓縮比率。參考文獻(xiàn)(1)J.ZivandA.Lempe1,"AUniversalAlgorithmforSequentialDataCompression,,,IEEETransactiononInformationTheory,Vol.IT-23,No.3,May1977(2)G.Mandyam,N.AhmedandN.Magotra,"ADCT-BasedSchemeforLosslessImageCompression,,,IS&T/SPIEElectronicImagingConference,February1995(3)DzungT.Hoang,PhilipM.LongandJeffreyScottVitter,"DictionarySelectionUsingPartialMatching,,,InformationSciences,Vol.119,No.1-2,57-72,1999。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種占用存儲(chǔ)空間少,計(jì)算復(fù)雜度低,壓縮比高的集成電路仿真模擬波形數(shù)據(jù)的壓縮和解壓縮方法及裝置。本發(fā)明提出的集成電路仿真模擬波形壓縮和解壓縮方法,其壓縮過(guò)程如圖1所示,其基本過(guò)程為將一個(gè)時(shí)間點(diǎn)上的所有結(jié)點(diǎn)的電壓和電流輸出值作為一幀,并將連續(xù)的數(shù)幀作為一個(gè)時(shí)間片,在一個(gè)時(shí)間片內(nèi)選取開(kāi)頭的一幀作為參考幀(I幀),其余的幀為比較幀(P幀),并分別對(duì)I幀和P幀分別處理和編碼,最后寫(xiě)入文件,完成波形數(shù)據(jù)的壓縮。設(shè)所有幀的長(zhǎng)度為FRAME_LEN,幀內(nèi)的序號(hào)為FRAME_IDX=[1:FRAME_LEN],每幀內(nèi)的輸出值為data[dld2…dftamelen];對(duì)I幀的壓縮步驟為1)檢測(cè)輸出值為零的波形,記錄序號(hào)idX_zer0S{i|di=0};2)則輸出為非零值的序號(hào)idx_non_zeros=FRAME_IDX-idx_zeros;3)比較數(shù)組idX_zer0S和idX_n0n_Zer0S的大小,選出較小的一個(gè),并根據(jù)其長(zhǎng)度選擇相對(duì)應(yīng)的存儲(chǔ)長(zhǎng)度,寫(xiě)入文件;4)將剩余的非零輸出值寫(xiě)入文件。對(duì)P幀的壓縮步驟為1)將此幀與I幀相減,求出差值為delta_data,并求出一個(gè)時(shí)間片內(nèi)每個(gè)波形所對(duì)應(yīng)的最大變化值,記為max_delta;2)將|delta_data./data<le_3的數(shù)據(jù)視為零值處理;3)根據(jù)maX_delta的大小對(duì)剩余的delta_data進(jìn)行均勻量化或非均勻量化,量化的存儲(chǔ)長(zhǎng)度根據(jù)精度的不同,選擇不同的存儲(chǔ)長(zhǎng)度。4)將量化后的數(shù)據(jù)寫(xiě)入文件。壓縮后的文件存儲(chǔ)格式如圖2,其中“時(shí)間片”的個(gè)數(shù)為仿真時(shí)間除以每個(gè)“時(shí)間片”的長(zhǎng)度,“P幀”的個(gè)數(shù)為“時(shí)間片”的長(zhǎng)度減一,“壓縮信息”中,“時(shí)間軸坐標(biāo)長(zhǎng)度”和“數(shù)據(jù)起始點(diǎn)”的個(gè)數(shù)為T(mén)able的數(shù)量。對(duì)于解壓縮過(guò)程,與壓縮過(guò)程相反?;谏鲜鲭娐贩抡婺M波形數(shù)據(jù)壓縮和解壓縮方法的裝置,如圖3所示,它包括輸入單元102、輸出單元103、程序存儲(chǔ)單元105、外部總線110、內(nèi)存106、存儲(chǔ)管理單元107、輸入輸出橋接單元108、系統(tǒng)總線111和處理器109。其中,所述輸入單元102、輸出單元103和程序存儲(chǔ)單元105直接連接到所述外部總線110;外部總線110通過(guò)輸入輸出橋接單元108與所述系統(tǒng)總線111相連;所述內(nèi)存106通過(guò)存儲(chǔ)管理單元107連接到系統(tǒng)總線111;所述處理器109直接連接到系統(tǒng)總線111;在程序存儲(chǔ)單元105中存儲(chǔ)有快速高效電路仿真模擬波形壓縮和解壓縮程序模塊104。所述的壓縮和解壓縮程序模塊104可以將上述電路仿真模擬波形數(shù)據(jù)壓縮和解壓縮方法用C/C++/F0RTRAN等編程語(yǔ)言實(shí)現(xiàn)并經(jīng)過(guò)編譯得到。在壓縮時(shí),仿真出的模擬波形數(shù)據(jù)流通過(guò)輸入單元102傳輸至分析裝置112;分析裝置112通過(guò)輸出單元103對(duì)外輸出壓縮后的波形。在解壓縮時(shí),壓縮后的波形文件通過(guò)輸入單元102傳輸至分析裝置112;分析裝置112通過(guò)輸出單元103對(duì)外輸出恢復(fù)的模擬波形數(shù)據(jù)。本發(fā)明快速高效電路仿真模擬波形數(shù)據(jù)壓縮解壓裝置112運(yùn)行時(shí),通過(guò)輸入單元102輸入電源地網(wǎng)絡(luò)的電路特征數(shù)據(jù)101至內(nèi)存106。輸入單元可以是外部存儲(chǔ)設(shè)備或網(wǎng)絡(luò)連接。同時(shí),壓縮、解壓縮執(zhí)行程序模塊104也被載入內(nèi)存。處理器109執(zhí)行此程序模塊104對(duì)模擬波形數(shù)據(jù)進(jìn)行壓縮或者對(duì)壓縮的后的數(shù)據(jù)進(jìn)行解壓,結(jié)果經(jīng)過(guò)輸出單元以數(shù)據(jù)流或文本的形式通過(guò)輸出單元103提供給用戶(hù)。這一裝置的典型實(shí)例為一臺(tái)包含4GB內(nèi)存、IntelXeon3.OGHz處理器以及硬盤(pán)驅(qū)動(dòng)器的工作站。處理器109利用Linux操作系統(tǒng)來(lái)執(zhí)行程序存儲(chǔ)單元105所存儲(chǔ)的本發(fā)明所提出的電路仿真模擬波形數(shù)據(jù)壓縮和解壓縮程序。本發(fā)明快速高效電路仿真模擬波形數(shù)據(jù)壓縮和解壓縮的裝置和方法具有如下優(yōu)點(diǎn)。1.具有較高的壓縮比,并且可以有效的保持?jǐn)?shù)據(jù)精度。本發(fā)明模擬波形數(shù)據(jù)壓縮方法,在量化的過(guò)程中根據(jù)波形數(shù)據(jù)的變化范圍去選擇均勻量化和非均勻量化,而且根據(jù)用戶(hù)需要的精度范圍來(lái)選擇有效的存儲(chǔ)空間,有效的保持了量化后的模擬波形數(shù)據(jù)的精度,由于量化后的數(shù)據(jù)重復(fù)性很大,再經(jīng)過(guò)自適應(yīng)算術(shù)編碼進(jìn)一步的提高了壓縮效率,很大程度上節(jié)省了占用的存儲(chǔ)空間。2.計(jì)算復(fù)雜度低,可以處理大量數(shù)據(jù)的仿真模擬波形數(shù)據(jù)。本發(fā)明模擬波形數(shù)據(jù)壓縮方法由于只存在較簡(jiǎn)單的量化和編碼處理,計(jì)算復(fù)雜度很低,并且壓縮的時(shí)候完全可以跟下一個(gè)時(shí)間點(diǎn)的仿真計(jì)算并行處理,所以完全不會(huì)占用很多壓縮時(shí)間,對(duì)仿真的速度不會(huì)有影響,此外在壓縮和解壓縮的過(guò)程中運(yùn)用可以mmap技術(shù),可以有效的提高文件的讀寫(xiě)速度,同時(shí)對(duì)大文件的讀寫(xiě)效率有很大的提升,適用于處理大規(guī)模仿真模擬波形數(shù)據(jù)。圖1是本發(fā)明快速高效電路仿真模擬波形壓縮過(guò)程的原理框圖。圖2是本發(fā)明快速高效電路仿真模擬波形壓縮存儲(chǔ)文件格式。圖3是本發(fā)明快速高效電路仿真模擬波形數(shù)據(jù)壓縮解壓裝置的結(jié)構(gòu)示意圖。圖4是本發(fā)明采用的非均勻量化原理示意圖。圖5是對(duì)于MUL8x8_l.trO,從本發(fā)明壓縮后的波形文件中解壓恢復(fù)出的波形與SPICE電路模擬器的仿真得到的原始數(shù)據(jù)結(jié)果比較曲線圖。圖6是對(duì)于MUL8x8_l.trO,從本發(fā)明壓縮后的波形文件中解壓恢復(fù)出的波形與SPICE電路模擬器的仿真得到的原始數(shù)據(jù)誤差比較曲線圖。具體實(shí)施例方式本發(fā)明快速高效電路仿真模擬波形數(shù)據(jù)壓縮解壓裝置如圖3中112所示,它包括輸入單元102、輸出單元103、程序存儲(chǔ)單元105、外部總線110、內(nèi)存106、存儲(chǔ)管理單元107、輸入輸出橋接單元108、系統(tǒng)總線111和處理器109。這一裝置的典型實(shí)例為一臺(tái)包含4GB內(nèi)存、htelXeon3.OGHz處理器以及硬盤(pán)驅(qū)動(dòng)器的工作站。處理器109利用Linux操作系統(tǒng)來(lái)執(zhí)行程序存儲(chǔ)單元105所存儲(chǔ)的本發(fā)明所提出的快速高效電路仿真模擬波形數(shù)據(jù)壓縮解壓程序。本發(fā)明快速高效電路仿真模擬波形數(shù)據(jù)壓縮方法,如圖1所示,包含以下步驟步驟1創(chuàng)建或打開(kāi)壓縮文件。如果是新的仿真開(kāi)始,則創(chuàng)建一個(gè)新的文件對(duì)象,如果是從暫停的仿真開(kāi)始,接下來(lái)繼續(xù)未完成的仿真,則打開(kāi)相對(duì)應(yīng)的文件對(duì)象,交給下面的步驟。步驟2:設(shè)置壓縮參數(shù)。如果是仿真繼續(xù),則跳過(guò)此步驟。如果是新的仿真開(kāi)始,設(shè)置如下參數(shù)仿真存儲(chǔ)的精度,8位,12位,或者16位;每個(gè)時(shí)間片的長(zhǎng)度。步驟3在文件開(kāi)始位置,按照?qǐng)D2的格式,以及根據(jù)讀取網(wǎng)表所得的table數(shù)量、需要存儲(chǔ)的節(jié)點(diǎn)名稱(chēng),預(yù)留存儲(chǔ)波形的“結(jié)點(diǎn)數(shù)量”、“table數(shù)量”、“時(shí)間軸坐標(biāo)長(zhǎng)度”、“數(shù)據(jù)起始點(diǎn)”的空間,為了防止用戶(hù)的強(qiáng)行終止操作和程序的非正常終止,以上的“table數(shù)量”、“時(shí)間坐標(biāo)軸長(zhǎng)度”、“數(shù)據(jù)起始點(diǎn)”都是實(shí)時(shí)更新的,以存儲(chǔ)已經(jīng)壓縮的波形,不會(huì)造成仿真數(shù)據(jù)的丟失。步驟4仿真波形的處理和存儲(chǔ)。分步驟1將每一個(gè)時(shí)間片的第一幀作為I幀。1)檢測(cè)輸出值為零的波形,由于采用的是double類(lèi)型的數(shù)據(jù)存儲(chǔ)格式,此時(shí)檢測(cè)是否為零的標(biāo)準(zhǔn)為絕對(duì)值是否小于le-20,記錄序號(hào)idX_Zer0S{iIdi=0},輸出為非—白勺idx_non_zeros=FRAME_IDX-idx_zeros;2)比較數(shù)組idX_zer0S和idX_n0n_Zer0S的大小,選出較小的一個(gè),并根據(jù)其長(zhǎng)度選擇相對(duì)應(yīng)的存儲(chǔ)長(zhǎng)度,寫(xiě)入文件;3)將剩余的非零輸出值寫(xiě)入文件。4)寫(xiě)入此幀相對(duì)應(yīng)的時(shí)間軸坐標(biāo),更新寫(xiě)在壓縮信息中的時(shí)間軸坐標(biāo)長(zhǎng)度。分步驟2將每一個(gè)時(shí)間片的剩余幀作為P幀。開(kāi)辟一段內(nèi)存空間緩存每一個(gè)P幀和I幀的差值。將|delta_data./data<le_3的數(shù)據(jù)視為零值處理;分步驟3在每一個(gè)時(shí)間片的最后一幀取得此段時(shí)間片的最大差值和最小差值。1)根據(jù)最大值和最小值的比值選擇相對(duì)應(yīng)的量化方式。如果maX_delta/min_delta>le3,選擇非均勻量化由于一個(gè)時(shí)間片內(nèi)波形變化可能比較大,采用均勻量化的話在小信號(hào)部分精度損失比較大,可以考慮非均勻量化,以提高量化的精度。非均勻量化的實(shí)現(xiàn)如圖4所示,波形壓縮部分將輸入變量變換成另一個(gè)變量,即y=f(x)0非均勻量化就是對(duì)壓縮后的變量y進(jìn)行均勻量化。解壓部分用一個(gè)傳輸特性為χ=ΓΗυ)的擴(kuò)張器來(lái)恢復(fù)。本發(fā)明的采用的非均勻壓縮放法為13折線法,也稱(chēng)A壓縮律。A壓縮律的壓縮特性為權(quán)利要求1.一種集成電路仿真模擬波形數(shù)據(jù)壓縮和解壓縮方法,其特征在于將一個(gè)時(shí)間點(diǎn)上的所有結(jié)點(diǎn)的電壓和電流輸出值作為一幀,并將連續(xù)的數(shù)幀作為一個(gè)時(shí)間片,在一個(gè)時(shí)間片內(nèi)選取開(kāi)頭的一幀作為參考幀,稱(chēng)為I幀,其余的幀為比較幀,稱(chēng)為P幀,分別對(duì)I幀和P幀進(jìn)行處理和編碼,最后寫(xiě)入文件,完成波形數(shù)據(jù)的壓縮;設(shè)所有幀的長(zhǎng)度為FRAME_LEN,幀內(nèi)的序號(hào)為FRAME_IDX=[1:FRAME_LEN],每幀內(nèi)的輸出值為data[dld2...Clframelen];對(duì)I幀的壓縮步驟為1)檢測(cè)輸出值為零的波形,記錄序號(hào)idX_zer0S{i|di=0};2)則輸出為非零值的序號(hào)idx_non_zeros=FRAME_IDX-idx_zeros;3)比較數(shù)組idX_zer0S和idX_n0n_Zer0S的大小,選出較小的一個(gè),并根據(jù)其長(zhǎng)度選擇相對(duì)應(yīng)的存儲(chǔ)長(zhǎng)度,寫(xiě)入文件;4)將剩余的非零輸出值寫(xiě)入文件;對(duì)P幀的壓縮步驟為1)將此幀與I幀相減,求出差值為delta_data,并求出一個(gè)時(shí)間片內(nèi)每個(gè)波形所對(duì)應(yīng)的最大變化值,記為max_delta;2)將|delta_data/data<le_3的數(shù)據(jù)視為零值處理;3)根據(jù)maX_delta的大小對(duì)剩余的delta_data進(jìn)行均勻量化或非均勻量化,量化的存儲(chǔ)長(zhǎng)度精度的不同,選擇不同的存儲(chǔ)長(zhǎng)度;4)將量化后的數(shù)據(jù)寫(xiě)入文件;解壓縮方法的過(guò)程,與壓縮方法的過(guò)程相反。2.一種基于權(quán)利要求1所述方法的集成電路仿真模擬波形數(shù)據(jù)壓縮和解壓縮的裝置,其特征在于包括輸入單元(102)、輸出單元(103)、程序存儲(chǔ)單元(10)、外部總線(110)、內(nèi)存(106)、存儲(chǔ)管理單元(107)、輸入輸出橋接單元(108)、系統(tǒng)總線(111)和處理器(109);其中,所述輸入單元(102)、輸出單元(103)和程序存儲(chǔ)單元(105)直接連接到所述外部總線(110);外部總線(110)通過(guò)輸入輸出橋接單元(108)與所述系統(tǒng)總線(111)相連;所述內(nèi)存(106)通過(guò)存儲(chǔ)管理單元(107)連接到系統(tǒng)總線(111);所述處理器(109)直接連接到系統(tǒng)總線(111);在程序存儲(chǔ)單元(105)中存儲(chǔ)有如權(quán)利要求1所述的集成電路仿真模擬波形壓縮和解壓縮方法的程序模塊(104);在壓縮時(shí),仿真出的模擬波形數(shù)據(jù)流通過(guò)輸入單元(102)傳輸至所述裝置;所述裝置通過(guò)輸出單元(103)對(duì)外輸出壓縮后的波形;在解壓縮時(shí),壓縮后的波形文件通過(guò)輸入單元(102)傳輸至所述裝置;所述裝置通過(guò)輸出單元(103)對(duì)外輸出恢復(fù)的模擬波形數(shù)據(jù)。全文摘要本發(fā)明屬于集成電路
技術(shù)領(lǐng)域:
,具體為一種集成電路仿真模擬波形壓縮和解壓縮方法及裝置。對(duì)于壓縮方法,首先將輸入的模擬波形數(shù)據(jù)流按照仿真時(shí)間的特性分割成時(shí)間片,對(duì)于每一個(gè)時(shí)間片內(nèi),劃分出I幀和P幀,對(duì)I幀進(jìn)行判斷零值存儲(chǔ)操作;對(duì)于P幀,與I幀求殘差,然后進(jìn)行量化,自適應(yīng)算術(shù)編碼,存儲(chǔ)。解壓過(guò)程與壓縮過(guò)程相反。裝置包括輸入單元、輸出單元、程序存儲(chǔ)單元、外部總線、內(nèi)存、存儲(chǔ)管理單元、輸入輸出橋接單元、系統(tǒng)總線和處理器;在程序存儲(chǔ)單元中存儲(chǔ)有壓縮和解壓縮程序。本發(fā)明對(duì)模擬波形進(jìn)行壓縮,可以有效的減少占用的存儲(chǔ)空間,以很低的計(jì)算復(fù)雜度達(dá)到很高的壓縮比。文檔編號(hào)G06F17/50GK102270262SQ20111024219公開(kāi)日2011年12月7日申請(qǐng)日期2011年8月23日優(yōu)先權(quán)日2011年8月23日發(fā)明者劉毅,曾璇,楊帆申請(qǐng)人:復(fù)旦大學(xué)