JP5951130B2 - プログラム検証装置及びプログラム検証方法及びプログラム - Google Patents
プログラム検証装置及びプログラム検証方法及びプログラム Download PDFInfo
- Publication number
- JP5951130B2 JP5951130B2 JP2015522353A JP2015522353A JP5951130B2 JP 5951130 B2 JP5951130 B2 JP 5951130B2 JP 2015522353 A JP2015522353 A JP 2015522353A JP 2015522353 A JP2015522353 A JP 2015522353A JP 5951130 B2 JP5951130 B2 JP 5951130B2
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- program
- verification
- target program
- verification target
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 182
- 230000008569 process Effects 0.000 claims description 158
- 238000012795 verification Methods 0.000 claims description 153
- 238000012545 processing Methods 0.000 claims description 42
- 238000004422 calculation algorithm Methods 0.000 claims description 2
- 238000004458 analytical method Methods 0.000 description 28
- 238000004088 simulation Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 15
- 238000012544 monitoring process Methods 0.000 description 14
- 238000012360 testing method Methods 0.000 description 14
- 230000004044 response Effects 0.000 description 13
- 230000004913 activation Effects 0.000 description 11
- 238000001994 activation Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
また、ユーザの安全志向の高まりにより、製品の安全性を機能的に担保するための機能安全規格が様々な分野で策定されている。
一例として、自動車向けの機能安全規格ISO26262が2011年11月に策定され、製品開発において、コストアップを伴わない規格への対応が要求されている。
I/Oデバイスの点数及び種類の増加により、処理順序や実行タイミングの全てを網羅した試験を行うことが困難になっている。
このため、S/W結合試験以降の実機動作時(制御S/Wが制御機器に実装されて実行される際)に、試験では想定されなかった特殊な条件下で制御S/Wが実行され、H/W−S/Wインタフェースに関する不具合が発生することが問題になっている。
具体的には、以下の要求事項を実現することが求められる。
(1)検証結果を保証するため、可能な限り、検証対象のプログラムである実装コードを修正しないこと。
(2)H/WとS/Wの並行動作による処理のバリエーションをもれなく検証可能なこと。
(3)実装コードの有限時間動作を模擬可能なこと。
一般に、機器を止めずに無限時間動作を続ける状況は考えにくいため、有限時間動作の模擬でよい。
また、モデル検査による実装コード解析(例えば非特許文献1)では、実装コードをSMT(Satisfiability Modulo Theories)形式という専用記述に変換することで、有限時間での並行動作のバリエーションをもれなく検証可能である。
しかし、試験実施者が手作業により検証の条件を設定すると、試験実施者が想定する条件内での試験しかできず、H/WとS/Wの並行動作による処理のバリエーションをもれなく検証できるとは限らない(要求事項(2)を達成できない)。
しかし、実装コードと専用記述とが一致していることの保証が困難であり、実装コードと専用記述との間の一致性を保証するための追加工数が発生してしまう(要求事項(1)を達成できない)。
割込みに関する設定を行う割込み設定処理が含まれる検証対象プログラムを検証するプログラム検証装置であって、
前記検証対象プログラムを解析し、前記検証対象プログラムを実行する機器にて前記検証対象プログラムが実行された際に割込みが発生する可能性がある複数のタイミングをそれぞれ割込み候補タイミングとして指定する割込み候補タイミング指定部と、
前記検証対象プログラムを実行するプログラム実行部と、
前記プログラム実行部による前記検証対象プログラムの実行時に、前記割込み設定処理により前記割込み候補タイミングに割込みを禁止する設定が行われていれば、前記割込み候補タイミングに割込みを発生させず、前記割込み設定処理により前記割込み候補タイミングに割込みを許可する設定が行われていれば、前記割込み候補タイミングに割込みを発生させる割込み発生部と、
前記複数の割込み候補タイミングのうち、割込みを禁止することが適正であると想定される割込み候補タイミングを割込み禁止想定タイミングとして選択し、前記検証対象プログラムの実行結果を解析し、前記割込み禁止想定タイミングに前記割込み設定処理により割込みを禁止する設定が行われたか否かを判断する検証部とを有することを特徴とする。
このため、割込み制御について、実機動作時と同じ条件で検証対象プログラムの検証を行うことができる。
本実施の形態では、検証対象プログラムである実装コードを可能な限り修正せずに、H/WとS/Wの並行動作による処理のバリエーションを検証するシミュレータ装置を説明する。
より具体的には、本実施の形態では、単体試験においてI/Oデバイスの動作を模擬するI/Oデバイス模擬プログラムを用いて、実装コードを検証するシミュレータ装置を説明する。
本実施の形態に係るシミュレータ装置により、S/W結合試験以降からの手戻り工数を削減することが可能になる。
なお、シミュレータ装置100は、プログラム検証装置の例に相当する。
実装コード500は、シミュレータ装置100を用いた検証を含む試験後に、制御機器200に実装され、制御機器200で実行される。
実装コード500は、シミュレータ装置100による検証の対象となるプログラムであり、検証対象プログラムの例に相当する。
制御機器200には、ハードウェアとして、I/Oポート204、I/Oポート205、割込み206、タイマ207が含まれる。
また、図2には図示を省略しているが、制御機器200にはCPU(Central Processing Unit)又はマイクロコンピュータ、メモリといったハードウェアが搭載される。
制御機器200は、センサデバイス300や駆動デバイス400などの制御対象に、デジタル信号またはアナログ信号を送受信するためのI/Oポート204、205を介して接続され、I/Oポート204、205を介してセンサデバイス300及び駆動デバイス400を制御する。
I/Oデバイス模擬プログラム600は、図2に示すように、センサデバイス300、駆動デバイス400、I/Oポート204、I/Oポート205、割込み206及びタイマ207を模擬するプログラムである。
シミュレータ装置100は、実装コード500及びI/Oデバイス模擬プログラム600を実行して、制御機器200の動作を模擬する。
制御処理A201及び制御処理B202は、制御対象に物理的な制御をかけるための制御ロジックを実現する。
ハードウェアドライバ203は、制御処理A201及び制御処理B202とH/W(I/Oポート204、I/Oポート205、割込み206、タイマ207)との間を仲介するプログラムである。
ハードウェアドライバ203において、I/O処理2031は、制御処理A201、制御処理B202のI/Oポート204、205へのレジスタアクセスを仲介する。
割込み処理2032は、H/Wからの割込み発生に対するハンドラとして機能する。
タイマ処理2033は、H/Wからのタイムアウト発生に対するハンドラとして機能する。
シミュレータ装置100には、スケジューラ101、検証シナリオ作成部102、制御監視部103、検証項目解析部104、割込み模擬部105、タイマ模擬部106が含まれる。
各要素の詳細は、図2を参照して後述する。
以下にて、割込みについての検証とイベント発生回数についての検証を概説する。
また、以下では、説明の便宜上、割込みについての検証と、イベント発生回数についての検証を分けて説明するが、シミュレータ装置100は、割り込みについての検証とイベント発生回数についての検証を並行して行うことができる。
このような局面では、制御処理またはハードウェアドライバ内の各処理は、割込みを禁止して当該複数の変数にアクセスすることが必要である。
割込みについての検証では、シミュレータ装置100は、このような割込みを禁止することが適正と想定されるタイミング(割込み禁止想定タイミングという)で制御処理A201が適切に割込みを禁止しているか否かを検証する。
また、制御処理及びハードウェアドライバ内の各処理は、割込みを許可する設定(以下、許可設定ともいう)及び割込みを禁止する設定(以下、禁止設定ともいう)を行っており、割込み設定処理の例にも相当する。
検証シナリオ作成部102は、実装コード500が制御機器200に実装されて制御機器200により実行される際に割込みが発生する可能性のある複数のタイミング(割込み候補タイミング又は割込みポイントという)を指定する。
次に、スケジューラ101が、検証のために実装コード500を実行する。
実装コード500の実行中に割込み候補タイミングが到来する度に、割込み模擬部105は、制御処理A201が許可設定及び禁止設定のいずれを行っているかを調査する。
割込み模擬部105は、割込み候補タイミングにおいて許可設定が行われていれば、割込みを発生させる。
一方、割込み候補タイミングにおいて禁止設定が行われていれば、割込み模擬部105は、割込みを発生させない。
実装コード500の実行が完了すると、検証項目解析部104が、複数の割込み候補タイミングのうち、割込みを禁止すること適正が想定される割込み候補タイミング(制御処理による禁止設定の適否をユーザに判断してもらうことが望ましいと考えられる割込み候補タイミング)を割込み禁止想定タイミングとして選択し、実装コード500の実行結果に基づき、割込み禁止想定タイミングで制御処理A201が適切に割込みを禁止しているか否かを検証する。
関連イベントは、例えば、要求イベントと応答イベントのように因果関係にある2つ以上のイベントである。
また、シミュレータ装置100は、実装コード500が適正な場合の関連イベント間の発生回数の関係を記憶している。
例えば、シミュレータ装置100が、イベントAとイベントBとを関連イベントとして対応付けて記憶していると仮定する。
この場合に、シミュレータ装置100は、関連イベントの発生回数の関係として、例えば、イベントAの発生回数とイベントBの発生回数とが等しいという関係を記憶している。
そして、実装コード500の実行が完了した後に、検証項目解析部104が、関連イベントの発生回数が適正であるか否かを検証する。
前出の例では、制御監視部103がイベントAの発生回数とイベントBの発生回数を計数し、検証項目解析部104が、計数されたイベントAの発生回数とイベントBの発生回数が等しいか否かを検証する。
スケジューラ101は、制御処理A201及び制御処理B202とハードウェアドライバ203内の各処理を周期的に起動する。
これらの処理間で制御信号と呼ぶ共有変数を介してデータが送受信され、また、制御操作が実行される。
なお、図3に示した処理と信号の関係は例示であり、本実施の形態の適用範囲を図3の例に限定するものではない。
制御操作と制御信号に関する説明を以下にて行う。
連携操作には、ある制御処理(例えば制御処理A201)が他の制御処理(例えば制御処理B202)に所定の演算を要求する要求操作と、演算を要求された制御処理(例えば制御処理B202)が要求元の制御処理(例えば制御処理A201)に演算結果を応答する応答操作が含まれる。
I/O操作には、制御処理がI/Oデバイスからデータを読み込む操作、制御処理がI/Oデバイスへデータを書き出す操作が含まれる。
割込み操作には、制御処理が割込み許可を設定する操作、制御処理が割込み禁止を設定する操作が含まれる。
タイマ操作には、制御処理がタイマ開始を通知する操作、制御処理がタイマ終了を通知する操作、制御処理がタイムアウトの通知を受け付ける操作が含まれる。
I/O信号には、制御処理とI/O処理2031との間の情報伝達のためのI/Oポート信号252、制御処理と割込み処理2032との間の情報伝達のための状態変数253、制御処理とタイマ処理2033との間の情報伝達のためのカウンタ信号254が含まれる。
なお、I/O信号として、図3に示していない信号を追加してもよい。
また、シミュレータ装置100は、例えば、I/O操作におけるI/O読み込み操作とI/O書出し操作も関連イベントとして管理する。
また、シミュレータ装置100は、例えば、割り込み操作における割込み許可の設定操作と割込み禁止の設定操作も関連イベントとして管理する。
更に、シミュレータ装置100は、例えば、タイマ操作におけるタイマ開始を通知する操作、タイマ終了の通知を受け付ける操作、タイムアウトの通知を受け付ける操作も関連イベントとして管理する。
例えば、スケジューラ101は、ハードウェアドライバ203の実行優先度が制御処理よりも高ければ、制御処理の実行を中断してハードウェアドライバ203の実行を開始し、ハードウェアドライバ203の実行が終了した後に制御処理の実行を再開する。
制御処理とハードウェアドライバ203は、制御信号の値に基づいて、それぞれの処理内容を変更する。
検証シナリオは、入力シーケンス情報と割込みポイント情報で構成される。
入力シーケンス情報は、実装コード500に入力される入力値の変遷が示される情報である。
入力シーケンス情報は、例えば、図7に示す情報である。
割込みポイント情報は、割込みポイントが示される情報である。
割込みポイント情報は、例えば、図8に示す情報である。
なお、入力シーケンス情報及び割込みポイント情報の詳細は、後述する。
なお、検証シナリオ作成部102により生成された検証シナリオは、検証シナリオ記憶部110に格納される。
なお、検証シナリオ作成部102は、割込み候補タイミング指定部の例に相当する。
スケジューラ設定は、実装コード500とI/Oデバイス模擬プログラム600の起動周期及び起動順序が示されている情報である。
スケジューラ設定は、例えば、図9に示す情報である。
スケジューラ設定の詳細は後述する。
なお、実装コード実行部1011は、プログラム実行部の例に相当する。
そして、I/Oデバイス模擬プログラム実行部1012は、検証シナリオ及びスケジューラ設定に従って、I/Oデバイス模擬プログラム600を実行する。
I/Oデバイス模擬プログラム実行部1012は、I/Oデバイス模擬プログラム600の実行にあたって、タイマ模擬部106からのタイマ通知も利用する。
また、I/Oデバイス模擬プログラム実行部1012は、割込み模擬部105からのH/W割込みに基づき、割込み206を模擬して、ハードウェアドライバ203内の割込み処理2032に対して割込みを要求する。
I/Oデバイス模擬プログラム実行部1012は、プログラム実行部の例に相当し、また、割込み発生部の例にも相当する。
そして、割込み模擬部105は、検証シナリオとI/Oデバイス状態情報(割込み)に従ってH/W割込みの動作を模擬する。
I/Oデバイス状態情報(割込み)には、割込みが許可されているか、割込みが禁止されているかが示される。
I/Oデバイス状態情報(割込み)は、例えば、図10に示す情報である。
割込み模擬部105は、検証シナリオに示される割込みポイントが到来した際に、I/Oデバイス状態情報(割込み)を参照し、割込みが許可されている場合に、H/W割込みをI/Oデバイス模擬プログラム実行部1012に通知する。
I/Oデバイス状態情報(割込み)の詳細は後述する。
割込み模擬部105は、割込み発生部の例に相当する。
I/Oデバイス状態情報(タイマ)には、タイマ設定の詳細が示される。
I/Oデバイス状態情報(タイマ)は、図11に示す情報である。
I/Oデバイス状態情報(タイマ)の詳細は後述する。
また、制御監視部103は、実装コード500の実行中に、制御処理A201等による制御信号(変数)へのアクセス状況を監視する。
更に、制御監視部103は、制御操作回数を制御操作回数記憶部112に記録し、変数アクセス状況を制御信号アクセスログとして制御信号アクセスログ記憶部113に記録する。
制御操作回数は、例えば図12〜図15に示す形式で制御操作回数記憶部112に記録される。
また、制御信号アクセスログは、例えば図16に示す情報である。
制御操作情報には、関連イベントである関連操作が示され、関連操作間の発生回数の関係についての条件が示される。
制御操作情報は、例えば、図19に示す情報である。
図19の例では、演算の種類が異なる連携操作Xと連携操作Yが示される。
連携操作Xでは、制御処理A201からの要求操作と制御処理B202からの応答操作が関連操作として定義され、連携操作Yでは、制御処理B202からの要求操作と制御処理A201からの応答操作が関連操作として定義されている。
また、図19の例では、関係条件が「±0」となっており、要求操作の発生回数と応答操作の発生回数が等しいことが条件となっている。
関係条件は、実装コード500が適正な場合の関連操作間の発生回数の関係が定義されており、図19の例では、実装コード500が適正な場合は、要求操作の発生回数と応答操作の発生回数が等しいことが定義されている。
図19では図示を省略しているが、制御操作情報には、図19と同様の内容がI/O操作、割込み操作、タイマ操作にも定義されている。
また、図19の例では、要求操作の発生回数と応答操作の発生回数が等しいことが条件となっているが、これ以外の条件を定義してもよい。
例えば、[要求操作の回数]≧[応答操作の回数]であれば実装コード500が適正と判断する旨の条件を定義してもよい。
なお、制御監視部103は、計数部の例に相当する。
また、制御操作情報は関連イベント情報の例に相当する。
また、制御操作情報記憶部115は関連イベント情報記憶部の例に相当する。
また、検証項目解析部104は、制御信号アクセスログ記憶部113から制御信号アクセスログを読み出す。
そして、検証項目解析部104は、制御処理A201等による制御信号(変数)へのアクセス状況を解析し、割込み禁止想定タイミングにおいて適切に割込みが禁止されているか否かを検証する。
また、検証項目解析部104は検証結果を示す検証レポートを作成し、作成した検証レポートを検証レポート記憶部114に格納する。
検証項目解析部104は、検証部の例に相当する。
図4のフローチャートの入力は、実装コード500と連携変数を識別する情報である。
図4のフローチャートの出力は、実装コード500の実行結果を検証項目解析部104が検証した結果である検証レポートである。
以降では、図4のフローチャートの各ステップを順に説明していくが、各ステップを説明順に実行するわけではない。
実装コード500の実行(S102)から割込み処理の実行(S106)までの各ステップが逐次実行され、I/Oデバイス模擬プログラム600の実行(S107)からタイマ処理の実行(S109)までの各ステップが逐次実行され、これら2つのフローが並行に実行される。
前述したように、検証シナリオは、入力シーケンス情報と割込みポイント情報から構成される。
入力シーケンス情報は、ハードウェアドライバ203を介して実装コード500に与える入力値を時系列に並べた情報である。
割込みポイント情報は、H/Wでの割込み発生を模擬するタイミング(割込みポイント)を指定する情報である。
または、検証シナリオ作成部102は、実装コード500のカバレッジ基準(例えばC0、C1、C2、MC/DC(Modified Condition/Decision Coverage)など)に基づいて、例えば既存の方法を用いて入力シーケンス情報を作成してもよい。
または、これら2つの方法を組み合わせて作成してもよい。
そして、検証シナリオ作成部102は、競合制御信号へのアクセスの前後をそれぞれ割込みポイントとして指定する。
図6は、競合制御信号及び割込みポイントを説明する。
図6では、制御処理A201及び割込み処理2032が状態変数1〜3にアクセスし、タイマ処理2033が状態変数3にアクセスしている。
このように、状態変数1〜3は、複数の処理によりアクセスされており、検証シナリオ作成部102は、状態変数1〜3を競合制御信号として抽出する。
そして、検証シナリオ作成部102は、各状態変数へのアクセスの前後のタイミングを割込みポイントとして指定する。
図6の例では、検証シナリオ作成部102は、4つのタイミングを割込みポイントとして指定している。
図7の例では、実装コード500の入力変数をi、jとし、入力変数i、jに代入される値を時系列に示している。
図7の各行は、1つの試験での入力値のパターンを示している。
本実施の形態では、シミュレータ装置100は有限時間動作を模擬するため、入力シーケンス情報では、最大ステップ数が指定されている。
最大ステップ数は、起動回数の最大値、すなわち動作終了時点を判定するための起動回数である。
図8は、割込みポイント情報の例を示している。
図8は、図6の例に対応させた割込みポイント情報である。
前述したように、状態変数1〜3へのアクセスの前後のタイミングが割込みポイントである。
シミュレータ装置100は、図7の行数分の試験を行う。
つまり、入力シーケンス情報がn行で構成されていれば、割込み模擬部105は、入力シーケンス情報の各行の入力値のパターンを用いて、実装コード500の実行をn回繰り返す。
そして、割込み模擬部105は、実装コード500の各回の実行時に、図8に示す割込みポイントにて割込みが禁止されていなければ、H/W割込みを発生させる。
検証シナリオが生成されると、スケジューラ設定で指定されている起動周期と起動順序に従って、実装コード500中の制御処理とI/Oデバイス模擬プログラム600が実行される(S102、S107)。
スケジューラ設定を図9に示す。
また、起動順序は、同じ起動周期を持つ処理が複数ある場合の実行優先度を表す。
起動順序が「1」の処理が優先して実行される。
実装コード500の実行中に、制御処理により割込みの許可又は割込みの禁止が設定される。
具体的には、I/Oデバイス状態記憶部111内のI/Oデバイス状態情報(割込み)に、割込みの許可又は割込みの禁止が設定される。
図10では、X及びYという2つの割込み206が配置される場合のI/Oデバイス状態情報(割込み)が示されている。
また、制御処理の中でタイマ開始又はタイマ終了が発生すると、I/Oデバイス状態記憶部111内のI/Oデバイス状態情報(タイマ)にタイマ管理のための情報が記述される。
図11は、I/Oデバイス状態情報(タイマ)の例を示す。
図11では、X及びYという2つのタイマ207が配置される場合のI/Oデバイス状態情報(タイマ)が示されている。
I/Oデバイス状態情報(タイマ)では、タイマ種別としてワンショット(1回タイムアウトしたらタイマが自動的に終了)又は継続(タイマ終了操作をするまで何度でもタイムアウトが発生)、タイマ状態として開始又は終了が設定される。
また、I/Oデバイス状態情報(タイマ)では、タイマ値やカウンタも設定される。
制御監視部103は、実装コード500の実行の間(S102)、制御操作と制御信号アクセスを監視する(S103)。
制御監視部103は、制御操作を検出した場合は、該当する制御操作の制御操作回数をインクリメントする(S104)。
また、制御監視部103は、制御信号アクセスを検出した場合は、制御信号アクセスログに制御信号名、アクセス種別、およびアクセス値を時間順に追加していく(S105)。
図12は、連携操作での制御操作回数を示す制御操作回数情報(連携操作)である。
図13は、I/O操作での制御操作回数を示す制御操作回数情報(I/O操作)である。
図14は、割込み操作での制御操作回数を示す制御操作回数情報(割込み操作)である。
図15は、タイマ操作での制御操作回数を示す制御操作回数情報(タイマ操作)である。
制御操作回数情報(連携操作)及び制御操作回数情報(I/O操作)では、「関係条件」が「YES」となっている2つの制御操作が関連操作である。
つまり、「関係条件」が「YES」となっている2つの制御操作は、図19の制御操作情報で関連操作として定義されている。
また、制御操作回数情報(割込み操作)及び制御操作回数情報(タイマ操作)では、同じ行に記述されている制御操作の対が関連操作である。
制御信号アクセスログには、「処理名」、「制御信号名」、「アクセス種別」、「アクセス値」が記述される。
「処理名」の欄では、制御信号へのアクセスを行った処理の名称が記述される。
「制御信号名」の欄では、アクセスの対象となった制御信号の名称が記述される。
「アクセス種別」の欄では、実施されたアクセスの種別が記述される。
「アクセス値」の欄では、制御信号から読み出された又は制御信号に書き出された値が記述される。
割込み模擬部105は、図8に示した割込みポイントの際に、図10のI/Oデバイス状態情報(割込み)を参照し、割込み状態が「許可」の場合に、H/W割込みを発生させる(S106)。
割込み模擬部105がH/W割込みを発生させると、I/Oデバイス模擬プログラム実行部1012がI/Oポート205を模擬して、実装コード500の割込み処理2032に対して割込みを発生させる。
割込み処理2032は、対象の制御信号(例えば、状態変数1)にアクセスする。
一方、割込みポイントの際の割込み状態が「禁止」であれば、割込み模擬部105はH/W割込みを発生させない。
また、カウンタがタイマ値以上になってタイマが満了したら、実装コード実行部1011は、該当するタイマ処理2033を実行する。
各制御操作の判定方法を以下に示す。
「要求操作」の発生回数=「応答操作」の発生回数(関係条件がYESの場合)
「I/O読込み」の発生回数=「I/O書出し」の発生回数(関係条件がYESの場合)
「割込み許可」の発生回数=「割込み禁止」の発生回数
「タイマ開始」の発生回数=「タイマ終了」の発生回数+「タイムアウト」の発生回数(ワンショットの場合)
「タイマ開始」の発生回数=「タイマ終了」の発生回数(継続の場合)
図12〜図15の例では、検証項目解析部104は、制御処理Aの連携操作Xは適正と判断し、制御処理Bの連携操作Yも適正と判断する。
また、制御処理AのI/O操作Xは適正でないと判断する。
また、制御処理Aの割込み操作Xは適正と判断し、制御処理Bの割込み操作Yは適正でないと判断する。
制御処理Aのタイマ操作Xは適正と判断し、制御処理Bのタイマ操作Yは適正でないと判断する。
図16の例では、検証項目解析部104は、競合制御信号である状態変数1、状態変数2、状態変数3に着目する。
図16の例では、制御処理Aからこれらの状態変数へのアクセス(No.2、No.4、No.5)の間に、割込み処理から状態変数1へのアクセス(No.3)が混在しているので、検証項目解析部104は、割込み禁止想定タイミングにおいて適正に割込みが禁止されなかったと判断する。
つまり、検証項目解析部104は、複数の割込み候補タイミングのうち、制御処理Aから状態変数1、状態変数2、状態変数3へのアクセスの合間にあたるタイミングを割込み禁止想定タイミングとして選択し、割込み禁止想定タイミングに状態変数1、状態変数2、状態変数3のいずれかに対して他の処理からのアクセスがあったか否かを検査する。
そして、検証項目解析部104は、割込み禁止想定タイミングに状態変数1、状態変数2、状態変数3のいずれかに対して他の処理からのアクセスがあれば、適正に割込みが禁止されなかったと判断する。
検証レポートには、少なくとも、検証項目解析部104により適正と判断されなかった項目(制御操作回数、割込み制御)が記述される。
例えば、シミュレータ装置100の利用者は、シミュレータ装置100により生成された検証レポートを用いて、ISO26262認証取得のマイクロコンピュータ・エミュレータで実装コードの動作確認を行う。
このようにすると、実装コードを容易にISO26262規格に適合させることができる。
このため、実装コードと専用記述との一致性保証が不要であり、検証結果の正しさの保証が容易である。
実装コードと連携変数を解析して入力シーケンスと割込みポイントからなる検証シナリオを作成する構成と、
スケジューラ設定で指定する起動周期と起動順序に従って実装コードを実行する構成と、
スケジューラ設定と検証シナリオに従って、I/Oデバイス模擬プログラムを実行する構成と、
I/Oデバイス状態情報で指定するタイマ種別、タイマ状態、およびタイマ値に従ってH/Wタイマの動作を模擬する構成と、
実装コードの実行中の制御操作を監視して制御操作回数を記録する構成と、
実装コードの実行中の制御信号へのアクセスを監視して制御信号アクセスログを記録する構成と、
検証シナリオとI/Oデバイス状態情報で指定する割込み状態に従ってH/W割込みの動作を模擬する構成と、
制御操作回数の記録において要求と応答が正しく対応するかチェックする構成と、
制御信号アクセスログの記録において競合制御信号に排他的にアクセスしているかを検証する構成と、
制御操作回数と制御信号アクセスログのチェック結果から検証レポートを作成する構成と、
を備えたソフトウェア並行動作検証装置を説明した。
実施の形態1では、検証対象の制御処理を常時動作させて実装コード500を検証する方法を説明した。
本実施の形態では、検証対象の制御処理を動的に生成又は削除して実装コード500を検証する方法を説明する。
図17のスケジューラ設定では、図9のスケジューラ設定と比較して、起動トリガと起動状態の欄が追加されている。
起動トリガの欄には、制御処理を起動又は終了するためのイベントが示される。
図17の例では、連携信号、I/Oポート、状態変数、カウンタが記述される。
図17の例では、制御処理Cは、例えば、所定の連携信号251を入力するイベントが発生した際に、動作を開始する。
そして、ある制御処理の起動トリガに合致する状態が発生したら、起動状態が「開始」であれば、実装コード実行部1011は、その制御処理の周期的な実行を開始する。
また、ある制御処理の起動トリガに合致する状態が発生したら、起動状態が「終了」であれば、実装コード実行部1011は、その制御処理の周期的な実行を終了する。
実施の形態1では、制御処理ごとに制御操作回数を検証する方法を説明した。
本実施の形態では、複数の制御処理をまとめたグループ単位で制御操作回数を検証する方法を説明する。
つまり、本実施の形態では、検証項目解析部104は、複数の制御処理にまたがって、制御操作回数間の関係が適正であるかを検証する。
このような場合に対応させるため、本実施の形態に係るシミュレータ装置100では、制御処理のグループを作成して、グループ内で要求操作の回数と応答操作の回数が等しければ適正と判定する。
本実施の形態では、実施の形態1と同様に、割込み模擬部105は、制御処理の単位で制御操作回数を計数するが、検証項目解析部104による検証は、制御処理のグループ単位で行う。
本実施の形態では、例えば、図18に示す制御操作回数情報を用いる。
図18では、図14の制御操作回数情報(割込み操作)に対して、「グループ名」の欄が追加されている。
つまり、図18の例では、制御処理Aと制御処理Bがグループ化されている。
図18では、制御操作回数情報(割込み操作)だけを示すが、制御操作回数情報(連携操作)、制御操作回数情報(I/O操作)、制御操作回数情報(タイマ操作)でも同様にグループの情報を追加する。
図18では、制御処理A及び制御処理Bのそれぞれでは、割込み許可の回数≠割込み禁止の回数になっているが、グループαの単位で検証すると、割込み許可の回数=割込み禁止の回数となっているので、検証項目解析部104は、制御操作回数が適正であると判断する。
シミュレータ装置100はコンピュータであり、シミュレータ装置100の各要素をプログラムで実現することができる。
シミュレータ装置100のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
図1に示す「〜記憶部」は、外部記憶装置902又は主記憶装置903で実現される。
通信装置904は、例えばNIC(Network Interface Card)である。
入出力装置905は、例えばマウス、キーボード、ディスプレイ装置である。
プログラムは、図1に示す「〜部」(「〜記憶部」を除く。以下でも同様)として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1に示す「〜部」の機能を実現するプログラムを実行する。
また、実施の形態1〜3の説明において、「〜の判断」、「〜の判定」、「〜の検証」、「〜の抽出」、「〜の検出」、「〜の指定」、「〜の設定」、「〜の計数」、「〜の模擬」、「〜の実行」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
Claims (14)
- 割込みに関する設定を行う割込み設定処理が含まれる検証対象プログラムを検証するプログラム検証装置であって、
前記検証対象プログラムを解析し、前記検証対象プログラムを実行する機器にて前記検証対象プログラムが実行された際に割込みが発生する可能性がある複数のタイミングをそれぞれ割込み候補タイミングとして指定する割込み候補タイミング指定部と、
前記検証対象プログラムを実行するプログラム実行部と、
前記プログラム実行部による前記検証対象プログラムの実行時に、前記割込み設定処理により前記割込み候補タイミングに割込みを禁止する設定が行われていれば、前記割込み候補タイミングに割込みを発生させず、前記割込み設定処理により前記割込み候補タイミングに割込みを許可する設定が行われていれば、前記割込み候補タイミングに割込みを発生させる割込み発生部と、
複数の前記割込み候補タイミングのうち、割込みを禁止することが適正であると想定される割込み候補タイミングを割込み禁止想定タイミングとして選択し、前記検証対象プログラムの実行結果を解析し、前記割込み禁止想定タイミングに前記割込み設定処理により割込みを禁止する設定が行われたか否かを判断する検証部とを有することを特徴とするプログラム検証装置。 - 前記プログラム実行部は、
変数にアクセスする処理である変数アクセス処理が含まれる検証対象プログラムを実行し、
前記割込み候補タイミング指定部は、
前記変数アクセス処理によりアクセスされる変数であって前記割込み発生部が割込みを発生させる際に前記割込み発生部によりアクセスされる変数を競合変数として抽出し、
前記変数アクセス処理による前記競合変数へのアクセスの前後のタイミングをそれぞれ割込み候補タイミングとして指定することを特徴とする請求項1に記載のプログラム検証装置。 - 前記検証部は、
前記複数の割込み候補タイミングのうち、前記変数アクセス処理による前記競合変数へのアクセスの合間にあたる割込み候補タイミングを前記割込み禁止想定タイミングとして選択し、前記割込み禁止想定タイミングに前記割込み設定処理により割込みを禁止する設定が行われたか否かを判断することを特徴とする請求項2に記載のプログラム検証装置。 - 前記検証部は、
前記検証対象プログラムの実行結果として前記競合変数へのアクセス履歴を解析し、前記変数アクセス処理による前記競合変数へのアクセスの合間に割込みによる前記競合変数へのアクセスがあったことを検出した場合に、前記割込み設定処理により前記割込み禁止想定タイミングに割込みを禁止する設定が行われなかったと判断することを特徴とする請求項3に記載のプログラム検証装置。 - 検証対象プログラムを検証するプログラム検証装置であって、
前記検証対象プログラムの実行により発生する複数のイベントのうち関連のある2以上のイベントがそれぞれ関連イベントとして相互に対応付けられて示され、前記検証対象プログラムが適正な場合の関連イベント間の発生回数の関係が示される関連イベント情報を記憶する関連イベント情報記憶部と、
前記検証対象プログラムを実行するプログラム実行部と、
前記プログラム実行部による前記検証対象プログラムの実行中の各関連イベントの発生回数を計数する計数部と、
前記計数部により計数された発生回数の関連イベント間の関係が前記関連イベント情報に示されている関係に合致するか否かを判断する検証部とを有することを特徴とするプログラム検証装置。 - 前記関連イベント情報記憶部は、
関連イベント間の発生回数の関係として、関連イベント間で発生回数がつり合うことが示される関連イベント情報を記憶し、
前記検証部は、
前記計数部により計数された発生回数が関連イベント間でつり合っているか否かを判断することを特徴とする請求項5に記載のプログラム検証装置。 - 前記関連イベント情報記憶部は、
前記検証対象プログラムに含まれる制御処理の実行により発生する、関連する2以上のイベント、
前記検証対象プログラムに含まれるI/O(Input/Output)処理の実行により発生する、関連する2以上のイベント、
前記検証対象プログラムに含まれる割込み処理の実行により発生する、関連する2以上のイベント、
前記検証対象プログラムに含まれるタイマ処理の実行により発生する、関連する2以上のイベントのうちの少なくともいずれかが関連イベントとして示される関連イベント情報を記憶することを特徴とする請求項5又は6に記載のプログラム検証装置。 - 前記プログラム実行部は、
I/O(Input/Output)デバイスを制御する制御機器の動作アルゴリズムが記述された検証対象プログラムを、前記I/Oデバイスの動作及び前記制御機器の前記I/Oデバイスに対するインタフェースの動作を模擬するI/Oデバイス模擬プログラムとともに、実行することを特徴とする請求項1〜7のいずれかに記載のプログラム検証装置。 - 前記プログラム実行部は、
複数の制御処理が含まれ、前記複数の制御処理のうちの特定の制御処理に対して起動イベントが定義されている検証対象プログラムを実行し、
前記検証対象プログラムの実行中に、前記特定の制御処理の起動イベントが発生した際に、前記特定の制御処理を起動することを特徴とする請求項1〜8のいずれかに記載のプログラム検証装置。 - 前記プログラム実行部は、
複数の制御処理が含まれ、前記複数の制御処理のうちの特定の制御処理に対して終了イベントが定義されている検証対象プログラムを実行し、
前記検証対象プログラムの実行中に、前記特定の制御処理の終了イベントが発生した際に、前記特定の制御処理を終了することを特徴とする請求項1〜9のいずれかに記載のプログラム検証装置。 - 前記プログラム実行部は、
複数の制御処理が含まれる検証対象プログラムを実行し、
前記計数部は、
前記プログラム実行部による前記検証対象プログラムの実行中の各関連イベントの発生回数を制御処理の単位で計数し、
前記検証部は、
2以上の制御処理にまたがって、前記計数部により計数された発生回数の関連イベント間の関係が前記関連イベント情報に示されている関係に合致するか否かを判断することを特徴とする請求項5に記載のプログラム検証装置。 - コンピュータが、割込みに関する設定を行う割込み設定処理が含まれる検証対象プログラムを検証するプログラム検証方法であって、
前記コンピュータが、前記検証対象プログラムを解析し、前記検証対象プログラムを実行する機器にて前記検証対象プログラムが実行された際に割込みが発生する可能性がある複数のタイミングをそれぞれ割込み候補タイミングとして指定し、
前記コンピュータが、前記検証対象プログラムを実行し、
前記コンピュータが、前記検証対象プログラムの実行時に、前記割込み設定処理により前記割込み候補タイミングに割込みを禁止する設定が行われていれば、前記割込み候補タイミングに割込みを発生させず、前記割込み設定処理により前記割込み候補タイミングに割込みを許可する設定が行われていれば、前記割込み候補タイミングに割込みを発生させ、
前記コンピュータが、複数の前記割込み候補タイミングのうち、割込みを禁止することが適正であると想定される割込み候補タイミングを割込み禁止想定タイミングとして選択し、前記検証対象プログラムの実行結果を解析し、前記割込み禁止想定タイミングに前記割込み設定処理により割込みを禁止する設定が行われたか否かを判断することを特徴とするプログラム検証方法。 - コンピュータが、検証対象プログラムを検証するプログラム検証方法であって、
前記検証対象プログラムの実行により発生する複数のイベントのうち関連のある2以上のイベントがそれぞれ関連イベントとして相互に対応付けられて示され、前記検証対象プログラムが適正な場合の関連イベント間の発生回数の関係が示される関連イベント情報を、前記コンピュータが、所定の記憶領域から読み出し、
前記コンピュータが、前記検証対象プログラムを実行し、
前記コンピュータが、前記検証対象プログラムの実行中の各関連イベントの発生回数を計数し、
前記コンピュータが、計数された発生回数の関連イベント間の関係が前記関連イベント情報に示されている関係に合致するか否かを判断することを特徴とするプログラム検証方法。 - コンピュータを、請求項1又は5に記載されたプログラム検証装置として機能させることを特徴とするプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/066381 WO2014199496A1 (ja) | 2013-06-13 | 2013-06-13 | プログラム検証装置及びプログラム検証方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5951130B2 true JP5951130B2 (ja) | 2016-07-13 |
JPWO2014199496A1 JPWO2014199496A1 (ja) | 2017-02-23 |
Family
ID=52021826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015522353A Active JP5951130B2 (ja) | 2013-06-13 | 2013-06-13 | プログラム検証装置及びプログラム検証方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5951130B2 (ja) |
WO (1) | WO2014199496A1 (ja) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07249012A (ja) * | 1993-07-07 | 1995-09-26 | Fujitsu Ltd | シミュレータ |
JPH09319613A (ja) * | 1996-03-29 | 1997-12-12 | Toshiba Corp | プログラム開発支援装置及びプログラム開発支援方法 |
JP2005309800A (ja) * | 2004-04-22 | 2005-11-04 | Matsushita Electric Ind Co Ltd | ソフトウェア検証方法および検証用データ作成方法 |
US7505952B1 (en) * | 2003-10-20 | 2009-03-17 | The Board Of Trustees Of The Leland Stanford Junior University | Statistical inference of static analysis rules |
JP2010160704A (ja) * | 2009-01-08 | 2010-07-22 | Toshiba Corp | デバッグ支援装置 |
JP2012014523A (ja) * | 2010-07-01 | 2012-01-19 | Hitachi Ltd | サブルーチン実行監視装置及びサブルーチン実行監視方法 |
JP2013045177A (ja) * | 2011-08-22 | 2013-03-04 | Canon Inc | 情報処理装置及びプログラム |
-
2013
- 2013-06-13 JP JP2015522353A patent/JP5951130B2/ja active Active
- 2013-06-13 WO PCT/JP2013/066381 patent/WO2014199496A1/ja active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07249012A (ja) * | 1993-07-07 | 1995-09-26 | Fujitsu Ltd | シミュレータ |
JPH09319613A (ja) * | 1996-03-29 | 1997-12-12 | Toshiba Corp | プログラム開発支援装置及びプログラム開発支援方法 |
US7505952B1 (en) * | 2003-10-20 | 2009-03-17 | The Board Of Trustees Of The Leland Stanford Junior University | Statistical inference of static analysis rules |
JP2005309800A (ja) * | 2004-04-22 | 2005-11-04 | Matsushita Electric Ind Co Ltd | ソフトウェア検証方法および検証用データ作成方法 |
JP2010160704A (ja) * | 2009-01-08 | 2010-07-22 | Toshiba Corp | デバッグ支援装置 |
JP2012014523A (ja) * | 2010-07-01 | 2012-01-19 | Hitachi Ltd | サブルーチン実行監視装置及びサブルーチン実行監視方法 |
JP2013045177A (ja) * | 2011-08-22 | 2013-03-04 | Canon Inc | 情報処理装置及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2014199496A1 (ja) | 2017-02-23 |
WO2014199496A1 (ja) | 2014-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10489564B2 (en) | Method and execution environment for the secure execution of program instructions | |
De Schutter | Better Software. Faster!: Best Practices in Virtual Prototyping | |
US9075911B2 (en) | System and method for usage pattern analysis and simulation | |
US8543953B2 (en) | Automated stimulus steering during simulation of an integrated circuit design | |
WO2012065774A1 (en) | A method for attesting a plurality of data processing systems | |
US9792402B1 (en) | Method and system for debugging a system on chip under test | |
US10592703B1 (en) | Method and system for processing verification tests for testing a design under test | |
US10997344B2 (en) | ECU simulation device | |
US20210374215A1 (en) | Method for licensing a tool chain | |
Bognar et al. | Mind the gap: Studying the insecurity of provably secure embedded trusted execution architectures | |
US10592623B2 (en) | Assertion statement check and debug | |
JP5992107B2 (ja) | プログラム検証装置及びプログラム検証方法及びプログラム | |
JP5951130B2 (ja) | プログラム検証装置及びプログラム検証方法及びプログラム | |
US20160063162A1 (en) | System and method using pass/fail test results to prioritize electronic design verification review | |
JP6155050B2 (ja) | 情報処理装置の論理検証方法及びプログラム | |
US9152414B2 (en) | System and method to select compatible open-source software and components for developed or conceptualized solution | |
US20160070846A1 (en) | System for testing ic design | |
US20130074023A1 (en) | Test Functionality Integrity Verification for Integrated Circuit Design | |
CN111708698B (zh) | 一种应用程序模拟备案方法及相关装置 | |
JP2828590B2 (ja) | マイクロプログラム検証方法 | |
JP5625942B2 (ja) | 設計検証プログラム,設計検証装置,設計検証方法 | |
CN111368264A (zh) | 应用程序的验证方法、电脑装置及其主机板 | |
JP6949440B2 (ja) | ベクタ生成装置及びベクタ生成用プログラム | |
WO2022162998A1 (ja) | 電子制御装置のシミュレーション装置 | |
JP2014071775A (ja) | システム開発支援装置およびシステム開発支援方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160510 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160607 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5951130 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |