JP2840169B2 - 論理回路の自動設計方法およびその装置 - Google Patents
論理回路の自動設計方法およびその装置Info
- Publication number
- JP2840169B2 JP2840169B2 JP4348269A JP34826992A JP2840169B2 JP 2840169 B2 JP2840169 B2 JP 2840169B2 JP 4348269 A JP4348269 A JP 4348269A JP 34826992 A JP34826992 A JP 34826992A JP 2840169 B2 JP2840169 B2 JP 2840169B2
- Authority
- JP
- Japan
- Prior art keywords
- signal
- multiplier
- circuit
- bit
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Complex Calculations (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【0001】
【産業上の利用分野】本発明は、論理回路、特に、乗算
器、または乗算器を含む論理回路の自動設計方法および
その装置に関するものである。
器、または乗算器を含む論理回路の自動設計方法および
その装置に関するものである。
【0002】
【従来の技術】ディジタルデータを乗算する乗算器は、
単体のLSIとして用いられるほか、DSP(digital
signal processor)などのLSIへの内蔵用としても多
く用いられている。この種の乗算器は、乗算ビット幅の
増大や用途の多様化等に伴い、一層の高速化や、回路規
模、チップ面積の低減が求められ、種々の乗算方法を適
用した回路方式が提案されている。
単体のLSIとして用いられるほか、DSP(digital
signal processor)などのLSIへの内蔵用としても多
く用いられている。この種の乗算器は、乗算ビット幅の
増大や用途の多様化等に伴い、一層の高速化や、回路規
模、チップ面積の低減が求められ、種々の乗算方法を適
用した回路方式が提案されている。
【0003】例えば、最も高速な乗算方法の一つであ
る、2ビットブースのリコード方式を用いた乗算方法
が、「日経エレクトロニクス」(1978年5月29日
号76頁〜89頁)に示されている。この乗算方法は、
以下のようなアルゴリズムによって乗算の高速化等を図
っている。例えば、mビット幅の乗数Yと、nビット幅
の被乗数Xとを乗算する場合、乗数Yは、2の補数表現
で以下のように表される。
る、2ビットブースのリコード方式を用いた乗算方法
が、「日経エレクトロニクス」(1978年5月29日
号76頁〜89頁)に示されている。この乗算方法は、
以下のようなアルゴリズムによって乗算の高速化等を図
っている。例えば、mビット幅の乗数Yと、nビット幅
の被乗数Xとを乗算する場合、乗数Yは、2の補数表現
で以下のように表される。
【0004】 但し、ym =ys qは、mが偶数の場合q=m/2、奇数の場合q=(m
−1)/2 また、y0 は、便宜上の値で、y0 =0 である。
−1)/2 また、y0 は、便宜上の値で、y0 =0 である。
【0005】そこで、XとYの積Pは、 となる。
【0006】ここで、Y2i,Y2i+1,Y2i+2は、それぞ
れ0または1の値をとるから、(Y 2i+Y2i+1−2Y
2i+2)は(表1)に示すように、0、±1、または±2
になり、各部分積は、0、±X、または±2Xの何れか
に22iを乗じたものになる。
れ0または1の値をとるから、(Y 2i+Y2i+1−2Y
2i+2)は(表1)に示すように、0、±1、または±2
になり、各部分積は、0、±X、または±2Xの何れか
に22iを乗じたものになる。
【0007】
【表1】
【0008】そこで、各部分積を生成する回路は、主と
して被乗数±Xを2倍するために1ビットシフトするシ
フタと、仮数(0、±X、または±2X)を22i倍(重
み付け)するために2ビットずつシフトするシフタとか
ら構成することができる。また、部分積の総和を求める
回路の論理段数は、部分積の数が、q=m/2個(mが
偶数)、またはq=(m−1)/2個(mが奇数)とな
るので、2入力加算器を2分木状に接続する場合、概l
og2 m−1段(mが偶数)またはlog 2 (m−1)
−1段(mが奇数)になる。
して被乗数±Xを2倍するために1ビットシフトするシ
フタと、仮数(0、±X、または±2X)を22i倍(重
み付け)するために2ビットずつシフトするシフタとか
ら構成することができる。また、部分積の総和を求める
回路の論理段数は、部分積の数が、q=m/2個(mが
偶数)、またはq=(m−1)/2個(mが奇数)とな
るので、2入力加算器を2分木状に接続する場合、概l
og2 m−1段(mが偶数)またはlog 2 (m−1)
−1段(mが奇数)になる。
【0009】また、2ビットブースのリコード方式以外
の高速乗算器として、冗長二進数による乗算器が特許公
開平03−017737により提案されている。上記の
ような乗算器では、例えば乗数が24ビットの場合、部
分積数が12個、論理段数が4段となる。一方、乗算速
度の高速化や回路規模の低減は、上記のような乗算アル
ゴリズムの性能向上によるものに限らず、論理素子レベ
ルでの回路の最適化などによっても図られている。
の高速乗算器として、冗長二進数による乗算器が特許公
開平03−017737により提案されている。上記の
ような乗算器では、例えば乗数が24ビットの場合、部
分積数が12個、論理段数が4段となる。一方、乗算速
度の高速化や回路規模の低減は、上記のような乗算アル
ゴリズムの性能向上によるものに限らず、論理素子レベ
ルでの回路の最適化などによっても図られている。
【0010】すなわち、近年では、乗算器や乗算器を含
む論理回路は、多くの場合自動設計装置を用いて設計さ
れる。この種の装置においては、論理素子レベルの回路
情報をチップに実装される実装素子レベルの回路情報に
展開する際などに、回路の一部をより論理素子や論理段
数の少ない等価な回路に置換するなどして、冗長な回路
部分の削除等を行うようになっている。
む論理回路は、多くの場合自動設計装置を用いて設計さ
れる。この種の装置においては、論理素子レベルの回路
情報をチップに実装される実装素子レベルの回路情報に
展開する際などに、回路の一部をより論理素子や論理段
数の少ない等価な回路に置換するなどして、冗長な回路
部分の削除等を行うようになっている。
【0011】このような自動設計装置は、回路に要求さ
れる機能がハードウェア記述言語等により表された機能
記述情報が入力されると、これを、主として、機能のみ
が定義された仮想の機能素子から成る回路を表す、内部
表現形式の機能回路情報に変換し、さらに、実際に存在
する論理素子から成る回路を示す論理回路情報に変換し
た後、特定のテクノロジーで実装される実装素子が割り
付けられた回路を示す実装回路情報を生成するようにな
っている。
れる機能がハードウェア記述言語等により表された機能
記述情報が入力されると、これを、主として、機能のみ
が定義された仮想の機能素子から成る回路を表す、内部
表現形式の機能回路情報に変換し、さらに、実際に存在
する論理素子から成る回路を示す論理回路情報に変換し
た後、特定のテクノロジーで実装される実装素子が割り
付けられた回路を示す実装回路情報を生成するようにな
っている。
【0012】また、上記機能記述情報によって示される
機能に乗算が含まれる場合には、例えば、あらかじめハ
ードウェアマクロとしてライブラリに登録された所定の
ビット幅(4、8、17、32ビットなど)の汎用的な
乗算器が適用可能であれば、それが割り付けられたり、
ライブラリに登録されていない乗算器が必要な場合に
は、加算シフト型の乗算器などを構成する論理回路が新
たに生成されたりするようになっている。なお、乗数、
または被乗数の何れか一方が定数で、かつ、その値が2
のべき乗の場合には、通常、シフタを用いる回路が生成
されるようになっている。
機能に乗算が含まれる場合には、例えば、あらかじめハ
ードウェアマクロとしてライブラリに登録された所定の
ビット幅(4、8、17、32ビットなど)の汎用的な
乗算器が適用可能であれば、それが割り付けられたり、
ライブラリに登録されていない乗算器が必要な場合に
は、加算シフト型の乗算器などを構成する論理回路が新
たに生成されたりするようになっている。なお、乗数、
または被乗数の何れか一方が定数で、かつ、その値が2
のべき乗の場合には、通常、シフタを用いる回路が生成
されるようになっている。
【0013】ところで、乗数が2のべき乗でない定数で
ある場合、乗数における値が0のビットに対応する部分
積は全ビットの値が0になるので、そのような部分積を
生成する回路や、加算する回路は常に一定の信号状態に
なる。そこで、従来の自動設計装置では、一旦、乗数お
よび被乗数が変数である乗算回路と、定数を発生させる
回路とを生成した後、前述のように論理素子レベルでの
回路の最適化によって、例えば常に信号レベルが一定に
なる論理素子の削除等を行うようになっていた。
ある場合、乗数における値が0のビットに対応する部分
積は全ビットの値が0になるので、そのような部分積を
生成する回路や、加算する回路は常に一定の信号状態に
なる。そこで、従来の自動設計装置では、一旦、乗数お
よび被乗数が変数である乗算回路と、定数を発生させる
回路とを生成した後、前述のように論理素子レベルでの
回路の最適化によって、例えば常に信号レベルが一定に
なる論理素子の削除等を行うようになっていた。
【0014】
【発明が解決しようとする課題】しかしながら、従来の
自動設計装置においては、論理素子レベルでの回路の最
適化は、例えばあらかじめ設定された所定のパターンに
合致する回路部分だけが、より論理素子や論理段数の少
ない等価な回路に置換されることにより行われるため、
乗数または被乗数が定数である場合にこのような最適化
を行っても、必ずしも回路全体の論理素子数等が最少に
なるような回路を生成することはできないという問題点
を有していた。特に、部分積を加算するために2入力加
算器を2分木状に接続する場合、全ビットの値が0にな
る部分積の加算回路に関連する部分を省略すると、通
常、2分木のバランスが崩れるので、部分的な回路の置
換によって論理素子数や論理段数を最少にすることなど
が困難である。
自動設計装置においては、論理素子レベルでの回路の最
適化は、例えばあらかじめ設定された所定のパターンに
合致する回路部分だけが、より論理素子や論理段数の少
ない等価な回路に置換されることにより行われるため、
乗数または被乗数が定数である場合にこのような最適化
を行っても、必ずしも回路全体の論理素子数等が最少に
なるような回路を生成することはできないという問題点
を有していた。特に、部分積を加算するために2入力加
算器を2分木状に接続する場合、全ビットの値が0にな
る部分積の加算回路に関連する部分を省略すると、通
常、2分木のバランスが崩れるので、部分的な回路の置
換によって論理素子数や論理段数を最少にすることなど
が困難である。
【0015】本発明は上記の点に鑑み、乗数または被乗
数が定数である乗算を行う乗算器や乗算器を含む論理回
路を示す情報を生成する場合に、論理素子数や論理段数
が少ない回路を示す情報を生成できる論理回路の自動設
計方法およびその装置の提供を目的としている。
数が定数である乗算を行う乗算器や乗算器を含む論理回
路を示す情報を生成する場合に、論理素子数や論理段数
が少ない回路を示す情報を生成できる論理回路の自動設
計方法およびその装置の提供を目的としている。
【0016】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、複数ビット幅の定数である乗数と、複数
ビット幅の被乗数との積を複数ビット幅の信号として出
力する論理回路を示す情報を生成する論理回路の自動設
計方法であって、乗数の値を入力し記憶装置に格納する
入力ステップと、記憶装置内に格納されている前記乗数
の情報を参照して前記乗数における値が1であるビット
を検出するビット数検出ステップと、検出結果に応じ
て、値が1であるビットに関してのみ、被乗数との部分
積を求める部分積演算回路を示す情報を生成する部分積
演算回路情報生成ステップと、乗数における値が1であ
るビットが4ビット以上ある場合に、値が1であるビッ
トをその数が略等しくなるようにグループ分けするグル
ープ分けステップと、部分積演算回路によって求められ
る部分積の部分積和を各グループ毎に加算する部分積和
演算回路を示す情報を生成する部分積和演算回路情報生
成ステップと、を演算処理装置に行わせることを特徴と
している。
め、本発明は、複数ビット幅の定数である乗数と、複数
ビット幅の被乗数との積を複数ビット幅の信号として出
力する論理回路を示す情報を生成する論理回路の自動設
計方法であって、乗数の値を入力し記憶装置に格納する
入力ステップと、記憶装置内に格納されている前記乗数
の情報を参照して前記乗数における値が1であるビット
を検出するビット数検出ステップと、検出結果に応じ
て、値が1であるビットに関してのみ、被乗数との部分
積を求める部分積演算回路を示す情報を生成する部分積
演算回路情報生成ステップと、乗数における値が1であ
るビットが4ビット以上ある場合に、値が1であるビッ
トをその数が略等しくなるようにグループ分けするグル
ープ分けステップと、部分積演算回路によって求められ
る部分積の部分積和を各グループ毎に加算する部分積和
演算回路を示す情報を生成する部分積和演算回路情報生
成ステップと、を演算処理装置に行わせることを特徴と
している。
【0017】
【0018】ここでグループ分けステップ、および部分
積和演算回路情報生成ステップでは、上記グループ内
に、乗数における値が1であるビットが4ビット以上あ
る場合に、グループ内でさらにグループ分け、および部
分積和演算回路情報の生成が再帰的に行われることを特
徴としている。また、定数である乗数と、被乗数との積
を求める論理回路を示す情報を生成する論理回路の自動
設計装置であって、乗数の値を入力する入力手段と、乗
数における値が1であるビットを検出する検出手段と、
検出結果に応じて、値が1であるビットに関してのみ、
被乗数との部分積を求める部分積演算回路を示す情報を
生成する部分積演算回路情報生成手段と、乗数における
値が1であるビットの数を検出するビット数検出手段
と、ビット数検出手段によって検出されたビット数が4
以上である場合に、値が1であるビットをその数が略等
しくなるようにグループ分けするグループ分け手段と、
部分積演算回路によって求められる部分積の部分積和を
求める部分積和演算回路を示す情報を各グル−プ毎に生
成する部分積和演算回路情報生成手段とを有することを
特徴としている。
積和演算回路情報生成ステップでは、上記グループ内
に、乗数における値が1であるビットが4ビット以上あ
る場合に、グループ内でさらにグループ分け、および部
分積和演算回路情報の生成が再帰的に行われることを特
徴としている。また、定数である乗数と、被乗数との積
を求める論理回路を示す情報を生成する論理回路の自動
設計装置であって、乗数の値を入力する入力手段と、乗
数における値が1であるビットを検出する検出手段と、
検出結果に応じて、値が1であるビットに関してのみ、
被乗数との部分積を求める部分積演算回路を示す情報を
生成する部分積演算回路情報生成手段と、乗数における
値が1であるビットの数を検出するビット数検出手段
と、ビット数検出手段によって検出されたビット数が4
以上である場合に、値が1であるビットをその数が略等
しくなるようにグループ分けするグループ分け手段と、
部分積演算回路によって求められる部分積の部分積和を
求める部分積和演算回路を示す情報を各グル−プ毎に生
成する部分積和演算回路情報生成手段とを有することを
特徴としている。
【0019】
【0020】
【0021】
【0022】
【作用】上記の構成により、乗数における値が1である
ビットに関してのみ、被乗数との部分積を求める部分積
演算回路、および部分積和を求める部分積和演算回路を
示す情報が生成される。また、値が1であるビットに偏
りがあっても、その数が略等しくなるようにグループ分
けされて、部分積和を加算する部分積和演算回路を示す
情報が生成される。
ビットに関してのみ、被乗数との部分積を求める部分積
演算回路、および部分積和を求める部分積和演算回路を
示す情報が生成される。また、値が1であるビットに偏
りがあっても、その数が略等しくなるようにグループ分
けされて、部分積和を加算する部分積和演算回路を示す
情報が生成される。
【0023】また、乗数における値が1であるビットの
数が、乗数の全ビット数の略1/2以上である場合に
は、乗数の論理否定数を求める論理否定回路を示す情報
が生成され、論理否定数を乗数として、すなわち、値が
1であるビットの少ない乗数を対象として乗算を行う回
路を示す情報が生成される。
数が、乗数の全ビット数の略1/2以上である場合に
は、乗数の論理否定数を求める論理否定回路を示す情報
が生成され、論理否定数を乗数として、すなわち、値が
1であるビットの少ない乗数を対象として乗算を行う回
路を示す情報が生成される。
【0024】
【実施例】以下、本発明の実施例を図面に基づいて説明
する。 (実施例1)図1は論理回路の自動設計システムのハー
ドウェア構成の一例を示すブロック図である。
する。 (実施例1)図1は論理回路の自動設計システムのハー
ドウェア構成の一例を示すブロック図である。
【0025】同図において、入力装置11は、自動設計
システムに設計させようとする回路についての機能記述
情報などを入力するものである。この入力装置11とし
ては、キーボードや、マウス、ライトペン、カードリー
ダー、スケマティックエントリーシステムなどが用いら
れる。また、直接オペレータの操作によって入力するも
のに限らず、あらかじめ上記のような装置によって入力
された情報をファイルとして記憶する磁気ディスク装置
や、他の装置から送られる情報を受信するネットワーク
装置などを用いることもできる。
システムに設計させようとする回路についての機能記述
情報などを入力するものである。この入力装置11とし
ては、キーボードや、マウス、ライトペン、カードリー
ダー、スケマティックエントリーシステムなどが用いら
れる。また、直接オペレータの操作によって入力するも
のに限らず、あらかじめ上記のような装置によって入力
された情報をファイルとして記憶する磁気ディスク装置
や、他の装置から送られる情報を受信するネットワーク
装置などを用いることもできる。
【0026】中央処理装置12は、後述する種々の処理
を実行することにより、論理合成や回路最適化処理など
の回路設計処理を行うものである。出力装置13は、中
央処理装置12の設計処理結果である回路情報や、処理
に関する各種情報などを出力するものである。この出力
装置13としては、グラフィックディスプレイや、キャ
ラクタディスプレイ、プリンタ、プロッタなどが用いら
れる。また、入力装置11と同様に、磁気ディスク装置
やネットワーク装置なども用いることができる。
を実行することにより、論理合成や回路最適化処理など
の回路設計処理を行うものである。出力装置13は、中
央処理装置12の設計処理結果である回路情報や、処理
に関する各種情報などを出力するものである。この出力
装置13としては、グラフィックディスプレイや、キャ
ラクタディスプレイ、プリンタ、プロッタなどが用いら
れる。また、入力装置11と同様に、磁気ディスク装置
やネットワーク装置なども用いることができる。
【0027】記憶装置14は、例えば図2に示すよう
に、設計処理記憶部21、素子ライブラリ記憶部22、
および回路データ記憶部23を有し、入力装置11から
入力された情報や、回路設計処理に関するプログラムや
データなどを記憶するものである。より詳しくは、例え
ば、設計処理記憶部21には、前記中央処理装置12が
設計処理を実行するための種々の処理プログラムや、そ
れらの処理で適用される変換規則情報などが格納され
る。
に、設計処理記憶部21、素子ライブラリ記憶部22、
および回路データ記憶部23を有し、入力装置11から
入力された情報や、回路設計処理に関するプログラムや
データなどを記憶するものである。より詳しくは、例え
ば、設計処理記憶部21には、前記中央処理装置12が
設計処理を実行するための種々の処理プログラムや、そ
れらの処理で適用される変換規則情報などが格納され
る。
【0028】また、素子ライブラリ記憶部22には、機
能素子、論理素子、および実装素子などの機能や、面
積、遅延時間、駆動力等を示す情報が素子ライブラリと
して格納される。回路データ記憶部23には、入力装置
11から入力される機能記述情報や、回路設計処理によ
って生成される機能回路情報、論理回路情報、および実
装回路情報などが格納される。
能素子、論理素子、および実装素子などの機能や、面
積、遅延時間、駆動力等を示す情報が素子ライブラリと
して格納される。回路データ記憶部23には、入力装置
11から入力される機能記述情報や、回路設計処理によ
って生成される機能回路情報、論理回路情報、および実
装回路情報などが格納される。
【0029】ここで、上記機能記述情報は、主として、
回路に要求される機能がハードウェア記述言語等により
表された情報である。また、機能回路情報は、主とし
て、機能のみが定義された仮想の機能素子から成る回路
を内部表現形式で表す情報である。論理回路情報は、製
造プロセスや設計手法などに殆ど依存しない論理レベル
の、実際に存在する論理素子から成る回路を示す情報で
ある。また、実装回路情報は、製造プロセスや設計手法
などに密に依存し、特定のテクノロジーで実装される実
装素子(例えば、CMOS型トランジスタによるスタン
ダードセルや、ゲートアレイのライブラリ中のセル、あ
るいはTTL、ECLなどの製造プロセスに依存する素
子)が割り付けられた回路を示す情報である。
回路に要求される機能がハードウェア記述言語等により
表された情報である。また、機能回路情報は、主とし
て、機能のみが定義された仮想の機能素子から成る回路
を内部表現形式で表す情報である。論理回路情報は、製
造プロセスや設計手法などに殆ど依存しない論理レベル
の、実際に存在する論理素子から成る回路を示す情報で
ある。また、実装回路情報は、製造プロセスや設計手法
などに密に依存し、特定のテクノロジーで実装される実
装素子(例えば、CMOS型トランジスタによるスタン
ダードセルや、ゲートアレイのライブラリ中のセル、あ
るいはTTL、ECLなどの製造プロセスに依存する素
子)が割り付けられた回路を示す情報である。
【0030】上記機能素子の一例を(表2)に示す。例
えば、複数ビットの加算器等は、複数ビット幅の2数を
加算等する機能素子を表す。コンパレータは、複数ビッ
ト幅の2数を比較する機能素子を表す。複数ビットのa
ndは、複数ビット幅の2つの信号の各ビットごとの論
理積を求める機能素子を表す。また、複数ビットのin
vは、複数ビット幅の信号の各ビットごとの論理否定を
求める機能素子を表す。
えば、複数ビットの加算器等は、複数ビット幅の2数を
加算等する機能素子を表す。コンパレータは、複数ビッ
ト幅の2数を比較する機能素子を表す。複数ビットのa
ndは、複数ビット幅の2つの信号の各ビットごとの論
理積を求める機能素子を表す。また、複数ビットのin
vは、複数ビット幅の信号の各ビットごとの論理否定を
求める機能素子を表す。
【0031】また、リッパ、およびミキサは、変換処理
の過程において、複数ビットの信号を便宜上まとめて扱
ったり、分割したりすることを示す機能素子で、最終的
に実装素子から成る回路に変換され、全ての信号が1ビ
ットの信号ごとに扱われる際には、削除される機能素子
である。一般に、これらの機能素子に直接対応する、実
装素子から成る回路は存在せず、一旦それらの機能を実
現する論理素子から成る回路に展開された後に、実装素
子から成る回路に置き換えられる。
の過程において、複数ビットの信号を便宜上まとめて扱
ったり、分割したりすることを示す機能素子で、最終的
に実装素子から成る回路に変換され、全ての信号が1ビ
ットの信号ごとに扱われる際には、削除される機能素子
である。一般に、これらの機能素子に直接対応する、実
装素子から成る回路は存在せず、一旦それらの機能を実
現する論理素子から成る回路に展開された後に、実装素
子から成る回路に置き換えられる。
【0032】
【表2】
【0033】また、論理素子の一例を(表3)に示す。
表3で、例えば、1ビット同士の加算器は、ビット幅が
1ビットである2つの信号を加算する素子を表す。ま
た、1ビットのandは、ビット幅が1ビットである2
つ以上の信号の論理積を求める論理素子を表す。これら
の論理素子に対応する、実装素子から成る回路は、あら
かじめ定められており、設計処理の最終段階において置
き換えが行われる。
表3で、例えば、1ビット同士の加算器は、ビット幅が
1ビットである2つの信号を加算する素子を表す。ま
た、1ビットのandは、ビット幅が1ビットである2
つ以上の信号の論理積を求める論理素子を表す。これら
の論理素子に対応する、実装素子から成る回路は、あら
かじめ定められており、設計処理の最終段階において置
き換えが行われる。
【0034】
【表3】
【0035】次に、回路データ記憶部23に格納される
機能記述情報や、機能回路情報の具体例について説明す
る。これらの情報は、例えばテキストデータとして格納
される。例えば図3(a)に示すような1ビット2入力
のandゲートと1ビット3入力の加算器とから成る回
路は、図3(b)に示すような機能記述情報として記述
される。また、この機能記述情報は、設計処理によっ
て、例えば図3(c)に示すような機能回路情報、また
は論理回路情報に変換される。なお、このように機能記
述情報が論理素子から構成される回路に直接対応する場
合には、機能回路情報と論理回路情報とは特に区別がな
い場合がある。
機能記述情報や、機能回路情報の具体例について説明す
る。これらの情報は、例えばテキストデータとして格納
される。例えば図3(a)に示すような1ビット2入力
のandゲートと1ビット3入力の加算器とから成る回
路は、図3(b)に示すような機能記述情報として記述
される。また、この機能記述情報は、設計処理によっ
て、例えば図3(c)に示すような機能回路情報、また
は論理回路情報に変換される。なお、このように機能記
述情報が論理素子から構成される回路に直接対応する場
合には、機能回路情報と論理回路情報とは特に区別がな
い場合がある。
【0036】この例では、機能回路情報は、個々の素子
を識別するための識別名31、および属性コード32と
属性値33との複数の対を含んでいる。各対の属性コー
ド32と属性値33とは“::”で対応づけられ、各対
は“;”で区切られ、識別名31は、“:::”によっ
て他のデータと区別されている。属性コード32として
は、“a_kind_of”、“input”、“ou
tput”等があり、それぞれ、対応する属性値33
が、素子の種類、入力信号、出力信号に関するものであ
ることを表している。
を識別するための識別名31、および属性コード32と
属性値33との複数の対を含んでいる。各対の属性コー
ド32と属性値33とは“::”で対応づけられ、各対
は“;”で区切られ、識別名31は、“:::”によっ
て他のデータと区別されている。属性コード32として
は、“a_kind_of”、“input”、“ou
tput”等があり、それぞれ、対応する属性値33
が、素子の種類、入力信号、出力信号に関するものであ
ることを表している。
【0037】すなわち、gate01の素子はadde
r(加算器)であり、その入力信号はsig1,sig
2,sig3、出力信号はsig4,sig5である一
方、gate02の素子はandであり、その入力信号
はsig6,sig7、出力信号はsig3であること
が表されている。また、gate01とgate02と
は信号sig3によって接続されていることが表されて
いる。
r(加算器)であり、その入力信号はsig1,sig
2,sig3、出力信号はsig4,sig5である一
方、gate02の素子はandであり、その入力信号
はsig6,sig7、出力信号はsig3であること
が表されている。また、gate01とgate02と
は信号sig3によって接続されていることが表されて
いる。
【0038】また、同様に、図4(a)に示すような、
機能素子である乗算器51と、値が130(16進表記
で82h)である8ビット幅の定数の乗数が入力される
信号線52と、8ビット幅の被乗数aが入力される信号
線53と、16ビット幅の乗算結果bが出力される信号
線54とから構成される回路は、図4(b)に示すよう
な機能記述情報として記述され、図4(c)に示すよう
な機能回路情報に変換される。なお、ここで、乗数、被
乗数の区別は変換処理における便宜上のものである。
機能素子である乗算器51と、値が130(16進表記
で82h)である8ビット幅の定数の乗数が入力される
信号線52と、8ビット幅の被乗数aが入力される信号
線53と、16ビット幅の乗算結果bが出力される信号
線54とから構成される回路は、図4(b)に示すよう
な機能記述情報として記述され、図4(c)に示すよう
な機能回路情報に変換される。なお、ここで、乗数、被
乗数の区別は変換処理における便宜上のものである。
【0039】図4(b)の機能記述情報では、被乗数a
は、0ビットから7ビットまでの8ビット幅の信号であ
り、変数bは0ビットから15ビットまでの16ビット
幅の信号であり、この変数bの値は、被乗数aと、値が
130の8ビット幅の信号で表わされる乗数130との
積であることが示されている。また、図4(c)の機能
回路情報では、1行目で、機能素子の識別名がgate
1であり、その機能素子がmultiplier(乗算
器)であることが示され、2、4行目の記述では、記号
i1で示される信号は入力信号aで、ビット幅が8ビッ
トであることが示され、3、5行目の記述では、記号i
2で示される信号は入力信号で、ビット幅が8ビットで
値が130の定数であることが示され、6行目の記述で
は、記号oで示される信号は出力信号bで、ビット幅が
16ビットであることが示されている。
は、0ビットから7ビットまでの8ビット幅の信号であ
り、変数bは0ビットから15ビットまでの16ビット
幅の信号であり、この変数bの値は、被乗数aと、値が
130の8ビット幅の信号で表わされる乗数130との
積であることが示されている。また、図4(c)の機能
回路情報では、1行目で、機能素子の識別名がgate
1であり、その機能素子がmultiplier(乗算
器)であることが示され、2、4行目の記述では、記号
i1で示される信号は入力信号aで、ビット幅が8ビッ
トであることが示され、3、5行目の記述では、記号i
2で示される信号は入力信号で、ビット幅が8ビットで
値が130の定数であることが示され、6行目の記述で
は、記号oで示される信号は出力信号bで、ビット幅が
16ビットであることが示されている。
【0040】なお、以下の説明においては、簡単のため
に、情報の種類における機能記述情報、機能回路情報、
または論理回路情報の区別に関らず、図3(a)や図4
(a)のような模式図によって情報の内容を表す。ま
た、混同しない範囲で必要に応じて、乗数または被乗数
等の語は、これらの値、若しくは乗数または被乗数等を
表す信号を示す意味でも用い、回路の語は回路を示す情
報の意味でも用いる。
に、情報の種類における機能記述情報、機能回路情報、
または論理回路情報の区別に関らず、図3(a)や図4
(a)のような模式図によって情報の内容を表す。ま
た、混同しない範囲で必要に応じて、乗数または被乗数
等の語は、これらの値、若しくは乗数または被乗数等を
表す信号を示す意味でも用い、回路の語は回路を示す情
報の意味でも用いる。
【0041】また、以下の説明では、次のような表記を
用いる。数Xの最下位ビットから数えてaビット目から
bビット目(但しa>b)から成る(a−b+1)ビッ
ト幅の数をX(a:b)と表記する。また、数Xのaビ
ット目の値をX(a)と表す。さらに、関数を以下のよ
うに定義する。
用いる。数Xの最下位ビットから数えてaビット目から
bビット目(但しa>b)から成る(a−b+1)ビッ
ト幅の数をX(a:b)と表記する。また、数Xのaビ
ット目の値をX(a)と表す。さらに、関数を以下のよ
うに定義する。
【0042】kビット幅で表現された信号Yについて、
値が1であるビットの数をposibits(Y)、値
が0であるビットの数をnegabits(Y)と定義
する。また、最下位ビットから数えて、値が1である1
のビットの数がP個(但し、P<k)となるビットまで
のビット数をeffbitwidth(Y,P)と定義
する。また、これらの関数の値を求める処理は容易に実
現できるので、詳細な説明は省略する。
値が1であるビットの数をposibits(Y)、値
が0であるビットの数をnegabits(Y)と定義
する。また、最下位ビットから数えて、値が1である1
のビットの数がP個(但し、P<k)となるビットまで
のビット数をeffbitwidth(Y,P)と定義
する。また、これらの関数の値を求める処理は容易に実
現できるので、詳細な説明は省略する。
【0043】次に、自動設計システムで行われる設計処
理について説明する。図5は設計処理のメインルーチン
を示すフローチャートである。ステップ41は、回路の
機能設計者が機能仕様に基づいて作成した機能記述情報
を入力装置11から入力し、回路データ記憶部23に格
納する処理である。なお、機能記述情報に限らず、例え
ば比較的簡単な回路部分についての機能回路情報や論理
回路情報などの入力も受け付けるようにしてもよい。
理について説明する。図5は設計処理のメインルーチン
を示すフローチャートである。ステップ41は、回路の
機能設計者が機能仕様に基づいて作成した機能記述情報
を入力装置11から入力し、回路データ記憶部23に格
納する処理である。なお、機能記述情報に限らず、例え
ば比較的簡単な回路部分についての機能回路情報や論理
回路情報などの入力も受け付けるようにしてもよい。
【0044】ステップ42は、ステップ41で入力され
た機能記述情報を解釈し、機能素子から構成され、機能
記述情報で示された機能を有する回路を内部表現形式で
表した機能回路情報を生成して回路データ記憶部23に
格納する処理である。ステップ43は、機能回路情報に
含まれる全ての機能素子を論理素子に変換し、論理回路
情報として回路データ記憶部23に格納する処理であ
る。また、乗算器を含む回路に関して、機能素子レベル
での回路の最適化も行われる。このステップ43の詳細
な処理内容については後述する。
た機能記述情報を解釈し、機能素子から構成され、機能
記述情報で示された機能を有する回路を内部表現形式で
表した機能回路情報を生成して回路データ記憶部23に
格納する処理である。ステップ43は、機能回路情報に
含まれる全ての機能素子を論理素子に変換し、論理回路
情報として回路データ記憶部23に格納する処理であ
る。また、乗算器を含む回路に関して、機能素子レベル
での回路の最適化も行われる。このステップ43の詳細
な処理内容については後述する。
【0045】ステップ44は、論理回路情報に含まれる
全ての論理素子を、所定の変換規則情報に基づく素子変
換処理によって実装素子に割り付け、実装回路情報とし
て回路データ記憶部23に格納する処理である。また、
このステップで44では、論理素子を実装素子に割り付
ける過程で、論理素子レベルでの回路の最適化も行われ
る。
全ての論理素子を、所定の変換規則情報に基づく素子変
換処理によって実装素子に割り付け、実装回路情報とし
て回路データ記憶部23に格納する処理である。また、
このステップで44では、論理素子を実装素子に割り付
ける過程で、論理素子レベルでの回路の最適化も行われ
る。
【0046】ステップ45は、実装回路情報等に基づい
て、回路図やネットリストを生成し、出力装置13に出
力する処理である。ここで、上記ネットリストは、例え
ば実装素子から構成される回路における実装素子の接続
関係を示す情報である。なお、上記ステップ42、およ
びステップ44で行われる処理については、それぞれ、
特開平3−15984号公報、または米国特許USP5
043914号公報に示されているものと同様なため、
詳細な説明を省略する。
て、回路図やネットリストを生成し、出力装置13に出
力する処理である。ここで、上記ネットリストは、例え
ば実装素子から構成される回路における実装素子の接続
関係を示す情報である。なお、上記ステップ42、およ
びステップ44で行われる処理については、それぞれ、
特開平3−15984号公報、または米国特許USP5
043914号公報に示されているものと同様なため、
詳細な説明を省略する。
【0047】上記ステップ43では、詳しくは、図6に
示すような処理が行われる。ステップ81では、機能回
路情報に含まれる機能素子を1つ選択する。ステップ8
2、およびステップ83では、それぞれ、選択された機
能素子が加算器であるか、または乗算器であるかを判定
し、加算器であればステップ84、乗算器であればステ
ップ85、また、加算器でも乗算器でもなければステッ
プ86に移行する。
示すような処理が行われる。ステップ81では、機能回
路情報に含まれる機能素子を1つ選択する。ステップ8
2、およびステップ83では、それぞれ、選択された機
能素子が加算器であるか、または乗算器であるかを判定
し、加算器であればステップ84、乗算器であればステ
ップ85、また、加算器でも乗算器でもなければステッ
プ86に移行する。
【0048】それぞれのステップ84〜86では、選択
された機能素子を他の機能素子、および/または論理素
子によって構成された同一の機能を有する回路の回路情
報を生成した後、ステップ87に移行する。ステップ8
7では、回路中に機能素子が含まれているかどうかを判
定し、含まれていれば、ステップ81に戻って同様の処
理を繰り返す一方、含まれていなければ、すなわち論理
素子だけから構成される回路に変換されていれば、メイ
ンルーチンにリターンする。
された機能素子を他の機能素子、および/または論理素
子によって構成された同一の機能を有する回路の回路情
報を生成した後、ステップ87に移行する。ステップ8
7では、回路中に機能素子が含まれているかどうかを判
定し、含まれていれば、ステップ81に戻って同様の処
理を繰り返す一方、含まれていなければ、すなわち論理
素子だけから構成される回路に変換されていれば、メイ
ンルーチンにリターンする。
【0049】ここで、上記ステップ84〜86では、必
ずしも1回の処理で論理素子だけから構成される回路に
変換されずに、一旦、他の機能素子を含む回路に変換さ
れることがある。この場合には、ステップ87で機能素
子が含まれていると判定され、同様の変換処理が再帰的
に繰り返して行われることにより、最終的に論理回路だ
けによって構成された回路に変換される。具体的には、
例えば複数ビットの加算器は、ステップ84によって、
よりビット数の少ない加算器(機能素子)と、1ビット
の加算器(論理素子)とへの変換が繰り返されることに
より、1ビットの加算器だけから成る回路に変換され
る。また、減算器や除算器等は、ステップ86で加算器
等の機能素子と論理素子とから構成される回路に変換さ
れた後、加算器等がステップ84で1ビット同士の加算
器等に変換される。このように再帰的に変換処理を行う
ことにより、各処理の簡素化を図ることが容易になる。
ずしも1回の処理で論理素子だけから構成される回路に
変換されずに、一旦、他の機能素子を含む回路に変換さ
れることがある。この場合には、ステップ87で機能素
子が含まれていると判定され、同様の変換処理が再帰的
に繰り返して行われることにより、最終的に論理回路だ
けによって構成された回路に変換される。具体的には、
例えば複数ビットの加算器は、ステップ84によって、
よりビット数の少ない加算器(機能素子)と、1ビット
の加算器(論理素子)とへの変換が繰り返されることに
より、1ビットの加算器だけから成る回路に変換され
る。また、減算器や除算器等は、ステップ86で加算器
等の機能素子と論理素子とから構成される回路に変換さ
れた後、加算器等がステップ84で1ビット同士の加算
器等に変換される。このように再帰的に変換処理を行う
ことにより、各処理の簡素化を図ることが容易になる。
【0050】上記ステップ83で「yes」と判定さ
れ、ステップ85で変換が行われる乗算器は、例えば図
7(a)〜(d)に示すような機能を有するものであ
る。各乗算器は、共に、mビット幅の信号で表わされた
乗数を、nビット幅の信号で表わされた被乗数に乗算
し、n+mビット幅の信号で表わされた積Pを出力する
機能を有する点で共通し、入力される乗数および被乗数
が、定数A、定数B、変数X、または変数Yの何れであ
るかが異なっている。ここで、簡単のために、定数Aは
正数として説明する。なお、定数Aが負数の場合、定数
Aを符号反転したA’についての乗算回路及びその乗算
結果を符号反転する回路の回路情報を生成することによ
り容易に対応可能である。また、変数Xは正負の値をと
り得るものとして説明するが、正数に限る場合には、後
述するビット幅合わせのための符号拡張において、0拡
張を行うようにしてもよい。
れ、ステップ85で変換が行われる乗算器は、例えば図
7(a)〜(d)に示すような機能を有するものであ
る。各乗算器は、共に、mビット幅の信号で表わされた
乗数を、nビット幅の信号で表わされた被乗数に乗算
し、n+mビット幅の信号で表わされた積Pを出力する
機能を有する点で共通し、入力される乗数および被乗数
が、定数A、定数B、変数X、または変数Yの何れであ
るかが異なっている。ここで、簡単のために、定数Aは
正数として説明する。なお、定数Aが負数の場合、定数
Aを符号反転したA’についての乗算回路及びその乗算
結果を符号反転する回路の回路情報を生成することによ
り容易に対応可能である。また、変数Xは正負の値をと
り得るものとして説明するが、正数に限る場合には、後
述するビット幅合わせのための符号拡張において、0拡
張を行うようにしてもよい。
【0051】以下、上記ステップ85で行われる変換処
理を、図7に示す乗算器を例にあげ、図8のフローチャ
ートに基づいて詳細に説明する。この処理は、乗算器を
他の機能素子(乗算器、加算器など)や、論理素子から
構成される回路に変換する処理である。ステップ100
1では、乗数、および被乗数が何れも定数であるかどう
かを判定し、図7(a)に示すように何れも定数であれ
ば、ステップ1002に移行して積を算出し、その値を
2進数で表す信号を発生する回路に変換する。具体的に
は、被乗数X=4、乗数A=5の場合には、図9(a)
に示すように、値4×5=20(2進表現で‘1010
0’)を示す信号をP(4:0)として出力し、値0を
示す信号をP(n+m−1:5)として出力する回路に
変換する。
理を、図7に示す乗算器を例にあげ、図8のフローチャ
ートに基づいて詳細に説明する。この処理は、乗算器を
他の機能素子(乗算器、加算器など)や、論理素子から
構成される回路に変換する処理である。ステップ100
1では、乗数、および被乗数が何れも定数であるかどう
かを判定し、図7(a)に示すように何れも定数であれ
ば、ステップ1002に移行して積を算出し、その値を
2進数で表す信号を発生する回路に変換する。具体的に
は、被乗数X=4、乗数A=5の場合には、図9(a)
に示すように、値4×5=20(2進表現で‘1010
0’)を示す信号をP(4:0)として出力し、値0を
示す信号をP(n+m−1:5)として出力する回路に
変換する。
【0052】また、ステップ1001で少なくとも何れ
か一方が変数であると判定されると、ステップ1003
に移行して被乗数が定数であるかどうかを判定し、被乗
数が定数であればステップ1004で乗数と被乗数とを
入れ換えてからステップ1005に移行する一方、被乗
数が定数でなければ、そのままステップ1005に移行
する。すなわち、図7(b)に示すような乗算器の場合
には、図7(c)に示すような乗算器に変換され、少な
くとも被乗数は常に変数になるようにする。
か一方が変数であると判定されると、ステップ1003
に移行して被乗数が定数であるかどうかを判定し、被乗
数が定数であればステップ1004で乗数と被乗数とを
入れ換えてからステップ1005に移行する一方、被乗
数が定数でなければ、そのままステップ1005に移行
する。すなわち、図7(b)に示すような乗算器の場合
には、図7(c)に示すような乗算器に変換され、少な
くとも被乗数は常に変数になるようにする。
【0053】ステップ1005、1007、1009で
は、乗数が特殊な定数、すなわち、値が0、1、または
2のべき乗数であるかどうかを判定し、0であれば、図
9(b)に示すように全ビットの値が0であることを示
す信号を出力する回路に変換する(ステップ100
6)。1であれば、図9(c)に示すように被乗数の値
を示す信号をそのままP(n−1:0)として出力する
とともに値がX(n−1)の信号をP(n+m−1:
n)として(符号拡張して)出力する回路に変換する
(ステップ1008)。また、2のべき乗数であれば、
例えば乗数が8(=23)である場合には、図9(d)
に示すように被乗数の値を示す信号をP(n+2:3)
として出力するとともに、値が0の信号をP(2:0)
として、また各ビットの値がX(n−1)の信号をP
(n+m−1:n+3)として(符号拡張して)出力す
る回路に変換する(ステップ1010)。なお、変数X
が正数に限定される場合には、前述のように上位ビット
を符号拡張せずに0拡張すればよい。
は、乗数が特殊な定数、すなわち、値が0、1、または
2のべき乗数であるかどうかを判定し、0であれば、図
9(b)に示すように全ビットの値が0であることを示
す信号を出力する回路に変換する(ステップ100
6)。1であれば、図9(c)に示すように被乗数の値
を示す信号をそのままP(n−1:0)として出力する
とともに値がX(n−1)の信号をP(n+m−1:
n)として(符号拡張して)出力する回路に変換する
(ステップ1008)。また、2のべき乗数であれば、
例えば乗数が8(=23)である場合には、図9(d)
に示すように被乗数の値を示す信号をP(n+2:3)
として出力するとともに、値が0の信号をP(2:0)
として、また各ビットの値がX(n−1)の信号をP
(n+m−1:n+3)として(符号拡張して)出力す
る回路に変換する(ステップ1010)。なお、変数X
が正数に限定される場合には、前述のように上位ビット
を符号拡張せずに0拡張すればよい。
【0054】ステップ1011では、乗数が1ビットで
あるか、または2ビット以上であるかどうかを判定し、
例えば図10(a)に示すように1ビットであれば、ス
テップ1012に移行して、図10(b)に示すような
AND回路132…135から成る回路に変換する処理
を行う。なお、このステップ1011で1ビットである
と判定されるのは、乗数が変数である場合に限られる。
なぜならば、1ビットの定数であれば上記ステップ10
05、1007で「yes」と判定されるからである。
一方、2ビット以上であると判定されるのは、乗数が変
数である場合と定数である場合とが含まれる。
あるか、または2ビット以上であるかどうかを判定し、
例えば図10(a)に示すように1ビットであれば、ス
テップ1012に移行して、図10(b)に示すような
AND回路132…135から成る回路に変換する処理
を行う。なお、このステップ1011で1ビットである
と判定されるのは、乗数が変数である場合に限られる。
なぜならば、1ビットの定数であれば上記ステップ10
05、1007で「yes」と判定されるからである。
一方、2ビット以上であると判定されるのは、乗数が変
数である場合と定数である場合とが含まれる。
【0055】ここで、上記ステップ1006、100
8、1010、1012で行われる回路の変換は、あら
かじめ設計処理記憶部21に記憶されている変換規則情
報に基づいて行われる。例えばステップ1012の変換
では、図10(c)に示す変換規則1が用いられ、図1
1に示すような処理により変換が行われる。まず、ステ
ップ71で、変換規則情報における「==>」の前に示
される条件節と、元の回路情報とを比較し、変換適用条
件を満たしていれば、信号線の名称などの対応付けを行
う。
8、1010、1012で行われる回路の変換は、あら
かじめ設計処理記憶部21に記憶されている変換規則情
報に基づいて行われる。例えばステップ1012の変換
では、図10(c)に示す変換規則1が用いられ、図1
1に示すような処理により変換が行われる。まず、ステ
ップ71で、変換規則情報における「==>」の前に示
される条件節と、元の回路情報とを比較し、変換適用条
件を満たしていれば、信号線の名称などの対応付けを行
う。
【0056】ステップ72では、元の機能素子である乗
算器を示す回路情報を回路データ記憶部23から削除す
る。ステップ73では、変換規則情報における「==
>」の後に示される結果節中の機能素子、または論理素
子を示す回路情報と、上記対応付けとに基づいて、変換
する回路を示す情報を生成し、回路データ記憶部23に
登録する。
算器を示す回路情報を回路データ記憶部23から削除す
る。ステップ73では、変換規則情報における「==
>」の後に示される結果節中の機能素子、または論理素
子を示す回路情報と、上記対応付けとに基づいて、変換
する回路を示す情報を生成し、回路データ記憶部23に
登録する。
【0057】ステップ74では、結果節中に未処理の機
能素子や論理素子が残っているかどうかを判定し、残っ
ていれば、上記ステップ73に戻る一方、残っていなけ
れば元の処理にリターンする。なお、上記変換規則1に
よって元の乗算器と等価な回路に変換できることの証明
については、他の変換規則についての証明とともに後に
示す。但し、このような変換規則情報に基づく具体的な
素子変換処理については、米国特許USP504391
4号公報に示されているので、詳細な説明は省略する。
また、変換規則情報は、実際には図10(c)に示すよ
うな内部表現形式で表されているが、以下の説明におい
ては、簡単のために原則として図10(a)(b)に示
すような模式図によって説明する。
能素子や論理素子が残っているかどうかを判定し、残っ
ていれば、上記ステップ73に戻る一方、残っていなけ
れば元の処理にリターンする。なお、上記変換規則1に
よって元の乗算器と等価な回路に変換できることの証明
については、他の変換規則についての証明とともに後に
示す。但し、このような変換規則情報に基づく具体的な
素子変換処理については、米国特許USP504391
4号公報に示されているので、詳細な説明は省略する。
また、変換規則情報は、実際には図10(c)に示すよ
うな内部表現形式で表されているが、以下の説明におい
ては、簡単のために原則として図10(a)(b)に示
すような模式図によって説明する。
【0058】前記ステップ1011で、乗数が2ビット
以上であると判定された場合には、ステップ1013に
移行して、他の機能素子(ビット幅のより小さい乗算器
や加算器等)および/または論理素子から成る複数ビッ
ト幅の乗算器に変換する処理を行う。図12は、上記ス
テップ1013で行われる詳細な処理を示すフローチャ
ートである。この処理では、概略、以下のようにして部
分積数、および部分積和を求める回路の論理段数を少な
く抑えるようになっている。
以上であると判定された場合には、ステップ1013に
移行して、他の機能素子(ビット幅のより小さい乗算器
や加算器等)および/または論理素子から成る複数ビッ
ト幅の乗算器に変換する処理を行う。図12は、上記ス
テップ1013で行われる詳細な処理を示すフローチャ
ートである。この処理では、概略、以下のようにして部
分積数、および部分積和を求める回路の論理段数を少な
く抑えるようになっている。
【0059】すなわち、乗数が定数である場合には、部
分積数を少なくするために、乗数、または乗数の全ビッ
トの論理否定をとった数における、値が1であるビット
に関してのみ部分積を求める回路に変換する。また、乗
数が定数である場合および変数である場合共に、部分積
和を求める回路の論理段数を少なくするために、加算器
が2分木状に接続される回路に変換する。
分積数を少なくするために、乗数、または乗数の全ビッ
トの論理否定をとった数における、値が1であるビット
に関してのみ部分積を求める回路に変換する。また、乗
数が定数である場合および変数である場合共に、部分積
和を求める回路の論理段数を少なくするために、加算器
が2分木状に接続される回路に変換する。
【0060】まず、ステップ141では、乗数が変数で
あるかどうかを判定し、変数であれば、変数同士の乗算
であるので、ステップ142に移行し、図13に示す変
換規則2を適用して乗数のビット幅が約1/2の2つの
乗算器を含む回路に変換する。上記変換規則2は、ビッ
ト幅がmの乗数Yをビット幅がnの被乗数Xに乗算して
積Pを出力する乗算器191を、乗数Yの下位Kビット
Y1、および上位m−KビットY2をそれぞれ被乗数X
に乗算して部分積P1、P2を求める乗算器192、1
93と、これらの部分積P1、P2を加算する回路とか
ら構成される回路に変換することを示すものである。但
し、上記加算を行う回路は、部分積P1、P2の重複す
るビット以上のビットについてだけ加算すればよいの
で、部分積P1の上位nビットをそれよりも下位のKビ
ットから分割するリッパ194と、これを符号拡張した
信号R1を出力するミキサ195と、この信号R1と部
分積P2とを加算する加算器196とから構成される。
あるかどうかを判定し、変数であれば、変数同士の乗算
であるので、ステップ142に移行し、図13に示す変
換規則2を適用して乗数のビット幅が約1/2の2つの
乗算器を含む回路に変換する。上記変換規則2は、ビッ
ト幅がmの乗数Yをビット幅がnの被乗数Xに乗算して
積Pを出力する乗算器191を、乗数Yの下位Kビット
Y1、および上位m−KビットY2をそれぞれ被乗数X
に乗算して部分積P1、P2を求める乗算器192、1
93と、これらの部分積P1、P2を加算する回路とか
ら構成される回路に変換することを示すものである。但
し、上記加算を行う回路は、部分積P1、P2の重複す
るビット以上のビットについてだけ加算すればよいの
で、部分積P1の上位nビットをそれよりも下位のKビ
ットから分割するリッパ194と、これを符号拡張した
信号R1を出力するミキサ195と、この信号R1と部
分積P2とを加算する加算器196とから構成される。
【0061】より詳しくは、上記乗算器192は、乗数
Yの下位KビットY1=Y(K−1:0)を、被乗数X
(n−1:0)に乗算し、部分積としてn+Kビット幅
の信号P1(n+K−1:0)を出力する回路である。
また、乗算器193は、乗数Yの上位m−KビットY2
=Y(m−1:K)を、被乗数X(n−1:0)に乗算
し、部分積としてn+m−Kビット幅の信号P2(n+
m−K−1:0)を出力する回路である。
Yの下位KビットY1=Y(K−1:0)を、被乗数X
(n−1:0)に乗算し、部分積としてn+Kビット幅
の信号P1(n+K−1:0)を出力する回路である。
また、乗算器193は、乗数Yの上位m−KビットY2
=Y(m−1:K)を、被乗数X(n−1:0)に乗算
し、部分積としてn+m−Kビット幅の信号P2(n+
m−K−1:0)を出力する回路である。
【0062】リッパ194は、上記信号P1(n+K−
1:0)を、その上位nビットの信号P1(n+K−
1:K)と下位Kビットの信号P1(K−1:0)とに
分割する回路である。後者の信号P1(K−1:0)
は、積Pの下位Kビットを示す信号P(K−1:0)と
して出力される。ミキサ195は、リッパ194から出
力される信号P1(n+K−1:K)の上位に、各ビッ
トの値がP1(n+k−1)であるm−Kビット幅の信
号を合成して(信号P1を符号拡張して)n+m−Kビ
ット幅の信号R1(n+m−K−1:0)を出力する回
路である。
1:0)を、その上位nビットの信号P1(n+K−
1:K)と下位Kビットの信号P1(K−1:0)とに
分割する回路である。後者の信号P1(K−1:0)
は、積Pの下位Kビットを示す信号P(K−1:0)と
して出力される。ミキサ195は、リッパ194から出
力される信号P1(n+K−1:K)の上位に、各ビッ
トの値がP1(n+k−1)であるm−Kビット幅の信
号を合成して(信号P1を符号拡張して)n+m−Kビ
ット幅の信号R1(n+m−K−1:0)を出力する回
路である。
【0063】加算器196は、上記信号P2(n+m−
K−1:0)と信号R1(n+m−K−1:0)とを加
算し、その和であるn+m−Kビット幅の信号R2(n
+m−K−1:0)を、積Pの上位n+m−Kビットを
示す信号P(n+m−1:K)として出力する回路であ
る。この変換規則2に基づいて変換された回路に含まれ
る乗算器192および/または乗算器193に入力され
る乗数のビット幅K、m−Kが2以上の場合(すなわち
変換後の乗算器も機能素子である場合)には、次のルー
プの処理でステップ142が実行される際に、さらにビ
ット幅の小さい乗算器を含む回路に変換される。また、
乗数のビット幅K、またはm−Kが1になった場合に
は、前記ステップ1012(図8)の処理でAND回路
(論理素子)から成る回路に変換される。
K−1:0)と信号R1(n+m−K−1:0)とを加
算し、その和であるn+m−Kビット幅の信号R2(n
+m−K−1:0)を、積Pの上位n+m−Kビットを
示す信号P(n+m−1:K)として出力する回路であ
る。この変換規則2に基づいて変換された回路に含まれ
る乗算器192および/または乗算器193に入力され
る乗数のビット幅K、m−Kが2以上の場合(すなわち
変換後の乗算器も機能素子である場合)には、次のルー
プの処理でステップ142が実行される際に、さらにビ
ット幅の小さい乗算器を含む回路に変換される。また、
乗数のビット幅K、またはm−Kが1になった場合に
は、前記ステップ1012(図8)の処理でAND回路
(論理素子)から成る回路に変換される。
【0064】ここで、上記Kの値は、m/2以上の最小
整数、またはm/2以下の最大整数、すなわち、Kとm
−Kとの差m−2Kの絶対値が最小になる整数に設定す
るか、若しくは、Kまたはm−Kがm/2以上の最小の
2のべき乗数となるように設定することにより、加算器
をバランスのよい2分木状に接続して部分積和を求める
回路を構成する場合の論理段数を小さく抑えることがで
きる。
整数、またはm/2以下の最大整数、すなわち、Kとm
−Kとの差m−2Kの絶対値が最小になる整数に設定す
るか、若しくは、Kまたはm−Kがm/2以上の最小の
2のべき乗数となるように設定することにより、加算器
をバランスのよい2分木状に接続して部分積和を求める
回路を構成する場合の論理段数を小さく抑えることがで
きる。
【0065】図14は、上記ステップ142の処理を行
う構成をその機能に着目して示す構成図である。入力手
段241は、元の機能素子である乗算器191を示す回
路情報を回路データ記憶部23から読み出し、乗算器1
91の入力がmビットの乗数Y、およびnビットの被乗
数Xであることを示す情報を乗数分割手段242に出力
する。また、乗算器191の出力がm+nビットの積P
であることを示す情報を分割演算回路生成手段244に
出力する。
う構成をその機能に着目して示す構成図である。入力手
段241は、元の機能素子である乗算器191を示す回
路情報を回路データ記憶部23から読み出し、乗算器1
91の入力がmビットの乗数Y、およびnビットの被乗
数Xであることを示す情報を乗数分割手段242に出力
する。また、乗算器191の出力がm+nビットの積P
であることを示す情報を分割演算回路生成手段244に
出力する。
【0066】乗数分割手段242は、まず、乗数Yを分
割するためのKの値を求め、乗数Yの下位Kビットの信
号Y1、被乗数X、および部分積P1を示す情報と、乗
数Yの上位m−Kビットの信号Y2、被乗数X、および
部分積P2を示す情報とを乗算モジュール生成手段24
3に出力する。また、部分積P1、P2をそれぞれ示す
情報を分割演算回路生成手段244に出力する。ここ
で、上記部分積の名称P1、P2は、図示しない割り付
け手段によって割り付けられる。
割するためのKの値を求め、乗数Yの下位Kビットの信
号Y1、被乗数X、および部分積P1を示す情報と、乗
数Yの上位m−Kビットの信号Y2、被乗数X、および
部分積P2を示す情報とを乗算モジュール生成手段24
3に出力する。また、部分積P1、P2をそれぞれ示す
情報を分割演算回路生成手段244に出力する。ここ
で、上記部分積の名称P1、P2は、図示しない割り付
け手段によって割り付けられる。
【0067】乗算モジュール生成手段243は、信号Y
1を被乗数Xに乗算して部分積P1を求める乗算器19
2、および信号Y2を被乗数Xに乗算して部分積P2を
求める乗算器193を示す情報を生成し、出力手段24
5に出力する。分割演算回路生成手段244は、部分積
P1、P2を示す情報と積Pを示す情報とに基づいて、
部分積P1の下位Kビットを積Pの下位Kビットとして
出力するとともに部分積P1の上位n−Kビットと部分
積P2との和を積Pの上位n+m−Kビットとして出力
するリッパ194、ミキサ195、および加算器196
を示す情報を出力手段245に出力する。
1を被乗数Xに乗算して部分積P1を求める乗算器19
2、および信号Y2を被乗数Xに乗算して部分積P2を
求める乗算器193を示す情報を生成し、出力手段24
5に出力する。分割演算回路生成手段244は、部分積
P1、P2を示す情報と積Pを示す情報とに基づいて、
部分積P1の下位Kビットを積Pの下位Kビットとして
出力するとともに部分積P1の上位n−Kビットと部分
積P2との和を積Pの上位n+m−Kビットとして出力
するリッパ194、ミキサ195、および加算器196
を示す情報を出力手段245に出力する。
【0068】出力手段245は、乗算モジュール生成手
段243、および分割演算回路生成手段244から出力
された変換後の回路を示す回路情報を回路データ記憶部
23に格納する。なお、変数同士を乗算する乗算器の場
合には、上記のように分割によるものに限らず、従来の
自動設計システムと同様に、ライブラリに登録された汎
用的な乗算器を割り付けたり、2ビットブースのリコー
ド方式を適用した回路に変換するようにしてもよい。
段243、および分割演算回路生成手段244から出力
された変換後の回路を示す回路情報を回路データ記憶部
23に格納する。なお、変数同士を乗算する乗算器の場
合には、上記のように分割によるものに限らず、従来の
自動設計システムと同様に、ライブラリに登録された汎
用的な乗算器を割り付けたり、2ビットブースのリコー
ド方式を適用した回路に変換するようにしてもよい。
【0069】前記ステップ141で、乗数が定数の乗数
Aであると判定された場合には、ステップ143に移行
して、次に乗数Aにおける値が1であるビットの数po
sibits(A)が2以下かどうかを判定し、2以下
であればステップ144に移行する。(なお、posi
bits(A)が1であれば、前記ステップ1008ま
たは1010で処理されるので、2以下と判定されるの
は2の場合だけである。)ここで、ステップ143で
は、mの値を判定するようにしてもよい。posibi
ts(A)が2であれば、被乗数Xをビット位置に応じ
てシフトした2つの値を加算する、すなわち値が1であ
るビットに関してのみ部分積を求める回路を構成するこ
とができる。そのような回路を1回の処理で生成するよ
うにしてもよいが、ここでは、再帰的な処理を利用して
個々の処理を簡単化するために、m−1ビットの乗算器
を有し、乗数Aを最上位の1ビットと下位m−1ビット
とに分割するとともに、被乗数Xと乗数Aの下位m−1
ビットとの積と、被乗数Xをシフトした値とを加算する
回路に変換する。ただし、乗数Aの最上位ビットが0で
あれば、積Pの最上位ビットを0にするだけでよいの
で、加算等のための回路は必要ない。
Aであると判定された場合には、ステップ143に移行
して、次に乗数Aにおける値が1であるビットの数po
sibits(A)が2以下かどうかを判定し、2以下
であればステップ144に移行する。(なお、posi
bits(A)が1であれば、前記ステップ1008ま
たは1010で処理されるので、2以下と判定されるの
は2の場合だけである。)ここで、ステップ143で
は、mの値を判定するようにしてもよい。posibi
ts(A)が2であれば、被乗数Xをビット位置に応じ
てシフトした2つの値を加算する、すなわち値が1であ
るビットに関してのみ部分積を求める回路を構成するこ
とができる。そのような回路を1回の処理で生成するよ
うにしてもよいが、ここでは、再帰的な処理を利用して
個々の処理を簡単化するために、m−1ビットの乗算器
を有し、乗数Aを最上位の1ビットと下位m−1ビット
とに分割するとともに、被乗数Xと乗数Aの下位m−1
ビットとの積と、被乗数Xをシフトした値とを加算する
回路に変換する。ただし、乗数Aの最上位ビットが0で
あれば、積Pの最上位ビットを0にするだけでよいの
で、加算等のための回路は必要ない。
【0070】そこで、ステップ144では、より詳しく
は図15に示すように、まず、ステップ161で乗数A
の最上位ビットの値が1であるかどうかを判定し、1で
ある場合にはステップ162に移行して、図16(a)
に示す変換規則3(a)を適用する一方、0である場合
にはステップ163に移行して、同図(b)に示す変換
規則3(b)を適用する。
は図15に示すように、まず、ステップ161で乗数A
の最上位ビットの値が1であるかどうかを判定し、1で
ある場合にはステップ162に移行して、図16(a)
に示す変換規則3(a)を適用する一方、0である場合
にはステップ163に移行して、同図(b)に示す変換
規則3(b)を適用する。
【0071】変換規則3(a)は、乗算器151を、乗
算器152と、リッパ153と、加算器154とから構
成される回路に変換することを示すものである。乗算器
152は、乗数Aの下位m−1ビットA3=A(m−
2:0)を被乗数X(n−1:0)に乗算してn+m−
1ビット幅の部分積P3(n+m−2:0)を求める。
算器152と、リッパ153と、加算器154とから構
成される回路に変換することを示すものである。乗算器
152は、乗数Aの下位m−1ビットA3=A(m−
2:0)を被乗数X(n−1:0)に乗算してn+m−
1ビット幅の部分積P3(n+m−2:0)を求める。
【0072】リッパ153は、部分積P3(n+m−
2:0)を、上位nビットP3(n+m−2:m−1)
と下位m−1ビットP3(m−2:0)とに分割する。
加算器154は、上記P3(n+m−2:m−1)と被
乗数X(n−1:0)(論理的には、部分積としての、
乗数Aの最上位ビットと被乗数X(n−1:0)との
積)とを加算する。
2:0)を、上位nビットP3(n+m−2:m−1)
と下位m−1ビットP3(m−2:0)とに分割する。
加算器154は、上記P3(n+m−2:m−1)と被
乗数X(n−1:0)(論理的には、部分積としての、
乗数Aの最上位ビットと被乗数X(n−1:0)との
積)とを加算する。
【0073】この処理が行われた場合には、上記乗算器
152についてのposibits(A3)の値は、1
になるので、次のループの処理における前記ステップ1
008、または1010(図8)の処理が行われる。こ
こで、上記変換規則3(a)は、例えば図17(a)に
示すような内部表現形式で設計処理記憶部21に格納さ
れている。同図において、「==>」の前に示される条
件節の「Gate」は、図16の乗算器151に対応し
ている。また、「==>」の後ろに示される結果節の
「Gate1」〜「Gate4」は、それぞれ乗算器1
52、リッパ153、または加算器154に対応してい
る。
152についてのposibits(A3)の値は、1
になるので、次のループの処理における前記ステップ1
008、または1010(図8)の処理が行われる。こ
こで、上記変換規則3(a)は、例えば図17(a)に
示すような内部表現形式で設計処理記憶部21に格納さ
れている。同図において、「==>」の前に示される条
件節の「Gate」は、図16の乗算器151に対応し
ている。また、「==>」の後ろに示される結果節の
「Gate1」〜「Gate4」は、それぞれ乗算器1
52、リッパ153、または加算器154に対応してい
る。
【0074】また、変換規則3(b)は、乗算器151
を、乗算器155を有し、乗数Aの下位m−1ビットA
3=A(m−2:0)を被乗数X(n−1:0)に乗算
し、得られたn+m−1ビット幅の部分積を積Pの下位
n+m−1ビットP(n+m−2:0)として出力する
とともに、値X(n−1)を積Pの最上位ビットP(n
+m−1)として出力する回路に変換することを示すも
のである。すなわち、この場合には、部分積の数を増加
させることなく、ビット幅の小さい乗算器を含む回路に
変換することができる。この処理が行われた場合には、
乗算器152についてのposibits(A3)の値
は、2のままになるので、次のループの処理で再度ステ
ップ144が実行され、ステップ163でさらにビット
幅の小さい乗算器を含む回路に変換されるか、またはス
テップ162で値が1のビットが1つである乗算器を含
む回路に変換される。
を、乗算器155を有し、乗数Aの下位m−1ビットA
3=A(m−2:0)を被乗数X(n−1:0)に乗算
し、得られたn+m−1ビット幅の部分積を積Pの下位
n+m−1ビットP(n+m−2:0)として出力する
とともに、値X(n−1)を積Pの最上位ビットP(n
+m−1)として出力する回路に変換することを示すも
のである。すなわち、この場合には、部分積の数を増加
させることなく、ビット幅の小さい乗算器を含む回路に
変換することができる。この処理が行われた場合には、
乗算器152についてのposibits(A3)の値
は、2のままになるので、次のループの処理で再度ステ
ップ144が実行され、ステップ163でさらにビット
幅の小さい乗算器を含む回路に変換されるか、またはス
テップ162で値が1のビットが1つである乗算器を含
む回路に変換される。
【0075】なお、上記のように乗数Aを最上位の1ビ
ットと下位m−1ビットとに分割するのに代えて、上位
m−1ビットと、最下位のビットとに分割するようにし
てもよい。図18は、上記ステップ144の処理を行う
構成をその機能に着目して示す構成図である。
ットと下位m−1ビットとに分割するのに代えて、上位
m−1ビットと、最下位のビットとに分割するようにし
てもよい。図18は、上記ステップ144の処理を行う
構成をその機能に着目して示す構成図である。
【0076】入力手段251は、元の機能素子である乗
算器151を示す回路情報を回路データ記憶部23から
読み出し、乗算器151の入力がmビットの乗数Aと、
nビットの被乗数Xであること、および出力がm+nビ
ットの積Pであることを示す情報を最上位ビット分離手
段252に出力する。最上位ビット分離手段252は、
乗数Aを最上位ビットA(m−1)と、それよりも下位
のビットA(m−2:0)とに分離し、最上位ビットA
(m−1)、被乗数X、および積Pを示す情報をビット
値判定手段253に出力するとともに、下位ビットA
(m−2:0)、および被乗数Xを示す情報を乗算モジ
ュール生成手段254に出力する。
算器151を示す回路情報を回路データ記憶部23から
読み出し、乗算器151の入力がmビットの乗数Aと、
nビットの被乗数Xであること、および出力がm+nビ
ットの積Pであることを示す情報を最上位ビット分離手
段252に出力する。最上位ビット分離手段252は、
乗数Aを最上位ビットA(m−1)と、それよりも下位
のビットA(m−2:0)とに分離し、最上位ビットA
(m−1)、被乗数X、および積Pを示す情報をビット
値判定手段253に出力するとともに、下位ビットA
(m−2:0)、および被乗数Xを示す情報を乗算モジ
ュール生成手段254に出力する。
【0077】ビット値判定手段253は、最上位ビット
A(m−1)の値が1であるか0であるかを判定し、判
定結果に応じて、下位ビットA(m−2:0)と被乗数
Xとの乗算結果が部分積P3、または積P(n+m−
2:0)であることを示す情報を乗算モジュール生成手
段254に出力する。さらに、最上位ビットA(m−
1)の値が1である場合には、被乗数X、積P、部分積
P3を示す情報を加算シフト演算回路生成手段255に
出力する一方、0である場合には、積Pの最上位ビット
P(n+m−1)を示す情報と被乗数Xの最上位ビット
X(n−1)の値を示す情報とを256に出力する。
A(m−1)の値が1であるか0であるかを判定し、判
定結果に応じて、下位ビットA(m−2:0)と被乗数
Xとの乗算結果が部分積P3、または積P(n+m−
2:0)であることを示す情報を乗算モジュール生成手
段254に出力する。さらに、最上位ビットA(m−
1)の値が1である場合には、被乗数X、積P、部分積
P3を示す情報を加算シフト演算回路生成手段255に
出力する一方、0である場合には、積Pの最上位ビット
P(n+m−1)を示す情報と被乗数Xの最上位ビット
X(n−1)の値を示す情報とを256に出力する。
【0078】乗算モジュール生成手段254は、乗数A
の下位ビットA(m−2:0)を被乗数Xに乗算して部
分積P3、または積P(n+m−2:0)として出力す
る乗算器152、155を示す情報を生成し、出力手段
257に出力する。加算シフト演算回路生成手段255
は、乗数Aの最上位ビットA(m−1)の値が1である
場合に、部分積P3を示す情報、被乗数Xを示す情報、
および積Pを示す情報に基づいて、部分積P3の下位m
ビットを積Pの下位m−1ビットP(m−2:0)とし
て出力するとともに部分積P3の上位nビットと被乗数
Xとの和を積Pの上位n+1ビットP(n+m−1:m
−1)として出力するリッパ153、および加算器15
4を示す情報を生成し、出力手段257に出力する。
の下位ビットA(m−2:0)を被乗数Xに乗算して部
分積P3、または積P(n+m−2:0)として出力す
る乗算器152、155を示す情報を生成し、出力手段
257に出力する。加算シフト演算回路生成手段255
は、乗数Aの最上位ビットA(m−1)の値が1である
場合に、部分積P3を示す情報、被乗数Xを示す情報、
および積Pを示す情報に基づいて、部分積P3の下位m
ビットを積Pの下位m−1ビットP(m−2:0)とし
て出力するとともに部分積P3の上位nビットと被乗数
Xとの和を積Pの上位n+1ビットP(n+m−1:m
−1)として出力するリッパ153、および加算器15
4を示す情報を生成し、出力手段257に出力する。
【0079】一方、回路生成手段256は、乗数Aの最
上位ビットの値が0である場合に、積Pの最上位ビット
P(n+m−1)として値X(n−1)を出力する回路
を示す情報を生成し、出力手段257に出力する。出力
手段257は、各手段254〜256から出力された変
換後の回路を示す回路情報を回路データ記憶部23に格
納する。
上位ビットの値が0である場合に、積Pの最上位ビット
P(n+m−1)として値X(n−1)を出力する回路
を示す情報を生成し、出力手段257に出力する。出力
手段257は、各手段254〜256から出力された変
換後の回路を示す回路情報を回路データ記憶部23に格
納する。
【0080】前記ステップ143で、定数の乗数Aにお
けるposibits(A)が2よりも大きいと判定さ
れた場合には、ステップ145に移行して、さらに、p
osibits(A)が、値が0であるビットの数ne
gabits(A)+1よりも大きいかどうかを判定す
る。ステップ145で、posibits(A)がne
gabits(A)+1よりも大きくないと判定された
場合には、ステップ146に移行して、乗数が変数であ
る場合の前記ステップ142と同様に、図13に示す変
換規則2を適用して、乗数Aを分割し、2つの乗算器を
含む回路に変換する。ただし、乗数が変数である場合に
比べて、乗数Aを分割するためのKの値として、乗数A
のビット幅mの約1/2ではなく、例えば、Lをpos
ibits(A)/2以上の最小整数としたときに、乗
数Aの下位ビットから数えて1のビットの数がL個とな
るような値effbitwidth(A,L)を用い
る。なお、上記Lの値は、前記Kの値と同様に、pos
ibits(A)/2以下の最大整数や、これに近い2
のべき乗数などでもよい。
けるposibits(A)が2よりも大きいと判定さ
れた場合には、ステップ145に移行して、さらに、p
osibits(A)が、値が0であるビットの数ne
gabits(A)+1よりも大きいかどうかを判定す
る。ステップ145で、posibits(A)がne
gabits(A)+1よりも大きくないと判定された
場合には、ステップ146に移行して、乗数が変数であ
る場合の前記ステップ142と同様に、図13に示す変
換規則2を適用して、乗数Aを分割し、2つの乗算器を
含む回路に変換する。ただし、乗数が変数である場合に
比べて、乗数Aを分割するためのKの値として、乗数A
のビット幅mの約1/2ではなく、例えば、Lをpos
ibits(A)/2以上の最小整数としたときに、乗
数Aの下位ビットから数えて1のビットの数がL個とな
るような値effbitwidth(A,L)を用い
る。なお、上記Lの値は、前記Kの値と同様に、pos
ibits(A)/2以下の最大整数や、これに近い2
のべき乗数などでもよい。
【0081】このステップ146の処理が1回または2
回以上行われることにより乗数Aが分割されてposi
bits(A)が2以下になった乗算器は、前述のよう
に図8のステップ1006等、または図12のステップ
144により、値が1のビットだけについて部分積を求
める回路が生成されるので、値が1であるビットの数が
ほぼ等しくなるように分割することにより、加算器をバ
ランスのよい2分木状に接続して部分積和を求める回路
を構成する場合の論理段数を小さく抑えることができ
る。
回以上行われることにより乗数Aが分割されてposi
bits(A)が2以下になった乗算器は、前述のよう
に図8のステップ1006等、または図12のステップ
144により、値が1のビットだけについて部分積を求
める回路が生成されるので、値が1であるビットの数が
ほぼ等しくなるように分割することにより、加算器をバ
ランスのよい2分木状に接続して部分積和を求める回路
を構成する場合の論理段数を小さく抑えることができ
る。
【0082】なお、posibits(A)が3の場合
には、乗数Aをどのように分割しても論理段数は2段に
なるので、ステップ143でposibits(A)が
3以下かどうかを判定し、3の場合にもステップ144
で乗数Aを最上位の1ビットと下位m−1ビットとに分
割するようにしてもよい。また、上記ステップ146の
処理を行う構成は、乗数Aを分割するためのKの値の決
めかたが異なる点を除いて、前記ステップ142に対応
する図14の構成と同じである。
には、乗数Aをどのように分割しても論理段数は2段に
なるので、ステップ143でposibits(A)が
3以下かどうかを判定し、3の場合にもステップ144
で乗数Aを最上位の1ビットと下位m−1ビットとに分
割するようにしてもよい。また、上記ステップ146の
処理を行う構成は、乗数Aを分割するためのKの値の決
めかたが異なる点を除いて、前記ステップ142に対応
する図14の構成と同じである。
【0083】一方、ステップ145で、posibit
s(A)がnegabits(A)+1よりも大きいと
判定された場合には、ステップ147に移行し、図19
に示す変換規則4を適用して、乗数Aの全ビットの論理
否定をとった値を乗数A0として、この乗数A0と被乗
数Xとの積を求める乗算器を含む回路に変換する。上記
変換後の回路に含まれる乗算器は、論理否定をとること
によってposibits(A)の値とnegabit
s(A)の値とが逆転するので、次のループの処理で、
例えばステップ145において「no」と判定され、ス
テップ146で乗数A0を分割する変換が行われる。し
たがって、値が1であるビットの数が元の乗数Aよりも
少なくなるとともに、値が1のビットだけについて部分
積を求める回路が生成されるので、部分積を求める回路
の数、および部分積和を求める回路の論理段数が少なく
抑えられる。
s(A)がnegabits(A)+1よりも大きいと
判定された場合には、ステップ147に移行し、図19
に示す変換規則4を適用して、乗数Aの全ビットの論理
否定をとった値を乗数A0として、この乗数A0と被乗
数Xとの積を求める乗算器を含む回路に変換する。上記
変換後の回路に含まれる乗算器は、論理否定をとること
によってposibits(A)の値とnegabit
s(A)の値とが逆転するので、次のループの処理で、
例えばステップ145において「no」と判定され、ス
テップ146で乗数A0を分割する変換が行われる。し
たがって、値が1であるビットの数が元の乗数Aよりも
少なくなるとともに、値が1のビットだけについて部分
積を求める回路が生成されるので、部分積を求める回路
の数、および部分積和を求める回路の論理段数が少なく
抑えられる。
【0084】ただし、乗数Aと被乗数Xとの積を求める
ために、乗数A0と被乗数Xとの積を補正する必要があ
る。上記変換規則4は、その補正のための回路も含む回
路に変換することを示すものである。すなわち、図19
において、171は、変換前の乗算器である。乗算器1
72は、上記乗数A0を被乗数Xに乗算し、n+mビッ
ト幅の積P0(=X・A0)を出力する。
ために、乗数A0と被乗数Xとの積を補正する必要があ
る。上記変換規則4は、その補正のための回路も含む回
路に変換することを示すものである。すなわち、図19
において、171は、変換前の乗算器である。乗算器1
72は、上記乗数A0を被乗数Xに乗算し、n+mビッ
ト幅の積P0(=X・A0)を出力する。
【0085】インバータ178は、積P0の全ビットの
論理否定をとり、n+mビット幅の信号を出力する。ミ
キサ173は、被乗数Xを上位nビット、値が0である
mビット幅の信号を下位mビットとして合成し、n+m
ビット幅の信号R2(=X・2m )を出力する。
論理否定をとり、n+mビット幅の信号を出力する。ミ
キサ173は、被乗数Xを上位nビット、値が0である
mビット幅の信号を下位mビットとして合成し、n+m
ビット幅の信号R2(=X・2m )を出力する。
【0086】ミキサ174は、各ビットの値が被乗数X
の最上位ビットの値X(n−1)であるmビット幅の信
号を上位mビット、上記被乗数Xの論理否定数を下位n
ビットとして合成し、n+mビット幅の信号を出力す
る。インバータ177は、ミキサ174からの出力の全
ビットの論理否定をとり、n+mビット幅の信号R3
(=−X−1)を出力する。
の最上位ビットの値X(n−1)であるmビット幅の信
号を上位mビット、上記被乗数Xの論理否定数を下位n
ビットとして合成し、n+mビット幅の信号を出力す
る。インバータ177は、ミキサ174からの出力の全
ビットの論理否定をとり、n+mビット幅の信号R3
(=−X−1)を出力する。
【0087】加算器175は、信号R2、信号R3、お
よび値が1のキャリーインを入力として、それらのn+
mビット幅の和R4(=X・(2m −1))を出力す
る。加算器176は、積P0の論理否定数、和R4、お
よび値が1のキャリーインを入力として、それらのn+
mビット幅の和R5(=X・(2m −1)−P0)を、
積Pとして出力する。
よび値が1のキャリーインを入力として、それらのn+
mビット幅の和R4(=X・(2m −1))を出力す
る。加算器176は、積P0の論理否定数、和R4、お
よび値が1のキャリーインを入力として、それらのn+
mビット幅の和R5(=X・(2m −1)−P0)を、
積Pとして出力する。
【0088】なお、前記ステップ145の判定条件とし
ては、posibits(A)>negabits
(A)+1に限らず、posibits(A)≧m/2
などでもよい。また、上記補正のための各回路の規模を
考慮して、さらにposibits(A)の値が大きい
ときにだけ、ステップ147に移行するようにしてもよ
い。
ては、posibits(A)>negabits
(A)+1に限らず、posibits(A)≧m/2
などでもよい。また、上記補正のための各回路の規模を
考慮して、さらにposibits(A)の値が大きい
ときにだけ、ステップ147に移行するようにしてもよ
い。
【0089】図20は、上記ステップ147の処理を行
う構成をその機能に着目して示す構成図である。入力手
段231は、元の機能素子である乗算器171を示す回
路情報を回路データ記憶部23から読み出し、乗算器1
71の入力がmビットの乗数Aと、nビットの被乗数X
であることを示す情報を論理否定手段232に出力す
る。また、上記被乗数Xを示す情報、および乗算器17
1の出力がm+mビットの積Pであることを示す情報を
論理否定演算回路生成手段234に出力する。
う構成をその機能に着目して示す構成図である。入力手
段231は、元の機能素子である乗算器171を示す回
路情報を回路データ記憶部23から読み出し、乗算器1
71の入力がmビットの乗数Aと、nビットの被乗数X
であることを示す情報を論理否定手段232に出力す
る。また、上記被乗数Xを示す情報、および乗算器17
1の出力がm+mビットの積Pであることを示す情報を
論理否定演算回路生成手段234に出力する。
【0090】論理否定手段232は、乗数Aの全ビット
の論理否定をとって乗数A0を出力するインバータ17
9を示す情報を出力手段235に出力するとともに、上
記乗数A0を示す情報、被乗数Xを示す情報、および乗
数A0と被乗数Xとの乗算結果が積P0であることを示
す情報を乗算モジュール生成手段233に出力する。ま
た、上記積P0を示す情報を論理否定演算回路生成手段
234にも出力する。
の論理否定をとって乗数A0を出力するインバータ17
9を示す情報を出力手段235に出力するとともに、上
記乗数A0を示す情報、被乗数Xを示す情報、および乗
数A0と被乗数Xとの乗算結果が積P0であることを示
す情報を乗算モジュール生成手段233に出力する。ま
た、上記積P0を示す情報を論理否定演算回路生成手段
234にも出力する。
【0091】乗算モジュール生成手段233は、乗数A
0と被乗数Xとの積P0を求める乗算器172を示す情
報を生成し、出力手段235に出力する。論理否定演算
回路生成手段234は、上記積P0、および被乗数Xに
基づいて、被乗数Xと2m −1との積R4(=X・(2
m −1))から積P0を減算した信号R5(=X・(2
m −1)−P0)を求めることにより積P0を補正して
積Pを出力する各回路173〜178を示す情報を生成
し、出力手段235に出力する。
0と被乗数Xとの積P0を求める乗算器172を示す情
報を生成し、出力手段235に出力する。論理否定演算
回路生成手段234は、上記積P0、および被乗数Xに
基づいて、被乗数Xと2m −1との積R4(=X・(2
m −1))から積P0を減算した信号R5(=X・(2
m −1)−P0)を求めることにより積P0を補正して
積Pを出力する各回路173〜178を示す情報を生成
し、出力手段235に出力する。
【0092】出力手段235は、各手段232〜234
から出力された変換後の回路を示す回路情報を回路デー
タ記憶部23に格納する。以下、前記変換規則1〜4に
よって元の乗算器と等価な回路に変換できることを数式
を用いて証明する。 <変換規則1>(図10) 図10において、132、133、・・・・・、13
4、135は、それぞれ1ビット幅の変数の乗数Y
(0)と、各1ビット幅の被乗数X(0)、X(1)、
・・・・・、X(n−2)、X(n−1)とのそれぞれ
の論理積P(0)、P(1)、・・・・・、P(n−
2)、P(n−1)をとるAND回路である。Y(0)
=0 または 1であるから、 ここで、Y(0)およびPi は共に1ビットなので、X
i ・Y(0)=Xi and Y(0)である。
から出力された変換後の回路を示す回路情報を回路デー
タ記憶部23に格納する。以下、前記変換規則1〜4に
よって元の乗算器と等価な回路に変換できることを数式
を用いて証明する。 <変換規則1>(図10) 図10において、132、133、・・・・・、13
4、135は、それぞれ1ビット幅の変数の乗数Y
(0)と、各1ビット幅の被乗数X(0)、X(1)、
・・・・・、X(n−2)、X(n−1)とのそれぞれ
の論理積P(0)、P(1)、・・・・・、P(n−
2)、P(n−1)をとるAND回路である。Y(0)
=0 または 1であるから、 ここで、Y(0)およびPi は共に1ビットなので、X
i ・Y(0)=Xi and Y(0)である。
【0093】よって、 P(i)=X(i) and Y(0) (0≦i
≦n−1) P(n)=0 <変換規則2>(図13) P=X・Y =X・Y(m−1:0) =X・{Y(m−1:K)・2K +Y(K−1:0)} =X・Y(m−1:K)・2K +X・Y(K−1:0) =P2(n+m−K−1:0)・2K +P1(n+K−1:0) =P2(n+m−K−1:0)・2K +P1(n+K−1:K)・2K +P1 (K−1:0) =P2(n+m−K−1:0)・2K +R1(n+m−K−1:0)・2K + P1(K−1:0)……(但しR1(n+m−K−1:n)=0)、 R1(n−1:0)=P1(n+K−1:K)) ={P2(n+m−K−1:0)+R1(n+m−K−1:0)}・2K +P 1(K−1:0) =R2(n+m−K−1:0)・2K +P1(K−1:0) よって、 P(K−1:0)=P1(K−1:0) P(n+m−1:K)=R2(n+m−K−1:0) なお、乗数が定数の乗数Aである場合も同じである。
≦n−1) P(n)=0 <変換規則2>(図13) P=X・Y =X・Y(m−1:0) =X・{Y(m−1:K)・2K +Y(K−1:0)} =X・Y(m−1:K)・2K +X・Y(K−1:0) =P2(n+m−K−1:0)・2K +P1(n+K−1:0) =P2(n+m−K−1:0)・2K +P1(n+K−1:K)・2K +P1 (K−1:0) =P2(n+m−K−1:0)・2K +R1(n+m−K−1:0)・2K + P1(K−1:0)……(但しR1(n+m−K−1:n)=0)、 R1(n−1:0)=P1(n+K−1:K)) ={P2(n+m−K−1:0)+R1(n+m−K−1:0)}・2K +P 1(K−1:0) =R2(n+m−K−1:0)・2K +P1(K−1:0) よって、 P(K−1:0)=P1(K−1:0) P(n+m−1:K)=R2(n+m−K−1:0) なお、乗数が定数の乗数Aである場合も同じである。
【0094】<変換規則3(a)>(図16(a)) P=X・A =X・A(m−1:0) =X・{A(m−1)・2 m-1+A(m−2:0)} =X・A(m−1)・2 m-1+X・A(m−2:0) ……(∵A(m−1)=1) =X・2 m-1+P3(n+m−2:0) =X・2 m-1+P3(n+m−2:m−1)・2 m-1+P3(m−2:0) =R1(n:0)・2 m-1+P3(m−2:0) よって、 P(m−2:0)=P3(m−2:0) P(n+m−1:m−1)=R1(n:0) <変換規則3(b)>(図16(b)) P=X・A =X・A(m−1:0) =X・{A(m−1)・2 m-1+A(m−2:0)} =X・A(m−2:0) ……(∵A(m−1)=0) =P3(n+m−2:0) よって、 P(n+m−2:0)=P3(n+m−2:0) P(n+m−1)=0 <変換規則4>(図19) 以下、複数ビットの数Zについての全ビットの論理否定
数を *Zで表す。
数を *Zで表す。
【0095】定数Aについて −A = *A+1−2m ←→ *A+1 = 2m −A
が成立ち、 また、nビット数Xに関して、 (Xの2の補数)= *X+1=−Xである。よって、 P=X・A =X・(2m − *A−1) =X・2m −X−X・ *A =X・2m +(Xの2の補数)+(X・ *Aの2の補数) X1=X・2m +(Xの2の補数),P0=X・ *Aで
あるから、 X・A=X1+(P0の2の補数) =X・2m +(Xの2の補数)+(P0の2の補数) であるから、 X・A=X・2m + *X+1+ *P0+1 前式の第一項X・2m はミキサ173によりR2として
求められる。
が成立ち、 また、nビット数Xに関して、 (Xの2の補数)= *X+1=−Xである。よって、 P=X・A =X・(2m − *A−1) =X・2m −X−X・ *A =X・2m +(Xの2の補数)+(X・ *Aの2の補数) X1=X・2m +(Xの2の補数),P0=X・ *Aで
あるから、 X・A=X1+(P0の2の補数) =X・2m +(Xの2の補数)+(P0の2の補数) であるから、 X・A=X・2m + *X+1+ *P0+1 前式の第一項X・2m はミキサ173によりR2として
求められる。
【0096】第二項Xは、ミキサ174およびインバー
タ177により、符号拡張され、理論否定をとられてR
3として求められる。第四項P0は乗算器172および
インバータ178により求められる。また、第一項X・
2m と第二項Xと第三項あるいは第五項の1の加算は加
算器175によりR4として求められる。X・Aはn+
mビット数であるから、加算結果のn+m+1ビット目
の桁は考慮しなくてよい。
タ177により、符号拡張され、理論否定をとられてR
3として求められる。第四項P0は乗算器172および
インバータ178により求められる。また、第一項X・
2m と第二項Xと第三項あるいは第五項の1の加算は加
算器175によりR4として求められる。X・Aはn+
mビット数であるから、加算結果のn+m+1ビット目
の桁は考慮しなくてよい。
【0097】また、前記R4と前式第四項P0と第五項
あるいは第三項の1の加算は加算器176によりR5と
して求められる。X・Aはn+mビット数であるから、
加算結果のn+m+1ビット目の桁は考慮しなくてよ
い。よって、 P=X・A =P(n+m−1:0) =R5(n+m−1:0) 実施例1の論理回路の自動設計システムによれば、上記
のように、乗算器に入力される乗数が定数である場合、
乗数における値が1であるビットの総個数が3以上であ
れば、乗数を、値が1であるビットの数が等しくなるよ
うに分割することにより、部分積和を求める回路がバラ
ンスのよい二分木状に構成され、加算の論理段数が少な
く抑えられるとともに、乗算速度を高速にすることが可
能となる。
あるいは第三項の1の加算は加算器176によりR5と
して求められる。X・Aはn+mビット数であるから、
加算結果のn+m+1ビット目の桁は考慮しなくてよ
い。よって、 P=X・A =P(n+m−1:0) =R5(n+m−1:0) 実施例1の論理回路の自動設計システムによれば、上記
のように、乗算器に入力される乗数が定数である場合、
乗数における値が1であるビットの総個数が3以上であ
れば、乗数を、値が1であるビットの数が等しくなるよ
うに分割することにより、部分積和を求める回路がバラ
ンスのよい二分木状に構成され、加算の論理段数が少な
く抑えられるとともに、乗算速度を高速にすることが可
能となる。
【0098】また、値が1であるビットの総個数が2以
下であれば、その値が1であるビットに関してのみ部分
積を求める回路が構成されることにより、部分積数が少
なく抑えられ、回路面積の削減が可能となる。また、値
が1であるビットの総個数が多ければ、乗数の論理否定
数と被乗数とを乗算する乗算器と、その乗算結果を補正
する回路とが構成されるとともに、上記乗算器が、前記
のように構成されることにより、部分積数や回路面積の
削減が可能となる。 (実施例2)前記実施例1における図8のステップ10
13、すなわち図12のステップ141〜147と同様
の処理を行う構成の変形例を図21に基づいて説明す
る。
下であれば、その値が1であるビットに関してのみ部分
積を求める回路が構成されることにより、部分積数が少
なく抑えられ、回路面積の削減が可能となる。また、値
が1であるビットの総個数が多ければ、乗数の論理否定
数と被乗数とを乗算する乗算器と、その乗算結果を補正
する回路とが構成されるとともに、上記乗算器が、前記
のように構成されることにより、部分積数や回路面積の
削減が可能となる。 (実施例2)前記実施例1における図8のステップ10
13、すなわち図12のステップ141〜147と同様
の処理を行う構成の変形例を図21に基づいて説明す
る。
【0099】同図において、入力手段2901は、元の
機能素子である乗算器を示す回路情報を回路データ記憶
部23から読み出し、乗算器の入力がmビットの乗数A
またはYと、nビットの被乗数Xであること、および出
力がm+nビットの積Pであることを示す情報を論理否
定判定手段2902に出力する。論理否定判定手段29
02は、posibits(A)がnegabits
(A)+1よりも大きいかどうかを判定し、大きい場合
には、乗数AまたはY、被乗数X、および積Pを示す情
報を論理否定手段2904に出力する一方、大きくない
場合には、上記情報を乗数ビット幅判定手段2903に
出力する。
機能素子である乗算器を示す回路情報を回路データ記憶
部23から読み出し、乗算器の入力がmビットの乗数A
またはYと、nビットの被乗数Xであること、および出
力がm+nビットの積Pであることを示す情報を論理否
定判定手段2902に出力する。論理否定判定手段29
02は、posibits(A)がnegabits
(A)+1よりも大きいかどうかを判定し、大きい場合
には、乗数AまたはY、被乗数X、および積Pを示す情
報を論理否定手段2904に出力する一方、大きくない
場合には、上記情報を乗数ビット幅判定手段2903に
出力する。
【0100】乗数ビット幅判定手段2903は、乗数が
変数であるか、定数であってかつposibits
(A)が3以上であるか、または定数であってかつpo
sibits(A)が2以下であるかを判定し、前2者
の場合には、乗数AまたはY、被乗数X、および積Pを
示す情報を乗数分割手段2907に出力する一方、後者
の場合には、乗数A、被乗数X、および積Pを示す情報
を乗数最上位ビット分離手段2909に出力する。
変数であるか、定数であってかつposibits
(A)が3以上であるか、または定数であってかつpo
sibits(A)が2以下であるかを判定し、前2者
の場合には、乗数AまたはY、被乗数X、および積Pを
示す情報を乗数分割手段2907に出力する一方、後者
の場合には、乗数A、被乗数X、および積Pを示す情報
を乗数最上位ビット分離手段2909に出力する。
【0101】その他の手段2904〜2913は、図1
4、18、20に示す各手段と、情報の伝達経路が多少
異なる点を除き、同様の機能を有するものなので、説明
を省略する。 (実施例3)前記実施例1における図8のステップ10
13で行われる処理の他の例を図22に基づいて説明す
る。
4、18、20に示す各手段と、情報の伝達経路が多少
異なる点を除き、同様の機能を有するものなので、説明
を省略する。 (実施例3)前記実施例1における図8のステップ10
13で行われる処理の他の例を図22に基づいて説明す
る。
【0102】この実施例では、乗数のビット幅が3以上
である場合には、乗数が定数であるか変数であるかに係
らず、乗数を約1/2のビット幅に分割する。また、乗
数のビット幅が2である場合には、乗数が定数であれ
ば、前記変換規則3(a)(b)(図15、16)を適
用して、値が1であるビットに関してのみ部分積を求め
る回路に変換する一方、乗数が変数であれば、乗数が1
ビットの2つの乗算器を含む回路を構成する。
である場合には、乗数が定数であるか変数であるかに係
らず、乗数を約1/2のビット幅に分割する。また、乗
数のビット幅が2である場合には、乗数が定数であれ
ば、前記変換規則3(a)(b)(図15、16)を適
用して、値が1であるビットに関してのみ部分積を求め
る回路に変換する一方、乗数が変数であれば、乗数が1
ビットの2つの乗算器を含む回路を構成する。
【0103】まず、ステップ211では、乗数のビット
幅が3以上であるかどうかを判定し、3以上であれば、
ステップ212に移行し、前記変換規則2(図19)を
適用して乗数のビット幅が約1/2の2つの乗算器を含
む回路に変換する。また、乗数のビット幅が3以上でな
ければ、ステップ213に移行して、乗数が定数である
かどうかを判定する。乗数が定数であれば、ステップ2
14に移行し、前記変換規則3(a)(b)(図15、
16)を適用して乗数における値が1であるビットに関
してのみ部分積を求める回路に変換する。
幅が3以上であるかどうかを判定し、3以上であれば、
ステップ212に移行し、前記変換規則2(図19)を
適用して乗数のビット幅が約1/2の2つの乗算器を含
む回路に変換する。また、乗数のビット幅が3以上でな
ければ、ステップ213に移行して、乗数が定数である
かどうかを判定する。乗数が定数であれば、ステップ2
14に移行し、前記変換規則3(a)(b)(図15、
16)を適用して乗数における値が1であるビットに関
してのみ部分積を求める回路に変換する。
【0104】一方乗数が変数であれば、ステップ215
に移行し、図23に示す変換規則5を適用する。変換規
則5は、乗算器221を、乗算器222と、乗算器22
3と、リッパ224と、ミキサ225と、加算器226
とから構成される回路に変換することを示すものであ
る。
に移行し、図23に示す変換規則5を適用する。変換規
則5は、乗算器221を、乗算器222と、乗算器22
3と、リッパ224と、ミキサ225と、加算器226
とから構成される回路に変換することを示すものであ
る。
【0105】上記乗算器222は、乗数A(1:0)の
下位1ビットA(0)を被乗数X(n−1:0)に乗算
してn+1ビット幅の部分積R1(n:0)を求める。
乗算器223は、乗数A(1:0)の上位1ビットA
(1)を被乗数X(n−1:0)に乗算してn+1ビッ
ト幅の部分積R2(n+1:1)を求める。リッパ22
4は、部分積R1(n:0)を、上位nビットR1
(n:1)と下位1ビットR(0)とに分割し、R
(0)を積P(0)として出力する。
下位1ビットA(0)を被乗数X(n−1:0)に乗算
してn+1ビット幅の部分積R1(n:0)を求める。
乗算器223は、乗数A(1:0)の上位1ビットA
(1)を被乗数X(n−1:0)に乗算してn+1ビッ
ト幅の部分積R2(n+1:1)を求める。リッパ22
4は、部分積R1(n:0)を、上位nビットR1
(n:1)と下位1ビットR(0)とに分割し、R
(0)を積P(0)として出力する。
【0106】ミキサ225は、上記R1(n:1)を上
位側に1ビットだけ符号拡張した信号R3(n+1:
1)を出力する。加算器226は、この信号R3(n+
1:1)と部分積R2(n+1:1)とを加算し、和R
4(n+1:1)を積P(n+1:1)として出力す
る。上記変換規則5によって元の乗算器221と等価な
回路に変換できることの証明を以下に示す。 P=X・A =X・A(1:0) =X・{A(1)・2+A(0)} =X・A(1)・2+X・A(0) =R2(n:0)・2+R1(n:0) =R2(n:0)・2+R1(n:1)・2+R1(0) =R2(n:0)・2+R3(n:0)・2+R1(0) ……(但し、R3(n)=0)、R3(n−1:0)=R1(n:1)) =R4(n:0)・2+R1(0) よって、 P(0) =R1(0) P(n+1:1)=R4(n:0) この処理が行われた場合、乗算器222、223は、乗
数のビット幅が1ビットになるので、次のループの処理
で、前記変換規則1(図10)によってAND回路から
構成される回路に変換される。
位側に1ビットだけ符号拡張した信号R3(n+1:
1)を出力する。加算器226は、この信号R3(n+
1:1)と部分積R2(n+1:1)とを加算し、和R
4(n+1:1)を積P(n+1:1)として出力す
る。上記変換規則5によって元の乗算器221と等価な
回路に変換できることの証明を以下に示す。 P=X・A =X・A(1:0) =X・{A(1)・2+A(0)} =X・A(1)・2+X・A(0) =R2(n:0)・2+R1(n:0) =R2(n:0)・2+R1(n:1)・2+R1(0) =R2(n:0)・2+R3(n:0)・2+R1(0) ……(但し、R3(n)=0)、R3(n−1:0)=R1(n:1)) =R4(n:0)・2+R1(0) よって、 P(0) =R1(0) P(n+1:1)=R4(n:0) この処理が行われた場合、乗算器222、223は、乗
数のビット幅が1ビットになるので、次のループの処理
で、前記変換規則1(図10)によってAND回路から
構成される回路に変換される。
【0107】本実施例3によれば、乗算器の乗数のビッ
ト幅が3以上であれば、乗数を分割することにより部分
積和を求める回路を二分木状に構成することが可能とな
り、乗算の論理段数が少なく乗算速度を高速にすること
が可能となる。また、乗数のビット幅が2以下でかつ乗
数が定数であれば、乗数で値が1であるビットに関して
のみ部分積を求める回路を生成することにより、部分積
数を削減することが可能となり、回路面積の削減が可能
となる。 (実施例4)前記実施例1におけるステップ144(図
12)および実施例3におけるステップ214(図2
2)においては、乗数Aにおいてposibits
(A)=2またはビット幅が2である乗算器に対して、
乗数Aの最上位ビットを分割する変換規則3を適用する
例を示したが、所定のKビット目と、それより上位ビッ
ト、および下位ビットの3つに分割する変換規則6を適
用してもよい。また、ステップ146(図12)または
ステップ212(図22)における変換規則2にも代え
て変換規則6を適用してもよい。この場合には、ステッ
プ143または211の判定を省略することもできる。
ト幅が3以上であれば、乗数を分割することにより部分
積和を求める回路を二分木状に構成することが可能とな
り、乗算の論理段数が少なく乗算速度を高速にすること
が可能となる。また、乗数のビット幅が2以下でかつ乗
数が定数であれば、乗数で値が1であるビットに関して
のみ部分積を求める回路を生成することにより、部分積
数を削減することが可能となり、回路面積の削減が可能
となる。 (実施例4)前記実施例1におけるステップ144(図
12)および実施例3におけるステップ214(図2
2)においては、乗数Aにおいてposibits
(A)=2またはビット幅が2である乗算器に対して、
乗数Aの最上位ビットを分割する変換規則3を適用する
例を示したが、所定のKビット目と、それより上位ビッ
ト、および下位ビットの3つに分割する変換規則6を適
用してもよい。また、ステップ146(図12)または
ステップ212(図22)における変換規則2にも代え
て変換規則6を適用してもよい。この場合には、ステッ
プ143または211の判定を省略することもできる。
【0108】すなわち、図24に示すように、まず、ス
テップ311で乗数AのKビット目A(K−1)の値が
1であるかどうかを判定し、1である場合にはステップ
312に移行して、図25(a)に示す変換規則6
(a)を適用する一方、0である場合にはステップ31
3に移行して、同図(b)に示す変換規則6(b)を適
用する。なお、上記Kの値は、例えば実施例1と同様に
設定すればよい。
テップ311で乗数AのKビット目A(K−1)の値が
1であるかどうかを判定し、1である場合にはステップ
312に移行して、図25(a)に示す変換規則6
(a)を適用する一方、0である場合にはステップ31
3に移行して、同図(b)に示す変換規則6(b)を適
用する。なお、上記Kの値は、例えば実施例1と同様に
設定すればよい。
【0109】変換規則6(a)は、乗算器281を、乗
算器282、283と、ミキサ284〜287と、加算
器288とから構成される回路に変換することを示すも
のである。乗算器282は、乗数Aにおける下位K−1
ビットA5(K−2:0)=A(K−2:0)を被乗数
X(n−1:0)に乗算して、n+K−1ビット幅の部
分積P5(n+K−2:0)を求める。
算器282、283と、ミキサ284〜287と、加算
器288とから構成される回路に変換することを示すも
のである。乗算器282は、乗数Aにおける下位K−1
ビットA5(K−2:0)=A(K−2:0)を被乗数
X(n−1:0)に乗算して、n+K−1ビット幅の部
分積P5(n+K−2:0)を求める。
【0110】乗算器283は、乗数Aにおける上位m−
KビットA6(m−K−1:0)=A(m−1:K)を
被乗数X(n−1:0)に乗算して、n+m−Kビット
幅の部分積P6(n+m−K−1:0)を求める。ミキ
サ284は、部分積P5(n+K−2:0)を上位側に
m−K+1ビットだけ符号拡張した信号R1(n+m−
1:0)を出力する。
KビットA6(m−K−1:0)=A(m−1:K)を
被乗数X(n−1:0)に乗算して、n+m−Kビット
幅の部分積P6(n+m−K−1:0)を求める。ミキ
サ284は、部分積P5(n+K−2:0)を上位側に
m−K+1ビットだけ符号拡張した信号R1(n+m−
1:0)を出力する。
【0111】ミキサ285は、部分積P6の下位に、値
が0であるKビット幅の信号を合成した信号R2(n+
m−1:0)を出力する。ミキサ286は、被乗数X
(n−1:0)の下位に、値が0であるK−1ビット幅
の信号を合成した信号R3(n+K−2:0)を出力す
る。ミキサ287は、上記信号R3(n+K−2:0)
を上位側にm−K+1ビットだけ符号拡張した信号R4
(n+m−1:0)を出力する。
が0であるKビット幅の信号を合成した信号R2(n+
m−1:0)を出力する。ミキサ286は、被乗数X
(n−1:0)の下位に、値が0であるK−1ビット幅
の信号を合成した信号R3(n+K−2:0)を出力す
る。ミキサ287は、上記信号R3(n+K−2:0)
を上位側にm−K+1ビットだけ符号拡張した信号R4
(n+m−1:0)を出力する。
【0112】加算器288は、上記信号R1(n+m−
1:0)と、信号R2(n+m−1:0)と、信号R4
(n+m−1:0)とを加算して積P(n+m−1:
0)を出力する。また、変換規則6(b)は、乗算器2
81を、乗算器282、283と、ミキサ284、28
7と、加算器289とから構成される回路に変換するこ
とを示すものである。
1:0)と、信号R2(n+m−1:0)と、信号R4
(n+m−1:0)とを加算して積P(n+m−1:
0)を出力する。また、変換規則6(b)は、乗算器2
81を、乗算器282、283と、ミキサ284、28
7と、加算器289とから構成される回路に変換するこ
とを示すものである。
【0113】上記乗算器282、283、およびミキサ
284、287は、変換規則6(a)で示したものと同
じものである。加算器289は、信号R1(n+m−
1:0)と、信号R2(n+m−1:0)とを加算して
積P(n+m−1:0)を出力する。上記変換規則6
(a)(b)によって元の乗算器281と等価な回路に
変換できることの証明を以下に示す。
284、287は、変換規則6(a)で示したものと同
じものである。加算器289は、信号R1(n+m−
1:0)と、信号R2(n+m−1:0)とを加算して
積P(n+m−1:0)を出力する。上記変換規則6
(a)(b)によって元の乗算器281と等価な回路に
変換できることの証明を以下に示す。
【0114】<変換規則6(a)> A(K−1)=1 であるから、 P=X・A =X・{A(m−1:K)・2K +A(K−1)・2 K-1+A(K−2:0) } =X・A(m−1:K)・2K +X・2 K-1+X・A(K−2:0) =X・A6(m−K−1:0)・2K +X・2 K-1+X・A5(K−2:0) =P6(n+m−K−1:0)・2K +R3(n+K−2:0)・2 K-1+P 5(n+K−2:0) =R2(n+m−1:0)・2K +R4(n+m−1:0)・2 K-1+R1( n+m−1:0) <変換規則6(b)> A(K−1)=0 であるから、 P=X・A =X・{A(m−1:K)・2 K+A(K−1)・2 K-1+A(K−2:0) } =X・A(m−1:K)・2 K+X・A(K−2:0) =X・A6(m−K−1:0)・2K +X・A5(K−2:0) =P6(n+m−K−1:0)・2K +P5(n+K−2:0) =R2(n+m−1:0)・2K +R1(n+m−1:0) (実施例5)前記実施例1におけるステップ144(図
12)、または実施例3におけるステップ214におい
ては、乗数Aにおいてposibits(A)=2また
はビット幅が2である乗算器に対して変換規則3を適用
する例を示したが、図26に示す変換規則7を適用して
もよい。
12)、または実施例3におけるステップ214におい
ては、乗数Aにおいてposibits(A)=2また
はビット幅が2である乗算器に対して変換規則3を適用
する例を示したが、図26に示す変換規則7を適用して
もよい。
【0115】変換規則7は、乗算器271を、乗算器2
72と、ミキサ273、274と、加算器275とから
構成される回路に変換することを示すものである。乗算
器272は、乗数A(m−1:0)における値が1であ
るビットの桁K(0≦K≦m−1)について、乗数A
(m−1:0)のKビット目を0に設定したmビット幅
の乗数A7(m−1:0)を被乗数Xに乗算し、積P7
(n+m−1:0)を出力する。
72と、ミキサ273、274と、加算器275とから
構成される回路に変換することを示すものである。乗算
器272は、乗数A(m−1:0)における値が1であ
るビットの桁K(0≦K≦m−1)について、乗数A
(m−1:0)のKビット目を0に設定したmビット幅
の乗数A7(m−1:0)を被乗数Xに乗算し、積P7
(n+m−1:0)を出力する。
【0116】ミキサ273は、被乗数Xを上位nビッ
ト、値が0であるK−1ビット幅の信号を下位K−1ビ
ットとして合成し、n+K−1ビット幅の信号R1(n
+K−2:0)を出力する。ミキサ274は、上記信号
R1(n+K−2:0)の上位に、各ビットの値がR1
(n+k−2)であるm−K+1ビット幅の信号を合成
して(信号R1を符号拡張して)n+mビット幅の信号
R2(n+m−1:0)を出力する。
ト、値が0であるK−1ビット幅の信号を下位K−1ビ
ットとして合成し、n+K−1ビット幅の信号R1(n
+K−2:0)を出力する。ミキサ274は、上記信号
R1(n+K−2:0)の上位に、各ビットの値がR1
(n+k−2)であるm−K+1ビット幅の信号を合成
して(信号R1を符号拡張して)n+mビット幅の信号
R2(n+m−1:0)を出力する。
【0117】加算器275は、積P7(n+m−1:
0)と信号R2(n+m−1:0)とを加算し、n+m
ビット幅の和R3(n+m−1:0)を積P(n+m−
1:0)として出力する。上記変換規則7によって元の
乗算器271と等価な回路に変換できることの証明を以
下に示す。 A7(m−1:0)=A(m−1:0)−2 K-1 であ
るから、 P=X・A =X・{A7(m−1:0)+2 K-1} =X・2K +X・A7(m−1:0) =R1(n+K−2:0)+P7(n+m−1:0) =R2(n+m−1:0)+P7(n+m−1:0) =R3(n+m−1:0) この場合、乗算器272に入力される乗数A7(m−
1:0)のビット幅は、乗算器271に入力される乗数
A(m−1:0)のビット幅と等しいが、値が1である
ビットの数は減少するので、この処理が繰り返されるこ
とにより、やがて、前記ステップ1008、または10
10(図8)の処理が行われる。
0)と信号R2(n+m−1:0)とを加算し、n+m
ビット幅の和R3(n+m−1:0)を積P(n+m−
1:0)として出力する。上記変換規則7によって元の
乗算器271と等価な回路に変換できることの証明を以
下に示す。 A7(m−1:0)=A(m−1:0)−2 K-1 であ
るから、 P=X・A =X・{A7(m−1:0)+2 K-1} =X・2K +X・A7(m−1:0) =R1(n+K−2:0)+P7(n+m−1:0) =R2(n+m−1:0)+P7(n+m−1:0) =R3(n+m−1:0) この場合、乗算器272に入力される乗数A7(m−
1:0)のビット幅は、乗算器271に入力される乗数
A(m−1:0)のビット幅と等しいが、値が1である
ビットの数は減少するので、この処理が繰り返されるこ
とにより、やがて、前記ステップ1008、または10
10(図8)の処理が行われる。
【0118】図27は、上記変換規則7による処理を行
う構成をその機能に着目して示す構成図である。入力手
段261は、元の機能素子である乗算器271を示す回
路情報を回路データ記憶部23から読み出し、乗算器2
71の入力がmビットの乗数A、およびnビットの被乗
数Xであることを示す情報を信号生成手段262に出力
する。また、被乗数Xを示す情報、および乗算器271
の出力がm+nビットの積Pであることを示す情報を演
算回路生成手段264に出力する。
う構成をその機能に着目して示す構成図である。入力手
段261は、元の機能素子である乗算器271を示す回
路情報を回路データ記憶部23から読み出し、乗算器2
71の入力がmビットの乗数A、およびnビットの被乗
数Xであることを示す情報を信号生成手段262に出力
する。また、被乗数Xを示す情報、および乗算器271
の出力がm+nビットの積Pであることを示す情報を演
算回路生成手段264に出力する。
【0119】信号生成手段262は、乗数Aにおける値
が1であるKビット目(0≦K≦m−1)の値を0に設
定した乗数A7を示す情報と、被乗数Xを示す情報と、
その乗算結果が積P7であることを示す情報とを乗算モ
ジュール生成手段263に出力する。また、上記Kの値
を示す情報と、積P7を示す情報とを演算回路生成手段
264に出力する。
が1であるKビット目(0≦K≦m−1)の値を0に設
定した乗数A7を示す情報と、被乗数Xを示す情報と、
その乗算結果が積P7であることを示す情報とを乗算モ
ジュール生成手段263に出力する。また、上記Kの値
を示す情報と、積P7を示す情報とを演算回路生成手段
264に出力する。
【0120】乗算モジュール生成手段263は、前記信
号Xと前記信号A7との積P7を求める乗算器272を
示す情報を生成し、出力手段265に出力する。演算回
路生成手段264は、Kの値を示す情報、積P7を示す
情報、被乗数Xを示す情報、および積Pを示す情報に基
づいて、ミキサ276、274と加算器275とを示す
情報を出力手段265に出力する。
号Xと前記信号A7との積P7を求める乗算器272を
示す情報を生成し、出力手段265に出力する。演算回
路生成手段264は、Kの値を示す情報、積P7を示す
情報、被乗数Xを示す情報、および積Pを示す情報に基
づいて、ミキサ276、274と加算器275とを示す
情報を出力手段265に出力する。
【0121】出力手段265は、乗算モジュール生成手
段263、および演算回路生成手段264から出力され
た変換後の回路を示す回路情報を回路データ記憶部23
に格納する。 (実施例6)前記変換規則4の他の例、およびそれらの
変換規則によって生成される乗算器の構成を説明する。
ここで、説明の簡単のために、変数Xが正数である場合
を示すが、正負の値をとり得る場合には、変換規則4と
同様に符号拡張してから論理否定をとったり、論理否定
をとってから符号拡張するようにすればよい。
段263、および演算回路生成手段264から出力され
た変換後の回路を示す回路情報を回路データ記憶部23
に格納する。 (実施例6)前記変換規則4の他の例、およびそれらの
変換規則によって生成される乗算器の構成を説明する。
ここで、説明の簡単のために、変数Xが正数である場合
を示すが、正負の値をとり得る場合には、変換規則4と
同様に符号拡張してから論理否定をとったり、論理否定
をとってから符号拡張するようにすればよい。
【0122】図28(a)〜(c)は変換規則の結果節
を示すとともに、生成される乗算器の構成を示す。な
お、図28における各構成要素は、図19に示すものと
同一なので、同じ番号を付して説明を省略する。図28
(a)の乗算器は、加算器175のキャリーインとして
値1の信号を入力するのに代えて、ミキサ173に入力
されるmビットの信号として値1の信号を入力するよう
になっている。
を示すとともに、生成される乗算器の構成を示す。な
お、図28における各構成要素は、図19に示すものと
同一なので、同じ番号を付して説明を省略する。図28
(a)の乗算器は、加算器175のキャリーインとして
値1の信号を入力するのに代えて、ミキサ173に入力
されるmビットの信号として値1の信号を入力するよう
になっている。
【0123】図28(b)の乗算器は、加算器176の
キャリーインとして値1の信号を入力するのに代えて、
同様に、ミキサ173に入力されるmビットの信号とし
て値1の信号を入力するようになっている。また、乗数
のビット幅mが2以上の場合には、図28(c)に示す
ように、加算器175、176共に値1の信号をキャリ
ーイン入力するのに代えて、ミキサ173に入力される
mビットの信号として値2の信号を入力するようにして
もよい。
キャリーインとして値1の信号を入力するのに代えて、
同様に、ミキサ173に入力されるmビットの信号とし
て値1の信号を入力するようになっている。また、乗数
のビット幅mが2以上の場合には、図28(c)に示す
ように、加算器175、176共に値1の信号をキャリ
ーイン入力するのに代えて、ミキサ173に入力される
mビットの信号として値2の信号を入力するようにして
もよい。
【0124】上記のように、積P0を補正して積Pを求
める演算は、種々の変形が可能である。上記何れの乗算
器においても、その中に含まれる乗算器は、乗数Aの全
ビットの論理否定をとった値を乗数A0として、この乗
数A0と被乗数Xとを乗算するものなので、posib
its(A)がm/2よりも大きい場合でも、部分積数
をm/2以下にして、回路面積の削減や乗算速度の向上
を図ることができる。
める演算は、種々の変形が可能である。上記何れの乗算
器においても、その中に含まれる乗算器は、乗数Aの全
ビットの論理否定をとった値を乗数A0として、この乗
数A0と被乗数Xとを乗算するものなので、posib
its(A)がm/2よりも大きい場合でも、部分積数
をm/2以下にして、回路面積の削減や乗算速度の向上
を図ることができる。
【0125】なお、上記各実施例においては、回路デー
タ記憶部23に格納される回路情報として、機能素子、
論理素子または実装素子などの素子を中心に、素子間の
入出力関係に着目して回路を表すデータ表現が用いられ
る例を説明したが、これに限らず、素子間のつながり、
すなわち信号を中心にしたデータ表現が用いられる場合
などでも、同様な変換規則に基づく回路の変換処理が可
能である。
タ記憶部23に格納される回路情報として、機能素子、
論理素子または実装素子などの素子を中心に、素子間の
入出力関係に着目して回路を表すデータ表現が用いられ
る例を説明したが、これに限らず、素子間のつながり、
すなわち信号を中心にしたデータ表現が用いられる場合
などでも、同様な変換規則に基づく回路の変換処理が可
能である。
【0126】また、変換処理は、上記のような変換規則
に基づく回路の変換処理に限らず、生成登録する回路デ
ータの各部分を特定の順序で逐次的に生成し登録する処
理でもよい。また、mビット幅の乗数とnビット幅の被
乗数との積Pがn+mビット幅である場合だけを説明し
たが、より一般的に任意のビット幅の積を求めることも
容易にできる。例えば積Pのビット幅lがn+mより小
さい場合は、乗算結果の下位からlビットをとればよ
く、n+mより大きい場合は、n+mビットの乗算結果
を下位のビットとし、上位のビットを符号拡張、または
0拡張すればよい。
に基づく回路の変換処理に限らず、生成登録する回路デ
ータの各部分を特定の順序で逐次的に生成し登録する処
理でもよい。また、mビット幅の乗数とnビット幅の被
乗数との積Pがn+mビット幅である場合だけを説明し
たが、より一般的に任意のビット幅の積を求めることも
容易にできる。例えば積Pのビット幅lがn+mより小
さい場合は、乗算結果の下位からlビットをとればよ
く、n+mより大きい場合は、n+mビットの乗算結果
を下位のビットとし、上位のビットを符号拡張、または
0拡張すればよい。
【0127】
【発明の効果】以上説明したように、本発明によれば、
乗数における値が1であるビットに関してのみ、被乗数
との部分積を求める部分積演算回路等が形成されるの
で、回路規模の低減や乗算速度の高速化を容易に図るこ
とができる。また、値が1であるビットの数が略等しく
なるようにグループ分けされて、部分積和を加算する部
分積和演算回路が形成されるので、部分積和演算回路を
二分木状にバランスよく構成させることができ、回路の
論理段数も少なく抑えて一層乗算速度を速くすることが
容易になる。
乗数における値が1であるビットに関してのみ、被乗数
との部分積を求める部分積演算回路等が形成されるの
で、回路規模の低減や乗算速度の高速化を容易に図るこ
とができる。また、値が1であるビットの数が略等しく
なるようにグループ分けされて、部分積和を加算する部
分積和演算回路が形成されるので、部分積和演算回路を
二分木状にバランスよく構成させることができ、回路の
論理段数も少なく抑えて一層乗算速度を速くすることが
容易になる。
【0128】さらに、乗数における値が1であるビット
の数が多い場合でも、乗数の論理否定数について乗算を
行う回路が形成されるので、やはり、高速な乗算器や回
路規模の小さい乗算器を構成することが容易になるとい
う効果を奏する。
の数が多い場合でも、乗数の論理否定数について乗算を
行う回路が形成されるので、やはり、高速な乗算器や回
路規模の小さい乗算器を構成することが容易になるとい
う効果を奏する。
【図1】実施例1の自動設計システムのハードウェア構
成を示すブロック図である。
成を示すブロック図である。
【図2】同、記憶装置の構成を示す説明図である。
【図3】同、回路データ記憶部に格納される、回路を表
すデータの例を示す説明図である。
すデータの例を示す説明図である。
【図4】同、機能回路情報や機能記述情報の例を示す説
明図である。
明図である。
【図5】同、論理設計システムの処理を示すメインルー
チンのフローチャートである。
チンのフローチャートである。
【図6】同、図5におけるステップ43の詳細な処理を
示すフローチャートである。
示すフローチャートである。
【図7】同、機能素子である乗算器の例を示す説明図で
ある。
ある。
【図8】同、図6におけるステップ85の詳細な処理を
示すフローチャートである。
示すフローチャートである。
【図9】同、図8におけるステップ1002、100
6、1008、1010で生成される回路の例を示す回
路図である。
6、1008、1010で生成される回路の例を示す回
路図である。
【図10】同、変換規則1を示す説明図である。
【図11】同、具体的な変換処理の例を示すフローチャ
ートである。
ートである。
【図12】同、図8におけるステップ1013の詳細な
処理を示すフローチャートである。
処理を示すフローチャートである。
【図13】同、変換規則2を示す説明図である。
【図14】同、図12におけるステップ142の処理を
行う構成をその機能に着目して示す構成図である。
行う構成をその機能に着目して示す構成図である。
【図15】同、図12におけるステップ144の詳細な
処理を示すフローチャートである。
処理を示すフローチャートである。
【図16】同、変換規則3を示す説明図である。
【図17】同、変換規則3の内部表現の例を示す説明図
である。
である。
【図18】同、図12におけるステップ144の処理を
行う構成をその機能に着目して示す構成図である。
行う構成をその機能に着目して示す構成図である。
【図19】同、変換規則4を示す説明図である。
【図20】同、図12におけるステップ147の処理を
行う構成をその機能に着目して示す構成図である。
行う構成をその機能に着目して示す構成図である。
【図21】実施例2における、図12に示す実施例1の
ステップ141〜147と同様の処理を行う構成の変形
例を示す構成図である。
ステップ141〜147と同様の処理を行う構成の変形
例を示す構成図である。
【図22】実施例3における、図8に示す実施例1のス
テップ1013で行われる処理の他の例を示すフローチ
ャートである。
テップ1013で行われる処理の他の例を示すフローチ
ャートである。
【図23】同、変換規則5を示す説明図である。
【図24】実施例4における、図12に示す実施例1の
ステップ144で行われる処理の他の例を示すフローチ
ャートである。
ステップ144で行われる処理の他の例を示すフローチ
ャートである。
【図25】同、変換規則6を示す説明図である。
【図26】実施例5における変換規則7を示す説明図で
ある。
ある。
【図27】同、変換規則7による処理を行う構成をその
機能に着目して示す構成図である。
機能に着目して示す構成図である。
【図28】実施例6における変換規則4の他の例、およ
びそれらの変換規則によって生成される乗算器の構成を
示す説明図である。
びそれらの変換規則によって生成される乗算器の構成を
示す説明図である。
11 入力装置 12 中央処理装置 13 出力装置 14 記憶装置 21 設計処理記憶部 22 素子ライブラリ記憶部 23 回路データ記憶部 231 入力手段 232 論理否定手段 233 乗算モジュール生成手段 234 論理否定演算回路生成手段 235 出力手段 241 入力手段 242 乗数分割手段 243 乗算モジュール生成手段 244 分割演算回路生成手段 245 出力手段 251 入力手段 252 最上位ビット分離手段 253 ビット値判定手段 254 乗算モジュール生成手段 255 加算シフト演算回路生成手段 256 回路生成手段 257 出力手段 261 入力手段 262 信号生成手段 263 乗算モジュール生成手段 264 演算回路生成手段 265 出力手段 2901 入力手段 2902 論理否定判定手段 2903 乗数ビット幅判定手段 2904 論理否定手段 2905 論理否定演算回路生成手段 2906 乗算モジュール生成手段 2907 乗数分割手段 2908 分割演算回路生成手段 2909 乗数最上位ビット分離手段 2910 ビット値判定手段 2911 加算シフト演算回路生成手段 2912 回路生成手段 2913 出力手段
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) G06F 17/50 G06F 7/52 310 JICSTファイル(JOIS)
Claims (38)
- 【請求項1】 複数ビット幅の定数である乗数と、複数
ビット幅の被乗数との積を複数ビット幅の信号として出
力する論理回路を示す情報を生成する論理回路の自動設
計方法であって、 乗数の値を入力し記憶装置に格納する入力ステップと、 記憶装置内に格納されている前記乗数の情報を参照して
前記乗数における値が1であるビットを検出するビット
数検出ステップと、 検出結果に応じて、値が1であるビットに関してのみ、
被乗数との部分積を求める部分積演算回路を示す情報を
生成する部分積演算回路情報生成ステップと、 乗数における値が1であるビットが4ビット以上ある場
合に、値が1であるビットをその数が略等しくなるよう
にグループ分けするグループ分けステップと、 部分積演算回路によって求められる部分積の部分積和を
各グループ毎に加算する部分積和演算回路を示す情報を
生成する部分積和演算回路情報生成ステップとを演算処
理装置に行わせることを特徴とする論理回路の自動設計
方法。 - 【請求項2】 請求項1記載の論理回路の自動設計方法
であって、 グループ分けステップ、および部分積和演算回路情報生
成ステップでは、上記グループ内に、乗数における値が
1であるビットが4ビット以上ある場合に、グループ内
でさらにグループ分け、および部分積和演算回路情報の
生成が再帰的に行われることを特徴とする論理回路の自
動設計方法。 - 【請求項3】 定数である乗数と、被乗数との積を求め
る論理回路を示す情報を生成する論理回路の自動設計装
置であって、 乗数の値を入力する入力手段と、 乗数における値が1であるビットを検出する検出手段
と、 検出結果に応じて、値が1であるビットに関してのみ、
被乗数との部分積を求める部分積演算回路を示す情報を
生成する部分積演算回路情報生成手段と、 乗数における値が1であるビットの数を検出するビット
数検出手段と、 ビット数検出手段によって検出されたビット数が4以上
である場合に、値が1であるビットをその数が略等しく
なるようにグループ分けするグループ分け手段と、 部分積演算回路によって求められる部分積の部分積和を
求める部分積和演算回路を示す情報を各グル−プ毎に生
成する部分積和演算回路情報生成手段と、 を有することを特徴とする論理回路の自動設計装置。 - 【請求項4】 請求項3の論理回路の自動設計装置であ
って、さらに、 上記グループ分けされた各グループに
対して、ビット数検出手段、グループ分け手段、および
部分積和演算回路情報生成手段に、再帰的に処理を行わ
せる再帰処理制御手段を有することを特徴とする論理回
路の自動設計装置。 - 【請求項5】 nビット幅の数Xとmビット幅の数Yと
を入力としてその積Pを複数ビット幅の信号として出力
する乗算器Mを示す情報を生成する論理回路の自動設計
方法であって、 (1)nビット幅の数Xを示す情報とmビット幅の数Y
を示す情報を入力し記憶装置に格納する入力ステップ
と、 (2)0<K<mなる整数Kについて、記憶装置内の情
報を参照して、前記Yの下位Kビットからなる数Y1と
前記Xを入力として前記Y1と前記Xとの積P1を出力
する乗算器M1を示す情報を生成し記憶装置に格納する
ステップと、 (3)前記Yの上位m−Kビットからなる数Y2と前記
Xを入力として前記Y2と前記Xとの積P2を出力する
乗算器M2を示す情報を生成し記憶装置に格納するステ
ップと、 (4)前記P1と前記P2を入力として前記P2と2 K
との積P2・2 K と、P1との和を出力する回路を示す
情報を生成し記憶装置に格納するステップとを行い、 (2)および(3)で生成される乗算器M1、M2に対
して、それぞれ前記(1)から(4)の処理を再帰的に
繰り返し実行することにより前記乗算器Mを生成する処
理を演算処理装置において行うことを特徴とする論理回
路の自動設計方法。 - 【請求項6】 nビットの数Xとmビットの定数Aとを
入力としてその積Pを複数ビットの信号として出力する
乗算器Mを示す情報を生成する論理回路の自動設計方法
であって、 (1) nビット幅の数Xを示す情報とmビット幅の定
数Aの値を入力し記憶装 置に格納する入力ステップと、 (2) 0<K<mなる整数Kについて、記憶装置内の
情報を参照して、前記定数Aの下位Kビットからなる定
数A1と前記Xを入力として前記A1と前記Xとの積P
1を出力する乗算器M1を示す情報を生成し記憶装置に
格納するステップと、 (3) 前記Aの上位m−KビットからなるA2と前記
Xを入力として前記A2と前記Xとの積P2を出力する
乗算器M2を示す情報を生成し記憶装置に格納するステ
ップと、 (4) 前記P1と前記P2を入力として前記P2と2
K との積P2・2 K と、P1との和を出力する回路を示す
情報を生成し記憶装置に格納するステッとを演算処理装
置において行うことを特徴とする論理回路の自動設計方
法。 - 【請求項7】 請求項6の(2)および(3)で生成さ
れる乗算器M1、M2に対して、それぞれ前記(1)な
いし(4)の処理を再帰的に繰り返し実行することによ
り前記乗算器Mを生成することを特徴とする論理回路の
自動設計方法。 - 【請求項8】 前記定数A1における値が1であるビッ
トの数L1と、前記定数A2における値が1であるビッ
トの数L2とに基づいて、前記整数Kの値を決定するこ
とを特徴とする請求項6または請求項7記載の論理回路
の自動設計方法。 - 【請求項9】 前記定数A1における値が1であるビッ
トの数L1と、前記定数A2における値が1であるビッ
トの数L2とに基づいて、前記数L1とL2との差L1
−L2の絶対値が最小となるように、前記整数Kの値を
決定することを特徴とする請求項6ないし請求項8記載
の論理回路の自動設計方法。 - 【請求項10】 nビットの数Xとmビットの定数Aと
を入力としてその積Pを複数ビットの信号として出力す
る乗算器Mを示す情報を生成する論理回路の自動設計方
法であって、 (1) nビット幅の数Xを示す情報とmビット幅の定
数Aの値を入力し記憶装置に格納する入力ステップと、 (2) 前記定数Aの下位m−1ビットからなる定数A
3と前記Xを入力として その積P3を出力する乗算器M
3を示す情報を生成し記憶装置に格納するステップと、 (3) 前記定数Aの最上位ビットの値が1であるなら
ば、前記Xと前記P3を入力として前記Xと前記P3を
入力として前記Xと2 m-1 との積X・2 m-1 と、前記P3
との和を出力する回路を示す情報を生成し記憶装置に格
納するステップとを演算処理装置において行うことを特
徴とする論理回路の自動設計方法。 - 【請求項11】 請求項10の(2)で生成される乗算
器M3に対して、前記(1)から(3)の処理を再帰的
に繰り返し実行することにより前記乗算器Mを示す情報
を生成することを特徴とする論理回路の自動設計方法。 - 【請求項12】 nビットの数Xとmビットの定数Aと
を入力としてその積Pを複数ビットの信号として出力す
る乗算器Mを示す情報を生成する論理回路の自動設計方
法であって、 (1) nビット幅の数Xを示す情報とmビット幅の定
数Aの値を入力し記憶装置に格納する入力ステップと、 (2) 前記定数Aの上位m−1ビットからなる定数A
4と前記Xを入力としてその積P4を出力する乗算器M
4を示す情報を生成し記憶装置に格納するステップと、 (3) 前記定数Aの最下位ビットの値が1であるなら
ば、前記Xと前記P4を入力として前記P4と2との積
2・P4と、前記Xとの和を出力する回路を示す情報を
生成し記憶装置に格納するステップとを演算処理装置に
おいて行うことを特徴とする論理回路の自動設計方法。 - 【請求項13】 請求項12の(2)で生成される乗算
器M4に対して、前記(1)から(3)の処理を再帰的
に繰り返し実行することにより前記乗算器Mを示す情報
を生成することを特徴とする論理回路の自動設計方法。 - 【請求項14】 nビットの数Xとmビットの定数Aと
を入力としてその積Pを出力する乗算器Mを示す情報を
生成する論理回路の自動設計方法であって、(1) 0
<K<m−1なる整数Kについて、前記定数Aの下位K
−1ビットか らなる定数A5と前記Xを入力としてその
積P5を出力する乗算器M5を示す情報を生成して記憶
装置に格納し、 (2) 前記定数Aの上位m−Kビットからなる定数A
6と前記Xを入力としてその積P6を出力する乗算器M
6を示す情報を生成して記憶装置に格納し、 (3) 前記定数Aの最下位ビットから数えてKビット
目の値が1であるならば、前記Xと前記P5と前記P6
を入力として前記Xと2 K-1 との積X・2 K-1 と、前記P
6と2 K との積P6・2 K と、P5との和を出力する回
路を示す情報を生成して記憶装置に格納し、 (4) 前記Kビット目の値が0であるならば、前記P
5と前記P6を入力として前記P6と2 K との積P6・
2 K と、前記P5との和を出力する回路を示す情報を生
成し、記憶装置に格納することにより前記乗算器Mを生
成することを特徴とする論理回路の自動設計方法。 - 【請求項15】 請求項14の(1)および(2)で生
成される乗算器M5、M6に対して、それぞれ前記
(1)ないし(4)の処理を再帰的に繰り返し実行する
ことにより前記乗算器Mを生成することを特徴とする論
理回路の自動設計方法。 - 【請求項16】 nビットの数Xとmビットの定数Aと
を入力としてその積Pを出力する乗算器Mを生成する論
理回路の自動設計方法であって、 (1) nビットの数Xとmビットの定数Aとを入力し
て記憶装置に格納し、 (2) 前記定数Aにおける値が1であるビットの桁K
(0≦K≦m−1)について、mビットの定数A7をA
7=A−2 K として求め、 (3) 前記A7と前記Xを入力として前記A7と前記
Xの積P7を出力する乗算器M7を生成し、 (4) 前記Xと前記P7を入力として前記Xと2 K と
の積X・2 K と、P7との和を出力する回路を示す情報
を生成して、 (3)で生成される乗算器M7に対して、前記(2)な
いし(4)の処理を再帰的に演算処理装置に繰り返し実
行させることにより前記乗算器Mを生成するこ とを特徴
とする論理回路の自動設計方法。 - 【請求項17】 nビット幅の数Xとmビット幅の定数
Aとを入力としてその積Pを複数ビット幅の信号として
出力する乗算器Mを示す情報を生成する論理回路の自動
設計方法であって、 nビット幅の数Xを示す情報とmビット幅の定数Aの値
を入力し記憶装置に格納する入力ステップと、 記憶装置内の前記定数Aの値を参照し、請求項6におけ
る(2)から(4)の処理と、請求項10または12に
おける(2)から(3)の処理とを、前記定数Aの値に
応じて選択的に実行することを特徴とする論理回路の自
動設計方法。 - 【請求項18】 nビット幅の数Xとmビット幅の定数
Aとを入力としてその積Pを複数ビット幅の信号として
出力する乗算器Mを示す情報を生成する論理回路の自動
設計方法であって、 nビット幅の数Xを示す情報とmビット幅の定数Aの値
を入力し記憶装置に格納し、 記憶装置内の前記定数Aの値を参照し、前記定数Aにお
ける値が1であるビットの数L11が3以上の場合に、
請求項6における(2)から(4)の処理を選択する一
方、3よりも小さい場合に、請求項10または12にお
ける(2)から(3)の処理を選択することを特徴とす
る論理回路の自動設計方法。 - 【請求項19】 nビット幅の数Xとmビット幅の定数
Aとを入力としてその積Pを複数ビット幅の信号として
出力する乗算器Mを示す情報を生成する論理回路の自動
設計方法であって、 nビット幅の数Xを示す情報とmビット幅の定数Aの値
を入力し記憶装置に格納し、 記憶装置内の前記定数Aの値を参照し、前記定数Aにお
ける値が1であるビットの数L11が3以上の場合に、
請求項6における(2)から(4)の処理を選択する一
方、3よりも小さい場合に、請求項10または12にお
ける(2)から(3)の処理を選択することを特徴とす
る論理回路の自動設計方法。 - 【請求項20】 nビット幅の数Xとmビット幅の定数
Aとを入力としてその積Pを複数ビット幅の信号として
出力する乗算器Mを示す情報を生成する論理回路の自動
設計方法であって、 nビット幅の数Xを示す情報とmビット幅の定数Aの値
を入力し記憶装置に格納し、 記憶装置内の前記定数Aの値を参照し、 Aのビット数mが3より大きい場合に請求項6における
(2)から(4)の処理と、請求項10または12にお
ける(2)から(3)の処理とを、前記定数Aの値に応
じて選択的に実行することを特徴とする論理回路の自動
設計方法。 - 【請求項21】 nビットの数Xとmビットの定数Aと
を入力としてその積Pを出力する乗算器Mを生成する論
理回路の自動設計方法であって、 本自動設計方法は、 (1)nビット幅の数Xとmビット幅の定数Aとを入力
して記憶装置に格納し、 (2)前記定数Aの1の補数A0と前記Xとの積P0を
出力する回路を示す情報を生成して記憶装置に格納し、 (3)前記Xを入力として前記Xの2の補数と、前記X
と2 m との積X・2 m との和Q4を出力する回路を示す情
報を生成して記憶装置に格納し、 (4)前記P0と前記Q4を入力として前記P0の2の
補数Q0と前記Q4との和を出力する回路を示す情報を
生成して記憶装置に格納する処理とを有しており、 本請求項における(2)から(4)の処理と、請求項6
における(2)から(4)の処理と、請求項10または
12における(2)から(3)の処理とを記憶装置内の
前記定数Aの値に応じて選択的に実行することを特徴と
する論理回路の自動設計方法。 - 【請求項22】 nビットの数Xとmビットの定数Aと
を入力としてその積Pを出力する乗算器Mを生成する論
理回路の自動設計方法であって、 前記自動設計方法は、 (1)nビット幅の数Xとmビット幅の定数Aとを入力
して記憶装置に格納し 、 (2)前記定数Aと前記Xとを入力として前記定数Aの
1の補数A0と前記Xとの積P0を出力する回路を示す
情報を生成して記憶装置に格納し、 (3)前記Xを入力として前記Xの2の補数と、前記X
と2 m との積X・2 m との和Q4を出力する回路を示す情
報を生成して記憶装置に格納し、 (4)前記P0と前記Q4を入力として前記P0の2の
補数Q0と前記Q4との和を出力する回路を示す情報を
生成して記憶装置に格納する処理とを有しており、 前記定数Aにおける値が1であるビットの数L11が3
よりも大きい場合には、さらに、前記数L11が、前記
定数Aにおける値が0であるビットの数L00よりも大
きいければ、本請求項における(2)から(4)までの
処理を選択し、小さければ、請求項6における(2)か
ら(4)までの処理を選択する一方、前記数L11が2
よりも小さい場合には、請求項10または12における
(2)および(3)の処理を選択することを特徴とする
論理回路の自動設計方法。 - 【請求項23】 nビット幅の数Xとmビット幅の定数
Aとを入力としてその積Pを複数ビット幅の信号として
出力する乗算器Mを示す情報を生成する論理回路の自動
設計方法であって、 前記自動設計方法は、 (1)nビット幅の数Xとmビット幅の定数Aとを入力
して記憶装置に格納し、 (2)前記定数Aと前記Xとを入力として前記定数Aの
1の補数A0と前記Xとの積P0を出力する回路を示す
情報を生成して記憶装置に格納し、 (3)前記Xを入力として前記Xの2の補数と、前記X
と2 m との積X・2 m との和Q4を出力する回路を示す情
報を生成して記憶装置に格納し、 (4)前記P0と前記Q4を入力として前記P0の2の
補数Q0と前記Q4との和を出力する回路を示す情報を
生成して記憶装置に格納する処理とを有しており、 前記定数Aのビット数mが3よりも大きい場合には、さ
らに、前記定数Aにおける値が1であるビットの数L1
1が、前記定数Aにおける値が0であるビット の数L0
0よりも大きいければ、本請求項における(2)ないし
(4)の処理を選択し、 前記定数Aにおける値が1であるビットの数L11が、
前記定数Aにおける値が0であるビットの数L00より
も小さければ請求項6における(2)から(4)の処理
を選択する一方、前記数mが2以下の場合には、請求項
10または12における(2)および(3)の処理を選
択することを特徴とする論理回路の自動設計方法。 - 【請求項24】 請求項21における処理によって生成
された乗算器M1およびM2に対して、それぞれ前記処
理を再帰的に繰り返し実行することにより前記乗算器M
を生成することを特徴とする論理回路の自動設計方法。 - 【請求項25】 前記整数Kが、Kとm−Kとの差m−
2Kの絶対値が最小となる整数であることを特徴とする
請求項17ないし請求項24記載の論理回路の自動設計
方法。 - 【請求項26】 前記定数A1における値が1であるビ
ットの数L1と、前記定数A2における値が1であるビ
ットの数L2とに基づいて、前記整数Kの値を決定する
ことを特徴とする請求項17ないし請求項24記載の論
理回路の自動設計方法。 - 【請求項27】 前記定数A1における値が1であるビ
ットの数L1と、前記定数A2における値が1であるビ
ットの数L2との差L1−L2の絶対値が最小となるよ
うに、前記整数Kの値を決定することを特徴とする請求
項17ないし請求項24記載の論理回路の自動設計方
法。 - 【請求項28】 nビットの数を表す信号Xとmビット
の定数を表す信号Aとの積を表す信号Pを求める乗算器
を生成する論理回路の自動設計装置であって、 前記信号Xと信号Aと信号Pを示す情報を入力する入力
手段と、 0<K<mなる整数Kについて、前記信号Aの下位Kビ
ットからなる信号A1と前記信号Xとの積を表す信号P
1を求める乗算器M1、および前記信号Aの上位m−K
ビットからなる信号A2と前記信号Xとの積を表す信号
P2を求める乗算器M2を示す情報を生成する乗算器生
成手段と、 前記信号P1の上位nビットからなる信号Q1と前記信
号P2を入力として、和Q1+P2を表す信号を前記信
号Pの上位n+m−Kビットとして出力し、前記信号P
1の下位Kビットからなる信号を前記信号Pの下位Kビ
ットとして出力する回路を示す情報を生成する演算回路
生成手段と、 前記乗算器生成手段及び前記演算回路生成手段で生成さ
れた乗算器M1、M2及び回路を示す情報を出力する出
力手段とを有することを特徴とする論理回路の自動設計
装置。 - 【請求項29】 前記信号A1における値が1であるビ
ットの数L1と、前記信号A2における値が1であるビ
ットの数L2とに基づいて、前記整数Kの値を決定する
決定手段を有することを特徴とする請求項28記載の論
理回路の自動設計装置。 - 【請求項30】 前記決定手段は、前記数L1とL2と
の差L1−L2の絶対値が最小となるように、整数Kの
値を決定することを特徴とする請求項29記載の論理回
路の自動設計装置。 - 【請求項31】 nビットの数を表す信号Xとmビット
の定数を表す信号Aとの積を表す信号Pを求める乗算器
を生成する論理回路の自動設計装置であって、 前記信号Xと信号Aと信号Pを示す情報を入力する入力
手段と、 前記信号Aの最上位ビットの値が1であるかどうかを判
定する判定手段と、 前記信号Aの下位m−1ビットからなる信号A3と前記
信号Xとの積を表す信号P3を求める乗算器M3を示す
情報を生成する乗算器生成手段と、 前記判定手段の判定結果において、前記最上位ビットの
値が1であるならば、前記信号P3を前記信号Pの下位
m−1ビットとして出力するとともに、前記信号P3の
上位nビットからなる信号Q2と前記信号Xを入力とし
て、前記信号Q2と前記信号Xの和を表す信号を前記信
号Pの上位n+1ビットとして出力する回路を示す情報
を生成する演算回路生成手段と、 前記最上位ビットの値が0であるならば、前記信号P3
を前記信号Pの上位n+m−1ビットとし、値0の信号
を前記信号Pの下位1ビットとして出力する回路を示す
情報を生成する回路生成手段と、 前記乗算器生成手段及び前記演算回路生成手段で生成さ
れた乗算器M3及び回路を示す情報を出力する出力手段
とを有することを特徴とする論理回路の自動設計装置。 - 【請求項32】 nビットの数を表す信号Xとmビット
の定数を表す信号Aとの積を表す信号Pを求める乗算器
を生成する論理回路の自動設計装置であって、 前記信号Xと信号Aと信号Pを示す情報を入力する入力
手段と、 前記信号Aの最下位ビットの値が1であるかどうかを判
定する判定手段と、 前記信号Aの上位m−1ビットからなる信号A4と前記
信号Xとの積を表す信号P4を求める乗算器M4を示す
情報を生成する乗算器生成手段と、 前記判定手段の判定結果において、前記最下位ビットの
値が1であるならば、前記信号P4を前記信号Pの上位
m−1ビットとして出力するとともに、前記信号P4の
下位nビットからなる信号Q2と前記信号Xを入力とし
て、前記信号Q2と前記信号Xの和を表す信号を前記信
号Pの下位n+1ビットとして出力する回路を示す情報
を生成する演算回路生成手段と、 前記最下位ビットの値が0であるならば、前記信号P4
を前記信号Pの上位n+m−1ビットとし、値0の信号
を前記信号Pの下位1ビットとして出力する回路を示す
情報を生成する回路生成手段と、 前記乗算器生成手段及び前記演算回路生成手段で生成さ
れた乗算器M4及び回路を示す情報を出力する出力手段
とを有することを特徴とする論理回路の自動設計装置。 - 【請求項33】 nビットの数を表す信号Xとmビット
の定数を表す信号Aとの積を表す信号Pを求める乗算器
を生成する論理回路の自動設計装置であって、 前記信号Xと信号Aと信号Pを示す情報を入力する入力
手段と、 0<K<mなる整数Kについて、前記信号Aの最下位ビ
ットから数えてKビット目の値を判定する判定手段と、 前記信号Aの下位K−1ビットからなる信号A5と前記
信号Xとの積を表す信号P5を求める乗算器M5、およ
び前記信号Aの上位m−Kビットからなる信号 A6と前
記信号Xとの積を表す信号P6を求める乗算器M6を示
す情報を生成する乗算器生成手段と、 前記判定手段の判定結果において、前記Kビット目の値
が1ならば、前記信号Xと前記信号P5と前記信号P6
を入力として前記信号Xと2 K-1 との積X・2 K-1 と、前
記信号P6と2 K との積P6・2 K と、前記信号P5との
和を前記信号Pとして出力する回路を示す情報を生成す
る第1の演算回路生成手段と、 前記Kビット目の値が0ならば、前記信号P5と前記信
号P6を入力として前記信号P6と2 K との積P6・2 K
と前記信号P5との和を前記信号Pとして出力する回路
を示す情報を生成する第2の演算回路生成手段と、 前記乗算器生成手段及び前記演算回路生成手段で生成さ
れた乗算器M5、M6及び回路を示す情報を出力する出
力手段とを有することを特徴とする論理回路の自動設計
装置。 - 【請求項34】 nビットの数を表す信号Xとmビット
の定数を表す信号Aとの積を表す信号Pを求める乗算器
を生成する論理回路の自動設計装置であって、 前記信号Xと信号Aと信号Pを示す情報を入力する入力
手段と、 前記信号Aにおける値が1であるビットの桁K(0≦K
≦m−1)について、前記信号Aの最下位ビットから数
えてKビット目の値を0に設定した信号A7を示す情報
を生成する信号生成手段と、 前記信号A7と前記信号Xとの積を表す信号P7を求め
る乗算器M7を示す情報を生成する乗算器生成手段と、 前記信号P7と前記信号Xを入力として前記信号Xと2
K との積X・2 K と、前記信号P7との和を表す信号をP
として出力する回路を示す情報を生成する演算回路生成
手段と、 前記乗算器生成手段及び前記演算回路生成手段で生成さ
れた乗算器M7及び回路を示す情報を出力する出力手段
とを有することを特徴とする論理回路の自動設計装置。 - 【請求項35】 nビットの数を表す信号Xとmビット
の定数を表す信号Aとの積を表す信号Pを求める乗算器
を生成する論理回路の自動設計装置であって 、 前記信号Xと信号Aと信号Pを示す情報を入力する入力
手段と、 前記定数信号Aにおける値が1であるビットの数が、0
<K<mなる所定の整数Kより大きいかどうかを判定す
る判定手段と、 判定手段の判定結果に応じて、前記定数信号Aの論理否
定信号A0を求める論理否定手段と、 前記A0と前記Xとを入力としてその積を表す信号P0
を求める乗算器M0を示す信号を生成する乗算器生成手
段と、 前記Xと前記乗算器M0の出力信号P0を入力として前
記Xと2 m-1 −1との積X・(2 m-1 −1)と、前記P0
との差X・(2 m-1 −1)−P0の値を表す信号を前記
信号Pとして出力する回路を示す情報を生成する演算回
路生成手段と、前記乗算器生成手段および前記演算回路
生成手段で生成された乗算器M0および回路を示す情報
を出力する出力手段とを有し、 前記演算回路生成手段は、 前記Xを入力として前記Xと2 m との積X・2 m と、前記
Xとの差X・2 m −Xの値を表す信号Q4を出力する回
路を示す情報を生成する回路生成手段と、 乗算器M0の出力信号P0と前記信号Q4とを入力とし
て前記Q4と前記P0との差Q4−P0の値を表す信号
を前記信号Pとして出力する回路を示す情報を生成する
減算回路生成手段とを有することを特徴とする論理回路
の自動設計装置。 - 【請求項36】 nビットの数を表す信号Xとmビット
の定数を表す信号Aとの積を表す信号Pを求める乗算器
を生成する論理回路の自動設計装置であって、 前記信号Xと信号Aと信号Pを示す情報を入力する入力
手段と、 前記定数信号Aにおける値が1であるビットの数が、0
<K<mなる所定の整数Kより大きいかどうかを判定す
る判定手段と、 判定手段の判定結果に応じて、前記定数信号Aの論理否
定信号A0を求める論理否定手段と、 前記A0と前記Xとを入力としてその積を表す信号P0
を求める乗算器M0を 示す信号を生成する乗算器生成手
段と、 前記Xと前記乗算器M0の出力信号P0を入力として前
記Xと2 m −1との積X・(2 m −1)と、前記P0との
差X・(2 m −1)−P0の値を表す信号を前記信号P
として出力する回路を示す情報を生成する演算回路生成
手段と、 前記乗算器生成手段および前記演算回路生成手段で生成
された乗算器M0および回路を示す情報を出力する出力
手段とを有しており、 前記演算回路生成手段は、 乗算器M0の出力信号P0を入力として前記信号P0の
論理否定信号Q0を出力する回路を示す情報を生成する
論理否定回路生成手段と、 前記Xを入力として前記Xと2 m −1との積X・(2 m −
1)と、値1との和X・2 m −X+1を表す信号Q5を
出力する回路を示す情報を生成する回路生成手段と、 前記信号Q0と前記信号Q5とを入力として前記Q0と
前記Q5との和Q0+Q5の値を表す信号を前記信号P
として出力する加算回路を示す情報を生成する加算回路
生成手段とを有することを特徴とする論理回路の自動設
計装置。 - 【請求項37】 さらに、前記整数Kの値を、(m+
2)/2以上の最小整数となるように決定する決定手段
を有することを特徴とする請求項35又は36に記載の
論理回路の自動設計装置。 - 【請求項38】 nビットの数を表す信号Xとmビット
の定数を表す信号Aとの積を表す信号Pを求める乗算器
を生成する論理回路の自動設計装置であって、 前記信号Xと信号Aと信号Pを示す情報を入力する入力
手段と、 前記定数信号Aにおける値が1であるビットの数が、0
<K<mなる所定の整数Kより大きいかどうかを判定す
る第1の判定手段と、 前記信号Aの最上位ビットの値が1であるかどうかを判
定する第2の判定手段と、 第1の判定手段の判定結果に応じて、前記定数信号Aの
論理否定信号A0を求める論理否定手段と、 前記A0と前記Xとを入力としてその積を表す信号P0
を求める乗算器M0を示す信号を生成する第1の乗算器
生成手段と、 前記Xと前記乗算器M0の出力信号P0を入力として前
記Xと2 m −1との積X・(2 m −1)と、前記P0との
差X・(2 m −1)−P0の値を表す信号を前記信号P
として出力する回路を示す情報を生成する第1の演算回
路生成手段と、0<K<mなる整数Kについて、前記信
号Aの下位Kビットからなる信号A1と前記信号Xとの
積を表す信号P1を求める乗算器M1、および前記信号
Aの上位m−Kビットからなる信号A2と前記信号Xと
の積を表す信号P2を求める乗算器M2を示す情報を生
成する第2の乗算器生成手段と、 前記信号P1の上位nビットからなる信号Q1と前記信
号P2を入力として、和Q1+P2を表す信号を前記信
号Pの上位n+m−Kビットとして出力し、前記信号P
1の下位Kビットからなる信号を前記信号Pの下位Kビ
ットとして出力する回路を示す情報を生成する第2の演
算回路生成手段と、 前記信号Aの下位m−1ビットからなる信号A3と前記
信号Xとの積を表す信号P3を求める乗算器M3を示す
情報を生成する第3の乗算器生成手段と、 前記第2の判定手段の判定結果において、前記最上位ビ
ットの値が1であるならば、前記信号P3を前記信号P
の下位m−1ビットとして出力するとともに、前記信号
P3の上位nビットからなる信号Q1と前記信号Xを入
力として、前記信号Q1と前記信号Xの和を表す信号を
前記信号Pの上位n+1ビットとして出力する回路を示
す情報を生成する第3の演算回路生成手段と、 前記最上位ビットの値が0であるならば、前記信号P3
を前記信号Pの下位n+m−1ビットとし、値0の信号
を前記信号Pの上位1ビットとして出力する回路を示す
情報を生成する回路生成手段と、 前記乗算器生成手段および前記演算回路生成手段で生成
された乗算器M0、M1、M2、M3、および回路を示
す情報を出力する出力手段とを有することを特徴とする
論理回路の自動設計装置。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4348269A JP2840169B2 (ja) | 1992-12-28 | 1992-12-28 | 論理回路の自動設計方法およびその装置 |
KR1019930028580A KR970006408B1 (ko) | 1992-12-28 | 1993-12-20 | 논리회로의 자동설계방법 및 그 장치와 승산기 |
DE69332817T DE69332817T2 (de) | 1992-12-28 | 1993-12-28 | Verfahren und Gerät zum automatischen Entwurf logischer Schaltung und Multiplikator |
US08/174,450 US5530664A (en) | 1992-12-28 | 1993-12-28 | Method and apparatus for automatically designing logic circuit, and multiplier |
EP93121019A EP0605885B1 (en) | 1992-12-28 | 1993-12-28 | Method and apparatus for automatically designing logic circuit, and multiplier |
US08/620,046 US5703802A (en) | 1992-12-28 | 1996-03-21 | Method and apparatus for automatically designing logic circuit, and multiplier |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4348269A JP2840169B2 (ja) | 1992-12-28 | 1992-12-28 | 論理回路の自動設計方法およびその装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10174573A Division JP3112662B2 (ja) | 1998-06-22 | 1998-06-22 | 乗算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06203098A JPH06203098A (ja) | 1994-07-22 |
JP2840169B2 true JP2840169B2 (ja) | 1998-12-24 |
Family
ID=18395900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4348269A Expired - Fee Related JP2840169B2 (ja) | 1992-12-28 | 1992-12-28 | 論理回路の自動設計方法およびその装置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US5530664A (ja) |
EP (1) | EP0605885B1 (ja) |
JP (1) | JP2840169B2 (ja) |
KR (1) | KR970006408B1 (ja) |
DE (1) | DE69332817T2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2972498B2 (ja) * | 1993-09-02 | 1999-11-08 | 松下電器産業株式会社 | 論理回路の自動設計方法、そのシステム及びその装置並びに乗算器 |
JP2972540B2 (ja) * | 1994-03-24 | 1999-11-08 | 松下電器産業株式会社 | Lsi自動設計システム及びlsi自動設計方法 |
US5815422A (en) * | 1997-01-24 | 1998-09-29 | Vlsi Technology, Inc. | Computer-implemented multiplication with shifting of pattern-product partials |
US6718465B1 (en) * | 2000-02-25 | 2004-04-06 | The Research Foundation Of State University Of New York | Reconfigurable inner product processor architecture implementing square recursive decomposition of partial product matrices |
US6978426B2 (en) * | 2002-04-10 | 2005-12-20 | Broadcom Corporation | Low-error fixed-width modified booth multiplier |
US6971083B1 (en) | 2002-11-13 | 2005-11-29 | Altera Corporation | Method for programming programmable logic device with blocks that perform multiplication and other arithmetic functions |
US7395300B2 (en) * | 2004-01-27 | 2008-07-01 | Broadcom Corporation | System, and method for calculating product of constant and mixed number power of two |
US7380226B1 (en) * | 2004-12-29 | 2008-05-27 | Cadence Design Systems, Inc. | Systems, methods, and apparatus to perform logic synthesis preserving high-level specification |
US7912891B2 (en) * | 2005-12-09 | 2011-03-22 | Electronics And Telecommunications Research Institute | High speed low power fixed-point multiplier and method thereof |
US10289259B2 (en) * | 2007-02-13 | 2019-05-14 | Visual Targeting Corporation | Method for defining a presentation format targetable to a demographic |
GB201111243D0 (en) * | 2011-06-30 | 2011-08-17 | Imagination Tech Ltd | Method and apparatus for use in the sysnthesis of lossy integer multipliers |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5164844A (ja) * | 1974-12-03 | 1976-06-04 | Fujitsu Ltd | |
US4964056A (en) * | 1987-03-25 | 1990-10-16 | Hitachi, Ltd. | Automatic design system of logic circuit |
JP2877303B2 (ja) * | 1987-03-31 | 1999-03-31 | 株式会社東芝 | 集積回路の自動設計装置 |
JP2506991B2 (ja) * | 1987-09-25 | 1996-06-12 | 松下電器産業株式会社 | 回路変換システムと回路変換方法と反転論理生成方法および論理設計システム |
JPH0315984A (ja) * | 1987-09-25 | 1991-01-24 | Matsushita Electric Ind Co Ltd | 機能記述変換方法と論理設計システム |
KR920003908B1 (ko) * | 1987-11-19 | 1992-05-18 | 미쓰비시뎅끼 가부시끼가이샤 | 승산기(乘算器) |
JP2682142B2 (ja) * | 1989-06-14 | 1997-11-26 | 松下電器産業株式会社 | 乗算装置 |
FR2650088A1 (fr) * | 1989-07-18 | 1991-01-25 | Thomson Csf | Procede pour la generation de schemas logiques de circuits multiplieurs parametrables a decodeur de booth au moyen d'un ordinateur et circuits multiplieurs correspondants |
FR2656124A1 (fr) * | 1989-12-15 | 1991-06-21 | Philips Laboratoires Electro | Multiplieur serie programmable. |
JP2563663B2 (ja) * | 1990-08-20 | 1996-12-11 | 松下電器産業株式会社 | 論理設計処理装置およびタイミング調整方法 |
US5345393A (en) * | 1990-08-22 | 1994-09-06 | Matsushita Electric Industrial Co., Ltd. | Logic circuit generator |
US5351206A (en) * | 1992-11-12 | 1994-09-27 | Vlsi Technology, Inc. | Signed two's complement constant multiplier compiler |
-
1992
- 1992-12-28 JP JP4348269A patent/JP2840169B2/ja not_active Expired - Fee Related
-
1993
- 1993-12-20 KR KR1019930028580A patent/KR970006408B1/ko not_active IP Right Cessation
- 1993-12-28 US US08/174,450 patent/US5530664A/en not_active Expired - Lifetime
- 1993-12-28 EP EP93121019A patent/EP0605885B1/en not_active Expired - Lifetime
- 1993-12-28 DE DE69332817T patent/DE69332817T2/de not_active Expired - Fee Related
-
1996
- 1996-03-21 US US08/620,046 patent/US5703802A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5703802A (en) | 1997-12-30 |
EP0605885A2 (en) | 1994-07-13 |
US5530664A (en) | 1996-06-25 |
EP0605885A3 (en) | 1995-05-10 |
DE69332817T2 (de) | 2003-11-06 |
KR970006408B1 (ko) | 1997-04-28 |
JPH06203098A (ja) | 1994-07-22 |
DE69332817D1 (de) | 2003-05-08 |
EP0605885B1 (en) | 2003-04-02 |
KR940015785A (ko) | 1994-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5506799A (en) | Booth array multiplying circuit having carry correction | |
US5222037A (en) | Floating-point processor for performing an arithmetic operation on fixed-point part data with high speed rounding of a result | |
JP2972498B2 (ja) | 論理回路の自動設計方法、そのシステム及びその装置並びに乗算器 | |
US7188133B2 (en) | Floating point number storage method and floating point arithmetic device | |
JP2000259394A (ja) | 浮動小数点乗算器 | |
US5184318A (en) | Rectangular array signed digit multiplier | |
JP2840169B2 (ja) | 論理回路の自動設計方法およびその装置 | |
US5144576A (en) | Signed digit multiplier | |
US5282156A (en) | Leading one anticipator and floating point addition/subtraction apparatus employing same | |
JP2608165B2 (ja) | ディジタル信号処理システムにおける実時間2の補数コードの乗算方法及び装置 | |
US5903470A (en) | Method and apparatus for automatically designing logic circuit, and multiplier | |
US5289399A (en) | Multiplier for processing multi-valued data | |
JP3112662B2 (ja) | 乗算器 | |
US4118786A (en) | Integrated binary-BCD look-ahead adder | |
US7051062B2 (en) | Apparatus and method for adding multiple-bit binary-strings | |
JP2645422B2 (ja) | 浮動小数点演算処理装置 | |
JPH0370416B2 (ja) | ||
JPH06243194A (ja) | 論理回路の自動設計方法およびその装置 | |
JPH0823814B2 (ja) | 多重ディジット10進数を2進数に変換する装置および統一された比復号器 | |
JPH113210A (ja) | 3入力比較器、並びにこれを用いた飽和演算装置およびその演算方法 | |
KR20010067226A (ko) | 인터폴레이션 방법 및 장치 | |
JP2537876B2 (ja) | 丸め処理回路 | |
JP4643951B2 (ja) | 剰余系の被変換数を2進数に変換する変換装置及び変換方法 | |
JP3201097B2 (ja) | 乗算器における乗算処方方法 | |
JPH11203110A (ja) | 除算器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |