Fpga rom存儲數(shù)據(jù)的工藝映射方法
【專利摘要】本發(fā)明是關(guān)于一種FPGA?ROM存儲數(shù)據(jù)的工藝映射方法,包括:解析電路行為級描述,提取ROM模型及ROM的分散存儲數(shù)據(jù);將所述ROM的分散存儲數(shù)據(jù)添加到所述ROM模型中,添加所述ROM的分散存儲數(shù)據(jù)后的ROM模型作為源ROM;將所述源ROM轉(zhuǎn)化成結(jié)構(gòu)化的ROM單元,以及將源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合,得到整合后的源ROM;對所述整合后的源ROM執(zhí)行工藝映射,完成源ROM內(nèi)部存儲數(shù)據(jù)到目標(biāo)ROM內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)的映射。本發(fā)明實(shí)現(xiàn)了將源ROM中存儲的數(shù)據(jù)正確映射到FPGA?ROM結(jié)構(gòu)中,解決了綜合工具中ROM存儲數(shù)據(jù)映射的難題。
【專利說明】FPGA ROM存儲數(shù)據(jù)的工藝映射方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及集成電路設(shè)計(jì)及電子設(shè)計(jì)自動化【技術(shù)領(lǐng)域】,特別是涉及FPGA ROM存儲數(shù)據(jù)的工藝映射方法。
【背景技術(shù)】
[0002]FPGA(Field Programmable Gate Arrays,現(xiàn)成可編程門列陣)是 IC 中的一類芯片,與 ASIC (Application Specific Integrated Circuit)芯片不同,在 FPGA 開發(fā)應(yīng)用中,必須有配套的EDA (Electronic Design Automation,電子設(shè)計(jì)自動化)的開發(fā)工具,其中包括綜合工具,在綜合工具的開發(fā)中,可以分為分布式單元的綜合和宏單元的綜合。其中,宏單元主要處理FPGA芯片內(nèi)部特有的單元,包括RAM(Random-Access-Memroy,隨機(jī)存取存儲器)、ROM (Read-On Iy-Memory,只讀存儲器)、Mult (Multiplier乘法器)、DSP (Digital-Signal-Processor 數(shù)字信號處理器)等。
[0003]ROM在FPGA中的實(shí)現(xiàn)方式包括分布式結(jié)構(gòu)和塊結(jié)構(gòu)兩種,不同的結(jié)構(gòu)對應(yīng)不同的數(shù)據(jù)存儲方式。在ROM的宏單元的綜合開發(fā)中,需要將用戶定義的源R0M,根據(jù)映射庫中ROM結(jié)構(gòu)實(shí)現(xiàn)宏單元映射,同時(shí)需要把用戶定義的源ROM中存儲的數(shù)據(jù)正確映射到FPGA ROM結(jié)構(gòu)中。
[0004]本領(lǐng)域技術(shù)人員了解,對于上述技術(shù)目前尚存在空缺,因此需要發(fā)明一種技術(shù)可以將源ROM中存儲的數(shù)據(jù)正確映射到FPGA ROM結(jié)構(gòu)中。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于,提供FPGA ROM存儲數(shù)據(jù)的工藝映射方法,所要解決的技術(shù)問題包括:可以將源ROM中存儲的數(shù)據(jù)正確映射到FPGA ROM結(jié)構(gòu)中。
[0006]本發(fā)明的目的及解決其技術(shù)問題可采用以下的技術(shù)方案來實(shí)現(xiàn)。
[0007]依據(jù)本發(fā)明提出的一種FPGA ROM存儲數(shù)據(jù)的工藝映射方法,包括:
[0008]解析電路行為級描述,提取ROM模型及ROM的分散存儲數(shù)據(jù);
[0009]將所述ROM的分散存儲數(shù)據(jù)添加到所述ROM模型中,添加所述ROM的分散存儲數(shù)據(jù)后的ROM模型作為源ROM;
[0010]將所述源ROM轉(zhuǎn)化成結(jié)構(gòu)化的ROM單元,以及將源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合,得到整合后的源ROM ;
[0011 ] 對所述整合后的源ROM執(zhí)行工藝映射,完成源ROM內(nèi)部存儲數(shù)據(jù)到目標(biāo)ROM內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)的映射。
[0012]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,將所述ROM的分散存儲數(shù)據(jù)添加到所述ROM模型中的步驟進(jìn)一步包括:
[0013]將所述ROM的分散存儲數(shù)據(jù)以哈希結(jié)構(gòu)添加到所述ROM模型中。
[0014]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,將所述源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合進(jìn)一步包括:[0015]將所述源ROM中的分散存儲數(shù)據(jù)以字符串的形式存儲。
[0016]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,將所述源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合進(jìn)一步包括:
[0017]數(shù)據(jù)的格式規(guī)格化,包括:如果是二進(jìn)制,則數(shù)據(jù)字符串前面需要添加前綴“B “ ;如果是十六進(jìn)制,則數(shù)據(jù)字符串前面需要添加前綴“H”;和
[0018]數(shù)據(jù)和地址的對應(yīng)關(guān)系規(guī)格化,包括:將地址和數(shù)據(jù)進(jìn)行一對一的拼接。
[0019]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,對所述整合后的源ROM執(zhí)行工藝映射進(jìn)一步包括:
[0020]對所述整合后的源ROM執(zhí)行全局映射,得到新的R0M,即R0M_N。
[0021]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,對所述整合后的源ROM執(zhí)行全局映射進(jìn)一步包括:
[0022]遍歷映射庫內(nèi)的ROM單元,查找到第一目標(biāo)ROM單元,所述第一目標(biāo)ROM單元與整合后的源ROM匹配;
[0023]若整合后的源ROM的面積大于第一目標(biāo)ROM單元的面積,則按照第一目標(biāo)ROM單元的結(jié)構(gòu)對所述整合后的源ROM進(jìn)行分裂,得到新的R0M,即R0M_N ;
[0024]若整合后的源ROM的面積小于等于第一目標(biāo)ROM單元的面積,則按照整合后的源ROM復(fù)制,產(chǎn)生一個(gè)新的R0M,即R0M_N。
[0025]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,對所述整合后的源ROM做全局映射后進(jìn)一步包括:
[0026]對全局映射后得到的R0M_N做局部映射。
[0027]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,對全局映射后得到的R0M_N做局部映射進(jìn)一步包括:
[0028]遍歷映射庫內(nèi)的ROM單元,查找到第二目標(biāo)ROM單元,所述第二目標(biāo)ROM單元與所述R0M_N匹配;
[0029]將R0M_N映射到第二目標(biāo)ROM單元,完成源ROM內(nèi)部存儲數(shù)據(jù)到目標(biāo)ROM內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)的映射。
[0030]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,若FPGAR0M為塊結(jié)構(gòu),則將R0M_N映射到第二目標(biāo)ROM單元前,還包括:
[0031 ] 將R0M_N中的存儲數(shù)據(jù)去掉地址位,保留數(shù)據(jù)位;
[0032]對R0M_N中去掉地址位后的每個(gè)數(shù)據(jù)的數(shù)據(jù)位前面補(bǔ)零;
[0033]將補(bǔ)零后每個(gè)數(shù)據(jù)拼接,直到拼接后的數(shù)據(jù)位寬大于等于第二目標(biāo)ROM單元一個(gè)地址訪問空間的數(shù)據(jù)位寬。
[0034]較佳的,前述的FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其中,所述對R0M_N中去掉地址位后的每個(gè)數(shù)據(jù)的數(shù)據(jù)位前面補(bǔ)零進(jìn)一步包括:
[0035]補(bǔ)零的位數(shù)等于第二目標(biāo)ROM單元的輸入輸出數(shù)據(jù)位寬與R0M_N輸入輸出數(shù)據(jù)位寬的差值。
[0036]借由上述技術(shù)方案,本發(fā)明的FPGA ROM存儲數(shù)據(jù)的工藝映射方法至少具有下列優(yōu)點(diǎn)以及有益效果:
[0037]本發(fā)明實(shí)現(xiàn)了將源ROM中存儲的數(shù)據(jù)正確映射到FPGA ROM結(jié)構(gòu)中,解決了綜合工具中ROM存儲數(shù)據(jù)映射的難題。該工藝映射方法適用于不同綜合工具對ROM的綜合以及適用于綜合工具基于不同F(xiàn)PGA芯片中ROM結(jié)構(gòu)的工藝映射。
[0038]綜上所述,本發(fā)明在技術(shù)上有顯著的進(jìn)步,并具有明顯的積極技術(shù)效果,誠為一新穎、進(jìn)步、實(shí)用的新設(shè)計(jì)。
[0039]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉較佳實(shí)施例,并配合說明書附圖,詳細(xì)說明如下。
【專利附圖】
【附圖說明】
[0040]圖1為本發(fā)明的FPGA ROM存儲數(shù)據(jù)的工藝映射方法流程圖;
[0041]圖2為本發(fā)明的第一目標(biāo)ROM單元內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)圖;
[0042]圖3為本發(fā)明的全局映射后一個(gè)ROM結(jié)構(gòu)示意圖;
[0043]圖4為本發(fā)明的第二目標(biāo)ROM單元內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)示意圖;
[0044]圖5為本發(fā)明的局部映射后ROM數(shù)據(jù)存儲結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0045]為更進(jìn)一步闡述本發(fā)明,為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖以及較佳實(shí)施例,對依據(jù)本發(fā)明提出的FPGA ROM存儲數(shù)據(jù)的工藝映射方法其【具體實(shí)施方式】、結(jié)構(gòu)及特征,詳細(xì)說明如后。
[0046]本發(fā)明實(shí)施例提供一種FPGA ROM存儲數(shù)據(jù)的工藝映射方法,參見圖1為本實(shí)施例所述FPGA ROM存儲數(shù)據(jù)的工藝映射方法的流程圖,具體包括如下操作:
[0047]S100、解析電路行為級描述,提取ROM模型及ROM的分散存儲數(shù)據(jù);
[0048]本實(shí)施例所述電路行為級描述是指用描述電路的語言描述電路的功能及結(jié)構(gòu),例如VHDUVerilog Hdl等,也就是本實(shí)施例解析對象為用戶自定義的整個(gè)電路的電路行為級描述。
[0049]其中,所提取的ROM模型包含的信息包括但不限于:R0M的外部接口信息、連接信息等。
[0050]本實(shí)施例在提取ROM模型后,繼續(xù)解析電路行為級描述,從而提取出ROM的分散存儲數(shù)據(jù)。
[0051]S110、將所述ROM的分散存儲數(shù)據(jù)添加到所述ROM模型中,添加所述ROM的分散存儲數(shù)據(jù)后的ROM模型作為源ROM ;
[0052]本發(fā)明一種實(shí)施例將所述ROM的分散存儲數(shù)據(jù)以哈希結(jié)構(gòu)添加到所述ROM模型中存儲,以建立數(shù)據(jù)地址哈希存儲的對應(yīng)關(guān)系,便于后續(xù)執(zhí)行工藝映射時(shí)數(shù)據(jù)和地址的正確對應(yīng),以及保證信息傳遞的完整性。
[0053]S120、將所述源ROM轉(zhuǎn)化成結(jié)構(gòu)化的ROM單元,以及將源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合,得到整合后的源ROM ;
[0054]本實(shí)施例所述將源ROM轉(zhuǎn)化成結(jié)構(gòu)化的ROM單元,即,將存放源ROM信息的數(shù)據(jù)結(jié)構(gòu)從節(jié)點(diǎn)、連線的類型,轉(zhuǎn)化成電路描述的類型,即電路單元、引腳、連線,具體包括如下操作:[0055]I)將原來的節(jié)點(diǎn)轉(zhuǎn)化成電路單元;
[0056]2)將原來的連線轉(zhuǎn)化成電路中的連線;
[0057]3)在電路單元和連線之間增加引腳。
[0058]其中,本實(shí)施例所述將源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合,即對源ROM中的分散存儲數(shù)據(jù)進(jìn)行整合,以字符串的形式存儲。具體為,將源ROM中的分散存儲數(shù)據(jù)按照ROM單元中的存儲方式規(guī)格化,主要包括:
[0059]a、數(shù)據(jù)的格式規(guī)格化,包括:如果是二進(jìn)制,則數(shù)據(jù)字符串前面需要添加前綴“B“;如果是十六進(jìn)制,則數(shù)據(jù)字符串前面需要添加前綴“H”;
[0060]b、數(shù)據(jù)和地址的對應(yīng)關(guān)系規(guī)格化,包括:按照前面建立的數(shù)據(jù)地址哈希存儲的對應(yīng)關(guān)系,把地址和數(shù)據(jù)進(jìn)行一對一的拼接。
[0061]S130、對所述整合后的源ROM執(zhí)行工藝映射,完成源ROM內(nèi)部存儲數(shù)據(jù)到目標(biāo)ROM內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)的映射。
[0062]本實(shí)施例對目標(biāo)ROM和源ROM的定義如下:
[0063]目標(biāo)ROM是指FPGA芯片中ROM的硬件電路結(jié)構(gòu),其包含兩組數(shù)據(jù)信息,一組是內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)的描述數(shù)據(jù)m X η:即有m個(gè)地址訪問空間,每個(gè)地址訪問空間的數(shù)據(jù)位寬為η位,一個(gè)FPGA的ROM硬件電路結(jié)構(gòu)中的數(shù)據(jù)存儲結(jié)構(gòu)在芯片產(chǎn)生后是固定的;另一組是ROM的外部訪問方式的描述數(shù)據(jù)w X d:即外部地址訪問空間數(shù)為w (ROM的地址位寬= 1gW),輸入輸出數(shù)據(jù)位寬為d位,決定ROM內(nèi)部存儲數(shù)據(jù)以什么方式訪問,這種訪問方式具有可配置性,即w X d是可以配置的。m X η和w X d可以相同,也可以不同,但是必須滿足w X d的乘積等于m X η的乘積。比如R0M256X10,地址位寬是8 (log 256)位,輸入輸出數(shù)據(jù)位寬為10位,內(nèi)部數(shù)據(jù)存儲的結(jié)構(gòu)為128個(gè)地址訪問空間,每一個(gè)訪問空間的數(shù)據(jù)位寬為20位。
[0064]源ROM是指用戶自定義的ROM電路描述,在工藝映射中,源ROM的內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)和外部訪問數(shù)據(jù)的方式是相同的,即R0M16X2,表示該ROM的內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)是16個(gè)地址訪問的存儲空間,每一個(gè)空間內(nèi)的數(shù)據(jù)位寬是2位,而且外部訪問的存儲空間也是16個(gè),每一個(gè)空間內(nèi)數(shù)據(jù)位寬是2位。
[0065]本發(fā)明一種實(shí)施例所述對整合后的源ROM執(zhí)行工藝映射的方法包括:對整合后的源ROM執(zhí)行全局映射,本實(shí)施例所述全局映射的方法包括如下操作:
[0066]a)遍歷映射庫內(nèi)的ROM單元,按照源ROM和目標(biāo)ROM的工作模式相符的原則,查找至IJ第一目標(biāo)ROM單元,以保證所述第一目標(biāo)ROM單元與整合后的源ROM匹配;如圖2中所示為第一目標(biāo)ROM單元內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)圖。
[0067]b)若整合后的源ROM的面積大于第一目標(biāo)ROM單元的面積,則按照第一目標(biāo)ROM單元的結(jié)構(gòu)對所述整合后的源ROM進(jìn)行分裂(包括結(jié)構(gòu)分裂和數(shù)據(jù)分裂),得到新的ROM結(jié)構(gòu) R0M_N ;
[0068]具體而言,若整合后的源ROM的數(shù)據(jù)規(guī)模大于第一目標(biāo)ROM單元的數(shù)據(jù)規(guī)模,則按照所述第一目標(biāo)ROM單元數(shù)據(jù)的輸入輸出位寬和地址訪問深度對所述整合后的源ROM進(jìn)行分裂,先依據(jù)地址訪問深度,將整合后的源ROM的數(shù)據(jù)分裂成小塊,再依據(jù)數(shù)據(jù)位寬分裂,得到新的ROM結(jié)構(gòu)R0M_N,如圖3所示為全局映射后得到的小ROM塊示意圖。
[0069]c)若整合后的源ROM的數(shù)據(jù)規(guī)模小于等于第一目標(biāo)ROM單元的數(shù)據(jù)規(guī)模,則按照整合后的源ROM復(fù)制,產(chǎn)生一個(gè)新的R0M,即R0M_N,所述整合后的源ROM刪除。[0070]本發(fā)明一種實(shí)施例可以進(jìn)一步對全局映射后產(chǎn)生的新的R0M_N,執(zhí)行局部映射,本實(shí)施例所述局部映射的方法包括如下操作:
[0071 ] I)遍歷映射庫內(nèi)的ROM單元,按照源ROM和目標(biāo)ROM的工作模式相符的原則,查找到第二目標(biāo)ROM單元,保證所述第二目標(biāo)ROM單元與所述R0M_N匹配;
[0072]2)將R0M_N映射到第二目標(biāo)ROM單元,完成源ROM內(nèi)部存儲數(shù)據(jù)到目標(biāo)ROM內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)的映射。
[0073]其中,對于FPGA ROM為分布式結(jié)構(gòu)時(shí),由于分布式FPGA ROM的數(shù)據(jù)存儲是一維的,因此當(dāng)R0M_N映射到的第二目標(biāo)ROM單元是分布式ROM時(shí),直接將每一位數(shù)據(jù)對應(yīng)映射即可。
[0074]對于FPGA ROM為塊結(jié)構(gòu)時(shí),由于塊結(jié)構(gòu)ROM的數(shù)據(jù)存儲是二維的,需要對待映射數(shù)據(jù)重構(gòu),具體重構(gòu)方法如下:
[0075]首先,將R0M_N中的存儲數(shù)據(jù)去掉地址位,保留數(shù)據(jù)位;
[0076]之后,對R0M_N中去掉地址位后的每個(gè)數(shù)據(jù)的數(shù)據(jù)位前面補(bǔ)零,將每個(gè)數(shù)據(jù)補(bǔ)零后的各個(gè)數(shù)據(jù)位以十六進(jìn)制的形式拼接(目標(biāo)ROM中的數(shù)據(jù)以十六進(jìn)制格式存儲),直到拼接后的數(shù)據(jù)位寬等于第二目標(biāo)ROM單元一個(gè)地址訪問空間的數(shù)據(jù)位寬。
[0077]本實(shí)施例中width_s表示R0M_N的輸入輸出數(shù)據(jù)位寬;
[0078]width_t表示第二目標(biāo)ROM單元的輸入輸出數(shù)據(jù)位寬;
[0079]init_width_t:第二目標(biāo)ROM單元的每個(gè)地址訪問空間的數(shù)據(jù)位寬;
[0080]本實(shí)施例每個(gè)數(shù)據(jù)補(bǔ)零的位數(shù)等于第二目標(biāo)ROM單元的輸入輸出數(shù)據(jù)位寬與R0M_N輸入輸出數(shù)據(jù)位寬的差值,S卩(width_t-width_s)的值。
[0081]如果補(bǔ)零后的長度小于第二目標(biāo)ROM單元的一個(gè)地址訪問空間的數(shù)據(jù)位寬,則重復(fù)上面的補(bǔ)零操作,并將每次補(bǔ)零后產(chǎn)生的補(bǔ)零新數(shù)據(jù)拼接,,直到拼接后的數(shù)據(jù)位寬等于第二目標(biāo)ROM單元一個(gè)地址訪問空間的數(shù)據(jù)位寬。
[0082]本實(shí)施例具體補(bǔ)零及拼接方法如下:
[0083]1、R0M_N的第一個(gè)width_s長存儲數(shù)據(jù),數(shù)據(jù)前補(bǔ)零(width_t
[0084]- width_s)個(gè),產(chǎn)生新的存儲數(shù)據(jù)M ;
[0085]2、R0M_N的下一個(gè)width_s長存儲數(shù)據(jù),數(shù)據(jù)前補(bǔ)零(width_t
[0086]- width_s)個(gè),在M數(shù)據(jù)基礎(chǔ)上拼接成新的存儲數(shù)據(jù)M2 ;
[0087]依次將R0M_N的存儲數(shù)據(jù)補(bǔ)零拼接,當(dāng)Mx的位寬大于等于init_width_t時(shí),完成一個(gè)單位數(shù)據(jù)合并;而后開始下一個(gè)單位數(shù)據(jù)合并,重復(fù)上面的合并算法,最終把R0M_N的所有數(shù)據(jù)位合并,完成數(shù)據(jù)工藝映射的處理。
[0088]下面參照圖4及圖5對局部映射方法進(jìn)行舉例說明,圖4所示為第二目標(biāo)ROM單元內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)示意圖,該第二目標(biāo)ROM單元名稱為BR0M256X10,其輸入輸出數(shù)據(jù)位寬為10位,地址訪問空間為256個(gè),內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)為128個(gè)地址訪問空間,每個(gè)訪問空間可以訪問20位數(shù)據(jù)。如圖5所示為局部映射后ROM數(shù)據(jù)存儲結(jié)構(gòu)示意圖,即R0M256X8映射到BR0M256X10示意圖。在R0M256X8映射到BR0M256X10過程中,R0M256X8原始的地址訪問空間數(shù)據(jù)位是8位,而目標(biāo)ROM單元BR0M256X10的輸入輸出數(shù)據(jù)位寬為10,地址訪問空間數(shù)據(jù)位是20位,則先將R0M256X8的所有存儲數(shù)據(jù)整合,并在每個(gè)存儲數(shù)據(jù)首位添兩(10與8的差)位零,一個(gè)存儲數(shù)據(jù)添兩個(gè)零就達(dá)到了 10位;判斷BR0M256X10的一個(gè)訪問空間內(nèi)還可以存放源R0M256X8的一個(gè)單位數(shù)據(jù);源R0M256X8的下一個(gè)單位數(shù)據(jù)前面補(bǔ)兩位零,而后與上一個(gè)補(bǔ)零的數(shù)據(jù)拼接,達(dá)到長度20位寬;判斷目標(biāo)BR0M256X10的一個(gè)地址訪問空間數(shù)據(jù)已經(jīng)添滿,即完成目標(biāo)ROM的第一個(gè)訪問空間的數(shù)據(jù)映射。剩余的127個(gè)訪問空間數(shù)據(jù)映射按照第一個(gè)的映射方式即可,最終完成R0M256X8所有數(shù)據(jù)的映射處理,映射后的結(jié)構(gòu)如圖5所示。
[0089]綜上所述,本發(fā)明實(shí)現(xiàn)了將源ROM中存儲的數(shù)據(jù)正確映射到FPGAR0M結(jié)構(gòu)中,解決了綜合工具中ROM存儲數(shù)據(jù)映射的難題。該工藝映射方法具有普適性,適用于不同綜合工具對ROM的綜合以及適用于綜合工具基于不同F(xiàn)PGA芯片中ROM結(jié)構(gòu)的工藝映射。
[0090]以上所述僅是本發(fā)明的較佳實(shí)施例而已,并非對本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭示如上,然而并非用以限定本發(fā)明的技術(shù),任何熟悉本專業(yè)的技術(shù)人員在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容作出些許更動或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施例所作的任何簡單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。
【權(quán)利要求】
1.一種FPGA ROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,包括: 解析電路行為級描述,提取ROM模型及ROM的分散存儲數(shù)據(jù); 將所述ROM的分散存儲數(shù)據(jù)添加到所述ROM模型中,添加所述ROM的分散存儲數(shù)據(jù)后的ROM模型作為源ROM ; 將所述源ROM轉(zhuǎn)化成結(jié)構(gòu)化的ROM單元,以及將源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合,得到整合后的源ROM ; 對所述整合后的源ROM執(zhí)行工藝映射,完成源ROM內(nèi)部存儲數(shù)據(jù)到目標(biāo)ROM內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)的映射。
2.根據(jù)權(quán)利要求1所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,將所述ROM的分散存儲數(shù)據(jù)添加到所述ROM模型中的步驟進(jìn)一步包括: 將所述ROM的分散存儲數(shù)據(jù)以哈希結(jié)構(gòu)添加到所述ROM模型中。
3.根據(jù)權(quán)利要求1所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,將所述源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合進(jìn)一步包括: 將所述源ROM中 的分散存儲數(shù)據(jù)以字符串的形式存儲。
4.根據(jù)權(quán)利要求1或3所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,將所述源ROM中的分散存儲數(shù)據(jù)按照ROM單元的數(shù)據(jù)存儲形式進(jìn)行整合進(jìn)一步包括: 數(shù)據(jù)的格式規(guī)格化,包括:如果是二進(jìn)制,則數(shù)據(jù)字符串前面需要添加前綴“B “ ;如果是十六進(jìn)制,則數(shù)據(jù)字符串前面需要添加前綴“H”;和 數(shù)據(jù)和地址的對應(yīng)關(guān)系規(guī)格化,包括:將地址和數(shù)據(jù)進(jìn)行一對一的拼接。
5.根據(jù)權(quán)利要求1所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,對所述整合后的源ROM執(zhí)行工藝映射進(jìn)一步包括: 對所述整合后的源ROM執(zhí)行全局映射,得到新的R0M,即R0M_N。
6.根據(jù)權(quán)利要求5所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,對所述整合后的源ROM執(zhí)行全局映射進(jìn)一步包括: 遍歷映射庫內(nèi)的ROM單元,查找到第一目標(biāo)ROM單元,所述第一目標(biāo)ROM單元與整合后的源ROM匹配; 若整合后的源ROM的面積大于第一目標(biāo)ROM單元的面積,則按照第一目標(biāo)ROM單元的結(jié)構(gòu)對所述整合后的源ROM進(jìn)行分裂,得到新的R0M,即R0M_N ; 若整合后的源ROM的面積小于等于第一目標(biāo)ROM單元的面積,則按照整合后的源ROM復(fù)制,產(chǎn)生一個(gè)新的R0M,即R0M_N。
7.根據(jù)權(quán)利要求5或6所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,對所述整合后的源ROM做全局映射后進(jìn)一步包括: 對全局映射后得到的R0M_N做局部映射。
8.根據(jù)權(quán)利要求7所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,對全局映射后得到的R0M_N做局部映射進(jìn)一步包括: 遍歷映射庫內(nèi)的ROM單元,查找到第二目標(biāo)ROM單元,所述第二目標(biāo)ROM單元與所述R0M_N匹配; 將R0M_N映射到第二目標(biāo)ROM單元,完成源ROM內(nèi)部存儲數(shù)據(jù)到目標(biāo)ROM內(nèi)部數(shù)據(jù)存儲結(jié)構(gòu)的映射。
9.根據(jù)權(quán)利要求8所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,若FPGA ROM為塊結(jié)構(gòu),則將R0M_N映射到第二目標(biāo)ROM單元前,還包括: 將R0M_N中的存儲數(shù)據(jù)去掉地址位,保留數(shù)據(jù)位; 對R0M_N中去掉地址位后的每個(gè)數(shù)據(jù)的數(shù)據(jù)位前面補(bǔ)零; 將補(bǔ)零后每個(gè)數(shù)據(jù)拼接,直到拼接后的數(shù)據(jù)位寬大于等于第二目標(biāo)ROM單元一個(gè)地址訪問空間的數(shù)據(jù)位寬。
10.根據(jù)權(quán)利要求9所述的FPGAROM存儲數(shù)據(jù)的工藝映射方法,其特征在于,所述對R0M_N中去掉地址位后的每個(gè)數(shù)據(jù)的數(shù)據(jù)位前面補(bǔ)零進(jìn)一步包括: 補(bǔ)零的位數(shù)等于第二目標(biāo)ROM單元的輸入輸出數(shù)據(jù)位寬與R0M_N輸入輸出數(shù)據(jù)位寬的差 值。
【文檔編號】G06F17/50GK104021250SQ201410253354
【公開日】2014年9月3日 申請日期:2014年6月9日 優(yōu)先權(quán)日:2014年6月9日
【發(fā)明者】李滟, 張東曉, 于芳 申請人:中國科學(xué)院微電子研究所