亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

算術程序轉換裝置、算術程序轉換方法及程序的制作方法

文檔序號:6597004閱讀:292來源:國知局
專利名稱:算術程序轉換裝置、算術程序轉換方法及程序的制作方法
技術領域
本發(fā)明涉及一種能夠通過轉換算術程序(諸如,算法模型(model)程序等)來獲 得硬件模型程序的算術程序轉換裝置、算術程序轉換方法以及程序。
背景技術
日本未審專利申請公開第2001-43067號已經(jīng)公開了一種算術裝置,其能夠?qū)?shù) 值從浮點記數(shù)法轉換為定點記數(shù)法,同時保持有效數(shù)字的數(shù)目的損失最小。
該算術裝置包括最大指數(shù)部分值(maximum-exponent-part-value)檢測部分,其 將存儲部分中存儲的k比特數(shù)據(jù)譯解為具有m比特尾數(shù)部分和n比特指數(shù)部分的浮點數(shù) 據(jù),并且檢測一塊中的數(shù)據(jù)的指數(shù)部分的最大值r。 而且,該算術裝置將該塊中的每個數(shù)據(jù)轉換為浮點數(shù)據(jù),其由指數(shù)部分的最大值r 和尾數(shù)部分這一對值來表示,并且該算術裝置通過算術處理部分對轉換后數(shù)據(jù)的尾數(shù)部分 執(zhí)行算術處理。 而且,該算術裝置在將該塊中的數(shù)據(jù)輸出到外部之前,對該數(shù)據(jù)完成預定算術處 理,并且基于該最大值r將每個數(shù)據(jù)轉換成浮點數(shù)據(jù)。 日本未審專利申請公開第2002-149397號已經(jīng)公開了一種生成定點數(shù)據(jù)的方法, 其允許提高比特解碼速率,同時減小電路的尺寸。 在該方法中,在浮點數(shù)據(jù)之中檢測最大的浮點數(shù)據(jù),并且獲得浮點數(shù)據(jù)的指數(shù)部 分值和最大浮點數(shù)據(jù)的指數(shù)部分值之間的差量。 接下來,在該方法中,將該浮點數(shù)據(jù)的尾數(shù)部分移位該差量,并且提取移位后的尾 數(shù)部分的預定數(shù)目的比特作為定點數(shù)據(jù)。 以此方式,在硬件電路系統(tǒng)中,將要被算術處理的各種變量作為定點變量(具有 固定的比特寬度的變量)而受到算術處理,即使所述變量采用浮點記數(shù)法也是如此。

發(fā)明內(nèi)容
附帶地,在設計硬件電路時使用各種EDA(電子設計自動化)工具。 在使用EDA工具的電路設計中,電路設計者將要設計的電路的硬件模型輸入到
EDA工具中。這樣的硬件模型包括例如RTL(寄存器傳送語言)模型。 當輸入硬件模型時,EDA工具從該硬件模型生成網(wǎng)表數(shù)據(jù)等。 而且,例如可以自動地從網(wǎng)表數(shù)據(jù)生成集成電路中的布線圖案數(shù)據(jù)(wiring pattern data)。此外,可以形成曝光掩模(e鄧osure mask),其用于形成布線圖案數(shù)據(jù)。通 過使用曝光掩模制造電路可以獲得電路設計者已經(jīng)設計的電路系統(tǒng)。 然而,在硬件模型(諸如RTL模型)中,需要設計者使用寄存器和晶體管來描述要 設計的電路。替代地,需要設計者使用具有兩個輸入和一個輸出的二項式表達式來描述電 路,所述二項式表達式容易被轉換為晶體管。 在這點上,例如,可以使用用于GUI(圖形用戶界面)的、具有兩個輸入和一個輸出的電路元件模塊來描述二項式表達式。 相應地,當將硬件模型輸入到EDA工具中時,需要電路設計者具體描述寄存器的 比特(bit)數(shù)目等。 結果,在將硬件模型輸入到EDA工具中之前,需要電路設計者確定在寄存器中存 儲的每個變量的比特數(shù)目(number ofbits)(比特寬度(bit width))。
而且,變量的比特寬度的確定意味著固定變量的比特精度(bit precision),并且 確定該變量采用定點記數(shù)法。 而且,電路設計者基于過去經(jīng)驗等在實際制造場所來手動地確定變量的比特精 度。 相應地,不必為要設計的每個電路優(yōu)化變量的比特精度。認為有經(jīng)驗的電路設計 者可以優(yōu)化變量的比特精度。然而,例如,對于沒有經(jīng)驗的電路設計者而言,優(yōu)化電路的比 特精度是困難的。 結果,如果變量的比特精度比必要精度高,則實現(xiàn)支持(hand)具有該過度比特精 度的變量的二項式表達式的電路的尺寸變大。 而且,實現(xiàn)該二項式表達式的后級中的二項式表達式的電路接收具有該過度比特 精度的輸入變量,因此要設計的電路的尺寸與被優(yōu)化為必要精度的電路的情況相比變得相 當大。 而且,如果變量的比特精度比必要精度低,則在支持具有不足比特精度的變量的 二項式表達式中出現(xiàn)舍入誤差(rounding error)。 而且,實現(xiàn)該二項式表達式的后級中的二項式表達式的電路接收具有舍入誤差的 輸入變量,因此即使后級中的電路本身被優(yōu)化,該誤差也變大。結果,在輸出變量中出現(xiàn)比 可容許誤差大的誤差。 以此方式,如果在每個二項式表達式中都沒有優(yōu)化變量的比特精度,會出現(xiàn)各種 問題。 另外,在已經(jīng)在EDA工具中輸入的硬件模型中,按照由電路設計者確定并輸入的 順序布置多個二項式表達式。 而且,如果電路設計者沒有充分研究二項式表達式的運算的順序,即使優(yōu)化了每 個二項式表達式中的變量的比特精度,一部分二項式表達式有時也會以過度比特精度運算。 以此方式,即使在對輸出變量的可容許誤差沒有影響的情況下,也存在部分地以 過度比特精度運算的二項式表達式。由此,要設計的電路的尺寸變得比優(yōu)化運算順序的情 況下的電路尺寸大。 考慮到這些情況,本發(fā)明人已經(jīng)迫不及待地獨立開展了研究。 結果,本發(fā)明人已經(jīng)領會到電路設計者使用通過進一步抽象硬件模型程序產(chǎn)生 的高級(upper)算術程序來執(zhí)行電路的邏輯驗證。 以此方式,作為在設計硬件模型程序之前創(chuàng)建的高級算術程序,例如,存在包括要 設計的電路的輸入和輸出關系的描述的算法模型程序。 而且,本發(fā)明人已經(jīng)發(fā)現(xiàn)通過轉換算術程序(諸如算法模型程序),可以獲得包 括具有兩個輸入和一個輸出的二項式表達式且能夠被用作硬件模型的算術程序。
而且,本發(fā)明人已經(jīng)發(fā)現(xiàn)通過算術處理,可以獲得適合于要設計的電路的比特精 度,作為包括在包括二項式表達式的算術程序中的變量(輸入變量和輸出變量)的比特精 度。 期望提供一種能夠從算術程序(諸如算法模型程序等)獲得硬件模型程序的算術 程序轉換裝置、算術程序轉換方法以及程序。 根據(jù)本發(fā)明實施例,提供一種算術程序轉換裝置,其包括程序存儲部分,存儲通
過包括多個輸入變量、運算符和輸出變量的邏輯表達式來描述要設計的電路的算術程序;
中間變量生成部分,如果在該程序存儲部分中存儲了具有三個輸入變量或更多輸入變量的
邏輯表達式,則該中間變量生成部分生成要用于將該邏輯表達式轉換為包括兩個輸入變量
和一個輸出變量的多個二項式表達式的中間變量;表達式轉換部分,如果通過中間變量生
成部分生成了中間變量,則該表達式轉換部分將該邏輯表達式轉換為多個二項式表達式,
所述多個二項式表達式包括用于獲得中間變量的二項式表達式以及用于從中間變量獲得
輸出變量的二項式表達式;表達式更新部分,如果通過表達式轉換部分的轉換處理生成了
多個二項式表達式,則該表達式更新部分用所述多個二項式表達式更新在程序存儲部分中
存儲的原始邏輯表達式;比特寬度確定部分,確定在程序存儲部分中存儲的邏輯表達式的
輸出變量、輸入變量以及中間變量的比特寬度;以及比特寬度存儲部分,存儲輸出變量的比
特寬度、輸入變量的比特寬度以及中間變量的比特寬度。 根據(jù)本發(fā)明另一實施例,提供一種轉換算術程序的方法,該方法包括以下步驟生 成要用于將構成在程序存儲部分中存儲的算術程序并且包括三個輸入變量或更多輸入變 量、運算符以及輸出變量的邏輯表達式轉換為包括兩個輸入變量和一個輸出變量的多個二 項式表達式的中間變量;將該邏輯表達式轉換為多個二項式表達式,所述多個二項式表達 式包括用于獲得中間變量的二項式表達式以及用于從中間變量獲得輸出變量的二項式表 達式;用所述多個轉換后的二項式表達式更新在程序存儲部分中存儲的原始邏輯表達式; 確定在程序存儲部分中存儲的邏輯表達式中包括的輸出變量、輸入變量以及中間變量的比 特寬度;以及將輸出變量的比特寬度、輸入變量的比特寬度以及中間變量的比特寬度存儲 在比特寬度存儲部分中。 根據(jù)本發(fā)明另一實施例,提供一種用于使得計算機實現(xiàn)包括以下內(nèi)容的處理的程
序程序存儲部分,存儲通過包括多個輸入變量、運算符和輸出變量的邏輯表達式來描述要
設計的電路的算術程序;中間變量生成部分,如果在該程序存儲部分中存儲了具有三個輸
入變量或更多輸入變量的邏輯表達式,則該中間變量生成部分生成要用于將該邏輯表達式
轉換為包括兩個輸入變量和一個輸出變量的多個二項式表達式的中間變量;表達式轉換部
分,如果通過中間變量生成部分生成了中間變量,則該表達式轉換部分將該邏輯表達式轉
換為多個二項式表達式,所述多個二項式表達式包括用于獲得中間變量的二項式表達式以
及用于從中間變量獲得輸出變量的二項式表達式;表達式更新部分,如果通過表達式轉換
部分的轉換處理生成了多個二項式表達式,則該表達式更新部分用所述多個二項式表達式
更新在程序存儲部分中存儲的原始邏輯表達式;比特寬度確定部分,確定在程序存儲部分
中存儲的邏輯表達式的輸出變量、輸入變量以及中間變量的比特寬度;以及比特寬度存儲
部分,存儲輸出變量的比特寬度、輸入變量的比特寬度以及中間變量的比特寬度。 通過上述實施例,算術程序(諸如算法模型程序)的多個邏輯表達式被轉換為二項式表達式,并且被存儲在程序存儲部分中作為二項式算術程序。 而且,二項式算術程序的輸出變量的比特寬度、輸入變量的比特寬度以及中間變
量的比特寬度由比特寬度確定部分確定,并且被存儲在比特寬度存儲部分中。 相應地,在程序存儲部分中存儲的二項式算術程序包括這樣的變量,所述變量的
比特寬度全部都已經(jīng)被固定,因此該二項式算術程序可以被用作硬件模型程序。 通過本發(fā)明,可以從算術程序(諸如算法模型程序等)獲得可以被用作硬件模型
程序的二項式算術程序。


圖1是應用根據(jù)本發(fā)明實施例的算術程序轉換裝置的硬件模型生成裝置的配置 圖; 圖2是在圖1中的比特精度列表存儲部分中存儲的比特精度列表的示例;
圖3是要被用來實現(xiàn)圖1中的硬件模型生成裝置的計算機裝置的配置的示例;
圖4是圖示圖1中的硬件模型生成裝置中的硬件模型二項式模型生成處理的流程 的流程圖; 圖5是圖示圖1中的硬件模型生成裝置中的變量的固定(fix)處理的流程圖;
圖6是要在圖1中的程序存儲部分中存儲的算術模型程序的示例;
圖7是在轉換處理中要在圖1的程序存儲部分中存儲的中間模型程序的示例(在 固定乘法和除法輸出變量的狀態(tài)下); 圖8是在轉換處理中要在圖1的程序存儲部分中存儲的中間模型程序的示例(在 固定乘法和除法輸入變量的狀態(tài)下); 圖9是在轉換處理中要在圖1的程序存儲部分中存儲的中間模型程序的示例(在 二項式化乘法和除法運算的狀態(tài)下); 圖IO是在轉換處理中要在圖1的程序存儲部分中存儲的中間模型程序的示例 (在用于乘法和除法的固定的中間變量的狀態(tài)下); 圖11是在轉換處理中要在圖1的程序存儲部分中存儲的中間模型程序的示例 (在二項式化加法和減法運算的狀態(tài)下); 圖12是要在圖1的程序存儲部分中存儲的二項式模型程序(硬件模型程序)的 示例。
具體實施例方式
下面,將參考附圖給出本發(fā)明實施例的描述。在這點上,將按照以下順序給出描 述。 1.應用算術程序轉換裝置的硬件模型生成裝置的配置 2.從算法模型程序生成通過二項式表達式描述的硬件模型程序的生成操作
1.硬件模型生成裝置的配置 圖1是圖示應用根據(jù)本發(fā)明實施例的算術程序轉換裝置的硬件模型生成裝置的 配置圖。 硬件模型生成裝置1從算法模型程序生成通過多個二項式表達式描述并且可以被用作硬件模型程序的二項式模型程序,在所述算法模型程序中,要設計的電路的輸入和 輸出關系通過輸入和輸出描述表達式來描述。 而且,硬件模型生成裝置1生成在二項式模型程序的二項式表達式中包括的多個 變量的比特精度的信息。 以此方式,硬件模型生成裝置1將電路模型程序中的邏輯表達式二項式化,并且 將二項式表達式的變量固定。 而且,變得可以以與RTL模型程序相同的方式使用二項式模型程序作為用于生成 網(wǎng)表等的硬件模型。 下面,將算術模型程序簡稱為算術模型,將二項式表達式模型程序簡稱為二項式 表達式模型,并且將電路模型程序簡稱為電路模型。
在稍后描述的圖6中圖示了算術模型的示例。
圖6中的算術模型具有三個輸入和輸出描述表達式。 輸入和輸出描述表達式是要設計的電路的邏輯表達式,對于每個輸出數(shù)據(jù)或輸出 信號,所述邏輯表達式是獨立的。 而且,在輸入和輸出描述表達式中,作為變量來描述要用于獲得輸出數(shù)據(jù)或輸出 信號的輸入數(shù)據(jù)或輸入信號。 輸入和輸出描述表達式包括一個輸出變量、多個輸入變量以及多個運算符。
輸出變量對應于輸出數(shù)據(jù)或輸出信號。 輸入變量對應于用于獲得輸出數(shù)據(jù)或輸出信號的輸入數(shù)據(jù)或輸入信號。 運算符是諸如加法、減法、乘法和除法等的運算的符號,并且表示多個輸入數(shù)據(jù)或
多個輸入信號的算術處理。 而且,在輸入和輸出描述表達式的左側描述輸出變量。在輸入和輸出描述表達式 的右側描述輸入變量以及運算符。在一個輸入和輸出描述表達式中,可以描述三個輸入變 量或更多的輸入變量。 在這點上,在硬件模型生成裝置1中,將輸入和輸出描述表達式的變量作為浮點 變量對待。 圖12(稍后描述)圖示了二項式表達式模型的示例。
圖12中的二項式表達式模型具有9個二項式表達式。
二項式表達式包括輸入變量、運算符以及輸出變量。 當將二項式表達式看作具有兩個輸入和一個輸出的函數(shù)模塊時,輸入變量對應于 該函數(shù)模塊的輸入數(shù)據(jù)或輸入信號,輸出變量對應于該函數(shù)模塊的輸出數(shù)據(jù)或輸出信號, 并且運算符表示在該函數(shù)模塊中對兩個輸入變量彼此的算術處理。 在二項式表達式的左側描述輸出變量。在二項式表達式的右側描述輸入變量以及 運算符。 一個二項式表達式可以包括對兩個輸入變量的描述。 在這點上,在硬件模型生成裝置1中,二項式表達式模型的變量最終變?yōu)槎c變 在這點上,例如,二項式表達式模型應該是與RTL模型具有相同描述級別的模型。 也就是說,二項式表達式模型應該是通過多個二項式表達式描述并且具有二項式輸入變 量、運算符以及輸出變量的固定的比特寬度的模型。
而且,要用于獲得二項式表達式模型的算法模型可以是除了上述的輸入和輸出模 型之外的模型,在上述的輸入和輸出模型中,對于每個輸出通過邏輯表達式描述電路的輸 入和輸出。 例如,如果算法模型已經(jīng)獲得了每個邏輯表達式的輸出變量的可容許誤差以及輸 入變量的最大輸入值和最小輸入值,則該模型可以被用作算法模型。 圖1中的硬件模型生成裝置1具有輸入部分11、程序存儲部分12、比特精度列表 存儲部分13、表達式選擇部分14、變量固定部分15、中間變量生成部分16、運算順序確定部 分17、二項式表達式生成部分18以及表達式更新部分19。 輸入部分11具有例如鍵盤或指示設備。輸入部分11生成與鍵盤或指示設備的操 作相對應的輸入數(shù)據(jù)。用戶使用輸入部分11將算法模型等輸入到硬件模型生成裝置1中。
在這點上,輸入部分11可以具有用于讀取可移動記錄介質(zhì)(諸如CD-R0M(緊致盤 只讀存儲器)等)的設備,并且可以讀取預先記錄在記錄介質(zhì)上的算法模型等。
程序存儲部分12存儲通過模型描述表達式描述的電路模型。
程序存儲部分12最初存儲如圖6中所例示的算法模型。 而且,通過二項式表達式模型生成處理,程序存儲部分12最終存儲圖12中所例示 的二項式表達式模型。 而且,程序存儲部分12存儲從算法模型到二項式表達式模型的轉換處理中的中 間模型。該中間模型在圖7到圖11中例示。 而且,如果存儲了算法模型,程序存儲部分12存儲該算法模型的多個輸入和輸出 描述表達式(邏輯表達式)作為模型描述表達式。 如果存儲了二項式表達式模型,程序存儲部分12存儲該二項式表達式模型的多 個二項式表達式作為模型描述表達式。 比特精度列表存儲部分13存儲比特精度列表21。 圖2圖示了在比特精度列表存儲部分中存儲的比特精度列表21的列表結構的示 例。 圖2中的比特精度列表21包括在程序存儲部分12中存儲的每個變量(模型描述 表達式的輸入變量、輸出變量以及稍后描述的中間變量)的多項記錄。 而且,比特精度列表存儲部分13例如最初存儲在圖6中包括的所有變量,并且最 終存儲在圖12中包括的所有變量。 比特精度列表21的每項記錄(圖2中的每行)存儲變量名稱、變量值的范圍、變 量的可容許誤差、變量的整數(shù)部分的比特數(shù)目以及變量的小數(shù)部分的比特數(shù)目。
在這點上,變量值的范圍和變量的可容許誤差可以從例如輸入部分11輸入。
而且,整數(shù)部分的比特數(shù)目與小數(shù)部分的比特數(shù)目之和成為變量的比特寬度(比 特精度)。 在這點上,如果比特精度列表21存儲了整數(shù)部分的比特數(shù)目和小數(shù)部分的比特 數(shù)目,則該變量是定點變量。 相反,如果比特精度列表21沒有存儲整數(shù)部分的比特數(shù)目和小數(shù)部分的比特數(shù) 目中的至少一個,則該變量是浮點變量。 而且,在執(zhí)行二項式表達式模型生成處理之前,比特精度列表21存儲圖6中的所有變量。在執(zhí)行了二項式表達式模型生成處理之后,比特精度列表21存儲圖12中的所有 表達式選擇部分14確定二項式化模型描述表達式的順序、以及將變量改變?yōu)槎c記數(shù)法的順序。表達式選擇部分14最終基于四個基本算術運算的類型和每個變量的比特精度(比特寬度)作出確定,使得舍入誤差的影響變小。 在這點上,例如,當執(zhí)行乘法或除法運算時,或者當利用輸入變量的減少的比特數(shù)目執(zhí)行運算時,舍入誤差很有可能出現(xiàn)。 這是因為在作為硬件實現(xiàn)時電路的封裝面積有限,因此,總是在信號質(zhì)量(諸如圖像質(zhì)量等)和封裝面積之間出現(xiàn)折衷。 而且,這是因為對算術處理進行了大幅(significant)比特減少,通過這樣做,在運算之后比特寬度變大,使得可以有效地限制所述算術處理和隨后的算術處理所需的封裝面積。 而且,通過這樣的比特寬度減少處理出現(xiàn)了舍入誤差。 表達式選擇部分14使用該特點把注意力集中在與乘法和除法有關的變量或者具有大比特寬度的變量,并且從所述變量確定二項式化和向定點記數(shù)法的改變。表達式選擇部分14具體執(zhí)行稍后描述的圖4中的流程圖的處理。 在下面,通過表達式選擇部分14獲得的模型描述表達式被稱為所獲得的模型描述表達式(所獲得的邏輯表達式)。 在圖4的流程圖中,表達式選擇部分14從在程序存儲部分12中存儲的電路模型的開頭起依序獲得每一行的所獲得的模型描述表達式。 接下來,每當表達式選擇部分14獲得模型描述表達式時,表達式選擇部分14便基
于在程序存儲部分12中存儲的電路模型和在比特精度列表存儲部分13中存儲的比特精度
的信息確定感興趣的二項式運算(二項式運算符)以及感興趣的變量。 接下來,表達式選擇部分14執(zhí)行感興趣的二項式運算的二項式化以及感興趣的
變量向定點的改變(確定其比特寬度),并且將結果存儲到程序存儲部分12和比特精度列
表存儲部分13中。 而且,表達式選擇部分14重復該處理,直到在程序存儲部分12中存儲的電路模型
的所有模型描述表達式被二項式化并且所有變量被改變?yōu)槎c記數(shù)法為止。 由此,表達式選擇部分14概略地依序執(zhí)行以下處理。 1.將注意力集中在執(zhí)行乘法和除法的邏輯表達式的輸出變量組,并且對其進行固定。 2.將注意力集中在要進行乘法和除法的輸入變量組,并且對其進行固定。 3.將注意力集中在執(zhí)行乘法和除法的邏輯表達式的輸入變量組,并且確定運算順序。 4.將注意力集中在為存儲通過乘法和除法產(chǎn)生的值而生成的中間變量組,并且對其進行固定。 5.將注意力集中在執(zhí)行加法和減法的邏輯表達式的輸入變量組,并且確定運算順序。 6.將注意力集中在為存儲通過加法和減法產(chǎn)生的值而生成的中間變量組,并且對其進行固定。 變量固定部分15確定所獲得的模型描述表達式的感興趣的變量的比特寬度。具 體地,變量固定部分15重復執(zhí)行圖5中的處理。 在圖5的處理中,變量固定部分15首先在可容許誤差的范圍內(nèi)減少變量組的比特 寬度。如果超出了可容許誤差,則識別在最后級產(chǎn)生最大輸出誤差的變量,并且依據(jù)該變量 來固定比特寬度。除了可容許誤差的指定之外,所有這些都是自動處理的。
以此方式,通過產(chǎn)生最大輸出誤差的變量來確定比特寬度,從而變量固定部分15 可以將變量固定為最小所需比特寬度,同時保持舍入誤差的影響最小。 而且,識別前級處的感興趣的變量,并且僅將該變量轉換為定點變量,從而變量固 定部分15可以確定線性處理量(a linear amount of processing),而不受其它運算的影 響。 而且通過重復處理圖5中的處理,變量固定部分15最終確定所獲得的模型描述表 達式的輸出變量的比特寬度、輸入變量的比特寬度,并且還確定中間變量的比特寬度。
在下面,通過變量固定部分15處理的變量被稱為固定變量。 中間變量生成部分16從在所獲得的模型描述表達式中包括的運算生成要用于將 感興趣的二項式運算轉換為二項式表達式的中間變量。 例如,如果所獲得的模型描述表達式僅包括感興趣的二項式運算(二項式運算
符),則要生成的中間變量的數(shù)目應該是從感興趣的二項式運算符的數(shù)目減1 。 而且,例如,如果所獲得的模型描述表達式包括除了感興趣的二項式運算(二項
式運算符)外的運算符,則要生成的中間變量的數(shù)目應該是與感興趣的二項式運算符的數(shù)
目相同的數(shù)目。 在這點上,通過中間變量生成部分16生成的中間變量具有不固定的比特寬度,并 且因而是浮點變量。 運算順序確定部分17確定在將所獲得的模型描述表達式轉換為多個邏輯表達式 (諸如二項式表達式等)的情況下的運算的順序。運算順序確定部分17基于固定變量(變 量組)的比特寬度和所獲得的模型描述表達式確定運算的順序,使得舍入誤差變小。
在這點上,舍入誤差包括在乘法和除法中去除有效數(shù)字(significant digit)的
數(shù)目時出現(xiàn)的舍入誤差、以及在加法和減法中去除要運算的比特(bit)時出現(xiàn)的舍入誤差等。 例如,如果所獲得的模型描述表達式包括多個固定變量,則運算順序確定部分17 確定運算順序,使得首先運算具有較少的比特寬度數(shù)目的變量,然后運算具有較大的比特 寬度數(shù)目的變量。 另外,例如,如果所獲得的模型描述表達式包括已經(jīng)被固定的定點變量,則運算順 序確定部分17確定運算順序,以便首先運算尚未被固定的浮點變量,然后運算固定變量。
這是因為,在該實施例中稍后描述的處理中,一個所獲得的模型描述表達式可能 混合地包括定點變量和浮點變量。在此情況下,浮點變量是尚未經(jīng)過乘法和除法的變量,并 且因此僅稍微受到舍入誤差的影響。 而且,這是因為預先執(zhí)行具有舍入誤差的少許影響的運算,使得減少具有舍入誤 差的運算的數(shù)目,因此,限制了舍入誤差的增加。
而且,運算順序確定部分17基于這些確定結果確定在所獲得的模型描述表達式 中包括的多個輸入變量向多個二項式表達式(對所獲得的模型描述表達式的輸出變量進 行運算的表達式以及對中間變量進行運算的二項式表達式)的分配。 例如,如果所獲得的模型描述表達式包括三個輸入變量,則運算順序確定部分17
將被確定為在運算順序中預先運算的輸入變量的兩個輸入變量分配給中間變量的運算,并
且將被確定為稍后運算的輸入變量的剩下的變量和中間變量分配給輸出變量的運算。 二項式表達式生成部分18基于通過運算順序確定部分17進行的多個變量的分
配,從所獲得的模型描述表達式生成包括至少一個二項式表達式的多個邏輯表達式。 具體地,二項式表達式生成部分18 二項式化感興趣的二項式運算,并且獲得邏輯
表達式,其中通過其它運算從該邏輯表達式獲得所獲得的模型描述表達式的輸出變量。 在這點上,從其獲得輸出變量的邏輯表達式有時變?yōu)槎検奖磉_式。 例如,在所獲得的模型描述表達式具有三個輸入變量的情況下,生成第一二項式
表達式以及第二二項式表達式,通過所述第一二項式表達式,從所獲得的模型描述表達式
的兩個輸入變量獲得中間變量,通過第二二項式表達式,從所獲得的模型描述表達式的剩
下的輸出變量以及中間變量獲得輸出變量。 而且,中間變量變?yōu)榈谝欢検奖磉_式中的輸出變量,并且變?yōu)榈诙検奖磉_ 式中的輸入變量。 表達式更新部分19利用由二項式表達式生成部分18生成的多個二項式表達式來 更新在程序存儲部分12中存儲的所獲得的模型描述表達式。 而且,依序利用多個二項式表達式來更新在程序存儲部分12中存儲的所獲得的 模型描述表達式,從而將在程序存儲部分12中存儲的算法模型轉換為通過多個二項式表 達式來描述的二項式表達式模型。 在這點上,可以利用例如圖3中的計算機裝置31來實現(xiàn)圖1中的硬件模型生成裝 置1。計算機裝置31具有輸入部分11、顯示部分33、存儲部分34、 CPU(中央處理單元)35 以及連接它們的系統(tǒng)總線36。 存儲部分34存儲用于在計算機裝置31中實現(xiàn)硬件模型生成裝置1的程序。
而且,CPU 35執(zhí)行程序37,從而在計算機裝置31中實現(xiàn)硬件模型生成裝置1。而 且,存儲部分34充當程序存儲部分12和比特精度列表存儲部分13。 而且,圖3中的程序37可以是計算機可讀程序。例如,程序37可以是在例如記錄 介質(zhì)(諸如CD-ROM等)中記錄的程序,并且可以是通過傳輸介質(zhì)(諸如因特網(wǎng)等)從服務 器下載的程序。 2.硬件模型生成裝置的操作 接下來,將給出圖1中硬件模型生成裝置1的操作的描述。 圖4圖示了用于從可以被用作硬件模型的算法模型獲得二項式表達式模型的總 處理流程。圖4中的流程圖主要由表達式選擇部分14執(zhí)行。 而且,圖5圖示了輸入變量的固定處理的流程。圖5中的流程圖由變量固定部分 15執(zhí)行。 而且,圖6-圖12圖示了由圖1中硬件模型生成裝置1轉換的電路模型的示例。
圖6是算法模型,圖12是可以被用作硬件模型的二項式表達式模型。而且,圖7-圖ll是中間模型。 在下面的描述中,將參考圖6-圖12中的示例來給出圖4和圖5中的處理的描述。
在這點上,在圖6-圖12中,以大寫字母描述已固定的定點變量,并且以小寫字母描述未固定的浮點變量。 如圖4中所示,用戶操作硬件模型生成裝置1的輸入部分11,以輸入算法模型的多個輸入和輸出描述表達式、以及在輸入和輸出描述表達式中包括的輸入變量和輸出變量的輸入/輸出條件(步驟ST1)。由此,輸入部分ll生成輸入數(shù)據(jù)。 而且,程序存儲部分12存儲例如圖6中的算法模型。在圖6中的算法模型中存儲了三個輸入和輸出描述表達式(模型描述表達式)。 而且,圖2中的比特精度列表21存儲在比特精度列表存儲部分13中。 比特精度列表21存儲圖6中的15個變量的輸入/輸出條件。 而且,比特精度列表存儲部分13存儲例如輸入變量的輸入值的范圍以及輸出變
量的可容許誤差作為輸入/輸出條件。 當程序存儲部分12存儲了算法模型并且比特精度列表存儲部分13存儲了比特精度列表21時,硬件模型生成裝置1開始從算法模型生成具有該變量比特精度的二項式表達式模型的生成處理。 在二項式表達式模型生成處理中,如圖4中所示執(zhí)行循環(huán)(loop)處理四次。 而且,在第一循環(huán)處理中,執(zhí)行以下操作將包括乘法和除法的模型描述表達式的
輸出變量固定,將與乘法和除法有關的輸入變量固定,并且二項式化乘法和除法。 相應地,表達式選擇部分14首先獲得在程序存儲部分12中存儲的模型描述表達
式(步驟ST11)。表達式選擇部分14獲得在算法模型的開頭描述的模型描述表達式。 在圖6的示例中,表達式選擇部分14首先獲得"x = a*b*c"。符號"*"是乘法運算符。 在獲得了模型描述表達式之后,表達式選擇部分14確定該模型描述表達式是否包含感興趣的預定變量、以及感興趣的預定運算符。 在第一循環(huán)處理中,表達式選擇部分14假設乘法運算符(*)和除法運算符("+ "或'7")是感興趣的運算符,并且確定所獲得的模型描述表達式是否包含感興趣的運算符(步驟ST12)。表達式"x = a樸化"包括乘法運算符。 而且,如果該模型描述表達式不包括感興趣的運算符,則表達式選擇部分14執(zhí)行稍后描述的步驟ST16。 而且,如果該模型描述表達式包括感興趣的運算符,則表達式選擇部分14提取在所獲得的模型描述表達式的左側的輸出變量作為感興趣的變量,并且指示變量固定部分15對感興趣的變量執(zhí)行固定處理(步驟ST13 在"x = a樸化"情況下,提取輸出變量"x"作為感興趣的變量。
變量固定部分15從所獲得的模型描述表達式、感興趣的運算符以及感興趣的變量,確定感興趣的變量(這里,包括乘法和除法的模型描述表達式的輸出變量)的比特寬度。變量固定部分15確定感興趣的變量的比特寬度。 當固定模型描述表達式的輸出變量時,變量固定部分15首先執(zhí)行所獲得的模型描述表達式的仿真(simulation),并且獲得輸出變量的最大值(絕對值)。因此,確定所獲得的模型描述表達式的輸出變量的整數(shù)部分。 比特精度列表存儲部分13存儲整數(shù)部分的比特數(shù)目。 接下來,變量固定部分15確定輸出變量的小數(shù)部分的比特數(shù)目,使得輸出變量值
在比輸出變量的可容許誤差小的范圍內(nèi)改變。 比特精度列表存儲部分13存儲小數(shù)部分的比特數(shù)目。 通過上述處理,變量固定部分15確定感興趣的變量的比特寬度。 而且,比特精度列表存儲部分13存儲所生成的感興趣的變量(輸出變量)的比特寬度。 因此,確定所獲得的模型描述表達式的輸出變量的比特精度。 如圖7中所示,浮點輸出變量"x"被轉換為定點輸出變量"X"。 在指示了感興趣的變量(輸出變量)的固定處理之后,如圖4中所示,表達式選擇
部分14還提取要進行乘法和除法的輸入變量作為感興趣的變量,并且指示變量固定部分
15執(zhí)行感興趣的變量的固定處理(步驟ST14)。 在"x = a樸化"情況下,提取輸入變量"a"、"b"和"c"作為感興趣的變量。
變量固定部分15執(zhí)行圖5中的處理,使得對感興趣的變量(輸入變量)進行固定。
具體地,變量固定部分15首先執(zhí)行所獲得的模型描述表達式的仿真(步驟ST51), 并且獲得每個輸入變量的最大值(絕對值)(步驟ST52)。 因此,確定在所獲得的模型描述表達式中包括的所有輸入變量的整數(shù)部分。
比特精度列表存儲部分13存儲整數(shù)部分的比特數(shù)目。
在這點上,在該階段,這些輸入變量作為浮點變量來運算。 接下來,為了獲得感興趣的變量(輸入變量)的小數(shù)部分的比特數(shù)目,變量固定部 分15首先將具有不生成舍入誤差的足夠的比特數(shù)目的小數(shù)部分添加到在所獲得的模型描 述表達式中包括的所有感興趣的變量(步驟ST53)。 此后,變量固定部分15減少與感興趣的變量(輸入變量)的小數(shù)部分的比特數(shù)目 相同數(shù)目的比特(例如,l比特)(步驟ST54),并且執(zhí)行仿真(步驟ST55)。此時,將除了感 興趣的變量之外的未定點的變量作為浮點變量來運算。 而且,變量固定部分15確定輸出變量的誤差是否大于可容許誤差(步驟ST56)。 而且,如果輸出變量的誤差不大于可容許誤差,則變量固定部分15重復比特數(shù)目
減少處理(步驟ST54)和仿真(步驟ST55),直到該誤差超出可容許誤差為止。 而且,當輸出變量的誤差大于可容許誤差時,變量固定部分15向一個感興趣的變
量添加一比特(步驟ST57),并且執(zhí)行仿真(步驟ST58)。此時,將除了感興趣的變量之外
的未固定的變量作為浮點變量來運算。 變量固定部分15對每個感興趣的變量執(zhí)行相同的仿真(步驟ST59)。 變量固定部分15從多個感興趣的輸入變量的、具有增加的比特數(shù)目的這些仿真
結果中識別使得輸出變量的誤差變?yōu)樽畲蟮妮斎胱兞?步驟ST60)。 而且,變量固定部分15固定使得該誤差變?yōu)樽畲蟮妮斎胱兞康男?shù)部分的比特 數(shù)目作為該時間點處的比特數(shù)目(步驟ST61)。 而且,變量固定部分15重復步驟ST57到ST61,直到不存在要處理的感興趣的變量 為止(步驟ST62)。
在這點上,當固定在所獲得的模型描述表達式中包括的第二和之后的輸入變量 時,預先將固定的比特寬度用于固定的輸入變量。 變量固定部分15從所獲得的模型描述表達式、感興趣的運算符、感興趣的變量以 及已經(jīng)運算的輸出變量的比特寬度來確定感興趣的變量(這里,要進行乘法和除法的輸入 變量)的比特寬度。 而且,比特精度列表存儲部分13存儲所生成的感興趣的變量的比特寬度。 因此,確定所獲得的模型描述表達式中要進行乘法和除法的輸入變量的比特精度。 如圖8中所示,浮點輸入變量"a"、"b"和"c"被轉換為定點輸入變量"A"、"B"和 "C"。 在指示了對輸出變量和要進行乘法和除法的輸入變量的固定處理之后,表達式選
擇部分14指示中間變量生成部分16、運算順序確定部分17、以及二項式表達式生成部分18
執(zhí)行對感興趣的運算符的算術處理的二項式化處理(步驟ST15)。 在"x = a樸化"情況下,"x = a樸化"全部都要進行二項式表達式處理。 在這點上,例如,如果感興趣的輸入變量的數(shù)目為三個或更多,或者如果所獲得的
模型描述表達式包括感興趣的輸入變量,并且感興趣的輸入變量的總數(shù)目為三個或更多,
則表達式選擇部分14應該指示二項式表達式處理。 中間變量生成部分16生成與所獲得的模型描述表達式中的運算符的數(shù)目相對應 的數(shù)目的中間變量。 在圖9中的二項式化"X = A承BW情況下,生成一個中間變量"tmpxl"。 比特精度列表存儲部分13存儲由中間變量生成部分16生成的中間變量。 運算順序確定部分17確定減少舍入誤差的運算的順序,并且確定在所獲得的模
型描述表達式中包括的多個變量的分配。 例如,如果固定輸入變量"A"、"B"和"C"的比特寬度為"B > A > C",則運算順序 確定部分17將輸入變量A和C分配給中間變量tmpxl的邏輯表達式,并且將輸入變量B和 中間變量tmpxl分配給輸出變量X的邏輯表達式。 二項式表達式生成部分18基于由運算順序確定部分17確定的多個變量的分配,
從所獲得的模型描述表達式生成包括至少一個二項式表達式的多個邏輯表達式。 例如,二項式表達式生成部分18生成"tmpxl = AW作為中間變量tmpxl的邏輯
表達式,并且生成"X = B襯mpxl"作為輸出變量X的邏輯表達式。 而且,表達式更新部分19利用由二項式表達式生成部分18生成的多個邏輯表達 式來更新在程序存儲部分12中存儲的所獲得的模型描述表達式。 因此,如圖9中所示,在程序存儲部分12中存儲二項式表達式"tmpxl = AW和 "X = B襯mpxl,,替代"x = a樸化,,。 在指示對所獲得的模型描述表達式的二項式表達式處理之后,表達式選擇部分14 確定當前獲得的模型描述表達式是否是在程序存儲部分12中存儲的最后獲得的模型描述 表達式(步驟ST16)。 由于"x = a樸化"是電路模型的第一個模型描述表達式,在此情況下,確定該表達 式不是最后獲得的模型描述表達式。
而且,如果當前獲得的模型描述表達式不是程序存儲部分12中的最后獲得的模 型描述表達式,則表達式選擇部分14獲得程序存儲部分12中的下一模型描述表達式,并且 對該新獲得的模型描述表達式執(zhí)行上述第一循環(huán)處理。 因此,如圖9中所示,將圖6中的包括乘法運算符"*"的第一模型描述表達式轉換 為兩個邏輯表達式。 而且,如圖9中所示,將圖6中的第三模型描述表達式"z = g樸+^j+k+l"轉換為 三個邏輯表達式"tmpzl = G*H,,、"tmpz2 = I*J,,以及"Z = tmpzl+tmpz2+k+l"。
而且,將三個中間變量"tmpxl "、 "tmpzl"和"tmpz2"添加到比特精度列表21 。
而且,如果當前獲得的模型描述表達式是程序存儲部分12中的最后獲得的模型 描述表達式,則表達式選擇部分14完成第一循環(huán)處理,并且然后開始第二循環(huán)處理。
在第二循環(huán)處理中,執(zhí)行通過第一循環(huán)處理生成的中間變量(用于二項式化乘法 和除法的中間變量)的固定處理。 在圖9中,生成三個中間變量"tmpxr,、"tmpzr,禾口"tmpz2,,。 相應地,通過第一循環(huán)處理和第二循環(huán)處理,將乘法和除法二項式化,并且固定在 乘法和除法的二項式表達式中包括的輸入變量和輸出變量(包括中間變量)。
為此目的,表達式選擇部分14首先獲得在程序存儲部分12開頭存儲的模型描述 表達式(步驟ST21)。 在獲得了模型描述表達式之后,表達式選擇部分14確定該模型描述表達式是否 包括感興趣的預定運算符。 在第二循環(huán)處理中,表達式選擇部分14假設乘法運算符和除法運算符是感興趣 的運算符,并且確定所獲得的模型描述表達式是否包括感興趣的運算符(步驟ST22)。
在圖9的情況下,當表達式選擇部分14獲得例如第二邏輯表達式或第六邏輯表達 式(它們是包括作為輸入變量的感興趣的運算符(未固定的中間變量)的描述的邏輯表達 式)時,表達式選擇部分14確定所獲得的模型描述表達式具有感興趣的運算符。
而且,表達式選擇部分14確定其它的邏輯表達式不包括感興趣的運算符。
而且,如果所獲得的模型描述表達式不包括感興趣的運算符,則表達式選擇部分 14執(zhí)行稍后描述的步驟ST24。 而且,如果所獲得的模型描述表達式包括感興趣的運算符,則表達式選擇部分14 提取所獲得的模型描述表達式的右側上的未固定的輸入變量作為感興趣的變量,并且指示 變量固定部分15對感興趣的變量執(zhí)行固定處理(步驟ST23)。 在圖9的情況下,變量固定部分15從例如所獲得的模型描述表達式、感興趣的運
算符以及感興趣的變量確定感興趣的變量(這里,輸入變量)的比特寬度。 而且,比特精度列表存儲部分13存儲所生成的感興趣的變量(輸入變量)的比特寬度。 由此,確定所獲得的模型描述表達式的輸入變量的比特精度。 在指示了感興趣的變量(輸出變量)的固定處理之后,表達式選擇部分14確定當 前獲得的模型描述表達式是否是在程序存儲部分12中存儲的最后獲得的模型描述表達式 (步驟ST24)。 而且,如果當前獲得的模型描述表達式不是程序存儲部分12中的最后獲得的模型描述表達式,則表達式選擇部分14獲得程序存儲部分12中的下一個模型描述表達式,并 且對該新獲得的模型描述表達式執(zhí)行上述第二循環(huán)處理。 通過第二循環(huán)處理,如圖10所示,由第一循環(huán)處理生成的三個中間變量"tmpxl"、 "tmpz 1"和"tmpz2 "被固定,并且被改變?yōu)?TMPX1 "、"TMPZ1"和"TMPZ2 "。
而且,如果當前獲得的模型描述表達式是程序存儲部分12中的最后獲得的模型 描述表達式,則表達式選擇部分14完成第二循環(huán)處理,并且然后開始第三循環(huán)處理。
在第三循環(huán)處理中,執(zhí)行二項式化加法和減法。 為此目的,表達式選擇部分14首先獲得在程序存儲部分12中存儲的模型描述表 達式(步驟ST31)。 表達式選擇部分14獲得在算法模型的開頭描述的模型描述表達式。 在獲得了模型描述表達式之后,表達式選擇部分14確定該模型描述表達式是否
包括感興趣的預定變量以及感興趣的預定運算符。 在第三循環(huán)處理中,表達式選擇部分14假設加法運算符和減法運算符是感興趣 的運算符,并且確定所獲得的模型描述表達式是否包括感興趣的運算符(步驟ST32)。
而且,如果所獲得的模型描述表達式不包括感興趣的運算符,則表達式選擇部分 14執(zhí)行稍后描述的步驟ST34。 如果所獲得的模型描述表達式包括感興趣的運算符,則表達式選擇部分14指示 中間變量生成部分16、運算順序確定部分17和二項式表達式生成部分18執(zhí)行對感興趣的 運算符的算術處理的二項式化處理(步驟ST33)。 中間變量生成部分16生成與從在所獲得的模型描述表達式中包括的感興趣的運 算符的數(shù)目減去l一樣多數(shù)目的中間變量。 將通過中間變量生成部分16生成的中間變量添加到比特精度列表存儲部分13。
運算順序確定部分17確定運算的順序以便減少舍入誤差,并且確定在所獲得的 模型描述表達式中包括的多個變量的分配。 例如,如果存在已固定的輸入變量和未固定的輸入變量,則分配變量使得已固定 的輸入變量晚于未固定的輸入變量被運算。 另外,例如,如果存在多個已固定的輸入變量,則分配變量使得具有較大比特寬度 的輸入變量晚于具有較小比特寬度的輸入變量被運算。 通過該處理,可以降低由乘法和除法引起的舍入誤差被多個運算傳播和增大的可 能性。 二項式表達式生成部分18基于由運算順序確定部分17確定的多個變量的分配,
從所獲得的模型描述表達式生成包括至少一個二項式表達式的多個邏輯表達式。 而且,表達式更新部分19利用由二項式表達式生成部分18生成的多個邏輯表達
式來更新在程序存儲部分12中存儲的所獲得的模型描述表達式。 在指示了對所獲得的模型描述表達式的二項式表達式處理之后,表達式選擇部分 14確定當前獲得的模型描述表達式是否是在程序存儲部分12中存儲的最后獲得的模型描 述表達式(步驟ST34)。 而且,如果當前獲得的模型描述表達式不是程序存儲部分12中的最后獲得的模 型描述表達式,則表達式選擇部分14獲得程序存儲部分12中的下一個模型描述表達式,并且對該新獲得的模型描述表達式執(zhí)行上述第三循環(huán)處理。 由此,如圖11所示,二項式化包括加法和減法的模型描述表達式,同時保持要進 行加法和減法的輸入變量和輸出變量未被固定。 在這點上,圖11圖示了以下示例,其中"TMPZ2"的比特寬度大于"TMPZ1"的比特 寬度。因此,"TMPZ2"被包括于在包括"TMPZ1"作為輸入變量的二項式表達式之后放置的 二項式表達式中。 而且,如果當前獲得的模型描述表達式是程序存儲部分12中的最后獲得的模型 描述表達式,則表達式選擇部分14完成第三循環(huán)處理,并且然后開始第四循環(huán)處理。
在第四循環(huán)處理中,表達式選擇部分14執(zhí)行所有未固定的變量的固定處理。
在該時間點,未固定的變量包括要進行加法和減法的輸入變量、僅包括加法和減 法的模型描述表達式的輸出變量、以及在二項式化包括加法和減法的模型描述表達式時生 成的中間變量。 相應地,通過第三循環(huán)處理和第四循環(huán)處理,二項式化加法和減法,并且固定在加 法和減法的二項式表達式中包括的輸入變量和輸出變量(包括中間變量)。
為此目的,表達式選擇部分14首先獲得在程序存儲部分12的開頭存儲的模型描 述表達式(步驟ST41)。 在獲得了模型描述表達式之后,表達式選擇部分14確定該模型描述表達式是否 包括感興趣的預定運算符。 在第四循環(huán)處理中,表達式選擇部分14確定該模型描述表達式是否包括未固定 的輸入變量和輸出變量(步驟ST42)。 而且,如果所獲得的模型描述表達式不包括感興趣的運算符,則表達式選擇部分 14執(zhí)行稍后描述的步驟ST44。 而且,如果所獲得的模型描述表達式包括感興趣的運算符,則表達式選擇部分14 指示變量固定部分15對感興趣的變量執(zhí)行固定處理(步驟ST43)。 變量固定部分15確定感興趣的變量的比特寬度。例如,變量固定部分15首先確 定輸出變量的比特寬度。 在該點上,二項式表達式的輸出變量的整數(shù)部分變得具有這樣的比特寬度,該比 特寬度是向所述兩個輸入變量的整數(shù)部分的比特寬度中較大的比特寬度加一比特的比特 寬度。 此后,變量固定部分15考慮輸出變量的可容許誤差來確定輸入變量的比特寬度。
而且,比特精度列表存儲部分13存儲所生成的感興趣的變量的比特寬度。
由此,確定所獲得的模型描述表達式的輸出變量的比特精度。 在指示了感興趣的變量的固定處理之后,表達式選擇部分14確定當前獲得的 模型描述表達式是否是在程序存儲部分12中存儲的最后獲得的模型描述表達式(步驟 ST44)。 而且,如果當前獲得的模型描述表達式不是程序存儲部分12中的最后獲得的模 型描述表達式,則表達式選擇部分14獲得程序存儲部分12中的下一個模型描述表達式,并 且對該新獲得的模型描述表達式執(zhí)行上述第四循環(huán)處理。 而且,如果當前獲得的模型描述表達式是程序存儲部分12中的最后獲得的模型描述表達式,則表達式選擇部分14完成第四循環(huán)處理,并且然后完成二項式表達式模型的 生成處理。 由此,如圖12所示,固定在加法和減法的二項式表達式中包括的所有輸入變量和 輸出變量。 而且,圖12中的多個二項式表達式已經(jīng)優(yōu)化了各個二項式表達式中的比特寬度。
而且,程序存儲部分12存儲圖12中的二項式表達式模型。 而且,比特精度列表存儲部分13存儲在圖12的二項式表達式模型中包括的所有 變量的比特寬度。 如上所述,在根據(jù)本實施例的硬件模型生成裝置1中,從算法模型程序生成二項 式模型程序。此外,生成關于在二項式模型程序的二項式表達式中包括的多個變量的比特 精度的信息。 以此方式,將算法模型程序中的邏輯表達式二項式化,并且固定二項式表達式的 變量,使得二項式模型程序變得可以使用網(wǎng)表等作為硬件模型程序。 而且,在該實施例中,如圖4所示,預先二項式化算法模型程序中的乘法和除法運 算,并且然后二項式化加法和減法運算。 此外,在該實施例中,如果二項式化加法和減法運算,則執(zhí)行二項式化,使得預先 固定的并且與乘法和除法運算相關的輸入變量和輸出變量(在乘法和除法運算的二項式 化時生成的中間變量)在與加法和減法運算相關的輸入變量之后進行加法和減法。
相應地,在該實施例中,最小化具有舍入誤差的乘法和除法運算的運算數(shù)目,并且 因此抑制舍入誤差的增大。 而且,在該實施例中,可以確定乘法和除法運算的輸入變量的比特寬度,使得乘法 和除法的舍入誤差保持在輸出變量的可容許誤差之內(nèi)。 而且,在該實施例中,執(zhí)行二項式化,使得具有較大比特寬度的輸入變量(中間變 量)晚于具有較小比特寬度的輸入變量(中間變量)被運算。
相應地,可以最小化比特寬度的舍入誤差。 此外,在該實施例中,如圖5所示,通過重復仿真并且同時相等地減少所獲得的邏 輯表達式的輸入變量的比特寬度,來獲得第一次不允許獲得可容許誤差的輸入變量的比特 數(shù)目(在下文中,稱為具有不容許誤差的比特數(shù)目)。 此后,在該實施例中,對于每個感興趣的變量,通過向具有不容許誤差的一個感興 趣的輸入變量的比特數(shù)目加一 比特,來重復執(zhí)行仿真。 而且,在該實施例中,確定產(chǎn)生輸出變量的最大誤差的感興趣的變量的比特寬度 作為仿真的比特寬度,也就是說,向具有不容許誤差的比特數(shù)目加一比特。 相應地,在該實施例中,每個二項式表達式中的輸入變量的比特寬度變?yōu)樵试S獲
得可容許誤差的最小比特寬度。 由此,可以獲得以下優(yōu)點作為本實施例的優(yōu)點。 第一,在該實施例中,可以自動地將使用浮點變量描述的算法模型程序轉換為使 用定點變量描述的硬件模型程序(二項式表達式模型程序)。 此外,在該實施例中,即使算法模型程序的邏輯表達式是具有帶有三項或更多的 輸入變量的多項式邏輯表達式,也可以自動地將該邏輯表達式轉換為硬件模型程序。
第二,在該實施例中,可以自動地確定硬件模型程序中多個二項式表達式的順序, 從而按照考慮舍入誤差的運算順序執(zhí)行運算。 第三,在該實施例中,對在多項式邏輯表達式中包括的輸入變量之中增加輸出誤
差的輸入變量進行自動識別,并且依據(jù)該輸入變量固定比特寬度。 由此,可以保持由輸入變量誤差引起的輸出變量誤差不超出可容許誤差。 第四,在該實施例中,通過給增加輸出誤差的、與乘法和除法運算相關的輸入變量
賦予優(yōu)先級來執(zhí)行比特寬度的分配,從而可以限制由不必要的比特寬度引起的電路的封裝
面積的增加,并且保持輸出變量誤差在可容許誤差之內(nèi)。 相應地,在該實施例中,例如,通過設置大的可容許誤差,可以減小電路的封裝面 積。 而且,相反,在該實施例中,通過設置小的可容許誤差,可以確保高比特精度。
也就是說,在該實施例中,可以根據(jù)要設計的電路而優(yōu)化多個二項式表達式的順 序以及變量的比特寬度。 第五,在該實施例中,可以通過如圖4所示的某循環(huán)處理來執(zhí)行自動處理。
相應地,在該實施例中,可以通過對于變量數(shù)目的線性處理量來確定比特精度。
而且,在該實施例中,如果要處理的變量總數(shù)增加,則處理量不會指數(shù)增加,并且 因此可以在處理量線性增加的情況下確定比特精度。 上述實施例是本發(fā)明的優(yōu)選實施例的示例。然而,本發(fā)明并不局限于此,并且各種
變形和修改是可能的,而不偏離本發(fā)明的精神和范圍。
變形 例如,在圖4所示的流程圖的第三和第四循環(huán)處理中,表達式選擇部分14可以執(zhí) 行與第一和第二循環(huán)處理相同的處理。 也就是說,在第三循環(huán)處理中,表達式選擇部分14可以執(zhí)行將包括加法和減法 的模型描述表達式的輸出變量固定、將與加法和減法相關的輸入變量固定、并且二項式化 加法和減法。 而且,在第四循環(huán)處理中,表達式選擇部分14可以執(zhí)行由第三循環(huán)處理生成的中 間變量(用于二項式化加法和減法的中間變量)的固定處理。 以此方式,即使改變了第三和第四循環(huán)處理,也可以從算法模型程序生成二項式 模型程序(硬件模型程序),并且進一步確定根據(jù)電路的二項式表達式的變量的合適的比 特精度。 本申請包含與在2009年1月20日向日本專利局提交的日本優(yōu)先權專利申請JP
2009-010015中公開的主題相關的主題,通過引用將其全部內(nèi)容合并于此。 本領域技術人員應該理解,根據(jù)設計需要和其它因素,可以出現(xiàn)各種修改、組合、
子組合以及變化,只要它們在所附權利要求或其等效物的范圍內(nèi)即可。
權利要求
一種算術程序轉換裝置,包括程序存儲部分,存儲通過包括多個輸入變量、運算符和輸出變量的邏輯表達式描述要設計的電路的算術程序;中間變量生成部分,如果在該程序存儲部分中存儲了具有三個輸入變量或更多輸入變量的邏輯表達式,則該中間變量生成部分生成要用于將該邏輯表達式轉換為包括兩個輸入變量和一個輸出變量的多個二項式表達式的中間變量;表達式轉換部分,如果通過中間變量生成部分生成了中間變量,則該表達式轉換部分將該邏輯表達式轉換為多個二項式表達式,所述多個二項式表達式包括用于獲得中間變量的二項式表達式以及用于從中間變量獲得輸出變量的二項式表達式;表達式更新部分,如果通過表達式轉換部分的轉換處理生成了多個二項式表達式,則該表達式更新部分用所述多個二項式表達式更新在程序存儲部分中存儲的原始邏輯表達式;比特寬度確定部分,確定在程序存儲部分中存儲的邏輯表達式的輸出變量、輸入變量以及中間變量的比特寬度;以及比特寬度存儲部分,存儲輸出變量的比特寬度、輸入變量的比特寬度以及中間變量的比特寬度。
2. 如權利要求1所述的算術程序轉換裝置,其中,中間變量生成部分和表達式轉換部 分將具有三個輸入變量或更多輸入變量并且被存儲在程序存儲部分中的邏輯表達式轉換 為多個邏輯表達式,從而通過二項式表達式表示在邏輯表達式中包括的乘法和除法運算, 以及中間變量生成部分和表達式轉換部分二項式化在程序存儲部分中存儲的邏輯表達式 的加法和減法運算,從而為二項式化乘法和除法運算而生成的中間變量在與在具有三個輸 入變量或更多輸入變量的邏輯表達式中包括的加法和減法運算相關的輸入變量之后被用 于加法和減法,由此將邏輯表達式轉換為多個二項式表達式。
3. 如權利要求1或2所述的算術程序轉換裝置,還包括獲取部分,其將依序從程序存儲 部分獲得在程序存儲部分中存儲的邏輯表達式的處理重復多次,其中,為了 二項式化在邏輯表達式中包括的乘法和除法運算, 在邏輯表達式的第一順序獲取處理中,該獲取部分使得比特寬度確定部分確定所獲得的邏輯表達式的輸出變量的比特寬度 以及與乘法和除法運算相關的輸入變量的比特寬度,該獲取部分使得中間變量生成部分和表達式轉換部分生成中間變量并且二項式化乘 法和除法運算,并且該獲取部分使得表達式更新部分更新在程序存儲部分中存儲的邏輯表達式;以及 在邏輯表達式的第二順序獲取處理中,該獲取部分使得比特寬度確定部分確定在乘法和除法運算的二項式表達式中包括的 中間變量的比特寬度。
4. 如權利要求3所述的算術程序轉換裝置, 其中,為了二項式化在邏輯表達式中包括的加法和減法運算, 在第三邏輯表達式順序獲取處理中,該獲取部分使得中間變量生成部分和表達式轉換部分生成中間變量并且二項式化加 法和減法運算,并且該獲取部分使得表達式更新部分更新在程序存儲部分中存儲的邏輯表達式;以及 在第四邏輯表達式順序獲取處理中,該獲取部分使得比特寬度確定部分確定尚未確定其比特寬度的變量的比特寬度。
5. 如權利要求3所述的算術程序轉換裝置,其中,如果獲取部分獲得的邏輯表達式僅僅包括乘法和除法運算符,則中間變量生成 部分生成與從乘法和除法運算符的數(shù)目減1一樣多的中間變量,以及如果獲取部分獲得的邏輯表達式包括乘法和除法運算符以及加法和減法運算符,則中 間變量生成部分生成與乘法和除法運算符的數(shù)目一樣多的中間變量。
6 如權利要求l所述的算術程序轉換裝置,其中,比特寬度確定部分基于邏輯表達式的輸出變量的可容許誤差,確定輸出變量、輸 入變量以及中間變量的比特寬度。
7. 如權利要求1所述的算術程序轉換裝置,其中,在將在程序存儲部分中存儲的邏輯表達式更新為多個邏輯表達式之前,比特寬 度確定部分使用在程序存儲部分中存儲的邏輯表達式,確定輸出變量的比特寬度以及與乘 法和除法運算相關的輸入變量的比特寬度,比特寬度存儲部分存儲通過比特寬度確定部分確定的比特寬度,以及 當表達式轉換部分二項式化加法和減法運算時,則表達式轉換部分將其比特寬度沒有 存儲在比特寬度存儲部分中的輸出變量識別為中間變量。
8. 如權利要求1所述的算術程序轉換裝置,其中,關于在所獲得的邏輯表達式中包括的多個輸入變量,轉換部分將多個輸入變量 分配到多個二項式表達式,使得與具有較小比特寬度的輸入變量相比,具有較大比特寬度 的輸入變量在后面的二項式表達式中被運算。
9. 如權利要求1所述的算術程序轉換裝置,其中,在比特寬度確定部分通過重復仿真且同時相等地減少所獲得的邏輯表達式的輸 入變量的比特寬度,而首次獲得具有不容許誤差的輸入變量的比特數(shù)目之后,對于每個輸入變量,比特寬度確定部分每次在向具有不容許誤差的一個輸入變量的比 特數(shù)目加一比特的情況下重復執(zhí)行仿真,并且將產(chǎn)生輸出變量的最大誤差的輸入變量的比 特寬度確定為該仿真的比特寬度。
10. 如權利要求9所述的算術程序轉換裝置,其中,比特寬度確定部分使用除了已經(jīng)確定了其比特寬度的輸入變量以及感興趣的輸 入變量之外的輸入變量作為浮點變量來執(zhí)行仿真。
11. 一種轉換算術程序的方法,該方法包括以下步驟生成要用于將構成在程序存儲部分中存儲的算術程序并且包括三個輸入變量或更多 輸入變量、運算符以及輸出變量的邏輯表達式轉換為包括兩個輸入變量和一個輸出變量的 多個二項式表達式的中間變量;將該邏輯表達式轉換為多個二項式表達式,所述多個二項式表達式包括用于獲得中間 變量的二項式表達式以及用于從中間變量獲得輸出變量的二項式表達式;用所述多個轉換后的二項式表達式更新在程序存儲部分中存儲的原始邏輯表達式; 確定在程序存儲部分中存儲的邏輯表達式中包括的輸出變量、輸入變量以及中間變量 的比特寬度;以及將輸出變量的比特寬度、輸入變量的比特寬度以及中間變量的比特寬度存儲在比特寬 度存儲部分中。
12. —種用于使得計算機實現(xiàn)包括以下內(nèi)容的處理的程序程序存儲部分,存儲通過包括多個輸入變量、運算符和輸出變量的邏輯表達式來描述 要設計的電路的算術程序;中間變量生成部分,如果在該程序存儲部分中存儲了具有三個輸入變量或更多輸入變 量的邏輯表達式,則該中間變量生成部分生成要用于將該邏輯表達式轉換為包括兩個輸入 變量和一個輸出變量的多個二項式表達式的中間變量;表達式轉換部分,如果通過中間變量生成部分生成了中間變量,則該表達式轉換部分 將該邏輯表達式轉換為多個二項式表達式,所述多個二項式表達式包括用于獲得中間變量 的二項式表達式以及用于從中間變量獲得輸出變量的二項式表達式;表達式更新部分,如果通過表達式轉換部分的轉換處理生成了多個二項式表達式,則 該表達式更新部分用所述多個二項式表達式更新在程序存儲部分中存儲的原始邏輯表達 式;比特寬度確定部分,確定在程序存儲部分中存儲的邏輯表達式的輸出變量、輸入變量 以及中間變量的比特寬度;以及比特寬度存儲部分,存儲輸出變量的比特寬度、輸入變量的比特寬度以及中間變量的 比特寬度。
全文摘要
一種算術程序轉換裝置包括程序存儲部分,存儲通過包括多個輸入和輸出變量與運算符的邏輯表達式描述電路的算術程序;中間變量生成部分,如果表達式具有三個或更多輸入變量,則中間變量生成部分生成用于將表達式轉換為包括輸入和輸出變量的多個二項式的中間變量;表達式轉換部分,如果生成了中間變量,則表達式轉換部分將邏輯表達式轉換為包括用于獲得中間變量的二項式以及用于從中間變量獲得輸出變量的二項式的多個二項式;表達式更新部分,如果生成了多個二項式,則表達式更新部分更新所存儲的原始表達式;比特寬度確定部分,確定表達式的輸出、輸入和中間變量的比特寬度;以及比特寬度存儲部分,存儲輸出、輸入和中間變量的比特寬度。
文檔編號G06F17/11GK101782894SQ20101000468
公開日2010年7月21日 申請日期2010年1月20日 優(yōu)先權日2009年1月20日
發(fā)明者長谷川祥太 申請人:索尼公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1