説明

ソフトウェアシミュレーション装置、シミュレーション方法、及びプログラム

【課題】不定値を適切に扱うことができるソフトウェアシミュレーションを実現するシミュレーション装置、シミュレーション方法、及びプログラムを提供すること
【解決手段】所定回路シミュレータ90は、所定の回路(たとえばフリップフロップ回路、メモリ回路)の動作を模擬(シミュレーション)する。不定値変換手段30は、所定回路シミュレータ90からの出力が不定値である場合に"0"または"1"に変換して後段のシミュレータに出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はソフトウェアシミュレーション装置、シミュレーション方法、及びプログラムに関し、特に不定値を扱うソフトウェアシミュレーション装置、シミュレーション方法、及びプログラムに関する。
【背景技術】
【0002】
現在、フリップフロップ回路やメモリ回路等の回路を模擬して、その動作を確認する論理シミュレーション装置、論理シミュレーション方法が一般的に用いられている。一般的に用いられている論理シミュレーション装置や論理シミュレーション方法では、フリップフロップ回路やメモリ回路等を模擬するシミュレータが不定値を出力した場合、その不定値を後段回路のシミュレータにそのまま伝搬させている。後段回路のシミュレータでは、この不定値が初期化されていないことにより発生する装置の不具合を検出することが行われている。
【0003】
たとえば、図6のRTL(Register Transfer Level)記述により示されるデジタル回路のシミュレーションでは、リセット信号が"1"になればフリップフロップ回路のシミュレータからの出力を"0"に初期化していた。この初期化された値を用いることにより、リセット回路の後段回路のシミュレータに不具合(不定値)が伝搬されることが回避でき、回路動作の不具合を回避することができた。
【0004】
ここで、論理シミュレーション装置、論理シミュレーション方法に関連する技術を開示した文献について以下に説明する。特許文献1は、フリップフロップの初期状態が不定状態である論理シミュレータについての技術を開示している。この論理シミュレータは、論理シミュレーションの開示時に全て(または特定の)フリップフロップの初期状態を不定状態から"0"レベルまたは"1"レベルに固定する。
【0005】
特許文献2には、回路及びテストベンチ中に不定値に関連する情報があるか否かを検索し、不定値に関する情報があればそれを出力し、不定値を"0"または"1"に置き換えて2値シミュレーションモデルを生成し、2値シミュレーションを実行する論理シミュレーション方法が開示されている。
【0006】
なお、特許文献3は、ハードウェア化された論理シミュレータに関する技術が開示されている。そのため、不定値の扱いがソフトウェアシミュレータでの扱いと異なる。特許文献3には、本発明が対象とするソフトウェアシミュレータに関する示唆、教示が全くない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平03−138774号公報
【特許文献2】特開2000−235590号公報
【特許文献3】特開昭61−147348号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
近年、回路設計の自動化及び高機能化が進んでいる。このため、図7のRTL(Register Transfer Level)記述により示されるデジタル回路のように、リセット信号が"1"に設定される場合でも、フリップフロップ回路のシミュレータからの出力が"1"に初期化されない回路が設計されるようになってきている。そのため、上述した手法のように、不定値を後段回路のシミュレータにそのまま伝搬させても回路動作の不具合が検出できないという問題が生じている。
【0009】
特許文献2に記載の手法は、上述のように回路及びテストベンチ内に不定値に関連する情報があるか否かを検索している。しかし、図7のRTL記述により示されるデジタル回路は、不定値を扱っているもの認識されず、検索にヒットしない。そのため、特許文献2に記載の手法は、図7のRTL記述により示されるデジタル回路に対応できないという問題がある。
【0010】
さらに、特許文献1の手法は、フリップフロップ回路の初期状態のみを考察しているため、一定期間続く不定状態については対応できない。さらにまた、特許文献1の手法は、既存のシミュレーションツール(シミュレーションソフトウェア)自体に機能を追加する必要があり、既存のシミュレーションツールに適用することが困難である。
【0011】
本発明は、上述した課題を鑑みてなされたものであり、不定値を適切に扱うことができるソフトウェアシミュレーションを実現するシミュレーション装置、シミュレーション方法、及びプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【0012】
本発明にかかるシミュレーション装置の一態様は、
検証対象回路に対する論理検証を行うソフトウェアシミュレーション装置であって、
前記検証対象回路に含まれる第1の回路を模擬する第1シミュレーション部と、
前記第1シミュレーション部からの出力が不定値であるか否かを判定し、不定値である場合に、0または1に変換して後段のシミュレータに出力する不定値変換手段と、を備えるものである。
【0013】
本発明にかかるシミュレーション方法の一態様は、
第1の回路を有する検証対象回路に対する論理検証を行うソフトウェアシミュレーション方法であって、
前記第1の回路を模擬し、
前記第1の回路からの出力が不定値であるか否かを判定し、不定値である場合に、0または1に変換して後段のシミュレータに出力する、ものである。
【0014】
本発明にかかるプログラムの一態様は、上記したシミュレーション方法をコンピュータに行わせるためのプログラムである。
【発明の効果】
【0015】
本発明によれば、不定値を適切に扱うことができるソフトウェアシミュレーションを実現するシミュレーション装置、シミュレーション方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【0016】
【図1】実施の形態1にかかる論理シミュレーション装置の構成を示すブロック図である。
【図2】実施の形態1にかかる論理シミュレーション装置の構成を示すブロック図である。
【図3】実施の形態2にかかる論理シミュレーション装置の構成を示すブロック図である。
【図4】本発明にかかる論理シミュレーション装置の構成を示すブロック図である。
【図5】本発明にかかる論理シミュレーション装置をプログラムとして実現する場合のコンピュータシステムの構成を示すブロック図である。
【図6】RTL記述の一例を示す図である。
【図7】RTL記述の一例を示す図である。
【発明を実施するための形態】
【0017】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。図1は、本実施の形態にかかるシミュレーション装置1の構成を示すブロック図である。シミュレーション装置1は、フリップフロップモジュール10を有する。フリップフロップモジュール10は、フリップフロップシミュレータ20と、不定値変換手段30と、を備える。
【0018】
シミュレーション装置1は、Verilog等のハードウェア記述言語により設計された回路をシミュレーションするソフトウェアシミュレータである。一般に、シミュレーション装置1は、複数のライブラリ(フリップフロップ回路を模擬する処理部、メモリ回路を模擬する処理部等)から構成される。
【0019】
フリップフロップモジュール10は、フリップフロップ回路をシミュレーションするライブラリ(ソフトウェアシミュレータを構成する一処理部)である。フリップフロップモジュール10には、データ信号40と、クロック信号41と、が入力される。フリップフロップモジュール10は、出力信号として信号43を後段回路(のシミュレータ)に出力する。なお、シミュレーション装置1内で扱われる信号は、実際には回路内で伝搬する信号を模擬した情報である。以下の説明においても同様である。
【0020】
フリップフロップシミュレータ20は、D型フリップフロップ回路を模擬する処理部である。フリップフロップシミュレータ20には、データ信号40と、クロック信号41と、が入力される。
【0021】
フリップフロップシミュレータ20は、クロック信号41の立ち上がりタイミングでデータ信号40を保持し、当該保持データを信号42として不定値変換手段30に出力する。ここで、フリップフロップシミュレータ20の出力する信号42の初期値は"X"(不定値)である。例えば、シミュレーション実行当初(電源投入時)に出力される信号42は、"X" (不定値)である。
【0022】
なお、フリップフロップシミュレータ20は、一般的なD型フリップフロップを模擬するものであり、当業者にとってその動作等はよく知られている。そのため、これ以上の詳細な説明は省略する。
【0023】
不定値変換手段30には、フリップフロップシミュレータ20から出力された信号42が入力される。不定値変換手段30は、入力された信号42の値が不定値であるか否かを判定する。不定値であった場合、不定値変換手段30は、不定値を"0"または"1"に変換し、変換した値を信号43として出力する。一方、不定値ではなかった場合、不定値変換手段30は、入力された信号42をそのまま信号43として出力する。
【0024】
なお、不定値変換手段30は、不定値をランダムに"0"または"1"に変換しても良く、他のフリップフロップ回路が接続する他の回路を考慮して"0"、"1"の発生確率を変更しても良い。さらに、不定値変換手段30は、不定値を"0"のみに変換しても良く、"1"のみに変換しても良い。
【0025】
次に、不定値変換手段30を他の回路のシミュレータに適応した例を説明する。図2は、メモリ回路のシミュレータに不定値変換手段30を適応した例を示すブロック図である。シミュレーション装置1は、メモリモジュール50を有する。メモリモジュール50は、メモリ回路シミュレータ60と、不定値変換手段30と、を有する。
【0026】
メモリモジュール50は、メモリ回路をシミュレーションするライブラリ(ソフトウェアシミュレータを構成する一処理部)である。メモリモジュール50には、クロック信号70と、ライトデータ信号71と、ライトイネーブル信号72と、アドレス信号73と、が入力される。メモリモジュール50は、出力信号として信号75を後段回路(のシミュレータ)に出力する。
【0027】
メモリシミュレータ60には、クロック信号70と、ライトデータ信号71と、ライトイネーブル信号72と、アドレス信号73と、が入力される。メモリシミュレータ60は、一般的なメモリ回路(1ポートRAM(Random Access Memory))を模擬する処理部である。
【0028】
メモリシミュレータ60は、クロック信号70の立ち上がりタイミングでライトイネーブル信号72の値を判定する。ライトイネーブル信号が"1"である場合、メモリシミュレータ60は、アドレス信号73が示すアドレスにライトデータ信号71の値を書き込む。一方、ライトイネーブル信号が"0"である場合、メモリシミュレータ60は、アドレス信号73が示すアドレスに書き込まれているデータをリードデータ信号74として不定値変換手段30に出力する。ここで、メモリシミュレータ60の出力するリードデータ信号74の初期値は"X"(不定値)である。
【0029】
不定値変換手段30は、図1での動作と略同一の動作を行う。すなわち、不定値変換手段30は、入力されたリードデータ信号74が不定値であるかを判定し、不定値であった場合に、"0"または"1"に変換して信号75として出力する。
【0030】
次に本実施の形態にかかるシミュレーション装置1の効果について説明する。本実施の形態にかかるシミュレーション装置1では、ある回路を模擬するシミュレータからの出力が不定値である場合に、不定値を"0"または"1"に変換している。この変換により、不定値状態が後段回路のシミュレータに伝搬しないようにしたシミュレーションが実現できる。このため、より精度の高い回路の論理シミュレーションが実現できる。
【0031】
また、上述したように、不定値変換手段30は、ソフトウェアシミュレータのライブラリ(フリップフロップモジュール10、メモリモジュール50等)に組み込むことが可能である。そのため、既存の論理シミュレーションツールとの適合性が高い。
【0032】
さらに、不定値変換手段30は、入力値が不定値であるか否かを逐次判定している。そのため、シミュレーション対象の回路設計の内容に依存せず、適切に不定値を変換することができる。換言すると、不定値変換手段30は、図7に示すような設計の回路であっても、適切に不定値を変換することができる。これにより、本実施の形態にかかるシミュレーション装置1は、特許文献1、2等の手法では適切にシミュレーションができなかった回路を対象としても適切にシミュレーションを実行することができる。
【0033】
<実施の形態2>
実施の形態2にかかるシミュレーション装置1では、不定値変換手段30の後段にリセット回路を模擬するリセット回路シミュレータがある場合に、不定値変換手段30が不定値から変換する値を特定値に固定することを特徴とする。以下、本実施の形態2にかかるシミュレーション装置1について、実施の形態1にかかるシミュレーション装置1と異なる点を中心に説明する。
【0034】
図3は、本実施の形態にかかるシミュレーション装置1の構成を示すブロック図である。シミュレーション装置1は、フリップフロップモジュール10と、リセット回路シミュレータ80と、を有する。
【0035】
リセット回路シミュレータ80は、いかなる入力であっても、リセット設定時(リセット信号が有効化されている場合)には特定値に変換して出力するリセット回路を模擬するシミュレータである。例えば、リセット回路は、入力として"0"または"1"が入力された場合、常に"1"を出力する回路である。
【0036】
不定値変換手段30は、不定値が入力された場合に、不定値をリセット回路シミュレータ80の出力に応じて変更する。詳細には、不定値変換手段30は、不定値が入力された場合に、不定値をリセット回路のリセット値とは異なる値に変換して出力する。以下の説明では、リセット回路シミュレータ80がリセット設定時に"1"を出力すると仮定する。不定値変換手段30は、不定値が入力された場合に、リセット回路シミュレータ80の出力とは異なる値、すなわち"0"を常に出力するように構成される。
【0037】
たとえば、電源投入時には、フリップフロップ回路、メモリ回路等の出力が不定値となることが多い。不定値変換手段30は、不定値を"0"に変換してリセット回路シミュレータ80に供給する。ここで、リセット回路シミュレータ80、ひいてはリセット回路が正常な場合には、リセット回路シミュレータ80への入力値"0"(不定値を変換した値)は"1"に変換される。
【0038】
そのため、電源投入後であり、リセット設定時の出力としてリセット回路シミュレータ80が"0"を出力する場合には、リセット回路シミュレータ80の動作、ひいてはリセット回路の動作に不具合がある可能性が高いことを認識できる。すなわち、不定値変換手段30は、不定値が入力された場合に、不定値をリセット回路シミュレータ80の出力に応じて変換することにより、リセット回路の動作を検証できるという効果を奏する。
【0039】
なお、図3の構成では、不定値変換手段30の前段にフリップフロップモジュール10を配置したが、必ずしもこれに限られず、メモリモジュール50、または他のモジュールを配置しても良い。
【0040】
以上、実施の形態に即して本発明を説明した。本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の説明では、D型フリップフロップ回路、1ポートRAMを例示して動作を説明したが必ずしもこれに限られない。本発明は、他の一般的なフリップフロップ回路、メモリ回路を対象とした不定値変換に応用することができる。
【0041】
本発明の主要な動作を図4に示す概念図を用いて再度説明する。シミュレーション装置1は、所定回路(第1の回路)シミュレータ90と、不定値変換手段30と、を備える。シミュレーション装置1は、ハードウェア記述言語により記載された回路設計をシミュレーションするソフトウェアシミュレータである。
【0042】
なお、所定回路シミュレータ90は、例えば上述のフリップフロップシミュレータ20やメモリシミュレータ60に相当する。
【0043】
不定値変換手段30は、所定回路シミュレータ90からの出力が不定値である場合に"0"または"1"に変換して出力する。
【0044】
このように、図4に示す最小構成であっても、所定回路を模擬するシミュレータからの出力が不定値である場合に、不定値を"0"または"1"に変換できる。この変換により、不定値状態を除外したシミュレーションが実現できる。このため、より精度の高い回路の論理シミュレーションが実現できる。
【0045】
上記したシミュレーション装置1の各処理は、任意のコンピュータ内で動作するプログラムとして実現することが可能である。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0046】
図5は、シミュレーション装置1の各処理をプログラムとして実現するためのコンピュータシステムのハードウェア構成例を示している。例えば、中央処理装置(CPU)101とメモリ102とを含んでいる。CPU101とメモリ102とは、バスを介して補助記憶装置としてのハードディスク装置(HDD)103に接続される。このシステムは、典型的には、ユーザ・インターフェース・ハードウェアを備える。ユーザ・インターフェース・ハードウェアとしては、例えば、入力をするためのポインティング・デバイス(マウス、ジョイスティック等)やキーボード等の入力装置104や、視覚データをユーザに提示するための液晶ディスプレイなどの表示装置105がある。ハードディスク装置103等の記憶媒体にはオペレーティングシステムと共同してCPU101等に命令を与え、このシステムの各部の機能を実施するためのコンピュータ・プログラムを記憶することができる。すなわち、プログラムがメモリ102上に展開され、CPU101がプログラムに従って処理を行い、他のハードウェア構成と協働することによって、シミュレーション装置1の各ブロックが構成されている。そして、シミュレーション装置1による各処理は、CPU101において所定のプログラムが実行されることで実現されている。尚、これらのシステムは、単一のコンピュータでなくとも、複数のコンピュータによって構成することも可能である。
【0047】
上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0048】
(付記1)
検証対象回路に対する論理検証を行うソフトウェアシミュレーション装置であって、
前記検証対象回路に含まれる第1の回路を模擬する第1シミュレーション部と、
前記第1シミュレーション部からの出力が不定値であるか否かを判定し、不定値である場合に、0または1に変換して後段のシミュレータに出力する不定値変換手段と、を備えるソフトウェアシミュレーション装置。
【0049】
(付記2)
不定値変換手段の後段に配置され、入力値をリセット設定時にリセット値にリセットするリセット回路を模擬するリセットシミュレータを更に備え、
前記不定値変換手段は、前記リセット値が0である場合に、前記不定値を1に変換し、前記リセット値が1である場合に、前記不定値を0に変換する、
付記1に記載のソフトウェアシミュレーション装置。
【0050】
(付記3)
前記不定値変換手段は、前記不定値をランダムな確率で0または1に変換して出力することを特徴とする付記1に記載のソフトウェアシミュレーション装置。
【0051】
(付記4)
前記第1の回路は、フリップフロップ回路であることを特徴とする付記1乃至付記3のいずれか1項に記載のソフトウェアシミュレーション装置。
【0052】
(付記5)
前記第1の回路は、メモリ回路であることを特徴とする付記1乃至付記3のいずれか1項に記載のソフトウェアシミュレーション装置。
【0053】
(付記6)
第1の回路を有する検証対象回路に対する論理検証を行うソフトウェアシミュレーション方法であって、
前記第1の回路を模擬し、
前記第1の回路からの出力が不定値であるか否かを判定し、不定値である場合に、0または1に変換して後段のシミュレータに出力する、ソフトウェアシミュレーション方法。
【0054】
(付記7)
前記検証対象回路は、前記第1の回路の後段に配置され、入力値をリセット設定時にリセット値にリセットするリセット回路を備え、
前記不定値の変換処理では、前記リセット値が0である場合に、前記不定値を1に変換し、前記リセット値が1である場合に、前記不定値を0に変換し、前記リセット回路に変換値を供給する、付記6に記載のソフトウェアシミュレーション方法。
【0055】
(付記8)
前記不定値の変換処理では、前記不定値をランダムな確率で0または1に変換して出力することを特徴とする付記6に記載のソフトウェアシミュレーション方法。
【0056】
(付記9)
前記第1の回路は、フリップフロップ回路であることを特徴とする付記6乃至付記8のいずれか1項に記載のソフトウェアシミュレーション方法。
【0057】
(付記10)
前記第1の回路は、メモリ回路であることを特徴とする付記6乃至付記8のいずれか1項に記載のソフトウェアシミュレーション方法。
【0058】
(付記11)
付記6乃至付記10のいずれか1項に記載されたソフトウェアシミュレーション方法をコンピュータに行わせるためのプログラム。
【符号の説明】
【0059】
1 シミュレーション装置
10 フリップフロップモジュール
20 フリップフロップシミュレータ
30 不定値変換手段
40 データ信号
41 クロック信号
42、43 信号
50 メモリモジュール
60 メモリ回路シミュレータ
70 クロック信号
71 ライトデータ信号
72 ライトイネーブル信号
73 アドレス信号
74、75 信号
80 リセット回路シミュレータ
90 所定回路(第1の回路)シミュレータ
101 CPU
102 メモリ
103 HDD
104 入力装置
105 表示装置

