(57)【要約】【課題】論理ゲート数を削減するようにＲＴＬ記述を変更した場合でも変更前のデジタル回路と同等の機能を発揮するようにＦＰＧＡを設計する。【解決手段】ＦＰＧＡ設計支援方法は、ＲＴＬ記述１２０のうち変換対象となる部分である対象論理１２１の１つ以上の入力信号と出力信号との情報を受け付けるステップと、対象論理１２１の１つ以上の入力信号を網羅的に変化させたときの出力信号の値をシミュレーションによって求めるステップと、対象論理１２１と置換するためにメモリ推定定型記述１２３を生成するステップとを備える。ここで、メモリ推定定型記述１２３は、１つ以上の入力信号をＦＰＧＡのメモリブロックのアドレスとして用い、シミュレーションによって求めた出力信号を当該アドレスに格納されたデータとして用いるように記載される。【選択図】図４
2019133591.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、ＦＰＧＡ（Field  Programmable  Gate  Array）設計で用いられるＲＴＬ（Register  Transfer  Level）記述を受け付けるステップと、
前記コンピュータが、前記ＲＴＬ記述のうち変換対象となる部分である対象論理の１つ以上の入力信号と出力信号との情報を受け付けるステップと、
前記コンピュータが、前記対象論理の前記１つ以上の入力信号を網羅的に変化させたときの前記出力信号の値をシミュレーションによって求めるステップと、
前記コンピュータが、前記対象論理と置換するために、メモリ推定定型記述を生成するステップとを備え、
前記メモリ推定定型記述は、前記１つ以上の入力信号をメモリブロックのアドレスとして用い、シミュレーションによって求めた前記出力信号を前記メモリブロックの当該アドレスに格納されたデータとして用いるように記載される、ＦＰＧＡ設計支援方法。
【請求項２】
前記シミュレーションによって求めるステップは、
テストベンチ記述を生成するステップと、
前記テストベンチ記述を実行するステップとを含み、
前記テストベンチ記述は、
前記ＲＴＬ記述をインスタンス化する部分と、
前記１つ以上の入力信号として網羅的に値を入力する部分と、
前記１つ以上の入力信号の値ごとに前記出力信号の値を出力変数に入力する部分とを含む、請求項１に記載のＦＰＧＡ設計支援方法。
【請求項３】
前記情報を受け付けるステップでは、レイテンシの情報をさらに受け付け、
前記テストベンチ記述において、前記出力変数に入力する部分は、前記１つ以上の入力信号の値が前記対象論理に入力されてから、前記レイテンシに対応する時間が経過したときに前記出力信号の値を前記出力変数に入力するように記載される、請求項２に記載のＦＰＧＡ設計支援方法。
【請求項４】
前記情報を受け付けるステップでは、リセット信号とその優位の情報をさらに受け付け、
前記テストベンチ記述は、前記リセット信号を解除する部分を含む、請求項２または３に記載のＦＰＧＡ設計支援方法。
【請求項５】
前記コンピュータが、前記１つ以上の入力信号に含まれる不要ビットを識別するステップをさらに備え、
前記不要ビットを識別するステップは、
前記１つ以上の入力信号の特定ビットに０を入力し、その他のビットを網羅的に変化させた第１の場合における前記出力信号の値と、前記特定ビットに１を入力し、その他のビットを網羅的に変化させた第２の場合における前記出力信号の値とを求めるステップと、
前記第１の場合における前記出力信号の値と前記第２の場合における前記出力信号の値とが一致する場合に、前記特定ビットを不要ビットと判定するステップとを含み、
前記シミュレーションによって求めるステップでは、前記対象論理の前記１つ以上の入力信号のうち前記不要ビットを除くその他のビットを網羅的に変化させたときの前記出力信号の値がシミュレーションによって求められる、請求項１に記載のＦＰＧＡ設計支援方法。
【請求項６】
前記対象論理では、前記１つ以上の入力信号に対する前記出力信号の値が一意的に定まる、請求項１〜５のいずれか１項に記載のＦＰＧＡ設計支援方法。
【請求項７】
請求項１〜６のいずれか１項に記載のＦＰＧＡ設計支援方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ＦＰＧＡ（Field  Programmable  Gate  Array）設計支援方法およびプログラムに関し、特にＦＰＧＡ設計用のＲＴＬ（Register  Transfer  Level）記述の作成に利用できるものである。
【背景技術】
【０００２】
ＦＰＧＡは、再構成可能なハードウェアであり、複数のプログラム可能な論理セル、メモリ、およびＤＳＰ（Digital  Signal  Processor、たとえば、乗算器）などを内蔵する。そして、これらを変更可能な配線によって結合することによって所望のデジタル回路を実現することができる。
【０００３】
ＦＰＧＡに内蔵される論理セルおよび乗算器の個数（より一般的には、論理ゲート数）ならびにメモリ容量は、製品ごとに決まっている。したがって、ＦＰＧＡ製品によっては論理ゲート数が不足するために所望の機能のデジタル回路をＦＰＧＡに搭載できないケースがしばしば発生する。
【０００４】
この問題に対処するために、デジタル回路の機能を削減したり、搭載可能な論理ゲート数がより多い高価なＦＰＧＡ製品に変更したり、リソースを共有することによって時分割処理を行うように設計変更したりすることが多い。たとえば、特許文献１は、設計対象システムの共通部分を共有化する回路変換を行うことにより、回路量を削減する設計支援プログラムを開示する。この場合、共通部分は複数のモジュールが時分割によって実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２２３６６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したＦＰＧＡの論理ゲート数の不足の問題に対処するために、論理ゲート数が多い製品に変更した場合には、コストの点で問題になる。また、特許文献１のように時分割動作によって共通部分を動作させる場合には、機能的な制約が加わることになるので、元の回路と全く同一の動作ができない場合があり得る。
【０００７】
この開示は、上記の問題点を考慮したものであり、その目的は、論理ゲート数を削減するようにＲＴＬ記述を変更した場合でも変更前のデジタル回路と同等の機能を発揮するようにＦＰＧＡを設計することが可能なＦＰＧＡ設計支援方法を提供することである。
【課題を解決するための手段】
【０００８】
一実施形態によれば、コンピュータによって実行されるＦＰＧＡ設計支援方法が提供される。ＦＰＧＡ設計支援方法は、ＦＰＧＡ設計で用いられるＲＴＬ記述を受け付けるステップと、ＲＴＬ記述のうち変換対象となる部分である対象論理の１つ以上の入力信号と出力信号との情報を受け付けるステップと、対象論理の１つ以上の入力信号を網羅的に変化させたときの出力信号の値をシミュレーションによって求めるステップと、対象論理と置換するために、メモリ推定定型記述を生成するステップとを備える。ここで、メモリ推定定型記述は、上記の１つ以上の入力信号をメモリブロックのアドレスとして用い、シミュレーションによって求めた出力信号をメモリブロックの当該アドレスに格納されたデータとして用いるように記載される。
【０００９】
なお、メモリ推定定型記述とは、論理合成ツールが、ＲＴＬ記述を論理合成する際にメモリを選択するように定められた定型的な記述である。
【発明の効果】
【００１０】
上記の実施形態によれば、ＲＴＬ記述に含まれる対象論理が同じ入出力関係を有するメモリ推定定型記述に置換される。これによって、論理ゲート数を削減するようにＲＴＬ記述を変更した場合でも変更前のデジタル回路と同等の機能を発揮するようにＦＰＧＡを設計することが可能になる。
【図面の簡単な説明】
【００１１】
【図１】ＦＰＧＡの構成の一例を示す模式的な平面図である。
【図２】ＦＰＧＡの設計手順を示すフローチャートである。
【図３】図２の変形例を示すフローチャートである。
【図４】論理回路をメモリに置換する方法を説明するための機能ブロック図である。
【図５】論理回路をメモリに置換する手順を示すフローチャートである。
【図６】対象論理として選択可能な処理について説明するための図である。
【図７】図３および図５の各ステップを実行するためのコンピュータの構成の一例を示すブロック図である。
【図８】図４の対象論理を含むＲＴＬ記述の一部の例を示す図である。
【図９】図５のステップＳ３１０の情報入力を行うための入力画面の一例を示す図である。
【図１０】図４のメモリ推定定型記述の一例を示す図である。
【図１１】図４のテストベンチ記述の一例を示す図である。
【図１２】図４のダンプデータの一例を示す図である。
【図１３】図５のステップＳ３２０のテストベンチの生成および実行を変更した手順を示すフローチャートである。
【図１４】特定ビットの値を０に固定するためのテストベンチ記述の例を示す図である。
【図１５】実施の形態２において、メモリ推定定型記述およびテストベンチ記述を生成するために、対象論理から抽出される情報の例を示す図である。
【発明を実施するための形態】
【００１２】
以下、各実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰り返さない。
【００１３】
実施の形態１．
［ＦＰＧＡとその設計方法］
以下では、本開示の前提となるＦＰＧＡの構成例とその設計方法の概要について説明する。
【００１４】
図１は、ＦＰＧＡの構成の一例を示す模式的な平面図である。
図１を参照して、ＦＰＧＡ１００は、一例として、複数の論理セル１０１と、複数のメモリブロック１０２と、複数のＤＳＰ（乗算器など）と、これらを接続する配線要素（不図示）と、チップ外周に配置された複数の入出力要素（不図示）とを備える。図１では、図解を容易にするために、６個の論理セル１０１と３個のメモリブロック１０２と３個のＤＳＰ１０３とが示されているが、実際にはより多くの個数の回路要素が設けられている。
【００１５】
論理セル１０１は、ルックアップテーブル（ＬＵＴ：Look  Up  Table）と、順序回路を実現するためのフリップフロップ（ＦＦ：Flip  Flop）と、セレクタとを含む。複数の論理ゲートによる組合せ回路の機能をＬＵＴによって実現することができる。
【００１６】
メモリブロック１０２は、メモリとして使用する専用領域であり、たとえば、ＳＲＡＭ（Static  Random  Access  Memory）構造を有している。
【００１７】
図２は、ＦＰＧＡの設計手順を示すフローチャートである。図３は、図２の変形例を示すフローチャートである。図３は、図２に動作記述１１０と高位合成Ｓ２０１が追加されたものである。したがって、図３のその他の部分は図２と同じである。なお、以下の各ステップは、たとえば、図７に示すコンピュータ１４０のＣＰＵ（Central  Processing  Unit）１４１がプログラムを実行することによって実現可能である。
【００１８】
図２を参照して、ＦＰＧＡ設計では、最初にハードウェア記述言語（ＨＤＬ：Hardware  Description  Language）を用いてレジスタ転送レベル（ＲＴＬ）でデジタル回路の動作を記述したＲＴＬ記述１１１が準備される。ＲＴＬ記述１１１は、図３に示すように、高位合成（ステップＳ２０１）によって、Ｃ言語などによる動作記述１１０からＣＰＵ１４１が合成してもよい。
【００１９】
次に、論理合成およびテクノロジーマッピング（ステップＳ２０２）によって、論理セル１０１、メモリブロック１０２、およびＤＳＰ１０３の接続関係を示すネットリスト１１２がＲＴＬ記述１１１から生成される。論理合成とは、ＲＴＬ記述１１１から論理ゲートおよびフリップフロップなどの複数の論理素子とそれらの接続関係とを表すネットリストを生成することをいう。テクノロジーマッピングとは、ネットリストに含まれる論理素子をＦＰＧＡの各素子に割り当てることをいう。
【００２０】
その次に、生成されたネットリストを配置・配線ツールに入力すること（ステップＳ２０３）によって、コンフィギュレーションデータ１１３が生成される。コンフィギュレーションデータ１１３は、ＦＰＧＡ内の論理素子および配線スイッチなどをプログラムするためのデータである。最終的に、コンフィギュレーションデータ１１３をＦＰＧＡ内のコンフィギュレーションメモリにダウンロードすること（ステップＳ２０４）によってＦＰＧＡの設計が完了する。
【００２１】
なお、Ｖｅｒｉｌｏｇ  ＨＤＬおよびＶＨＤＬなどのハードウェア記述言語では、シミュレーションを行うための環境（ステップＳ２０５）がハードウェア記述言語に用意されている。このシミュレーション環境のことを、テストベンチ、テスト記述などと称する。
【００２２】
［ＦＰＧＡ設計上の問題点］
ＦＰＧＡに内蔵される論理セルの個数、メモリ容量、乗算器の個数は、製品ごとに決まっている。したがって、ＦＰＧＡ製品によっては論理セルおよび乗算器の個数（より一般的には、論理ゲート数）が不足するために所望の機能のデジタル回路をＦＰＧＡに搭載できないという問題がしばしば生じる。
【００２３】
この問題に対処するために、本開示では、ＲＴＬ記述で記載されているＦＰＧＡの論理ゲート部分について、その一部をメモリに置換する方法を提示する。具体的には、置換対象となる論理の入力信号を網羅的に与えたときに取り得る出力信号を予めシミュレーションで求める。そして、入力信号をアドレスとし、対応する出力信号をそのアドレスに対応する値としてメモリに格納する。対象論理の記述は、入力信号に応じてメモリの値を読み出して出力するような記述（メモリ推定定型記述と称する）に置換する。以下、具体的に説明する。
【００２４】
［論理回路のメモリへの置換方法］
図４は、論理回路をメモリに置換する方法を説明するための機能ブロック図である。図５は、論理回路をメモリに置換する手順を示すフローチャートである。
【００２５】
図５の各ステップは、たとえば、図７に示すコンピュータ１４０のＣＰＵ（Central  Processing  Unit）１４１がプログラムまたはスクリプト１２２を実行することによって実現可能である。プログラムまたはスクリプト１２２は、表計算ソフト等のＶＢＡであってもＬｉｎｕｘ（登録商標）等で用いられるＳｈｅｌｌであってもかまわず、その実現手段は問わない。
【００２６】
図５および図６を参照して、最初のステップＳ３００において、ＣＰＵ１４１は、ハードウェア記述言語で記載されたＲＴＬ記述１２０のうちメモリ化する対象論理１２１を決定するか、もしくは予め決定された対象論理１２１の情報を受け取る。図３の高位合成Ｓ２０１の際に、ＣＰＵ１４１が対象論理１２１を自動的に決定してもよい。
【００２７】
対象論理１２１は、１つ以上の入力信号を決めると出力信号が一意的に定めるものに限られる。したがって、対象論理１２１は、パイプライン化可能な論理または０サイクル処理に限られる。対象論理１２１の具体例については、図７を参照して後述する。
【００２８】
次のステップＳ３１０において、ＣＰＵ１４１は、対象論理の入力信号名、出力信号名、クロック信号名、レイテンシ、リセット信号名、その優位の情報を取得する。レイテンシとは、対象論理１２１が処理を行うのに必要なクロックのサイクル数である。これらの情報は、与えられたＲＴＬ記述１２０および対象論理１２１の情報から、ＣＰＵ１４１が自動的に抽出するようにしてもよい。
【００２９】
その次のステップＳ３２０において、ＣＰＵ１４１は、テストベンチ１２４を生成する。テストベンチ１２４は、対象論理１２１をシミュレーションするための環境であり、ハードウェア記述言語を用いて構成される。テストベンチ１２４は、対象論理１２１への入力データを記述する部分１２５と、ＲＴＬ記述１２０をインスタンス化した部分１２０Ａと、入力信号ごとにシミュレーションに得られた出力信号を出力変数に書込む部分とを含む。
【００３０】
ＣＰＵ１４１は、テストベンチ１２４を実行することによって、対象論理１２１に対して全入力パターンを網羅的に与え（すなわち、取り得る全ての入力（０，１）の情報を与える）（Ｓ３２１）、各入力に対する出力をシミュレーションによって求める（Ｓ３２２）。ＣＰＵ１４１は、得られた出力をダンプデータとして図７のＲＡＭ１４２または外部記憶装置１４４などに記憶する（Ｓ３２３）。
【００３１】
その次のステップＳ３３０において、ＣＰＵ１４１は、メモリ推定定型記述１２３を生成する。ステップＳ３３０は、ステップＳ３２０の前に、もしくはステップＳ３２０と並行して実行してもよい。
【００３２】
ここで、メモリ推定定型記述１２３とは、図３の論理合成ツール（ステップＳ２０２）が、ＲＴＬ記述１２０を論理合成する際にメモリを選択するように定められた定型的な記述である。
【００３３】
一例として挙げた実施の形態１の場合、メモリ推定定型記述１２３において、メモリのアドレスは対象論理の１つ以上の入力信号をビット結合したものであり、リードデータは当該入力信号に対応する出力信号の値である。図３のステップＳ２０４において、コンフィギュレーションデータ１１３をＦＰＧＡにダウンロードする際に、ダンプデータ１２６は図１のＦＰＧＡ１００のメモリブロック１０２に転送される。
【００３４】
その次のステップＳ３４０において、ＣＰＵ１４１は、ＲＴＬ記述１２０内の対象論理１２１をメモリ推定定型記述１２３で置換する。この置換後のＲＴＬ記述１２０を図３のステップＳ２０２の論理合成ツールに読み込ませることによって、論理合成ツールは、メモリ推定定型記述１２３に従ってメモリを対応する素子として認識する。なお、ダンプデータ１２６は、メモリ推定定型記述１２３によって読み込まれるように記載しているので、論理合成時にメモリ推定定型記述１２３に従って論理合成ツールが読み込むディレクトリに格納しておく。
以上によって、対象論理をメモリに置換することが可能になる。
【００３５】
［対象論理として選択可能な処理の例］
図６は、対象論理として選択可能な処理について説明するための図である。図６（Ａ）および（Ｂ）は対象論理として選択可能な処理を示し、図６（Ｃ）および（Ｄ）は対象論理として選択不可能な処理を示す。
【００３６】
図６（Ａ）を参照して、入力信号に対して処理１（Ｐ１）が実行され、処理１（Ｐ１）の出力に対して処理２（Ｐ２）が実行される。この場合、入力が決まれば出力が一意的に決まるので、一連の処理は対象論理１２１として選択可能である。
【００３７】
図６（Ｂ）を参照して、クロック信号に従って入力信号がフリップフロップＦＦ１に格納される。次のクロックで、フリップフロップＦＦ１に格納された値に対して処理１（Ｐ１）が施され、この処理１（Ｐ１）の結果がフリップフロップＦＦ２に格納される。次のクロックで、フリップフロップＦＦ２に格納された値に対して処理２（Ｐ２）が施され、この処理１（Ｐ２）の結果がフリップフロップＦＦ３に格納される。そして、フリップフロップＦＦ３に格納された値が出力される。したがって、入力が決まれば出力が一意的に定まるので、一連の処理は対象論理１２１として選択可能である。
【００３８】
図６（Ｃ）に示す一連の処理は、フリップフロップＦＦ２の出力が処理１（Ｐ１）に入力される点と、フリップフロップＦＦ１，ＦＦ２の両方の出力に基づいて処理１（Ｐ１）が処理を行う点とにおいて、図６（Ｂ）に示す処理と異なる。このように、フリップフロップＦＦ１の内部情報とフリップフロップＦＦ２の内部情報とが組み合わされる場合には、１サイクルで出力が一意に定まらないので、対象論理１２１として選択することができない。
【００３９】
図６（Ｄ）に示す一連の処理は、フリップフロップＦＦ１の出力が処理２（Ｐ２）に入力される点と、フリップフロップＦＦ１，ＦＦ２の両方の出力に基づいて処理２（Ｐ２）が処理を行う点とにおいて、図６（Ｂ）に示す処理と異なる。このように、フリップフロップＦＦ１の内部情報とフリップフロップＦＦ２の内部情報とが組み合わされる場合には、１サイクルで出力が一意に定まらないので、対象論理１２１として選択することができない。
【００４０】
なお、入力ビット数（入力信号が複数の場合は、これら複数の入力信号を連結した合計のビット数）が増えるとシミュレーション時間が増加する。さらに、使用するメモリブロック１０２の容量は、入力ビット数の２乗で増加する。そのため、ＣＰＵなどのハードウェアリソースの処理能力に応じて対象論理１２１の入力ビット数を決定する（たとえば、１６ビット以下とする）とよい。
【００４１】
［コンピュータの構成例］
図７は、図３および図５の各ステップを実行するためのコンピュータの構成の一例を示すブロック図である。
【００４２】
図７を参照して、コンピュータ１４０は、ＣＰＵ１４１と、ＲＡＭ１４２と、ＲＯＭ（Read  Only  Memory）１４３と、不揮発性メモリなどの外部記憶装置１４４と、キーボード、マウス、およびタッチパネルなどの入力インターフェイス１４５と、液晶モニタなどのディスプレイ１４６と、有線ＬＡＮ（Local  Area  Network）および無線ＬＡＮなどのネットワークインターフェイス１４７とを備える。
【００４３】
ＣＰＵ１４１は、非一時的な記憶媒体としての外部記憶装置１４４に格納されたプログラムを実行することによって図３および図５に示す各ステップを実行することができる。さらに、コンピュータ１４０は、図４のスクリプト１２２および図５のフローチャートとして示されているＦＰＧＡ設計支援プログラムを実行するためのＦＰＧＡ設計支援装置を構成すると考えることもできる。
【００４４】
［ＲＴＬ記述、メモリ推定定型記述、テストベンチ記述、ダンプデータの具体例］
以下、図４のＲＴＬ記述１２０、メモリ推定定型記述１２３、テストベンチ１２４、ダンプデータ１２６などの具体例について説明する。
【００４５】
（対象論理を含むＲＴＬ記述の例）
図８は、図４の対象論理を含むＲＴＬ記述の一部の例を示す図である。ＲＴＬ記述はｖｅｒｉｌｏｇ  ＨＤＬの一例を示しているが、ＲＴＬ記述であれば言語はＶＨＤＬ，ｓｙｓｔｅｍｖｅｒｉｌｏｇ等どのような言語でも構わない。
【００４６】
第１行において、ＲＴＬ記述１２０のモジュール名が「ＳＡＭＰＬＥ」であることが示されている。
【００４７】
第２１行から第３２行において、対象論理１２１の処理内容が示されている。対象論理１２１は、クロック信号のポジティブエッジにおいて、入力信号ＳＩＧＮＡＬＡ［３：０］の２乗とＳＩＧＮＡＬＢの２乗との積を出力する。対象論理１２１はリセット信号のネガティブエッジにおいて０を出力する。
【００４８】
（情報入力画面の一例）
図９は、図５のステップＳ３１０の情報入力を行うための入力画面の一例を示す図である。
【００４９】
第１５１欄において、図８のＲＴＬ記述１２０から抽出された対象論理１２１の入力信号名の情報がスクリプト１２２に入力されている。第１５２欄において、各入力信号のビット幅の情報が、ＲＴＬ記述１２０から抽出されて入力されている。
【００５０】
第１５３欄において、対象論理１２１を含むＲＴＬ記述１２０のモジュール名が入力されている。第１５４欄において、ＲＴＬ記述１２０の言語が入力されている。ＲＴＬ記述１２０の言語を指定している理由は、テストベンチ記述１２４およびメモリ推定定型記述１２３を当該言語で作成するためである。
【００５１】
第１５５欄においてクロック信号名が入力され、第１５６欄においてレイテンシが入力されている。クロック信号名およびレイテンシが必要な理由は、テストベンチ記述１２４によってダンプデータ１２６を生成する際に何サイクル後にデータをキャプチャすればよいかをスクリプト１２２に指示するためである。
【００５２】
第１５７欄においてリセット信号名が入力され、第１５８欄においてその優位が入力される。リセット信号名とその優位が必要な理由は、リセット信号をネゲートした状態でなければ、テストベンチ記述１２４によってダンプデータ１２６を正しく生成できないためである。
【００５３】
第１５９欄において、図８のＲＴＬ記述１２０の記述から、対象論理１２１の出力信号名の情報がスクリプト１２２に入力されている。第１６０欄において、出力信号のビット幅の情報が、ＲＴＬ記述１２０から抽出されて入力されている。
【００５４】
第１６１欄において、メモリ推定定型記述１２３において使用されるメモリのモジュール名が指定されている。
【００５５】
なお、図９の例では、「ＲＯＭ化実行」と記載されたボタン１７２をユーザが選択することによって、上記の入力に基づいてメモリ推定定型記述１２３およびテストベンチ記述１２４の自動生成が開始される。
【００５６】
（メモリ推定定型記述の例）
図１０は、図４のメモリ推定定型記述の一例を示す図である。
【００５７】
図１０（Ａ）は、メモリ推定定型記述のインスタンスの記載例を示す。図８のＲＴＬ記述１２０の第２１行から第３２行に示す対象論理１２１に代えて、図１０（Ａ）の記述を貼り付けることによって、メモリ推定定型記述１２３を使用することができる。
【００５８】
図１０（Ａ）の第２３行においてメモリのアドレスが、入力信号ＳＩＧＮＡＬＡ［３，０］と入力信号ＳＩＧＮＡＬＢとをビット結合した値に指定されている。第２４行においてメモリの値が出力信号ＲＥＳＵＬＴに指定されている。
【００５９】
図１０（Ｂ）は、メモリ推定定型記述として出力されるモジュールである。第５１行において、出力するＲＴＬの名称、すなわちモジュール名「ａｕｎ」が宣言されている。図１０（Ａ）で説明したように、図１０（Ｂ）のモジュールがインスタンス化されて、図８のＲＴＬ記述１２０の対象論理１２１に代えて記載される。
【００６０】
第５３行において、メモリのアドレスビット幅が指定されている。メモリのアドレスビット幅は、入力信号ＳＩＧＮＡＬＡおよびＳＩＧＮＡＬＢのビット数の合計値に等しい。
【００６１】
第５４行において、メモリのデータ幅が指定されている。メモリのデータ幅は、出力信号ＲＥＳＵＬＴのビット幅に等しい。
【００６２】
第６６行において、ダンプデータ１２６としてのデータ名"aundata.txt"の値がメモリｒｏｍの初期値として読み込まれる。先頭アドレスは０、最終アドレスは２＊＊ＰＡＤＤＲ＿ＷＩＤＴＨ−１である。
【００６３】
第６９行から第７１行において、レイテンシ設定の数だけ出力を待たせるようにしている。図１０（Ｂ）では１サイクル分を示しているが、レイテンシが増加すれば本行に記載するシフトレジスタの数を増加させる。
【００６４】
（テストベンチ記述の例）
図１１は、図４のテストベンチ記述の一例を示す図である。
【００６５】
図１１のテストベンチ記述１２４を実行すると、変数ｉを１ずつ増加させることにより入力信号の最小値から最大値まで網羅的な入力パターンが対象論理１２１に入力信号として与えられる。対象論理１２１に与えられた入力信号に従って出力信号が一意に定まる。対象論理１２１の出力値は、指定したレイテンシ分のサイクルを経過した後に、毎サイクルごとに出力変数ＲＯＭに格納される。最後に、出力変数ＲＯＭに格納された情報がテキストデータに出力される。
【００６６】
第１０３行において、入力信号のビット数の合計値が記載される。この合計値はメモリのアドレスビット幅として使用されるとともに、網羅的に入力する入力信号の最大値として使用される。
【００６７】
第１０４行において、出力信号のビット幅が記載される。このビット幅は、メモリのデータ幅に対応付けられる。
【００６８】
第１０９行から第１１４行において、テストベンチ上で与える擬似クロックが生成される。テストベンチ上でインスタンス化された図８のＲＴＬ記述１２０は、本クロックによって駆動される。
【００６９】
第１１６行から第１２０行において、リセット信号ＲＳＴの解除が正論理で記述されている。第１３５行において、ＲＴＬ記述１２０（モジュール名：ＳＡＭＰＬＥ）のインスタンス化時に、リセット信号ＲＳＴを論理反転「〜」した値がＲＴＬ記述１２０に入力ＲＴＬに与えることによって、図９に記載したリセット優位情報が実現されている。なお、この記載に代えて、リセット信号ＲＳＴの解除を負論理で記述しても構わない。
【００７０】
第１２３行において、入力信号に対して変数ｉが強制入力される。なお、第１２３行において、「ＳＡＭＰＬＥ．ＳＩＧＮＡＬＡ」は、インスタンス化されたモジュールＳＡＭＰＬＥ（すなわち、図８のＲＴＬ記述１２０）に含まれる信号名ＳＩＧＮＡＬＡを意味する。
【００７１】
第１２２行に示されているように、上記の第１２３行の強制入力は変数ｉを０から１ずつ増やしながら、入力ビット幅だけ２をべき乗した回数まで繰り返される。これによって、入力信号の各ビットに対して０，１の値が網羅的に与えられる（すなわち、全入力パターンが対象論理１２１に入力される）。
【００７２】
入力信号を変化させた後、第１２４行において、レイテンシ情報を利用してそのサイクル後にデータをキャプチャするようにしている。レイテンシが増加すればその分だけ本記述のウェイトが増加する。
【００７３】
第１２６行において、対象論理１２１の出力信号が出力変数ＲＯＭに格納される。上記の第１２２行から第１２６行が繰り返されることによって、入力信号の各ビットが全てトグルするまで繰り返され、これによって対象論理１２１の全ての入力パターンに対応する出力値が生成される。
【００７４】
第１２９行において、出力変数ＲＯＭに格納されたデータがテキストファイル"aundata.txt"に出力される。出力データは、メモリ推定定型記述１２３で使用される。
【００７５】
第１３５行において、図８のＲＴＬ記述１２０（モジュール名：ＳＡＭＰＬＥ）がインスタンス化される。このインスタンス化されたＲＴＬ記述１２０に対して、上記の第１２３行で示される入力が与えられる。
【００７６】
（ダンプデータ）
図１２は、図４のダンプデータの一例を示す図である。図１２の例では、アドレスの０番目から順に出力データが記載されている。
【００７７】
［効果］
以上のとおり実施の形態１によれば、ＦＰＧＡに含まれる論理セルの利用率が１００％となってしまったために、ＲＴＬ記述に含まれる全ての論理回路の機能をＦＰＧＡに搭載できないという事態に対処することができる。具体的には、ＲＴＬ記述に含まれる論理回路部分の一部を、同じ入出力関係を有するメモリ推定定型記述に置換することによって、論理ゲート数を削減するようにＲＴＬ記述を変更する。この結果、論理ゲート数の削減前のデジタル回路と同等の機能をＦＰＧＡに搭載することが可能になる。
【００７８】
実施の形態２．
実施の形態２では、対象論理を置換した結果として使用されるＦＰＧＡのメモリブロック１０２の容量を削減する方法を説明する。具体的には、入力信号のうち、対象論理１２１で使用されていないビットについては、メモリブロック１０２に格納しないようにするものである。以下、図面を参照して詳しく説明する。
【００７９】
図１３は、図５のステップＳ３２０のテストベンチの生成および実行を変更した手順を示すフローチャートである。以下の各手順は、図７のＣＰＵ１４１によってプログラムを実行することによって実現される。
【００８０】
まず、ＣＰＵ１４１は、対象論理１２１の特定の入力ビットを０に固定し、その他の入力を網羅的に変化させた場合（ステップＳ４００）において、各入力に対する対象論理の出力をシミュレーションで求める（ステップＳ４０１）。
【００８１】
次に、ＣＰＵ１４１は、上記特定の入力ビットを１に固定し、その他の入力を網羅的に変化させた場合（ステップＳ４０２）において、各入力に対する対象論理の出力をシミュレーションで求める（ステップＳ４０３）。
【００８２】
次のステップＳ４０４において、ＣＰＵ１４１は、上記特定の入力ビットが０の場合と１の場合とで出力に変化がなければ、上記の上記特定の入力ビットを不要ビットと判断する。
【００８３】
その次のステップＳ４０５において、ＣＰＵ１４１は、入力信号の全ビットを特定ビットに設定したか否かを判定する。入力信号の全ビットを特定ビットに設定していない場合には、ＣＰＵ１４１は特定ビットを未設定のビットに変更して（ステップＳ４０６）上記のステップＳ４００〜Ｓ４０５を繰り返す。上記のステップＳ４００〜Ｓ４０６は、不要ビットを識別するステップに相当する。
【００８４】
入力信号の全ビットを特定ビットに設定した場合には（ステップＳ４０５でＹＥＳ）、ＣＰＵ１４１は、対象論理１２１に対して全不要ビットを除いた入力ビットを網羅的に変化させた場合（ステップＳ４０７）において、各入力に対する出力をシミュレーションで求める（ステップＳ４０８）。その次のステップＳ４０９において、ＣＰＵ１４１は、得られた出力をダンプデータとして、ＲＡＭ１４２または外部記憶装置１４４に記憶する。
【００８５】
図１４は、特定ビットの値を０に固定するためのテストベンチ記述の例を示す図である。
【００８６】
図１４の第１５２行に示すように入力信号に変数ｉを入力した後に、第１５３行に示すように、特定ビットである入力信号ＳＩＧＮＡＬＡのビット２に“０”を上書きすることによって、入力信号ＳＩＧＮＡＬＡのビット２の値を“０”に固定することができる。
【００８７】
図１５は、実施の形態２において、メモリ推定定型記述およびテストベンチ記述を生成するために、対象論理から抽出される情報の例を示す図である。図１５の例は実施の形態１の図９に対応するものである。
【００８８】
図１５では、入力信号ＳＩＧＮＡＬＡのビット２が不要ビットである場合が示されている。この場合、入力信号名としてＳＩＧＮＡＬＡ［２］が抽出されず、その他の入力信号ＳＩＧＮＡＬＡ［１：０］，ＳＩＮＧＮＬＡ［３］，ＳＩＧＮＡＬＢが抽出される。
【００８９】
［効果］
以上のとおり実施の形態２によれば、上記のステップＳ４００〜Ｓ４０５において、入力信号の各ビットが対象論理１２１で使用されているか否かが判定される。そして、上記のステップＳ４０７およびＳ４０８において、対象論理１２１で使用されていないビットである不要ビットを除いて、対象論理１２１の全ての入力信号パターンに対応する出力信号がシミュレーションで求められる。ステップＳ４０９において、シミュレーション結果がダンプデータとして記憶装置に格納される。このダンプデータは、最終的に図１のＦＰＧＡ１００のメモリブロック１０２に転送される。したがって、不要ビットに関係する部分は、メモリブロック１０２に格納されなくなるので、必要なメモリブロック１０２の容量を削減することができる。
【００９０】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９１】
１００  ＦＰＧＡ、１０１  論理セル、１０２  メモリブロック、１０３  ＤＳＰ、１１１，１２０  ＲＴＬ記述、１２１  対象論理、１２２  スクリプト、１２３  メモリ推定定型記述、１２４  テストベンチ記述、１２６  ダンプデータ、１４０  コンピュータ、１４１  ＣＰＵ、１４２  ＲＡＭ、１４４  外部記憶装置。 
【図１】
2019133591.tif 000003
【図２】
2019133591.tif 000004
【図３】
2019133591.tif 000005
【図４】
2019133591.tif 000006
【図５】
2019133591.tif 000007
【図６】
2019133591.tif 000008
【図７】
2019133591.tif 000009
【図８】
2019133591.tif 000010
【図９】
2019133591.tif 000011
【図１０】
2019133591.tif 000012
【図１１】
2019133591.tif 000013
【図１２】
2019133591.tif 000014
【図１３】
2019133591.tif 000015
【図１４】
2019133591.tif 000016
【図１５】
2019133591.tif 000017