以下、本発明の実施形態を図面を参照しつつ説明する。図1は本発明の実施例1における車載ECUの評価システムの装置構成の概略図である。図1のとおり、車載ECUの評価システムは、評価対象であるECU2に対して評価装置1を接続した構成を有する。
ECU2は、例えば車両に搭載されるECU(電子制御ユニット)であり、CPU20、メモリ21を備える。CPU20は、ECU2による車両制御における演算や指令などの各種情報処理を実行する。メモリ21は、CPU20の作業領域である一時記憶部のRAMや、CPU20の情報処理に関係する各種データやプログラムを記憶するROM(不揮発性記憶部)を有する。特にメモリ21には組み込みソフトウェア22が記憶されている。組み込みソフトウェア22は、ECU2による車両制御に関するプログラムやデータである。
評価装置1は、ECU2(あるいは特に、組み込みソフトウェア22)が正常に動作するか否かを、主に自動的に評価(検査)するための装置である。評価装置1は、評価作業のための特別な機器でもよく、あるいは一般的なパーソナルコンピュータに本発明に関するプログラムを搭載したものでもよい。
以下で説明する評価装置1を用いた評価作業の一実施形態は例えば、新たな機能を組み込んだ(現バージョンの)ECU2(あるいはECU2の組み込みソフトウェア)に対する評価作業とすればよい。その際、現バージョンのECU(組み込みソフトウェア)の評価作業に先立って、新たな機能を組み込む前の(前バージョンの)ECU(組み込みソフトウェア)に対する評価が過去に行われている。そして前バージョンのECU(組み込みソフトウェア)に対する評価結果を利用して現バージョンのECU2(組み込みソフトウェア)の評価を行う。
この実施例では、前バージョンのECUの評価の際に用いられた入力(ベンチ操作データ)、およびその入力に対する望ましい出力(ECUが正常な場合の出力、以下で期待値と呼称)を予め取得し、記憶しておく。そして、その記憶されている入力を、現バージョンのECU2に入力する。それにより得られたECU2の出力を、記憶されている出力(期待値)と比較して、差異の部分はエラーと判断する。
現バージョンのECUにおいて機能を変更した(新たな機能を組み込んだ、ある機能は省いた、ある機能を変更した等)ことによって、場合によってはエラーが大量に発生するが、機能を変更したことを原因とするエラーは、本来エラーとはみなされるべきではなく、むしろ期待値の方が誤っているとみなされるべきである。発明者の知見によれば、機能の変更に起因するエラーは同じパターンで時間的に繰り返す性質がある。本発明の検査装置1は、この性質に着目して、機能の変更に起因するエラーの検出、表示、削除などの処理を実行する。
具体的な評価装置1の構成例は図1のとおりであり、評価装置1はCPU10、メモリ11、入力部12、出力部13を備える。CPU10は自動評価を行う場合に自動評価に関する情報処理全般を実行する。メモリ11は例えば自動評価の際に用いられるプログラムやデータが記憶される。入力部12は作業者(ユーザ)からの入力を受け付ける部位であり、例えば操作ボタンや、キーボードやマウスなど、任意の形態の入力部でよい。
出力部13は、ユーザ(作業者)へ評価結果などを出力する部位であり、例えば液晶ディスプレイやプリンタなど、任意の形態の出力部でよい。さらに入力部12、出力部13には、他の機器からの入力、他の機器への出力を行う部分も含ませてよい。なお図1のシステム構成は本発明における最小限の構成と言ってよく、評価対象の評価に関する構成、例えば作業者がベンチマークテストの操作入力をマニュアルで入力する操作部などを適宜付加してもよい。その構成の場合、評価装置1は例えば、操作部からの入力、評価対象からの出力の時系列データ(ログ)を取得するログデータ取得機能などを備える(そしてそのなかから期待値データを抽出して本発明に用いる)としてよい。
メモリ11には、例えば入力データ110(ベンチ操作データ)、期待値データ111、自動評価プログラム112が記憶されている。入力データ110は、前バージョンのECUに対する評価で用いた時系列の入力データである。期待値データ111は、前バージョンのECUが正常な場合に、入力データ110が入力されたときの時系列の出力データである。自動評価プログラム112は、本発明における自動評価を実行するプログラムであり、その処理手順は例えば後述の図2で示されている。
図3から図9には、評価装置1によって機能の違いによって発生した時間的に繰り返すエラー(パターンエラー)の例が示されている。なおECU2の入出力データは、一般にはアナログデータもデジタルデータも含む。以下のパターンエラーの例においては、図5、図8、図9はアナログ、それ以外はデジタルで示しているが、これらはそれぞれ一例に過ぎず、図3から図9のパターンエラーはどれも、アナログデータに対してもデジタルデータに対しても発生し得る。
図3の例は、波形が時間的に遅れるパターンを繰り返す(以下、遅れパターンエラー)の例である。図3に示すとおり、実際値の波形のうち2つの立下り箇所(負のエッジの箇所、つまりデジタル量がH(1)からL(0)へ遷移する箇所)で、期間A1、A2の時間遅れを繰り返している。この例は立下り箇所での遅れパターンの例だが、本発明は立上り箇所(正のエッジの箇所、つまりデジタル量がL(0)からH(1)へ遷移する箇所)での遅れも扱う対象に含む。
図4の例は、時間的に波形が進むパターンを繰り返す(以下、進みパターンエラー)の例である。図4の場合、実際値の波形のうち2つの立上り箇所で、期間B1、B2の時間進みを繰り返している。この例は立上り箇所での進みパターンの例だが、本発明は立下り箇所での進みも扱う対象に含む。
図5の例は、波形が同じパターンで歪む現象を繰り返す(以下、歪みパターンエラー)例である。図5の場合、期待値が三角波であるのに対して、実際値は三角波の頂点付近が曲線状に歪むパターンが繰り返されている。本発明で扱われる歪みパターンエラーは図5の例には限定されず、類似したエラー形状の波形が繰り返すエラーであればよい。
図6の例は、波形が反転するパターンを繰り返す(以下、反転パターンエラー)例である。ここで反転とは、デジタルにおけるL(0)とH(1)とが入れ替わることを指す。図6の場合、期待値と実際値で、H(1)とL(0)が正反対となるエラーが繰り返されている。
図7の例は、遅れが繰り返されるエラーにおいて、時間の進行につれて遅れ時間が累積するパターン(以下、累積パターンエラー)の例である。図7の場合、期待値と比較して、実際値の立上り、立下り箇所が順に期間C1,C2,C3,C4,C5,C6だけ遅れるパターンが発生している。ここで累積パターンエラーとは、例えばC1,C2,C3,C4,C5,C6の順で遅れ幅が単調増加しているパターンを指すとすればよい。
図8の例は、同じ値だけ出力値がずれる誤差(オフセット誤差)が繰り返すパターン(以下、オフセットパターンエラー)の例である。図8の場合、期待値と比較して実際値の波形が全体的にD1だけ平行移動している。D1は正でも負でもよい。
図9の例は、同じ比率で出力値が増加(あるいは減少)する誤差を繰り返すパターン(以下、等倍パターンエラー)の例である。図9の場合、期待値と比較して実際値の全ての時間の数値がE2/E1の比率で増加(減少)している。
以上の図3から図9のパターンエラーのそれぞれに対して、それを検出する検出ルーチン113、・・、すなわち図3に示された遅れパターンエラーを検出する遅れエラー検出ルーチン、図4に示された進みパターンエラーを検出する進みエラー検出ルーチン、図5に示された歪みパターンエラーを検出する歪みエラー検出ルーチン、図6に示された反転パターンエラーを検出する反転エラー検出ルーチン、図7に示された累積パターンエラーを検出する累積エラー検出ルーチン、図8に示されたオフセットパターンエラーを検出するオフセットエラー検出ルーチン、図9に示された等倍パターンエラーを検出する等倍エラー検出ルーチン、等を予め設計しておく。
遅れエラー検出ルーチンは例えば、実際値波形における全ての立上り箇所、立下り箇所で図3でのA1,A2のような時間遅れがあるか否かをチェックして、所定値以上の時間遅れは全て検出するルーチンとすればよい。その際、所定値とは例えば装置特有の公差とすればよい。ここで公差とは、評価装置1が所定のサンプル周期のもとでデジタル量が所定回数連続して0(あるいは1)となったらそこで初めて0(あるいは1)に変わったと判別する場合、その所定回数とサンプル周期の積が公差となる。
同様に進みエラー検出ルーチンは、実際値波形における全ての立上り箇所、立下り箇所で図4でのB1,B2のような時間進みがあるか否かをチェックして、所定値以上の時間進みは全て検出するルーチンとすればよい。
歪みエラー検出ルーチンは、期待値と実際値との差分波形であるエラー波形が、所定の条件を満たす場合に、それを歪みエラーパターンだとして検出するルーチンとすればよい。歪みエラーの検出においてはパターンマッチングの手法が1つの有効な手法と考えられるが、これに関しては後述する。
反転エラー検出ルーチンは、例えばエラー発生箇所において(エラーの発生は単純に期待値と実際値との時々刻々の差分がゼロでないことで検出できる)、期待値の否定と実際値との差分の累積値を算出して、その累積値が所定値未満の場合に、反転エラーパターンだとして検出するルーチンとすればよい。
累積エラー検出ルーチンは例えば、上述の遅れエラー検出ルーチンあるいは進みエラー検出ルーチンによって検出された遅れエラーパターン、進みエラーパターンの箇所において、遅れ幅あるいは進み幅が徐々に増加している場合に、それを累積エラーパターンだとして検出するルーチンとすればよい。
オフセットエラー検出ルーチンは例えば、エラーが発生している箇所で、期待値と実際値の差分が一定(あるいは所定範囲内)の場合に、それをオフセットエラーパターンだとして検出するルーチンとすればよい。等倍エラー検出ルーチンは例えば、エラーが発生している箇所で、期待値と実際値の比が一定(あるいは所定範囲内)の場合に、それを等倍エラーパターンだとして検出するルーチンとすればよい。これら複数の検出ルーチン113、・・を図1に示すように、例えばサブルーチンとして自動評価プログラム112に組み込んでおけばよい。
以上の構成のもとで評価装置1はECU1の自動評価を実行する。その処理手順の例が図2に示されている。図2の処理手順は、評価装置1のCPU10が自動評価プログラム112をメモリ11から呼び出して自動的に実行すればよい。
図2の処理では、まずS10でCPU10はメモリ11に記憶されている入力データ110、すなわち前バージョンのECUの評価で用いた入力を、図1に示すとおりに所定の通信線を通じて現バージョンのECU2に入力する。
次にS20でCPU10は、S10での入力を受けたECU2からの出力(応答)を、図1のとおり所定の通信線を通じて取得する。後述の図3以降で示すように、S10で入力される入力、S20で取得される出力は時系列データ(時間波形)であり、デジタルデータの場合もアナログデータの場合もある。
次にS30でCPU10は、S20で取得した出力データと、メモリ11に記憶された期待値データとを比較する。具体的には、出力データと期待値データとの同じ時間における数値を比較(あるいは差分を算出)すればよい。
次にS40でCPU10は、S30の比較処理においてエラーと判断された箇所、すなわち出力データと期待値データとで数値が異なっていることが検出された箇所(エラー箇所)を記憶する。次にS50でCPU10は、S40で記憶されたエラー箇所の総数を算出する。
次にS60以降で、本発明の主要部であるパターンエラーの検出処理を実行する。まずS60でCPU10は、メモリ11から1つの検出ルーチン113を呼び出す。そしてS70でCPU10は、S60で呼び出した検出ルーチンを用いて、その検出ルーチンの検出対象となるパターンエラー(つまり呼び出された検出ルーチンが遅れ検出ルーチンならば遅れパターンエラー)を検出する。
次にS80でCPU10は、S70で検出されたパターンエラーの箇所を記憶する。次にS90でCPU10は、S80で記憶されたパターンエラーの総数を集計する。次にS100でCPU10は、図1に示されるようにメモリ11内(あるいは自動評価プログラム112内)に記憶されている全ての検出ルーチン113、・・を用いたパターンエラーの検出が終了したか否かを判別する。全ての検出ルーチンによる検出が終了した場合(S100:YES)はS110へ進み、まだ残った検出ルーチンがある場合(S100:NO)はS60へ戻って使っていない検出ルーチンを呼び出して上記手順を繰り返す。
S110に進んだらCPU10は、上記処理で得た結果などを評価結果として出力部13へ出力する。その際、例えば出力部13が液晶ディスプレイの場合はそこにエラー総数を表示する、出力部13がプリンタの場合はそれによりエラー総数を印刷する、等の処理を行えばよい。以上が図2の処理手順である。
図10、図11には上記S110における出力の例が示されている。上述のとおりS110における出力は、例えば表示や印刷などの任意の出力でよい。図10の出力(例えば表示や印刷)の例では、期待値(図1に示された期待値データ111)と実際値(S20で取得されたデータ)の時間波形が並列的に示されている。
そしてS40で記憶されたエラー箇所が指示手段200、201、202(指示記号)で示されている。ただし、このうちS90で記憶されたパターンエラーの箇所は異なる記号によって示している。図10の場合、指示手段200、202で示された部分がS90で遅れエラーパターンとして記憶された部分であり、指示手段201で示された部分はパターンエラーではない。
指示手段200、202は指示手段201とは異なる記号であり、作業者が容易に視覚的に識別可能となっている。図10の出力結果を見ることにより、作業者は例えば、念のため全てのエラー部分をチェックしつつ、非パターンエラーの部分に特に注意を集中して、組み込みソフトウェア22の当該部分にバグがないかを調べる作業に移ることができる。
なお上記例のように、出力中で非パターンエラーを指示する手段とパターンエラーを指示する手段とは、例えば異なる記号、異なる色、あるいは点滅の有無などを用いて、作業者が視覚的に識別可能であればよい。さらに非パターンエラーのなかでも、例えば遅れパターンエラー、進みパターンエラー、歪みパターンエラー、反転パターンエラー、累積パターンエラー、オフセットパターンエラー、等倍パターンエラーのそれぞれに対して異なる記号、異なる色、あるいは点滅の有無などを用いて、異なる種類のパターンエラーが視覚的に識別可能なようにすればよい。
図11の出力(例えば表示や印刷)例は、図2による評価結果をまとめて箇条書きにした評価結果レポートの例である。「(1)エラー総数」と示された箇所が、例えばS50で集計された数を示す箇所である。「(2)パターンエラー数」と示された箇所が、例えばS100で集計された遅れエラー、進みパターンエラーなど、全てのパターンエラー数の合計数を示す箇所であり、「(a)遅れエラー数」、「(b)進みエラー数」などと示された箇所が、個別に遅れエラー数、進みエラー数、等を示す箇所である。
「(3)非パターンエラー数」と示された箇所は、エラー総数のうちパターンエラーを除いた総数を示す箇所、すなわち上記(1)から(2)を差し引いた数を示す箇所である。それぞれの右側の四角の領域に該等する数字を示せばよい。図11の出力結果を見ることにより作業者は、パターンエラー、非パターンエラー、さらにパターンエラーにおける特定の種類のパターンエラーの検出結果が一覧で認識できる。図10や図11などの出力結果により例えば、機能の違いによるパターンエラーに作業者が関わる時間をより短くして、評価対象のエラー(バグ)とみられる箇所の分析により多くの時間を使うことができる。
なお上記の遅れパターンエラー検出ルーチン、進みパターンエラー検出ルーチン、歪みパターンエラー検出ルーチン、反転パターンエラー検出ルーチン、累積パターンエラー検出ルーチン、オフセットパターンエラー検出ルーチン、等倍パターンエラー検出ルーチン等の検出ルーチンは、いわゆるプラグインの手法により自動評価プログラム112に組み込まれるとし、新たなパターンエラー検出ルーチンの追加、削除などの処理が例えば入力部12を用いて簡単に行えるようにしてもよい。また、作業者が入力部12を用いて、これらのパターンエラー検出ルーチンのうちどれを用いるかを、例えば図2の処理を実行する前に設定できるようにしてもよい。
次に実施例2を説明する。実施例1では自動的な評価処理の手順の例を示したが、実施例2では作業者による操作を組み込む形態としている。図12には実施例2における処理手順の例が示されている。なお実施例2(および後述の実施例3、4)でも図1のシステム構成を用いればよい。
図12の処理手順は、例えば自動評価プログラム112の一部に組み込むか、自動評価プログラム112とは別のプログラムのかたちで、メモリ11に記憶しておき、CPU10が呼び出して実行すればよい。図12の処理手順では、まずS200で作業者(ユーザ)が、例えば入力部12を用いて表示指令を入力する。
S200での指令を受けてS210でCPU10は、表示処理を行う。続いてS220でCPU10は、複数の選択肢を表示する。ここで選択肢とは、評価装置1が検出したパターンエラーの箇所をエラーとはみなさない(エラーから除外する)か否かの選択肢であり、その表示例が図13に示されている。この表示例では、エラーから除外するか否かの質問事項と、そのYES,NOの選択肢が表示されている。例えば図10を表示して、同じ画面(の一部)で図13の表示を行ってもよい。
続いてS230で作業者は、例えば入力部12を用いて、S210で表示された選択肢の中から所望の項目、すなわち図13の場合、「YES」と「NO」のうちいずれかを選択する入力を行う。そしてS240でCPU10は、「除外」(すなわち「YES」)が選択されたか否かを判別する。「除外」が選択された場合(S240:YES)はS250に進み、「除外」が選択されなかった場合(S240:NO)は図12の処理を終了する。なおS220での選択肢表示は例えば、遅れパターンエラー、進みパターンエラーなど、種類の異なるパターンエラーごとに行えばよい。
S250に進んだらCPU10は、除外処理を行う。具体的には、評価装置1が検出した全てのエラー箇所からS240で除外が選択された繰り返しエラーパターンを除外する。以上が図12の処理手順である。この手順により、評価装置1が検出したパターンエラーの具体的な時間波形を作業者が見たうえで、エラーから除外するか否かを作業者自身が決定できるので、作業者の判断を加えることで評価作業の信頼性が向上する。
次に実施例3を説明する。図2の処理手順例では、検出ルーチン130を用いてパターンエラーを検出したが、パターンエラーの検出においてはパターンマッチングの手法を用いることが考えられる。実施例3ではパターンマッチングを用いたパターンエラーを検出する。
実施例3での処理手順の例が図15に示されている。この処理手順を用いる場合、図14に示すように、例えば自動評価プログラム112’内に例えば図3から図9の個々のパターンエラーに対応する複数のモデルパターン113’、・・を記憶しておく。図15の処理手順は、図2の処理手順のうちS60、S70、S100をS55、S65,S75,S105に置き換えたものである。図2と同符号の処理は同じ処理を行えばよいので、重複する説明を省略する。
図15のS55でCPU10は、メモリ11内から1つのモデルパターンを呼び出す。そしてS65でCPU10は、S20で得た時系列の出力データのなかから所定範囲を最初から順番に切り出し、切り出された波形とS55で呼び出したモデルパターンとの一致率を算出する。
S65での算出においては従来からあるパターンマッチングの手法で用いられる算出法を任意に用いればよい。この算出を、例えば時系列出力データの最初から最後まで行い、それぞれに対して一致率を算出する処理を繰り返す。なお上記の切り出し処理は、個々のモデルパターンに応じて適宜変更すればよく、たとえば遅れパターン、進みパターンの場合は期待値波形の立下りや立上りの箇所のみでもよい。
続いてS75でCPU10は、S65で算出した一致率が予め設定しておいた閾値よりも高い切り出し箇所を抽出して記憶する。そしてS105でCPU10は、全てのモデルパターンを用いたか否かを判別する。全てのモデルパターンを用いた一致率算出処理が終了している場合(S105:YES)はS110へ進み、まだ一致率算出処理を行っていないモデルパターンがメモリ11内にある場合(S105:NO)はS55へ戻って上記処理を繰り返す。以上が図15の処理手順である。以上の処理手順により、これまで様々に開発されてきているモデルマッチングの手法を有効に活用して、パターンエラーの検出処理を高精度に行える。
次に実施例4を説明する。実施例4ではパターンエラーに関してさらに詳細な分析を行う。具体的には、様々な条件とパターンエラーの発生との相関を算出する。その処理手順の例は図16に示されている。なお以下で相関とは、相関そのものの数値でもよく、相関に相当する数値でもよい。図16の処理手順は図2の処理手順にS106,S107を付加したものである。図2と同符号の処理は重複する説明を省略する。
手順S106では、作業者が分析したい条件を例えば入力部12を用いて入力する。分析したい条件の例は後述する。そしてS107でCPU10は、S106で入力された条件とパターンエラー発生との相関を算出する。なおS106では予め条件の候補を例えばメモリ11に記憶しておいて出力部13に表示し、そのなかから作業者が入力部12を用いて選択する形態でもよい。またS106を省略して、予め記憶しておいた全ての条件とパターンエラー発生との相関をS107で算出する形態としてもよい。
S107の算出結果を受けたS110での出力例が図17、図18に示されている。図17、図18の例では、パターンエラーとエラー発生部位との相関、あるいはパターンエラーと入力との相関を算出している。なお図17は出力せず図18のみを出力するとしてもよい。
図17の例では、期待値と実際値とを比較すると、いくつかの箇所で遅れパターンエラー、進みパターンエラーが発生している。具体的には、立上り箇所300、302、304、306、308、310では遅れパターンエラー、進みパターンエラーともに発生していない。立下り箇所301、303、305、307、309、311のうちで、立下り箇所301、303、307、311では遅れパターンエラーが、立下り箇所309では進みパターンエラーが発生している。図17の下部には入力F1,F2の時間波形が示されている。
この例では、S105で作業者が例えば「立下り」、「入力F1がH」、「入力F2がH」、「立下りかつ入力F1がH」という条件を入力したとする。S106ではこれらの条件と各パターンエラーとの相関が算出されるが、以下では遅れパターンエラーの場合を説明する。
図17の場合、「立下り」と言う条件に該等し遅れパターンエラーが発生する可能性がある箇所は、立下り箇所301、303、305、307、309、311の6箇所であり、このうち遅れパターンエラーが実際に発生しているのは301、303、307、311の4箇所である。したがって「立下り」という条件のもとでの遅れパタンエラー発生率は4/6=66%である。
「入力F1がH」という条件に該等し遅れパターンエラーが発生する可能性がある箇所は、立上り箇所300、302、304、306、308、310、立下り箇所301、303、305、307、311の11箇所であり、このうち遅れパターンエラーが実際に発生しているのは301、303、307、311の4箇所である。したがって「入力F1がH」という条件のもとでの遅れパタンエラー発生率は4/11=36%である。
「入力F2がH」という条件に該等し遅れパターンエラーが発生する可能性がある箇所は、立上り箇所302、304、308、310、立下り箇所303、305、309、311の8箇所であり、このうち遅れパターンエラーが実際に発生しているのは303、311の2箇所である。したがって「入力F2がH」という条件のもとでの遅れパタンエラー発生率は2/8=25%である。
「立下りかつ入力F1がH」という条件に該等し遅れパターンエラーが発生する可能性がある箇所は、立下り箇所301、303、305、307、311の5箇所であり、このうち遅れパターンエラーが実際に発生しているのは301、303、307、311の4箇所である。したがって「立下りかつ入力F1がH」という条件のもとでの遅れパタンエラー発生率は4/5=80%である。
図18においては、各条件のもとで以上のように算出された数値を出力(例えば表示)している。こうした出力を見ることによって作業者は、例えば「立下りかつ入力F1がH」が遅れパターンエラーの発生と強い(正の)相関を有するという情報を得る。これにより、逆に「立下りかつ入力F1がH」であるにも関わらず遅れパターンエラーが発生していない箇所に着目する方向に進むこともできる。
すなわち、図17の場合、立下り箇所305のみが「立下りかつ入力F1がH」であるにも関わらず遅れパターンエラーが発生していない。したがって例えば、組み込みソフトウェア22において立下り箇所305に対応する部分にバグがあるのではないかという推測を立てることができ、そこを詳細に調べる作業に移ることができる。以上の観点から、図17を表示する場合、立下り箇所305のみの指示手段を表示する(あるいは立下り箇所305のみの指示手段を、他のエラー箇所の指示手段と識別可能に表示する)としてもよい。
以上のように本発明の評価装置は、組み込みソフトウェア22のバグの箇所を絞り込むために有用な情報を提示するので、バージョンアップ等による機能の違いに伴うエラーが多数発生した状況でも、バグの除去が効率的に行える。
上記実施例は特許請求の範囲に記載された趣旨の範囲内で適宜変更してよい。また上記実施例は任意に組み合わせて実施すればよい。例えば上記実施例はECUの評価装置の例だが、本発明はこれに限定されず、時系列の信号を入力するための入力部と時系列の信号を出力するための出力部とを備えた任意の機器の評価装置に適用できる。
また上記実施例ではパターンエラーの例として、遅れパターンエラー、進みパターンエラー、歪みパターンエラー、反転パターンエラー、累積パターンエラー、オフセットパターンエラー、等倍パターンエラーを示したが、これらは例に過ぎず、本発明は、時間的に繰り返すエラーであればこれ以外のパターンエラーにも適用される。