(57)【要約】【課題】論理回路の検証データを簡単に作成することができる論理回路検証データ生成装置を提供する。【解決手段】論理回路検証データ生成装置１は、論理回路の入出力のタイミングが指定された入出力タイミング指定データ２３に基づいて、入力された検証ポイントデータ２５から検証ポイントのデータを検索して抽出する検証データ検索部４１と、入出力タイミング指定データ２３に基づいて、検証データ検索部４１により抽出された検証ポイントのデータにタイミングの情報を付加して整列して出力する検証データ整列部４２とを有する。【選択図】図４
2008090622.tif 000002
【特許請求の範囲】
【請求項１】
論理回路の入出力のタイミングが指定された入出力タイミング指定データに基づいて、入力された検証ポイントデータから検証ポイントのデータを検索して抽出する検証データ検索部と、
前記入出力タイミング指定データに基づいて、前記検証データ検索部により抽出された前記検証ポイントのデータに前記タイミングの情報を付加して整列して出力する検証データ整列部と、
を有することを特徴とする論理回路検証データ生成装置。
【請求項２】
前記検証データを生成する対象モジュールを指定する対象指定データに従って動作記述データを読み出して、検証ポイントを付加した検証ポイント付き動作記述データを生成する検証ポイント挿入部と、
前記検証ポイント付き動作記述データを実行して、前記検証ポイントデータを生成する動作記述実行部とをさらに有することを特徴とする請求項１に記載の論理回路検証データ生成装置。
【請求項３】
前記検証ポイント挿入部は、
前記動作記述データに対してデータフロー解析を行い、前記対象モジュールの入力及び出力を決定するデータフロー解析部と、
決定された前記入力及び出力について検証ポイントを設け、該検証ポイントのデータを生成するためのコードを生成して、前記動作記述データのコード中に挿入するコード生成部とを有することを特徴とする請求項２に記載の論理回路検証データ生成装置。
【請求項４】
検証データ検索部と、検証データ整列部とを用いて検証データを生成する方法であって、
前記検証データ検索部によって、論理回路の入出力のタイミングが指定された入出力タイミング指定データに基づいて、入力された検証ポイントデータから検証ポイントのデータを検索して抽出し、
前記検証データ整列部によって、前記入出力タイミング指定データに基づいて、抽出された前記検証ポイントのデータに前記タイミングの情報を付加して整列して出力することを特徴とする論理回路検証データ生成方法。
【請求項５】
検証データ検索部と、検証データ整列部とを有するコンピュータに、
前記検証データ検索部によって、論理回路の入出力のタイミングが指定された入出力タイミング指定データに基づいて、入力された検証ポイントデータから検証ポイントのデータを検索して抽出する機能と、
前記検証データ整列部によって、前記入出力タイミング指定データに基づいて、抽出された前記検証ポイントのデータに前記タイミングの情報を付加して整列して出力する機能とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路検証データ生成装置、同方法及びプログラムに関し、特に、簡単に検証データを生成することができる論理回路検証データ生成装置、同方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、半導体集積回路装置の設計において、C、SystemC等の記述からRTL(Register Transfer Level)記述を生成する動作合成技術が利用されている。動作合成ツールを用いて生成されたある論理回路のRTL記述が正しい動作を行うか否かを検証するため、RTL記述と、その論理回路の機能が記述されたC言語等の動作記述の両方に対して、同一の入力データを与え、同一の出力が得られるかどうかを確認する比較検証作業が一般に行われている。このような比較検証作業に用いられるデータは、検証データと言われる。
【０００３】
動作記述は、サイクルレベルでの動作タイミングの情報を有しないが、RTL記述は、サイクルレベルでの動作タイミングの情報を有する。よって、動作記述用の検証データは、いわゆる機能を検証するためのデータであるので、動作記述用の検証データとしては、タイミング情報のない検証データが用いられる。しかし、RTL記述の検証のためには、サイクルレベルでの動作タイミングを有する検証データが必要であるため、動作記述のために作成された検証データは、そのままRTL記述用の検証データとして利用することはできない。RTL記述の検証を行うときに、誤判定を防止する技術の提案もある（例えば、特許文献１参照）。
【０００４】
従来は、人手によって動作記述の検証データにタイミング情報を付加することによって、RTL記述用の検証データは作成されていたが、RTL記述が変更されるたびに検証データを変更しなければならないという問題点があった。例えば、RTL記述の一部が人手によって修正されるような場合、その修正による変更後のRTL記述についても、その変更の度に、その変更内容に応じた検証データの変更あるいは作成が必要であった。上述した提案にも、検証データの生成についてはなんら提案されていない。
【特許文献１】特開2004-145712号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、以上の問題に鑑みて成されたものであり、論理回路の検証データを簡単に作成することができる論理回路検証データ生成装置、同方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、論理回路の入出力のタイミングが指定された入出力タイミング指定データに基づいて、入力された検証ポイントデータから検証ポイントのデータを検索して抽出する検証データ検索部と、前記入出力タイミング指定データに基づいて、前記検証データ検索部により抽出された前記検証ポイントのデータに前記タイミングの情報を付加して整列して出力する検証データ整列部と、を有する論理回路検証データ生成装置を提供することができる。
【０００７】
本発明の一態様によれば、検証データ検索部と、検証データ整列部とを用いて検証データを生成する方法であって、前記検証データ検索部によって、論理回路の入出力のタイミングが指定された入出力タイミング指定データに基づいて、入力された検証ポイントデータから検証ポイントのデータを検索して抽出し、前記検証データ整列部によって、前記入出力タイミング指定データに基づいて、抽出された前記検証ポイントのデータに前記タイミングの情報を付加して整列して出力する論理回路検証データ生成方法を提供することができる。
【０００８】
本発明の一態様によれば、検証データ検索部と、検証データ整列部とを有するコンピュータに、前記検証データ検索部によって、論理回路の入出力のタイミングが指定された入出力タイミング指定データに基づいて、入力された検証ポイントデータから検証ポイントのデータを検索して抽出する機能と、前記検証データ整列部によって、前記入出力タイミング指定データに基づいて、抽出された前記検証ポイントのデータに前記タイミングの情報を付加して整列して出力する機能とを実行させるためのプログラムを提供することができる。
【発明の効果】
【０００９】
本発明によれば、論理回路の検証データを簡単に作成することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。  
（装置構成）  
まず、図１に基づき、本実施の形態に係わる論理回路検証データ生成装置の構成を説明する。
【００１１】
図１は、本実施の形態に係わる論理回路検証データ生成装置の構成を示すブロック図である。論理回路検証データ生成装置１は、コンピュータ装置であり、入出力装置、記憶装置、CPU等からなる。具体的には、論理回路検証データ生成装置１は、設計者であるユーザが各種命令の指示及びデータの指定をするための、キーボード等の入力装置１１と、各種データの表示等を行う画面を有するモニタ等の表示装置１２と、CPUを含み、各種処理を実行するデータ処理装置１３と、各種データを記憶する記憶装置１４とを含んで構成されている。論理回路検証データ生成装置１は、半導体集積回路の論理回路の設計および検証のために検証データを作成する際に使用されるものである。
【００１２】
記憶装置１４は、設計対象である集積回路の半導体装置の構成を記述した動作記述データ、例えばC言語によるプログラム、を記憶する動作記述記憶部１４ａと、検証ポイント付き動作記述記憶部１４ｂ、検証ポイントデータ記憶部１４ｃと、入出力タイミング指定データを記憶するタイミング指定データ記憶部１４ｄと、検証データを記憶する検証データ記憶部１４ｅを含む。一般に、記述される動作記述は、複数のモジュールから構成されている。  
データ処理装置１３は、検証ポイント挿入部１３ａと、動作記述実行部１３ｂと、検証データ生成部１３ｃとを含む。各部１３ａから１３ｃは、主としてソフトウエアにより実現されており、処理内容は後述する。
【００１３】
（全体の処理）  
図２は、本実施の形態に係わる論理回路検証データ生成の処理の流れを説明するためのフローチャートである。図２に示すように、全体的にみると、検証データを生成するモジュールを指定するモジュール指定データ２１と、動作記述データ２２と、入出力の順序あるいはタイミングを指定する入出力タイミング指定データ２３とが入力され、論理回路検証データ生成装置１は、検証データ２６を出力する。入出力タイミング指定データ２３は、論理回路の入出力の順序あるいはタイミングを指定するデータである。モジュール指定データ２１は、ユーザにより入力装置１１から指定あるいは入力される。  
検証ポイント挿入部１３ａは、動作記述データ２２に含まれる複数のモジュールデータの中からモジュール指定データ２１により指定されたモジュールを選択し、選択したモジュールの動作記述データに検証ポイントを付加して挿入することによって検証ポイント付き動作記述データ２４を生成する。
【００１４】
動作記述実行部１３ｂは、検証ポイント付き動作記述データ（すなわち動作記述）２４を実行し、検証ポイントデータ２５を生成する。検証データ生成部１３ｃは、タイミング指定データ記憶部１４ｄからの入出力タイミング指定データ２３に基づき、検証ポイントデータ２５からタイミング情報が付加された検証データ２６を生成する。検証データ２６は、記憶装置１４の検証データ記憶部１４ｂにストアされる。
【００１５】
（各処理部の処理）  
次に、検証ポイント挿入部１３ａ、動作記述実行部１３ｂ、及び検証データ生成部１３ｃの各構成について説明する。  
図３は、検証ポイント挿入部１３ａの構成を示すブロック図である。検証ポイント挿入部１３ａは、データフロー解析部３１とコード生成部３２を有する。  
データフロー解析部３１は、動作記述データ２２に含まれる複数のモジュールの中から、モジュール指定データ２１において指定されたモジュールを選択し、その選択されたモジュールに対してデータフロー解析を行い、その選択されたモジュールの入力および出力を決定する。  
コード生成部３２は、そのモジュールの入力および出力について、検証ポイントのデータを生成するためのコード、すなわちプログラムを生成して、モジュールのコード中に挿入することによって、検証ポイント付き動作記述データ２４を生成する。データフロー解析部３１とコード生成部３２の処理の内容については後述する。  
動作記述実行部１３ｂは、動作記述データ、すなわちプログラムを実行する処理部である。従って、動作記述実行部１３ｂは、検証ポイント付き動作記述データ、すなわちプログラムも実行することができ、そのときに、挿入されたプログラムを実行して検証ポイントのデータを生成する。
【００１６】
図４は、検証データ生成部１３ｃの構成を示すブロック図である。検証データ生成部１３ｃは、検証データ探索部４１と検証データ整列部４２とを有する。検証データ探索部４１は、入出力タイミング指定データ２３に基づいて、検証ポイントデータ２５から検証データ２６の作成に必要な検証ポイントのデータを検索して抽出する。検証データ整列部４２は、入出力タイミング指定データ２３に基づいて、探索して抽出した検証ポイントのデータにタイミング情報を付加して整列することによって、検証データ２６を生成する。
【００１７】
（作用）  
次に、具体的な動作記述に基づいて、上述した論理回路検証データ生成装置１の全体及び各部の動作を説明する。ユーザは、図５に示す動作を行う論理回路を実現したいと考え、その論理回路の検証データを生成する場合を例に説明する。  
そのために、ユーザは、動作記述データの中から、所望のモジュールを検証データ生成の対象とするべく入力装置１１を用いて、モジュール指定データを指定あるいは入力する。
【００１８】
図５は、動作記述データの例を示す図である。動作記述データ２２ａは、上述した動作記述２２の一例である。動作記述記憶部１４ａに記憶された動作記述データ２２ａはC言語によって記述されており、２つの関数mainとfuncをモジュールとして含んでいる。本実施の形態では、動作記述データ２２ａ全体を検証するのではなく、関数funcに対応する論理回路を検証する場合を仮定して説明する。ここでは、関数mainは関数funcにデータを供給するいわゆるテストベンチであり、関数funcは３つの引数a,b,cを加算する関数である。
【００１９】
図５に示す動作記述は、変数i,a,b,c,resultを用いて、変数a,b,cに対して所定の演算を施し、その所定の演算後に関数funcを呼び出してその結果を変数resultとして出力する処理を記述している。その動作記述によれば、変数aは、そのままで、変数bは１０倍し、変数cは、１００倍して、これら３つの変数a,b,cの和が出力される。尚、変数iはfor文の実行回数の変数である。後述するように、図５の動作記述を実現する論理回路は、種々の構成を取り得、本実施の形態では、各構成について検証データを生成する。
【００２０】
図６は、モジュール指定データの例を示す図である。モジュール指定データ２１ａは、モジュール指定データ２１の一例である。モジュール指定データ２１ａは、検証データを生成する対象となる動作記述モジュールが動作記述データ２２ａに含まれる関数funcである、ことを指定しているデータである。すなわち、ここでは、モジュール指定に関数名が用いられている。モジュール指定データ２１ａが与えられると、データフロー解析部３１は、記憶装置１４の動作記述記憶部１４ａから関数funcを読み出し、その関数funcを解析して、関数funcのデータフローグラフ５１を内部的に生成し、解析関数funcの入力が３つの変数a, b, cであり、出力が１つの変数resultであることの情報を生成して得る。
【００２１】
図７は、関数funcを解析して生成されたデータフローグラフの例を示す図である。図７は、まず変数a,bの和がとられ、その和と変数cとの和がとられた結果である変数resultが出力されることを示している。よって、データフロー解析部３１は、関数funcを解析して、このような入力と出力の情報を得ることができる。
【００２２】
コード生成部３２は、この解析情報に基づき、関数funcに検証ポイントを挿入し、図８に示す検証ポイント付き動作記述データ２４ａを生成する。具体的には、コード生成部３２は、解析して得られた入出力の情報に対して、検証ポイントを設け、その検証ポイントのデータを生成するためのコードを、図５に示す関数funcのコード中に挿入する処理を行う。
【００２３】
図８は、生成された検証ポイント付き動作記述データの一例を示す図である。挿入される検証ポイント付き動作記述データが、本実施の形態では、関数check_pointの関数記述として生成されるように、コード生成部３２は実装されている。関数check_pointの第一引数は、一意の検証ポイント識別子であり、第二引数は関数funcの入力変数または出力変数である。関数check_pointは、実行されると、第一引数の検証ポイント識別子と、第二引数の値を組にして生成する関数である。コード生成部３２は、検証ポイント付き動作記述データを、記憶装置１４の検証ポイント付き動作記述記憶部１４ｂの所定のファイルに記憶する。
【００２４】
なお、モジュール指定データ２１が空の場合、すなわちモジュール指定データ２１として何もデータが無い場合、動作記述データ２２に含まれる全ての関数がモジュール指定で指定されているものと看做して、データフロー解析部３１は動作記述を解析し、コード生成部３２は動作記述に検証ポイントを挿入し検証ポイント付き動作記述データ２４ａを生成する。動作記述２２ａの場合、モジュール指定データが空であれば、関数mainと関数funcの２つがモジュールとして指定されたとして検証ポイント挿入部１３ａの処理が行われる。このようにすれば、モジュールの指定作業を省略できるため、検証データの作成に関わる工数を削減することができる。
【００２５】
動作記述実行部１３ｂは、検証ポイント付き動作記述データ２４ａをCコンパイラによってコンパイルして実行すると、検証ポイントデータ２５ａを自動的に生成する。検証ポイント付き動作記述データ２４ａは関数check_pointを含んでいるので実行されると、第一引数の検証ポイント識別子と第二引数の値とが検証ポイントデータとして生成される。
【００２６】
図９は、生成された検証ポイントデータ２５の一例を示す図である。検証ポイントデータ２５ａは、動作記述データ２４に基づくデータであり、所定の入力に対して所定の処理を行った結果として出力される、入出力データである。このような入出力の関係を有する動作記述を実現する回路について、ユーザは、種々の条件を考慮して、例えばマニュアルで直接RTL記述により１つあるいは複数の回路構成を作成する。ユーザの作成する回路は、その構成によって入力データと出力データのそれぞれのタイミングが異なる。そこで、そのユーザの作成した１つあるいは複数の論理回路に対して、検証ポイントデータと、後述する入出力タイミング指定データを用いて検証データが作成される。
【００２７】
以下、検証ポイントデータ２５の生成について加算処理を例に説明する。  
図１０、図１１及び図１２は、それぞれ、指定された関数funcを実現するための、３つの数値を加算する論理回路の例を示す図である。図１０の論理回路６１は３つの入力ポートin1,in2,in3と１つの出力ポートoutを有する。入力ポートin1,in2への入力に対して、加算器６１ａにより加算処理がなされ、加算器６１ａの出力と入力ポートin3への入力に対して、加算器６１ｂにより加算処理がなされ、その加算結果が出力ポートoutに出力される。図１０では、３つの数値を３つの入力ポートに同時に入力することによって、直ちに３つの数値の加算結果が出力ポートに出力される。
【００２８】
図１１の論理回路６２は、２つの入力ポートin1,in2と１つの出力ポートoutを有する。入力ポートin1への入力は一旦レジスタ６２ａにストアされ、加算器６２ｂにより、入力ポートin1への次の入力とレジスタ６２ａの出力とに対して加算処理がなされる。加算器６２ｂの出力と入力ポートin2への入力に対して、加算器６１ｃにより加算処理がなされ、その加算結果が出力ポートoutに出力される。図１１の論理回路では、同時には２つの数値しか入力できないので、３つの数値の加算には、最低２サイクルが必要となる。  
図１２の論理回路６３は、１つの入力ポートin1と１つの出力ポートoutを有する。入力ポートin1への入力は、マルチプレクサ（MUX）６３ａを介して一旦レジスタ６３ｂにストアされ、入力ポートin1への次の入力とレジスタ６３ｂの出力とに対して、加算器６３ｃにより加算処理がなされる。そのときの加算結果は、マルチプレクサ６３ａを介してレジスタ６３ｂにストアされる。そして、入力ポートin1への次の入力とレジスタ６３ｂの出力とに対して、加算器６３ｃにより加算処理がなされ、その加算結果が出力ポートoutに出力される。図１２の論理回路では、同時には１つの数値しか入力できないので、３つの数値の加算には、最低３サイクルが必要となる。
【００２９】
上述した図１０から図１２に示した３つの論理回路の動作を、３つの数値１，１０，１００の加算を例にして説明する。図１０の論理回路６１は、入力ポートin1に１、入力ポートin2に１０、入力ポートin3に１００が入力されると、１と１０の加算が加算器６１ａで行われ、その加算結果１１と１００の加算が加算器６１ｂで行われ、同じサイクルで、加算の結果１１１（＝１＋１０＋１００）を出力ポートoutから出力する。
【００３０】
図１１の論理回路６２は、第１サイクルで、入力ポートin1に１が入力されると、１をレジスタ６２ａに保存する。レジスタは、入力サイクルの次のサイクル以降で出力することができる。よって、第２サイクルで、入力ポートin1に１０、入力ポートin2に１００が入力されると、レジスタ６２ａに保存された１と入力ポートin1に入力された１０の加算が加算器６２ｂで行われ、その加算結果１１と入力ポートin2に入力された１００の加算が加算器６２ｃで行われ、同じサイクルで加算結果１１１が出力ポートoutから出力される。
【００３１】
図１２の論理回路６３は、第１サイクルで、入力ポートin1に１を入力すると１をレジスタ６３ｂに保存する。第２サイクルで、入力ポートin1に１０が入力されると、レジスタ６３ｂに保存された１と１０の加算が加算器６３ｃで行われ、その加算結果１１（＝１＋１０）がマルチプレクサ６３ａ経由でレジスタ６３ｂに保存される。第３サイクルで、入力ポートin1に１００が入力されると、レジスタ６３ｂに保存された１１と１００の加算が加算器６３ｃで行われ、その加算結果１１１が出力ポートoutから出力される。
【００３２】
以上の各論理回路の構成は例である。例えば、図１１の回路構成は、図１０の回路構成に比べ、入力端子が１つ少ないので、コスト的には有利である。図１２の回路構成は、入力端子は１つであるので、回路のサイズは小さくできるというメリットがあるが、処理に最低３サイクル必要であるというデメリットもある。ユーザは、論理回路設計において、種々の条件を考慮して、これらの回路の中からどの回路構成を採用するかを決定する。
【００３３】
その決定に際し（あるいは決定の前後）において、図１０から図１２の３つの回路構成のそれぞれについての検証データを生成して、各論理回路の検証を行う。ユーザは、３つの論理回路（図１０から図１２）を自ら作成したので、各回路の動作タイミングを知っており、入出力タイミング指定データを作成することができる。
【００３４】
図１３から図１５は、それぞれ図１０から図１２の回路構成に対応する入出力タイミング指定データの例を示す図である。なお、図１３から図１５の入出力タイミング指定データは、それぞれ入出力タイミング指定データの記述例である。  
図１３から図１５の入出力タイミング指定データ７１から７３では、タイミングを指定するために記号「,」、「−」が使用されている。すなわち、「,」は、次のサイクルへの移行、あるいはサイクル間の区切りを表し、「−」は、空データを表す。１サイクルは、論理回路における１つの所定の処理を実行する期間を指す。
【００３５】
図１３の入出力タイミング指定データ７１は、図１０の論理回路６１のための検証データを生成するためのデータであり、各行の意味は以下の通りである。
【００３６】
第１行目の「Input：in1  func：a」は、in1は論理回路の入力ポートであること、さらに、in1の入力データとして、検証ポイントデータ２５に含まれる検証ポイント識別子func：a(動作記述中の関数func中の変数aに対応)と組になっている値を使用することを意味としている。
【００３７】
第２行目の「Input：in2  func：b」は、in2は論理回路の入力ポートであること、さらに、in2の入力データとして、検証ポイントデータ２５に含まれる検証ポイント識別子func：b(動作記述中の関数func中の変数bに対応)と組になっている値を使用することを意味としている。
【００３８】
第３行目の「Input：in3  func：c」は、in3は論理回路の入力ポートであること、さらに、in3の入力データとして、検証ポイントデータ２５に含まれる検証ポイント識別子func：c(動作記述中の関数func中の変数cに対応)と組になっている値を使用することを意味としている。
【００３９】
第４行目の「Output：out  func：result」は、outは論理回路の出力ポートであること、さらに、outの出力データとして、検証ポイントデータ２５に含まれる検証ポイント識別子func：result(動作記述中の関数func中の変数resultに対応)と組になっている値を使用して、比較することを意味としている。  
以上のように、入出力タイミング指定データ７１は、論理回路６１の入出力のポート情報（例えばポート名）と、関数の変数とを含む。ポート情報は、入出力を区別するための情報である。
【００４０】
図１４の入出力タイミング指定データ７２は、図１１の論理回路６２のための検証データを生成するためのデータであり、各行の意味は以下の通りである。
【００４１】
第１行目の「Input：in1  func：a, func：b」は、in1は論理回路の入力ポートであり、さらに、in1の入力データとして、最初のサイクルでは検証ポイント識別子func：aと組になっている値を、次のサイクルでは検証ポイント識別子func：bと組になっている値を、使用することを意味としている。
【００４２】
第２行目の「Input：in2  −, func：c」は、in2は論理回路の入力ポートであり、さらに、in2の入力データとして、最初のサイクルでは空のデータを、次のサイクルでは検証ポイント識別子func：cと組になっている値を、使用することを意味としている。
【００４３】
第３行目の「Output：out  −, func：result」は、outは論理回路の出力ポートであり、さらに、outの出力データとして、最初のサイクルでは空のデータを、次のサイクルでは検証ポイント識別子func：resultと組になっている値を、使用して、比較することを意味としている。
【００４４】
図１５の入出力タイミング指定データ７３は、図１２の論理回路６３のための検証データを生成するためのデータであり、各行の意味は以下の通りである。
【００４５】
第１行目の「Input：in1 func：a, func：b, func：c」は、in1は論理回路の入力ポートであり、さらに、in1の入力データとして、最初のサイクルでは検証ポイント識別子func：aと組になっている値を、次のサイクルでは検証ポイント識別子func：bと組になっている値を、さらに次のサイクルでは検証ポイント識別子func：cと組になっている値を、使用することを意味としている。
【００４６】
第２行目の「Output：out  −, −, func：result」は、outは論理回路の出力ポートであり、さらに、outの出力データとして、最初のサイクルでは空のデータを、次のサイクルも空のデータを、さらにその次のサイクルでは検証ポイント識別子func：resultと組になっている値を、使用して、比較することを意味としている。
【００４７】
図１４と図１５に示すように、入出力タイミング指定データ７２，７３は、それぞれ、論理回路の単位サイクルの区切りを示す記号と、論理回路６２，６３の入出力のポート情報と、関数の変数と、空データを示す記号とを含む。
【００４８】
以上のように、ユーザは、各論理回路に対応した、入出力のタイミングに基づき、図１３から図１５に示す入出力タイミング指定データを、（例えば、表示装置１２の画面を見ながら）入力装置１１を用いて作成する。その作成された入出力タイミング指定データは、記憶装置１４のタイミング指定データ記憶部１４ｄにストアされる。
【００４９】
検証ポイントデータ２５と入出力タイミング指定データ２３が入力されると、検証データ検索部４１は、入出力タイミング指定データ７１に基づいて、入力された検証ポイントデータ２５から検証ポイントのデータを検索する。具体的には、例えば、検証ポイントデータ２５ａと入出力タイミング指定データ７１が入力された場合、検証データ検索部４１は、入出力タイミング指定データ７１に含まれる全ての検証ポイント識別子毎に、組になっている値、言い換えれば対応する値、を探索し、検証ポイントデータ２５ａから値を抽出する。その後、検証データ整列部４２は、入出力タイミング指定データ７１に基づき、抽出された値を、論理回路の入出力ポート毎にタイミング情報を付加して整列して、検証データ８１を生成する。
【００５０】
図１６から図１８は、その生成された検証データの例を示す。図１６は、図１０の論理回路６１用の検証データの例を示す図である。図１０の論理回路６１では３つの入力in1,in2,in3が同時に入力されるので、図１６の検証データ８１は、第１のサイクルでは、３つの入力が入力され、同じサイクルで出力outが比較され、次のサイクルでは、２番目のデータについて同様に入力と比較が行われ、第３のサイクルでは、３番目のデータについて同様に入力と比較が行われることを示している。  
以上のように、検証データ８１は、論理回路の単位サイクルの区切りを示す記号と、論理回路６１の入出力のポート情報と、関数の変数に対応する値とを含む。
【００５１】
同様に、検証ポイントデータ２５ａと入出力タイミング指定７２が入力とされると、検証データ生成部１３ｃは、検証データ８２を生成する。さらに同様に、検証ポイントデータ２５ａと入出力タイミング指定データ７３を入力とするとき、検証データ生成部１３ｃは、検証データ８３を生成する。  
図１７は、図１１の論理回路６２用の検証データの例を示す図である。図１１の論理回路６２では、２つの入力端子を有して、入力in1,in2,in3が入力されるので、図１７の検証データ８２は、第１のサイクルでは、一方の入力として入力in1が入力され、他方の入力には空データが入力され、次のサイクルでは、入力in2,in3が入力され、同じサイクルで出力outが比較され、２番目のデータについては、次の２つのサイクル（第３と第４のサイクル）を用いて、入力と比較が行われ、３番目のデータについては、次の２つのサイクル（第５と第６のサイクル）を用いて、入力と比較が行われ、同様に入力と比較が行われることを示している。
【００５２】
図１８は、図１２の論理回路６３用の検証データの例を示す図である。図１２の論理回路６３では、１つの入力端子を介して、入力in1,in2,in3が入力されるので、図１８の検証データ８３は、第１のサイクルでは、入力in1が入力され、第２のサイクルでは、入力in2が入力され、第３のサイクルでは、入力in3が入力され、同じ第３のサイクルで出力outが比較され、２番目のデータについては、次の３つのサイクル（第４から第６のサイクル）を用いて、入力と比較が行われ、３番目のデータについては、次の３つのサイクル（第７から第９のサイクル）を用いて、入力と比較が行われ、同様に入力と比較が行われることを示している。
【００５３】
図１７及び図１８に示すように、検証データ８２，８２は、それぞれ、論理回路の単位サイクルの区切りを示す記号と、論理回路６２，６３の入出力のポート情報と、関数の変数に対応する値とを、空データを示す記号とを含む。
【００５４】
検証データ８１、８２、８３では、各入力ポートには入力値が、各出力ポートには出力値が、それぞれサイクル毎に時系列で並べられている。よって、ユーザは、自己の作成した各論理回路に対してシミュレーションを行うときに、上述のようにして簡単に検証データを生成することができ、生成された各検証データを用いて検証を行うことができる。例えば、ユーザは、作成したRTL記述に対してシミュレーションを行うときに、各検証データの値を先頭から順に読み込んでそのシミュレーション装置に与え、そのシミュレーションの結果データと、検証データとを比較させることによって、各論理回路の検証作業を行うことができる。
【００５５】
（変形例）  
なお、上述した例では、図２に示したように、モジュール指定データ２１、動作記述データ２２及び入出力タイミング指定データ２３は、それぞれ、個別に指定あるいは入力されていた。しかし、これらの３つのデータは、纏めて指定あるいは入力するようにしてもよい。
【００５６】
図１９は、モジュール指定データ、動作記述データ及び入出力タイミング指定データを指定する指定方法の変形例を示す図である。この変形例では、モジュール指定データ、動作記述データ、入出力タイミング指定データを同一のファイルに含めるようにした例である。
【００５７】
なお、ファイル９１に含まれる「#pragma」は、ファイル９１に記述されたC記述をCコンパイラによってコンパイルする際に、モジュール指定と入出力タイミング指定がコンパイルエラーを引き起こさないようするためのCコンパイラの予約語である。ファイル９１では、指定モジュールは関数funcであることが指定され、論理回路６３に対応した入出力タイミング指定データが指定されている。ファイル９１は、記憶装置１４に記憶される。このような指定方法を用いても、上述した図２の処理を実行することができる。
【００５８】
以上のように、本実施の形態の論理回路検証データ生成装置によれば、単一の論理回路の動作記述と入出力タイミング指定情報とから、論理回路中の指定されたモジュールの入出力ポートの構成とタイミングを考慮したRTL記述用の検証データが簡単に生成される。よって、簡単な指示により動作記述にタイミング情報を付加することが可能となり、RTL記述用の検証データの作成にかかる工数を大幅に削減することができる。
【００５９】
よって、本実施の形態によれば、簡単な指示により検証ポイントデータと入出力タイミング指定データとから、論理回路の入出力ポートの構成とタイミングを考慮した検証データを生成する論理回路検証データ生成装置を実現することができる。
【００６０】
なお、上述した例では、検証データ中のサイクルの区切りを示す記号として、カンマの記号「,」が用いられているが、カンマ以外の記号でもよいし、あるいは、記号ではなくテキスト表現、例えば「next」等でもよい。同様に、空データをバーの記号「−」により表現していたが、バー以外の記号でもよいし、あるいは、記号ではなく、テキスト表現、例えば「no check」等でもよい。さらに、テキスト表現も、英語ではなく日本語等でもよく、タイミング及びデータの識別をコンピュータができるものであれば、よい。
【００６１】
また、上述したデータフロー解析部３１は、モジュールの入出力に注目してチェックポイントを生成していたが、さらに、入出力の間の途中のポイントあるいはノードに対してもチェックポイントを生成するようにしてもよい。
【００６２】
なお、以上説明した動作を実行するプログラムは、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ等の可搬媒体や、ハードディスク等の記憶装置等に、その全体あるいは一部が記録され、あるいは記憶されている。そのプログラムがコンピュータにより読み取られて、動作の全部あるいは一部が実行される。あるいは、そのプログラムの全体あるいは一部を通信ネットワークを介して流通または提供することができる。利用者は、通信ネットワークを介してそのプログラムをダウンロードしてコンピュータにインストールしたり、あるいは記録媒体からコンピュータにインストールすることで、容易に本実施の形態の論理回路検証データ生成装置を実現することができる。
【００６３】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施の形態に係わる論理回路検証データ生成装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係わる論理回路検証データ生成の処理の流れを説明するためのフローチャートである。
【図３】本発明の実施の形態に係わる検証ポイント挿入部の構成を示すブロック図である。
【図４】本発明の実施の形態に係わる検証データ生成部の構成を示すブロック図である。
【図５】本発明の実施の形態に係わる動作記述データの例を示す図である。
【図６】本発明の実施の形態に係わるモジュール指定データの例を示す図である。
【図７】本発明の実施の形態に係わるデータフローグラフの例を示す図である。
【図８】本発明の実施の形態に係わる検証ポイント付き動作記述データの一例を示す図である。
【図９】本発明の実施の形態に係わる検証ポイントデータの一例を示す図である。
【図１０】本発明の実施の形態に係わる論理回路の例を示す図である。
【図１１】本発明の実施の形態に係わる論理回路の他の例を示す図である。
【図１２】本発明の実施の形態に係わる論理回路のさらなる他の例を示す図である。
【図１３】図１０の回路構成に対応する入出力タイミング指定データの例を示す図である。
【図１４】図１１の回路構成に対応する入出力タイミング指定データの例を示す図である。
【図１５】図１２の回路構成に対応する入出力タイミング指定データの例を示す図である。
【図１６】図１０の論理回路用の検証データの例を示す図である。
【図１７】図１１の論理回路用の検証データの例を示す図である。
【図１８】図１２の論理回路用の検証データの例を示す図である。
【図１９】モジュール指定データ、動作記述データ及び入出力タイミング指定データを指定する指定方法の変形例を示す図である。
【符号の説明】
【００６５】
１  論理回路検証データ生成装置、１３ａ  検証ポイントデータ挿入部、１３ｃ  動作記述実行部、６１，６２，６３  論理回路
【図１】
2008090622.tif 000003
【図２】
2008090622.tif 000004
【図３】
2008090622.tif 000005
【図４】
2008090622.tif 000006
【図５】
2008090622.tif 000007
【図６】
2008090622.tif 000008
【図７】
2008090622.tif 000009
【図８】
2008090622.tif 000010
【図９】
2008090622.tif 000011
【図１０】
2008090622.tif 000012
【図１１】
2008090622.tif 000013
【図１２】
2008090622.tif 000014
【図１３】
2008090622.tif 000015
【図１４】
2008090622.tif 000016
【図１５】
2008090622.tif 000017
【図１６】
2008090622.tif 000018
【図１７】
2008090622.tif 000019
【図１８】
2008090622.tif 000020
【図１９】
2008090622.tif 000021