JP2006268606A - シミュレーション装置 - Google Patents

シミュレーション装置 Download PDF

Info

Publication number
JP2006268606A
JP2006268606A JP2005087622A JP2005087622A JP2006268606A JP 2006268606 A JP2006268606 A JP 2006268606A JP 2005087622 A JP2005087622 A JP 2005087622A JP 2005087622 A JP2005087622 A JP 2005087622A JP 2006268606 A JP2006268606 A JP 2006268606A
Authority
JP
Japan
Prior art keywords
circuit
data
information
verification
instruction
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.)
Granted
Application number
JP2005087622A
Other languages
English (en)
Other versions
JP4631493B2 (ja
Inventor
Toshikatsu Nakajima
敏勝 中嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2005087622A priority Critical patent/JP4631493B2/ja
Publication of JP2006268606A publication Critical patent/JP2006268606A/ja
Application granted granted Critical
Publication of JP4631493B2 publication Critical patent/JP4631493B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】HDLで記述された検証対象回路のソフトウェアレベルでの検証処理時間を短縮することができるシミュレーション装置を提供する。
【解決手段】所定の回路を表すHDL等による記述情報を用いてシミュレーションを行う装置であって、検証対象の回路を表す情報311と、この情報311によって表される検証対象の回路に対して接続され、検証対象回路との間で、自回路内で自動的に生成した検証用情報の入力又は出力を行うテストベクタ回路を表す情報312とを一体として記述情報31を構成する。
【選択図】図1

Description

この発明は、ハードウェア記述言語等の所定の言語で記述された回路記述情報を用いて回路をシミュレーションする際に用いて好適なシミュレーション装置に関する。
従来、LSI(Large Scale Integrated Circuit)の論理検証は、EWS(Engineering Workstation)上で動作するソフトウエアシミュレータによる検証が主流である。シミュレーションの際にLSIなどのハードウェアを記述する言語としては、HDL(Hardware Description Language)などが用いられている。HDLによるLSIの設計手順では、一般に、HDLで設計しようとするLSIをRTL(Register Transfer Level)で記述している。RTLは、回路を、レジスタと組み合わせ論理回路とから構成するレベルのことであり、このレベルでの記述によってLSI内のレジスタ間の動作が定義される。RTLで記述したLSI記述に対してはHDLシミュレータによって論理的な動作が検証される。検証が終了すると、次に論理合成を行って(すなわち論理回路によって記述可能なレベルに展開することで)、HDLによる記述から論理回路を生成する。その後、各回路モジュールのレイアウトを行い、最後にASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等として実装が行われる。
HDLで記述された回路情報の検証をHDLシミュレータ(シミュレーションプログラム)によって行う際には、テストパターンやテストベンチを予め用意する必要がある。テストパターンは、検証用の入力信号パターンである。テストベンチは、周辺回路の動作等を模擬するための検証用プログラムである。この検証用プログラムがHDLシミュレータによって実行されることで、テスト用信号の入出力が実行されたり、出力結果の比較検証が行われたりする。
図11は、この発明の背景となるシミュレーション装置の構成を示すブロック図である。シミュレーションプログラム1は、EWS等のコンピュータ上で実行され、データベース2にアクセスしながら検証対象の回路の動作をシミュレート(検証)する。データベース2にはファイル21とファイル22が格納されている。ファイル21は、検証対象の回路をHDLによって記述したデータから構成されている。ファイル22は、テストベンチを記述した複数のファイルから構成されている。ファイル22を構成するファイルの一例を図12〜図14に示した。
図12は、テストベンチのメインルーチンとなるプログラムを記述したファイル221を示している。ファイル221において、10行目にある「initial begin」と47行目にある「end」がC言語の関数の「( )」と同じ意味を有している。また、25行目等にある「t_write」は、検証対象がCPU(Central Processing Unit)等のデジタル信号処理装置である場合に、CPUインターフェースへのデータ書き込みを模擬する関数である。32行目等にある「t_read」は、CPUインターフェースからのデータリードを模擬する関数である。そして、46行目の「$finish」が、シミュレーション終了を指示する命令である。
図13は、図12の25行目等にある関数「t_write」の内容を記述したサブルーチンのファイル222であり、図14は、図12の32行目等にある関数「t_read」の内容を記述したサブルーチンのファイル223である。例えば、図13において、11行目の「input [13:0] address;」は、関数「t_write」の1番目の引数が14ビット([13:0])のアドレス信号(address)であることを示している。また、17行目〜19行目は、チップセレクト信号(CS_N)に1ビットの「0」を出力し、アドレスバスAにアドレス(address)の値を出力し、データバス(out_data)にデータ(write_data)を出力するという記述である。
図11のシミュレーションプログラム1は、図12〜図14のように記述されたテストベンチ22における各ステップを逐次実行する。テストベンチ22を実行すると、検証対象の回路に対して所定の入力が与えられ、検証対象の出力を見て次の入力が選択され、さらに検証対象の出力を見て所定のデータが所定のファイルに格納されるといった処理が行われる。そして、検証対象の出力を見たり、所定の設定に従って、シミュレーションが終了される。その際、入力の付与や選択、出力のファイルへの格納は、繰り返し実行される。
従来のHDLによるシミュレーション装置では、テストベンチの実行の際に、実行メモリ容量の制限等のため、検証処理の途中で、所定のファイルからデータの読み込みこんだり、出力データを所定のファイルへ書き込みんだりする処理が、複数回発生する場合があった。このようなファイルの読み書きには一定の時間を必要とするため、検証処理時間が比較的長くなるという場合があった。
例えば特許文献1には、そのような課題の解決を図った装置の一例が記載されている。特許文献1に記載されている装置では、テストベンチを論理合成可能なデータに変換して、それをプログラマブルデバイスにマッピングすることで、テストベンチによるソフトウェア処理をハードウェア化できるようにしている。
なお、HDLによる回路の検証方法については、特許文献2〜特許文献5にテストベクタの作成手法等の技術が記載されている。
特許第3162316号公報 特許第2809631号公報 特開2002−49655号公報 特開2001−318959号公報 特開2001−14365号公報
特許文献1に記載されている装置では、HDLによるシミュレーションで検証された検証対象回路を実機に実装した後の検査等の処理の効率化を図ったものである。そのため、ソフトウェアによるテストベンチを用いた検証処理については対策が図られていなかった。つまり、テストベンチを用いた検証処理においては、ファイルへのアクセス等によって処理時間が長くなるという問題が残されていた。
この発明は、このような事情に鑑み、HDLで記述された検証対象回路のソフトウェアレベルでの検証処理時間を短縮することができるシミュレーション装置を提供することを課題とする。
上記の課題を解決するために請求項1記載の発明は、所定の回路を表す記述情報を用いてシミュレーションを行う装置であって、検証対象の回路を表す検証対象回路情報と、検証対象回路情報によって表される検証対象の回路に対して接続され、検証対象回路との間で、自回路内で自動的に生成した検証用情報の入力又は出力を行う回路を表す検証情報生成回路情報とを一体として前記記述情報を構成したことを特徴とする。
また、請求項2記載の発明は、所定の回路を表す記述情報を用いてシミュレーションを行う装置であって、クロック信号を発生するクロック発生回路を表す第1の要素と、前記クロック信号に応じて作動するように記述された検証対象の回路を表す第2の要素と、第2の要素によって表された検証対象の回路に対するデータ入出力命令やその際用いられるデータを複数組記憶した記憶回路を表す第3の要素と、第3の要素によって表された記憶回路から命令やデータを順次読み込み、その命令に基づいて、第2の要素によって表された検証対象の回路に対するデータ入力指示やデータ出力指示を、前記クロック信号に同期して発行する信号処理回路を表す第4の要素とから前記記述情報が構成されていることを特徴とする。
また、請求項3記載の発明は、前記第4の要素によって表された信号処理回路が、前記第3の要素によって表された記憶回路に記憶されている命令に基づいて、データ出力状態、データ入力状態、待機状態、及び停止状態の4つの作動態様を取るものであることを特徴とする。
また、請求項4記載の発明は、前記各要素が論理合成可能なものとして構成されていることを特徴とする。
請求項1記載の発明によれば、検証対象の回路と、検証情報生成回路情報とを一体として記述情報が構成されていて、かつ検証用情報が検証情報生成回路内で自動的に生成されるようになっている。そのため、その記述情報を用いて検証処理を行う場合には、検証用入力情報等、外部から入力する情報の量を少なくすることができる。したがって、テストベンチ等のプログラムの容量を小さくすることができ、検証処理時間を容易に短縮することができる。
また、請求項2又は5に記載の発明によれば、検証対象の回路に対するデータ入力指示やデータ出力指示が、クロック信号に同期して動作する信号処理回路によって発行されるので、記述情報を用いて検証処理を行う際に、検証用入力情報等、外部から入力する情報の量を少なくすることができる。したがって、テストベンチ等のプログラムの容量を小さくすることができ、検証処理時間を容易に短縮することができる。また、記憶回路内に記憶する情報によって信号処理回路の動作が設定されるので、記憶回路の記憶内容(記憶データ)を変更するだけで検証用情報の内容を容易に変更することができる。
また、請求項3記載の発明によれば、信号処理回路が、データ出力状態、データ入力状態、待機状態、及び停止状態の4つの状態で動作するので、構成を単純化することが容易であり、また、例えば、待機状態の時間を調節することで検証処理のタイミング調整が容易であったり、停止状態を設けることによって検証処理の終了を容易に把握することができたりする。
また、請求項4記載の発明によれば、各要素が論理合成可能なレベルで記述されているので、FPGA等のマッピングデータを容易に生成することができる。
以下、図面を用いてこの発明の実施形態を説明する。
図1は、この発明の第1の実施形態にかかるシミュレーション装置の構成を示すブロック図である。同図に示すシミュレーション装置は、EWS等のコンピュータにおいて所定のOS(Operating System)で実行されるシミュレーションプログラム1と、シミュレーションプログラム1がアクセスするデータベース2とから構成されている。シミュレーションプログラム1は、HDLによって記述された回路のシミュレーションを行うプログラムであり、VHDL(Very High Speed Integrated Circuit HDL)、Verilog HDL等の種々の仕様で実用化されている。
データベース2内にはHDLによって記述された回路情報から構成されている回路情報ファイル31と、テストベンチの記述情報から構成されているテストベンチファイル32とが格納されている。回路情報ファイル31には、HDLでRTL(レジスタトランスファレベル)で記述されたものであって、検証対象の回路を表す検証対象回路情報311と、テストベクタ生成回路を表すテストベクタ生成回路情報312とが、所定の接続定義情報によって一体として接続された状態で含まれている。テストベクタ生成回路情報312によって表されるテストベクタ生成回路は、検証対象回路情報311によって表される検証対象の回路の所定の入出力端子に対して接続されている入出力端子を有していて、検証対象回路との間でテストベクタ生成回路内で自動的に生成した検証用情報の入力又は出力を行う機能を有している。この実施形態では、テストベクタ生成回路情報312によって表されるテストベクタ生成回路によって検証用の入力信号等のテストベクタが自動的に生成される。したがって、テストベンチファイル32の内容は、テストベクタ生成回路を起動する過程と、テストベクタ生成回路等の出力信号を見てシミュレーションを終了する過程とを実行するためのものが主要な過程(ステップ)となる。すなわち、検証対象回路に対するデータ入出力のための過程(ステップ)は基本的に必須の要素ではない。
なお、この明細書において、検証対象回路情報311によって表される検証対象の回路とは、LSI等の回路の本来の機能(例えば製品化する際に実装する機能)を実現する部分の回路を意味するものとする。
図2は、図1の回路情報ファイル31が表す回路(仮想回路)31Cを示すブロック図である。回路31Cは、検証対象回路情報311によって表される検証対象回路311Cと、テストベクタ生成回路情報312によって表されるテストベクタ生成回路312Cとから構成されている。この場合、検証対象回路311Cは、アドレスバス(A)、データバス(out_data)等からなるCPUインターフェースを持ち、CPUインターフェースを介した外部からの制御信号によって内部設定を行い、クロック信号(SYCK、DTCK等)に同期して動作するLSIであるとする。
テストベクタ生成回路312Cは、インストラクションメモリ3121、簡易CPU3122及びクロック発生回路3123から構成されている。インストラクションメモリ3121は、図11の従来のテストベンチ22で検証対象回路311CのCPUインターフェースへ与えられる値をROM(Read Only Memory)化して記憶するとともに、簡易CPU3122においてその値の入出力等の動作のために用いられるインストラクション(命令)を複数組記憶した記憶回路である。簡易CPU3122は、インストラクションメモリ3121から命令やデータ(以下、命令データとする。)を順次読み込み、内部にあるステートマシン等を制御し、クロック発生回路3123から供給されるクロック信号(CPUCLK)のタイミングに同期して、検証対象回路311Cに対するデータ入力指示やデータ出力指示を発行する。クロック発生回路3123は、シミュレーションプログラム1によって供給される所定のタイミング信号又は自回路内に記述されている発振回路と、分周回路等の回路から構成されていて、クロック信号(CPUCLK、SYCK、DTCK等)を発生する。図2では、検証対象回路311Cに対してクロック信号SYCK、DTCKが供給され、インストラクションメモリ3121及び簡易CPU3122へはクロック信号CPUCLKが供給されている。ただし、これらのクロック信号は少なくとも互いに同期していて、場合によって同一のクロック信号(例えばCPUCLK=SYCK)であってもよい。
また、検証対象回路311Cと簡易CPU3122へはリセット信号RST_Nが供給されるようになっている。このリセット信号RST_Nが「0」(Low)レベルになった場合、各回路は初期化される。図2に示す回路における他の各信号の機能は次の通りである。各信号の入出力方向は矢印の向きである。ただし、この図に示すデータバスやアドレスバスのバス幅(ビット数)や、チップセレクト等の制御信号については適宜変更可能であり、以下の例はこの実施の形態における一設計値である。
インストラクションメモリチップセレクト信号(instmem_csn_r)は、インストラクションメモリ3121のチップセレクト信号であり、インストラクションメモリ3121を選択する際に「0」レベルにセットされる。インストラクションメモリアドレス信号(instmem_adr_r)は、インストラクションメモリ3121のアドレス信号であり、ビット幅が10ビットの信号列であるとする。すなわち、インストラクションメモリ3121は1024ワードの記憶領域を有している。インストラクションメモリデータ信号(memd)は、インストラクションメモリ3121のデータ信号であり、ビット幅が35ビットの信号列である。
チップセレクト信号(CS_N)は検証対象回路311Cのチップセレクト信号である。アドレスバス(A)は検証対象回路311C及び簡易CPU3122間の14ビットのアドレス信号である。データバス(data_out)は検証対象回路311C及び簡易CPU3122間の16ビットのデータ信号である。ライトイネーブル信号(WRH_N/WRL_N)は、検証対象回路311Cに対してデータの書き込みを指示する信号である。2ビットの信号としているのは、例えば検証対象回路311Cのデータバス(data_out)を時分割して使用することでバス幅を2倍の32ビットとすることができるような使い方にも対応できるようにするためである。その場合には、各信号が上位・下位のどちらのデータを書き込んでいるかということを示すために用いられる。リードイネーブル信号(RD_N)は、検証対象回路311Cに対して検証対象回路311Cからのデータの読み出しを指示する信号である。出力データイネーブル信号(dtoen)は、簡易CPU3122が出力するデータが準備できたことを示す信号である。
ウエイト信号(WAIT_N)は、検証対象回路311Cが待機状態であることを示す信号であり、レディ信号(READY_N)は、検証対象回路311Cが準備のできた状態であることを示す信号である。シミュレーション終了信号(o_end)は、検証処理が終了したことをシミュレーションプログラム1に対して通知するためのフラグである。この実施の形態では、簡易CPU3122がインストラクションメモリ3121からシミュレーション終了命令を受け取ったときに「1」にセットされる。
次に、図3〜図6を参照して、図2の簡易CPU3122の仕様について説明する。図3は、簡易CPU3122の内部構成を説明するためのブロック図である。図4は、簡易CPU3122が実行可能な命令の種類の一覧を示す図である。図5は、インストラクションメモリ3121内のデータの1ワード内の各ビットの内訳を説明するための図である。そして、図6は、簡易CPU3122の動作の状態遷移図である。
図2の簡易CPU3122は、図3に示すように、ステートマシンST1と、複数のレジスタR1〜R3及びR10〜R20を有して構成されている。ステートマシンST1は、内部に図示していない複数のレジスタやカウンタ、比較回路等を有して構成されている。ステートマシンST1は、インストラクションメモリ3121から読み出された35ビットの命令データのうち、上位3ビットで表される命令(instruction)(memd[34:32])を入力し、図4に示す6種類の命令を実行するため、図6に示すような四角で囲って示す16の状態(ステップ)を取りながら動作する。
レジスタR1及びR2は、ウエイト信号(WAIT_N)及びレディ信号(READY_N)を入力するための各1ビットのレジスタである。レジスタR3は、データバス(data_out)を介して入力したデータを保持するための16ビットのレジスタである。
レジスタR10は、インストラクションメモリチップセレクト信号(instmem_csn_r)を出力するための1ビットのレジスタである。レジスタR11は、インストラクションメモリアドレス信号(instmem_adr_r)を出力するための10ビットのレジスタである。レジスタR12は、シミュレーション終了信号(o_end)を出力するための1ビットのレジスタである。レジスタR13は、32ビットのカウンタ機能を備えたレジスタであり、設定された値をクロック信号(CPUCLK)に同期して1ずつデクリメントする。レジスタR14は、チップセレクト信号(CS_N)を出力するための1ビットのレジスタである。レジスタR15は、アドレスバス(A)にアドレス信号を出力するための14ビットのレジスタである。レジスタR16及びR17は、ライトイネーブル信号(WRH_N)及び(WRL_N)を出力するための各1ビットのレジスタである。レジスタR18は、リードイネーブル信号(RD_N)を出力するための1ビットのレジスタである。レジスタR19は、データバス(data_out)を介して出力するデータを保持するための16ビットのレジスタである。そして、レジスタR20は、出力データイネーブル信号(dtoen)を出力するための1ビットのレジスタである。
図2の簡易CPU3122が実行可能な命令は、図4に示すNOP(No Operation)命令(INST_NON)、書き込み命令(INST_WR)、読み出し命令(INST_RD)、ウエイト命令(INST_WAIT)、シミュレーション終了命令(INST_END)、及びコンペアリード命令(INST_RDCMP)の6種類である。これらの命令は、図12に示すテストベンチプログラムの各処理に対応するものであり、例えば、図12のファイル221の18行目等にある関数t_writeが書き込み命令(INST_WR)に、32行目等にある関数t_readが読み出し命令(INST_RD)に、19行目にある関数t_nCLK_waitがウエイト命令(INST_WAIT)に、46行目にある命令$finishがシミュレーション終了命令(INST_END)に、そして、33行目〜35行目等にある関数t_readによって読み出した値が所定の値と一致するまで読み出しを繰り返し実行する処理がコンペアリード命令(INST_RDCMP)に、それぞれ対応している。つまり、図12のファイル221に記述されたテストベンチによって実行される検証用情報に関する処理を、簡易CPU3122がインストラクションメモリ3121に記憶されている命令を実行する処理に置き換えることができるのである。
なお、図2のインストラクションメモリ3121は1ワードが35ビット[34:0]で構成されているが、その内訳は図5に示すようになっている。インストラクションメモリ3121のワードデータ(命令データ)の上位3ビット[34:32]は命令の種類を表している。例えば上位3ビットが「001」の場合は書き込み命令、「010」の場合は読み出し命令である。図2のインストラクションメモリ3121から簡易CPU3122へのデータ出力は、簡易CPU3122がインストラクションメモリチップセレクト信号(instmem_csn_r)と、インストラクションメモリアドレス信号(instmem_adr_r)とをクロック信号(CPUCLK)に同期して制御することで行われる。
簡易CPU3122は、リセット信号(RST_N)が「0」となった時、非同期リセットされ、図3のレジスタR11を「0」にリセットしてインストラクションメモリアドレス(instmem_adR_r)を「0」にリセットするとともに、図6のアイドル状態(ST_IDLE)に移行する。リセット信号(RST_N)が「1」となってリセットが解除されると、アイドル状態(ST_IDLE)のまま(ただし以降は、この状態をインストラクション状態(INST)と呼ぶことにする)、レジスタR10が「0」に、10ビットのレジスタR11がインクリメントされて「1」になる。ここで、レジスタR10からインストラクションチップセレクト信号(instmem_csn_r)として「0」が出力され、レジスタR11からインストラクションメモリアドレスバスに「1」が出力される。
次に図6のアイドル状態(ST_IDLE)に続く2つの未使用状態(ST_NOP1、ST_NOP2)でインストラクションメモリ3121から命令データが読み出しされるとともに、読み出された命令の判定が行われる。そして、命令の種類に応じて、各状態への遷移が行われる。
命令が未使用命令(INST_NON)の場合、状態(ST_NOP2)の後、そのまま状態(INST)に復帰する。命令が書き込み命令(INST_WR)の場合、状態(ST_W1)〜状態(ST_W5)の5つのステップによって書き込み命令が実行され、状態(INST)に復帰する。命令が読み出し命令(INST_RD)の場合、状態(ST_R1)〜状態(ST_R6)の6つのステップによって読み出し命令が実行され、状態(INST)に復帰する。ただし、状態(ST_R3)は、検証対象回路311Cから出力されるウエイト信号(WAIT_N)及びレディ信号(READY_N)の状態に基づいて、読み出しデータの準備ができるまで繰り返されることになる。命令が読み出し命令(INST_RDCMP)の場合、状態(ST_R1)〜状態(ST_R5)でデータを読み出した後、読み出したデータが所定の値と一致しない場合には再度、状態(ST_R1)〜状態(ST_R5)が繰り返される。データが一致した場合には、状態(ST_R6)を経て、状態(INST)に復帰する。
命令がウエイト命令(INST_WAIT)の場合は、状態(ST_WAIT)でクロック信号(CPUCLK)の所定回数分待機した後、状態(INST)に復帰する。そして、命令がシミュレーション終了命令(INST_END)の場合は、状態(ST_END)でシミュレーション終了信号(o_end)を「1」にした後、状態(INST)に復帰する。また、命令が入力されていない場合や命令が判定できない場合は、状態(INST)、状態(NOP1)、状態(NOP2)、状態(INST)、状態(NOP1)、状態(NOP2)、…が繰り返されることになる。
なお、書き込み命令(INST_WR)においては、図5に示すように、インストラクションメモリ3121内の35ビットの命令データの内、第4ビット〜第17ビット(memd[31:18])の14ビットの値が書き込みアドレス値であり、第18ビット〜第33ビット(memd[17:02])16ビットの値が書き込みデータ値である。書き込みアドレス値は図3のレジスタR15に入力されて、書き込みデータ値はレジスタR19に入力される。また、書き込み命令における第34〜第35ビット(memd[01:00])は、ライトイネーブル信号(WRH_N)及び(WRL_N)の値であり、それぞれレジスタR16及びR17に入力される。
また、ウエイト命令(INST_WAIT)においては、インストラクションメモリ3121内の35ビットの命令データの内第6ビット〜第35ビット(memd[31:00])の32ビットの値がカウンタ値(クロック信号(CPUCLK)分の待機回数)であり、その値がレジスタR13に入力される。
次に図7〜図9を参照して、主な命令の動作タイミングについて具体的に説明する。図7はインストラクションメモリ3121の記憶内容の一例を示している。左端にインストラクションメモリのアドレス値iを、右の枠内に各アドレスの命令データ(CMD(i)とする。)を示している。アドレス0の命令データはNOP命令(INST_NON)、アドレス1は書き込み命令(INST_WR)で書き込みアドレスが「x」及び書き込みデータが「p」、アドレス2は読み出し命令(INST_RD)で読み出しアドレスが「y」である。また、アドレス(n−1)が書き込み命令(INST_WR)、アドレスnがウエイト命令(INST_WAIT)でウエイト回数が「4」、アドレス(n+1)が読み出し命令(INST_RD)である。そしてアドレスkがシミュレーション終了命令(INST_END)である。図8はアドレス値0〜2の命令データに関する動作、図9はアドレス値n−1〜n+1の命令データに関する動作を示している。
図8は、図2の簡易CPU3122の動作を示すタイミングチャートであり、クロック信号(CPUCLK)、リセット信号(RST_N)、図3のステートマシンST1の遷移状態(図6)(ただし状態を示す「ST_」の符号は一部省略して示している。)と、各入出力信号の状態変化を示している。時刻t1〜t4の間にリセット信号が入力され動作状態が状態(ST_IDLE)となっている。リセット信号が解除された後は、状態(NOP1)となるたびに、インストラクションメモリ3121のアドレス信号(instmem_adr_r)が1ずつインクリメントされるとともに、チップセレクト信号(instmem_csn_r)が「0」となって、命令データ(CMD(i))が読み出されている。書き込み命令(INST_WR)では、時刻t8〜t12の間、検証対象回路311Cのチップセレクト信号(CS_N)が「0」に設定されて選択が行われて、その間の時刻t9〜t11に書き込みイネーブル信号(WRH_N/WRL_N)が出力されて、データの書き込み処理が行われている。一方、読み出し命令(INST_RD)では、時刻t16〜t20の間、検証対象回路311Cのチップセレクト信号(CS_N)が「0」に設定されて選択が行われて、その間の時刻t17〜t19に読み出しイネーブル信号(RD_N)が出力されて、データの読み出し処理が行われている。
図9は、図2の簡易CPU3122の動作を示すタイミングチャートであり、ウエイト命令(INST_WAIT)に関連する各信号の変化を示している。この場合、時刻t5でウエイトカウント値「4」がカウンタ機能を有するレジスタR13(カウンタ値wait_cnt_r)に書き込まれる。その後、各クロック信号(CPUCLK)の立ち上がりで、カウンタ値がデクリメントされる。時刻t8でカウンタ値が「1」に一致した後、次の時刻t9で状態(INST)に復帰している。
次に、図10を参照して、図1に示すシミュレーション装置の他の実施の形態(回路情報ファイル31の構成が異なる例)について説明する。なお、図10において、図2に示すものと同一の構成には同一の符号を付けて説明を省略する。図10に示す回路情報ファイル31が表す回路31Dには、図2に示す簡易CPU3122等の構成に加え、インターフェース回路50、入力データメモリ51、出力データメモリ52、データ入力回路53、データメモリ54、期待値メモリ55、及び比較検証回路56が設けられている。
インターフェース50は、簡易CPU3122と検証対象回路311Cとの間のインターフェース回路であり、検証対象回路311Cの入出力部の仕様が、標準的なCPUインターフェース以外の仕様を有する場合に、簡易CPU3122の入出力部の仕様を変更せずに接続可能とするために設けられた回路である。インターフェース50は、例えば、パラレル信号をシリアル信号に変換する回路であったり、あるいはデジタル信号をアナログ信号に変換する回路であったりするものを含んでいる。
入力データメモリ51は、検証対象回路311Cに対して、簡易CPU3122以外から入力する方が好ましいデータを入力するためのメモリである。例えば、初期値や、モード設定等、切替信号をある程度、継続的に入力し続ける必要がある場合等に用いることができる。出力データメモリ52は、検証対象回路311Cから出力されるデータを時系列で記憶するメモリである。検証処理が終了した段階などの所定のタイミングで、出力データメモリ52の値は、データベース2内の所定のファイルに出力される。
また、期待値メモリ55は、出力データメモリ52に出力されるであろう値の期待値をあらかじめ記憶するメモリである。比較検証回路56によって出力データメモリ52のデータと期待値メモリ55のデータを比較し、その結果をデータベース2内の所定のファイルに出力する。上述した簡易CPU3122が実行可能なコンペアリード命令(INST_RDCMP)によっても検証対象回路311Cの出力データの期待値との比較検証は可能である。しかし、データ量が大きくなる場合等には期待値メモリ55、比較検証回路56等を別途設けた方が設計処理の効率化が図れる場合がある。
一方、データメモリ54は、マルチメディアデータ等の比較的大きなあるいは連続性のあるデータを、例えば専用の入力端子等から検証対象回路311Cに対して入力する場合に使用される。データストリーム入力回路53は、検証対象回路311Cと単独で通信を行い、データの入力タイミングを制御する。
図10に示すような構成によれば、検証対象回路311Cの検証(シミュレーション)時に必要な情報が様々に変化する場合でも、入力データメモリ51、データメモリ55、期待値メモリ55の内容を変更するだけで、種々のテストベンチに相当する回路をRTLで記述することが可能となる。
上述したように、この発明においては、シミュレーションの際に、従来テストベンチによって生成していたテストベクタやテストパターンを、RTLで記述したHDLによる回路情報を用いて生成できるようにしている。汎用のシミュレーションプログラムでは、HDLによって記述した回路情報に対しては、省略化、効率化によってシミュレーションの最適化手法が準備されていることが多く、他方テストベンチのプログラム実行にはそこまでの最適化が図られていない場合がある。そのような場合には、この実施の形態のように検証対象回路とテストベクタ生成回路とを一体の回路として構成し、回路情報を記述することで、シミュレーションプログラムの種々の最適化機能を最大限に利用してシミュレーション時間の短縮化を図ることができる。
さらに、上記のように簡易CPU(ステートマシンあるいはシーケンサ)、インストラクションメモリ(ROM)、クロック生成回路等の各回路は、容易にRTL(レジスタトランスファレベル)で記述可能なので、FPGA等に実装する場合に容易にマッピングデータを作成することができる。そのため、検証対象回路をFPGA等に実装した場合に、その検証のためのベクタ(パターン)生成回路も、容易にハードウェアで実現することができる。
なお、上述したようにして作成した回路情報を用いたシミュレーションを行った結果、シミュレーションプログラムが有するモデル最適化機能等を利用することで、テストベンチを用いてテストベクタを作成する場合に比べ、シミュレーション時間を約半減することが可能であった。
また、この発明のテストパターン生成回路は、エミュレータのようなハードウエアの検証システムにそのまま使用できるが、その場合にはテストベンチを用いたソフトウェアによるものに比べ、約1/120の検証時間とできることが確認された。
なお、この発明の実施の形態は、上記のものに限定されず、例えば、簡易CPUで実行可能な命令の種類を増やしたり、あるいは減らしたりすることも可能である。また、クロック生成回路等の一部の回路や、図10に示す一部のメモリ等の回路を省略することも可能である。また、この発明の回路情報ファイル31は、コンピュータ読み取り可能な記録媒体、あるいは通信回線を介して提供可能であり、また、それを利用するためのシミュレーションプログラムについてもコンピュータ読み取り可能な記録媒体、あるいは通信回線を介して提供可能である。
この発明によるシミュレーション装置の実施の形態の全体構成を示すブロック図である。 図1の回路情報ファイル31に含まれている回路情報が表す回路の内容を示すブロック図である。 図2の簡易CPU3122の構成例を示すブロック図である。 図2の簡易CPU3122が実行可能な命令の種類の一例を示す図である。 図2のインストラクションメモリ3121に記憶されるデータの構成例を示す図である。 図2の簡易CPU3122の動作の状態遷移図である。 図2のインストラクションメモリ3121に複数のデータを記憶した場合の一例を示す図である。 図2の回路情報ファイル31に含まれている回路の動作タイミングの一例(書き込み命令/読み出し命令の場合)を示すタイミングチャートである。 図2の回路情報ファイル31に含まれている回路の動作タイミングの一例(ウエイト命令の場合)を示すタイミングチャートである。 図1の回路情報ファイル31に含まれている回路情報が表す回路の内容の他の例(他の実施の形態)を示すブロック図である。 背景となるシミュレーション装置の一例を示すブロック図である。 図11のテストベンチファイル32の記述例(メインルーチン)を示す図である。 図12のテストベンチファイル32に含まれる関数t_writeの記述例を示す図である。 図12のテストベンチファイル32に含まれる関数t_readの記述例を示す図である。
符号の説明
1…シミュレーションプログラム 2…データベース 31…回路情報ファイル 32…テストベンチファイル 311…検証対象回路情報 312…テストベクタ生成回路情報 31C、31D…回路 311C…検証対象回路 312C…テストベクタ生成回路 3121…インストラクションメモリ 3122…簡易CPU 3123…クロック発生回路 50…インターフェース 51…入力データメモリ 52…出力データメモリ 53…データストリーム入力回路 54…データメモリ 55…期待値メモリ 56…比較検証回路

Claims (4)

  1. 所定の回路を表す記述情報を用いてシミュレーションを行う装置であって、
    検証対象の回路を表す検証対象回路情報と、
    検証対象回路情報によって表される検証対象の回路に対して接続され、検証対象回路との間で、自回路内で自動的に生成した検証用情報の入力又は出力を行う回路を表す検証情報生成回路情報と
    を一体として前記記述情報を構成したことを特徴とするシミュレーション装置。
  2. 所定の回路を表す記述情報を用いてシミュレーションを行う装置であって、
    クロック信号を発生するクロック発生回路を表す第1の要素と、
    前記クロック信号に応じて作動するように記述された検証対象の回路を表す第2の要素と、
    第2の要素によって表された検証対象の回路に対するデータ入出力命令やその際用いられるデータを複数組記憶した記憶回路を表す第3の要素と、
    第3の要素によって表された記憶回路から命令やデータを順次読み込み、その命令に基づいて、第2の要素によって表された検証対象の回路に対するデータ入力指示やデータ出力指示を、前記クロック信号に同期して発行する信号処理回路を表す第4の要素と
    から前記記述情報が構成されていることを特徴とするシミュレーション装置。
  3. 前記第4の要素によって表された信号処理回路が、前記第3の要素によって表された記憶回路に記憶されている命令に基づいて、データ出力状態、データ入力状態、待機状態、及び停止状態の4つの作動態様を取るものであることを特徴とする請求項2記載のシミュレーション装置。
  4. 前記各要素が論理合成可能なレベルで記述されていることを特徴とする請求項2又は3記載のシミュレーション装置。
JP2005087622A 2005-03-25 2005-03-25 シミュレーション装置 Expired - Fee Related JP4631493B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005087622A JP4631493B2 (ja) 2005-03-25 2005-03-25 シミュレーション装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005087622A JP4631493B2 (ja) 2005-03-25 2005-03-25 シミュレーション装置

Publications (2)

Publication Number Publication Date
JP2006268606A true JP2006268606A (ja) 2006-10-05
JP4631493B2 JP4631493B2 (ja) 2011-02-16

Family

ID=37204483

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005087622A Expired - Fee Related JP4631493B2 (ja) 2005-03-25 2005-03-25 シミュレーション装置

Country Status (1)

Country Link
JP (1) JP4631493B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010266973A (ja) * 2009-05-13 2010-11-25 Nec Access Technica Ltd 論理シミュレーション装置およびそのシミュレーション方法
JP2013101604A (ja) * 2011-10-14 2013-05-23 Apple Inc Hdl環境のためのグローバルクロックハンドラーオブジェクト

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7340986B2 (ja) 2019-08-01 2023-09-08 不二サッシ株式会社 防火面格子

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612468A (ja) * 1992-06-25 1994-01-21 Sony Corp 自動回路合成方法
JP3162316B2 (ja) * 1997-03-10 2001-04-25 三菱電機株式会社 電子回路テスト用システム
JP2002236713A (ja) * 2001-02-13 2002-08-23 Matsushita Electric Ind Co Ltd デジタル回路検証装置及び検証方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612468A (ja) * 1992-06-25 1994-01-21 Sony Corp 自動回路合成方法
JP3162316B2 (ja) * 1997-03-10 2001-04-25 三菱電機株式会社 電子回路テスト用システム
JP2002236713A (ja) * 2001-02-13 2002-08-23 Matsushita Electric Ind Co Ltd デジタル回路検証装置及び検証方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010266973A (ja) * 2009-05-13 2010-11-25 Nec Access Technica Ltd 論理シミュレーション装置およびそのシミュレーション方法
JP2013101604A (ja) * 2011-10-14 2013-05-23 Apple Inc Hdl環境のためのグローバルクロックハンドラーオブジェクト
KR101418162B1 (ko) * 2011-10-14 2014-07-09 애플 인크. Hdl 환경을 위한 글로벌 클록 핸들러 객체

Also Published As

Publication number Publication date
JP4631493B2 (ja) 2011-02-16

Similar Documents

Publication Publication Date Title
Bergamaschi et al. Designing systems-on-chip using cores
US8468475B2 (en) Conversion of circuit description to an abstract model of the circuit
US7561999B2 (en) Verification apparatus, verification method, and program
JP2003529848A (ja) デジタル・シグナル・プロセッシング集積回路の自動設計
TWI768536B (zh) 積體電路模擬及設計方法與系統
Gaikwad et al. Verification of AMBA AXI on-chip communication protocol
US8195441B1 (en) Hardware co-simulation involving a processor disposed on a programmable integrated circuit
JP4631493B2 (ja) シミュレーション装置
US20050144436A1 (en) Multitasking system level platform for HW/SW co-verification
CN107784185B (zh) 一种门级网表中伪路径的提取方法、装置及终端设备
KR20040063846A (ko) 다양한 검증 플랫폼들의 통합 사용을 지원하는 검증 장치및 이를 이용한 검증 방법
US7228513B2 (en) Circuit operation verification device and method
TW201331775A (zh) 用於硬體描述語言環境之全域時鐘處理常式物件
US6532573B1 (en) LSI verification method, LSI verification apparatus, and recording medium
Gao et al. Software and hardware co-verification technology based on virtual prototyping of RF SOC
US11430496B2 (en) Phase-aware DDR command dynamic scheduling
JP3472067B2 (ja) 設計支援装置
CN117355838A (zh) 经混合信号仿真中的实时视图交换
JP5664430B2 (ja) 試験装置、検証モデル開発方法及びプログラム
Dalay Accelerating system performance using SOPC builder
US8229725B1 (en) Method and apparatus for modeling processor-based circuit models
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
US20230205969A1 (en) Techniques for modeling and verification of convergence for hierarchical domain crossings
JP2001076027A (ja) システム設計段階におけるシミュレーション方法、その装置及びそのプログラムを記憶した記憶媒体
TW202349209A (zh) 記憶體裝置之時脈信號至q端(clock-to-q)存取時間量測之晶片上自動化

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100803

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: 20101019

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101101

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees