(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-09
(45)【発行日】2024-01-17
(54)【発明の名称】コード検査ツール、コード検査方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20240110BHJP
【FI】
G06F11/36 164
(21)【出願番号】P 2020009977
(22)【出願日】2020-01-24
【審査請求日】2022-04-13
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】110000567
【氏名又は名称】弁理士法人サトー
(72)【発明者】
【氏名】伊藤 雄一
【審査官】渡辺 一帆
(56)【参考文献】
【文献】特開2005-352670(JP,A)
【文献】特開2006-024006(JP,A)
【文献】特開2012-198804(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
処理内容を表すモデル(8)に含まれているブロック(9)のうち自動コード生成に対応しておらず、ユーザが手動でコーディングしたハンドコードが対応付けられるブロックを、検査の対象である対象ブロック(10)として特定するとともに、特定した前記対象ブロックを抽出するブロック抽出部(1b)と、
前記モデルから生成された最終コード(12)のうち前記対象ブロックに対応する部分を、検査の対象である対象コードブロック(11a)として特定するとともに、特定した前記対象コードブロックを抽出する抽出部(1d)と、
抽出した前記対象ブロックおよび前記対象コードブロックをそれぞれ単独でシミュレーションするシミュレーション部(1f)と、
前記対象ブロックのシミュレーション結果(15)と、前記対象コードブロックのシミュレーション結果(18)とを比較することにより、前記対象ブロックの動作と前記対象コードブロックの動作との一致性を判定する判定部(1g)と、を備え
、
前記モデルに含まれているブロックは、前記モデルとして記述される際に自動コード生成を利用するか否かをプロパティとして設定され、
前記ブロック抽出部は、各ブロックのプロパティを参照することにより前記対象ブロックを特定するコード検査ツール。
【請求項2】
前記対象ブロックに、単独でシミュレーションするためのテストデータを入力する入力ポート(14)と、シミュレーション結果を出力する出力ポート(16)とを追加するポート追加部(1c)を備える請求項1記載のコード検査ツール。
【請求項3】
前記対象コードブロックに、単独でシミュレーションするためのテストデータを入力する入力(17)と、シミュレーション結果を出力する出力(19)とを追加する追加部(1e)を備える請求項1または2記載のコード検査ツール。
【請求項4】
前記モデルの全体に対してシミュレーションを行い、当該シミュレーション時に前記対象ブロックに入力されたデータを、前記テストデータとして生成するデータ生成部(1h)を備える請求項2または3記載のコード検査ツール。
【請求項5】
前記対象コードブロックに対するテストベクタ(20)を生成することにより、前記テストデータを補完するデータ補完部(1i)を備える請求項2から4のいずれか一項記載のコード検査ツール。
【請求項6】
コード検査ツールによって実行されるコード検査方法であって、
処理内容を表すモデル(8)に含まれているブロック(9)のうち自動コード生成に対応しておらず、ユーザが手動でコーディングしたハンドコードが対応付けられるブロックを、検査の対象である対象ブロック(10)として特定するとともに、特定した前記対象ブロックを抽出するブロック抽出処理(S1)と、
前記モデルから生成された最終コード(12)のうち前記対象ブロックに対応する部分を、検査の対象である対象コードブロック(11a)として特定するとともに、特定した前記対象コードブロックを抽出するコード抽出処理(S4)と、
抽出した前記対象ブロックおよび前記対象コードブロックをそれぞれ単独でシミュレーションするシミュレーション処理(S7)と、
前記対象ブロックのシミュレーション結果(15)と、前記対象コードブロックのシミュレーション結果(18)とを比較することにより、前記対象ブロックの動作と前記対象コードブロックの動作との一致性を判定する判定処理(S9)と、を実行
し、
前記モデルに含まれているブロックは、前記モデルとして記述される際に自動コード生成を利用するか否かをプロパティとして設定され、
前記ブロック抽出処理は、各ブロックのプロパティを参照することにより前記対象ブロックを特定するコード検査方法。
【請求項7】
前記対象ブロックに、単独でシミュレーションするためのテストデータを入力する入力ポート(14)と、シミュレーション結果を出力する出力ポート(16)とを追加するポート追加処理(S2)を実行する請求項6記載のコード検査方法。
【請求項8】
前記対象コードブロックに、単独でシミュレーションするためのテストデータを入力する入力(17)と、シミュレーション結果を出力する出力(19)とを追加する追加処理(S5)を実行する請求項6または7記載のコード検査方法。
【請求項9】
前記モデルの全体に対してシミュレーションを行い、当該シミュレーション時に前記対象ブロックに入力されたデータを、前記テストデータとして生成するデータ生成処理(S6)を実行する請求項7または8記載のコード検査方法。
【請求項10】
前記対象コードブロックに対するテストベクタ(20)を生成することにより、前記テストデータを補完するデータ補完処理(S12)を実行する請求項7から9のいずれか一項記載のコード検査方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コード検査ツール、コード検査方法に関する。
【背景技術】
【0002】
従来、処理内容を表すモデルを用いてシステム開発を行うモデルベース開発が知られている。このようなモデルベース開発では、例えば特許文献1に開示されているように、モデルからコードを自動で生成する自動コード生成の手法が用いられることがある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、モデルベース開発では、一般的に、処理単位となるブロックを複数組み合わせることによってモデルが記述される。このとき、このモデルには、自動コード生成に対応しているブロックと、例えば独自の処理が必要になるなどの理由により自動コード生成に対応していないブロックとが混在することがある。なお、自動コード生成に対応していないブロックには、手動でコーディングされたハンドコートが対応付けられる。
【0005】
そして、モデルベース開発では、モデルに基づいて生成された最終コードが、仕様としてのモデルと同様に動作すること、つまりは、最終コードの品質の確保が必要になる。そのため、モデルと最終コードの双方をそれぞれシミュレーションすることにより、モデル全体での動作と最終コード全体での動作とが一致しているかの検査が行われている。
【0006】
しかしながら、従来の検査では、モデル全体での動作と最終コード全体での動作とが一致しなかった場合、問題の箇所を特定することが困難であるという問題があった。これは、システムの規模にもよるものの最終コードは例えば数千行を超えることがあり、その最終コードから問題の箇所を特定することに多大な労力や時間が必要になるためである。
【0007】
本開示は、上記事情に鑑みてなされたものであり、その目的は、モデルベース開発における最終コードの品質を容易に確保することができるコード検査ツール、コード検査方法を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本開示のコード検査ツール(1)は、処理内容を表すモデル(8)に含まれているブロック(9)のうち自動コード生成に対応しておらず、ユーザが手動でコーディングしたハンドコードが対応付けられるブロックを、検査の対象である対象ブロック(10)として特定するとともに、特定した対象ブロックを抽出するブロック抽出部(1b)と、モデルから生成された最終コード(12)のうち対象ブロックに対応する部分を、検査の対象である対象コードブロック(11a)として特定するとともに、特定した対象コードブロックを抽出する抽出部(1d)と、抽出した対象ブロックおよび対象コードブロックをそれぞれ単独でシミュレーションするシミュレーション部(1f)と、対象ブロックのシミュレーション結果(15)と、対象コードブロックのシミュレーション結果(18)とを比較することにより、対象ブロックの動作と対象コードブロックの動作との一致性を判定する判定部(1g)と、を備え、モデルに含まれているブロックは、モデルとして記述される際に自動コード生成を利用するか否かをプロパティとして設定され、ブロック抽出部は、各ブロックのプロパティを参照することにより対象ブロックを特定するる。
【0009】
このように対象ブロックを単独で検査することにより、自動コード生成に比べて相対的に信頼性が低いと考えられるハンドコードの動作が担保され、その状態で最終コードを生成することが可能となることから、最終コードの品質を容易に確保することができる。
【図面の簡単な説明】
【0010】
【
図2】モデルベース開発の工程の概略、およびその問題点を説明する図
【
図3】入力および出力を追加する態様を模式的に示す図
【
図4】コード検査ツールによる検査処理の流れを示す図
【発明を実施するための形態】
【0011】
以下、実施形態について図面を参照しながら説明する。
図1に示すように、本実施形態のコード検査ツール1は、モデルベース開発に利用されるものであり、検査装置2で実行されるプログラムによってソフトウェアで実現されている。この検査装置2は、いわゆるパーソナルコンピュータやワークステーションなどのコンピュータで構成されており、制御部3および記憶部4などを有している。
【0012】
制御部3は、図示しないCPU、読出し専用のメモリであるROM、および読み書き可能なメモリであるRAMなどを備えている。そして、制御部3は、検査装置2が起動されると、記憶部4に記憶されているオペレーティングシステムやドライバソフトウェアなどの各種のプログラムを所定の順序で読み出して実行することにより検査装置2の全体を制御する。また、制御部3は、本実施形態に関連して、コード検査ツール1のプログラムおよびモデルベース開発用の開発ツール5のプログラムを記憶部4から読み出して実行する。ただし、制御部3が実行するプログラムはこれらに限定されない。
【0013】
この検査装置2には、表示装置6および入力装置7が接続されている。表示装置6は、例えば液晶ディスプレイで構成されており、制御部3から受けた映像信号をユーザに対して映像として表示する。入力装置7は、例えばキーボードやマウスで構成されており、ユーザの操作に応じた信号を制御部3に出力する。本実施形態の検査装置2は、モデルベース開発用の開発ツール5をインストールしたコンピュータで兼用している。
【0014】
ここで、コード検査ツール1の作用を理解しやすくするために、まずモデルベース開発の概略について説明する。モデルベース開発では、
図2にモデル生成工程として示すように、対象となるシステムの処理内容を表す仕様に相当するモデル8は、処理単位となる複数のブロック9を組み合わせることによって記述されている。
【0015】
このとき、モデル8には、開発ツール5よる自動的にコードを生成する自動コード生成に対応しているブロック9と、例えば独自の処理が必要になるなどの理由により自動コードに対応しておらず、本実施形態におけるコード検査ツール1の検査対象となる対象ブロック10とが混在することがある。この
図2では、対象ブロック10をハッチングを付すことにより識別して示している。ただし、
図2に示すモデル8は一例であり、例えば対象ブロック10が複数存在するモデル8を検査対象とすることができる。
【0016】
このような対象ブロック10は、自動コード生成に対応していないことから、
図2に対応付け工程として示すように、ユーザが手動でコーディングして例えば記憶部4に記憶されているハンドコード11が対応付けられる。ハンドコード11の対応付けが完了すると、
図2にコード化工程として示すように、モデル8全体をコード化して最終コード12が生成される。このような流れでモデルベース開発は概略として行われる。
【0017】
さて、コード検査ツール1は、モデルベース開発において、自動コード生成に対応していない対象ブロック10を検査する。このコード検査ツール1は、
図1に示すように、コード生成部1a、ブロック抽出部1b、ポート追加部1c、抽出部1d、追加部1e、シミュレーション部1f、判定部1g、データ生成部1h、およびデータ補完部1iを備えている。
【0018】
コード生成部1aは、モデル8から最終コード12を生成する。このとき、コード生成部1aは、自動コード生成に対応しているブロック9については自動でコードを生成し、対象ブロック10についてはハンドコード11を対応付けることにより最終コード12を生成する。
【0019】
ブロック抽出部1bは、
図3に示すように、モデル8に含まれているブロック9のうち自動コード生成に対応していない対象ブロック10を特定して抽出する。このとき、ブロック抽出部1bは、対象ブロック10を単独でシミュレーションできるようにその機能ごと抽出する。なお、モデル8に含まれているブロック9は、モデル8として記述する際に、自動コード生成を利用するか否か、ならびに、自動コード生成を利用しない場合にはどのコードをそのブロック9に対応付けるかをプロパティとして設定可能になっている。そのため、ブロック抽出部1bは、各ブロック9のプロパティを参照することにより、自動コード生成を利用しないブロック9、すなわち、自動コード生成に対応していないブロック9を、対象ブロック10として特定および抽出することができる。
【0020】
ポート追加部1cは、ブロック抽出部1bで抽出された対象ブロック10に対して、シミュレーション用のテストデータ13を入力するための入力ポート14と、対象ブロック10のモデルシミュレーション結果15を出力するための出力ポート16とを追加する。これにより、対象ブロック10を単独でシミュレーションすることが可能になる。このとき、各ポートは、モデル8を生成時に各ブロック9を接続するのと同様の処理を行うことにより対象ブロック10に対してデータの入出力が可能な状態に接続される。
【0021】
抽出部1dは、最終コード12から、対象ブロック10に対応する部分を対象コードブロック11aとして抽出する。なお、最終コード12は、各ブロック9に付されている名称などを元に関数が生成される。そのため、抽出部1dは、各関数の名称を参照することにより、最終コード12の中から対象コードブロック11aを特定および抽出することができる。
【0022】
追加部1eは、抽出した対象コードブロック11aに、シミュレーション用のテストデータ13を入力するための入力17と、コードシミュレーション結果18を出力するための出力19とを追加する。これにより、対象ブロック10に対応する対象コードブロック11aを単独でシミュレーションすることが可能になる。
【0023】
シミュレーション部1fは、対象ブロック10および対象コードブロック11aをシミュレーションする。このとき、シミュレーション部1fは、対象ブロック10に対してはモデルシミュレーションを行い、対象コードブロック11aに対してはコードシミュレーションを行う。本実施形態では、モデルシミュレーションとしてMILS(Model In the Loop Simulation)、コードシミュレーションとしてHILS(Hardware In the Loop. Simulation)またはPILS(Processor in the loop Simulation)のように、モデルベース開発において広く利用されている手法を採用している。
【0024】
判定部1gは、対象ブロック10に対するモデルシミュレーション結果15と、対象コードブロック11aに対するコードシミュレーション結果18とを比較することにより、対象ブロック10単独での動作と対象コードブロック11a単独での動作とが一致するか否かを判定する。
【0025】
データ生成部1hは、モデル8の全体に対してモデルシミュレーションを行い、そのモデルシミュレーション時に対象ブロック10に入力されるデータを、対象ブロック10および対象コードブロック11aに入力するためのテストデータ13として生成する。
【0026】
データ補完部1iは、シミュレーション時のカバレッジが不足している場合に、対象コードブロック11aに対して自動テスト処理(ATG:Auto Test Generation)を行ってテストベクタ20を生成することにより、シミュレーション用のテストデータ13を補完する。
【0027】
次に、上記した構成の作用について説明する。
前述のように、モデル8には、自動コード生成に対応していない対象ブロック10が混在することがある。そして、モデルベース開発では、対象ブロック10が含まれているか否かに関わらず、モデル8に基づいて生成された最終コード12が、モデル8と同様に動作することが必要になる。
【0028】
さて、自動コード生成されたコードは、十分な検証や実績に基づいて生成されるものであることから、ハンドコード11と比較して相対的に信頼性が高いと考えられる。そのため、仮に最終コード12においてモデル8の動作と異なるといった不具合が発生した場合には、ハンドコード11に不具合がある可能性が高いと考えられる。
【0029】
しかし、最終コード12は、システムの規模にもよるものの、例えば数千行を超えることがある。そのため、最終コード12の中から問題の箇所を特定することが困難であり、最終コード12の品質を確保するために多大な労力が必要となっていた。
【0030】
そこで、コード検査ツール1は、
図4に示す検査処理を行うことにより、最終コード12の品質を確保しつつ、そのための労力を削減している。なお、
図4に示す検査処理は上記した各部によって行われるものであるが、説明の簡略化のためにコード検査ツール1を主体にして説明する。また、モデル8は、検査処理を開始する前の時点で開発ツール5によって生成されているものとする。
【0031】
コード検査ツール1は、ステップS1において、モデル8から対象ブロック10を抽出する。この処理は、ブロック抽出部1bによって行われるものであり、ブロック抽出処理に相当する。そして、コード検査ツール1は、ステップS2において、対象ブロック10に対して、入力ポート14および出力ポート16の各ポートを追加する。この処理は、ポート追加部1cによって行われるものであり、ポート追加処理に相当する。
【0032】
続いて、コード検査ツール1は、ステップS3において、モデル8から最終コード12をまず生成し、ステップS4において、対象コードブロック11aとして、最終コード12から対象ブロック10に対応する対象コードブロック11aを抽出する。ステップS3の処理は、コード生成部1aにより行われるものであり、コード生成処理に相当する。また、ステップS2の処理は、抽出部1dによって行われるものであり、コード抽出処理に相当する。
【0033】
そして、コード検査ツール1は、ステップS5において、対象コードブロック11aに対して入力17および出力19を追加する。この処理は、追加部1eによって行われるものであり、追加処理に相当する。なお、ステップS1~S5の処理は、最終的に各ポートおよび入力17と出力19とを追加できれば、その順序を入れ替えることができる。
【0034】
対象ブロック10および対象コードブロック11aの抽出が完了すると、コード検査ツール1は、ステップS6において、対象ブロック10および対象コードブロック11aをシミュレーションするためのテストデータ13を生成する。この処理は、データ生成部1hによって行われるものであり、テストデータ生成処理に相当する。
【0035】
このステップS6では、コード検査ツール1は、モデル8の全体に対してまずシミュレーションを行い、そのシミュレーション時に対象ブロック10に入力されたデータをテストデータ13として生成している。なお、モデル8は各ブロック9を互いに接続するように記述されており、各接続箇所を流れるデータはシミュレーション時に把握でき、対象ブロック10への接続箇所に流れるデータをテストデータ13として取得することができる。換言すると、本実施形態では、モデル8のシミュレーションに十分であると想定されたデータを用いて、対象ブロック10および対象コードブロック11aをシミュレーションする。なお、ステップS5の処理は、判定の前であればステップS1~S5よりも前に行うこともできる。
【0036】
テストデータ13を生成すると、コード検査ツール1は、ステップS7において、対象ブロック10をモデルシミュレーションする。続いて、コード検査ツール1は、ステップS8において、は対象コードブロック11aをコードシミュレーションする。これらの処理は、シミュレーション部1fにより行われるものであり、シミュレーション処理に相当する。なお、ステップS7とステップS8とはその順序を入れ替えることができる。
【0037】
そして、コード検査ツール1は、ステップS9において、対象ブロック10に対するモデルシミュレーション結果15と、対象コードブロック11aに対するコードシミュレーション結果18とを比較し、両者が一致するか否かを判定する。この処理は、判定部1gによって行われるものであり、判定処理に相当する。
【0038】
続いて、コード検査ツール1は、シミュレーション結果が一致しないと判定した場合には、ステップS9においてNOとなることから、ステップS10に移行して対象コードブロック11aを再コーディングする。この再コーディングはユーザによって行われる。
【0039】
再コーディングが完了すると、コード検査ツール1は、ステップS8に移行して対象コードブロック11aをコードシミュレーションする。このとき、コード検査ツール1は、基本的にはシミュレーション結果が一致するまで再コーディングとシミュレーションとを繰り返す。
【0040】
そして、コード検査ツール1は、シミュレーション結果が一致したと判定した場合には、ステップS8においてYESとなることから、ステップS11に移行してカバレッジが十分であるか否かを判定する。この処理は、判定部1gによって行われるものであり、カバレッジ判定処理に相当する。コード検査ツール1は、シミュレーションのカバレッジが十分であると判定した場合には、ステップS11においてYESとなることから処理を終了する。なお、コード検査ツール1は、対象ブロック10が複数存在するモデル8を検査対象とする場合には、1つの対象ブロック10の検査が終了した後、ステップS1に移行して他の対象ブロック10に対する検査を行うことになる。
【0041】
これらの処理により、対象ブロック10単独での動作と対象コードブロック単独での動作が一致することが確認される。換言すると、これらの処理により、対象ブロック10の動作と対象コードブロック11aの動作を担保することができる。そして、検査処理が終了した後、動作が担保された状態で最終コード12が生成される。これにより、最終コード12の品質が確保される。
【0042】
一方、コード検査ツール1は、カバレッジが十分ではないと判定した場合には、ステップS11においてNOとなることから、ステップS12に移行し、テストベクタ20を生成してテストデータ13を補完する。この処理は、データ補完部1iによって行われるものであり、データ補完処理に相当する。テストデータ13を生成すると、コード検査ツール1は、ステップS7およびS8において再度シミュレーションを行い、ステップS9においてシミュレーション結果が一致したと判定すると、カバレッジが十分であるかを再度判定する。このとき、コード検査ツール1は、カバレッジが十分であると判定するまで処理を繰り返す。
【0043】
このように、コード検査ツール1およびそのコード検査ツール1を用いたコード検査方法によれば、自動コード生成に対応していない対象ブロック10を含むモデル8に対して、対象ブロック10と対象コードブロック11aとについてそれぞれ単独でシミュレーションを行う。これにより、対象ブロック10の動作を担保した状態で最終コード12を生成することが可能となる。
【0044】
以上説明した実施形態によれば、次のような効果を得ることができる。
コード検査ツール1は、処理内容を表すモデル8に含まれているブロック9のうち自動コード生成に対応していないものを検査の対象である対象ブロック10として抽出するブロック抽出部1bと、モデル8から生成された最終コード12のうち対象ブロック10に対応する部分を対象コードブロック11aとして抽出する抽出部1dと、抽出した対象ブロック10および対象コードブロック11aをそれぞれ単独でシミュレーションするシミュレーション部1fと、対象ブロック10のモデルシミュレーション結果15と、対象コードブロック11aのコードシミュレーション結果18とを比較することにより、対象ブロック10の動作と対象コードブロック11aの動作との一致性を判定する判定部1gとを備える。
【0045】
このような構成により、コード検査ツール1は、対象ブロック10と、対象コードブロック11aの動作が一致しているか否かを判定でき、動作が一致していれば対象コードブロック11aが設計の通りに動作していること、つまりは、自動コード生成よりも相対的に信頼性が低いハンドコード11の動作を担保することができる。これにより、ハンドコード11部分の動作が担保された最終コード12を生成することができ、最終コード12の品質を確保することができる。
【0046】
また、処理内容を表すモデル8に含まれているブロック9のうち自動コード生成に対応していない対象ブロック10を抽出するブロック抽出処理(S1)と、モデル8から生成された最終コード12のうち対象ブロック10に対応する部分を対象コードブロック11aとして抽出するコード抽出処理(S4)と、抽出した対象ブロック10および対象コードブロック11aをそれぞれ単独でシミュレーションするシミュレーション処理(S7)と、対象ブロック10のモデルシミュレーション結果15と対象コードブロック11aのコードシミュレーション結果18とを比較することにより対象ブロック10の動作と対象コードブロック11aの動作との一致性を判定する判定処理(S9)と、を実行するコード検査方法によっても、ハンドコード11の動作が担保された状態で最終コード12を生成することができ、最終コード12の品質を容易に確保することができる。
【0047】
また、コード検査ツール1は、対象ブロック10に、シミュレーション用のテストデータ13を入力するための入力ポート14と、シミュレーションの結果を出力するための出力ポート16とを追加するポート追加部1cを備える。これにより、モデル8に記述されている対象ブロック10を単独でシミュレーションすることができる。
【0048】
また、対象ブロック10に、シミュレーション用のテストデータ13を入力するための入力ポート14と、シミュレーションの結果を出力するための出力ポート16とを追加するポート追加処理(S2)を実行するコード検査方法によっても、対象ブロック10と対象コードブロック11aとの動作の一致性を確認できるなど、コード検査ツール1と同様の効果を得ることができる。
【0049】
また、コード検査ツール1は、対象コードブロック11aに、シミュレーション用のテストデータ13を入力するための入力17と、シミュレーションの結果を出力するための出力19とを追加する追加部1eを備える。これにより、対象ブロック10に対応する対象コードブロック11aを単独でシミュレーションすることができ、対象ブロック10単独での動作と容易に比較することができる。
【0050】
また、対象コードブロック11aに、シミュレーション用のテストデータ13を入力するための入力17と、シミュレーションの結果を出力するための出力19とを追加する追加処理(S5)を実行するコード検査方法によっても、対象ブロック10に対応する対象コードブロック11aを単独でシミュレーションすることができ、対象ブロック10単独での動作と容易に比較することができるなど、コード検査ツール1と同様の効果を得ることができる。
【0051】
また、コード検査ツール1は、モデル8の全体に対してシミュレーションを行い、当該シミュレーション時に対象ブロック10に入力されたデータをシミュレーション用のテストデータ13として生成するデータ生成部1hを備える。これにより、モデル8のシミュレーションに十分であると想定されたデータを用いて対象ブロック10およびハンドコード11をシミュレーションすることが可能となり、モデル8として必要とされる条件を最低限満たした状態であるか否かを判定できる。したがって、検査そのものの品質を向上させることができる。
【0052】
また、モデル8の全体に対してシミュレーションを行い、当該シミュレーション時に対象ブロック10に入力されたデータをシミュレーション用のテストデータ13として生成するデータ生成処理(S6)を実行するコード検査方法によっても、モデル8として必要とされる条件を最低限満たした状態であるか否かを判定でき、検査そのものの品質を向上させることができるなど、コード検査ツール1と同様の効果を得ることができる。
【0053】
また、コード検査ツール1は、テストベクタ20を生成することにより、シミュレーション用のテストデータ13を補完するデータ補完部1iを備える。これにより、シミュレーションをより詳細に、また、より厳密に行うことが可能となる。そして、そのテストデータ13を用いて行ったシミュレーションの信頼性、つまりは、対象ブロック10の動作に対する信頼性を向上させることができる。したがって、最終コード12の品質をより一層向上させることができる。
【0054】
またハンドコード11に対するテストベクタ20を生成することにより、シミュレーション用のテストデータ13を補完する補完処理(S12)を実行するコード検査方法によっても、対象ブロック10の動作に対する信頼性を向上させることができ、最終コード12の品質をより一層向上させることができるなど、コード検査ツール1と同様の効果を得ることができる。
【0055】
実施形態ではシミュレーション結果が一致しない場合に再コーディングする処理の流れを例示したが、例えば2回目以降など複数回コーディングしてもシミュレーション結果が一致しない場合には、エラーとして処理を中断したりコードを見直すよう報知したりする処理を行う流れとすることができる。
【0056】
実施形態ではカバレッジが不十分であると判定した後に再度不十分であると判定した場合にはテストデータ13を再度生成する処理の流れを示したが、例えば2回目以降など複数回補完しても不十分である場合には、エラーが生じたとして処理を中断したりテストデータ13を見直すよう報知したりする処理を行う流れとすることができる。
【0057】
本開示は、実施例に準拠して記述されたが、本開示は当該実施例や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素のみ、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範疇や思想範囲に含まれるものである。
【0058】
本開示に記載の制御部及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載の制御部及びその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載の制御部及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
【符号の説明】
【0059】
図面中、1はコード検査ツール、1bはブロック抽出部、1cはポート追加部、1dは抽出部、1eはコード追加部、1fはシミュレーション部、1gは判定部、1hは生成部、1iは補完部、8はモデル、9はブロック、10は対象ブロック、11はハンドコード、11aは対象コードブロック、13はテストデータ、14は入力ポート、15は出力ポート、17は入力、19は出力、20はテストベクタを示す。