專利名稱:快速讀寫海量數(shù)據(jù)文件的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子設(shè)計自動化(EDA)領(lǐng)域,特別是一種快速讀寫海量數(shù)據(jù)文件的方法。
背景技術(shù):
物理版圖數(shù)據(jù)文件是系統(tǒng)集成電路芯片(SOC)設(shè)計中數(shù)據(jù)量最大的文件,目前已有的SOC電路的物理版圖數(shù)據(jù)文件的大小規(guī)模在幾個GB到幾十個GB量級,隨著集成電路工藝的不斷發(fā)展和設(shè)計技術(shù)的不斷進(jìn)步,SOC電路的物理版圖數(shù)據(jù)規(guī)模將達(dá)到幾百個GB的量級。在SOC設(shè)計流程中,對物理版圖數(shù)據(jù)的讀寫較為頻繁物理綜合需要寫出物理版圖數(shù)據(jù);物理版圖優(yōu)化需要讀取和寫出物理版圖數(shù)據(jù);幾何設(shè)計規(guī)則檢查需要讀取物理版圖數(shù)據(jù);寄生參數(shù)提取需要讀取物理版圖數(shù)據(jù);電路圖和物理版圖一致性檢查(LVS)需要讀取物理版圖數(shù)據(jù);可制造性設(shè)計優(yōu)化(DFM)需要讀取物理版圖數(shù)據(jù)。傳統(tǒng)的數(shù)據(jù)輸入輸出方式是基于最小基本數(shù)據(jù)單位進(jìn)行的,需要在計算機(jī)內(nèi)存中逐一構(gòu)造每一基本數(shù)據(jù)單位。以傳統(tǒng)的數(shù)據(jù)輸入輸出方式讀寫物理版圖數(shù)據(jù)文件規(guī)模的數(shù)據(jù),一次就需要幾十分鐘甚至幾十個小時,而在設(shè)計流程中,尤其是在設(shè)計流程的后端,需要頻繁地讀取如此規(guī)模的數(shù)據(jù),這使得海量規(guī)模的物理版圖數(shù)據(jù)輸入輸出成為了集成電路設(shè)計過程中的一個重要瓶頸。
發(fā)明內(nèi)容
本發(fā)明的目的之一在于提供一種快速讀寫海量數(shù)據(jù)文件的方法,用于在集成電路設(shè)計過程中,提高海量規(guī)模的物理版圖數(shù)據(jù)輸入輸出的效率。本發(fā)明的實(shí)施例提供了一種快速讀寫海量數(shù)據(jù)文件的方法,包括對海量數(shù)據(jù)文件的數(shù)據(jù)類型進(jìn)行分類,為不同數(shù)據(jù)類型的數(shù)據(jù)申請存儲頁面,將相同類型的數(shù)據(jù)存儲到內(nèi)存中的同一存儲頁面,利用存儲頁面到硬盤的快速寫入,將存儲頁面內(nèi)的全部數(shù)據(jù)一次性地寫入硬盤。本發(fā)明通過將相同類型的物理版圖數(shù)據(jù)存儲到內(nèi)存中的同一存儲頁面,而所有物理版圖數(shù)據(jù)存儲頁面的大小是相同的,能夠簡化和加速存儲頁面的創(chuàng)建、導(dǎo)入和導(dǎo)出,并且存儲頁面的大小為計算機(jī)內(nèi)存頁面大小,這樣能夠減小內(nèi)存碎片,提高內(nèi)存使用效率。在將存儲頁面的內(nèi)容寫到硬盤時,忽略內(nèi)存中具體存儲位置上的數(shù)據(jù)屬于哪一個具體的數(shù)據(jù)類型和占據(jù)多少數(shù)據(jù)單位,而是將該存儲頁面的鏡像數(shù)據(jù)寫入硬盤的相應(yīng)文件;在將硬盤中的物理版圖數(shù)據(jù)讀入內(nèi)存時,內(nèi)存存儲頁面的數(shù)據(jù)鏡像在硬盤數(shù)據(jù)文件中得到了保留,重新讀回到內(nèi)存存儲頁面的數(shù)據(jù)保留了各自原先在存儲頁面內(nèi)的位置。從而無需關(guān)注具體的數(shù)據(jù)類型和具體的數(shù)據(jù)單位以及具體數(shù)據(jù)單位的重構(gòu),避免了全部數(shù)據(jù)的逐一重構(gòu),提高了讀寫速度,實(shí)現(xiàn)了計算機(jī)存儲器和硬盤之間快速讀寫海量集成電路物理版圖數(shù)據(jù)。
圖1是本發(fā)明實(shí)施例提供的快速讀寫海量數(shù)據(jù)文件的方法流程圖;圖2是本發(fā)明實(shí)施例中物理版圖數(shù)據(jù)存儲頁面的結(jié)構(gòu)圖;圖3是本發(fā)明實(shí)施例中為物理版圖數(shù)據(jù)申請存儲頁面的示意圖;圖4是本發(fā)明實(shí)施例中將物理版圖數(shù)據(jù)存儲頁面寫入硬盤的示意圖;圖5是本發(fā)明實(shí)施例中從硬盤數(shù)據(jù)文件向內(nèi)存存儲頁面讀入存儲頁面鏡像的示意圖。
具體實(shí)施例方式本發(fā)明的技術(shù)方案可應(yīng)用于物理綜合、物理驗證、寄生參數(shù)提取等集成電路設(shè)計的自動化軟件中,在計算機(jī)存儲器和硬盤之間快速讀寫集成電路設(shè)計中產(chǎn)生的海物理版圖數(shù)據(jù)文件,可有效地回避集成電路設(shè)計過程中的海量物理版圖數(shù)據(jù)輸入輸出所帶來的設(shè)計瓶頸。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)描述。圖1是本實(shí)施例提供的快速讀寫海量數(shù)據(jù)文件的方法流程圖,包括以下步驟步驟101、對物理版圖數(shù)據(jù)的數(shù)據(jù)類型進(jìn)行分類。物理版圖數(shù)據(jù)分類的依據(jù)是物理版圖數(shù)據(jù)的內(nèi)容,同一類型的物理版圖數(shù)據(jù)其存儲空間的字節(jié)數(shù)相同,根據(jù)類型分類的目的是將不同存儲長度的物理版圖數(shù)據(jù)分開存儲。舉例說明,數(shù)據(jù)類型可以分為LibHeaderRecord,CellNameRecord, LibCatalogRecord, ChangeNameRecord, CelIHeaderRecord, PropertySetRecord, DisplayPropRecord, PropertyRecord, RectangleRecord, GdsRectRecord, ValueRectangleRecord, ViaRecord, ViaArrayRecord, OffsetViaArrayRecord, PolyRecord, PathRecord, WireRecord等,但不僅限于這些,根據(jù)實(shí)際應(yīng)用可以進(jìn)一步增加。 下面是對Poly、Path、Wire類型數(shù)據(jù)的定義struct PolyRecord{ObjectId m_propertyListId ;ObjectId m_netld ;BBoxm_bBox ;LayerNumber m_layerNumber ;DataType m_dataType ;UCharm_flags ;ObjectId m_pointId ;} PolyRecord;struct PathRecord{ObjectId m_propertyListId ;ObjectId m_netld ;BBoxm_bBox ;LayerNumber m_layerNumber ;
DataType m_dataType ;UCharm_flags ;intm pathffidth ;ObjectId pointld ;};struct WireRecord{ObjectId m_propertyListId ;ObjectId m_netld ;Pointm一point ;Coordinate m length ;Coordinate m_width ;LayerNumber m_layerNumber ;DataTypem_dataType ;UCharm_flags ;}。步驟102、為不同數(shù)據(jù)類型的物理版圖數(shù)據(jù)申請存儲頁面,該存儲頁面對應(yīng)計算機(jī)系統(tǒng)內(nèi)存中的存儲頁面。所有數(shù)據(jù)類型的物理版圖數(shù)據(jù)的存儲頁面大小相同,物理版圖數(shù)據(jù)存儲頁面如圖2。物理版圖數(shù)據(jù)存儲頁面分為頁頭和頁芯兩部分,頁頭存儲該頁面的序號、頁面的數(shù)據(jù)類型、該類型數(shù)據(jù)的長度、實(shí)際存儲類型數(shù)據(jù)的首地址等頁內(nèi)管理信息;頁芯存儲若干該類型的數(shù)據(jù)單位。所有數(shù)據(jù)類型的物理版圖數(shù)據(jù)存儲頁面的大小相同,該存儲頁面分為信息位置固定的頁頭和信息位置可變的頁芯頁頭部分存儲管理信息;頁芯部分連續(xù)存儲數(shù)據(jù)單位。一個存儲頁面在頁芯部分只存儲同一個類型的數(shù)據(jù),并記錄若干數(shù)據(jù)單位。在申請實(shí)際存儲空間之后,需要在頁頭內(nèi)的固定位置填寫本頁面的管理信息,其中包括在固定位置處標(biāo)定頁面屬性,并根據(jù)實(shí)際存儲類型數(shù)據(jù)的首地址和存儲一個該類型數(shù)據(jù)所需的字節(jié)數(shù)計算每一數(shù)據(jù)單位的存儲空間的地址,因此需要對存儲頁面內(nèi)部進(jìn)行二次劃分,如圖3。頁芯部分相鄰數(shù)據(jù)單位之間的地址偏移量為數(shù)據(jù)的字節(jié)數(shù),頁芯首字節(jié)相對頁面內(nèi)首字節(jié)其地址偏移量是固定的,即頁頭的大小固定。物理版圖數(shù)據(jù)存儲頁面的數(shù)據(jù)結(jié)構(gòu)如下struct Page{Bit32 m_pageID ;/* 頁頭開始 */UShort m_maxRec0nPage ;UShort m_flags ;/*存儲數(shù)據(jù)類型標(biāo)志*/CellId m_cellld ;/* 頁頭結(jié)束 */char m_pageData[PAGE_DATA_SIZE] ;/* 頁芯部分 */} ;I^age部分存儲與數(shù)據(jù)類型有關(guān)。在下述結(jié)構(gòu)中,從m_pageID到111_06111010個字節(jié)為頁頭,而m_pageData以后即從頁面內(nèi)的第11個字節(jié)開始的后續(xù)8192-10 = 8182個字節(jié)為頁芯,頁芯首字節(jié)相對頁面內(nèi)首字節(jié)其地址偏移量是從m_pageID到m_cellID所占存儲空間決定,此例中頁芯首字節(jié)
5相對頁面內(nèi)首字節(jié)其地址偏移量是10,m_flags的位值標(biāo)定頁面屬性,存儲指定的類型的物理版圖數(shù)據(jù)。需要說明的是這里舉例的頁頭僅僅是用于說明,實(shí)際應(yīng)用和實(shí)現(xiàn)時頁頭的內(nèi)容根據(jù)需要會有所改變。所有物理版圖存儲頁面的大小是相同的,以簡化和加速存儲頁面的創(chuàng)建、導(dǎo)入和導(dǎo)出。存儲頁面的大小與操作系統(tǒng)指定的頁面大小一致,如在LINUX上頁面的大小為8192字節(jié)。步驟103、將相同類型的數(shù)據(jù)存儲到內(nèi)存中的同一存儲頁面。在計算機(jī)內(nèi)部,需要通過申請來構(gòu)造頁面,因為所有存儲頁面的大小相同,則其在通過操作系統(tǒng)申請存儲空間時,申請到的存儲空間大小也相同,其值為計算機(jī)內(nèi)存頁面大小,這樣能夠減小內(nèi)存碎片, 提高內(nèi)存使用效率。在得到相應(yīng)的內(nèi)存存儲空間之后,針對物理版圖數(shù)據(jù)存儲頁面,需要將該頁面的序號、頁面的數(shù)據(jù)類型、該類型數(shù)據(jù)的長度、實(shí)際存儲類型數(shù)據(jù)的首地址等信息寫入頁頭, 并在位置固定的頁芯起始位置,根據(jù)該頁面所存數(shù)據(jù)的具體類型及其所占空間的大小,將頁芯細(xì)分成存儲若干同類型數(shù)據(jù)的存儲單位,計算出存儲數(shù)據(jù)單位的地址。在前述的物理版圖數(shù)據(jù)存儲頁面的數(shù)據(jù)結(jié)構(gòu)中,從111_ 叫610到111_(^111010個字節(jié)為頁頭,而nupageData 以后即從頁面內(nèi)的第11個字節(jié)開始的后續(xù)8192-10 = 8182個字節(jié)為頁芯,頁芯首字節(jié)相對頁面內(nèi)首字節(jié)其地址偏移量是從111_ 恥610到111_(^1110所占存儲空間決定,此例中頁芯首字節(jié)相對頁面內(nèi)首字節(jié)其地址偏移量是10,存儲指定的類型的物理版圖數(shù)據(jù)。存儲頁面內(nèi)第一個物理數(shù)據(jù)單元地址為頁面首字節(jié)地址+10,第二個物理數(shù)據(jù)單元地址為頁面首字節(jié)地址+10+SUE0F(該類型的物理數(shù)據(jù)單元的大小),第N個物理數(shù)據(jù)單元地址為頁面首字節(jié)地址+10+SUE0F(該類型的物理數(shù)據(jù)單元的大小)X (N-I)。步驟104、利用存儲頁面到硬盤的快速寫入,將存儲頁面內(nèi)的全部物理版圖數(shù)據(jù)一次性地寫入硬盤。在將存儲頁面的內(nèi)容寫到硬盤時,忽略內(nèi)存中具體存儲位置上的數(shù)據(jù)屬于哪一個具體的數(shù)據(jù)類型和占據(jù)多少數(shù)據(jù)單位,而是將該存儲頁面的鏡像數(shù)據(jù)寫入硬盤的相應(yīng)文件。圖4是將物理版圖數(shù)據(jù)存儲頁面寫入硬盤的示意圖。以C/C++程序為例,以 fwrite (buffer, size, count, fp)函數(shù)將整個存儲頁面上的全部數(shù)據(jù)一次性的寫入硬盤。 buffer為頁面的首地址;size為1,表示要寫入的基本單位為1個字節(jié);count為要寫的基本單位數(shù),在本實(shí)施例中為存儲頁面所包含的字節(jié)數(shù);fp為輸出的物理版圖數(shù)據(jù)文件的指針,是在寫文件之前通過fopen函數(shù)根據(jù)指定文件名打開或創(chuàng)建數(shù)據(jù)文件時所得到的文件指針,該指針用于向指定文件寫數(shù)據(jù))。步驟105、將一定長度的硬盤數(shù)據(jù)一次性地讀入到內(nèi)存的存儲頁面,從而實(shí)現(xiàn)原來存儲頁面內(nèi)的若干物理版圖數(shù)據(jù)一次性的讀入。在將物理版圖數(shù)據(jù)從硬盤讀入到內(nèi)存時, 在每一個讀入操作之前申請固定大小的內(nèi)存存儲頁面,將硬盤中的物理版圖數(shù)據(jù)文件內(nèi)的存儲頁面鏡像讀入該內(nèi)存存儲頁面。以C/C++程序為例,以fread(buffer,size, count, fp)函數(shù)將存儲在若干扇區(qū)上固定長度的信息讀入到該存儲頁面,buffer為頁面的首地址,size為1個字節(jié),count為頁面的字節(jié)數(shù),fp為輸出的物理版圖數(shù)據(jù)文件的指針。然后,根據(jù)存儲頁面固定位置的數(shù)據(jù)值(標(biāo)志字節(jié),由前述頁面結(jié)構(gòu)I^age中的m_flags的位值決定,具體如何標(biāo)識所存數(shù)據(jù)類型取決于實(shí)際實(shí)現(xiàn)時的定義)自動區(qū)分物理版圖數(shù)據(jù)存儲頁面。因為內(nèi)存存儲頁面的數(shù)據(jù)鏡像在硬盤數(shù)據(jù)文件中得到了保留,重新讀回到內(nèi)存存儲頁面的數(shù)據(jù)保留了各自原先在存儲頁面內(nèi)的位置,避免了全部數(shù)據(jù)的逐一重構(gòu)。最后,根據(jù)頁頭中存儲的頁面的序號、頁面的數(shù)據(jù)類型、該類型數(shù)據(jù)的長度、實(shí)際存儲類型數(shù)據(jù)的首地址計算每一數(shù)據(jù)單位的存儲空間的地址,以便后續(xù)程序?qū)@些數(shù)據(jù)的訪問。圖5為從硬盤數(shù)據(jù)文件向內(nèi)存存儲頁面讀入存儲頁面鏡像,自動構(gòu)造物理版圖數(shù)據(jù)存儲頁面。特別說明的是,本實(shí)施例列出的數(shù)據(jù)類型、頁頭的內(nèi)容等僅是用于說明發(fā)明所及方法,根據(jù)實(shí)際的實(shí)現(xiàn)和應(yīng)用,數(shù)據(jù)類型、頁頭等可根據(jù)需要進(jìn)行增加或裁減??傊陨纤鰞H為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種快速讀寫海量數(shù)據(jù)文件的方法,其特征在于,包括對海量數(shù)據(jù)文件的數(shù)據(jù)類型進(jìn)行分類,為不同數(shù)據(jù)類型的數(shù)據(jù)申請存儲頁面,將相同類型的數(shù)據(jù)存儲到內(nèi)存中的同一存儲頁面,利用存儲頁面到硬盤的快速寫入,將存儲頁面內(nèi)的全部數(shù)據(jù)一次性地寫入硬盤。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述海量數(shù)據(jù)文件為物理版圖數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法進(jìn)一步包括將一定長度的硬盤中的物理版圖數(shù)據(jù)一次性地讀入到內(nèi)存的存儲頁面。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述數(shù)據(jù)分類的依據(jù)是物理版圖數(shù)據(jù)的內(nèi)容,同一類型的物理版圖數(shù)據(jù)其占用存儲空間的字節(jié)數(shù)相同,從而將不同存儲長度的物理版圖數(shù)據(jù)分開存儲。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述申請的存儲頁面為計算機(jī)系統(tǒng)內(nèi)存中的存儲頁面,所有數(shù)據(jù)類型的物理版圖數(shù)據(jù)的存儲頁面大小相同。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述物理版圖數(shù)據(jù)的存儲頁面包括頁頭和頁芯,所述頁頭存儲該頁面的頁內(nèi)管理信息,所述頁芯連續(xù)存儲至少一個該類型的數(shù)據(jù)單位,并且一個存儲頁面在頁芯部分只存儲同一個類型的數(shù)據(jù);當(dāng)申請到實(shí)際存儲空間之后,在所述頁頭內(nèi)的固定位置填寫本頁面的頁內(nèi)管理信息, 并根據(jù)實(shí)際存儲類型數(shù)據(jù)的首地址和存儲一個該類型數(shù)據(jù)所需的字節(jié)數(shù)劃分每一數(shù)據(jù)單位的存儲空間的地址,在頁芯的相應(yīng)位置寫入該類型物理版圖數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述頁內(nèi)管理信息具體包括頁面的序號、頁面的數(shù)據(jù)類型、該類型數(shù)據(jù)的長度、實(shí)際存儲類型數(shù)據(jù)的首地址。
8.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將硬盤中的物理版圖數(shù)據(jù)讀入到內(nèi)存的存儲頁面具體包括在將物理版圖數(shù)據(jù)從硬盤讀入到內(nèi)存時,在每一個讀入操作之前申請固定大小的內(nèi)存存儲頁面,將硬盤中的物理版圖數(shù)據(jù)文件內(nèi)的存儲頁面鏡像讀入該內(nèi)存存儲頁面。
全文摘要
本發(fā)明公開了一種快速讀寫海量數(shù)據(jù)文件的方法,包括對海量數(shù)據(jù)文件的數(shù)據(jù)類型進(jìn)行分類,為不同數(shù)據(jù)類型的數(shù)據(jù)申請存儲頁面,將相同類型的數(shù)據(jù)存儲到內(nèi)存中的同一存儲頁面,利用存儲頁面到硬盤的快速寫入,將存儲頁面內(nèi)的全部數(shù)據(jù)一次性地寫入硬盤。本發(fā)明無需關(guān)注具體的數(shù)據(jù)類型和具體的數(shù)據(jù)單位以及具體數(shù)據(jù)單位的重構(gòu),避免了全部數(shù)據(jù)的逐一重構(gòu),提高了讀寫速度,實(shí)現(xiàn)了計算機(jī)存儲器和硬盤之間快速讀寫海量集成電路物理版圖數(shù)據(jù)。
文檔編號G06F12/08GK102193873SQ201010118129
公開日2011年9月21日 申請日期2010年3月4日 優(yōu)先權(quán)日2010年3月4日
發(fā)明者葉甜春, 吳玉平, 陳嵐 申請人:中國科學(xué)院微電子研究所