(57)【特許請求の範囲】
【請求項１】
プログラマブル論理回路と、少なくともプログラマブル論理回路のソースプログラムを論理合成する論理合成手段とを備えたコンピュータ・システムにおいて、
上記コンピュータ・システムに、プログラマブル論理回路の入出力端子情報を記憶した記憶手段を設け、この記憶手段に、プログラマブル論理回路の入出力端子情報として、条件付きで入力出力が可能な端子、条件なしで入力出力が可能な端子、入力専用端子、もしくは出力専用端子を識別する情報を記憶させ、
また、上記論理合成手段に、ソースプログラム中の入出力端子情報をチェックする端子チェック手段を設け、
上記端子チェック手段は、上記論理合成手段によりソースプログラムを論理合成する際、上記記憶手段に記憶された情報と、ソースプログラム中の入出力端子情報を比較して両者の不一致をチェックするとともに、条件付きで入力出力が可能な端子についてソースプログラムの動作を解析し、条件が一致しているか否かをチェックする
ことを特徴とするプログラマブル論理回路を使用したコンピュータ・システム。
【請求項２】
プログラマブル論理回路と、少なくともネットリストを配置／配線しコンフィグレーションデータを生成する配置／配線手段とを備えたコンピュータ・システムにおいて、
上記コンピュータ・システムに、プログラマブル論理回路の入出力端子情報を記憶した記憶手段を設け、この記憶手段に、プログラマブル論理回路の入出力端子情報として、条件付きで入力出力が可能な端子、条件なしで入力出力が可能な端子、入力専用端子、もしくは出力専用端子を識別する情報を記憶させ、
また、上記配置／配線手段にネットリスト中の入出力端子情報をチェックする端子チェック手段を設け、
上記端子チェック手段は、配置／配線手段によりネットリストを生成する際、上記記憶手段に記憶された情報と、ネットリスト中の入出力端子情報を比較して両者の不一致をチェックするとともに、条件付きで入力出力が可能な端子についてネットリストの動作を解析し、条件が一致しているか否かをチェックする
ことを特徴とするプログラマブル論理回路を使用したコンピュータ・システム。
【請求項３】
プログラマブル論理回路と、少なくともコンフィグレーションデータをプログラム論理回路にロードするロード手段とを備えたコンピュータ・システムにおいて、
上記コンピュータ・システムに、プログラマブル論理回路の入出力端子情報を記憶した記憶手段を設け、この記憶手段に、プログラマブル論理回路の入出力端子情報として、条件付きで入力出力が可能な端子、条件なしで入力出力が可能な端子、入力専用端子、もしくは出力専用端子を識別する情報を記憶させ、
また、上記ロード手段に、コンフィグレーションデータ中の入出力端子情報をチェックする端子チェック手段を設け、
上記端子チェック手段は、上記ロード手段によりコンフィグレーションデータをプログラマブル論理回路にロードする際、上記記憶手段に記憶された情報と、コンフィグレーションデータ中の入出力端子情報を比較して両者の不一致をチェックするとともに、条件付きで入力出力が可能な端子についてコンフィグレーションデータの動作を解析し、条件が一致しているか否かをチェックする
ことを特徴とするプログラマブル論理回路を使用したコンピュータ・システム。
【請求項４】
上記コンピュータ・システムに、プログラマブル論理回路の物理的端子番号と、そのニックネームを記憶した記憶手段を設け、また、上記論理合成手段に、ソースプログラム中に記述された入出力端子のニックネームを物理的端子番号に置き換える端子名称置き換え手段を設け、
端子名称置き換え手段は、上記論理合成手段によりソースプログラムを論理合成する際、ソースプログラム中に上記ニックネームが記述されているとき、上記記憶手段から、上記ニックネームに対応した物理的端子番号を読み出し、上記ニックネームを物理的端子番号に置換する
ことを特徴とするプログラマブル論理回路を使用した請求項１記載のコンピュータ・システム。
【請求項５】
プログラマブル論理回路の端子の内、外部に接続される端子のみにニックネームを付け、ニックネームが付された上記外部に接続される端子以外の端子はソースプログラムに制約を付けユーザが制御できないようにした
ことを特徴とする請求項４記載のプログラマブル論理回路を使用したコンピュータ・システム。
【請求項６】
上記コンピュータ・システムに、該コンピュータ・システムの内部バスに接続されるプログラマブル論理回路の端子の属性および／または該端子の制御方法を定義する機能マクロ／サブルーチンを記憶させた記憶手段を設け、また、上記論合成手段に機能マクロ割り付け手段を設け、
上記機能マクロ割り付け手段は、上記論理合成手段によりソースプログラムを論理合成する際、ソースプログラム中に機能マクロ／サブルーチン名が記述されているとき、上記記憶手段から該機能マクロ／サブルーチンを呼び出し、機能マクロ／サブルーチンをネットリスト中に割り付ける
ことを特徴とする請求項１記載のプログラマブル論理回路を使用したコンピュータ・システム。
【請求項７】
上記コンピュータ・システムに、該コンピュータ・システムの内部バスに接続されるプログラマブル論理回路の端子の属性および／または該端子の制御方法を定義する機能マクロ／サブルーチンを記憶させた記憶手段を設け、また、上記配置／配線手段に機能マクロ割り付け手段を設け、
上記機能マクロ割り付け手段は、上記配置／配線手段により、ネットリストからコンフィグレーションデータを生成する際、ネットリスト中に機能マクロ／サブルーチン名が記述されているとき、上記機能設定マクロデータベースから該機能マクロ／サブルーチンを呼び出し、コンフィグレーションデータ中に機能マクロ／サブルーチンを割り付ける
ことを特徴とする請求項２記載のプログラマブル論理回路を使用したコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はプログラマブル論理回路を使用したコンピュータ・システムに関し、さらに詳細には、コンピュータ・システム自身が、プログラマブル論理回路のプログラムをコンパイルする手段、配線配置手段、または、プログラマブル論理回路へのコンフィグレーション・データのロード手段を持ち、ユーザによってハードウェアの動作を変更することができるコンピュータ・システムに関するものである。
【０００２】
【従来の技術】
ユーザによってプログラム可能なプログラマブル論理回路として、ＦＰＧＡ（Field Programmable Gate Array ）、ＦＰＬＡ（Field Programmable Logic Array）、ＦＰＬＤ（Field Programmable Logic Dvice）、ＣＰＬＤ（Complex Programmable Logic Dvice）等が知られている。
【０００３】
上記したプログラマブル論理回路のプログラミングは、通常図６に示す手順で行われる。
すなわち、まず、ユーザがプログラマブル論理回路に目的とする動作を行わせるためのソースプログラム１１を作成し、該ソースプログラム１１を論理合成手段（コンパイル手段）により論理合成し、目的とする回路の接続関係を示すネットリスト１２を得る。
【０００４】
次いで、上記ネットリスト１２を配置配線手段により配置配線しプログラマブル論理回路上における接続関係を示すコンフィグレーション・データ１３を作成する。
そして、上記コンフィグレーション・データ１３をプログラマブル論理回路にロードし、目的とする動作を行うプログラマブル論理回路を得る。
【０００５】
近年、上記したプログラマブル論理回路をコンピュータ・システム中に設け、従来ソフトウェアで行っていた処理をハードウェアで処理させることにより高速な処理を実現したコンピュータ・システムが利用されるようになってきた。
図７は上記したプログラマブル論理回路を組み込んだ従来のコンピュータ・システムの概略構成を示す図である。
【０００６】
同図において、２０はコンピュータ・システム、２１はＭＰＵ、２２はＲＯＭ、２３はＲＡＭ、２４は外部記憶装置、２５は入出力装置／その他、２６はプログラマブル論理回路である。
上記したコンピュータ・システム２０において、プログラマブル論理回路２６へのプログラミングは、図８に示すように行われている。
【０００７】
すなわち、ワークステーションのような高速のコンピュータ・システム３１でプログラマブル論理回路２６の論理合成／配置／配線を行ってファイル３２またはＲＯＭ３３にコンフィグレーション・データを書き込み、ターゲットとなるコンピュータ・システム２０にデータ転送し、プログラマブル論理回路２６にデータをロードする。
【０００８】
【発明が解決しようとする課題】
近年、ＭＰＵの高速化とメモリ／外部論理回路の大容量化により、ワークステーション等を使用することなく、プログラマブル論理回路を設けたコンピュータ・システム自身でプログラマブル論理回路の論理合成／配置／配線／データのロードが可能になってきた。すなわち、図９に示すように、プログラマブル論理回路の論理合成／配置／配線を行う機能、データのロード機能を、コンピュータ・システムに付加し、ユーザが自コンピュータ・システムを使用して、内蔵するプログラマブル論理回路のプログラミングを可能としたものである。
【０００９】
ところで、プログラマブル論理回路は内部論理が変更できると同時に、プログラマブル論理回路の外部端子の入出力状態も変更することができる。このことは、もし、プログラマブル論理回路のプログラミングに誤りがあると、プログラマブル論理回路の外部端子でバスファイト（バスの衝突）が発生する可能性があることを意味する。
【００１０】
このため、図９に示すように、自コンピュータ・システムでプログラマブル論理回路の論理合成／配置／配線／データのロードを行うに際し、ユーザのプログラミングに誤りがあるとバスファイトによりハードウェアを破損させる恐れがある。
また、上記プログラミングは通常プログラマブル論理回路の物理的な端子名を使用して行われるので、ユーザは上記物理的な端子を意識してプログラミングしなければならず、プログラミングの誤りが生じやすい。
【００１１】
さらに、コンピュータ・システム内にプログラマブル論理回路を設けた場合、プログラマブル論理回路の端子の一部はＭＰＵバス（アドレス／データ／コントロールバス等）に接続されることが多く、これらＭＰＵインタフェースにかかわるプログラマブル論理回路の端子の属性／制御方法も通常決まっているが、従来においては、これらＭＰＵインタフェースにかかわる部分についてもユーザがプログラミングする必要があり、プログラムの作成が煩雑でプログラムミスが発生しやすかった。
【００１２】
本発明は上記した従来技術の問題点を考慮してなされたものであって、本発明の第１の目的は、バスファイトによるハードウェアの破壊を事前にチェックすることができるプログラマブル論理回路を使用したコンピュータ・システムを提供することである。
本発明の第２の目的は、プログラミングが容易でミスの発生する可能性を減少させることができ、プログラミングを効率的に行うことができるプログラマブル論理回路を使用したコンピュータ・システムを提供することである。
【００１３】
【課題を解決するための手段】
図１は本発明の原理図である。同図において、１はプログラマブル論理回路３をプログラミングするためにユーザが作成するソースプログラム、２はプログラマブル論理回路３を有するコンピュータ・システム、４はソースプログラムを論理合成しネットリストを生成する論理合成手段、５はネットリストを配置配線し、コンフィグレーション・データを生成する配置／配線手段、６はコンフィグレーション・データをプログラマブル論理回路６にロードするロード手段、７はプログラマブル論理回路の物理番号とそれに対応した端子名称（ニックネーム）を記憶した記憶手段、８は機能マクロ／サブルーチンを記憶した記憶手段、９はプログラマブル論理回路の端子番号と、その属性／条件を記憶した記憶手段である。
【００１５】
本発明の請求項１の発明は、プログラマブル論理回路と、少なくともプログラマブル論理回路のソースプログラムを論理合成する論理合成手段とを備えたコンピュータ・システムにおいて、上記コンピュータ・システムに、プログラマブル論理回路の入出力端子情報を記憶した記憶手段を設け、この記憶手段に、プログラマブル論理回路の入出力端子情報として、条件付きで入力出力が可能な端子、条件なしで入力出力が可能な端子、入力専用端子、もしくは出力専用端子を識別する情報を記憶させ、また、上記論理合成手段に、ソースプログラム中の入出力端子情報をチェックする端子チェック手段を設け、上記端子チェック手段は、上記論理合成手段によりソースプログラムを論理合成する際、上記記憶手段に記憶された情報と、ソースプログラム中の入出力端子情報を比較して両者の不一致をチェックするとともに、条件付きで入力出力が可能な端子についてソースプログラムの動作を解析し、条件が一致しているか否かをチェックするように構成したものである。
【００１７】
本発明の請求項２の発明は、プログラマブル論理回路と、少なくともネットリストを配置／配線しコンフィグレーションデータを生成する配置／配線手段とを備えたコンピュータ・システムにおいて、上記コンピュータ・システムに、プログラマブル論理回路の入出力端子情報を記憶した記憶手段を設け、この記憶手段に、プログラマブル論理回路の入出力端子情報として、条件付きで入力出力が可能な端子、条件なしで入力出力が可能な端子、入力専用端子、もしくは出力専用端子を識別する情報を記憶させ、また、上記配置／配線手段にネットリスト中の入出力端子情報をチェックする端子チェック手段を設け、上記端子チェック手段は、配置／配線手段によりネットリストを生成する際、上記記憶手段に記憶された情報と、ネットリスト中の入出力端子情報を比較して両者の不一致をチェックするとともに、条件付きで入力出力が可能な端子についてネットリストの動作を解析し、条件が一致しているか否かをチェックするように構成したものである。
【００１９】
本発明の請求項３の発明は、プログラマブル論理回路と、少なくともコンフィグレーションデータをプログラム論理回路にロードするロード手段とを備えたコンピュータ・システムにおいて、上記コンピュータ・システムに、プログラマブル論理回路の入出力端子情報を記憶した記憶手段を設け、この記憶手段に、プログラマブル論理回路の入出力端子情報として、条件付きで入力出力が可能な端子、条件なしで入力出力が可能な端子、入力専用端子、もしくは出力専用端子を識別する情報を記憶させ、また、上記ロード手段に、コンフィグレーションデータ中の入出力端子情報をチェックする端子チェック手段を設け、上記端子チェック手段は、上記ロード手段によりコンフィグレーションデータをプログラマブル論理回路にロードする際、上記記憶手段に記憶された情報と、コンフィグレーションデータ中の入出力端子情報を比較して両者の不一致をチェックするとともに、条件付きで入力出力が可能な端子についてコンフィグレーションデータの動作を解析し、条件が一致しているか否かをチェックするように構成したものである。
【００２０】
本発明の請求項４の発明は、請求項１の発明において、プログラマブル論理回路の物理的端子番号と、そのニックネームを記憶した記憶手段を設け、また、上記論理合成手段に、ソースプログラム中に記述された入出力端子のニックネームを物理的端子番号に置き換える端子名称置き換え手段を設け、端子名称置き換え手段は、上記論理合成手段によりソースプログラムを論理合成する際、ソースプログラム中に上記ニックネームが記述されているとき、上記記憶手段から、上記ニックネームに対応した物理的端子番号を読み出し、上記ニックネームを物理的端子番号に置換するように構成したものである。
【００２１】
本発明の請求項５の発明は、請求項４の発明において、プログラマブル論理回路の端子の内、外部に接続される端子のみにニックネームを付け、上記外部に接続される端子以外の端子はソースプログラムに制約を付けユーザが制御できないようにした構成したものである。
本発明の請求項６の発明は、請求項１の発明おいて、上記コンピュータ・システムに、該コンピュータ・システムの内部バスに接続されるプログラマブル論理回路の端子の属性および／または該端子の制御方法を定義する機能マクロ／サブルーチンを記憶させた記憶手段を設け、また、上記論合成手段に機能マクロ割り付け手段を設け、上記機能マクロ割り付け手段は、上記論理合成手段によりソースプログラムを論理合成する際、ソースプログラム中に機能マクロ／サブルーチン名が記述されているとき、上記記憶手段から該機能マクロ／サブルーチンを呼び出し、機能マクロ／サブルーチンをネットリスト中に割り付けるように構成したものである。
【００２２】
本発明の請求項７の発明は、請求項２の発明において、コンピュータ・システムの内部バスに接続されるプログラマブル論理回路の端子の属性および／または該端子の制御方法を定義する機能マクロ／サブルーチンを記憶させた記憶手段を設け、また、上記配置／配線手段に機能マクロ割り付け手段を設け、上記機能マクロ割り付け手段は、上記配置／配線手段により、ネットリストからコンフィグレーションデータを生成する際、ネットリスト中に機能マクロ／サブルーチン名が記述されているとき、上記機能設定マクロデータベースから該機能マクロ／サブルーチンを呼び出し、コンフィグレーションデータ中に機能マクロ／サブルーチンを割り付けるように構成したものである。
【００２３】
【作用】
図１において、本発明は次のようにして前記課題を解決する。
(1) コンピュータ・システム２に設けられた論理合成手段４はユーザが作成したソースプログラムを論理合成してネットリストを生成する。その際、論理合成手段４に設けられた端子チェック手段は、ソースプログラム１中の端子情報と記憶手段９に記憶された入出力情報とを比較し、下記のようにしてソースプログラム１中の端子情報をチェックする。
▲１▼  記憶手段９にプログラマブル論理回路の端子の内、使用可能な入出力端子情報を記憶させ、ソースプログラム中に記述された出力端子が出力不可能な端子に配置されていなかをチェックする。
▲２▼  記憶手段９にプログラマブル論理回路の端子の属性（入力出力が可能な端子、入力専用端子、もしくは出力専用端子を識別する情報）を記憶させ、ソースプログラム中に記述された端子情報との一致を検出する。
▲３▼  記憶手段９にプログラマブル論理回路の端子の属性（条件付きで入力出力が可能な端子、条件なしで入力出力が可能な端子、入力専用端子、もしくは出力専用端子を識別する情報）を記憶させ、ソースプログラム中に記述された端子情報との一致を検出するとともに、条件付きで入力出力が可能な端子についてソースプログラム、ネットリスト、もしくは、コンフィグレーションデータの動作を解析し、条件が一致しているか否かをチェックする。
【００２４】
また、上記端子チェック手段を、図１に示すように、配置／配線手段５もしくはコンフィグレーションデータのロード手段６に設け、ネットリスト／コンフィグレーションデータ中の入出力端子情報と記憶手段９に記憶された入出力端子情報とを比較し、両者の一致を検出することもできる。
本発明の請求項１〜請求項３の発明においては、上記のように、記憶手段９にプログラマブル論理回路３の入出力端子情報を記憶させ、ソースプログラム、ネットリスト、および／またはコンフィグレーションデータ中の端子情報と比較しているので、バスファイトによるハードウェアの破壊を事前にチェックすることができる。
(2) 記憶手段７にプログラマブル論理回路３の物理的な端子番号と端子名称（例えば、Port1,Port2,…等のニックネーム）を記憶させ、また、論理合成手段４に端子名称置き換え手段を設ける。
【００２５】
ユーザが、上記ニックネームを用いてソースプログラムを作成し、論理合成手段４でソースプログラムを論理合成すると、上記端子名称置き換え手段は、記憶手段７を参照して、ソースプログラム中で使用されるニックネームをプログラマブル論理回路３の物理的な端子名に置き換える。
本発明の請求項４、請求項５の発明においては、上記のように、ニックネームを用いてソースプログラムを作成することができ、ユーザはプログラマブル論理回路の物理的な端子番号を意識せずにプログラミングすることができ、プログラミングを容易化し、プログラムミスを減少させることができる。
【００２６】
また、請求項５の発明のように、ニックネームが付された外部に接続される端子以外の端子はソースプログラムに制約を付けユーザが制御できないようにすることにより、一層プログラムミスを減少させることができ、また、バスファイトによるハードウェアの破壊を防止することが可能となる。
(3) 記憶手段８に、コンピュータ・システムの内部バスに接続されるプログラマブル論理回路の端子の属性および／または該端子の制御方法を定義する機能マクロ／サブルーチンを記憶させ、また、上記論合成手段に機能マクロ割り付け手段を設ける。そして、ユーザがソースプログラムを作成する際、コンピュータ・システムの内部バスに接続されるプログラマブル論理回路３の端子の属性、その制御については、上記機能マクロを使用してプログラミングする。
【００２７】
論理合成手段４において上記ソースプログラムを論理合成する際、機能設定マクロ割り付け手段は、ソースプログラム中に機能マクロ／サブルーチン名が記述されているとき、記憶手段８に記憶された機能マクロ／サブルーチンを呼び出し、ネットリスト中に割り付ける。
また、上記チェック手段を配置／配線手段５に設け、記憶手段８に記憶された機能マクロ／サブルーチンをコンフィグレーションデータ中に割り付けることもできる。
【００２８】
本発明の請求項６、請求項７の発明においては、上記のように、コンピュータ・システムの内部バスに接続されるプログラマブル論理回路の端子の属性および／または該端子の制御については、機能マクロを用いてプログラミングを行うことができ、プログラミングを容易化し操作性を向上させることができ、プログラムミスを減少させることができる。
【００２９】
【実施例】
本発明は前記図７に示したプログラマブル論理回路を内蔵したハードウェア構成のコンピュータ・システムを前提とし、該コンピュータ・システムに、前記図９に示したようにプログラマブル論理回路のプログラムを論理合成する手段、ネットリストを配置／配線する手段、および／または、コンフィグレーションデータをロードする手段を付加したコンピュータ・システムを対象としたものであり、以下、プログラマブル論理回路としてＦＰＧＡを用いた場合について本発明の実施例を説明する。
【００３０】
図２は本発明の実施例を示す図であり、同図はＦＰＧＡ（Field Programmable Gate Array 、以下ＦＰＧＡと略記する）を使用したコンピュータ・システムににおいて、ＦＰＧＡをプログラミングするために設けられたプログラムおよびＦＰＧＡをプログラミングする際参照されるデータベースを示している。
以下、同図を参照しながら本発明の実施例について説明する。
（１）第１の実施例：プログラマブル論理回路をプログラミングするソースプログラム中の端子情報のチェック
図２に示すように、ＦＰＧＡをプログラミングするには、ユーザが作成したソースプログラム１１を論理合成プログラムにより論理合成してネットリスト１２を生成し、ネットリスト１２からＦＰＧＡ配置／配線プログラムによりコンフィグレーションデータを得る。そして、コンフィグレーションデータ１３をコンフィグレーションデータ・ロードプログラム（以下ロードプログラムと略記する）によりＦＰＧＡ２６にロードする。
【００３１】
上記のようなプログラマブル論理回路のプログラミングにおいて、本実施例では、図２に示すように、論理合成プログラム、ＦＰＧＡ配置／配線プログラム、および／または、ロードプログラム中に「端子チェックプログラム」を設けるとともに、ＦＰＧＡの物理的な端子番号とその属性（属性と条件）を記述した入出力端子情報データベース３３を設ける。
【００３２】
図３は上記入出力端子情報データベース３３に記述されたデータの一例を示す図であり、同図（ａ）はデータベース３３に端子の物理的な番号とその属性を記述した場合を示し、（ｂ）は端子の物理的な番号とその属性に加え、該端子がそれぞれ、該属性を持つための条件を記述した場合を示している。なお、図３はデータベースの内容の一例を示しており、端子の物理的な番号、属性、条件等の記述方法は任意であり様々なフォーマットとすることができる。
【００３３】
図４は上記端子チェックプログラムの動作を説明する図であり、端子チェックプログラムは、入出力端子情報データベース３３の記述内容が図３（ａ）（ｂ）の場合において、次のようにしてソースプログラム／ネットリスト／コンフィグレーションデータにおける端子の割り付けをチェックする。
▲１▼入出力端子情報データベースの記述内容が図３（ａ）の場合
論理合成プログラム中に設けられた端子チェックプログラムは、図４に示すように、ソースプログラムを論理合成する際、入出力端子情報データベース３３の記述内容とソースプログラム中の端子情報４１を比較し、ソースプログラム中に記述された端子の属性が上記データベース３３に記述された属性と一致しているかをチェックし、不一致の場合にはユーザに通知する。
【００３４】
例えば、ソースプログラム中に記述された端子２がＯＵＴの属性を示しているのに対し、上記データベース３３に記述された上記端子２の属性がＩＮの場合には、プログラミング・ミスであると考えられるので、例えば、不一致の端子番号等をリストとして表示する。
また、ＦＰＧＡ配置／配線プログラム中に設けられた端子チェックプログラムは、ネットリストからコンフィグレーションデータを生成する際、上記と同様に、ネットリストに記述された端子の属性４１と、入出力端子情報データベース３３中に記述された端子の属性を比較し、不一致をチェックする。
【００３５】
同様に、ロードプログラム中に設けられた端子チェックプログラムも、コンフィグレーションデータをＦＰＧＡにロードする際、コンフィグレーションデータの端子の属性と、入出力端子情報データベース３３中に記述された端子の属性を比較し、不一致をチェックする。
▲２▼入出力端子情報データベースの記述内容が図３（ｂ）の場合
この場合には、上記▲１▼のようにソースプログラム、ネットリスト、コンフィグレーションデータ中の端子情報と入出力端子情報データベース３３の記述内容を単に比較するだけでなく、ソースプログラム、ネットリスト、コンフィグレーションデータ中の動作記述部を解析する必要がある。
【００３６】
そこで、図４に示すように、論理合成プログラム中に設けられた端子チェックプログラムは、ソースプログラムを論理合成する際、ソースプログラム中の端子情報４１を調べるとともに動作記述部４２を解析し、端子の属性とその条件を調べる。そして、ソースプログラム中に記述された端子の属性および条件が上記データベース３３に記述された属性および条件と一致しているかをチェックし、不一致の場合には、例えば、端子番号／条件をユーザに通知する。
【００３７】
例えば、ソースプログラム中に記述された端子４が端子２番が０のときＯＵＴ端子であるのに対し、上記データベース３３に記述された端子４が端子２，３番が共に０のときＯＵＴ端子である場合には、プログラミング・ミスであると考えられるので、不一致な端子番号／条件等をリストとして表示する。
また、ＦＰＧＡ配置／配線プログラム、ロードプログラム中に設けられた端子チェックプログラムも同様に、ネットリスト、コンフィグレーションデータの端子の属性／条件と、入出力端子情報データベース３３中に記述された端子の属性／条件を比較し不一致をチェックする。
【００３８】
上記のように、動作記述部を解析することにより、上記▲１▼と比べチェックプログラムは比較的複雑になるが、チェック完全なものとすることができる。特に、データバスや割り込みアクノレッジ信号のように、出力端子または入力端子に出力条件がある場合には、動作記述部を解析することによりチェックをより完全なものとすることができる。
【００３９】
以上のように、本実施例においては、プログラマブル論理回路を使用したコンピュータ・システムに入出力端子情報データベースを設けるとともに、、論理合成プログラム、ＦＰＧＡ配置／配線プログラム、および／またはロードプログラムに端子チェックプログラムを設け、ソースプログラム、ネットリスト、および／またはコンフィグレーションデータの端子情報をチェックしているので、プログラムミス等により生ずるバスファイトによるハードウェアの破壊を事前にチェックすることができる。
【００４０】
なお、図２では、端子チェックプログラムを、論理合成プログラム、ＦＰＧＡ配置／配線プログラム、ロードプログラムのそれぞれに設けた場合を説明したが、端子チェックは上記プログラム中のどれかで行えばよい。
また、上記実施例では、入出力端子情報データベースに物理的な端子番号とその属性／条件を記述する場合について説明したが、例えば、上記データベースに、ＦＰＧＡの端子の内、出力端子として使用不可能な端子番号を記述しておき、端子チェックプログラムにより、出力不可能な端子に出力端子が配置されているかを調べても、バスファイトによるハードウェアの損傷を事前にチェックすることができる。
【００４１】
さらに、上記実施例においては、コンピュータ・システムに論理合成手段、配置／配線手段、および、コンフィグレーションデータをロードする手段を共に設けた場合について説明したが、本発明は上記実施例に限定されるものではなく、例えば、配置／配線手段と、コンフィグレーションデータのロード手段を設けたコンピュータ・システム、あるいは、コンフィグレーションデータのロード手段のみを設けたコンピュータ・システムにも適用することができる。
（２）第２の実施例：プログラマブル論理回路の端子への端子名（ニックネーム）の付与
前記したように、プログラマブル論理回路へのプログラミングは物理的な端子番号を用いて記述しなければならない。
【００４２】
例えば、図５（ａ）に示すように、ＦＰＧＡ４３の端子１−１６をアドレス端子に、端子１７−３２をデータ端子に、端子３５−３９をコントロール用の端子に、さらに端子５０−ｍを外部接続用の端子に割り付ける場合、ソースプログラム中の端子番号は上記物理的な番号を用いる必要がある。このため、ユーザがＦＰＧＡへのプログラミングする際、端子の入出力の条件を誤るとバスファイトを起こす可能性がある。
【００４３】
そこで、本実施例においては、ＦＰＧＡ４３の端子に端子名（以下ニックネームという）を付け、上記ニックネームでフログラミングできるようにする。
例えば、図５（ｂ）に示すようにＦＰＧＡ４３の端子１−１６にアドレス端子を割り付ける場合にはＡ０−１５の端子名を付け、同様に、端子１７−３２をデータ端子を割り付ける場合にはＤ０−１５の端子名を付け、端子３５−３９をコントロール用の端子に割り付ける場合には、その機能に応じてＲＤ／ＷＲ／ＩＮＴ等の端子名を付け、さらに端子５０−ｍを外部接続用の端子に割り付ける場合にはＰｏｒｔ１〜Ｐｏｒｔｎのニックネームを付け、このニックネームでＦＰＧＡのプログラミングができるようにする。
【００４４】
このため、本実施例においては、前記した図２に示すように、論理合成プログラム中に「端子名称置き換えプログラム」を設けるとともに、物理的な端子番号と上記ニックネームを対応付けるための端子名データベース３１を設ける。
そして、ユーザが上記端子名データベース３１に格納されたニックネームを用いてソースプログラム１１を作成すると、論理合成プログラム中の端子名称置き換えプログラムは、端子名データベース３１を参照してソースプログラム中のニックネームをＦＰＧＡの物理的な端子番号に置き換える。
【００４５】
これにより、ユーザは物理的な端子番号を用いずにプログラムミングを行うことができ、プログラミングの容易性、操作性を向上させることができ、これにともないプログラムミスを減少させることができる。
なお、プログラマブル論理回路の端子へのニックネームを付与する場合、ニックネームはコンピュータ・システム外部に接続されるＦＰＧＡの端子のみに付与し、外部に接続される端子以外の端子はユーザが制御できないようにソースプログラムに制約を設ければ、一層、プログラグミスを減少させ、バスファイト等によるハードウェアの破損を防止することができる。
【００４６】
また、上記実施例では、論理合成プログラム中に「端子名称置き換えプログラム」を設けた場合を説明したが、同様に、「端子名称置き換えプログラム」をＦＰＧＡ配置／配線プログラム中に設け、ソースプログラム中に記述されたニックネームを用いて生成されたネットリストからコンフィグレーションデータを作成する際、前記端子名データベース３１を参照してネットリスト上のニックネームをＦＰＧＡの物理的な端子番号に置き換えてもよい。
（３）第３の実施例：予め決まっている端子の属性／制御方法のマクロ化
プログラマブル論理回路を使用した場合、前記した図５に示したように、ＦＰＧＡの端子の一部は、ＭＰＵバス（アドレス／データ／コントロールバス等）に接続されることが多く、また、この場合におけるＦＰＧＡの端子の属性、ＭＰＵからの制御方法も決まっていることが多い。
【００４７】
そこで、本実施例においては、予め、「データバス」、「アドレスバス」、ＤＭＡ制御」「割り込み制御」等のＭＰＵバスに接続される端子の機能仕様を決めてコンパイル済みのデータを作成しておき、サブルーチン／機能マクロ等の形でデータベースに格納しておく。そして、プログラミング時に上記サブルーチン／機能マクロを呼び出し、制御方法が決まっている部分については、上記サブルーチン／機能マクロによりＦＰＧＡのプログラミングを行う。
【００４８】
このため、本実施例においては、上記したサブルーチン／機能マクロのコンパイル済みデータを、図２に示す機能設定マクロデータベース３２に格納しておくとともに、論理合成プログラムおよび／またはＦＰＧＡ配置／配線プログラム中に「機能設定マクロ割り付けプログラム」を設ける。
そして、例えば、「データバス」、「ＤＭＡコントローラ」、「インターバルタイマ」等、予め機能設定マクロデータベース３２に用意されている機能あるいは端子属性を用いてＦＰＧＡをプログラムする場合、ユーザはソースプログラムを作成する際、ソースプログラム中に該当するサブルーチン／機能マクロ名を記述しておく。
【００４９】
論理合成プログラムにおいて上記ソースプログラムをコンパイルする際、機能設定マクロ割り付けプログラムは、ソースプログラム中に記述されたサブルーチン／機能マクロを機能設定マクロデータベース３２から呼び出してコンパイラ中に組み込み、上記機能、端子属性を割り付ける。
これによりユーザは、機能設定マクロデータベース３２に用意されている機能／端子属性については、サブルーチン／機能マクロ名を記述するだけでプログラミングを行うことができ、プログラミングを容易化し、操作性を向上させることができる。また、これにともないプログラミングミスを減少させることが可能となる。
【００５０】
上記説明では、機能設定マクロ割り付けプログラムを論理合成プログラム中に設けた場合について説明したが、図２に示すように、機能設定割り付けプログラムをＦＰＧＡ配置／配線プログラム中に設けてもよい。
この場合、論理合成プログラムは、ソースプログラム中にサブルーチン／機能マクロ名が記述されているとき、その部分についてコンパイルを行わず、サブルーチン／機能マクロ名を付したブラックボックスとしてネットリストを生成する。そして、ＦＰＧＡ配置／配線プログラムにおいて配置／配線を行う際、機能設定割り付けプログラムは、機能設定マクロデータベース３２からソースプログラム中に記述されたサブルーチン／機能マクロを呼び出してコンフィグレーションデータ中に割り付け、該当する機能を達成するコンフィグレーションデータを生成する。
【００５１】
なお、上記第３の実施例においては、コンピュータ・システムに、論理合成手段、配置／配線手段、および、コンフィグレーションデータをロードする手段を設けた場合について説明したが、本発明は上記実施例に限定されるものではなく、例えば、配置／配線手段と、コンフィグレーションデータのロード手段のみを設けたコンピュータ・システムにも適用することができる。
【００５２】
【発明の効果】
以上説明したように本発明においては以下の効果を得ることができる。
（１）記憶手段にプログラマブル論理回路の入出力端子情報を記憶させ、ソースプログラム、ネットリスト、および／またはコンフィグレーションデータ中の端子情報と比較することにより端子情報をチェックしているので、プログラムミス等により生ずるバスファイトによるハードウェアの破壊を事前にチェックすることができる。
(2) 記憶手段にプログラマブル論理回路の物理的な端子番号とニックネームを記憶させ、また、論理合成手段に端子名称置き換え手段を設けているので、プログラマブル論理回路の物理的な端子番号を意識せずにプログラミングすることができ、プログラミングを容易化し、プログラムミスを減少させることができる。このため、プログラミングを効率化することができ、生産性を向上させることが可能となる。
【００５３】
また、外部に接続される端子以外の端子はソースプログラムに制約を付けユーザが制御できないようにすることにより、一層プログラムミスを減少させることができる。
(3) 記憶手段に、コンピュータ・システムの内部バスに接続されるプログラマブル論理回路の端子の属性および／または該端子の制御方法を定義する機能マクロ／サブルーチンを記憶させ、また、論合成手段もしくは配置／配線手段に機能マクロ割り付け手段を設けているので、コンピュータ・システムの内部バスに接続されるプログラマブル論理回路の端子の属性および／または該端子の制御について、機能マクロを用いてプログラミングを行うことができ、プログラミングを容易化し操作性を向上させることができる。このため、プログラミングを効率化することができ、生産性を向上させることが可能となる。
【図面の簡単な説明】
【図１】本発明の原理図である。
【図２】本発明の実施例を示す図である。
【図３】入出力端子情報データベースに記述されるデータの一例を示す図である。
【図４】端子チェックプログラムの動作を説明する図である。
【図５】ニックネームを基にプログラミング可能とした実施例を説明する図である。
【図６】プログラマブル論理回路のプログラミングの手順を示す図である。
【図７】プログラマブル論理回路を用いたシステムの概略構成を示す図である。
【図８】従来のデータ作成／ロード方法（１）を示す図である。
【図９】従来のデータ作成／ロード方法（２）を示す図である。
【符号の説明】
１，１１          ソースプログラム
２                コンピュータ・システム
３                プログラマブル論理回路
４                論理合成手段
５                配置／配線手段
６                ロード手段
７，８，９        記憶手段
１２              ネットリスト
１３              コンフィグレーションデータ
２１，５１        ＭＰＵ
２２              ＲＯＭ
２３              ＲＡＭ
２４              外部記憶装置
２５              Ｉ／Ｏその他
２６，５３        ＦＰＧＡ
３１              端子名称データベース
３２              機能設定マクロ・データベース
３３              入出力端子情報データベース
４１              端子情報
４２              動作記述部
５２              メモリ
【図１】
0004052684.tif 000002
【図２】
0004052684.tif 000003
【図３】
0004052684.tif 000004
【図４】
0004052684.tif 000005
【図５】
0004052684.tif 000006
【図６】
0004052684.tif 000007
【図７】
0004052684.tif 000008
【図８】
0004052684.tif 000009
【図９】
0004052684.tif 000010