LUT為應該以第一間 隔布線圖案連線有間隔布線的MLUT,但是,卻以第四間隔布線圖案進行連線。
[0255] 這樣的第四隔離布線圖案具有與第一?第三隔離布線圖案類似的布線圖案,因 此,能夠將對向MLUT區域8上的各MLUT30進行邏輯電路信息的布局/布線時所使用的布 局/布線算法的影響抑制到較低。
[0256] 〔3. 3. 7〕第五間隔布線圖案的配置構造
[0257] 圖40為表示具有15行X30列的MLUT的MLUT區域的第五間隔布線圖案的配置 的圖。通過第五間隔布線圖案連接的MLUT為不能以第一?第四間隔布線圖案進行連線,且 也不能以第四間隔布線圖案進行連線的MLUT30。在本例的MLUT區域中,這些MLUT30也能 夠借助于D觸發器進行連線。
[0258] 〔4〕搭載了 1個MPLD的半導體裝置
[0259] 在此,對搭載了1個MPLD的半導體裝置的例子加以說明。
[0260] 〔4. 1〕搭載了 1個MPLD的半導體裝置的配置構造
[0261] 圖41為表示搭載了 MPLD的半導體裝置的配置塊的一例的圖。半導體裝置100具 有MPLD20和輸入輸出電路部15。輸入輸出電路部15具有用于從半導體裝置100的外部裝 置輸入信號的輸入電路、用于從半導體裝置100的外部裝置輸出信號的輸出電路、電源用 單元以及I/O端口。
[0262] 輸入電路能夠分別與對配置于MPLD20內的各MLUT30進行選擇的地址線、對構成 各MLUT30的存儲元件40進行選擇的地址線和用于向構成各MLUT30的存儲元件40寫入存 儲動作信息等的存儲動作用數據線連接。而且,輸入電路能夠與配置于MPLD20的端部且未 與其他MLUT30連線的AD對的至少1個邏輯動作用地址線以及控制信號等連接。輸出電路 能夠分別與存儲動作用數據線以及配置在MPLD20的端部且未與其他MLUT30連線的AD對 的至少1個邏輯動作用數據線等連接。輸入電路以及輸出電路和MPLD20的各AD對能夠直 接連接。此外,輸入電路以及輸出電路和MPLD20的AD對也能夠經由緩沖電路進行連接。通 過插入緩沖電路能夠使信號傳遞速度提高。
[0263] MPLD能夠構成多輸入多輸出的邏輯電路。例如參照圖33,具有30行X 15列的 MLUT區域8的MPLD20具有118個未連線的AD對。這些AD對可全部作為輸入輸出信號線 使用。這就意味著,具有該MLUT區域8的MPLD20具有118根輸入信號線以及118根輸出 信號線,并能夠平行地對64位等多位信號進行邏輯運算。因此,MPLD能夠實現高速且多輸 入多輸出的邏輯電路。此外,如上所述,MPLD具有規則配置的MLUT,因此,也能夠用于具有 規則性的電路或真值表。
[0264] 〔4. 2〕針對MPLD的布局/布線流程
[0265] 在此,說明對搭載于半導體裝置的MPLD進行布局/布線的流程的一例。
[0266] 圖42為表示執行MPLD的布局/布線的信息處理裝置的一例的圖。信息處理裝置 210具有運算處理部211、輸入部212、輸出部213和存儲部214。運算處理部211將已輸入 到輸入部212的布局/布線用軟件、RTL(Register Transfer Level,寄存器傳輸級)描述 等的電路描述(以下,也稱為網絡表)等的真值表數據存儲于存儲部214。此外,運算處理 部211使用存儲于存儲部214的布局/布線用軟件,對存儲于存儲部214的電路描述執行 以下所示的布局/布線流程,并向輸出部213輸出。能夠將半導體裝置100 (未圖示)連接 至輸出部213,并能夠經由輸出部213將包含運算處理部211所執行的布局/布線信息的位 流數據寫入半導體裝置100。
[0267] 圖43為表示信息處理裝置生成用于向MPLD布局/布線的位流數據的流程的一例 的圖。首先,具有對網絡表進行與工藝無關的邏輯最優化(S201)、工藝映射(S202)、布局 (S203)、布線(S204)的步驟。已被布局/布線的位流數據相當于分別寫入MLUT30的邏輯 電路信息,并通過MPLD20的存儲動作被寫入到各MLUT30所具備的存儲元件。以下,依次對 各步驟加以說明。
[0268] 〔4. 2. 1〕與工藝無關的的邏輯最優化
[0269] 首先,說明對網絡表進行與工藝無關的邏輯最優化的步驟(S201)。在該步驟中,可 以分離成加法器、減法器、乘法器以及除法器等運算器部分和其他邏輯電路部分來進行最 優化。
[0270] 在從RTL描述分離成運算器部分和其他邏輯電路部分時,通過提取RTL描述中所 記載的運算記號,能夠分離出運算器部分。例如,在利用Verilog HDL記載了RLT描述的情 況下,通過提取表示加法的" + "、表示減法的"一"、表示乘法的"*"、表示除法的"/"以及表 示余數運算" % "等的運算符,能夠從RTL描述中分離出運算器部分。在使用與C語言類似 的其他語言的情況下,也能夠通過相同的方法分離出運算器部分。
[0271] 可以以全加法器或半加法器作為基本單位來對運算器部分進行最優化。當將運算 器部分與其他邏輯電路部分一同進行最優化時,通過對NAND電路、X0R電路等基本門電路 進行組合,構成運算器。但是,在該情況下,當進行邏輯合成時,為了邏輯合成為各種門電 路,構成各種運算器的電路可能會變得冗長。因此,通過將運算器部分與其他邏輯電路部分 分離、并將全加法器或半加法器等作為基本單位來進行模塊合成,能夠高效地對運算器部 分進行最優化。
[0272] 這里的所謂模塊合成是指:將具有規則構造的存儲器、運算邏輯裝置(ALU)、乘法 器以及加法器等數據總線系模塊等作為對象,并作為參數賦予模塊的功能和位寬等必要信 息,來生成模塊模式。
[0273] 例如,在通過具有5個以上的AD對的MLUT來構成MPLD的情況下,可以將2位加 法器作為基本單位,對運算器部分進行模塊合成。4位加法器可以由2個位加法器構成。8 位加法器可以由4個位加法器構成。
[0274] 對于8位加法器等基本的運算電路,能夠將基于2位加法器的布線信息存儲于存 儲部214。由此,關于所存儲的運算電路,則不需要后述的布線處理,能夠實現處理的高速 化。但是,運算電路具有各種位數。此外,在加法器當中,除了全加法器、半加法器,還存在 被稱為"超前進位(Carry look ahead)"的加法器。因此,使所有模式的運算電路存儲于存 儲部是不現實的。因此,可以將用于通過2位加法器構成運算電路的規定的布線規則存儲 于存儲部214,并基于此布線規則構成運算電路。
[0275] 對于其他的邏輯電路部分,使用用于通常的LSI設計或FPGA設計的一般方法。例 如,執行狀態機的狀態數的最小化、二級邏輯最優化以及多級邏輯最優化等處理。
[0276] 〔4. 2. 2〕工藝映射
[0277] 接下來,對信息處理裝置210進行工藝映射以使進行了與工藝無關的邏輯最優化 之后的網絡表成為適合于構成MPLD的MLUT的網絡表的步驟(S202)加以說明。在一個例 子中,工藝映射具有對進行了與工藝無關的邏輯最優化之后的網絡表進行分解的第一步驟 和對已通過第一步驟分解后的網絡表進行覆蓋的第二步驟。
[0278] 第一步驟是使邏輯電路的輸入以及輸出數量在K以下,以使構成于MLUT的真值表 中能夠包含1個邏輯電路的步驟。在MLUT的AD對的數量為N的情況下,輸入以及輸出數 K必須在AD對的數量N以下。在第一步驟中,可以使用內核(Kernel)提取以及Roth, karp 分角軍(Roth - Karp decomposition)等。
[0279] 第二步驟是為了對構成于MLUT的真值表的數量進行最優化,而對通過第一步驟 獲得的網絡表的若干個節點進行覆蓋的步驟。該步驟中,在通過第一步驟而被分解的真值 表中,將2個以上的真值表結合起來并將能夠包含在1個MLUT的真值表匯總成1個真值表。 由此,能夠對構成于MLUT30的真值表的數量進行最優化。
[0280] 優選的是,在對組合電路進行最優化時,可以使最優化后的組合電路所具有的輸 入數以及輸出數小于MLUT所具有的AD對的數量。由此,能夠將配置有組合電路的MLUT同 時作為連接部件使用。另外,在構成MPLD的MLUT具有6個以上的AD對的情況下,可以將 輸入線以及輸出線的數量最優至5個以下。這是為了通過具有5個輸入線以及輸出線而在 1個MLUT構成2位加法器的真值表。
[0281] 〔4. 2. 3〕布局
[0282] 接下來,對信息處理裝置210將執行了工藝映射后的網絡表配置于MPLD內的各 MLUT的步驟(S203)加以說明。在執行了工藝映射后的網絡表中記載根據MLUT具有的AD 對的數量所構成的邏輯電路部的真值表與各MLUT所具有的AD對之間的連接關系。在本步 驟中,將邏輯電路部的真值表分別配置于適當位置的MLUT。作為具體的布局手法,與通常 的LSI設計同樣包括用于初始布局的構成布局法(隨機法、對聯結法、成群展開法、以及最 小割(min-cut)法等),以及用于布局改善的重復改善法(斯坦伯格法、對交換法、廣義力向 量松弛法(force directed relaxation)、以及模擬退火法等)等。
[0283] 〔4. 2. 4〕布線
[0284] 對最后基于執行了工藝映射之后的網絡表,在已布局的MLUT之間進行布線的步 驟(S204)加以說明。根據執行了工藝映射之后的網絡表,使用作為連接部件發揮作用的 MLUT在作為邏輯電路工作的MLUT所具有的AD對之間進行布線。作為具體的布局手法,與 通常的LSI設計同樣包括Lee算法以及線檢索算法等。結果,生成構成真值表數據的位流 數據,該真值表數據將實現所希望的邏輯電路的網絡表布局/布線于MPLD上。
[0285] 〔4. 3〕搭載了 1個MPLD的半導體裝置中的重構
[0286] 如到目前為止所說明的,MPLD具有能夠構成可重構邏輯電路的多個存儲元件。利 用MPLD的該特性,在搭載了MPLD的半導體裝置中,能夠對寫入MPLD的邏輯電路信息進行 重構。
[0287] 例如,圖41中記載的搭載了 MPLD20的半導體裝置100中的重構能夠使用圖42中 記載的信息處理裝置210來實現。將構成能夠寫入MPLD20的邏輯電路信息的多個位流數 據存儲于信息處理裝置210的存儲部214。而且,通過信息處理裝置210向與信息處理裝置 210的輸出部213連接的半導體裝置100寫入位流數據,能夠實現MPLD20的重構。
[0288] 此外,圖41中記載的搭載了 MPLD20的半導體裝置100中的重構也能夠通過使用 與半導體裝置100搭載于同一基板的微處理器(未作圖示)和存儲裝置(未作圖示)來實 現。
[0289] 〔4. 4〕搭載了 1個MPLD的半導體裝置中的部分重構
[0290] 〔4. 4. 1〕MPLD的部分重構流程
[0291] 說明對搭載于半導體裝置的MPLD進行部分重構的流程的一例。
[0292] 圖44為表示對搭載于圖41所示的半導體裝置的MPLD進行部分重構的流程的一 例的圖。首先,在步驟S211中,信息處理裝置210對已寫入MPLD的第一位流數據和執行了 部分重構后的第二位流數據進行比較。該比較是通過比較記載于各位流數據中的具有相 同地址的MLUT之間的內部所記載的真值表來進行的;并且,通過比較與MLUT的各AD對連 接的AD對符號等來進行。能夠將第一位流數據和執行了部分重構后的第二位流數據存儲 于存儲裝置。優選的是,在生成第二位流數據時,能夠對第一位流數據與第二位流數據之間 具有相同功能的MLUT賦予與第一位流數據相同的符號。接下來,在步驟S212中,確定第一 位流數據與第二位流數據之間所記載的真值表數據不同的MLUT的地址,并將其存儲于存 儲裝置。對于MLUT的地址,能夠在第一位流數據與第二位流數據之間將MPLD中位于相同 位置的MLUT設為相同的地址。例如,在具有30行X 15列的MLUT區域的MPLD中,可以將 位于左上頂點的MLUT的地址設為0號,將位于此MLUT右側的MLUT的地址設為1號,以下 同樣地進行重復,將位于右下頂點的MLUT的地址設為449號。另外,可以具有在第一位流 數據與第二位流數據的各MLUT地址和物理位置不對應的情況下使兩者的相關性明確的裝 置。例如,可以將表示相關關系的數據存儲于存儲裝置。接下來,在步驟S213中,信息處理 裝置210向MPLD輸出在步驟S212所確定的MLUT的1個地址。具體地講,向MPLD20的行 譯碼器12a和列譯碼器12b輸入地址。然后,在步驟S214,信息處理裝置210將地址被指定 了的MLUT的第二位流數據所記載的真值表數據向MLUT寫入。因為已經對向MLUT寫入數 據的方法進行了記述,所以在此省略其詳細內容。
[0293] 當在第一位流數據與第二位流數據之間所記載的真值表數據不同的MLUT的地址 還在存儲裝置中存儲有的情況下,返回步驟S213。當沒有存儲其他的在第一位流數據與第 二位流數據之間所記載的邏輯電路信息不同的MLUT30的地址的情況下,結束部分重構。
[0294] 〔4. 4. 2〕部分重構的實施例
[0295] 在此,基于具體的實施例說明部分重構的優點。實施例基于高速傅立葉變換中一 般所使用的蝶形運算。
[0296] 圖45中示出通過蝶形運算進行8點離散傅立葉變換時的算法的一例。在此, f(〇)?f⑵為時間上的8個點。F(0)?F(7)為離散傅立葉變換后的8個點。W0?W3為 旋轉因子。在圖45中,箭頭線的交點表示進行加法的點。此外,在箭頭線的交點處還附有 "一1"的記載的情況下,表示進行減法的點。并且,在箭頭線上附有旋轉因子W0?W3的情 況下,表示乘以旋轉因子W0?W3。因此,例如在階段S1,對f(0)進行加上將f(4)乘以W0 后的值的加法運算,并對f(〇)進行減去將f (4)乘以W0后的值的減法運算。這樣,蝶形運 算中,在各階段進行常數乘法運算。
[0297] 一般來講,在通過邏輯電路實現常數乘法運算的情況下,與構成乘法電路相比,多 通過移位電路和加法運算來構成常數乘法專用電路。這是因為:與單純構成乘法電路的情 況相比,通過由移位電路和加法運算來構成常數乘法專用電路,能夠實現運算速度的高速 化。此外,通過使用移位電路和加法運算,能夠減少電路元件的數量,因此具有減少芯片面 積的效果。例如,常數"3"乘以變量"a"的電路能夠如下式所示地通過移位電路和加法運 算來構成。
[0298] 3*a = a*2+a = (a < < 1)+a
[0299] 在此,表示乘法," + "表示加法,"<"表示移位電路。因此,算式"(a << l)+a" 意味著將變量a移位至上2位的位,并對其結果加上變量a。
[0300] 另一方面,離散傅立葉變換的旋轉因子W0?W3根據使用電路的用途不同,可取各 種值。因此,即使在構成通過蝶形運算來實現同樣的8點離散傅立葉變換的電路的情況下, 根據用途不同,需要構成各種電路。例如,在旋轉因子W3為3的電路中,乘以旋轉因子W3 的電路如以下所示的算式那樣構成。
[0301] 3*a = a*2+a = (a < < 1)+a
[0302] 對此,在旋轉因子W3為4的電路中,乘以旋轉因子W3的電路如以下所示的算式那 樣構成。
[0303] 4*a = a*2+a*2 = (a < < 1) + (a < < 1)
[0304] 在FPGA等以往的可重構邏輯電路中,即使在像這樣僅一部分電路變更的情況下, 也需要再進行布局/布線或需要改寫所有邏輯電路信息。但是,MPLD能夠確定邏輯電路信 息已被變更的MLUT的地址,因此,能夠僅改寫邏輯電路信息已被變更的MLUT來進行部分重 構。在該實施例中,能夠通過將構成"+a"的邏輯電路的MLUT改寫為構成" + (a<< 1)"的 邏輯電路的MLUT來進行部分重構。
[0305] 〔5〕搭載了 1個MPLD和運算處理部的半導體裝置
[0306] 在此,對搭載了1個MPLD和運算處理部的半導體裝置的例子加以說明。
[0307] 〔5. 1〕搭載了 MPLD和運算處理部的半導體裝置
[0308] 圖46為表示搭載了 MPLD的半導體裝置的一例的圖。半導體裝置100具有MPLD20 和運算處理部220。
[0309] 運算處理部220具有存儲部110、指令讀出部120、寄存器部130以及指令執行部 140。運算處理部220為通過執行存儲于MPLD20的程序來進行與MPLD20之間的數據的輸 入輸出,并對從MPLD20接收到的數據進行運算的裝置。運算處理部220例如為作為運算處 理裝置的MPU (Micro Processing Unit,微處理單元KMPLD20能夠高速處理多輸入多輸出 的邏輯運算。因此,將運算處理部220的功能限定為作為邏輯電路的部分控制的分支指令 等的例外處理、作為MPLD20的狀態控制的MPLD20的重構、或將MPLD20內的SRAM作為存儲 區域而進行數據訪問等,由此,能夠形成8位、16位等位寬較窄的運算處理裝置。
[0310] 存儲部110為存儲指令或數據的存儲裝置。存儲部110存儲MPLD20要存儲的數 據的一部分。存儲部110例如為1次高速緩沖存儲器。存儲部110例如為SRAM(Static Random Access Memory,靜態隨機訪問存儲器)。另外,在以下的說明中,將存儲部110作為 MPLD20的高位高速緩沖存儲器來加以說明,而如使用圖52在后面所述的那樣,在一實施方 式中,運算處理部220與存儲部26數據連接。此情況下,對于與利用下述MPLD20的存儲器 功能的運算處理部220之間的數據輸入輸出,在主存儲裝置中也相同。
[0311] 存儲部110設于運算處理部220的內部,并位于比MPLD20更接近指令讀出部120 的位置。在指令讀出部120訪問存儲于存儲部110的數據的情況下(以下,稱為"高速緩存 命中"),指令讀出部120能夠短時間訪問對象數據。另一方面,在指令讀出部120訪問未存 儲于高速緩沖存儲器的數據的情況下(以下,稱為"高速緩存缺失"),因為要從位于存儲部 110的下層的MPLD20讀出數據,所以對對象數據的訪問時間變長。因此,為了不產生高速緩 存缺失,將來自運算讀出部120的訪問頻度高的數據保存于存儲部110。
[0312] 指令讀出部120從存儲部110讀出指令,并將所讀出的指令輸出至指令執行部 140〇
[0313]當指令執行部140從指令讀出部120接收到從存儲部110讀出的指令時,對存儲 于寄存器130的數據執行通過指令確定的處理。所謂與指令相應的規定的指令處理例如為 浮動小數點運算、整數運算、生成地址、執行分支指令、將存儲于寄存器130的數據向存儲 部110存儲的存儲動作、將存儲于存儲部110的數據加載至寄存器130的加載動作。指令 執行部140具有進行浮動小數點運算、整數運算、地址生成、分支指令的執行以及存儲或加 載動作的執行器,使用這些執行器來執行上述指令處理。指令執行部140借助于輸入輸出 部150,對MPLD20執行數據的存儲或加載動作。
[0314] 寄存器130例如存儲操作數、或對MPLD20進行存儲或讀出動作時的地址、保存有 作為指令執行部140的執行對象的指令的MPLD20的地址。
[0315] 輸入輸出部150進行與MPLD20之間的數據的輸入輸出。MPLD20與使用圖1?圖 3加以說明過的例子相同。輸入輸出部150中,MLUT30的邏輯動作用地址LA的地址線與 自運算處理部220的輸出端子D0而來的1個輸出信號線連接,并且MLUT30的邏輯動作用 數據LD的數據線與向運算處理部220的輸入端子10進行輸入的輸入信號線連接。這樣, 配置于MPLD20的外延的MLUT的至少一部分接收與運算處理部220之間的邏輯動作用地址 LA,或輸出邏輯動作用數據LD。
[0316] 如圖46所示,輸入輸出部150還與MPLD地址、存儲動作用地址MA、寫入數據WD、 讀出數據RD的信號線連接,通過這些數據的輸入輸出,對MPLD20進行存儲動作。
[0317] 如通過上述構成所明確的那樣,運算處理部220借助于輸入輸出部150將存儲動 作用地址MA、MPLD地址、寫入數據WD輸出至MPLD20,由此,執行使MPLD存儲動作產生的存 儲動作,并借助于輸入輸出部150,將存儲動作用地址MA、MPLD地址輸出至MPLD20,由此來 接收讀出數據RD。這樣,輸入輸出部150中進行存儲動作用地址MA、MPLD地址、寫入數據 WD、讀出數據RD的輸入輸出的部分作為存儲動作用的輸入輸出部工作。
[0318] 此外,如通過上述構成所明確的那樣,運算處理部220借助于輸入輸出部150輸出 邏輯動作用地址LA,并接收邏輯動作用數據LD,由此,接收MPLD的邏輯動作的結果。這樣, 輸入輸出部150中進行邏輯動作用地址LA、邏輯動作用數據LD的輸入輸出的部分作為邏輯 動作用的輸入輸出部工作。
[0319] 圖47為概略地表示進行運算處理部與MPLD之間的數據的輸入輸出的輸入輸出部 的一例的圖。包含于MPLD20的輸入輸出部21中,MLUT30的地址線與自運算處理部220的 輸出端子D0而來的1個輸出信號線連接,并且MLUT30的數據線與向運算處理部220的輸 入端子10進行輸入的輸入信號線連接。
[0320] 按照運算處理部220的輸入輸出位數的數量準備運算處理部220的邏輯動作用的 輸入輸出信號線與MLUT30的地址或數據線的連接。例如,在運算處理部220具有16位的 輸出位寬的情況下,輸出信號線以及輸入信號線分別為16根,與這些信號線連接的MLUT的 地址線