(57)【要約】【課題】  上位レベルのアサーション記述から下位レベルのアサーション記述を自動的に生成することのできるアサーション記述変換装置および変換方法を提供する。【解決手段】  アサーション記述変換装置１は、検証対象特定部１１が、入力された上位レベルアサーション記述１００の構文を解析して検証対象を特定し、設計記述探索部１２が、特定された検証対象に関する記述を上位概念設計記述３００中で探索し、検証対象記述変換部１３が、探索された上位概念設計記述３００中の記述を対応する下位概念設計記述４００中の記述に変換し、検証内容解析部１４が、上位レベルアサーション記述１００に記述された検証対象に対する検証内容を解析し、検証内容記述変換部１５が、その解析された検証内容を下位概念の設計記述検証用の下位レベルアサーション記述言語の記述形式に変換し、下位レベルアサーション記述２００を出力する。【選択図】  図１
2008047053.tif 000002
【特許請求の範囲】
【請求項１】
入力された上位概念の設計記述検証用の上位レベルアサーション記述言語で記述された上位レベルアサーション記述の構文を解析して検証対象を特定する検証対象特定手段と、
前記検証対象に関する記述を上位概念の設計記述中で探索する設計記述探索手段と、
前記設計記述探索手段により探索された前記記述に対応する下位概念の設計記述にもとづいて、前記検証対象の記述を前記下位概念の設計記述に変換する検証対象記述変換手段と、
前記上位レベルアサーション記述に記述された前記検証対象に対する検証内容を解析する検証内容解析手段と、
前記検証内容解析手段により解析された前記検証内容を下位概念の設計記述検証用の下位レベルアサーション記述言語の記述形式に変換する検証内容記述変換手段と
を備えることを特徴とするアサーション記述変換装置。
【請求項２】
入力された上位概念の設計記述検証用の上位レベルアサーション記述言語で記述された上位レベルアサーション記述の構文を解析して検証対象を特定する検証対象特定ステップと、
前記検証対象に関する記述を上位概念の設計記述中で探索する設計記述探索ステップと、
前記設計記述探索手段により探索された前記記述に対応する下位概念の設計記述にもとづいて、前記検証対象の記述を前記下位概念の設計記述に変換する検証対象記述変換ステップと、
前記上位レベルアサーション記述に記述された前記検証対象に対する検証内容を解析する検証内容解析ステップと、
前記検証内容解析手段により解析された前記検証内容を下位概念の設計記述検証用の下位レベルアサーション記述言語の記述形式に変換する検証内容記述変換ステップと
を備えることを特徴とするアサーション記述変換方法。
【請求項３】
前記検証対象記述変換ステップは、前記上位概念の設計記述と前記下位概念の設計記述との対応を記載した設計記述クロスレファレンスを用いて、前記検証対象の記述を前記下位概念の設計記述に変換することを特徴とする請求項２に記載のアサーション記述変換方法。
【請求項４】
前記検証対象記述変換ステップは、前記上位レベルアサーション記述言語と前記下位レベルアサーション記述言語との対応を記載した記述言語クロスレファレンスを用いて、前記検証対象の記述を前記下位概念の設計記述に変換することを特徴とする請求項２に記載のアサーション記述変換方法。
【請求項５】
前記検証対象記述変換ステップは、前記検証対象の記述を前記下位概念の設計記述に変換する際に、前記上位概念の設計記述から前記下位概念の設計記述を合成したときの合成結果情報にもとづき、必要に応じてタイミング調整用の記述を付加することを特徴とする請求項２または４に記載のアサーション記述変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アサーション記述変換装置および変換方法に関し、特に上位概念の設計記述検証用のアサーション記述を下位概念の設計記述検証用のアサーション記述に変換するアサーション記述変換装置および変換方法に関する。
【背景技術】
【０００２】
近年のＬＳＩの集積度の向上に伴い、ＬＳＩに搭載される回路規模が増大している。これに応じて、ＬＳＩ設計効率も向上させる必要があり、ＬＳＩ設計の抽象度が上昇している。すなわち、従来のＨＤＬ（Hardware  Description  Language）記述によるＲＴＬ（Register  Transfer  Level）の機能レベル設計から、例えばSystemＣなどのＣ言語の派生言語記述による動作レベル設計へと、設計が上位概念化している。この動作レベル設計においても、下位レベルのクロック同期のＩ／Ｏサイクル動作記述から上位レベルのトランザクション・レベル動作記述へと、設計の上位概念化が進んでいる。
【０００３】
このような設計レベルの抽象度の上昇に対応して、設計検証の効率化も図られ、各種の設計検証手法が開発されている。その１つに、アサーション検証手法がある。アサーション検証では、各設計レベルに応じたアサーション、すなわち「成立すべき条件」、を記述したアサーション記述を作成し、そのレベルの設計記述が、アサーションに違反していないかどうかをチェックする。
【０００４】
各設計レベルに応じたアサーション記述を作成するため、動作レベルの設計記述に対しては、例えばSystemＣによりアサーション記述を作成し、機能レベルの設計記述に対しては、例えばＳＶＡ（System  Verilog  Assertion）によりアサーション記述を作成する。
【０００５】
このように、アサーション記述は、各設計レベルの設計記述ごとに作成する必要がある。このアサーション記述を人手で作成した場合、手間がかかり、また、誤りも入りやすい。さらに、下位概念の設計記述に対するアサーション記述を作成後、上位概念の設計に変更が入ると、下位概念の設計記述に対するアサーション記述を再作成しなければならず、アサーション記述作成の効率が悪い。そこで、例えば、ＲＴＬ記述に対するアサーション記述を機械的に生成するＬＳＩ設計検証装置が提案されている（例えば、特許文献１参照。）。
【０００６】
しかし、上述のＬＳＩ設計検証装置では、ＲＴＬ記述に対するアサーション記述の生成に、上位概念の動作レベルの設計記述に対する動作シミュレーションを実行する必要があり、ＲＴＬ記述に対するアサーション記述の生成に時間がかかるという問題があった。
【特許文献１】特開２００５−１０８００７号公報  （第１０−１１ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、本発明の目的は、上位概念の設計記述に対するアサーション記述から下位概念の設計記述に対するアサーション記述を自動的に生成することのできるアサーション記述変換装置および変換方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、入力された上位概念の設計記述検証用の上位レベルアサーション記述言語で記述された上位レベルアサーション記述の構文を解析して検証対象を特定する検証対象特定手段と、前記検証対象に関する記述を上位概念の設計記述中で探索する設計記述探索手段と、前記設計記述探索手段により探索された前記記述に対応する下位概念の設計記述にもとづいて、前記検証対象の記述を前記下位概念の設計記述に変換する検証対象記述変換手段と、前記上位レベルアサーション記述に記述された前記検証対象に対する検証内容を解析する検証内容解析手段と、前記検証内容解析手段により解析された前記検証内容を下位概念の設計記述検証用の下位レベルアサーション記述言語の記述形式に変換する検証内容記述変換手段とを備えることを特徴とするアサーション記述変換装置が提供される。
【０００９】
また、本発明の一態様によれば、入力された上位概念の設計記述検証用の上位レベルアサーション記述言語で記述された上位レベルアサーション記述の構文を解析して検証対象を特定する検証対象特定ステップと、前記検証対象に関する記述を上位概念の設計記述中で探索する設計記述探索ステップと、前記設計記述探索手段により探索された前記記述に対応する下位概念の設計記述にもとづいて、前記検証対象の記述を前記下位概念の設計記述に変換する検証対象記述変換ステップと、前記上位レベルアサーション記述に記述された前記検証対象に対する検証内容を解析する検証内容解析ステップと、前記検証内容解析手段により解析された前記検証内容を下位概念の設計記述検証用の下位レベルアサーション記述言語の記述形式に変換する検証内容記述変換ステップとを備えることを特徴とするアサーション記述変換方法が提供される。
【発明の効果】
【００１０】
本発明によれば、上位概念の設計記述に対するアサーション記述から下位概念の設計記述に対するアサーション記述を自動的に生成できるので、下位概念の設計記述に対するアサーション記述を人手で作成する必要がなく設計検証効率を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施例を図面を参照して説明する。
【実施例１】
【００１２】
図１は、本発明の実施例１に係るアサーション記述変換装置の構成の例を示すブロック図である。
【００１３】
本実施例のアサーション記述変換装置１へは、上位概念の設計記述検証用の上位レベルアサーション記述言語で記述された上位レベルアサーション記述１００と、上位概念設計用記述言語で記述された上位概念設計記述３００および下位概念設計用記述言語で記述された下位概念設計記述４００が入力される。アサーション記述変換装置１は、上位レベルアサーション記述１００を、下位概念の設計記述検証用の下位レベルアサーション記述言語で記述された下位レベルアサーション記述に変換し、下位レベルアサーション記述２００として出力する。
【００１４】
アサーション記述変換装置１は、上位レベルアサーション記述１００の構文を解析して検証対象を特定する検証対象特定部１１と、特定された検証対象に関する記述を上位概念設計記述３００中で探索する設計記述探索部１２と、探索された上位概念設計記述３００中の記述を対応する下位概念設計記述４００中の記述に変換する検証対象記述変換部１３と、上位レベルアサーション記述１００に記述された検証対象に対する検証内容を解析する検証内容解析部１４と、その解析された検証内容を下位概念の設計記述検証用の下位レベルアサーション記述言語の記述形式に変換する検証内容記述変換部１５と、を備える。
【００１５】
ここで、SysytemＣで記述されたトランザクション・レベルのアサーション記述を上位レベルアサーション記述１００の例としてとり、本実施例のアサーション記述変換装置１を用いて、SysytemＣで記述したＩ／Ｏサイクル動作レベルのアサーション記述を下位レベルアサーション記述２００として出力する方法を図２〜図８を用いて説明する。
【００１６】
図２は、トランザクション・レベルのアサーション記述をＩ／Ｏサイクル動作レベルのアサーション記述へ変換する手順を示すフロー図である。
【００１７】
変換の開始にあたって、アサーション記述変換装置１は、まずトランザクション・レベルのアサーション記述の読み込みを行う（ステップＳ０１）。ここで、読み込んだトランザクション・レベルのアサーション記述の例を図３に示す。
【００１８】
このアサーション記述に対して、検証対象特定部１１が、検証の対象となっているトランザクション・レベルのポートの解析を行う（ステップＳ０２）。図３に示したアサーション記述では、‘addr’と‘data’が検証対象のポートであると解析される。
【００１９】
続いて、設計記述探索部１２が、トランザクション・レベルの設計記述中で検証対象の記述を探索する（ステップＳ０３）。その結果、図４に示すトランザクション・レベルの設計記述中に、検証対象の設計記述があることが判明する。
【００２０】
続いて、検証対象記述変換部１３が、Ｉ／Ｏサイクル動作レベルの設計記述を読み取り、設計記述探索部１２の探索により判明した検証対象のトランザクション・レベルの設計記述を、Ｉ／Ｏサイクル動作レベルの設計記述と照合する（ステップＳ０４）。この照合により検出されたＩ／Ｏサイクル動作レベルの設計記述を図５に示す。
【００２１】
図６に、このトランザクション・レベルの設計記述とＩ／Ｏサイクル動作レベルの設計記述との対応を波形イメージで示す。
【００２２】
ここで、図６（ａ）がトランザクション・レベルの動作を示し、図６（ｂ）がＩ／Ｏサイクル動作レベルの動作波形を示す。
【００２３】
検証対象記述変換部１３の照合により、トランザクション・レベルのポート‘addr’には、Ｉ／Ｏサイクル動作レベルのデータ信号‘addr’と制御信号‘ardy’が対応し、トランザクション・レベルのポート‘data’には、Ｉ／Ｏサイクル動作レベルのデータ信号‘data’と制御信号‘drdy’が対応していることが判明する。
【００２４】
そこで、検証対象記述変換部１３は、トランザクション・レベルの設計記述におけるポート名とＩ／Ｏサイクル動作レベルの設計記述における信号名との対応を、例えば図６（ｃ）に示すようなポート信号対応表として記憶し、このポート信号対応表にもとづいて、トランザクション・レベルの設計記述におけるポート名をＩ／Ｏサイクル動作レベルの設計記述における信号名に変換する（ステップＳ０５）。
【００２５】
続いて、検証内容解析部１４が、トランザクション・レベルのアサーション記述からアサーションプロトコルを読み取る（ステップＳ０６）。図７に、このアサーションプロトコルの記述例を示す。
【００２６】
検証内容解析部１４は、読み取ったアサーションプロトコル中のどのステートメントがアサーションプロトコルの本体であるかを解析する（ステップＳ０７）。図７に示す例では、‘ardy ##1 drdy’という記述がアサーションプロトコルの本体である。
【００２７】
検証内容解析部１４は、この解析済みのアサーションプロトコルの本体の記述を保持する（ステップＳ０８）。
【００２８】
続いて、検証内容記述変換部１５が、検証内容解析部１４に保持されたアサーションプロトコルの本体の記述の先頭に、クロック同期動作を示す‘@(posedge clk)’記述を追加する（ステップＳ０９）。
【００２９】
さらに、検証内容記述変換部１５は、‘@(posedge clk)’記述を追加したアサーションプロトコルの本体の前に property 文、後に endproperty 文を追加して、Ｉ／Ｏサイクル動作レベルのアサーション記述を出力する（ステップＳ１０）。
【００３０】
これにより、アサーション記述変換装置１は一連の変換動作を終了する。図８に、上述の変換動作により出力されたＩ／Ｏサイクル動作レベルのアサーション記述の例を示す。
【００３１】
このような本実施例によれば、上位レベルのアサーション記述であるトランザクション・レベルのアサーション記述から下位レベルのアサーション記述であるＩ／Ｏサイクル動作レベルのアサーション記述を自動的に生成できるので、Ｉ／Ｏサイクル動作レベルのアサーション記述を人手で作成する必要がなく、設計検証効率を向上させることができる。
【００３２】
また、トランザクション・レベルとＩ／Ｏサイクル動作レベルとでアサーション記述内容が同じになるので、設計レベルが異なっていても、設計に対する検証内容の統一性を保つことができる。
【実施例２】
【００３３】
次に、アサーション記述変換の別の実施例として、上位設計概念のＩ／Ｏサイクル動作レベルの設計記述（動作記述）に対するアサーション記述を、下位設計概念のＲＴＬの設計記述（ＲＴＬ記述）に対するアサーション記述へ変換する方法を示す。
【００３４】
ここで、ＲＴＬ記述は、動作記述を高位合成することにより得られるものとする。図９に、高位合成ツールを用いて動作記述からＲＴＬ記述を生成する設計フローの概要を示す。
【００３５】
図９に示すように、高位合成ツール１０００は、動作記述５００を入力とし、高位合成処理を実行することにより、ＲＴＬ記述６００を出力する。そのとき、高位合成ツール１０００は、高位合成結果情報７００も出力する。
【００３６】
高位合成結果情報７００には、ある信号の入力に対して出力信号を出力するまでの処理にかかるクロック数を示すレイテンシ情報や、合成後のチップ面積予想などの情報が含まれる。
【００３７】
図１０に、高位合成結果情報７００に記載される情報の例を示す。この例では、レイテンシに関する情報が記載されている。すなわち、入力信号‘in_accept’が入力されてから出力信号‘out_ready’が出力されるまでの処理に、Ｎクロックサイクルを要することが示されている。
【００３８】
次に、動作記述に対するアサーション記述をＲＴＬ記述に対するアサーション記述へ変換する方法を図１１〜図１４を用いて説明する。
【００３９】
図１１は、動作記述に対するアサーション記述（動作レベルのアサーション記述）をＲＴＬ記述に対するアサーション記述（ＲＴＬ用アサーション記述）へ変換する手順を示すフロー図である。なお、ここでは、動作レベルのアサーション記述はSystemＣで記述されているものとし、これをＳＶＡで記述したＲＴＬ用アサーション記述へ変換するものとして説明する。
【００４０】
変換を開始すると、動作レベルのアサーション記述の読み込みを行う（ステップＳ２１）。ここで、読み込んだ動作レベルのアサーション記述の例を図１２に示す。
【００４１】
このアサーション記述に対して、検証の対象となっている信号の解析を行う（ステップＳ２２）。図１２に示したアサーション記述では、‘in_accept’と‘out_ready’が検証対象のポートであると解析される。
【００４２】
続いて、図１２に示したアサーション記述に対して検証内容の解析を行う（ステップＳ２３）。図１３に、この検証内容解析の詳細なフローを示す。
【００４３】
図１３に示すフローを開始すると、まずアサーション記述の先頭の１ステートメントを取得する（ステップＳ３１）。
【００４４】
続いて、そのステートメントが assert 文であるかどうかをチェックする（ステップＳ３２）。図１２に示したアサーション記述の例では、最初のステートメントが assert 文ではないので、このチェックはＮＯとなる。
【００４５】
このチェックがＮＯであれば、続いて、そのステートメントが条件文であるかどうかをチェックする（ステップＳ３３）。このチェックがＹＥＳであれば、そのステートメントを文の種類と記述内容に分けて記すステートメントテーブルに記載する（ステップＳ３４）。
【００４６】
図１２に示したアサーション記述の例では、最初のステートメントが‘if’で始まる条件文であるので、上述のチェックがＹＥＳとなる。そこで、ステートメントテーブルの種類の欄に‘条件’と記し、内容の欄に‘in_accept == 1’と記す。図１４に、このステートメントテーブルの例を示す。
【００４７】
ステートメントテーブルへの記載が終了すると、次のステートメントを取得する（ステップＳ３７）。
【００４８】
取得した次のステートメントに対して、ステップＳ３２に戻って、assert 文であるかどうかをチェックする。図１２に示したアサーション記述の例では、次のステートメントはassert 文ではないので、さらにステップＳ３３へ進んで、条件文であるかどうかをチェックする。このチェックでもＮＯであるので、次のステップへ進む。
【００４９】
次のステップでは、ステートメントが wait 文であるかどうかをチェックする（ステップＳ３５）。このチェックがＹＥＳであれば、そのステートメントの文の種類をステートメントテーブルに記載する（ステップＳ３６）。
【００５０】
図１２に示したアサーション記述の例では、このチェックがＹＥＳとなるので、ステートメントテーブルの種類の欄に‘wait’と記す。なお。内容の欄は空白とする。
【００５１】
ステートメントテーブルへの記載が終了すると、ステップＳ３７へ戻って、さらに次のステートメントを取得する。
【００５２】
このようにして、ステップＳ３２のステートメントが assert 文であるかどうかのチェックがＹＥＳとなるまで、ステップＳ３２からステップＳ３７までの処理を繰り返す。
【００５３】
ステップＳ３２のチェックがＹＥＳとなると、ステートメントテーブルの種類の欄に‘assert’と記し、内容の欄に assert 文の内容を記す（ステップＳ３８）。図１２に示したアサーション記述の例では、内容の欄に‘out_ready == 1’と記す。
【００５４】
ここまでで、ステートメントテーブルの生成が完了するので、次にステートメントテーブルから条件の変化を取得する（ステップＳ３９）。
【００５５】
図１４に示したステートメントテーブルからは、‘in_accept’の条件の変化として‘1->0’が得られる。
【００５６】
最後に、この条件の変化をもとにＲＴＬ記述用アサーション条件部を生成する（ステップＳ４０）。図１２に示したアサーション記述の例に対しては、ＲＴＬ記述用アサーション条件部として‘$fell(in_accept)を生成する。これにより、アサーション記述に対する検証内容の解析フローを終了する。
【００５７】
図１１のフローに戻って、ステップＳ２３の解析の結果にもとづいて、動作レベルのアサーション記述をＲＴＬ用アサーション記述へ変換する（ステップＳ２４）。このとき、ＳＶＡの書式では、‘＜条件＞ |-> ＜遅延＞＜内容＞’という記述形式となる。
【００５８】
したがって、図１２に示した動作レベルのアサーション記述に対して、ＲＴＬ用アサーション記述として‘$fell(in_accept) |-> ＜遅延＞ out_ready == 1’という記述を生成する。ここで、＜遅延＞は、入力信号‘in_accept’が入力されてから出力信号‘out_ready’が出力されるまでのレイテンシである。
【００５９】
そこで、このレイテンシの情報を得るために高位合成情報の読み込みを行う（ステップＳ２５）。そして、高位合成情報から得られたレイテンシの情報をＲＴＬ用アサーション記述へ付加する（ステップＳ２６）。
【００６０】
このとき、高位合成情報が図１０に示した例である場合、入力信号‘in_accept’が入力されてから出力信号‘out_ready’が出力されるまでのレイテンシは、‘Ｎクロックサイクル’である。そこで、ＲＴＬ用アサーション記述における＜遅延＞として、ＳＶＡの書式により‘##N’と記述する。
【００６１】
このようにして変換したＲＴＬ用アサーション記述を出力して（ステップＳ２７）、本フローによる処理を終了する。
【００６２】
図１５に、出力されたＲＴＬ用アサーション記述の例を示す。‘すなわち、図１２に示した動作レベルのアサーション記述が、$fell(in_accept) |-> ##N out_ready == 1’というＲＴＬ用アサーション記述へ変換される。
【００６３】
このような本実施例によれば、ＲＴＬ用アサーション記述の生成に必要な遅延情報を高位合成時に出力される高位合成情報から入手するのでシミュレーションを実行する必要がなく、ＲＴＬ用アサーション記述の生成に要する時間を短縮することができる。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施例1に係るアサーション記述変換装置の構成の例を示すブロック図。
【図２】本発明の実施例1に係るアサーション記述変換方法の手順の例を示すフロー図。
【図３】トランザクション・レベルのアサーション記述の例を示す図。
【図４】トランザクション・レベルの設計記述の例を示す図。
【図５】Ｉ／Ｏサイクル動作の設計記述の例を示す図。
【図６】トランザクション・レベルの設計記述とＩ／Ｏサイクル動作の設計記述の対応を示す図。
【図７】アサーションプロトコルの例を示す図。
【図８】実施例１のアサーション記述変換方法により生成されたＩ／Ｏサイクル動作のアサーション記述の例を示す図。
【図９】高位合成によるＲＴＬ記述生成のフローを示す図。
【図１０】高位合成結果情報の例を示す図。
【図１１】本発明の実施例２に係るアサーション記述変換方法の手順の例を示すフロー図。
【図１２】動作レベルのアサーション記述の例を示す図。
【図１３】アサーション記述内容の解析手順の例を示すフロー図。
【図１４】ステートメントテーブルの例を示す図。
【図１５】実施例２のアサーション記述変換方法により生成されたＲＴＬレベル用アサーション記述の例を示す図。
【符号の説明】
【００６５】
１  アサーション記述変換装置
１１  検証対象特定部
１２  設計記述探索部
１３  検証対象記述変換部
１４  検証内容解析部
１５  検証内容記述変換部
【図１】
2008047053.tif 000003
【図２】
2008047053.tif 000004
【図３】
2008047053.tif 000005
【図４】
2008047053.tif 000006
【図５】
2008047053.tif 000007
【図６】
2008047053.tif 000008
【図７】
2008047053.tif 000009
【図８】
2008047053.tif 000010
【図９】
2008047053.tif 000011
【図１０】
2008047053.tif 000012
【図１１】
2008047053.tif 000013
【図１２】
2008047053.tif 000014
【図１３】
2008047053.tif 000015
【図１４】
2008047053.tif 000016
【図１５】
2008047053.tif 000017