【特許請求の範囲】
【請求項1】
検証対象回路に対する論理検証を行うソフトウェアシミュレーション装置であって、
前記検証対象回路に含まれる第1の回路を模擬する第1シミュレーション部と、
前記第1シミュレーション部からの出力が不定値であるか否かを判定し、不定値である場合に、0または1に変換して後段のシミュレータに出力する不定値変換手段と、を備えるソフトウェアシミュレーション装置。
【請求項2】
不定値変換手段の後段に配置され、入力値をリセット設定時にリセット値にリセットするリセット回路を模擬するリセットシミュレータを更に備え、
前記不定値変換手段は、前記リセット値が0である場合に、前記不定値を1に変換し、前記リセット値が1である場合に、前記不定値を0に変換する、
請求項1に記載のソフトウェアシミュレーション装置。
【請求項3】
前記不定値変換手段は、前記不定値をランダムな確率で0または1に変換して出力することを特徴とする請求項1に記載のソフトウェアシミュレーション装置。
【請求項4】
前記第1の回路は、フリップフロップ回路であることを特徴とする請求項1乃至請求項3のいずれか1項に記載のソフトウェアシミュレーション装置。
【請求項5】
前記第1の回路は、メモリ回路であることを特徴とする請求項1乃至請求項3のいずれか1項に記載のソフトウェアシミュレーション装置。
【請求項6】
第1の回路を有する検証対象回路に対する論理検証を行うソフトウェアシミュレーション方法であって、
前記第1の回路を模擬し、
前記第1の回路からの出力が不定値であるか否かを判定し、不定値である場合に、0または1に変換して後段のシミュレータに出力する、ソフトウェアシミュレーション方法。
【請求項7】
前記検証対象回路は、前記第1の回路の後段に配置され、入力値をリセット設定時にリセット値にリセットするリセット回路を備え、
前記不定値の変換処理では、前記リセット値が0である場合に、前記不定値を1に変換し、前記リセット値が1である場合に、前記不定値を0に変換し、前記リセット回路に変換値を供給する、請求項6に記載のソフトウェアシミュレーション方法。
【請求項8】
前記不定値の変換処理では、前記不定値をランダムな確率で0または1に変換して出力することを特徴とする請求項6に記載のソフトウェアシミュレーション方法。
【請求項9】
前記第1の回路は、フリップフロップ回路であることを特徴とする請求項6乃至請求項8のいずれか1項に記載のソフトウェアシミュレーション方法。
【請求項10】
請求項6乃至請求項9のいずれか1項に記載されたソフトウェアシミュレーション方法をコンピュータに行わせるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2013−33326(P2013−33326A)
【公開日】平成25年2月14日(2013.2.14)
【国際特許分類】
【出願番号】特願2011−168207(P2011−168207)
【出願日】平成23年8月1日(2011.8.1)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】