JP4400358B2 - 論理シミュレーション方法、論理シミュレーション装置、論理シミュレーション用プログラム - Google Patents
論理シミュレーション方法、論理シミュレーション装置、論理シミュレーション用プログラム Download PDFInfo
- Publication number
- JP4400358B2 JP4400358B2 JP2004218930A JP2004218930A JP4400358B2 JP 4400358 B2 JP4400358 B2 JP 4400358B2 JP 2004218930 A JP2004218930 A JP 2004218930A JP 2004218930 A JP2004218930 A JP 2004218930A JP 4400358 B2 JP4400358 B2 JP 4400358B2
- Authority
- JP
- Japan
- Prior art keywords
- instance
- simulator
- logic
- file
- simulation
- 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.)
- Expired - Fee Related
Links
Images
Description
その技術として、シミュレーションを途中で停止させ、その時点での論理回路内部の状態値を観測する手法がある。即ち、Verilog(登録商標)シミュレータによれば、出力結果を見ることができるだけでなく、論理シミュレータの入力情報の一つであるネットリスト中のインスタンス名を特定すれば、任意の時刻における論理回路内部の状態値を観測することもできる。このような論理シミュレータの機能を活用すれば、論理回路の内部状態を観測することができる。
この手法では、ネットリスト中のインスタンス名を特定する必要があるため、観測すべき内部回路に対応するインスタンス名を事前に調べてておく必要がある。一般にはエディタや専用ツールを用いてネットリスト中のインスタンス名を調べている。
即ち、本発明に係る論理シミュレーション方法は、インスタンス名を抽出するためのステートメントが予め記述されたセルライブラリを用いて所定のシミュレータによるシミュレーションを実行することにより、該シミュレータに入力されたネットリストから該ネットリストで使用されているインスタンス名を抽出する第1ステップと、前記ネットリストから抽出されたインスタンス名を用いて、該インスタンス名で特定されるインスタンスの状態値を観測するためのステートメントが記述されたファイルを生成する第2ステップと、前記ファイルを前記シミュレータ上で実行し、その実行結果として得られる前記インスタンスの状態を出力する第3ステップと、を含む。
また、上記シミュレーション方法において、前記第2ステップでは、前記シミュレータがサポートする所定の関数に、第1ステップで抽出されたインスタンス名を組み込むことにより前記ファイルを生成することを特徴とする。
また、上記シミュレーション方法において、前記第3のステップでは、前記実行結果として、前記インスタンスの状態が不定か否かを表す情報を出力することを特徴とする。
先ず、図1ないし図12を参照しながら、Verilog(登録商標)シミュレータ(以下、「論理シミュレータ」と称す)を例として、論理シミュレーションの概要と、論理シミュレーションを実行するに先だってユーザが予め準備すべきネットリスト等の入力情報についてを説明する。なお、本実施形態に係る論理シミュレーション方法は、論理シミュレータ自体に特徴を有するものではなく、その利用形態に特徴を有している。従って、論理シミュレータとしてはVerilog(登録商標)シミュレータに限定されない。
ここで、ネットリストは、各種のゲート回路や内部レジスタ等の要素回路に対応するライブラリセルの接続情報である。このライブラリセルを用いてインスタンスを構成し、複数のインスタンスを用いて一つのインスタンスを定義することもできるため、一般にネットリストはインスタンスによって階層化されている。
このように、回路機能に基づきインスタンスを階層化することにより、ネットリストもインスタンスによって階層化されたものとなっている。以上で、ネットリストの階層化の概念を説明した。
本実施形態では、モジュール310,320,330,340のモジュール名を、それぞれ、「MOD_A」,「MOD_B_0」,「MOD_B_1」,「MOD_C」とする。また、以下において、モジュール名に着目して説明する場合には、モジュール名「MOD_A」を有するモジュール310を「モジュールMOD_A」と表現し直す。即ち、「モジュール310」と「モジュールMOD_A」は互いに同じ意味である。他のモジュールについても同様の表記法を用いる。
なお、図3では、説明の便宜上、小規模な論理回路を例としているが、本発明は、大規模な論理回路に適用した場合に顕著な効果が得られる。
図6ないし図8に、モジュールMOD_B0(図3に示すモジュール320)、モジュールMOD_B1(図3に示すモジュール330)、モジュールMOD_C(図3に示すモジュール340)のネットリストをそれぞれ示す。これらネットリストの内容も基本的には同様である。
ここで、図9に示すセルライブラリの第9行目から第13行目には、本発明の特徴部である、ネットリストからインスタンス名を抽出するためのステートメントが追加記述されている。この例では、出力「Q」を有する内部レジスタのインスタンス名を抽出するためのステートメントが記述されている。以下では、この追加記述されたステートメントを「インスタンス抽出用ステートメント」と称す。
図10(a)に、内部レジスタのインスタンス名を抽出するためのインスタンス抽出用ステートメントの一例を示す。この例において、先頭行の「`ifdef REG_LIST」は、後述するシミュレータのコマンドラインにオプションとして記述される引数「REG_LIST」を規定し、コマンドライン内に引数「REG_LIST」が存在すると、第2行目以下に記述されるステートメントがシミュレータに実行されてインスタンス名が抽出されるようになっている。即ち、コマンドラインに引数「REG_LIST」を記述するか否かにより、レジスタのインスタンス名を抽出する処理を実行するか否かを任意に切り替えることができる。
図10に示すインスタンス抽出用ステートメントは、ユーザが観測を希望するインスタンス、即ち抽出すべきインスタンスに対応する全てのセルライブラリに記述される。
なお、本実施形態では、レジスタおよびメモリの各インスタンス抽出用ステートメントを例として説明したが、これに限定されることなく、抽出すべきインスタンスの種類に応じてインスタンス抽出用ステートメントを適宜準備し、該当するインスタンスのセルライブラリに追加記述すればよい。
以上で、ネットリスト、セルライブラリ、テストパターンについて説明した。
このファイルポインタの第14行目には、ユーザデータである上述のネットリストとセルライブラリとテストパターンとを変数「EXEname」に格納するためのステートメント「$*」が記述されている。これにより、最終的に、変数「EXEname」には、シミュレータコマンド「Verilog」(=変数「YEXEC」)と、内部観測用のコマンドオプション「+define+REG_LIST+MEM_LIST」およびファイルポインタ「LIST_MODULE.v」と、ネットリスト等のユーザデータとが格納され、インスタンス名を抽出する処理に必要な全ての引数を含むコマンドラインが変数「EXEname」の中に存在することになる。
さらに、第16行目から第21行目には、第15行目のステートメントによるシミュレーションの実行結果として得られるリストを加工処理して内部状態観測用のプログラムファイルを生成するためのコマンドに関するステートメントが記述されている。このコマンドを実行することにより、ファイル「X_FIND.list」に格納されたレジスタおよびメモリの各インスタンス名のリストが、インスタンスの状態値を出力するための関数(task)に組み込まれて、内部状態観測用プログラムファイルとして生成される。
なお、第23行目のステートメントは、引数「state_observe」がない場合の処理を表し、この場合、上記第8行目から第21行目に記述されたインスタンス名を抽出するための処理は実行されず、シミュレーション本体の実行コマンド「Verilog」のみが実行される。
図13に、本論理シミュレーション方法の概要を示す。本論理シミュレーション方法によれば、ネットリスト、テストパターン、およびセルライブラリを入力情報として用いると共にファイル指定リストを参照して第1回目の論理シミュレーションが実行される。これによりレジスタおよびメモリの各インスタンス名を抽出し、レジスタリストおよびメモリリストとして出力する。そして、これらレジスタリストとメモリリストを用いて第2回目の論理シミュレーションが実行され、論理回路を構成するレジスタの状態値のリストと、メモリの状態値のリストとが生成される。これら各状態値のリストから、ユーザが回路の内部状態を把握することが可能になる。この一連の論理シミュレーションは、上述の図11に示す実行プログラムの制御の下に実行される。
前述した実行プログラムが実行されると、論理シミュレータは、実行プログラムから各種の情報を引数として受け取って第1回目の論理シミュレーションを実行し、この論理シミュレーションにおいて、ネットリストからインスタンス名を抽出するための処理を行う(ステップS1)。このとき、論理シミュレータは、インスタンス名を抽出するためのステートメントが予め記述された図9に例示するセルライブラリを参照して論理シミュレーションを実行する。
このコマンドラインにおいて、「yamaha_verilog」は上述の図11に示す実行プログラムのプログラム名を表し、「reg_dp.task」、「mem_dp.task」、及び「mem_dp_all.list」は上述のステップS2で生成された内部状態観測用プログラムファイル名を表す。また、このコマンドラインでは、上述の図11に示す実行プログラムで用いられている引数「state_observe」が削除されている。従って、第2回目の論理シミュレーションでは、内部観測用プログラムファイルを生成するための処理(インスタンス名の抽出処理とリストの加工処理)は省かれる。それ以外の引数については、上述の3つの内部状態観測用プログラムのファイル名が追加されたことを除いて第1回目の実行コマンドでの引数と基本的に同じである。
なお、コマンド「reg_displsay.reg_all」および「mem_display.mem_all」は、互いに独立したコマンドであり、連続して実行させる必要はなく、またその実行順序も任意である。任意の時刻でシミュレーションを中断させ、観測対象に応じたコマンドを入力して実行すればよい。
なお、論理シミュレータは、インタラクティブにオペレーション可能な機能を備えており、ユーザがシミュレーションを中断してコマンドを任意に発行することが可能となっているため、上述の「$stop」文に代えて、ユーザがキー入力することによりシミュレーションを任意に中断させるようにしてもよい。
セルライブラリにインスタンス抽出用ステートメントを組み込むことにより、論理シミュレータに入力されるネットリスト中の全てのレジスタやメモリのインスタンス名を自動的にリストアップする。そのリストを基に内部状態観測用の関数(例えばVerilog-HDLのtask)を生成する。ネットリストからインスタンス名をリストアップし、そのリストを内部状態観測用の関数に組み込むまでは、実行プログラムにより自動的に行われる。内部状態観測用の関数を実行することにより、シミュレーション中の任意の時刻における全レジスタまたはメモリの状態値を観測する。
(1)セルライブラリにインスタンス抽出用ステートメントと追加すると共にシミュレーション結果のログを加工することにより、自動的に、レジスタやメモリのインスタンス名を取得し、その情報を基にレジスタやメモリの状態値を観測することができる。従って、人手作業によりインスタンス名を調べる必要がなくなり、論理回路の検証を短期間で行うことができる。
(2)メモリの全アドレスについて状態値を観測することもできる。メモリの全アドレスのうち、一部のアドレスの値が不定の場合、ログからそれらのアドレスを選び出すことにより、レジスタと同様に、メモリが初期化されているか否かを容易に検証することができる。
(4)Verilog-HDL記述によりテストパターン内で期待値を与えることにより、期待値と不一致のときにシミュレータを停止させることも可能である。そして、このときのレジスタやメモリの状態値を観測することにより、デバッグを効率的に行うことも可能になる。
(5)検証を容易に行うことができ、開発期間を短縮することが可能になる。
(6)Verilog(登録商標)-HDL等のハードウェア記述言語に関する知識がなくても、ネットリスト中のインスタンスの状態値を観測することができる。
Claims (6)
- インスタンス名を抽出するためのステートメントが予め記述されたセルライブラリを用いて所定のシミュレータによるシミュレーションを実行することにより、該シミュレータに入力されたネットリストから該ネットリストで使用されているインスタンス名を抽出する第1ステップと、
前記ネットリストから抽出されたインスタンス名を用いて、該インスタンス名で特定されるインスタンスの状態値を観測するためのステートメントが記述されたファイルを生成する第2ステップと、
前記ファイルを前記シミュレータ上で実行し、その実行結果として得られる前記インスタンスの状態を出力する第3ステップと、
を含む論理シミュレーション方法。 - 前記第1ステップでは、前記インスタンス名として、レジスタまたはメモリのインスタンス名を抽出することを特徴とする請求項1に記載された論理シミュレーション方法。
- 前記第2ステップでは、前記シミュレータがサポートする所定の関数に、第1ステップで抽出されたインスタンス名を組み込むことにより前記ファイルを生成することを特徴とする請求項1または2の何れか1項に記載された論理シミュレーション方法。
- 前記第3のステップでは、前記実行結果として、前記インスタンスの状態が不定か否かを表す情報を出力することを特徴とする請求項1ないし3の何れか1項に記載された論理シミュレーション方法。
- インスタンス名を抽出するためのステートメントが予め記述されたセルライブラリを用いて所定のシミュレータによるシミュレーションを実行することにより、該シミュレータに入力されたネットリストから該ネットリストで使用されているインスタンス名を抽出する第1処理部と、
前記ネットリストから抽出されたインスタンス名を用いて、該インスタンス名で特定されるインスタンスの状態値を観測するためのステートメントが記述されたファイルを生成する第2処理部と、
前記ファイルを前記シミュレータ上で実行し、その実行結果として得られる前記インスタンスの状態を出力する第3処理部と、
を具備する論理シミュレーション装置。 - インスタンス名を抽出するためのステートメントが予め記述されたセルライブラリを用いて所定のシミュレータによるシミュレーションを実行することにより、該シミュレータに入力されたネットリストから該ネットリストで使用されているインスタンス名を抽出する第1ステップと、
前記ネットリストから抽出されたインスタンス名を用いて、該インスタンス名で特定されるインスタンスの状態値を観測するためのステートメントが記述されたファイルを生成する第2ステップと、
前記ファイルを前記シミュレータ上で実行し、その実行結果として得られる前記インスタンスの状態を出力する第3ステップと、
を実行させるための論理シミュレーション用プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004218930A JP4400358B2 (ja) | 2004-07-27 | 2004-07-27 | 論理シミュレーション方法、論理シミュレーション装置、論理シミュレーション用プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004218930A JP4400358B2 (ja) | 2004-07-27 | 2004-07-27 | 論理シミュレーション方法、論理シミュレーション装置、論理シミュレーション用プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006039950A JP2006039950A (ja) | 2006-02-09 |
JP4400358B2 true JP4400358B2 (ja) | 2010-01-20 |
Family
ID=35904885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004218930A Expired - Fee Related JP4400358B2 (ja) | 2004-07-27 | 2004-07-27 | 論理シミュレーション方法、論理シミュレーション装置、論理シミュレーション用プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4400358B2 (ja) |
-
2004
- 2004-07-27 JP JP2004218930A patent/JP4400358B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006039950A (ja) | 2006-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | A scalable software-based self-test methodology for programmable processors | |
US6061283A (en) | Semiconductor integrated circuit evaluation system | |
US8392859B2 (en) | Method and system for debugging using replicated logic and trigger logic | |
Graham et al. | Instrumenting bitstreams for debugging FPGA circuits | |
US7478346B2 (en) | Debugging system for gate level IC designs | |
US7962869B2 (en) | Method and system for debug and test using replicated logic | |
US6754862B1 (en) | Gaining access to internal nodes in a PLD | |
CN112949233B (zh) | Fpga芯片的自动化开发方法及装置、电子设备 | |
EP1913410B1 (en) | Method and system for debug and test using replicated logic | |
JP2009230451A (ja) | 等価性検証方法、等価性検証プログラム及び等価性検証プログラムの生成方法 | |
JP2006323706A (ja) | 半導体試験用プログラムデバッグ装置 | |
WO2019056935A1 (zh) | 基于ft4222的spi闪存测试系统及方法 | |
JP4213306B2 (ja) | 半導体試験用プログラムデバッグ装置 | |
WO2009022276A2 (en) | Software-based verification of system-on-chip direct interconnect through additional registers | |
JP4400358B2 (ja) | 論理シミュレーション方法、論理シミュレーション装置、論理シミュレーション用プログラム | |
US7703054B2 (en) | Circuit emulation and debugging method | |
JP2004145670A (ja) | テストベンチ生成方法、テストベンチ生成装置、及びコンピュータプログラム | |
Ivannikov | Comparative analysis of methods for digital system debugging at the design stage | |
Komichi | Design Article S. Komichi | |
Narnur | Model Development, Synthesis and Validation Using the Modeler's Assistant | |
JPH0319085A (ja) | 論理設計支援装置 | |
UUT | 11. FUNCTIONAL MODELS AND TESTBENCHES | |
Dushina et al. | Semi-formal test generation for a block of industrial DSP | |
Wouters et al. | A versatile, multipurpose, high-speed digital data acquisition and generation systemPULSAR' | |
Trung et al. | Soft core based model of a microcomputer family |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070531 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091002 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20091006 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091019 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121106 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |