(57)【要約】【課題】設計対象となる情報処理装置のハードウエアの規模を効率よく縮小することが可能な設計装置を提供する。【解決手段】プログラムを構成する各命令を構成するビットの割り当てを設定する設定手段（Ｓ１〜Ｓ４）と、設定手段の設定の結果に基づいて、演算回路を構成する回路素子群を対応する設計情報に変換する第１変換手段（Ｓ５）と、設定手段の設定の結果に基づいて、記憶回路のランダムゲート回路を構成する回路素子群を設計情報に変換する第２変換手段（Ｓ６）と、第１および第２変換手段によって得られた設計情報を合成する合成手段（Ｓ７）と、合成された設計情報に基づいて、情報処理装置の回路規模を算出する算出手段（Ｓ８）と、算出手段によって算出された回路規模が所定の目標値以下になるように、設定手段によるビットの割り当てを調整する調整手段（Ｓ１〜Ｓ４）と、を有する。【選択図】図３
2009199112.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路とを有す
る情報処理装置を設計する設計装置において、
前記記憶回路を論理素子の組み合わせ回路としてのランダムゲート回路として構成する
ともに、
前記プログラムを構成する各命令を構成するビットの割り当てを設定する設定手段と、
前記設定手段による設定の結果に基づいて、前記演算回路を構成する回路素子群を対応
する設計情報に変換する第１変換手段と、
前記設定手段による設定の結果に基づいて、前記記憶回路の前記ランダムゲート回路を
構成する回路素子群を設計情報に変換する第２変換手段と、
前記第１および第２変換手段によって得られた前記設計情報を合成する合成手段と、
前記合成手段によって合成された設計情報に基づいて、前記情報処理装置の回路規模を
算出する算出手段と、
前記算出手段によって算出された回路規模が所定の目標値以下になるように、前記設定
手段によるビットの割り当てを調整する調整手段と、
を有することを特徴とする設計装置。
【請求項２】
請求項１記載の設計装置において、
前記命令は可変長符号であり、
前記設定手段は、前記プログラムへの出現頻度が高い命令に対して、短いビット長のオ
ペコードを割り当てる設定を行い、
前記調整手段は、前記命令に対するオペコードの割り当てを変更することにより、前記
回路規模が所定の目標値以下になるように調整する、
ことを特徴とする設計装置。
【請求項３】
請求項１記載の設計装置において、
前記命令は固定長符号であり、
前記定手段は、前記プログラムへの出現頻度が高い命令に対して、不使用ビットが多い
オペコードを割り当てる設定を行い、
前記調整手段は、前記命令に対するオペコードの割り当てを変更することにより、前記
回路規模が所定の目標値以下になるように調整する、
ことを特徴とする設計装置。
【請求項４】
請求項３に記載の設計装置において、
前記調整手段は、不使用ビットに設定する値を変更することにより、前記回路規模が所
定の目標値以下になるように調整することを特徴とする設計装置。
【請求項５】
プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路とを有す
る情報処理装置を設計する設計装置による設計方法において、
前記記憶回路を論理素子の組み合わせ回路としてのランダムゲート回路として構成する
ともに、
前記プログラムを構成する各命令を構成するビットの割り当てを設定する設定ステップ
と、
前記設定ステップによる設定の結果に基づいて、前記演算回路を構成する回路素子群を
対応する設計情報に変換する第１変換ステップと、
前記設定ステップによる設定の結果に基づいて、前記記憶回路の前記ランダムゲート回
路を構成する回路素子群を設計情報に変換する第２変換ステップと、
前記第１および第２変換ステップによって得られた前記設計情報を合成する合成ステッ
プと、
前記合成ステップによって合成された設計情報に基づいて、前記情報処理装置の回路規
模を算出する算出ステップと、
前記算出ステップによって算出された回路規模が所定の目標値以下になるように、前記
設定ステップによるビットの割り当てを調整する調整ステップと、
を有することを特徴とする設計装置による設計方法。
【請求項６】
プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路とを有す
る情報処理装置を設計する設計プログラムにおいて、
前記記憶回路を論理素子の組み合わせ回路としてのランダムゲート回路として構成する
ともに、
前記プログラムを構成する各命令を構成するビットの割り当てを設定する設定手段、
前記設定手段による設定の結果に基づいて、前記演算回路を構成する回路素子群を対応
する設計情報に変換する第１変換手段、
前記設定手段による設定の結果に基づいて、前記記憶回路の前記ランダムゲート回路を
構成する回路素子群を設計情報に変換する第２変換手段、
前記第１および第２変換手段によって得られた前記設計情報を合成する合成手段、
前記合成手段によって合成された設計情報に基づいて、前記情報処理装置の回路規模を
算出する算出手段、
前記算出手段によって算出された回路規模が所定の目標値以下になるように、前記設定
手段によるビットの割り当てを調整する調整手段、
としてコンピュータを機能させるコンピュータ読み取り可能な設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
設計装置、設計装置による設計方法、および、設計プログラムに係り、特に、所定のプ
ログラムに対応するコアを設計するための技術に関する。
【背景技術】
【０００２】
特許文献１には、ワンチップマイコンにおいて、比較分岐条件命令に対応する新たなア
センブリ言語を追加することにより、高級言語によってプログラムを作成した場合であっ
ても、プログラムのサイズが大きくならないマイクロプロセッサに関する技術が開示され
ている。
【特許文献１】特開平１１−２４９２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、特許文献１の技術では、プログラム自体のサイズを小さくすることはできる
が、これを実行するハードウエアの回路規模を小さくすることはできないという問題点が
ある。
そこで、本発明の目的は、設計対象となる情報処理装置のハードウエアの規模を効率よ
く縮小することが可能な設計装置、設計装置による設計方法、および、設計プログラムを
提供することにある。
【課題を解決するための手段】
【０００４】
上記課題を解決するため、本発明の第１態様は、プログラムを格納するための記憶回路
と、前記プログラムを実行する演算回路とを有する情報処理装置を設計する設計装置にお
いて、前記記憶回路を論理素子の組み合わせ回路としてのランダムゲート回路として構成
するともに、前記プログラムを構成する各命令を構成するビットの割り当てを設定する設
定手段と、前記設定手段による設定の結果に基づいて、前記演算回路を構成する回路素子
群を対応する設計情報に変換する第１変換手段と、前記設定手段による設定の結果に基づ
いて、前記記憶回路の前記ランダムゲート回路を構成する回路素子群を設計情報に変換す
る第２変換手段と、前記第１および第２変換手段によって得られた前記設計情報を合成す
る合成手段と、前記合成手段によって合成された設計情報に基づいて、前記情報処理装置
の回路規模を算出する算出手段と、前記算出手段によって算出された回路規模が所定の目
標値以下になるように、前記設定手段によるビットの割り当てを調整する調整手段と、を
有することを特徴としている。
上記構成によれば、プログラムを構成する各命令を構成するビットの割り当てを設定し
、設定結果に基づいて、演算回路を構成する回路素子群を対応する設計情報に変換し、設
定の結果に基づいて、記憶回路のランダムゲート回路を構成する回路素子群を設計情報に
変換し、得られた設計情報を合成し、合成された設計情報に基づいて、情報処理装置の回
路規模を算出し、算出された回路規模が所定の目標値以下になるように、ビットの割り当
てを調整する。これにより、回路規模が目標値以下になるように、命令を構成するビット
の割り当てが調整されるので、設計対象となる情報処理装置のハードウエアの規模を効率
よく縮小することが可能となる。
【０００５】
また、本発明の第２態様は、第１態様において、前記命令は可変長符号であり、前記設
定手段は、前記プログラムへの出現頻度が高い命令に対して、短いビット長のオペコード
を割り当てる設定を行い、前記調整手段は、前記命令に対するオペコードの割り当てを変
更することにより、前記回路規模が所定の目標値以下になるように調整する、ことを特徴
としている。
上記構成によれば、プログラムへの出現頻度が高い命令に対して、短いビット長のオペ
コードを割り当てる設定を行い、命令に対するオペコードの割り当てを変更することによ
り、回路規模が所定の目標値以下になるように調整する。これにより、命令に対するビッ
ト長の異なるオペコードの割り当てを調整することにより、設計対象となる情報処理装置
のハードウエアの規模を効率よく縮小することが可能となる。
【０００６】
また、本発明の第３態様は、第１態様において、前記命令は固定長符号であり、前記定
手段は、前記プログラムへの出現頻度が高い命令に対して、不使用ビットが多いオペコー
ドを割り当てる設定を行い、前記調整手段は、前記命令に対するオペコードの割り当てを
変更することにより、前記回路規模が所定の目標値以下になるように調整することを特徴
としている。
上記構成によれば、プログラムへの出現頻度が高い命令に対して、不使用ビットが多い
オペコードを割り当てる設定を行い、命令に対するオペコードの割り当てを変更すること
により、回路規模が所定の目標値以下になるように調整する。これにより、命令に対する
不使用ビット数の異なるオペコードの割り当てを調整することにより、設計対象となる情
報処理装置のハードウエアの規模を効率よく縮小することが可能となる。
【０００７】
また、本発明の第４態様は、第３態様において、前記調整手段は、不使用ビットに設定
する値を変更することにより、前記回路規模が所定の目標値以下になるように調整するこ
とを特徴としている。
上記構成によれば、不使用ビットに設定する値を変更することにより、回路規模が所定
の目標値以下になるように調整される。これにより、不使用ビットに設定される値を調整
することにより、論理圧縮をしやすくすることで、設計対象となる情報処理装置のハード
ウエアの規模を効率よく縮小することが可能となる。
【０００８】
また、本発明の第５態様は、プログラムを格納するための記憶回路と、前記プログラム
を実行する演算回路とを有する情報処理装置を設計する設計装置による設計方法において
、前記記憶回路を論理素子の組み合わせ回路としてのランダムゲート回路として構成する
ともに、前記プログラムを構成する各命令を構成するビットの割り当てを設定する設定ス
テップと、前記設定ステップによる設定の結果に基づいて、前記演算回路を構成する回路
素子群を対応する設計情報に変換する第１変換ステップと、前記設定ステップによる設定
の結果に基づいて、前記記憶回路の前記ランダムゲート回路を構成する回路素子群を設計
情報に変換する第２変換ステップと、前記第１および第２変換ステップによって得られた
前記設計情報を合成する合成ステップと、前記合成ステップによって合成された設計情報
に基づいて、前記情報処理装置の回路規模を算出する算出ステップと、前記算出ステップ
によって算出された回路規模が所定の目標値以下になるように、前記設定ステップによる
ビットの割り当てを調整する調整ステップと、を有することを特徴としている。
上記方法によれば、プログラムを構成する各命令を構成するビットの割り当てを設定し
、設定結果に基づいて、演算回路を構成する回路素子群を対応する設計情報に変換し、設
定の結果に基づいて、記憶回路のランダムゲート回路を構成する回路素子群を設計情報に
変換し、得られた設計情報を合成し、合成された設計情報に基づいて、情報処理装置の回
路規模を算出し、算出された回路規模が所定の目標値以下になるように、ビットの割り当
てを調整する。これにより、回路規模が目標値以下になるように、命令を構成するビット
の割り当てが調整されるので、設計対象となる情報処理装置のハードウエアの規模を効率
よく縮小することが可能となる。
【０００９】
また、プログラムを格納するための記憶回路と、前記プログラムを実行する演算回路と
を有する情報処理装置を設計する設計プログラムにおいて、前記記憶回路を論理素子の組
み合わせ回路としてのランダムゲート回路として構成するともに、前記プログラムを構成
する各命令を構成するビットの割り当てを設定する設定手段、前記設定手段による設定の
結果に基づいて、前記演算回路を構成する回路素子群を対応する設計情報に変換する第１
変換手段、前記設定手段による設定の結果に基づいて、前記記憶回路の前記ランダムゲー
ト回路を構成する回路素子群を設計情報に変換する第２変換手段、前記第１および第２変
換手段によって得られた前記設計情報を合成する合成手段、前記合成手段によって合成さ
れた設計情報に基づいて、前記情報処理装置の回路規模を算出する算出手段、前記算出手
段によって算出された回路規模が所定の目標値以下になるように、前記設定手段によるビ
ットの割り当てを調整する調整手段、としてコンピュータを機能させることを特徴として
いる。
上記設計プログラムによれば、プログラムを構成する各命令を構成するビットの割り当
てを設定し、設定結果に基づいて、演算回路を構成する回路素子群を対応する設計情報に
変換し、設定の結果に基づいて、記憶回路のランダムゲート回路を構成する回路素子群を
設計情報に変換し、得られた設計情報を合成し、合成された設計情報に基づいて、情報処
理装置の回路規模を算出し、算出された回路規模が所定の目標値以下になるように、ビッ
トの割り当てを調整する。これにより、回路規模が目標値以下になるように、命令を構成
するビットの割り当てが調整されるので、設計対象となる情報処理装置のハードウエアの
規模を効率よく縮小することが可能となる。
なお、この制御プログラムは、フレキシブルディスクやハードディスク装置等の磁気的
記録媒体、ＭＯ等の光磁気記録媒体、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷ
、ＤＶＤ−ＲＡＭ等の光学式記録媒体、半導体記憶デバイスを用いた記憶装置等の各種記
録媒体に、コンピュータによって読み取り可能な形式で記録された形態としてもよい。
【発明を実施するための最良の形態】
【００１０】
次に図面を参照して本発明の好適な実施の形態について説明する。
図１は、第１実施形態の設計装置の概要構成ブロック図である。
設計装置１０は、大別すると、各種情報処理を行う設計装置本体１１と、各種情報を表
示する表示装置１２と、ユーザが各種操作を行うキーボード、マウスなどの操作部１３と
、後述する処理を実現するための設計プログラムを記憶した外部記憶装置１４と、ソース
プログラムを格納する外部記憶媒体１５と、外部記憶媒体１５に記憶されているソースコ
ードを読み出すことが可能な媒体リード／ライト装置１６と、を備えている。
ここで、外部記憶媒体１５としては、ＰＲＯＭ（Programmable Read Only Memory）な
どの半導体メモリ、半導体メモリカード、光ディスク、磁気ディスクなどが挙げられる。
設計装置本体１１は、コンピュータとして構成されており、各種処理を行うＭＰＵ（Ma
in Processing Unit）２１と、制御プログラムを含む各種データを記憶するＲＯＭ２２と
、各種データを一時的に記憶するＲＡＭ（Random Access Memory）２３と、を備え、各部
は、バス２４を介して接続されている。
【００１１】
図２は、図１に示す設計装置によって設計されたネットリストに基づいて製造された情
報処理装置３０の構成例を示す図である。図２の例では、情報処理装置３０は、例えば、
ワンチップのマイクロコンピュータとして構成され、ＣＰＵ（Central Processing Unit
）３１、ランダムゲート回路３２、レジスタ群３３、周辺回路３４、および、Ｉ／Ｏ（In
put Output）回路３５を有している。ここで、ＣＰＵ３１は、ランダムゲート回路３２に
格納されているプログラムおよびデータに基づいて、各種情報処理を実行するとともに、
装置の各部を制御する。ランダムゲート回路３２は、論理素子の組み合わせによって構成
され、入力の値によってその時点における出力が定まる論理回路である。すなわち、ラン
ダムゲート回路３２は、通常のＲＯＭのように、内部状態を記憶する機能を有し、入力と
内部状態の双方により、その出力が定まる順序回路ではなく、ある入力が与えられたとき
に、当該入力のみに依存して定まる出力が与えられる組み合わせ回路である。したがって
、ランダムゲート回路３２は、通常のＲＯＭのように、マトリクス状に配置された記憶素
子としてのセルを有しておらず、論理素子の組み合わせによって構成される。
【００１２】
レジスタ群３３は、複数のレジスタによって構成され、ＣＰＵ３１によって実行される
プログラムおよびデータを一時的に格納するメモリとして機能する。周辺回路３４は、割
り込み回路、タイマ回路、ＤＭＡ（Direct Memory Access）回路を有している。割り込み
回路は、例えば、タイマ回路、ＤＭＡ回路、または、Ｉ／Ｏ回路３５を介して接続された
外部機器に起因する割り込みを発生し、ＣＰＵ３１に通知する。タイマ回路は、例えば、
日時情報を生成してＣＰＵ３１に供給する。ＤＭＡ回路は、ＣＰＵ３１を介さずに、レジ
スタ群３３のレジスタ間で情報を転送したり、Ｉ／Ｏ回路３５に接続された外部機器とレ
ジスタ群３３との間で情報を転送したりする回路である。Ｉ／Ｏ回路３５は、図示せぬ外
部機器との間で情報を授受する際の制御を行う回路である。なお、周辺回路３４として、
これ以外の回路（例えば、コプロセッサ（Co-Processor））を有していてもよい。あるい
は、周辺回路３４自体を有しない構成としてもよい。すなわち、周辺回路３４は必須の構
成要素ではない。
【００１３】
ここで、具体的な説明に先立ち、本発明の動作原理について説明する。
従来において、情報処理装置を設計する際には、ＣＰＵ３１としては予め定められた回
路を用い、これにユーザが必要なハードウエアモジュールを追加することによりハードウ
エアを設計する。しかし、このような従来の方法では、ＣＰＵ３１として予め定められた
回路を使用することから、実装されるプログラムによっては（特に、小規模なプログラム
の場合には）、ハードウエアの規模がプログラムのステップ数に比較して大きくなってし
まう場合がある。
そこで、本発明の第１実施形態では、可変長符号の命令を実行するＣＰＵ３１を有する
情報処理装置３０を設計する際に、プログラムへの出現頻度が高い命令（＝オペコード＋
オペランド）には、ビット長が短いオペコードを割り当てるとともに、新たなビットの割
り当てがなされたオペコードに基づいて、ＣＰＵ３１のＲＴＬ（Register Transfer Leve
l）記述を変更する。新たなビット割り当てに基づいて変更されたプログラムについても
、論理素子の組み合わせ回路としてのランダムゲート回路に変換する。そして、ＣＰＵの
ＲＴＬ記述と、プログラムのＲＴＬ記述とを合成し、得られたＲＴＬ記述に基づいて情報
処理装置３０の回路規模を算出し、回路規模が目標値以下になるように、命令へのオペコ
ードの割り当てを調整する。これにより、回路規模が目標値以下となるビットがオペコー
ドに対して割り当てられる。なお、ＲＴＬ記述とは、集積回路設計において同期デジタル
回路を記述する手法の一種であり、回路の動作をハードウェアレジスタ（フリップフロッ
プなど）とブール論理回路の間の信号の流れ（データ転送）として記述する。なお、以下
では、「ＲＴＬ記述」を適宜「ＲＴＬ」と称する。
【００１４】
一方、プログラムについては、論理素子の組み合わせ回路としてのランダムゲート回路
に変換するためのＲＴＬ記述に変換する。そして、このようにして得られたコア部のＲＴ
Ｌ記述と、プログラムのＲＴＬ記述と、ユーザが生成したユーザモジュールのＲＴＬ記述
とを合成し、回路部品の接続関係を記述したネットリストを生成する。このようにして生
成されたネットリストに基づいて、図２に示す情報処理装置３０を製造する。
このような方法によれば、回路規模に応じて、命令へのオペコードの割り当てが調整さ
れることから、回路規模が目標値以下になるように設計を行うことができる。また、回路
規模を縮小することにより、情報処理装置３０の動作速度を向上させるとともに、消費電
力を削減できる。
【００１５】
つぎに、第１実施形態の詳細な動作について説明する。図３は、設計装置１０における
情報処理装置３０の設計の流れを示す図である。また、図４は、設計装置１０において実
行される処理のフローチャートである。なお、図３に示す機能ブロックおよび図４に示す
各処理ステップは、図１に示す設計装置１０のハードウエアとしてのＭＰＵ２１、ＲＯＭ
２２、および、ＲＡＭ２３と、外部記憶装置１４に記憶されているソフトウエアとしての
プログラムが協働することにより実現される。
処理が開始されると、まず、ソースプログラム４０に対する解析が行われる（ステップ
Ｓ１）。図５は、ソースプログラム４０の一例を示している。図５の例では、ラベル「Ｓ
ＴＡＲＴ」およびラベル「ＥＮＤ」の間にプログラムが記述されている。ここで、「ａｎ
ｄ  ｒ０，ｒ１」は、レジスタｒ０の値とレジスタｒ１の値の論理積を演算し、演算結果
をレジスタｒ１に格納する命令である。「ａｄｄ  ｒ０，ｒ２」は、レジスタｒ０の値と
レジスタｒ１の値を加算し、演算結果をレジスタｒ２に代入する命令である。「ｌｄ  ２
５，ｒ０」は、アドレス「２５」に格納されている値を、レジスタｒ０に代入する命令で
ある。「ｘｏｒ  ｒ３，ｒ５」は、レジスタｒ３の値とレジスタｒ５の値の排他的論理和
を演算し、演算結果をレジスタｒ５に格納する命令である。「ｓｕｂ  ｒ３，ｒ０」は、
レジスタｒ３の値からレジスタｒ０の値を減算し、演算結果をレジスタｒ０に代入する命
令である。「ｊｚ  ＬＡＢＥＬ」は、直前の演算により、ゼロフラグが立った場合には、
「ＬＡＢＥＬ」に分岐する条件分岐命令である。「ｌｄ  ３０，ｒ３」は、アドレス「３
０」に格納されている値を、レジスタｒ０に代入する命令である。「ｏｒ  ｒ４，ｒ５」
は、レジスタｒ４の値とレジスタｒ５の値の論理和を演算し、演算結果をレジスタｒ５に
格納する命令である。「ｓｔ  ３０，ｒ４」は、レジスタｒ４に格納されている値を、ア
ドレス「３０」に格納する命令である。「ｊｍｐ  ＥＮＤ」は、ラベル「ＥＮＤ」に無条
件にジャンプする命令である。
【００１６】
ステップＳ１の処理では、図５に示すようなソースプログラム４０を参照し、ソースプ
ログラム４０に含まれている命令の種類、使用されているレジスタの種類、および、ソー
スプログラムのプログラム長等が解析される。
【００１７】
ステップＳ２では、ステップＳ１の解析結果に基づいて、オペランド長が決定される。
すなわち、使用されているレジスタの種類に応じてレジスタ識別ビット数を決定するとと
もに、プログラムのサイズに基づいて、プログラムアドレス空間のアドレス指定を行うア
ドレス指定ビット数を決定する。具体的には、プログラム中で使用されているレジスタが
８種類である場合、レジスタを指定するためのビットは３ビット（０〜７の値を表現可能
なビット数）で十分であるので、レジスタ指定ビット数は、３ビットに設定される。また
、プログラムのサイズが、例えば、２５６ステップ以下である場合には、アドレスを指定
するためのビット数は、８ビット（０〜２５５の値を表現可能なビット数）で十分である
ので、アドレス指定ビット数は８ビットに設定される。
【００１８】
ステップＳ３では、各命令のプログラムへの出現頻度が計算される。例えば、図５の例
では、命令「ｌｄ」の出現頻度は２回、それ以外は１回として計算される。なお、実際の
プログラムは、ステップ数が図５の場合よりも長いので、前述した場合よりも多い出願頻
度が計算される。
【００１９】
ステップＳ４では、ステップＳ２において定められたオペランド長と、ステップＳ３に
おいて計算された各命令の出現頻度に基づいて、出現頻度が高い命令に対して、ビット長
が短いオペコードを割り当て、最適化後命令仕様４３を生成する。その際、オペランドの
ビット長と、オペコードのビット長の合計が、ＣＰＵ３１によって処理可能な最大ビット
長を超えないようにオペコードの割り当てを行う。図６は、割り当ての一例を示す図であ
る。この例では、オペランド長が１５ビットである命令「ｌｉ」に、無条件に最短のビッ
ト長であるオペコード「１」が割り当てられている。また、出現頻度が高い命令「ａｄｄ
」および命令「ｓｕｂ」に対して、その次に短いビット長であるオペコード「０１０」お
よび「０１１」がそれぞれ割り当てられている。それ以外の命令に対しては、５ビットの
オペコードがそれぞれ割り当てられている。また、同一のビット長が割り当てられる命令
については、例えば、出現頻度が高い命令に対して「０」の個数が多いオペコードを割り
当てる。図６の例では、命令「ｌｉ」以外は、列挙されている順に出現頻度が高い（上位
に列挙されている程出現頻度が高い）とする。例えば、３ビットのオペコードの場合、命
令「ａｄｄ」の方が命令「ｓｕｂ」よりも出現頻度が高いので、「０」が２ビットである
「０１０」が割り当てられている。また、５ビットのオペコードの場合には、「０」が５
ビットであるオペコードが出現頻度が最も高い命令「ｌｄ」に割り当てられ、それ以外の
命令については図６に示すような割り当てがなされている。
なお、図６において、ハッチングは、不使用ビットを示している。第１実施形態では、
命令は、可変長符号として構成されているので、不使用ビットは、ランダムゲート回路３
２には格納されず、また、ＣＰＵ３１は、不使用ビットについては処理の対象としない。
また、プログラム中に全く出現しない命令については、オペコードの割り当て対象から
除外する。すなわち、出現しない命令は、最適化後命令仕様４３から除外する。
【００２０】
ステップＳ５では、ステップＳ１〜Ｓ４の処理によって生成された最適化後命令仕様４
３に基づいて、コア部ＲＴＬ４２を最適化する処理を実行する。より詳細には、以下の処
理を実行する。
（Ａ１）命令デコーダを、最適化後命令仕様４３に応じて変更する。すなわち、最適化後
命令仕様４３に基づいて、コア部ＲＴＬ４２の命令デコーダを変更する。
（Ａ２）除外された命令が存在する場合には、除外された命令に対応する記述を削除する
。
（Ａ３）レジスタ数が減少された場合には、減少された数に応じてレジスタを削除する。
（Ａ４）アドレス指定ビット数が減少された場合には、ＰＣ（プログラムカウンタ）のビ
ット幅を、プログラムサイズに応じて削減する。例えば、アドレス指定ビット数が８ビッ
トになった場合には、ＰＣのビット幅を８ビットとする。
以上の処理により、コア部ＲＴＬ４２が最適化され、コア部最適化後ＲＴＬ４４が生成
される。
【００２１】
ステップＳ６では、ソースプログラム４０を、ＲＴＬ記述に変換する処理を実行する。
図７は、図５に示すソースプログラムを、最適化後命令仕様４３に基づいてＲＴＬ記述に
変換した例を示す図である。この例では、「ｒｏｍａｄｒｓ」の入力に対して、「ｒｏｍ
ｏｕｔ」を出力するランダムゲートとして記述されている。より詳細には、「ｒｏｍａｄ
ｒｓ」の値に応じて、０〜９に記述された「ＲＯＭＯＵＴＳ」の値が選択されて出力され
る。例えば、「ｒｏｍａｄｒｓ」の値が“０”である場合には、図５の「ａｎｄ  ｒ０，
ｒ１」に対応する１１ビットの情報である「０００１＿１０００＿００１」が出力される
。ｃａｓｅ文の最後に記述されているように、デフォルト（ｄｅｆａｕｌｔ）値は、「０
０００＿００００＿００００＿００００」とされている。なお、このとき、ＲＴＬ記述に
対しては、論理圧縮が施される。図８は、図５とは異なるプログラムに対応するＲＴＬ記
述に対して、論理圧縮が施される様子を説明する図である。この図の例では、各命令の同
一ビットにおいて連続する「０」と、命令「ＳＬＥＥＰ」の第０ビットから第９ビットが
論理圧縮の対象とされている。なお、実際の論理圧縮は、例えば、クワイン-マクラスキ
ー法等のアルゴリズムに基づいて実行することができる。
【００２２】
ステップＳ７では、コア部最適化後ＲＴＬ４４、プログラム部ＲＴＬ４５、および、ユ
ーザモジュールＲＴＬ４６を合成する。ここで、ユーザモジュールＲＴＬ４６は、ユーザ
によって生成された回路のモジュールであり、例えば、ユーザが希望する機能を追加する
ためのモジュールである。このようにして合成されたＲＴＬ記述は、ネットリスト４７に
変換される。
【００２３】
ステップＳ８では、ステップＳ７で生成されたネットリスト４７に基づいて回路規模が
算出される。ここで、回路規模とは、例えば、回路を構成する回路素子の個数（例えば、
ゲート数）をいう。なお、回路素子のみならず、回路素子同士を接続する接続線の本数も
考慮して回路規模を算出するようにしてもよい。すなわち、回路規模を、回路素子の個数
と、配線数の総和として定義してもよい。
【００２４】
ステップＳ９では、回路規模が目標値よりも小さいか否かが判定され、小さい場合には
処理を終了し、それ以外の場合にはステップＳ１０に進む。ここで、目標値とは、予め設
計者によって設定された値であり、例えば、「１００万ゲート」等の値である。ステップ
Ｓ８で算出された回路規模が、例えば、１２０万ゲートである場合には、前述した目標値
の１００万ゲートよりも大きいので、ステップＳ１０に進む。なお、回路規模が、例えば
、８０万ゲートになった場合には、処理を終了する。
【００２５】
ステップＳ１０では、命令へのオペコードの割り当てを変更する。このとき、オペコー
ドの割り当てを変更する方法としては、オペコードのビット数が同じ命令間における割り
当ての変更と、ビット数に無関係の割り当ての変更とがある。前者の例としては、例えば
、３ビットの命令間での割り当て変更と、５ビットの命令間での割り当ての変更がある。
また、後者の例としては、３ビット、５ビットに拘わらず、オペコードの割り当てを変更
する方法がある。
なお、これらのいずれを採用するかについては、例えば、組み合わせ数の比較的少ない
前者を先に実行し、目標値以下にならない場合には後者を実行する方法がある。
そして、割り当て変更が実行されると、ステップＳ５に戻って、新たに割り当てられた
オペコード（新たな最適化後命令仕様４３）に基づいて、前述の場合と同様の処理が実行
される。そして、回路規模が目標値以下になった場合には、ステップＳ９においてＹｅｓ
と判定され、処理を終了する。
以上のようにして生成されたネットリストに基づいて、情報処理装置３０が製造される
ことになる。
【００２６】
このようにして製造された情報処理装置３０は、ソースプログラム４０に基づいて、命
令仕様４１が最適化されているとともに、コア部ＲＴＬ４２が最適化されている。このた
め、最適化によって命令のビット数が減少した場合には、デコーダが処理対象とする命令
の数が減少することから、デコーダの構成を簡略化し、回路規模を縮小することができる
。また、レジスタ数が減少された場合には、それに応じて回路規模を縮小することができ
る。また、アドレス指定ビット数が減少された場合には、プログラムカウンタのビット幅
を減少し、回路規模を縮小することができる。さらに、回路規模の縮小に応じて、消費電
力の削減が可能となるとともに、処理速度を向上することが可能になる。
【００２７】
また、このようにして製造された情報処理装置３０では、ランダムゲート回路３２は、
最適なオペコードの割り当てに基づいて論理圧縮が施されるため、回路規模を目標値以下
にすることができる。また、その際、回路規模が目標値以下になるように、ビットの割り
当てが自動的に調整されることから、目標値以下の回路規模の回路を容易に設計すること
ができる。
【００２８】
つぎに、本発明の第２実施形態について説明する。図９は、本発明の第２実施形態の処
理の流れを説明する図である。なお、この図において、図４と対応する部分には同一の符
合を付してその説明を省略する。図９の例では、図３の場合と比較して、ステップＳ３１
〜Ｓ３２の処理が追加されている。また、第１実施形態では、ＣＰＵ３１は可変長の命令
に基づいて動作するものとしたが、第２実施形態では、ＣＰＵ３１は、固定長の命令に基
づいて処理を実行する。それ以外の処理は、図３の場合と同様である。
すなわち、図９の例では、命令は固定長として設定されており、図６に示すオペランド
中において、ハッチングが施されている不使用ビットに対して、「０」または「１」が割
り当てられ、割り当てられた状態でＲＴＬ記述に変換される。その際、図１０に示すよう
に、「ｘ」で示される不使用ビットが、例えば、「０」である場合には、図中において実
線で囲まれているビットは、論理圧縮を施すことができるため、ランダムゲート回路３２
の回路規模を縮小することができる。
そこで、図９の処理では、このような論理圧縮が効率よく実行できるように、不使用ビ
ットに対して「０」または「１」を割り当てるとともに、図４の場合と同様に、命令に対
するオペコードの割り当てを適宜変更する。これにより、論理圧縮の圧縮率を高めること
により、回路規模を縮小することができる。
【００２９】
より詳細には、図９の例では、ステップＳ１〜Ｓ４の処理により、プログラムにおける
出現頻度が高い命令に対しては、ビット数が短いオペコードが割り当てられる。第２実施
形態では、命令は固定長であるので、オペコードのビット数が短いことは、不使用ビット
のビット数が多いことを意味する。例えば、図６において、命令「ａｄｄ」および「ｓｕ
ｂ」については、不使用ビットは７ビットである。また、「ａｎｄ」、「ｏｒ」、および
、「ｘｏｒ」については５ビットとされ、また、「ｊｍｐ」および「ｊｚ」については３
ビットとされ、さらに、「ｎｏｐ」については、１１ビットとされている。なお、出現頻
度が高い命令に対して、不使用ビットが多い命令を割り当てるのは、調整の自由度を上げ
ることにより、圧縮率を高めるためである。
【００３０】
ステップＳ３１の処理では、不使用ビットに対して所定の値が設定される。より詳細に
は、全ての不使用ビットに対して、例えば、値「０」を設定する。そして、ステップＳ６
において、ソースプログラムをＲＴＬ記述に変換する。なお、この際、前述したクワイン
-マクラスキー法等のアルゴリズムに基づいて論理圧縮を施す。そして、続くステップＳ
７において、得られたプログラム部ＲＴＬ４５と、ステップＳ５において最適化されたコ
ア部最適化後ＲＴＬ４４と、ユーザモジュールＲＴＬ４６とを合成し、ネットリストに変
換する。
【００３１】
ステップＳ８では、ステップＳ７において得られたネットリスト４７に基づいて、前述
した場合と同様に回路規模が算出される。そして、ステップＳ３２に進み、不使用ビット
に対する全パターンの割り当てが試されたか否かを判定し、全パターンが終了した場合に
はステップＳ９に進み、それ以外の場合にはステップＳ３３に進む。ステップＳ３３では
、不使用ビットへの設定値が変更され、ステップＳ６に戻って同様の処理が繰り返される
。より詳細には、不使用ビットに割り当てるパターンとしては、例えば、前述した全ての
不使用ビットに「０」を設定するパターン、全ての不使用ビットに「１」を設定するパタ
ーン、図１０において、隣接するビットが同じ値となるパターン、あるいは、アトランダ
ムなパターンが存在する。
【００３２】
ステップＳ３２において、全てのパターンに対する処理が終了したと判定した場合（ス
テップＳ３２；Ｙｅｓ）の場合には、ステップＳ９に進み、チェックされた全てのパター
ンの中に、回路規模が目標値以下になるパターンが存在するか否かを判定し、目標値以下
になるパターンが存在する場合（ステップＳ９；Ｙｅｓ）には処理を終了し、それ以外の
場合（ステップＳ９；Ｎｏ）には、ステップＳ１０に進み、第１実施形態の場合と同様に
、命令に対するオペコードの割り当てを変更し、ステップＳ５に戻って前述の場合と同様
の処理を繰り返す。なお、チェックされた全てのパターンにおいて、目標値以下のものが
複数存在する場合には、最小の回路規模のパターンを選択する。
【００３３】
以上の処理によれば、命令に対するオペコードの割り当てを変更するとともに、不使用
ビットに対して所定の値を割り当て、回路規模が目標値以下になるように試行を繰り返す
ようにしたので、このようにして生成されたネットリスト４７に基づいて情報処理装置３
０を生成することにより、情報処理装置３０の回路規模を目標値よりも小さくすることが
できる。
【００３４】
なお、上述した実施の形態は、あくまでも本発明の一態様を示すものであり、本発明の
範囲内で任意に変形および応用が可能であることは勿論である。
例えば、以上の実施の形態では、およびコア部最適化後ＲＴＬ４４およびプログラム部
ＲＴＬ４５に対してユーザモジュールＲＴＬ４６を合成するようにしたが、ユーザモジュ
ールＲＴＬ４６は、用いないようにしてもよい。
【００３５】
また、図６に示す命令仕様は一例であって、これ以外の命令仕様を用いるようにしても
よい。さらに、図６に示す命令仕様では、オペコードは、１，３，５ビットとしたが、こ
れ以外のビット長であってもよい。
【００３６】
また、第２実施形態では、不使用ビットの割り当てパターンとして、全て「０」の場合
、全て「１」の場合、および、隣接するビットが同じ値となるパターン、あるいは、アト
ランダムなパターンを使用するようにしたが、例えば、プログラムのサイズが小さい場合
には、全てのパターンを試すようにし、その中で最も回路規模が小さいものを採用するよ
うにしてもよい。さらに、論理圧縮の圧縮率と、割り当てパターンとの因果関係が存在す
る場合には、当該因果関係に基づいて、パターンの割り当てを順序を決定するようにして
もよい。例えば、「０」を割り当てる方が、それ以外のパターンを割り当てる場合よりも
、圧縮率が高くなる傾向が存在する場合には、最初の試行において「０」を割り当てるよ
うにし、目標値以下にならない場合に、他のパターンを試行するようにしてもよい。
【００３７】
また、第１および第２実施形態では、回路規模が目標値以下になった場合に、処理を終
了するようにしたが、試行した中で最も回路規模が小さいものを選択するようにしてもよ
い。
【図面の簡単な説明】
【００３８】
【図１】実施形態の設計装置の概要構成ブロック図である。
【図２】実施形態の情報処理装置の概略構成ブロック図である。
【図３】設計処理の機能説明図である。
【図４】設計処理の処理フローチャートである。
【図５】ソースプログラムの一例の説明図である。
【図６】命令仕様の一例を示す図である。
【図７】図５に示すソースプログラムのＲＴＬ記述の一例である。
【図８】論理圧縮の様子を示す図である。
【図９】第２実施形態の設計処理の機能説明図である。
【図１０】不使用ビットへの値の割り当て例を示す図である。
【符号の説明】
【００３９】
１０…設計装置、１１…設計装置本体、１２…表示装置、１３…操作部、１４…外部記
憶装置、１５…外部記憶媒体、１６…媒体リードライト装置、２１…ＭＰＵ、２２…ＲＯ
Ｍ、２３…ＲＡＭ、２４…バス、３０…情報処理装置、３１…ＣＰＵ、３２…ランダムゲ
ート回路、３３…レジスタ群、３４…周辺回路、３５…Ｉ／Ｏ回路。
【図１】
2009199112.tif 000003
【図２】
2009199112.tif 000004
【図３】
2009199112.tif 000005
【図４】
2009199112.tif 000006
【図５】
2009199112.tif 000007
【図６】
2009199112.tif 000008
【図７】
2009199112.tif 000009
【図８】
2009199112.tif 000010
【図９】
2009199112.tif 000011
【図１０】
2009199112.tif 000012