JP2019087206A - 情報処理装置、情報処理方法及びプログラム - Google Patents
情報処理装置、情報処理方法及びプログラム Download PDFInfo
- Publication number
- JP2019087206A JP2019087206A JP2017217358A JP2017217358A JP2019087206A JP 2019087206 A JP2019087206 A JP 2019087206A JP 2017217358 A JP2017217358 A JP 2017217358A JP 2017217358 A JP2017217358 A JP 2017217358A JP 2019087206 A JP2019087206 A JP 2019087206A
- Authority
- JP
- Japan
- Prior art keywords
- model
- information
- waveform
- operation model
- signal value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/323—Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】ASIC用レジスタ転送レベル動作モデルがFPGAにそのまま搭載できない場合などに必要な再設計による設計期間の長期化の問題を解決し、論理回路の動作モデルの設計期間を短縮することができる情報処理装置を提供する。【解決手段】検証パタン(212)を用いた論理検証ツール(201)の実行等で取得した波形情報(213)から得られる論理回路の入力端子の信号値及び出力端子の信号値を示す情報に基づき、前記論理回路の動作モデルを生成する第1のモデル生成部(202)を有する。【選択図】図2
Description
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
ディジタルLSI回路のシミュレーションデータを基にエミュレーションを実行するデータを生成するエミュレーション回路生成装置が知られている(特許文献1参照)。ライブラリは、シミュレーション用の情報をハードウェアエミュレータで適する情報に変換する変換ルールをもつ。エミュレーションデータ生成手段は、シミュレーションデータと論理シミュレータで得られたシミュレーション結果とを入力し、ライブラリの変換ルールに基づいた変換を行ってエミュレーションデータを生成する。シミュレーションデータは、テストベンチ情報、回路情報、メモリパタン情報、メモリモデル情報及び外部デバイス情報のうちの少なくとも1つを含むデータであって論理シミュレータに入力したデータである。
また、複数のブロックからなるLSI回路を検証する回路シミュレーション装置が知られている(特許文献2参照)。検証対象外ブロック情報検索手段は、あらかじめ検証対象外ブロック情報を記述したテストベンチ情報を入力して検証対象外ブロック情報を抽出する。ダミーモジュール生成手段は、検証対象外ブロック情報より回路機能記述を削除したダミーモジュール情報を生成する。回路構成更新手段は、LSI回路の情報を記述する回路情報の検証対象外ブロックの記述をダミーモジュール情報の記述と置き換えて省リソースシミュレーション用回路情報を生成する。検証手段は、省リソースシミュレーション用回路情報を用いてLSI回路の検証を行う。
論理回路は、その特性に応じて、ASIC(application specific integrated circuit)又はFPGA(field-programmable gate array)により実現されることがある。品質向上、論理検証期間短縮、又はハードウェア設計とソフトウェア検証の協調設計の理由から、ASIC用レジスタ転送レベル(RTL)動作モデルをFPGAに搭載したい場合がある。しかし、ASIC用RTL動作モデルをFPGA用RTL動作モデルとして使用できない場合がある。その場合、FPGA用RTL動作モデルを再設計しなければならず、設計期間が長期化する。
1つの側面では、本発明の目的は、論理回路の動作モデルの設計期間を短縮することができる情報処理装置、情報処理方法及びプログラムを提供することである。
情報処理装置は、論理回路の入力端子の信号値及び出力端子の信号値を示す情報に基づき、前記論理回路の動作モデルを生成する第1のモデル生成部を有する。
1つの側面では、論理回路の動作モデルの設計期間を短縮することができる。
(第1の実施形態)
図1(A)は、第1の実施形態による情報処理装置100のハードウェア構成例を示す図である。情報処理装置100は、コンピュータであり、バス101と、中央処理ユニット(CPU)102と、リードオンリーメモリ(ROM)103と、ランダムアクセスメモリ(RAM)104と、ネットワークインターフェース105と、入力装置106と、出力装置107と、外部記憶装置108を有する。
図1(A)は、第1の実施形態による情報処理装置100のハードウェア構成例を示す図である。情報処理装置100は、コンピュータであり、バス101と、中央処理ユニット(CPU)102と、リードオンリーメモリ(ROM)103と、ランダムアクセスメモリ(RAM)104と、ネットワークインターフェース105と、入力装置106と、出力装置107と、外部記憶装置108を有する。
CPU102は、データの処理又は演算を行うと共に、バス101を介して接続された各種構成要素を制御する。ROM103は、起動プログラムを記憶する。CPU102は、ROM103内の起動プログラムを実行することにより起動する。外部記憶装置108は、図2の論理検証ツール201、波形−モデル変換部202、SystemC動作モデル生成部203及び高位合成ツール204を含むプログラムを記憶する。CPU102は、外部記憶装置108に記憶されているプログラムをRAM104に展開して実行する。RAM104は、プログラム及びデータを記憶する。外部記憶装置108は、例えばハードディスク記憶装置やCD−ROM等であり、電源を切っても記憶内容が消えない。ネットワークインターフェース105は、インターネット等のネットワークに接続するためのインターフェースである。入力装置106は、例えばキーボード及びマウス等であり、各種指定又は入力等を行うことができる。出力装置107は、ディスプレイ及びプリンタ等である。
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体及び上記のプログラム等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
図1(B)は、情報処理装置100の情報処理方法を示すフローチャートである。図2は、情報処理装置100のプログラム及びデータを示す図である。論理検証ツール201、波形−モデル変換部202、SystemC動作モデル生成部203及び高位合成ツール204は、CPU102が実行するプログラムである。ASIC用RTL(レジスタ転送レベル)動作モデル211は、論理回路の動作モデルであり、外部記憶装置108に記憶されている。ASIC用RTL動作モデル211をFPGA用RTL動作モデルとして使用することができる場合には、ASIC用RTL動作モデル211をFPGAに搭載することができる。ASIC用RTL動作モデル211をFPGA用RTL動作モデルとして使用することができない場合、情報処理装置100は、ASIC用RTL動作モデル211をFPGA用RTL動作モデル217に変換する。FPGAには、FPGA用RTL動作モデル217に基づく論理回路情報が書き込まれる。
ステップS111では、ユーザは、ASIC用RTL動作モデル211の検証パタン212が存在するか否かをチェックする。検証パタン212は、ASIC用RTL動作モデル211を検証するための入力信号のパタンである。検証パタン212が存在する場合には、ステップS113に進み、検証パタン212が存在しない場合には、ステップS112に進む。
ステップS112では、ユーザは、テストベンチ生成のためのASIC用RTL動作モデル211の検証パタン212を生成する。具体的には、ユーザは、信号マスク論理抽出パタン、入力→出力レイテンシ特定パタン、及び出力条件抽出パタンを含む検証パタン212を生成する。検証パタン212は、外部記憶装置108に格納される。その後、ステップS113に進む。
ステップS113では、CPU102は、論理検証ツール201を実行することにより、検証パタン212を用いてASIC用RTL動作モデル211の検証を実施し、波形情報213を生成し、波形情報213を外部記憶装置108に書き込む。波形情報213は、ASIC用RTL動作モデル211の入力信号及び出力信号の波形情報を有する。入力信号は、検証パタン212に対応する。論理検証ツール201は、波形情報213を生成する波形情報生成部である。
次に、ステップS114では、CPU102は、波形−モデル変換部(プログラム)202を実行することにより、波形情報213及び端子情報214を基に、ハードウェア記述言語(HDL)動作モデル215を生成し、HDL動作モデル215を外部記憶装置108に書き込む。波形−モデル変換部202は、HDL動作モデル215を生成する動作モデル生成部である。HDLは、例えば、Verilog−HDL又はVHDLである。端子情報214は、論理回路の入力端子及び出力端子の情報を有し、外部記憶装置108に格納されている。波形情報213の詳細は、後に図3を参照しながら説明する。端子情報214の詳細は、後に図4(A)を参照しながら説明する。HDL動作モデル215の詳細は、後に図6を参照しながら説明する。
次に、ステップS115では、CPU102は、論理検証ツール201を実行することにより、検証パタン212を用いてHDL動作モデル215の検証を実施し、生成される波形情報が上記の波形情報213と一致していることを確認する。
次に、ステップS116では、CPU102は、SystemC動作モデル生成部(プログラム)203を実行することにより、HDL動作モデル215に基づき、SystemC動作モデル216を生成し、SystemC動作モデル216を外部記憶装置108に書き込む。SystemCは、C/C++言語をベースにした高位合成言語である。なお、SystemC動作モデル生成部203は、合成スクリプトを含むSystemC動作モデル216を生成してもよい。具体的には、SystemC動作モデル生成部203は、HDL動作モデル215を解析し、構文木モデルを生成し、構文木モデルを解析して解析情報を抽出し、構文木モデル及び解析情報に基づいて構文木モデルを再構成し、SystemC動作モデル216を生成する。例えば、SystemC動作モデル生成部203は、特願2017−105814に記載の方法により、SystemC動作モデル216を生成することができる。
次に、CPU102は、高位合成ツール204を実行することにより、SystemC動作モデル216に基づき、FPGA用RTL動作モデル217を生成する。
次に、ステップS117では、ユーザは、FPGA用RTL動作モデル217に基づく論理回路情報をFPGAに書き込む。これにより、FPGAは、論理回路を構成し、動作可能になる。
図3は、図2の波形情報213の例を示す図である。論理検証ツール201は、検証パタン212を用いて、ASIC用RTL動作モデル211を検証し、波形情報213を生成する。図3には、波形情報213がVCD(Value Change Dump)ファイルである例を示す。波形情報213は、論理回路の端子情報301、論理回路の端子の信号変化の時間情報302、及び論理回路の端子の信号変化情報303を有する。端子情報301は、各端子が入力端子及び出力端子のいずれであるのかの情報を含まない。そのため、図2の端子情報214を準備する。
図4(A)は、図2の端子情報214の例を示す図である。次に、端子情報214の生成方法を説明する。ユーザは、論理回路の仕様書の入出力端子情報を基に、端子情報214を生成する。また、ユーザは、ASIC用RTL動作モデル211の入出力端子情報を抜粋して、端子情報214を生成してもよい。また、ユーザは、対象論理回路をインスタンスしているASIC用RTL動作モデル211の接続先情報から抽出し、端子情報214を生成してもよい。端子情報214は、端子名401、入出力情報402、クロック端子名403、及びリセット端子名404を有する。
波形−モデル変換部202は、端子情報214内の端子名401、入出力情報402、クロック端子名403、及びリセット端子名404を抽出する。入出力情報402は、「input」が入力端子を示し、「output」が出力端子を示す。例えば、端子CLKは、1ビット入力端子である。端子XRSTは、1ビット入力端子である。端子INDT_1は、2ビット入力端子である。端子INDT_2は、2ビット入力端子である。端子ODTは、2ビット出力端子である。端子CARRYは、1ビット出力端子である。クロック端子名403は、端子CLKがクロック端子であることを示す。リセット端子名404は、端子XRSTがリセット端子であることを示す。
図4(B)は、端子テーブル410の例を示す図である。波形−モデル変換部202は、図3の波形情報213内の端子情報301を基に、端子テーブル410を生成する。端子テーブル410は、ビット数と、マークと、端子名と、バス(BUS)表記の対応関係を有する。例えば、端子名CLKは、ビット数が1であり、「!」のマークで表され、BUS表記がない。端子名XRSTは、ビット数が1であり、「"」のマークで表され、BUS表記がない。端子名INDT_1は、ビット数が2であり、「#」のマークで表され、BUS表記が[1:0]である。端子名INDT_2は、ビット数が2であり、「$」のマークで表され、BUS表記が[1:0]である。端子名ODTは、ビット数が2であり、「%」のマークで表され、BUS表記が[1:0]である。端子名CARRYは、ビット数が1であり、「&」のマークで表され、BUS表記がない。
例えば、図3の信号変化情報303は、「$」のマークが示す端子INDT_2の信号が「0」に変化したことを示す情報である。波形情報213は、論理回路の入力端子の信号値及び出力端子の信号値を示す情報を有する。
図5(A)は、波形情報213の一部の波形情報213aの例を示す図である。波形情報213aは、記述501及び502を有する。記述501は、リセット端子XRSTのマークが「"」であることを示す。記述502は、「"」のマークを示すリセット端子XRSTの信号が1に変化(リセット解除)したことを示す。波形−モデル変換部202は、波形情報213aで、リセット端子XRSTの信号が「1」に変化している記述(リセット信号が解除される記述)502を抽出する。
図5(B)は、波形情報213の一部の波形情報213bの例を示す図である。波形情報213bは、記述511〜516を有する。記述511は、クロック端子CLKのマークが「!」であることを示す。記述512は、出力端子ODTのマークが「%」であることを示す。記述513は、出力端子CARRYのマークが「&」であることを示す。記述514は、「!」のマークが示すクロック端子CLKの信号が1に変化している箇所を示す。記述515は、「&」のマークが示す出力端子CARRYの信号が1に変化している箇所を示す。記述516は、「%」のマークが示す出力端子ODTの信号が0に変化している箇所を示す。波形−モデル変換部202は、波形情報213b内で、クロック端子CLKの信号が「1」に変化している箇所(クロック信号が「1」に変化した後)の記述514において、出力端子ODT及びCARRYの信号値を示す記述515及び516を抽出する。
図5(C)は、データベース520の例を示す図である。波形−モデル変換部202は、波形情報213を基に、クロック端子CLKの信号が1に変化している箇所の、出力端子の信号値のデータベース520を生成する。クロック端子CLKの信号が1に変化する箇所は、クロック端子CLKの信号のサイクルを示す。データベース520は、クロック端子CLKの信号のサイクル毎(サイクル番号毎)の出力端子ODT及びCARRYの信号値を示す。例えば、1サイクル目では、出力端子ODTの信号値は「01」である。8サイクル目では、出力端子ODTの信号値は「00」であり、出力端子CARRYの信号値は「1」である。
図6は、図2のHDL動作モデル215の例を示す図である。図7は、波形−モデル変換部202の処理例を示すフローチャートである。以下、波形−モデル変換部202がHDL動作モデル215を生成する例を説明する。
ステップS701では、波形−モデル変換部202は、図4(A)の端子情報214のファイルから抽出した情報を基に、図6のHDL動作モデル215内において、端子宣言部分601を書き出す。端子宣言部分601は、端子情報214と同様の内容を有する。
次に、ステップS702では、波形−モデル変換部202は、図6のHDL動作モデル215内において、定型文の「initial」文602を書き出す。
次に、ステップS703では、波形−モデル変換部202は、端子情報214のファイルから抽出した情報を基に、図6のHDL動作モデル215内において、出力端子ODT及びCARRYの初期化情報603を書き出す。
次に、ステップS704では、波形−モデル変換部202は、図6のHDL動作モデル215内において、定型文のリセット解除文604を書き出す。
次に、ステップS705では、波形−モデル変換部202は、図6のHDL動作モデル215内において、定型文のforever文605を書き出す。
次に、ステップS706では、波形−モデル変換部202は、端子情報214のファイルから抽出した情報を基に、図6のHDL動作モデル215内において、入力端子INDT_1及びINDT_2を動作開始条件とした情報606を書き出す。
次に、ステップS707では、波形−モデル変換部202は、図5(C)のデータベース520の情報を基に、図6のHDL動作モデル215内において、クロック端子CLKの信号のサイクル毎(サイクル番号毎)の出力端子の信号値の情報607を書き出す。情報607は、クロック端子CLKの信号のサイクル毎の出力端子ODT及びCARRYの信号値の動作記述である。
次に、ステップS708では、波形−モデル変換部202は、図6のHDL動作モデル215内において、定型文のHDL動作モデル215の終了を表す情報608を書き出す。
以上の処理により、HDL動作モデル215が完成する。その後、図2に示すように、SystemC動作モデル生成部203は、HDL動作モデル215に基づき、SystemC動作モデル216を生成する。高位合成ツール204は、SystemC動作モデル216に基づき、FPGA用RTL動作モデル217を生成する。
ASIC用RTL動作モデル211をFPGA用RTL動作モデルとして使用することができない場合、情報処理装置100は、ASIC用RTL動作モデル211をFPGA用RTL動作モデル217に変換することができる。これにより、ユーザは、FPGA用RTL動作モデル217を手作業で再設計する必要がなくなり、FPGA用RTL動作モデル217の設計期間を短縮することができる。
(第2の実施形態)
図6では、出力端子ODT及びCARRYの変化情報607をそのままHDL動作モデル215に記述している。そのため、波形情報(VCDファイル)213が長くなればなるほど、図6のHDL動作モデル215も大きくなる。HDL動作モデル215のサイズが大きくなると、FPGA用RTL動作モデル217、及び論理合成後の回路規模の増加につながるため、対策する必要がある。第2の実施形態では、情報処理装置100は、後述する手順でHDL動作モデル215を生成することで、回路規模を削減することができる。以下、第2の実施形態が第1の実施形態と異なる点を説明する。
図6では、出力端子ODT及びCARRYの変化情報607をそのままHDL動作モデル215に記述している。そのため、波形情報(VCDファイル)213が長くなればなるほど、図6のHDL動作モデル215も大きくなる。HDL動作モデル215のサイズが大きくなると、FPGA用RTL動作モデル217、及び論理合成後の回路規模の増加につながるため、対策する必要がある。第2の実施形態では、情報処理装置100は、後述する手順でHDL動作モデル215を生成することで、回路規模を削減することができる。以下、第2の実施形態が第1の実施形態と異なる点を説明する。
波形−モデル変換部202は、波形情報213から、以下の4つの情報を抽出する。第1に、波形−モデル変換部202は、第1の実施形態と同様に、端子名と端子情報214内部で使用されている端子名を表すマークの情報を抽出する。第2に、波形−モデル変換部202は、第1の実施形態と同様に、リセット端子XRSTの信号が「1」に変化している箇所(リセット信号が解除される箇所)を抽出する。第3に、波形−モデル変換部202は、後述のように、信号の変化が発生した箇所での入力端子INDT_1及びINDT_2の信号値を抽出する。第4に、波形−モデル変換部202は、後述のように、クロック端子CLKの信号が「1」に変化している箇所毎の、出力端子ODT及びCARRYの信号値を抽出する。
図8(A)は、波形情報213の一部の波形情報213cの例を示す図である。記述801は、入力端子INDT_1のマークが「#」であることを示す。記述802は、入力端子INDT_2のマークが「$」であることを示す。記述803は、出力端子ODTのマークが「%」であることを示す。記述804は、出力端子CARRYのマークが「&」であることを示す。
記述805は、「$」のマークを示す入力端子INDT_2の信号が「0」に変化している箇所を示す。記述806は、「!」のマークを示すクロック端子CLKの信号が「1」に変化している箇所を示す。記述807は、「%」のマークを示す出力端子ODTの信号が「11」に変化している箇所を示す。記述808は、「#」のマークを示す入力端子INDT_1の信号が「1」に変化している箇所を示す。記述809は、「!」のマークを示すクロック端子CLKの信号が「1」に変化している箇所を示す。記述810は、「%」のマークを示す出力端子ODTの信号が「0」に変化している箇所を示す。
波形−モデル変換部202は、入力端子INDT_1及びINDT_2の信号の変化が発生した記述805及び808での入力端子INDT_1及びINDT_2の信号値を抽出する。また、波形−モデル変換部202は、クロック端子CLKの信号が「1」に変化している記述806及び809毎の、出力端子ODT及びCARRYの信号値の記述807及び810を抽出する。
図8(B)は、データベース820の例を示す図である。波形−モデル変換部202は、波形情報213を基に、入力端子INDT_1及びINDT_2の信号値に応じた出力端子ODT及びCARRYの信号値のデータベース820を生成する。クロック端子CLKの信号が1に変化する箇所は、クロック端子CLKの信号のサイクルを示す。データベース820は、クロック端子CLKの信号のサイクル番号と、入力端子INDT_1の信号値と、入力端子INDT_2の信号値と、出力端子ODTの信号値と、出力端子CARRYの信号値の対応関係を示す。例えば、4サイクル目では、入力端子INDT_1の信号値は「00」であり、入力端子INDT_2の信号値は「10」であり、出力端子ODTの信号値は「01」である。
図9は、図2のHDL動作モデル215の例を示す図である。図10は、波形−モデル変換部202の処理例を示すフローチャートである。以下、波形−モデル変換部202が図9のHDL動作モデル215を生成する例を説明する。
ステップS1001では、波形−モデル変換部202は、図4(A)の端子情報214のファイルから抽出した情報を基に、図9のHDL動作モデル215内において、端子宣言部分901を書き出す。端子宣言部分901は、端子情報214と同様の内容を有する。
次に、ステップS1002では、波形−モデル変換部202は、図9のHDL動作モデル215内において、reg宣言でレジスタ型変数clk_countの宣言902を書き出す。変数clk_countは、クロック端子CLKの信号のサイクル番号に対応する。
次に、ステップS1003では、波形−モデル変換部202は、図9のHDL動作モデル215内において、定型文の「initial」文903を書き出す。
次に、ステップS1004では、波形−モデル変換部202は、端子情報214のファイルから抽出した情報を基に、図9のHDL動作モデル215内において、出力端子ODT,CARRY及び変数clk_countの初期化情報904を書き出す。
次に、ステップS1005では、波形−モデル変換部202は、図9のHDL動作モデル215内において、定型文のリセット解除文905を書き出す。
次に、ステップS1006では、波形−モデル変換部202は、図9のHDL動作モデル215内において、定型文のforever文906を書き出す。
次に、ステップS1007では、波形−モデル変換部202は、図9のHDL動作モデル215内において、変数clk_countのカウントアップ宣言907を書き出す。
次に、ステップS1008では、波形−モデル変換部202は、図8(B)のデータベース820の情報を上から順番に確認していく。
次に、ステップS1009では、波形−モデル変換部202は、データベース820の対象行の入力端子INDT_1及びINDT_2の条件がデータベース820の他の行に存在しているか否かをチェックする。波形−モデル変換部202は、他の行に存在している場合にはステップS1010に進み、他の行に存在していない場合にはステップS1011に進む。
例えば、図8(B)のデータベース820において、CLK=4に示す入力端子条件(入力端子の信号の条件)は、「INDT_1=2’b00、INDT_2=2’b10」である。この入力端子条件が他の行に存在しているかどうかを確認すると、CLK=24の部分が同じ入力端子条件となるため、ステップS1009からS1010に進む。
ステップS1010では、波形−モデル変換部202は、データベース820において、対象行と上記の他の行では、同じ入力端子INDT_1及びINDT_2の信号値の条件で、出力端子ODT及びCARRYの信号値が異なっていないかをチェックする。波形−モデル変換部202は、異なっていない場合にはステップS1011に進み、異なっている場合にはステップS1012に進む。
例えば、図8(B)のデータベース820において、CLK=4とCLK=24の出力端子ODTを確認すると、どちらも「ODT=2’b01」となっていることが分かる。そのため、ステップS1010からS1011に進む。
ステップS1011では、波形−モデル変換部202は、データベース820の対象行をイベントベース記述用の情報908として保持し、ステップS1013に進む。イベントベース記述用の情報908は、入力端子INDT_1及びINDT_2の信号値に応じた出力端子ODT及び/又はCARRYの信号値の動作記述である。
ステップS1013では、波形−モデル変換部202は、データベース820の情報を全て確認したか否かをチェックする。波形−モデル変換部202は、全て確認していない場合にはステップS1008に戻り、上記の処理を繰り返す。
例えば、図8(B)のデータベース820において、CLK=6に示す入力端子条件は、「INDT_1=2’b00、INDT_2=2’b00」である。ステップS1009では、波形−モデル変換部202は、この入力端子条件が他の行に存在しているかどうかを確認する。CLK=6の入力端子条件は、CLK=22、CLK=26及びCLK=27の入力端子条件と同じであるため、波形−モデル変換部202は、ステップS1009からS1010に進む。CLK=6、CLK=22、CLK=26及びCLK=27の出力端子条件は、出力端子ODTの信号値が異なっていることが分かる。そのため、波形−モデル変換部202は、ステップS1010からS1012に進む。
ステップS1012では、波形−モデル変換部202は、データベース820の対象行をサイクルベース記述用の情報909として保持し、ステップS1013に進む。サイクルベース記述用の情報909は、変数clk_count毎の出力端子ODT及び/又はCARRYの信号値の動作記述である。変数clk_countは、クロック端子CLKの信号のサイクル番号を示す。
ステップS1013において、波形−モデル変換部202は、データベース820の情報を全て確認した場合には、ステップS1014に進む。ステップS1014では、波形−モデル変換部202は、図9のHDL動作モデル215において、イベントベース記述用の情報908を書き出し、次にサイクルベース記述用の情報909を書き出す。
次に、ステップS1015では、波形−モデル変換部202は、図9のHDL動作モデル215内において、定型文のクロック宣言、及びHDL動作モデル215の終了を表す情報910を書き出す。
以上の処理により、図9のHDL動作モデル215が完成する。その後、図2に示すように、SystemC動作モデル生成部203は、HDL動作モデル215に基づき、SystemC動作モデル216を生成する。高位合成ツール204は、SystemC動作モデル216に基づき、FPGA用RTL動作モデル217を生成する。
波形−モデル変換部202は、イベントベース記述用の情報908及びサイクルベース記述用の情報909を含むHDL動作モデル215を生成する。第2の実施形態は、第1の実施形態に比べ、波形情報213に応じて、HDL動作モデル215及びFPGA用RTL動作モデル217のサイズを小さくすることができる。
(第3の実施形態)
第2の実施形態では、入力端子条件によって出力端子の信号値が一意に決まらない場合、つまり、入力端子条件によって出力端子の信号が複数存在する場合には、HDL動作モデル215において、サイクルベース記述用の情報909を書き出した。このサイクルベース記述用の情報909が複数の変数clk_countの条件を有する場合、波形情報213のサイズが増加するに従い、HDL動作モデル215のサイズが増加し、回路規模が増加する可能性がある。
第2の実施形態では、入力端子条件によって出力端子の信号値が一意に決まらない場合、つまり、入力端子条件によって出力端子の信号が複数存在する場合には、HDL動作モデル215において、サイクルベース記述用の情報909を書き出した。このサイクルベース記述用の情報909が複数の変数clk_countの条件を有する場合、波形情報213のサイズが増加するに従い、HDL動作モデル215のサイズが増加し、回路規模が増加する可能性がある。
第3の実施形態では、情報処理装置100は、上記の課題を解決するため、入力端子条件として1サイクル前の信号値も条件として使用することで、サイクルベース記述用の情報909を削減することができる。入力端子条件に1サイクル前の入力端子の信号値も条件として加えても、サイクルベース記述用の情報909が必要になる場合、さらに1サイクル前(現サイクルに対して2サイクル前)の入力端子の信号値を入力端子条件にすればよい。このサイクルのバックトレース作業は、最長で波形情報213の信号値の初期値までさかのぼることが可能である。
図11は、データベース1100の例を示す図である。波形−モデル変換部202は、波形情報213を基に、入力端子INDT_1及びINDT_2の現サイクルの信号値及び過去のサイクルの信号値INDT_1_b1及びINDT_2_b1に応じた出力端子ODT及びCARRYの信号値のデータベース1100を生成する。データベース1100は、クロック端子CLKの信号のサイクル番号と、入力端子INDT_1の現サイクルの信号値と、入力端子INDT_2の現サイクルの信号値と、入力端子INDT_1の1サイクル前の信号値INDT_1_b1と、入力端子INDT_2の1サイクル前の信号値INDT_2_b1と、出力端子ODTの信号値と、出力端子CARRYの信号値の対応関係を示す。
各サイクル番号は、2行の対応関係を有する。第1の行は、入力端子INDT_1の現サイクルの信号値と、入力端子INDT_2の現サイクルの信号値と、出力端子ODT及び/又はCARRYの信号値の対応関係を示す。第2の行は、入力端子INDT_1の現サイクルの信号値と、入力端子INDT_2の現サイクルの信号値と、入力端子INDT_1の1サイクル前の信号値INDT_1_b1と、入力端子INDT_2の1サイクル前の信号値INDT_2_b1と、出力端子ODT及び/又はCARRYの信号値の対応関係を示す。
例えば、図11のCLK=5の第1の行では、入力端子INDT_1の現サイクルの信号値は「00」であり、入力端子INDT_2の現サイクルの信号値は「11」であり、出力端子ODTの信号値は「10」である。図11のCLK=5の第2の行では、入力端子INDT_1の現サイクルの信号値は「00」であり、入力端子INDT_2の現サイクルの信号値は「11」であり、入力端子INDT_1の1サイクル前の信号値INDT_1_b1は「00」であり、入力端子INDT_2の1サイクル前の信号値INDT_2_b1は「10」であり、出力端子ODTの信号値は「10」である。
図12は、図2のHDL動作モデル215の例を示す図である。図13は、波形−モデル変換部202の処理例を示すフローチャートである。以下、波形−モデル変換部202が図12のHDL動作モデル215を生成する例を説明する。
ステップS1301では、波形−モデル変換部202は、図4(A)の端子情報214のファイルから抽出した情報を基に、図12のHDL動作モデル215内において、端子宣言部分1201を書き出す。端子宣言部分1201は、端子情報214と同様の内容を有する。
次に、ステップS1302では、波形−モデル変換部202は、図12のHDL動作モデル215内において、reg宣言でレジスタ型変数clk_count、INDT_1_b1及びINDT_2_b1の宣言1202を書き出す。変数clk_countは、クロック端子CLKの信号のサイクル番号に対応する。変数INDT_1_b1は、入力端子INDT_1の1サイクル前の信号値に対応する。変数INDT_2_b1は、入力端子INDT_2の1サイクル前の信号値に対応する。
次に、ステップS1303では、波形−モデル変換部202は、図12のHDL動作モデル215内において、定型文の「initial」文1203を書き出す。
次に、ステップS1304では、波形−モデル変換部202は、端子情報214のファイルから抽出した情報を基に、図12のHDL動作モデル215内において、出力端子ODT,CARRY及び変数clk_countの初期化情報1204を書き出す。
次に、ステップS1305では、波形−モデル変換部202は、図12のHDL動作モデル215内において、定型文のリセット解除文1205を書き出す。
次に、ステップS1306では、波形−モデル変換部202は、図12のHDL動作モデル215内において、定型文のforever文1206を書き出す。
次に、ステップS1307では、波形−モデル変換部202は、図12のHDL動作モデル215内において、変数clk_countのカウントアップ宣言1207を書き出す。
次に、ステップS1308では、波形−モデル変換部202は、図11のデータベース1100の情報を上から順番に確認していく。
次に、ステップS1309では、波形−モデル変換部202は、データベース1100の対象行の入力端子INDT_1及びINDT_2の現サイクルの信号値の条件がデータベース1100の他のサイクル番号の第1の行に存在しているか否かをチェックする。波形−モデル変換部202は、他のサイクル番号の第1の行に存在している場合にはステップS1310に進み、他のサイクル番号の第1の行に存在していない場合にはステップS1314に進む。
例えば、図11のデータベース1100において、CLK=4の第1の行に示す入力端子条件は、「INDT_1=2’b00、INDT_2=2’b10」である。この入力端子条件が他の行に存在しているかどうかを確認すると、CLK=24の第1の行が同じ入力端子条件となるため、ステップS1309からS1310に進む。
ステップS1310では、波形−モデル変換部202は、データベース1100において、対象行と上記の他のサイクル番号の第1の行では、同じ入力端子INDT_1及びINDT_2の信号値の条件で、出力端子ODT及びCARRYの信号値が異なっていないかをチェックする。波形−モデル変換部202は、異なっていない場合にはステップS1314に進み、異なっている場合にはステップS1311に進む。
例えば、図11のデータベース1100において、CLK=4の第1の行とCLK=24の第1の行の出力端子ODTを確認すると、どちらも「ODT=2’b01」となっていることが分かる。そのため、ステップS1310からS1314に進む。
ステップS1314では、波形−モデル変換部202は、データベース1100の対象行をイベントベース記述用の情報1208として保持し、ステップS1315に進む。イベントベース記述用の情報1208は、入力端子INDT_1及びINDT_2の現サイクルの信号値に応じた出力端子ODT及び/又はCARRYの信号値の動作記述である。
ステップS1315では、波形−モデル変換部202は、上記の入力端子条件が同じクロック端子CLKのサイクル番号の第2の行(バックトレース行)を処理対象外にする。例えば、CLK=4の第1の行の入力端子条件は一意に決めることができたので、波形−モデル変換部202は、CLK=4の第2の行及びCLK=24の第2の行を処理の対象外とする。
次に、ステップS1316では、波形−モデル変換部202は、データベース1100の情報を全て確認したか否かをチェックする。波形−モデル変換部202は、全て確認していない場合にはステップS1308に戻り、上記の処理を繰り返す。
例えば、図11のデータベース1100において、CLK=6の第1の行に示す入力端子条件は、「INDT_1=2’b00、INDT_2=2’b00」である。ステップS1309では、波形−モデル変換部202は、この入力端子条件が他のサイクル番号の第1の行に存在しているかどうかを確認する。CLK=6の第1の行の入力端子条件は、CLK=22、CLK=26及びCLK=27の第1の行の入力端子条件と同じであるため、波形−モデル変換部202は、ステップS1309からS1310に進む。CLK=6、CLK=22、CLK=26及びCLK=27の第1の行の出力端子条件は、出力端子ODTの信号値が異なっていることが分かる。そのため、波形−モデル変換部202は、ステップS1310からS1311に進む。
ステップS1311では、波形−モデル変換部202は、データベース1100において、上記の入力端子条件と同じ入力端子条件のクロック端子CLKのサイクル番号の第2の行のバックトレース情報を参照して下記の確認を行う。
次に、ステップS1312では、波形−モデル変換部202は、データベース1100の対象行の入力端子INDT_1及びINDT_2の1サイクル前の信号値INDT_1_b1及びINDT_2_b1の条件がデータベース1100の他のサイクル番号の第2の行に存在しているか否かをチェックする。波形−モデル変換部202は、他のサイクル番号の第2の行に存在している場合には、ステップS1313に進む。また、波形−モデル変換部202は、他のサイクル番号の第2の行に存在していない場合には、ステップS1314に進む。
例えば、図11のデータベース1100において、CLK=6の第2の行に示す入力端子条件は、「INDT_1=2’b00、INDT_2=2’b00、INDT_1_b1=2’b00、INDT_2_b1=2’b11」である。この入力端子条件が他のサイクル番号の第2の行に存在しているかどうかを確認すると、CLK=26の第2の行が同じ入力端子条件となるため、ステップS1312からS1313に進む。
ステップS1313では、波形−モデル変換部202は、データベース1100において、対象行と上記の他のサイクル番号の第2行では、同じ信号値INDT_1_b1及びINDT_2_b1の条件で、出力端子ODT及びCARRYの信号値が異なっていないかをチェックする。波形−モデル変換部202は、異なっていない場合にはステップS1314に進む。また、波形−モデル変換部202は、異なっている場合には、ステップS1311に戻り、さらに1サイクル前の入力端子INDT_1及びINDT_2の信号値についての処理を繰り返す。
例えば、図11のデータベース1100において、CLK=6とCLK=26の第2の行の出力端子ODTを確認すると、どちらも「ODT=2’b11」となっていることが分かる。そのため、ステップS1313からS1314に進む。
ステップS1314では、波形−モデル変換部202は、データベース1100の対象サイクル番号の第2の行をイベントベース記述用の情報1209として保持し、ステップS1315に進む。イベントベース記述用の情報1209は、入力端子INDT_1及びINDT_2の現サイクルの信号値及び過去のサイクルの信号値INDT_1_b1及びINDT_2_b1に応じた出力端子ODT及び/又はCARRYの信号値の動作記述である。
ステップS1316において、波形−モデル変換部202は、データベース1100の情報を全て確認した場合には、ステップS1317に進む。ステップS1317では、波形−モデル変換部202は、図12のHDL動作モデル215において、イベントベース記述用の情報1208を書き出し、次にイベントベース記述用の情報1209を書き出す。次に、波形−モデル変換部202は、図12のHDL動作モデル215において、その他の入力端子条件の場合の出力端子ODT及びCARRYの信号値、及びクロック宣言1210を書き出す。次に、波形−モデル変換部202は、図12のHDL動作モデル215において、バックトレース信号値INDT_1_b1及びINDT_2_b1を作成するシフトレジスタ記述1211を書き出す。
次に、ステップS1318では、波形−モデル変換部202は、図12のHDL動作モデル215内において、定型文のHDL動作モデル215の終了を表す情報1212を書き出す。
以上の処理により、図12のHDL動作モデル215が完成する。その後、図2に示すように、SystemC動作モデル生成部203は、HDL動作モデル215に基づき、SystemC動作モデル216を生成する。高位合成ツール204は、SystemC動作モデル216に基づき、FPGA用RTL動作モデル217を生成する。
波形−モデル変換部202は、イベントベース記述用の情報1208及び1209を含むHDL動作モデル215を生成する。第3の実施形態は、第2の実施形態に比べ、波形情報213に応じて、HDL動作モデル215及びFPGA用RTL動作モデル217のサイズを小さくすることができる。
(第4の実施形態)
図14は、第4の実施形態による情報処理装置100のプログラム及びデータを示す図である。図2では、波形−モデル変換部202は、波形情報213及び端子情報214に基づき、HDL動作モデル215を生成する。これに対し、図14では、波形−モデル変換部202は、波形情報213及び端子情報214に基づき、FPGA用RTL動作モデル217を生成する。以下、本実施形態が第3の実施形態と異なる点を説明する。
図14は、第4の実施形態による情報処理装置100のプログラム及びデータを示す図である。図2では、波形−モデル変換部202は、波形情報213及び端子情報214に基づき、HDL動作モデル215を生成する。これに対し、図14では、波形−モデル変換部202は、波形情報213及び端子情報214に基づき、FPGA用RTL動作モデル217を生成する。以下、本実施形態が第3の実施形態と異なる点を説明する。
図15は、図14のFPGA用RTL動作モデル217の例を示す図である。図16は、波形−モデル変換部202の処理例を示すフローチャートである。以下、波形−モデル変換部202が図15のFPGA用RTL動作モデル217を生成する例を説明する。
ステップS1601では、波形−モデル変換部202は、図4(A)の端子情報214のファイルから抽出した情報を基に、図15のFPGA用RTL動作モデル217内において、端子宣言部分1501を書き出す。
次に、ステップS1602では、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217内において、reg宣言でレジスタ型変数clk_count、INDT_1_b1及びINDT_2_b1の宣言1502を書き出す。
次に、ステップS1603では、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217内において、定型文のalways文「CLK_COUNT_MODEL」1503を書き出す。次に、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217内において、定型文のalways文のリセット文1504を書き出す。次に、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217内において、変数clk_countのカウントアップ文1505を書き出す。
次に、ステップS1604では、波形−モデル変換部202は、出力端子毎にalways文を書き出す処理を実施する。例えば、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217内において、出力端子CARRYのalways文1506を書き出す。なお、図15では、説明の簡単のため、出力端子ODTの記述を省略しているが、出力端子ODTの記述は、出力端子CARRYの記述と同様に生成することができる。
次に、ステップS1605では、波形−モデル変換部202は、全ての出力端子の情報をFPGA用RTL動作モデル217内に書き出したか否かを判定する。波形−モデル変換部202は、全てを書き出していない場合にはステップS1608に進む。
ステップS1608では、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217内において、定型文のalways文のリセット文1507を書き出す。
次に、ステップS1609では、波形−モデル変換部202は、図11のデータベース1100の情報を上から順番に確認していく。
次に、ステップS1610では、波形−モデル変換部202は、データベース1100の対象行の入力端子INDT_1及びINDT_2の現サイクルの信号値の条件がデータベース1100の他のサイクル番号の第1の行に存在しているか否かをチェックする。波形−モデル変換部202は、他のサイクル番号の第1の行に存在している場合にはステップS1611に進み、他のサイクル番号の第1の行に存在していない場合にはステップS1615に進む。
ステップS1611では、波形−モデル変換部202は、データベース1100において、対象行と上記の他のサイクル番号の第1の行では、同じ入力端子INDT_1及びINDT_2の信号値の条件で、出力端子CARRYの信号値が異なっていないかをチェックする。波形−モデル変換部202は、異なっていない場合にはステップS1615に進み、異なっている場合にはステップS1612に進む。
ステップS1615では、波形−モデル変換部202は、データベース1100の対象行の入力端子条件をcase文の条件情報1508又は1510として保持する。この場合、条件情報1508及び1510は、入力端子INDT_1及びINDT_2の現サイクルの信号値の条件である。
次に、ステップS1616では、波形−モデル変換部202は、上記の入力端子条件が同じクロック端子CLKのサイクル番号の第2の行(バックトレース行)を処理対象外にする。
次に、ステップS1617では、波形−モデル変換部202は、データベース1100の情報を全て確認したか否かをチェックする。波形−モデル変換部202は、全て確認していない場合にはステップS1609に戻り、上記の処理を繰り返す。
ステップS1612では、波形−モデル変換部202は、データベース1100において、上記の入力端子条件と同じ入力端子条件のクロック端子CLKのサイクル番号の第2の行のバックトレース情報を参照して下記の確認を行う。
次に、ステップS1613では、波形−モデル変換部202は、データベース1100の対象行の入力端子INDT_1及びINDT_2の1サイクル前の信号値INDT_1_b1及びINDT_2_b1の条件がデータベース1100の他のサイクル番号の第2の行に存在しているか否かをチェックする。波形−モデル変換部202は、他のサイクル番号の第2の行に存在している場合には、ステップS1614に進む。また、波形−モデル変換部202は、他のサイクル番号の第2の行に存在していない場合には、ステップS1615に進む。
ステップS1614では、波形−モデル変換部202は、データベース1100において、対象行と上記の他のサイクル番号の第2行では、同じ信号値INDT_1_b1及びINDT_2_b1の条件で、出力端子CARRYの信号値が異なっていないかをチェックする。波形−モデル変換部202は、異なっていない場合には、ステップS1615に進む。また、波形−モデル変換部202は、異なっている場合には、ステップS1612に戻り、さらに1サイクル前の入力端子INDT_1及びINDT_2の信号値についての処理を繰り返す。
ステップS1615では、波形−モデル変換部202は、データベース1100の対象サイクル番号の第2の行の入力端子条件をcase文の条件情報1508又は1510として保持する。この場合、条件情報1508及び1510は、入力端子INDT_1及びINDT_2の現サイクルの信号値及び過去のサイクルの信号値INDT_1_b1及びINDT_2_b1の条件である。
ステップS1617において、波形−モデル変換部202は、データベース1100の情報を全て確認した場合には、ステップS1618に進む。ステップS1618では、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217において、保持しておいたcase文の条件情報1508及び1510を順番に書き出す。波形−モデル変換部202は、書き出す際に、異なる入力端子条件で出力端子の信号が同じ場合には、「or」を示す「||」で区切る。
次に、ステップS1619では、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217において、条件情報1508及び1510の書き出しがそれぞれ終わった時点で、出力端子CARRYへの代入文1509及び1511を書き出す。そして、波形−モデル変換部202は、デフォルトの出力端子CARRYへの代入文1512を書き出す。
条件情報1508,1510及び代入文1509,1511は、入力端子INDT_1及びINDT_2の現サイクルの信号値に応じた出力端子CARRYの信号値の動作記述を含み、入力端子INDT_1及びINDT_2の現サイクルの信号値及び過去のサイクルの信号値INDT_1_b1及びINDT_2_b1に応じた出力端子CARRYの信号値の動作記述を含む。
その後、波形−モデル変換部202は、ステップS1604に戻り、他の出力端子ODTについての処理を繰り返す。ステップS1605において、波形−モデル変換部202は、全ての出力端子の情報をFPGA用RTL動作モデル217内に書き出した場合には、ステップS1606に進む。
ステップS1606では、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217において、バックトレース信号値INDT_1_b1及びINDT_2_b1を作成するシフトレジスタ記述1513を書き出す。
次に、ステップS1607では、波形−モデル変換部202は、図15のFPGA用RTL動作モデル217内において、定型文のFPGA用RTL動作モデル217の終了を表す情報(endmodule)1514を書き出す。
以上の処理により、図15のFPGA用RTL動作モデル217が完成する。図2では、SystemC動作モデル生成部203の処理及び高位合成ツール204の処理が必要である。これに対し、本実施形態では、波形−モデル変換部202がFPGA用RTL動作モデル217を生成するので、SystemC動作モデル生成部203の処理及び高位合成ツール204の処理が不要になる利点がある。
波形情報213が、あるパタンの繰り返しだったり、規則的な動作をしている場合には、第1〜第3の実施形態が有効である。これに対し、波形情報213の条件が複雑になった場合には、第4の実施形態が有効である。また、波形情報213が少ない場合には、第1の実施形態を適用し、波形情報が多い場合には第2〜4の実施形態を適用することができる。
なお、波形−モデル変換部202は、第1の実施形態と同様に、クロック端子の信号のサイクル番号に応じた出力端子の信号値の動作記述を有するFPGA用RTL動作モデル217を生成することもできる。また、波形−モデル変換部202は、第2及び第3の実施形態の同様の動作記述を有するFPGA用RTL動作モデル217を生成することもできる。
(第5の実施形態)
図17は、第5の実施形態によるデータベース820及びメモリ情報1701の例を示す図である。波形−モデル変換部202は、第2の実施形態と同様に、波形情報213を基に、入力端子INDT_1及びINDT_2の信号値に応じた出力端子ODT及びCARRYの信号値のデータベース820を生成する。データベース820は、クロック端子CLKの信号のサイクル番号と、入力端子INDT_1の信号値と、入力端子INDT_2の信号値と、出力端子ODTの信号値と、出力端子CARRYの信号値の対応関係を示す。
図17は、第5の実施形態によるデータベース820及びメモリ情報1701の例を示す図である。波形−モデル変換部202は、第2の実施形態と同様に、波形情報213を基に、入力端子INDT_1及びINDT_2の信号値に応じた出力端子ODT及びCARRYの信号値のデータベース820を生成する。データベース820は、クロック端子CLKの信号のサイクル番号と、入力端子INDT_1の信号値と、入力端子INDT_2の信号値と、出力端子ODTの信号値と、出力端子CARRYの信号値の対応関係を示す。
波形−モデル変換部202は、リードオンリーメモリ(ROM)をインスタンスするFPGA用RTL動作モデル217を生成するため、データベース820を基にメモリ情報1701を生成する。メモリ情報1701は、ROMのアドレスADDRESSとデータOUTDATAの対応関係を有する。
波形−モデル変換部202は、データベース820内のクロック端子CLKの信号のサイクル番号と、入力端子INDT_1の信号値と、入力端子INDT_2の信号値を基に、メモリ情報1701のアドレスADDRESSを生成する。例えば、CLK=4におけるメモリ情報1701のアドレスADDRESSの生成方法を説明する。クロック端子CLKの信号のサイクル番号の4は、5ビット2進数に変換すると、「00100」である。入力端子INDT_1の信号値は、2進数で「00」である。入力端子INDT_2の信号値は、2進数で「10」である。波形−モデル変換部202は、クロック端子CLKの信号のサイクル番号「00100」と、入力端子INDT_1の信号値「00」と、入力端子INDT_2の信号値「10」をつなぎ合わせ、「001000010」のアドレスADDRESSを生成する。
また、波形−モデル変換部202は、データベース820内の出力端子ODTの信号値と、出力端子CARRYの信号値を基に、メモリ情報1701のデータOUTDATAを生成する。例えば、CLK=4におけるメモリ情報1701のデータOUTDATAの生成方法を説明する。入力端子ODTの信号値は、2進数で「01」である。出力端子CARRYの信号値の初期値は、2進数で「0」である。波形−モデル変換部202は、入力端子ODTの信号値「01」と、出力端子CARRYの信号値「0」をつなぎ合わせ、「010」のデータOUTDATAを生成する。波形−モデル変換部202は、データベース820の全行をメモリ情報1701に変換する。
図18(A)は、図17のメモリ情報1701を記憶するROM1801を示す概念図である。図18(B)は、ROM1801をROMAAとしてインスタンスするFPGA用RTL動作モデル217の例を示す図である。以下、波形−モデル変換部202が図18(B)のFPGA用RTL動作モデル217を生成する方法を説明する。
まず、波形−モデル変換部202は、図4(A)の端子情報214のファイルから抽出した情報を基に、図18(B)のFPGA用RTL動作モデル217内において、端子宣言部分1501を書き出す。
次に、波形−モデル変換部202は、図18(B)のFPGA用RTL動作モデル217内において、reg宣言でレジスタ型変数clk_countの宣言1802を書き出す。次に、波形−モデル変換部202は、図18(B)のFPGA用RTL動作モデル217内において、定型文のalways文「CLK_COUNT_MODEL」1503を書き出す。
次に、波形−モデル変換部202は、図18(B)のFPGA用RTL動作モデル217内において、定型文のalways文のリセット文1804を書き出す。次に、波形−モデル変換部202は、図18(B)のFPGA用RTL動作モデル217内において、変数clk_countのカウントアップ文1505を書き出す。
次に、波形−モデル変換部202は、図18(B)のFPGA用RTL動作モデル217内において、メモリ情報1701を有するROMAAのインスタンス情報1806を書き出す。アドレスADDRESSは、サイクル番号clk_countと、入力端子INDT_1の信号値と、入力端子INDT_2の信号値で表される。データOUTDATAは、出力端子ODTの信号値と、出力端子CARRYの信号値で表される。
次に、波形−モデル変換部202は、図18(B)のFPGA用RTL動作モデル217内において、定型文のFPGA用RTL動作モデル217の終了を表す情報(endmodule)1807を書き出す。
以上で、FPGA用RTL動作モデル217が完成する。FPGA用RTL動作モデル217は、アドレスADDRESSを入力し、データOUTDATAを出力するROMを論理回路として動作させる。
FPGA用RTL動作モデル217は、アドレスADDRESSとデータOUTDATAで表現されるメモリの動作モデルである。アドレスADDRESSは、クロック端子の信号のサイクル番号及び入力端子の信号値に基づくアドレスである。データDATAは、出力端子の信号値に基づくデータである。なお、波形−モデル変換部202は、上記のメモリの動作モデルを、HDL動作モデル215として生成することもできる。
(第6の実施形態)
第5の実施形態では、ROMの構成をイメージしやすいように、サイクル番号clk_count及び入力端子INDT_1及びINDT_2の信号値を単純にアドレスADDRESSとして使用している例を示している。しかし、サイクル番号clk_countが大きくなるに従い、アドレスADDRESSが増加していくことになってしまい、ROM容量が大きくなってしまう。
第5の実施形態では、ROMの構成をイメージしやすいように、サイクル番号clk_count及び入力端子INDT_1及びINDT_2の信号値を単純にアドレスADDRESSとして使用している例を示している。しかし、サイクル番号clk_countが大きくなるに従い、アドレスADDRESSが増加していくことになってしまい、ROM容量が大きくなってしまう。
そこで、第6の実施形態では、波形−モデル変換部202は、第3の実施形態と同様に、入力端子の信号の条件によって出力端子の信号値が一意に決まる情報を生成するため、入力端子の1サイクル前の信号値も条件として使用する。これにより、アドレスの増加を抑止することができる。
図19は、ROMをインスタンスするHDL動作モデル215の例を示す図である。波形−モデル変換部202は、図11のデータベース1100を基に、図13のフローチャートの処理と同様に、HDL動作モデル215を生成することができる。以下、波形−モデル変換部202が図19のHDL動作モデル215を生成する方法を説明する。
まず、波形−モデル変換部202は、図4(A)の端子情報214のファイルから抽出した情報を基に、図19のHDL動作モデル215内において、端子宣言部分1201を書き出す。
次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、reg宣言で変数clk_count、INDT_1_b1、INDT_2_b1及びADDRの宣言1902を書き出す。変数ADDRは、アドレスを示す。
次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、メモリ情報を有するROMAAのインスタンス情報1903を書き出す。アドレスADDRESSは、変数ADDRで表される。データOUTDATAは、出力端子ODTの信号値と、出力端子CARRYの信号値で表される。
次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、定型文の「initial」文1203を書き出す。次に、波形−モデル変換部202は、端子情報214のファイルから抽出した情報を基に、図19のHDL動作モデル215内において、出力端子CARRY,ODT及び変数clk_countの初期化情報1204を書き出す。
次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、定型文のリセット解除文1205を書き出す。次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、定型文のforever文1206を書き出す。次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、変数clk_countのカウントアップ宣言1207を書き出す。
次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、入力端子INDT_1及びINDT_2の現サイクルの信号値に応じた変数ADDRの情報1908を書き出す。次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、入力端子INDT_1及びINDT_2の現サイクルの信号値及び過去おサイクルの信号値INDT_1_b1及びINDT_2_b1に応じた変数ADDRの情報1909を書き出す。
次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、その他の場合の出力端子CARRY及びODTの信号値、及びクロック宣言1210を書き出す。次に、波形−モデル変換部202は、図19のHDL動作モデル215において、バックトレース信号値INDT_1_b1及びINDT_2_b1を作成するシフトレジスタ記述1211を書き出す。次に、波形−モデル変換部202は、図19のHDL動作モデル215内において、定型文のHDL動作モデル215の終了を表す情報1212を書き出す。
以上で、HDL動作モデル215が完成する。ROMは、アドレス及びデータのサイズによって回路規模が決まるため、論理合成を実施する前にどの程度のFPGA内部リソースが必要になるかが判断できる利点がある。
HDL動作モデル215は、アドレスADDRESSとデータOUTDATAで表現されるメモリの動作モデルである。アドレスADDRESSは、入力端子の現サイクルの信号値及び過去のサイクルの信号値に基づくアドレスである。データDATAは、出力端子の信号値に基づくデータである。なお、波形−モデル変換部202は、上記のメモリの動作モデルを、FPGA用RTL動作モデル217として生成することもできる。
(第7の実施形態)
図1(B)において、ステップS116では、情報処理装置100は、FPGA用RTL動作モデル217を生成する。この際、情報処理装置100は、波形情報213に基づき、FPGA用RTL動作モデル217を生成している。そのため、FPGA用RTL動作モデル217は、波形情報213とは異なる入力信号パタンが入力されると、所望の出力信号を出力することができない場合がある。
図1(B)において、ステップS116では、情報処理装置100は、FPGA用RTL動作モデル217を生成する。この際、情報処理装置100は、波形情報213に基づき、FPGA用RTL動作モデル217を生成している。そのため、FPGA用RTL動作モデル217は、波形情報213とは異なる入力信号パタンが入力されると、所望の出力信号を出力することができない場合がある。
第7の実施形態では、FPGA用RTL動作モデル217の完成後、別の検証パタンが必要になった場合には、現在の波形情報213に対して新たな検証パタンを追加し、情報処理装置100は、更新された波形情報213を基に、FPGA用RTL動作モデル217を生成する。これにより、FPGA用RTL動作モデル217は、新たな検証パタンの入力に対して、適切な出力信号を出力することができる。そして、実際の論理回路により近いFPGA用RTL動作モデル217を生成することができる。以下、本実施形態が第1〜第6の実施形態と異なる点を説明する。
図20は、第7の実施形態による情報処理装置100の情報処理方法を示すフローチャートである。図20は、図1(B)に対して、ステップS2001及びS2002を追加したものである。ステップS116の後、ステップS2001では、図2の論理検証ツール201は、新たな入力信号波形をFPGA用RTL動作モデル217に入力し、FPGA用RTL動作モデル217の出力信号波形情報を取得する。
次に、ステップS2002では、ユーザは、その出力信号が意図したものになっているか否かを判定する。意図したものになっている場合には、ステップS117において、ユーザは、FPGA用RTL動作モデル217に基づく論理回路情報をFPGAに書き込む。
これに対し、意図したものになっていない場合には、ユーザは、波形情報213に対して上記の新たな入力信号に対する入出力波形情報を追加する。または、図2の論理検証ツール201は、検証パタン212及び新た入力信号波形を用いて、ASIC用RTL動作モデル211を基に、波形情報213を更新してもよい。その後、ステップS114に戻る。ステップS114では、波形−モデル変換部202は、更新された波形情報213及び端子情報214を基に、HDL動作モデル215を生成する。
次に、ステップS115では、論理検証ツール201は、検証パタン212及び新たな入力信号波形を用いてHDL動作モデル215の検証を実施し、生成される波形情報が意図した波形情報と一致していることを確認する。
次に、ステップS116では、SystemC動作モデル生成部203は、HDL動作モデル215に基づき、SystemC動作モデル216を生成する。次に、高位合成ツール204は、SystemC動作モデル216に基づき、FPGA用RTL動作モデル217を生成する。ユーザは、生成されたFPGA用RTL動作モデル217を検証し、FPGA用RTL動作モデル217に基づく論理回路情報をFPGAに書き込む。
本実施形態によれば、情報処理装置100は、FPGA用RTL動作モデル217の完成後、別の検証パタンが必要になった場合、現在の波形情報213に対して新たな検証パタンを追加し、FPGA用RTL動作モデル217を更新することができる。これにより、実際の論理回路により近いFPGA用RTL動作モデル217を生成することができる。
第1〜第7の実施形態によれば、情報処理装置100は、ASIC用RTL動作モデル211に基づき、FPGA用RTL動作モデル217を生成することができるので、論理回路の動作モデルの設計期間を短縮することができる。また、FPGA用RTL動作モデル217のマニュアル作業による再設計作業が不要となることで、評価したい時期に評価したい項目に合わせたFPGA用RTL動作モデル217の生成が可能となり、設計期間を短縮することができる。また、FPGA用RTL動作モデル217は、評価項目に沿った機能的には等価な回路を実現できるため、ハードウェア設計とソフトウェア検証の協調設計に適用することが可能となる。なお、FPGA用RTL動作モデル217を生成する場合を例に説明したが、他の動作モデルを生成してもよい。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
201 論理検証ツール
202 波形−モデル変換部
203 SystemC動作モデル生成部
204 高位合成ツール
211 ASIC用RTL動作モデル
212 検証パタン
213 波形情報
214 端子情報
215 HDL動作モデル
216 SystemC動作モデル
217 FPGA用RTL動作モデル
202 波形−モデル変換部
203 SystemC動作モデル生成部
204 高位合成ツール
211 ASIC用RTL動作モデル
212 検証パタン
213 波形情報
214 端子情報
215 HDL動作モデル
216 SystemC動作モデル
217 FPGA用RTL動作モデル
Claims (15)
- 論理回路の入力端子の信号値及び出力端子の信号値を示す情報に基づき、前記論理回路の動作モデルを生成する第1のモデル生成部を有することを特徴とする情報処理装置。
- 前記第1のモデル生成部は、ハードウェア記述言語動作モデルを生成することを特徴とする請求項1に記載の情報処理装置。
- さらに、前記ハードウェア記述言語動作モデルに基づき、SystemC動作モデルを生成する第2のモデル生成部を有することを特徴とする請求項2に記載の情報処理装置。
- さらに、前記SystemCモデルに基づき、第1のレジスタ転送レベル動作モデルを生成する第3のモデル生成部を有することを特徴とする請求項3に記載の情報処理装置。
- 前記第1のモデル生成部は、第1のレジスタ転送レベル動作モデルを生成することを特徴とする請求項1に記載の情報処理装置。
- さらに、第2のレジスタ転送レベル動作モデル及び検証パタンを基に、前記論理回路の入力信号値及び出力信号値を示す情報を含む波形情報を生成する波形情報生成部を有し、
前記第1のモデル生成部は、前記波形情報に基づき、前記論理回路の動作モデルを生成することを特徴とする請求項4又は5に記載の情報処理装置。 - 前記第1のレジスタ転送レベル動作モデルは、FPGA用レジスタ転送レベル動作モデルであり、
前記第2のレジスタ転送レベル動作モデルは、ASIC用レジスタ転送レベル動作モデルであることを特徴とする請求項6に記載の情報処理装置。 - 前記論理回路の動作モデルは、クロック端子の信号のサイクル番号に応じた出力端子の信号値の動作記述を有することを特徴とする請求項1〜7のいずれか1項に記載の情報処理装置。
- 前記論理回路の動作モデルは、入力端子の信号値に応じた出力端子の信号値の動作記述を有することを特徴とする請求項1〜7のいずれか1項に記載の情報処理装置。
- 前記論理回路の動作モデルは、入力端子の現サイクルの信号値及び過去のサイクルの信号値に応じた出力端子の信号値の動作記述を有することを特徴とする請求項1〜7のいずれか1項に記載の情報処理装置。
- 前記論理回路の動作モデルは、アドレスとデータで表現されるメモリの動作モデルであって、前記アドレスは、入力端子の信号値に基づくアドレスであり、前記データは、出力端子の信号値に基づくデータであることを特徴とする請求項1〜7のいずれか1項に記載の情報処理装置。
- 前記論理回路の動作モデルは、アドレスとデータで表現されるメモリの動作モデルであって、前記アドレスは、クロック端子の信号のサイクル番号及び入力端子の信号値に基づくアドレスであり、前記データは、出力端子の信号値に基づくデータであることを特徴とする請求項1〜7のいずれか1項に記載の情報処理装置。
- 前記論理回路の動作モデルは、アドレスとデータで表現されるメモリの動作モデルであって、前記アドレスは、入力端子の現サイクルの信号値及び過去のサイクルの信号値に基づくアドレスであり、前記データは、出力端子の信号値に基づくデータであることを特徴とする請求項1〜7のいずれか1項に記載の情報処理装置。
- 第1のモデル生成部が、論理回路の入力端子の信号値及び出力端子の信号値を示す情報に基づき、前記論理回路の動作モデルを生成することを特徴とする情報処理方法。
- 論理回路の入力端子の信号値及び出力端子の信号値を示す情報に基づき、前記論理回路の動作モデルを生成する、
処理をコンピュータに実行させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017217358A JP2019087206A (ja) | 2017-11-10 | 2017-11-10 | 情報処理装置、情報処理方法及びプログラム |
US16/182,653 US20190147124A1 (en) | 2017-11-10 | 2018-11-07 | Operation model generator and operation model generation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017217358A JP2019087206A (ja) | 2017-11-10 | 2017-11-10 | 情報処理装置、情報処理方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019087206A true JP2019087206A (ja) | 2019-06-06 |
Family
ID=66433380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017217358A Pending JP2019087206A (ja) | 2017-11-10 | 2017-11-10 | 情報処理装置、情報処理方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190147124A1 (ja) |
JP (1) | JP2019087206A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI712904B (zh) * | 2018-10-18 | 2020-12-11 | 華邦電子股份有限公司 | 電子裝置及積體電路的佈局方法 |
CN112835648B (zh) * | 2021-02-25 | 2022-03-25 | 中国科学院西安光学精密机械研究所 | 一种基于fpga的芯片内部寄存器高可靠配置方法 |
-
2017
- 2017-11-10 JP JP2017217358A patent/JP2019087206A/ja active Pending
-
2018
- 2018-11-07 US US16/182,653 patent/US20190147124A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20190147124A1 (en) | 2019-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4994393B2 (ja) | 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法 | |
Churiwala et al. | Designing with Xilinx® FPGAs | |
US12001317B2 (en) | Waveform based reconstruction for emulation | |
CN112949233B (zh) | Fpga芯片的自动化开发方法及装置、电子设备 | |
US9026966B1 (en) | Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators | |
CN112560401B (zh) | Verilog文件转换方法、装置、存储介质及设备 | |
US9298865B1 (en) | Debugging an optimized design implemented in a device with a pre-optimized design simulation | |
US10586003B1 (en) | Circuit design using high level synthesis and linked hardware description language libraries | |
CN114462338A (zh) | 一种集成电路的验证方法、装置、计算机设备及存储介质 | |
TWI768536B (zh) | 積體電路模擬及設計方法與系統 | |
US6067652A (en) | Tester-compatible timing translation system and method using time-set partnering | |
CN114662427A (zh) | 一种逻辑系统设计的调试方法及设备 | |
JP2005525660A (ja) | トランザクションレベルモデルにおける改善された性能分析のための方法及び機構 | |
JP2008186252A (ja) | テストベンチ生成機能を有する動作合成装置と方法及びプログラム | |
JP2014085926A (ja) | データベース分析装置及びデータベース分析方法 | |
JP2019087206A (ja) | 情報処理装置、情報処理方法及びプログラム | |
US8504347B2 (en) | Simulation apparatus, simulation method, and program to perform simulation on design data of a target circuit | |
CN112733478B (zh) | 用于对设计进行形式验证的装置 | |
US9697314B1 (en) | Identifying and using slices in an integrated circuit (IC) design | |
US9652573B1 (en) | Creating and using a wide-gate data structure to represent a wide-gate in an integrated circuit (IC) design | |
US10157253B2 (en) | Multi-bit-mapping aware clock gating | |
US10949588B1 (en) | High speed, low hardware footprint waveform | |
Huggi et al. | Design and verification of memory elements using python | |
CN113760751B (zh) | 生成测试用例的方法、电子设备及存储介质 | |
US9690890B1 (en) | Creating and using a wide-bus data structure to represent a wide-bus in an integrated circuit (IC) design |