(57)【要約】      （修正有）【課題】パイプライン合成を行った回路記述の検証を行う際の設計者の手間を低減する。【解決手段】回路検証用記述変換装置１００は、動作レベル検証用記述をレジスタ転送レベル回路記述の検証のためのレジスタ転送レベル検証用記述に変換する変換部１０２と、変換されたレジスタ転送レベル検証用記述を出力する出力部１０３と、を備え、前記変換部１０２は、出力信号の変数名を用いて前記動作レベル検証用記述から出力信号検証用記述を抽出する出力信号検証用記述抽出手段１０２Ａと、入力信号の変数名を用いて前記動作レベル検証用記述から入力信号検証用記述を抽出する入力信号検証用記述抽出手段１０２Ｂと、前記出力信号検証用記述及び前記入力信号検証用記述が並列動作するように前記動作レベル検証用記述を前記レジスタ転送レベル検証用記述に変換する変換手段１０２Ｃと、を有する。【選択図】図１
2009075821.tif 000002
【特許請求の範囲】
【請求項１】
動作レベル回路記述の検証のための動作レベル検証用記述並びに回路の入力信号及び出力信号の変数名を入力する入力部と、
前記動作レベル検証用記述をレジスタ転送レベル回路記述の検証のためのレジスタ転送レベル検証用記述に変換する変換部と、
前記変換部によって変換されたレジスタ転送レベル検証用記述を出力する出力部と、を備え、
前記変換部は、
前記出力信号の変数名を用いて前記動作レベル検証用記述から出力信号検証用記述を抽出する出力信号検証用記述抽出手段と、
前記入力信号の変数名を用いて前記動作レベル検証用記述から入力信号検証用記述を抽出する入力信号検証用記述抽出手段と、
前記出力信号検証用記述及び前記入力信号検証用記述が並列動作するように前記動作レベル検証用記述を前記レジスタ転送レベル検証用記述に変換する変換手段と、を有することを特徴とする回路検証用記述変換装置。
【請求項２】
前記変換部は、
前記出力信号検証用記述及び前記入力信号検証用記述のループ関数に従ってストール条件を生成するストール条件生成手段と、
前記ストール条件を前記入力信号検証用記述に挿入するストール条件挿入手段と、を有し、
前記変換手段は、前記ストール条件が挿入された前記入力信号検証用記述及び前記出力信号検証用記述を並列動作するように前記動作レベル検証用記述を前記レジスタ転送レベル検証用記述へ変換する請求項１に記載の回路検証用記述変換装置。
【請求項３】
前記動作レベル回路記述を前記レジスタ転送レベル回路記述に変換する高位合成部をさらに備え、
前記入力部は、前記動作レベル回路記述をさらに入力し、
前記出力部は、前記高位合成部によって変換された前記レジスタ転送レベル回路記述をさらに出力する請求項１又は２に記載の回路検証用記述変換装置。
【請求項４】
動作レベル回路記述を入力する入力部と、
レジスタ転送レベル回路記述の検証のためのレジスタ転送レベル検証用記述に対応するように前記動作レベル回路記述を変換する変換部と、
前記変換部によって変換された動作レベル回路記述を出力する出力部と、を備え、
前記変換部は、
前記動作レベル回路記述からループ関数を抽出するループ関数抽出手段と、
前記ループ関数の変数名を変更し、当該変更された変数名の値を更新することによって前記動作レベル回路記述を変換する変換手段と、を有することを特徴とする回路検証用記述変換装置。
【請求項５】
動作レベル回路記述の検証のための動作レベル検証用記述並びに回路の入力信号及び出力信号の変数名を入力し、
前記出力信号の変数名を用いて前記動作レベル検証用記述から出力信号検証用記述を抽出し、
前記入力信号の変数名を用いて前記動作レベル検証用記述から入力信号検証用記述を抽出し、
前記出力信号検証用記述及び前記入力信号検証用記述が並列動作するように前記動作レベル検証用記述をレジスタ転送レベル回路記述の検証のためのレジスタ転送レベル検証用記述に変換することを特徴とする回路検証用記述変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路検証用記述変換装置及び回路検証用記述変換方法に関し、特に、高位合成されたＣ記述によるハードウェア設計の検証に用いられる回路検証用記述変換装置及び回路検証用記述変換方法に関する。
【背景技術】
【０００２】
高位合成（動作合成）は、回路の動作を表す動作レベル回路記述（以下「ＢＬ（Behavior Level）回路記述という」）からその回路のレジスタ転送レベル回路記述（以下「ＲＴＬ（Register Transfer Level）」回路記述という）を生成する方法である。ＢＬ回路記述は、Ｃ言語又はＣ言語をベースとした拡張言語（例えばＳｙｓｔｅｍＣ言語）で記述されることが多い。ＲＴＬ回路記述は、Ｖｅｒｉｌｏｇ  ＨＤＬやＶＨＤＬなどのハードウェア記述言語（以下「ＨＤＬ（Hardware Description Language）」という）で記述されることが多い。
【０００３】
高位合成の対象となる回路を検証するためには、回路に対して適切な入力信号を与え、回路の出力信号を読み取ることによって、回路の動作が正しいか否かを検証する検証用記述（テストベンチ）が必要となる。一般的には、検証用記述は、高位合成の対象となる回路と同一の言語で記述されても良いし、異なる言語で記述されても良い。
【０００４】
近年、検証用記述と高位合成の対象となる回路の言語に依存しないシミュレータが知られている。例えば、Ｃ言語をベースとしたＳｙｓｔｅｍＣ言語で記述された検証用記述と、ＨＤＬであるＶｅｒｉｌｏｇ  ＨＤＬで記述された回路記述とを組み合わせて検証するシミュレータが知られている。これにより、高位合成前と高位合成後の回路記述で用いられる言語の違いに関係なく、単一の検証用記述のみでの検証が可能である。
【０００５】
一方、高位合成で一般的に利用されている技術としてパイプライン合成が知られている。パイプライン合成によって、入力信号や出力信号のスループットを向上させることが可能である。パイプライン合成とは、動作レベルの記述の中のループ部分に着目し、ソフトウェアパイプライン又はループパイプラインと呼ばれる技法を用いて、逐次実行されていたループの繰り返しを並列動作に変換するものである。
【０００６】
しかし、順序関係に依存しない入力信号や出力信号との間の順序も変化する場合がある。このような場合には、高位合成前と高位合成後の回路記述で入出力タイミングの異なる別々の検証用記述を用意する必要があり、そのための手間がかかってしまうという問題があった。
【０００７】
例えば、特許文献１には、ＨＤＬからサイクルアキュレートなＣ言語による記述を生成する技術が開示されているが、特許文献１の技術は、並列処理と逐次処理のギャップを埋めるものではない。
【特許文献１】特開２００６−１３９７２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、パイプライン合成を行った回路記述の検証を行う際の設計者の手間を低減することである。
【課題を解決するための手段】
【０００９】
本発明の第１態様によれば、動作レベル回路記述の検証のための動作レベル検証用記述並びに回路の入力信号及び出力信号の変数名を入力する入力部と、前記動作レベル検証用記述をレジスタ転送レベル回路記述の検証のためのレジスタ転送レベル検証用記述に変換する変換部と、前記変換部によって変換されたレジスタ転送レベル検証用記述を出力する出力部と、を備え、前記変換部は、前記出力信号の変数名を用いて前記動作レベル検証用記述から出力信号検証用記述を抽出する出力信号検証用記述抽出手段と、前記入力信号の変数名を用いて前記動作レベル検証用記述から入力信号検証用記述を抽出する入力信号検証用記述抽出手段と、前記出力信号検証用記述及び前記入力信号検証用記述が並列動作するように前記動作レベル検証用記述を前記レジスタ転送レベル検証用記述に変換する変換手段と、を有することを特徴とする回路検証用記述変換装置が提供される。
【００１０】
本発明の第２態様によれば、動作レベル回路記述を入力する入力部と、レジスタ転送レベル回路記述の検証のためのレジスタ転送レベル検証用記述に対応するように前記動作レベル回路記述を変換する変換部と、前記変換部によって変換された動作レベル回路記述を出力する出力部と、を備え、前記変換部は、前記動作レベル回路記述からループ関数を抽出するループ関数抽出手段と、前記ループ関数の変数名を変更し、当該変更された変数名の値を更新することによって前記動作レベル回路記述を変換する変換手段と、を有することを特徴とする回路検証用記述変換装置が提供される。
【００１１】
本発明の第３態様によれば、動作レベル回路記述の検証のための動作レベル検証用記述並びに回路の入力信号及び出力信号の変数名を入力し、前記出力信号の変数名を用いて前記動作レベル検証用記述から出力信号検証用記述を抽出し、前記入力信号の変数名を用いて前記動作レベル検証用記述から入力信号検証用記述を抽出し、前記出力信号検証用記述及び前記入力信号検証用記述が並列動作するように前記動作レベル検証用記述をレジスタ転送レベル回路記述の検証のためのレジスタ転送レベル検証用記述に変換することを特徴とする回路検証用記述変換方法が提供される。
【発明の効果】
【００１２】
本発明によれば、パイプライン合成を行った回路記述の検証を行う際の設計者の手間を低減することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施例について図面を参照して説明する。なお、以下の実施例は、本発明の実施の一形態であって、本発明の範囲を限定するものではない。
【用語の定義】
【００１４】
はじめに、以下の実施例において用いられる用語について説明する。
【００１５】
動作レベル回路記述（以下「ＢＬ（Behavior Level）回路記述」という）とは、Ｃ言語等のＢＬ言語で表現されたハードウェア構成の回路記述である。ＢＬ回路記述は、どのタイミングで何を同時に実行するかを意識することなく、全ての演算を逐次的に実行させるように記述されている。
【００１６】
動作レベル検証用記述（以下「ＢＬ（Behavior Level）検証用記述」という）とは、ＢＬ回路記述を検証するために用いられる検証用記述である。ＢＬ検証用記述は、ＢＬ回路記述が逐次的に処理を実行することに合せて、ＢＬ回路記述からの出力信号を待ってから次の入力信号を送るように記述されている。
【００１７】
レジスタ転送レベル回路記述（以下「ＲＴＬ（Register Transfer Level）回路記述」という）は、レジスタ間の演算を並列に実行させるように記述された回路記述である。ＲＴＬ回路記述は、論理合成が可能である。
【００１８】
レジスタ転送レベル検証用記述（以下「ＲＴＬ（Register Transfer Level）検証用記述」という）は、ＲＴＬ回路記述を検証するために用いられる検証用記述である。ＲＴＬ検証用記述は、ＲＴＬ回路記述の入力信号に対して適当なテストパターンとなる値を送ることができ且つＲＴＬ回路記述から出力信号の値を受け取ることができるように記述されている。
【実施例１】
【００１９】
次に、本発明の実施例１について説明する。
【００２０】
図１は、本発明の実施例１に係る回路検証用記述変換装置１００の構成を示すブロック図である。
【００２１】
本発明の実施例１に係る回路検証用記述変換装置１００は、入力部１０１、変換部１０２、メモリ１０３及び出力部１０４を備え、入力装置１１０及び論理シミュレータ１３０と接続されている。
【００２２】
入力部１０１は、入力装置１１０から出力された出力信号及び入力信号の変数名並びにＢＬ検証用記述を入力し、変換部１０２へ出力する。
【００２３】
変換部１０２は、メモリ１０３に記憶された変換プログラム１０３Ａを実行することによって、出力信号検証用記述抽出手段１０２Ａ、入力信号検証用記述抽出手段１０２Ｂ及び変換手段１０２Ｃを実現する。
【００２４】
出力信号検証用記述抽出手段１０２Ａは、入力部１０１から出力された出力信号の変数名を用いてＢＬ検証用記述から出力信号検証用記述を抽出する。
【００２５】
入力信号検証用記述抽出手段１０２Ｂは、入力部１０１から出力された入力信号の変数名を用いてＢＬ検証用記述から入力信号検証用記述を抽出する。
【００２６】
変換手段１０２Ｃは、出力信号検証用記述抽出手段１０２Ａによって抽出された出力信号検証用記述及び入力信号検証用記述抽出手段１０２Ｂによって抽出された入力信号検証用記述が並列動作するように、ＢＬ検証用記述をＲＴＬ検証用記述に変換する。
【００２７】
変換部１０２は、変換手段１０２Ｃによって変換されたＲＴＬ検証用記述を出力部１０４に出力する。
【００２８】
メモリ１０３は、変換プログラム１０３Ａを記憶する。また、メモリ１０３は、変換部１０２の各手段１０２Ａ〜Ｃのワーキングメモリとしても機能する。
【００２９】
出力部１０４は、変換部１０２から出力されたＲＴＬ検証用記述を入力し、論理シミュレータ１３０に出力する。
【００３０】
入力装置１１０は、本発明の実施例１に係る回路検証用変換装置１００に出力信号及び入力信号の変数名並びにＢＬ検証用記述を出力し、高位合成装置１２０にＢＬ回路記述を出力し、論理シミュレータ１３０にＢＬ検証用記述及びＢＬ回路記述を出力する。入力装置１１０は、例えばキーボードである。
【００３１】
高位合成装置１２０は、入力装置１１０から出力されたＢＬ回路記述からＲＴＬ回路記述を生成する高位合成を行い、生成されたＲＴＬ回路記述を論理シミュレータ１３０に出力する。
【００３２】
論理シミュレータ１３０は、入力装置１１０から出力されたＢＬ回路記述とＢＬ検証用記述を組み合わせて動作レベルの論理シミュレーションを行い、高位合成装置１２０から出力されたＲＴＬ回路記述と出力部１０４から出力されたＲＴＬ検証用記述を組み合わせてレジスタ転送レベルの論理シミュレーションを行う。
【００３３】
なお、本発明の実施例１においては、動作レベルの検証対象のＢＬ回路記述が高位合成装置１２０によってレジスタ転送レベルの検証対象のＲＴＬ回路記述に変換されることを想定するが、代替的には、高位合成装置１２０によって高位合成された回路記述だけではなく、同一の機能を果たすことを目的として、逐次的な処理を並列処理に変換した２種類の回路記述に対しても適用することができる。
【００３４】
図２は、図１の入力装置１１０から出力されるＢＬ検証用記述の例である。
【００３５】
図３は、図２のＢＬ検証用記述に対応するデータ依存グラフの例である。
【００３６】
図２のＢＬ検証用記述は、検証対象の回路へ入力信号を与え、回路からの出力信号を受けてから再び次の入力信号を回路へ与える構造である。図２のＢＬ検証用記述は、これをＳｙｓｔｅｍＣ言語で記述したときのスレッド内の記述の例である。
【００３７】
図４は、本発明の実施例１に係る検証用記述変換処理における変換部１０２の処理手順を示すフローチャートである。
【００３８】
はじめに、出力信号検証用記述抽出手段１０２Ａは、入力装置１１０から出力された回路からの出力信号の変数名を用いて図２のＢＬ検証用記述の後方データ依存解析を行うことによって、図２のＢＬ検証用記述から出力信号を始点とする図３のデータ依存グラフに対応した部分（以下「出力信号検証用記述」という）を抽出する（Ｓ４０１）。
【００３９】
Ｓ４０１の後方データ解析では、図２のＢＬ検証用記述から図３のデータ依存グラフのノードを考えて、出力信号の変数名で指定された変数を祖先に持つような図３のデータ依存グラフのノードを抽出する。抽出されたノードに対応した図２のＢＬ検証用記述の集まりが出力信号検証用記述である。このとき、制御フローに対応した”if”や”while”などの記述に関しては、抽出された記述がその制御に依存する場合にはそのまま残す。
【００４０】
図５は、図４のＳ４０１において抽出される出力信号検証用記述の例である。
【００４１】
図６は、図５の出力信号検証用記述に対応するデータ依存グラフの例である。
【００４２】
一方、入力信号検証用記述抽出手段１０２Ｂは、入力装置１１０から出力された回路への入力信号の変数名を用いて図２のＢＬ検証用記述の前方データ依存解析を行うことによって、図２のＢＬ検証用記述から入力信号を終点とする図３のデータ依存グラフに対応した部分（以下「入力信号検証用記述」という）を抽出する（Ｓ４０２）。
【００４３】
Ｓ４０２の前方データ解析では、図２のＢＬ検証用記述から図３のデータ依存グラフのノードを考えて、入力信号の変数名で指定された変数を子孫に持つような図３のデータ依存グラフのノードを抽出する。抽出されたノードに対応した図２のＢＬ検証用記述の集まりが入力信号検証用記述である。
【００４４】
図７は、図４のＳ４０２において抽出される入力信号検証用記述の例である。
【００４５】
図８は、図７の入力信号検証用記述に対応するデータ依存グラフの例である。
【００４６】
次に、変換手段１０２Ｃは、Ｓ４０１において抽出された出力信号検証用記述及びＳ４０２において抽出された入力信号検証用記述をそれぞれ並列に動作するＲＴＬ検証用記述に変換する（Ｓ４０３）。
【００４７】
このようにして得られた変換後のＲＴＬ検証用記述は、所定のタイミングモデルで動作し、検証対象のＢＬ回路記述と組み合わせて、論理シミュレータ１３０での検証が可能である。
【００４８】
なお、本発明の実施例１では、出力信号及び入力信号の変数名は、入力装置１１０から出力されたが、代替的には、ＢＬ検証用記述又は検証対象のＢＬ回路記述から抽出されてもよい。例えば、ＳｙｓｔｅｍＣ言語の場合には、”sc_in”若しくは”sc_out”又は”read”若しくは”write”といった方向性を表す記述方法に着目することによって抽出される。
【００４９】
本発明の実施例１によれば、複数の検証用記述を用意することなく、異なる言語で記述された検証対象のＢＬ回路記述及びＲＴＬ回路記述の両方を検証することが可能となる。その結果、パイプライン合成を行った回路記述の検証を行う際の設計者の手間を低減することができる。
【実施例２】
【００５０】
次に、本発明の実施例２について説明する。本発明の実施例１は、出力信号検証用記述と入力信号検証用記述とを変換する例であるが、本発明の実施例２は、ストール条件が挿入された出力信号検証用記述と入力信号検証用記述とを変換する例である。なお、本発明の実施例１と同様の内容についての説明は省略する。
【００５１】
図９は、本発明の実施例２に係る回路検証用記述変換装置２００の構成を示すブロック図である。
【００５２】
本発明の実施例２に係る回路検証用記述変換装置２００は、入力部２０１、変換部２０２、メモリ２０３及び出力部２０４を備え、入力装置２１０及び論理シミュレータ２３０と接続されている。
【００５３】
入力部２０１は、入力装置２１０から出力された出力信号及び入力信号の変数名並びにＢＬ検証用記述を入力し、変換部２０２へ出力する。
【００５４】
変換部２０２は、メモリ２０３に記憶された変換プログラム２０３Ａを実行することによって、出力信号検証用記述抽出手段２０２Ａ、入力信号検証用記述抽出手段２０２Ｂ、変換手段２０２Ｃ、ストール条件生成手段２０２Ｄ及びストール条件挿入手段２０２Ｅを実現する。
【００５５】
出力信号検証用記述抽出手段２０２Ａは、入力部２０１から出力された出力信号の変数名を用いてＢＬ検証用記述から出力信号検証用記述を抽出する。
【００５６】
入力信号検証用記述抽出手段２０２Ｂは、入力部２０１から出力された入力信号の変数名を用いてＢＬ検証用記述から入力信号検証用記述を抽出する。
【００５７】
変換手段２０２Ｃは、後述のストール条件挿入手段２０２Ｅによってストール条件が挿入された出力信号検証用記述及び入力信号検証用記述抽出手段２０２Ｂによって抽出された入力信号検証用記述が並列動作するように、ＢＬ検証用記述をＲＴＬ検証用記述に変換する。
【００５８】
ストール条件生成手段２０２Ｄは、出力信号検証用記述抽出手段２０２Ａによって抽出された出力信号検証用記述のストール条件を生成する。
【００５９】
ストール条件挿入手段２０２Ｅは、ストール条件生成手段２０２Ｄによって生成されたストール条件を出力信号検証用記述に挿入する。
【００６０】
変換部２０２は、変換手段２０２Ｃによって変換されたＲＴＬ検証用記述を出力部２０４に出力する。
【００６１】
メモリ２０３は、変換プログラム２０３Ａを記憶する。また、メモリ２０３は、変換部２０２の各手段２０２Ａ〜Ｅのワーキングメモリとしても機能する。
【００６２】
出力部２０４は、変換部２０２から出力されたＲＴＬ検証用記述を入力し、論理シミュレータ２３０に出力する。
【００６３】
入力装置２１０は、本発明の実施例２に係る回路検証用変換装置２００に出力信号及び入力信号の変数名並びにＢＬ検証用記述を出力し、高位合成装置２２０にＢＬ回路記述を出力し、論理シミュレータ２３０にＢＬ検証用記述及びＢＬ回路記述を出力する。入力装置２１０は、例えばキーボードである。
【００６４】
高位合成装置２２０は、入力装置２１０から出力されたＢＬ回路記述からＲＴＬ回路記述を生成する高位合成を行い、生成されたＲＴＬ回路記述を論理シミュレータ２３０に出力する。
【００６５】
論理シミュレータ２３０は、入力装置２１０から出力されたＢＬ回路記述とＢＬ検証用記述とを組み合わせて動作レベルの論理シミュレーションを行い、高位合成装置２２０から出力されたＲＴＬ回路記述と出力部２０４から出力されたＲＴＬ検証用記述とを組み合わせてレジスタ転送レベルの論理シミュレーションを行う。
【００６６】
なお、本発明の実施例２においては、動作レベルの検証対象のＢＬ回路記述は、高位合成装置２２０によってレジスタ転送レベルの検証対象のＲＴＬ回路記述に変換されることを想定するが、代替的には、高位合成装置２２０によって高位合成された回路記述だけではなく、同一の機能を果たすことを目的として、逐次的な処理を並列処理に変換した２種類の回路記述に対しても適用することができる。
【００６７】
図１０は、図９の入力装置２１０から出力されるＢＬ検証用記述の例である。
【００６８】
図１１は、図１０のＢＬ検証用記述に対応するデータ依存グラフの例である。
【００６９】
図１０のＢＬ検証用記述は、検証対象の回路へ入力信号を与え、回路からの出力信号を受けてから再び次の入力信号を回路へ与える構造である。図１０のＢＬ検証用記述内では、検証対象の回路からの出力信号を使って後の時刻の回路への入力信号が生成される。ここでの時刻とは図１０のＢＬ検証用記述内のループの繰り返し回数に対応し、検証対象の回路からの出力信号は、時系列で記憶領域に保存される。Ｃ言語ではこの記憶領域として配列が用いられる。”exp[i]”では、配列”exp”に回路の出力信号を保存し、”test_data.write(exp[i-4])”では４回前の回路の出力信号を入力信号とする。図１０のＢＬ検証用記述は、ＳｙｓｔｅｍＣ言語で記述されている。
【００７０】
図１２は、本発明の実施例２に係る検証用記述変換処理における変換部２０２の処理手順を示すフローチャートである。
【００７１】
はじめに、出力信号検証用記述抽出手段２０２Ａは、入力装置２１０から出力された回路からの出力信号の変数名を用いて図１０のＢＬ検証用記述の後方データ依存解析を行うことによって、図１０のＢＬ検証用記述から出力信号を始点とする図１１のデータ依存グラフに対応した部分（以下「出力信号検証用記述」という）を抽出する（Ｓ１２０１）。
【００７２】
Ｓ１２０１の後方データ解析では、図１０のＢＬ検証用記述から図１１のデータ依存グラフのノードを考えて、出力信号の変数名で指定された変数を祖先に持つような図１１のデータ依存グラフのノードを抽出する。抽出されたノードに対応した図１０のＢＬ検証用記述の集まりが出力信号検証用記述である。このとき、制御フローに対応した”if”や”while”などの記述に関しては、抽出された記述がその制御に依存する場合にはそのまま残す。
【００７３】
図１３は、図１２のＳ１２０１において抽出される出力信号検証用記述の例である。
【００７４】
図１４は、図１３の出力信号検証用記述に対応するデータ依存グラフの例である。
【００７５】
一方、入力信号検証用記述抽出手段２０２Ｂは、入力装置２１０から出力された回路への入力信号の変数名を用いて図１０のＢＬ検証用記述の前方データ依存解析を行うことによって、図１０のＢＬ検証用記述から入力信号を終点とする図１１のデータ依存グラフに対応した部分（以下「入力信号検証用記述」という）を抽出する（Ｓ１２０２）。
【００７６】
Ｓ１２０２の前方データ解析では、図１０のＢＬ検証用記述から図１１のデータ依存グラフのノードを考えて、入力信号の変数名で指定された変数を子孫に持つような図１１のデータ依存グラフのノードを抽出する。抽出されたノードに対応した図１０のＢＬ検証用記述の集まりが入力信号検証用記述である。
【００７７】
図１５は、図１２のＳ１２０２において抽出される入力信号検証用記述の例である。
【００７８】
図１６は、図１５の入力信号検証用記述に対応するデータ依存グラフの例である。
【００７９】
ここで、図１０の”if (i<4)”は制御フローに関する記述であり、回路への入力信号”test_data”はこの制御フローに属するのに対して、回路からの出力信号”out_data”はこの制御フローに属さない。従って、図１３の出力信号検証用記述には、図１０の”if(i<4)”は含まれず、図１５の入力信号検証用記述には、図１０の”if(i<4)”が含まれる。
【００８０】
このようにして得られた図１３の出力信号検証用記述と図１５の入力信号検証用記述とがそれぞれ独立に動作すると、図１５の入力信号検証用記述内で必要とする値”exp[i-4]”が図１３の出力信号検証用記述内の代入式”exp[i] = out_data.read()”で求まっていないということが起こる。従って、両者が正しく動作するためには、図１５の入力信号検証用記述は、図１３の出力信号検証用記述内のループの繰り返し回数が４つ先に進むまで待たなければならない。
【００８１】
Ｓ１２０１及びＳ１２０２の後に、ストール条件生成手段２０２Ｄは、Ｓ１２０１において抽出された出力信号検証用記述及びＳ１２０２において抽出された入力信号検証用記述から記憶領域の場所を示す情報とif文などから決定されるコントロールフローとを組み合わせて出力信号検証用記述のループインデックスの線形関数群及び入力信号検証用記述のループインデックスの線形関数群を抽出し、それぞれのループインデックスの線形関数群に従ってストール条件を生成する（Ｓ１２０３）。
【００８２】
Ｓ１２０３のストール条件生成では、図１３の出力信号検証用記述のループインデックスの線形関数の引数”j”と図１５の入力信号検証用記述のループインデックスの線形関数の引数”i-4”との不等式”j>i-4”というストール条件を生成する。
【００８３】
次に、ストール条件挿入手段２０２Ｅは、Ｓ１２０３において生成されたストール条件をストールの対象である入力信号検証用記述に挿入する（Ｓ１２０４）。
【００８４】
次に、変換手段２０２Ｃは、Ｓ１２０１において抽出された出力信号検証用記述及びＳ１２０４においてストール条件が挿入された入力信号検証用記述をそれぞれ並列に動作するＲＴＬ検証用記述に変換する（Ｓ１２０５）。
【００８５】
このようにして得られた変換後のＲＴＬ検証用記述は、所定のタイミングモデルで動作し、検証対象のＢＬ回路記述と組み合わせて論理シミュレータ２３０で検証が可能である。
【００８６】
本発明の実施例２によれば、本発明の実施例１と同様の効果に加えて、出力信号検証用記述と入力信号検証用記述とがそれぞれ独立に動作することを保証することができる。
【実施例３】
【００８７】
次に、本発明の実施例３について説明する。本発明の実施例１，２は、ＲＴＬ回路記述を高位合成装置が生成する例であるが、本発明の実施例３は、ＲＴＬ回路記述を回路検証用記述変換装置が生成する例である。なお、本発明の実施例１，２と同様の内容についての説明は省略する。
【００８８】
図１７は、本発明の実施例３に係る回路検証用記述変換装置３００の構成を示すブロック図である
本発明の実施例３に係る回路検証用記述変換装置３００は、入力部３０１、変換部３０２、メモリ３０３、出力部３０４及び高位合成部３０５を備え、入力装置３１０及び論理シミュレータ３３０と接続されている。
【００８９】
入力部３０１は、入力装置３１０から出力された出力信号及び入力信号の変数名、ＢＬ検証用記述並びにＢＬ回路記述を入力する。入力部３０１は、出力信号及び入力信号の変数名並びにＢＬ検証用記述を変換部１０２へ出力し、ＢＬ回路記述を高位合成部３０５へ出力する。
【００９０】
変換部３０２は、メモリ３０３に記憶された変換プログラム３０３Ａを実行することによって、ＲＴＬ検証用記述生成し、出力部３０４に出力する。
【００９１】
メモリ３０３は、変換プログラム３０３Ａ及び高位合成プログラム３０３Ｂを記憶する。また、メモリ３０３は、変換部３０２及び高位合成部３０５のワーキングメモリとしても機能する。
【００９２】
出力部３０４は、変換部３０２から出力されたＲＴＬ検証用記述及び高位合成部３０５から出力されたＲＴＬ回路記述を入力し、論理シミュレータ３３０に出力する。
【００９３】
高位合成部３０５は、メモリ３０３に記憶された高位合成プログラム３０３Ｂを実行することによって、入力部３０１から出力されたＢＬ回路記述からＲＴＬ回路記述を生成する高位合成を行い、生成されたＲＴＬ回路記述を出力部３０４に出力する。
【００９４】
入力装置３１０は、本発明の実施例３に係る回路検証用変換装置３００に出力信号及び入力信号の変数名、ＢＬ検証用記述並びにＢＬ回路記述を出力し、論理シミュレータ３３０にＢＬ検証用記述及びＢＬ回路記述を出力する。入力装置３１０は、例えばキーボードである。
【００９５】
論理シミュレータ３３０は、入力装置３１０から出力されたＢＬ回路記述及びＢＬ検証用記述に従って動作レベルの論理シミュレーションを行い、出力部３０４から出力されたＲＴＬ回路記述及びＲＴＬ検証用記述に従ってレジスタ転送レベルの論理シミュレーションを行う。
【００９６】
なお、本発明の実施例３においては、動作レベルの検証対象のＢＬ回路記述が高位合成部３０５によってレジスタ転送レベルの検証対象のＲＴＬ回路記述に変換されることを想定するが、代替的には、高位合成部３０５によって高位合成された回路記述だけではなく、同一の機能を果たすことを目的として、逐次的な処理を並列処理に変換した２種類の回路記述に対しても適用することができる。
【００９７】
本発明の実施例３によれば、本発明の実施例１と同様の効果に加えて、高位合成装置がないシステムにおいても、入力装置３１０からＢＬ検証用記述及びＢＬ回路記述を出力するだけで、論理シミュレータ３３０で動作レベル及びレジスタ転送レベルのシミュレーションを行うことができる。
【実施例４】
【００９８】
次に、本発明の実施例４について説明する。本発明の実施例１〜３は、ＢＬ検証用記述をＲＴＬ検証用記述に変換する例であるが、本発明の実施例４は、ＢＬ回路記述をＲＴＬ検証用記述に対応するように変換する例である。なお、本発明の実施例１〜３と同様の内容についての説明は省略する。
【００９９】
図１８は、本発明の実施例４に係る回路検証用記述変換装置４００の構成を示すブロック図である。
【０１００】
本発明の実施例４に係る回路検証用記述変換装置４００は、入力部４０１、変換部４０２、メモリ４０３及び出力部４０４を備え、入力装置４１０及び論理シミュレータ４３０と接続されている。
【０１０１】
入力部４０１は、入力装置４１０から出力されたＢＬ回路記述を入力し、変換部４０２へ出力する。
【０１０２】
変換部４０２は、メモリ４０３に記憶された変換プログラム４０３Ａを実行することによって、ループ関数抽出手段４０２Ａ及び変換手段４０２Ｂを実現する。
【０１０３】
ループ関数抽出手段４０２Ａは、入力部４０１から出力されたＢＬ回路記述からループ関数を抽出する。
【０１０４】
変換手段４０２Ｂは、ループ関数抽出手段４０２Ａによって抽出されたループ関数の変数名を変更し、当該変更された変数名の値を更新することによってＢＬ回路記述を変換する。
【０１０５】
変換部４０２は、変換手段４０２Ｂによって変換されたＢＬ回路記述を出力部４０４に出力する。
【０１０６】
メモリ４０３は、変換プログラム４０３Ａを記憶する。また、メモリ４０３は、変換部４０２の各手段４０２Ａ，Ｂのワーキングメモリとしても機能する。
【０１０７】
出力部４０４は、変換部４０２から出力された変換されたＢＬ回路記述を入力し、論理シミュレータ４３０に出力する。
【０１０８】
入力装置４１０は、本発明の実施例４に係る回路検証用変換装置４００にＢＬ回路記述を出力し、高位合成装置４２０にＢＬ回路記述を出力し、論理シミュレータ４３０にＲＴＬ検証用記述を出力する。入力装置４１０は、例えばキーボードである。
【０１０９】
高位合成装置４２０は、入力装置４１０から出力されたＢＬ回路記述からＲＴＬ回路記述を生成する高位合成を行い、生成されたＲＴＬ回路記述を論理シミュレータ４３０に出力する。
【０１１０】
論理シミュレータ４３０は、出力部４０４から出力された変換されたＢＬ回路記述及び入力装置４１０から出力されたＲＴＬ検証用記述に従って動作レベルの論理シミュレーションを行い、高位合成装置４２０から出力されたＲＴＬ回路記述及び入力装置４１０から出力されたＲＴＬ検証用記述に従ってレジスタ転送レベルの論理シミュレーションを行う。
【０１１１】
なお、本発明の実施例４においては、動作レベルの検証対象のＢＬ回路記述が高位合成装置４２０によってレジスタ転送レベルの検証対象のＲＴＬ回路記述に変換されることを想定するが、代替的には、高位合成装置４２０によって高位合成された回路記述だけではなく、同一の機能を果たすことを目的として、逐次的な処理を並列処理に変換した２種類の回路記述に対しても適用することができる。
【０１１２】
図１９は、検証対象の回路のＢＬ回路記述のループ関数の例である。
【０１１３】
ループ関数は、ＢＬ回路記述の一部であり、ＢＬ回路記述が高位合成装置４２０によって高位合成される場合にパイプライン合成の対象となる。ループ関数を表す構文ｈは、例えばＣ言語ではfor文やwhile文などである。時間区切りを表す構文ｗは、例えばＳｙｓｔｅｍＣ言語ではwait文である。Ｃ言語の1行を1つの時間区切りとみなしても良い。Dは、ある時間区切りから別の時間区切りまでの記述である。
【０１１４】
図２０は、本発明の実施例４に係る回路記述変換処理における変換部４０２の処理手順を示すフローチャートである。
【０１１５】
はじめに、ループ関数抽出手段４０２Ａは、入力部４０１から出力されたＢＬ回路記述からループ関数を抽出する（Ｓ２００１）。
【０１１６】
次に、変換手段４０２Ｂは、Ｓ２００１において抽出されたループ関数の変数ｉ，Ｏ，Ｍ，Ｃ及びＴを初期化するために、各変数に０を代入する（Ｓ２００２）。
【０１１７】
次に、変換手段４０２Ｂは、Ｄｉの置換を行う（Ｓ２００３）。
【０１１８】
次に、変換手段４０２Ｂは、Ｍに｛Ｄｉ，Ｍ｝を代入する（Ｓ２００４）。
【０１１９】
ｉがｎ−１に等しくない場合には（Ｓ２００５−ＮＯ）、変換手段４０２Ｂは、Ｃの更新を行う（Ｓ２００６）。次に、変換手段４０２Ｂは、Ｏに｛Ｏ，Ｍ，ｗ，Ｃ｝を代入する（Ｓ２００７）。次に、変換手段４０２Ｂは、ｉをインクリメントし、Ｓ２００３へ戻る（Ｓ２００８）。
【０１２０】
一方、ｉがｎ−１に等しい場合には（Ｓ２００５−ＹＥＳ）、変換手段４０２Ｂは、Ｏに｛Ｏ，ｈ，Ｍ｝を代入し（Ｓ２００９）、本発明の実施例４に係る回路記述変換処理を終了する。
【０１２１】
図２１Ａ〜Ｃは、図２０のＳ２００３を模式的に示す模式図である。
【０１２２】
図２２Ａは、本発明の実施例４に係る回路記述変換処理において変換される前後の無限ループ関数の例であり、図２２Ｂは、本発明の実施例４に係る回路記述変換処理において変換される前後の有限ループ関数の例である。
【０１２３】
図２２Ａの記述Ｄ0の中で変数ａが現れる。変数ａは、図２１Ａの変数表に存在する変数であるから、変数ａを置換する。変数ａは、図２１Ａの変数表にすでに登録されているのでコピー回数を増やす。変数ｂは変数表にない変数なので新たに登録する。このような操作を繰り返すことによって図２１Ｂを経由し、最後にループを完成させることによって図２１Ｃの記述が得られる。
【０１２４】
このようにして得られたＲＴＬ検証用記述は、入力と出力の並列な実行が可能である。これによって、高位合成前の回路記述であってもＲＴＬ検証用記述と組み合わせて論理シミュレータ４３０で検証することが可能となる。
【図面の簡単な説明】
【０１２５】
【図１】本発明の実施例１に係る回路検証用記述変換装置１００の構成を示すブロック図である。
【図２】図１の入力装置１１０から出力されるＢＬ検証用記述の例である。
【図３】図２のＢＬ検証用記述に対応するデータ依存グラフの例である。
【図４】本発明の実施例１に係る検証用記述変換処理における変換部１０２の処理手順を示すフローチャートである。
【図５】図４のＳ４０１において抽出される出力信号検証用記述の例である。
【図６】図５の出力信号検証用記述に対応するデータ依存グラフの例である。
【図７】図４のＳ４０２において抽出される入力信号検証用記述の例である。
【図８】図７の入力信号検証用記述に対応するデータ依存グラフの例である。
【図９】本発明の実施例２に係る回路検証用記述変換装置２００の構成を示すブロック図である。
【図１０】図９の入力装置２１０から出力されるＢＬ検証用記述の例である。
【図１１】図１０のＢＬ検証用記述に対応するデータ依存グラフの例である。
【図１２】本発明の実施例２に係る検証用記述変換処理における変換部２０２の処理手順を示すフローチャートである。
【図１３】図１２のＳ１２０１において抽出される出力信号検証用記述の例である。
【図１４】図１３の出力信号検証用記述に対応するデータ依存グラフの例である。
【図１５】図１２のＳ１２０２において抽出される入力信号検証用記述の例である。
【図１６】図１５の入力信号検証用記述に対応するデータ依存グラフの例である。
【図１７】本発明の実施例３に係る回路検証用記述変換装置３００の構成を示すブロック図である。
【図１８】本発明の実施例４に係る回路検証用記述変換装置４００の構成を示すブロック図である。
【図１９】検証対象の回路のＢＬ回路記述のループ関数の例である。
【図２０】本発明の実施例４に係る回路記述変換処理における変換部４０２の処理手順を示すフローチャートである。
【図２１】Ａ〜Ｃは、図２０のＳ２００３の具体例を示す概略図である。
【図２２】Ａは、本発明の実施例４に係る回路記述変換処理において変換される前後の無限ループ関数の例であり、Ｂは、本発明の実施例４に係る回路記述変換処理において変換される前後の有限ループ関数の例である。
【符号の説明】
【０１２６】
１００，２００，３００，４００  回路検証用記述変換装置
１０１，２０１，３０１，４０１  入力部
１０２，２０２，３０２，４０２  変換部
１０２Ａ，２０２Ａ  出力信号検証用記述抽出手段
１０２Ｂ，２０２Ｂ  入力信号検証用記述抽出手段
１０２Ｃ，２０２Ｃ，４０２Ｂ  変換手段
１０３，２０３，３０３，４０３  メモリ
１０４，２０４，３０４，４０４  出力部
１１０，２１０，３１０，４１０  入力装置
１２０，２２０，４２０  高位合成装置
１３０，２３０，３３０，４３０  論理シミュレータ
３０５  高位合成部
４０１Ａ  ループ関数抽出手段
【図１】
2009075821.tif 000003
【図２】
2009075821.tif 000004
【図３】
2009075821.tif 000005
【図４】
2009075821.tif 000006
【図５】
2009075821.tif 000007
【図６】
2009075821.tif 000008
【図７】
2009075821.tif 000009
【図８】
2009075821.tif 000010
【図９】
2009075821.tif 000011
【図１０】
2009075821.tif 000012
【図１１】
2009075821.tif 000013
【図１２】
2009075821.tif 000014
【図１３】
2009075821.tif 000015
【図１４】
2009075821.tif 000016
【図１５】
2009075821.tif 000017
【図１６】
2009075821.tif 000018
【図１７】
2009075821.tif 000019
【図１８】
2009075821.tif 000020
【図１９】
2009075821.tif 000021
【図２０】
2009075821.tif 000022
【図２１】
2009075821.tif 000023
【図２２】
2009075821.tif 000024