JP2009075811A - 論理シミュレーション装置及び論理シミュレーション方法 - Google Patents

論理シミュレーション装置及び論理シミュレーション方法 Download PDF

Info

Publication number
JP2009075811A
JP2009075811A JP2007243474A JP2007243474A JP2009075811A JP 2009075811 A JP2009075811 A JP 2009075811A JP 2007243474 A JP2007243474 A JP 2007243474A JP 2007243474 A JP2007243474 A JP 2007243474A JP 2009075811 A JP2009075811 A JP 2009075811A
Authority
JP
Japan
Prior art keywords
score
simulation
random number
circuit
state
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.)
Withdrawn
Application number
JP2007243474A
Other languages
English (en)
Inventor
Yusuke Tabata
悠介 田畑
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007243474A priority Critical patent/JP2009075811A/ja
Publication of JP2009075811A publication Critical patent/JP2009075811A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Tests Of Electronic Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】本発明の課題は、複雑な条件で発生する論理回路の障害を効果的に検証する論理シミュレーション装置及び論理シミュレーション方法を提供すことを目的とする。
【解決手段】上記課題は、乱数を用いて入力を決定して論理回路を検証する論理シミュレーション装置であって、シミュレーション実行中に前記論理回路の内部状態を測定してスコアで出力するスコア測定手段と、前記シミュレーション実行中に生成された前記乱数と前記スコア測定手段によって出力された前記スコアとを時刻に対応させた履歴データとして、所定記憶領域に保存する履歴データ保存手段と、前記履歴データを用いて高スコアとなる時刻を特定し、該履歴データに記録されている前記乱数を用いて入力を決定して、前記シミュレーションにおける該特定した時刻までを再現する再現手段とを有することを特徴とする論理シミュレーション装置により達成される。
【選択図】図3

Description

本発明は、複雑な条件で発生する論理回路の障害を効果的に検証する論理シミュレーション装置及び論理シミュレーション方法に関する。
CPUや機能IP等の論理回路は内部に複雑な状態を持っているため、入力の順序と内部の状態の組み合わせに複雑に依存して発生する障害を含むことが多い。例えば、設計ミスによる障害などがある。このような障害を検出する方法として、入力に乱数を用いたランダムシミュレーションを用いる方法がある。
ランダムシミュレーションは仕様で許される範囲内の様々な入力を乱数で選択して検証対象に入力し、出力が仕様どおりであるかを確認する手法である。ランダムシミュレーションを用いると、比較的少ない作業量で人間が想像できないような条件で発生する障害を多く検出できるようになり、作業工数も削減できるようになった。
このようなランダムシミュレーションでは、乱数を用いたテストプログラムを作成する場合、検証当初は重複したパターンが生成される確率は比較的少ないが、検証を重ねていく(生成するテストプログラム数が増加する)毎に、生成されるテストプログラムに既に検証済みのパターンが含まれる確率が増加し、検証時間が長引くといった問題があった。このような問題に対して、検証済みパターン履歴情報を用いて、テストプログラムを用いた検証を実行するか否かを判断するようにし、重複したパターンによるシミュレーションの実行を制御することが提案されている(例えば、特許文献1参照。)。
また、入力したテストパターンにおけるモジュール毎のカバレッジを算出し、不足しているテストパターンを自動生成しシミュレーションを行うことによって、全てのモジュールが期待のカバレッジに達するまで繰り返すことが提案されている(例えば、特許文献2参照。)。
特開2002−149440号公報 特開2004−54549号公報
上述したような従来のランダムシミュレーションでは、入力が回路の内部状態に依存せずにランダムに与えられるため、シミュレーションの実行には長時間を要していた。つまり、回路が障害の発生する状態に至らずに、シミュレーション時間の大半が浪費されていることが原因であると考えられる。
よって、本発明の目的は、複雑な条件で発生する論理回路の障害を効率よく発見するために、ランダムな入力を与えた論理回路の内部状態をスコアとして測定し、スコアの高い状態のシミュレーションの確率を高めるようにした論理シミュレーション装置及び論理シミュレーション方法を提供することである。
上記課題を解決するため、本発明は、乱数を用いて入力を決定して論理回路を検証する論理シミュレーション装置であって、シミュレーション実行中に前記論理回路の内部状態を測定してスコアで出力するスコア測定手段と、前記シミュレーション実行中に生成された前記乱数と前記スコア測定手段によって出力された前記スコアとを時刻に対応させた履歴データとして、所定記憶領域に保存する履歴データ保存手段と、前記履歴データを用いて高スコアとなる時刻を特定し、該履歴データに記録されている前記乱数を用いて入力を決定して、前記シミュレーションにおける該特定した時刻までを再現する再現手段とを有するように構成される。
上記手段を機能としてコンピュータに実行させるためのプログラム、そのプログラムを記憶したコンピュータ読み取り可能な記憶媒体、及び、上記手段を機能としてコンピュータが処理する方法とすることもできる。
本願発明は、ランダムな入力を与えた論理回路の内部状態をスコアとして測定し、スコアの高い状態のシミュレーションの確率を高めるようにすることで、複雑な条件で発生する論理回路の障害を効率よく発見することができる。
以下、本発明の実施の形態を図面に基づいて説明する。
論理回路設計において、回路内部のモード切り替えやFIFO(First-In First-Out)にデータが詰め込まれた状態など、更にその前後で他の条件が重なったときに障害が発生することが経験的に知られている。以下、このような、障害が発生し易い回路の状態を「回路にストレスがかかった状態」又は「回路のストレス状態」と言う。本発明に係る論理シミュレーション装置では、この「回路にストレスがかかった状態」がシミュレーションされる確率を高め、効率よく障害を発見するように構成される。
まず、本発明に係る論理シミュレーション装置によるシミュレーションの概要について、図1及び図2で説明する。図1は、スコア測定回路の接続例を示す図である。図2は、スコア測定回路によって測定されたスコアに基づくシミュレーション方法を説明するための図である。図2では、クロックに同期して動作する回路A及び回路Bの信号のON/OFF、及び、スコア測定回路10によって測定されたスコアが例示されている。
(1)まず、設計者や検証者の経験として知られていた「回路にストレスがかかった状態」をスコアとして数値化するために、図1に示すように、検証対象回路3の回路Aと回路Bとに予め用意したスコア測定回路10を接続する。検証対象回路3が複数の回路によって構成される場合、モード切り替えやFIFOなどで特定される回路を主要な回路と定義し、1以上の主要な回路とスコア測定回路10とを接続するようにする。
(2)検証対象回路3へ乱数を用いたテストパターンを入力することによりランダムシミュレーションを実行し、実行中にその入力値とスコア測定回路10によるスコアとを所定記憶領域に保存されている履歴データに時系列に書き込んでいく。例えば、図2(A)に示されるように、スコア取得のためのランダムシミュレーション(例えば、初回のシミュレーション)が実行され、シミュレーション実行中に入力値とスコアとが履歴データに保存される。
一方で、検証対象回路3からの出力値と期待値との比較によって、正常動作であったか又は異常動作であったかの検証がなされる。
(3)履歴データに保存されたスコアから高スコアとなった状態を選び、その状態までの履歴データを用いて同じ回路のストレス状態を再現し、再現した回路のストレス状態以降は、別の入力値(乱数)によってランダムシミュレーションを続行する。
図2(A)に示す例では、スコア「10」が高スコアとなる時点で検証対象回路3がストレス状態にあると判断できる。そして、図2(B)に示されるように、履歴データに保存された入力値を用いて、図2(A)に示す同一のシミュレーションを実行し(再現シミュレーションの実行)、高スコア「10」の「回路のストレス状態」を再現する。このストレス状態の前後で障害の発生する確率が高いと予想されるので、このストレス状態から新たに乱数を発生させて、別の入力値でランダムシミュレーションを続行する。このランダムシミュレーションの実行中も、入力値とスコア測定回路10によるスコアとを所定記憶領域に履歴データとして時系列に書き込んでいく。
このように、障害が発生し易いとされる回路のストレス状態を走行する確率を高めることができ、障害を検出する可能性を高めることができる。
図3は、本発明に係る論理シミュレーション装置の機能構成例を示す図である。図3において、論理シミュレーション装置100は、シミュレーション実行制御部20と、乱数生成部21と、乱数選択部22と、入力生成部23と、期待値計算部24と、期待値比較部25と、検証対象回路3と、スコア測定回路10と、履歴データベース14aとを有する。
論理シミュレーション装置100において、ランダムシミュレーションは、乱数生成部21と、乱数選択部22と、入力生成部23と、期待値計算部24と、期待値比較部25と、検証対象回路3とによって実行され、再生シミュレーションは、乱数選択部22と、入力生成部23と、期待値計算部24と、期待値比較部25と、検証対象回路3と、スコア測定回路14aとによって構成される。
シミュレーション実行制御部20は、ランダムシミュレーションの実行及び再現シミュレーションの実行を制御する。例えば、初回のシミュレーションの場合、ランダムシミュレーションを実行するように制御し、2回目以降のシミュレーションの場合、履歴データベース14aから初回のシミュレーションで高スコアとなる状態までを再現シミュレートして、再現した状態からランダムシミュレーションを実行するように制御する。
乱数生成部21は、乱数を生成して、生成した乱数を乱数選択部22へ入力し、同時にその乱数を履歴データベース14aに保存する。乱数は、履歴データベース14aで管理される、現在実行中のシミュレーションに対応する履歴データとして記録される。乱数生成部21の処理の実行は、シミュレーション実行制御部20によって制御され、ランダムシミュレーションの場合に行われる。
乱数選択部22は、ランダムシミュレーションの場合、乱数生成部21を選択し、乱数生成部21から乱数を受信して入力生成部23へ入力する。一方、再生シミュレーションの場合、履歴データベース14aを選択し、履歴データベース14aから再現すべき回路のストレス状態まで保存した乱数を順次取得して入力生成部23へ入力する。ランダムシミュレーションか再生シミュレーションかは、シミュレーション実行制御部20の制御に従う。
入力生成部23は、乱数選択部22から供給される入力値に基づいて、検証対象回路3の回路仕様の範囲内で許された値を選択し、検証対象回路3と期待値計算部24とに入力信号として入力する。
期待値計算部24は、入力生成部23から入力信号を受け取り、検証対象回路3の回路仕様に基づいて出力されるべき値を計算して出力信号の期待値として期待値比較部25に供給する。
期待値比較部25は、検証対象回路3から出力される出力信号と、期待値計算部24から供給される出力信号の期待値とを比較して、一致しなければ障害の発生と判断し、障害を示すデータを出力することによって障害を報告する。
検証対象回路3は、検証対象となる回路であって、回路仕様に基づいて回路構成を所定のハードウェア記述言語で記述して論理的に実現した回路である。
スコア測定回路10は、検証対象回路3に接続される回路であって、検証対象回路3から内部信号を取得してスコアを算出するための回路構成を所定の回路記述言語によって論理的に実現した回路である。スコア測定回路10は、内部信号に基づいて算出したスコアを履歴データベース14aに時系列に保存する。
図4は、論理シミュレーション装置のハードウェア構成を示す図である。図4において、論理シミュレーション装置100は、制御ユニット11と、入力ユニット12と、表示ユニット13と、データ記憶部14と、プログラム記憶部15とを有する。データ記憶部14と、プログラム記憶部15とは、夫々個別の記憶装置であっても良いし、一つの記憶装置であってもよい。
制御ユニット11は、CPU(Central Processing Unit)と、RAM及びROMなどのメモリとを備え、論理シミュレーション装置100全体を制御する。入力ユニット12は、キーボード及びマウスなどを有し、ユーザによる情報入力及び操作を可能とする。表示ユニット13は、ユーザへの情報を表示制御する。
データ記憶部14は、ランダムシミュレーションの実行時に生成された乱数と、スコア測定回路10によって算出されたスコアとを時系列に記録し管理する履歴データベース14aと、検証対象回路3を論理的に記述した検証対象回路記述データ3aと、スコア測定回路10を論理的に記述したスコア測定回路記述データ10aと、検証対象回路3とスコア測定回路10との接続に係る接続情報14fとを記憶するための記憶部である。
検証対象回路記述データ3aと、スコア測定回路記述データ10aと、接続情報14fとを回路記述データ用の1つのファイルで管理してもよい。
プログラム記憶部15は、シミュレーション実行制御部20として機能するためのシミュレーション実行制御部プログラム30と、乱数生成部21として機能するための乱数生成プログラム31と、乱数選択部22として機能するための乱数選択プログラム32と、入力生成部23として機能するための入力生成プログラム33と、期待値計算部24として機能するための期待値計算プログラム34と、期待値比較部25として機能するための期待値比較プログラム35と、検証対象回路記述データ3aとスコア測定回路記述データ10aを解釈して夫々を検証対象回路3とスコア測定回路10として機能させる論理回路実行プログラム36とを記憶するための記憶部である。
シミュレーション実行制御部20の制御によって行われるシミュレーション全体の処理フローの例について図5及び図6で説明する。図5は、シミュレーションの第一の処理フローについて説明するための図である。
図5において、スコア測定回路10が検証対象回路3に接続される(ステップS11)。シミュレーション実行制御部20は、所定時間連続して乱数生成部21に乱数を発生させることにより、1回目のランダムシミュレーションを実行する(ステップS12)。乱数生成部21は発生させた乱数を時刻と共に履歴データベース14aに保存し、スコア測定回路10は測定したスコアを履歴データベース14aに保存する。履歴データベース14aにおいて、時刻毎に乱数とスコアとが対応付けられた履歴データとして記憶され管理される。
1回目のランダムシミュレーションの実行後、シミュレーション実行制御部20は、履歴データベース14aに保存されたスコアを参照して、スコアの高い状態を選択する(ステップS13)。例えば、最も高いスコアを記録した時刻を特定し、スコアの高い状態を選択する。
シミュレーション実行制御部20は、1回目のシミュレーションの開始時刻からステップS13で特定した時刻までに保存された乱数を履歴データベース14aから乱数選択部22へと時系列に連続して入力することによって、2回目のシミュレーションを再現シミュレーションから実行し、1回目のランダムシミュレーションと同じスコアの高い状態を再現する(ステップS14)。
スコアの高い状態が再現されると、シミュレーション実行制御部20は、その状態から乱数生成部21に乱数を発生させることにより、2回目のシミュレーションにおける残りの所定時間でランダムシミュレーションを実行して(ステップS15)、このランダムシミュレーションの終了によってシミュレーション全体を終了する。
図5に示すシミュレーションの第一の処理フローでは、シミュレーションを2回行う場合を示しているが、図6に示すシミュレーションの第二の処理フローのように、2回目以降のシミュレーションでも入力した乱数とスコアとを履歴データベース14aに時系列に保存し、n回目のシミュレーションではn−1回目までのシミュレーションの履歴からスコアの高いものを選ぶようにしてもよい。
図6は、シミュレーションの第二の処理フローについて説明するための図である。図6中、図5に示す同一のステップには同一の符号を付し、その説明を省略する。図6に示すステップS13−2、S14−2及びS15−2について説明する。
シミュレーション実行制御部20は、次のn回目(nは2以上の自然数)のシミュレーションを実行する前に、1回目からn−1回目のシミュレーション毎に、履歴データベース14aに保存したn−1回目のシミュレーションに対応する履歴データのスコアを参照して、1回目からn−1回目のシミュレーションの中でスコアの高い状態を選択する(ステップS13−2)。第一の処理フローと同様に、例えば、最も高いスコアを記録した時刻を特定し、スコアの高い状態を選択する。
シミュレーション実行制御部20は、ステップS13−2で特定したスコアの高い状態を記録したシミュレーションの履歴データを用いて、そのシミュレーションの開始時刻からステップS13−2で特定した時刻までに保存された乱数を乱数選択部22へと時系列に連続して入力することによって、n回目のシミュレーションを再現シミュレーションから実行し、n−1回目のランダムシミュレーションと同じスコアの高い状態を再現する(ステップS14−2)。
スコアの高い状態が再現されると、シミュレーション実行制御部20は、その状態から乱数生成部21に乱数を発生させることにより、n回目のシミュレーションにおける残りの所定時間でランダムシミュレーションを実行して(ステップS15−2)、n回目のシミュレーションが終了するとステップS13−2へと戻り、上記同様の処理を繰り返す。
例えば、検証対象回路3内の独立な条件AとBとが重なった時に発生する障害があり、どちらの条件もシミュレーション1000回に1回の確率で発生する場合、この障害の検出を期待するためには1000000回のシミュレーションが必要となる。
上述した第二の処理フローを適用した場合、条件A又はBの一方(例えば、条件A)の発生が高スコアとして示された場合、1000回のシミュレーションの設定で条件Aの発生を期待でき、その状態からのシミュレーションを1000回行うことでもう一方の条件Bの発生を期待できるため、1000000回も行うことなく、2000回のシミュレーションでこの障害の発生を期待できる。
次に、スコア測定回路の接続について説明する。先ず、設計者又は検証者の知識に基づきスコアを測定する項目を決定し、測定のための回路を接続する。図7は、他の検証対象回路の例を示す図である。図7に示す検証対象回路4では、入力インタフェース4aによって入力ポート5から入力されたデータがFIFO4bに供給され、FIFO4bから出力されたデータはバスインタフェース4cによってバス6へと出力される。
例えば、このような検証対象回路4にスコア測定回路を接続する場合、設計者又は検証者は経験によって次の2つの状態を「回路のストレス状態」として認識したとする。
・FIFO4bにデータが詰め込まれた状態
・バスインタフェースのアクセス先が切り替わる状態
これらの項目に対し、例えば、図8及び図9に示すようなスコア測定回路62が検証対象回路4に接続される。図8は、図7に示す検証対象回路に接続されるスコア測定回路の例を示す図である。図9は、図8に示すスコア測定回路の回路記述例を示す図である。
図8において、スコア測定回路62は、スコア条件判定回路62a及び62bと、セレクタ62c及び62dと、加算器62eとによって構成されるように回路記述言語によって記述される。
スコア条件判定回路62aは、検証対象回路4のFIFO4bからFIFO full状態信号を受信して、スコア条件判定結果を示すスコア条件判定信号をセレクタ62cに供給し、セレクタ62cはスコア条件判定信号に応じて選択したスコア「0」又は「10」を加算器62eへ供給する。
スコア条件判定回路62bは、検証対象回路4のバスインタフェース4cからアクセス制御信号_1とアクセス制御信号_2とを受信して、スコア条件判定結果を示すスコア条件判定信号をセレクタ62dに供給し、セレクタ62dはスコア条件判定信号に応じて選択したスコア「0」又は「10」を加算器62eへ供給する。
加算器62eは、セレクタ62c及び62dの各々から受信したスコアを加算する。加算器62eから検証対象回路4の内部状態に基づいて計算されたスコアを示すtotal_scoreが出力される。
図8に示すスコア条件判定回路62aとセレクタ62cとによる構成Aは、図9に示す記述Aによって、FIFO full状態信号がfullの状態を示す場合にスコア「10」を選択するように動作する。
図8に示すスコア条件判定回路62bとセレクタ62dとによる構成Bは、図9に示す記述Bによって、前のアクセスとアドレスのページが異なっていればスコア「10」を選択するように動作する。
図8に示す加算器62eによる構成Cは、図9に示す記述Cによって、構成Aと構成Bとから出力される両方のスコアを合計するように動作する。
このように動作するように記述されたスコア測定回路62は、シミュレーション中の所定時間毎に検証対象の内部状態に基づいたスコアを出力する。
図10は、スコアを測定しながらシミュレーションが実行される状態を示す図である。図10において、検証対象回路の内部信号aはランダムシミュレーション実行中の波形を示し、スコアdは内部信号aによって条件が成立した際に履歴データベース14aに保存されるスコアが示される。検証対象回路から取得した複数の内部信号aに対して複数の条件判定がなされ、これら複数の条件が重なる場合にスコアは加算され、設計者や検証者の意図する「回路にストレスのかかった状態」となり、その状態の前後をシミュレーションすることで障害を発見する確率を高められる。各条件判定は、1つの内部信号又は2以上の内部信号の組み合わせに対して行われる。
このように、ランダムシミュレーションの実行中に、検証対象回路の内部信号aの状態に応じてスコアが測定され時系列に履歴データベース14aに保存される。
図11は、条件毎に重み付けしてスコアを計算するスコア測定回路の例を示す図である。図11において、スコア測定回路63は、検証対象回路5のシミュレーション中の回路のストレス状態を測定するために接続される回路であって、1つの内部信号又は2以上の内部信号の組み合わせに対して行われる条件毎に重み付けをして合計した値を測定したスコアとして出力する。
スコア測定回路63は、スコア条件判定回路64−1、64−2、64−3、・・・64−nと、セレクタ65−1から65−nと、加算器66とを有する。
例えば、スコア条件判定回路64−1は、検証対象回路5から取得した一の内部信号を用いて条件を判定し、条件1判定信号をセレクタ65−1に出力し、セレクタ65−1は、条件1判定信号に応じてスコア「0」又は条件1の重みスコアの一方を選択して加算器66へ供給する。
スコア条件判定回路64−2は、検証対象回路5から取得した2つの内部信号を用いて条件を判定し、条件2判定信号をセレクタ65−2に出力し、セレクタ65−2は、条件2判定信号に応じてスコア「0」又は条件2の重みスコアの一方を選択して加算器66へ供給する。
スコア条件判定回路64−3は、検証対象回路5から取得した2つの内部信号を用いて条件を判定し、条件3判定信号をセレクタ65−3に出力し、セレクタ65−3は、条件3判定信号に応じてスコア「0」又は条件3の重みスコアの一方を選択して加算器66へ供給する。
同様に、スコア条件判定回路64−nは、検証対象回路5から取得した1つの内部信号を用いて条件を判定し、条件n判定信号をセレクタ65−nに出力し、セレクタ65−nは、条件n判定信号に応じてスコア「0」又は条件nの重みスコアの一方を選択して加算器66へ供給する。
加算器66は、セレクタ65−1から65−nによって供給される値を合計して、測定したスコアとして出力する。
条件1の発生に対して条件1の重みスコア「10」が与えられ、条件2の発生に対して条件2の重みスコア「30」が与えられ、条件3の発生に対して条件3の重みスコア「10」が与えられ、・・・条件nの発生に対して条件nの重みスコア「20」が与えられるとすると、検証対象回路5から取得した内部信号と各スコアとは、例えば、図12に示されるような対応関係を示す。
図12は、図11に示す構成における検証対象回路から取得した内部信号に基づく重み付けされたスコアの測定例を示す図である。図12において、検証対象回路5から取得した複数の内部信号の波形に応じて、スコア条件判定回路1〜nによって判定された各スコアと、全スコアを合計したスコアとが例示されている。条件2と条件3とが同時に成立した場合に高スコアとなることが分かる。
上述したスコア測定方法では、スコアは条件の成立したサイクルのみで加算されているが、数サイクルの間持続して減衰するようにスコアを設定してもよい。図13は、条件が成立後に数サイクルの間持続して減衰するようにスコアを設定する例を示す図である。図13において、検証対象回路5から取得した複数の内部信号の波形に応じて、スコア条件判定回路1〜nによって判定された各スコアと、全スコアを合計したスコアとが例示されている。
例えば、条件1と条件2とが成立後、数サイクルの間持続して減衰するようにスコアが設定されているとする。条件1の成立時にはスコア「10」、条件1成立から1サイクル後ではスコア「5」、2サイクル後ではスコア「2」、3サイクル後ではスコア「1」、その後はスコア「0」となり、条件2の成立時にはスコア「10」、条件2成立から1サイクル後ではスコア「5」、2サイクル後ではスコア「2」、その後はスコア「0」となりとする。
条件1の成立から2サイクル後に条件2が成立した場合、合計のスコアは12となり高スコアを示す。このような仕組みによって、検証対象回路5が特定の状態になったサイクルだけでなく、前後に他の条件が重なるような場合にもスコアの高さで示すことができる。
スコアは、設計者又は検証者が次ぎのような状態に対して設定することが考えられる。
(1)FIFO fullのような実装上の構造から発生する状態
(2)同様の設計で発生した障害と類似の状態
(3)検証対象回路で以前に修正された障害と類似の状態
(4)「Aが発生すれば必ずBが発生する」という形式の検証項目のうち、他の手段で検証できなかったものについてAが発生する状態
以下は、図3に示す論理シミュレーション装置100に基づいて説明される。図5のステップS12で行われる、ランダムシミュレーション実行中における履歴データベース14aへの乱数の保存について図14及び図15で説明する。
図14は、1回目のランダムシミュレーションを説明するための図である。図14において、シミュレーション実行制御部20は、接続情報14fに基づいて検証対象回路3にスコア測定回路を接続し、例えば10000サイクルを指定して、乱数生成部21にクロックに同期させて10000サイクルの間乱数を発生させる。時刻「1」が1サイクルに相当する場合、時刻「0」から時刻「9999」までランダムシミュレーションが実行される。
所定記憶領域にランダムシミュレーション又は再現シミュレーションを示す切換フラグを備えるようにし、シミュレーション実行制御部20が、切換フラグにランダムシミュレーションを指定することによって、乱数選択部22は、切換フラグがランダムシミュレーションを指定している場合、乱数生成部21から乱数の入力をし、切換フラグが再現シミュレーションを指定している場合、履歴データベース14aから既に保存されている乱数を時系列に入力するようにすればよい。
図15は、ランダムシミュレーション中に履歴データベース14aに保存される履歴データの例を示す図である。図15において、検証対象回路の内部信号aは、検証対象回路3内で発生する複数の内部信号の波形を示し、入力信号bは、入力生成部23が乱数選択部22から供給される乱数に基づいて決定して検証回路3へ入力する入力信号の波形を示し、乱数cは、乱数生成部21が生成して入力生成部23へ供給する乱数の値を示し、スコアdは、スコア測定回路10によって測定されたスコアを示す。
図15に示す乱数cとスコアdとが時刻に対応させて履歴データ17として履歴データベース14aに保存される。履歴データ17は、ランダムシミュレーション毎に生成され、実行されたどのランダムシミュレーションかを識別するシミュレーション識別情報を用いて履歴データベース14aで管理されるようにしてもよい。
図5のステップS13で行われるスコアの高い状態の選択について説明する。図16は、スコアの高い状態の選択例を示す図である。図16において、ステップS12でのランダムシミュレーションが終了すると、シミュレーション実行制御部20は、履歴データ17を参照し、例えば、スコアで降順又は昇順に並べ替えて高スコアとなる時刻「504」を特定する。
図5のステップS14で行われるスコアの高い状態の再現について図17及び図18で説明する。図17は、スコアの高い状態の再現を説明するための図である。図17において、シミュレーション実行制御部20が、所定記憶領域に格納されている切換フラグに再現シミュレーションを指定することによって、乱数選択部22は、フラグが再現シミュレーションを指定している場合、乱数の入力を履歴データベース14aからの入力に切り替えて、履歴データベース14aに保存されている履歴データ17の時刻「0」から特定した時刻「504」までの乱数を時系列に順次乱数を読み込んで入力する。従って、検証対象回路3の内部信号aと、入力信号bと、乱数cと、スコアdとは、1回目のランダムシミュレーションの走行時と同じ動作を時系列的に再現し、時刻「504」に到達した際には、シミュレーション実行制御部20が選択した状態が再現される。
図18は、再現シミュレーションのための機能構成を示す図である。図18において、1回目のランダムシミュレーションにて障害が検出されなかった場合、再現シミュレーションの実行による検証対象回路3の状態を再現する過程では、期待値のチェックは不要であるので、乱数選択部22と、入力生成部23と、検証対象回路3と、履歴データベース14aとで再現シミュレーションが行われる。前述したように、乱数選択部22は、履歴データベース14aで管理される1回目のランダムシミュレーション中に記録された履歴データ17から時刻「0」から特定した時刻「504」までの乱数を時系列に順次乱数を読み込んで入力する。
図5のステップS15で行われる再現した状態からのランダムシミュレーションについて図19及び図20で説明する。図19は、再現した状態からのランダムシミュレーションを説明するための図である。図19において、再現シミュレーションによって選択した状態が再現されると、シミュレーション実行制御部20は、切換フラグにランダムシミュレーションを指定して、乱数生成部21に乱数を発生させて乱数選択部22に入力させ、乱数選択部22は切換フラグを参照することによって、乱数生成部21からの乱数の入力を選択する。
従って、回路のストレス状態となるスコアが高い状態の近辺を、集中的にランダムシミュレーションすることができる。
1回目のシミュレーションでは、ランダムシミュレーションのみが実行され、2回目以降のシミュレーションでは、時刻「0」から選択された時刻までの再現シミュレーションと再現後の状態からのランダムシミュレーションとが実行される。
2回以上シミュレーションを実行する場合には、再現した状態からのランダムシミュレーションの実行中においても、時刻に対応させて乱数とスコアとを履歴データ17に時系列に保存する。
1回目のランダムシミュレーションにおいて時刻「504」で高スコアだった場合、2回目のシミュレーション後は、新たに保存された時刻「505」から時刻「9999」において時刻「504」のスコア「50」より高いスコアとなる時刻を特定する。時刻「504」のスコア「50」より高いスコアが存在しなかったら、再度時刻「0」から時刻「504」までを再現して、ランダムシミュレーションを実行する。
一方、時刻「504」のスコア「50」より高いスコアが存在したら、その高いスコアとなった時刻を特定し、時刻「0」からその時刻までを再現して、ランダムシミュレーションを実行する。
図20は、再現した状態からのランダムシミュレーションのための機能構成を示す図である。図20において、図5のステップS15にて再現した状態からランダムシミュレーションを実行する場合、シミュレーション実行制御部20は、所定記憶領域に格納されている切換フラグにランダムシミュレーションを指定し、乱数生成部21に乱数生成を行わせることによって、乱数選択部22は、乱数生成部22からの入力を選択して入力生成部23へ乱数を供給する。
入力生成部23は、検証対象回路3への入力信号を期待値計算部24へも供給し、期待値比較部25は、検証対象回路3からの出力信号と、期待値計算部24からの出力信号の期待値とを比較して障害の発生を検出する。
図6に示す第二の処理フローの場合、スコア測定回路10による検証対象回路3の内部信号に基づくスコア測定を行い、スコアを履歴データベース14aに保存するようにする。
上述したように、ランダムシミュレーション実行中に、検証対象回路の内部信号の状態に応じて障害の発生し易い状態となる回路のストレス状態をスコアで測定し、以降のシミュレーションにおいて、高スコアとなった状態を再現し、再現した状態からランダムシミュレーションを実行することにより、回路のストレス状態を考慮してその状態を集中的にシミュレーションすることができるため、効果的なシミュレーションを行うことができる。
以上の説明に関し、更に以下の項を開示する。
(付記1)
シミュレーション実行中に論理回路の内部状態を測定してスコアで出力するスコア測定手段と、
前記シミュレーション実行中に生成された乱数と前記スコア測定手段によって出力された前記スコアとを時刻に対応させた履歴データとして、所定記憶領域に保存する履歴データ保存手段と、
前記履歴データを用いて高スコアとなる時刻を特定し、該履歴データに記録されている前記乱数を用いて前記論理回路への入力を決定して、前記シミュレーションにおける該特定した時刻までを再現する再現手段と
を有することを特徴とする論理シミュレーション装置。
(付記2)
前記乱数を生成して前記履歴データ保存手段に該生成した乱数を保存する乱数生成手段を有することを特徴とする付記1記載の論理シミュレーション装置。
(付記3)
前記乱数生成手段によって生成された乱数を入力とするか、前記履歴データに記録されている乱数を入力とするかを選択する乱数選択手段を有することを特徴とする付記2記載の論理シミュレーション装置。
(付記4)
前記スコア測定手段は、
検証対象となる前記論理回路から1又は複数の内部信号を取得して、該内部信号に基づく所定条件の成立に応じてスコアを決定することによって、該論理回路の内部状態を測定したスコアを出力するようにしたことを特徴とする付記1乃至3のいずれか一項記載の論理シミュレーション装置。
(付記5)
前記再現手段によって再現された前記特定された時刻の前記論理回路の内部状態から、新たに生成された乱数を用いて入力を決定してシミュレーションを行うようにした付記1乃至3のいずれか一項記載の論理シミュレーション装置。
(付記6)
乱数を用いて論理回路への入力を決定して前記論理回路を検証する論理シミュレーション装置における論理シミュレーション方法であって、
前記論理シミュレーション装置が、
前記論理回路への入力のための前記乱数と該論理回路の内部状態を測定して障害が発生する度合いを示すスコアとを履歴データとして所定記憶領域に記録しながら、該乱数を用いたランダムシミュレーションを実行する第一実行手順と、
前記履歴データからスコアの高い状態を選択し、該履歴データに記録された前記乱数を用いて該スコアの高い状態まで再現する再現手順と、
前記再現されたスコアの高い状態から乱数を新たに発生させてランダムシミュレーションを実行する第二実行手順とを実行し、
前記障害の発生する度合いの高い状態で前記論理回路に対してシミュレーションする確率を高めるようにしたことを特徴とする論理シミュレーション方法。
(付記7)
前記第二実行手順による前記スコアの高い状態からのランダムシミュレーションの実行中において、前記新たに発生させた乱数と該論理回路の内部状態を測定したスコアとを前記履歴データとして所定記憶領域に記録するようにしたことを特徴とする付記6記載の論理シミュレーション方法。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
スコア測定回路の接続例を示す図である。 スコア測定回路によって測定されたスコアに基づくシミュレーション方法を説明するための図である。 本発明に係る論理シミュレーション装置の機能構成例を示す図である。 論理シミュレーション装置のハードウェア構成を示す図である。 シミュレーションの第一の処理フローについて説明するための図である。 シミュレーションの第二の処理フローについて説明するための図である。 他の検証対象回路の例を示す図である。 図7に示す検証対象回路に接続されるスコア測定回路の例を示す図である。 図8に示すスコア測定回路の回路記述例を示す図である。 スコアを測定しながらシミュレーションが実行される状態を示す図である。 条件毎に重み付けしてスコアを計算するスコア測定回路の例を示す図である。 図11に示す構成における検証対象回路から取得した内部信号に基づく重み付けされたスコアの測定例を示す図である。 条件が成立後に数サイクルの間持続して減衰するようにスコアを設定する例を示す図である。 1回目のランダムシミュレーションを説明するための図である。 ランダムシミュレーション中に履歴データベースに保存される履歴データの例を示す図である。 スコアの高い状態の選択例を示す図である。 スコアの高い状態の再現を説明するための図である。 再現シミュレーションのための機能構成を示す図である。 再現した状態からのランダムシミュレーションを説明するための図である。 再現した状態からのランダムシミュレーションのための機能構成を示す図である。
符号の説明
3 検証対象回路
3a 検証対象回路記述データ
10 スコア測定回路
10a スコア測定回路記述データ
11 制御ユニット
12 入力ユニット
13 表示ユニット
14 データ記憶部
14a 履歴データベース
14f 接続情報
15 プログラム記憶部
20 シミュレーション実行制御部
21 乱数生成部
22 乱数選択部
23 入力生成部
24 期待値計算部
25 期待値比較部
30 シミュレーション実行制御部
31 乱数生成プログラム
32 乱数選択プログラム
33 入力生成プログラム
34 期待値計算プログラム
35 期待値比較プログラム
36 論理回路実行プログラム
100 論理シミュレーション装置

Claims (5)

  1. シミュレーション実行中に論理回路の内部状態を測定してスコアで出力するスコア測定手段と、
    前記シミュレーション実行中に生成された乱数と前記スコア測定手段によって出力された前記スコアとを時刻に対応させた履歴データとして、所定記憶領域に保存する履歴データ保存手段と、
    前記履歴データを用いて高スコアとなる時刻を特定し、該履歴データに記録されている前記乱数を用いて前記論理回路への入力を決定して、前記シミュレーションにおける該特定した時刻までを再現する再現手段と
    を有することを特徴とする論理シミュレーション装置。
  2. 前記乱数を生成して前記履歴データ保存手段に該生成した乱数を保存する乱数生成手段を有することを特徴とする請求項1記載の論理シミュレーション装置。
  3. 前記乱数生成手段によって生成された乱数を入力とするか、前記履歴データに記録されている乱数を入力とするかを選択する乱数選択手段を有することを特徴とする請求項2記載の論理シミュレーション装置。
  4. 前記スコア測定手段は、
    検証対象となる前記論理回路から1又は複数の内部信号を取得して、該内部信号に基づく所定条件の成立に応じてスコアを決定することによって、該論理回路の内部状態を測定したスコアを出力するようにしたことを特徴とする請求項1乃至3のいずれか一項記載の論理シミュレーション装置。
  5. 乱数を用いて論理回路への入力を決定して前記論理回路を検証する論理シミュレーション装置における論理シミュレーション方法であって、
    前記論理シミュレーション装置が、
    前記論理回路への入力のための前記乱数と該論理回路の内部状態を測定して障害が発生する度合いを示すスコアとを履歴データとして所定記憶領域に記録しながら、該乱数を用いたランダムシミュレーションを実行する第一実行手順と、
    前記履歴データからスコアの高い状態を選択し、該履歴データに記録された前記乱数を用いて該スコアの高い状態まで再現する再現手順と、
    前記再現されたスコアの高い状態から乱数を新たに発生させてランダムシミュレーションを実行する第二実行手順とを実行し、
    前記障害の発生する度合いの高い状態で前記論理回路に対してシミュレーションする確率を高めるようにしたことを特徴とする論理シミュレーション方法。
JP2007243474A 2007-09-20 2007-09-20 論理シミュレーション装置及び論理シミュレーション方法 Withdrawn JP2009075811A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007243474A JP2009075811A (ja) 2007-09-20 2007-09-20 論理シミュレーション装置及び論理シミュレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007243474A JP2009075811A (ja) 2007-09-20 2007-09-20 論理シミュレーション装置及び論理シミュレーション方法

Publications (1)

Publication Number Publication Date
JP2009075811A true JP2009075811A (ja) 2009-04-09

Family

ID=40610722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007243474A Withdrawn JP2009075811A (ja) 2007-09-20 2007-09-20 論理シミュレーション装置及び論理シミュレーション方法

Country Status (1)

Country Link
JP (1) JP2009075811A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102735985A (zh) * 2012-06-12 2012-10-17 福建睿矽微电子科技有限公司 随机电流型防探测装置及防探测方法
CN102759680A (zh) * 2012-06-12 2012-10-31 福建睿矽微电子科技有限公司 随机电压型防探测装置及防探测方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102735985A (zh) * 2012-06-12 2012-10-17 福建睿矽微电子科技有限公司 随机电流型防探测装置及防探测方法
CN102759680A (zh) * 2012-06-12 2012-10-31 福建睿矽微电子科技有限公司 随机电压型防探测装置及防探测方法
CN102759680B (zh) * 2012-06-12 2015-06-24 福建睿矽微电子科技有限公司 随机电压型防探测装置及防探测方法

Similar Documents

Publication Publication Date Title
Katrowitz et al. I'm done simulating; now what? Verification coverage analysis and correctness checking of the DEC chip 21164 Alpha microprocessor
JP4266226B2 (ja) 選択的に有効にされるチェッカーを用いた設計検証システムおよび方法
US8271252B2 (en) Automatic verification of device models
KR20120031960A (ko) 메모리 컨트롤러를 사용하는 로버스트한 메모리 링크 테스팅
US20130174108A1 (en) Automated stimulus steering during simulation of an integrated circuit design
US8036874B2 (en) Software executing device and co-operation method
US7865795B2 (en) Methods and apparatuses for generating a random sequence of commands for a semiconductor device
US7673288B1 (en) Bypassing execution of a software test using a file cache
US7308663B2 (en) Circuit design verification using checkpointing
US11409928B2 (en) Configurable digital twin
JP2009075811A (ja) 論理シミュレーション装置及び論理シミュレーション方法
US7840924B2 (en) Apparatus, method, and program for verifying logic circuit operating with multiple clock signals
US6681357B2 (en) MISR simulation tool for memory BIST application
JP4541196B2 (ja) 故障検出改善装置、故障検出改善プログラム、故障検出改善方法
JP4652317B2 (ja) 論理回路の機能検証装置、機能カバレッジアイテムの検証方法及びプログラム
JP6791543B2 (ja) 回路検証装置、回路検証方法
JP5387521B2 (ja) 論理検証シナリオ生成装置、及び、論理検証シナリオ生成プログラム
JP2011048785A (ja) 多重イベント定義装置、多重イベント検証装置、多重イベント定義方法および多重イベント定義プログラム
US7277840B2 (en) Method for detecting bus contention from RTL description
US20120123761A1 (en) Testing Software On A Computer System
JP5469106B2 (ja) コンピュータシステム、試験装置、試験方法、及び試験プログラム
JP5077219B2 (ja) シミュレーション方法、シミュレーション装置およびシミュレーションプログラム
JP6949440B2 (ja) ベクタ生成装置及びベクタ生成用プログラム
JP5799589B2 (ja) 検証方法及び検証プログラム
JP5625942B2 (ja) 設計検証プログラム,設計検証装置,設計検証方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100430

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20101208