(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0024】
本開示では、シリアル・ビット・ストリーム用の正規表現エンジンを用いる試験測定装置の実施形態を説明する。
【0025】
図1は、本発明の実施例による正規表現エンジンを有する試験測定装置のブロック図である。この機器は、シリアル・ビット・ストリーム10を受けるように構成された制御器12を含む。シリアル・ビット・ストリーム10は、種々の方法で発生できる。例えば、機器は、入力信号をデジタル化するように構成されたオシロスコープにできる。デジタル化アナログ信号として表すことができるデジタル化入力信号がデジタル・データを表すことができる。すなわち、デジタル化入力信号は、データ・ストリームの一連のビットを表すことができる。シリアル・ビット・ストリーム10は、デジタル化入力信号から抽出されたかかる一連のビットにできる。
【0026】
他の実施例において、機器は、ロジック・アナライザにできる。ロジック・アナライザは、入力信号をしきい値と比較して、チャネル用のシリアル・ビット・ストリームを発生するように構成できる。シリアル・ビット・ストリーム10は、ロジック・アナライザのチャネルからのかかるビデオ・ストリームでもよい。シリアル・ビット・ストリームを発生できる機器は、ここで説明する如く正規表現エンジンを含むことができる。
【0027】
実施例において、シリアル・ビット・ストリーム10は、制御器12が処理する直前に取り込まれる必要がない。例えば、シリアル・ビット・ストリーム10をメモリに蓄積することができる。かかるメモリは、取込みメモリにできる。他の実施例において、シリアル・ビット・ストリーム10は、ディスク・ドライブ又は他の大容量蓄積装置の如き不揮発性メモリに蓄積できる。
【0028】
シリアル・ビット・ストリーム10のソースに関係なく、制御器12は、シリアル・ビット・ストリーム10を受けるように構成できる。制御器12は、任意の種々の回路にできる。例えば、所望に応じて、デジタル信号プロセッサ(DSP)、マイクロプロセッサ、プログラマブル・ロジック装置、汎用プロセッサ、又は、適切な周辺装置を有する他の処理システムを制御器12として用いて、正規表現エンジン13の機能を実装できる。制御器12を実装するのには、完全に集積したものと完全にディスクリートな部品との間の、あらゆるバリエーションを利用できる。正規表現エンジン13は、正規表現をシリアル・ビット・ストリーム10に適用する制御器12の機能を表す。
【0029】
制御器12は、ユーザ・インタフェース14に結合される。ユーザ・インタフェース14は、任意の種々のインタフェースを含むことができる。例えば、ユーザ・インタフェース14は、ボタン、ノブ、スライダ、キーボード、ポインティング・デバイスなどの入力インタフェースを含むことができる。ユーザ・インタフェース14は、表示器、光、スピーカなどの出力インタフェースを含むことができる。ユーザ・インタフェース14は、コミュニケーション・インタフェース、タッチ・スクリーンなどの入出力インタフェースを含むことができる。任意の種々のユーザ・インタフェース又はかかるユーザ・インタフェースの組合せをユーザ・インタフェースとして用いることができる。
【0030】
制御器12は、シリアル・ビット・ストリーム10への正規表現の適用に応答して、ユーザ・インタフェースにより、取込みデータ(「取込みデータ」は、試験測定装置から出力されるという点で、「出力データ」と呼ぶこともできる)を表すように構成できる。実施例において、取込みデータは、シリアル・ビット・ストリーム10自体にできる。しかし、他の実施例において、取込みデータ及びシリアル・ビット・ストリーム10を違えることができる。例えば、更に詳細に後述するように、正規表現のシリアル・ビット・ストリームでのマッチングを用いて、取込みデータとして取り込む他のデータをトリガできる。
【0031】
正規表現エンジン13を用いて、シリアル・ビット・ストリーム10の種々の表現に影響できる。例えば、更に詳細に後述するように、データを正規表現に関連づけることができる。このデータは、マッチング・ビット・シーケンスにてエンコードされたシンボルを表すことができる。オーバーレイとしてのシンボル、シンボル自体などにより、シリアル・ビット・ストリーム10を表すことができる。
【0032】
他の例において、正規表現エンジン13を用いて、シリアル・ビット・ストリーム10、関連したデータなどにて、パターンを検索、マーク付け、又はそうでなければ識別をできる。例えば、オシロスコープにて、特定のビット・シーケンスに対して取込み信号を表すデジタル化波形を検索できる。ユーザ・インタフェースにより、デジタル化波形の関連シーケンスを表すことができる。代わりに、関連シーケンスにマークを付けることができる。
【0033】
他の例において、正規表現エンジン13を用いて、取込みデータを濾波できる。例えば、更に詳細に後述するように、正規表現は、特定のデバイスからのパケットのみにマッチングするマッチング値及びパケット構造を定義できる。データの取込みを濾波できるので、マッチングした取込みのみを蓄積する。
【0034】
他の実施例において、正規表現エンジン13の出力は、単なるマッチング以上にできる。例えば、シリアル・ビット・ストリーム10は、取込みデジタル化波形に関連できる。値対時間としてデジタル波形を表すことができる。マッチングが出力されると、関連したデジタル化波形内の時間の如き追加データを出力に追加できる。
【0035】
図2は、本発明の実施例によるデジタイザ・フロント・エンドを有する
図1の試験測定装置のブロック図である。デジタイザ20は、入力信号22をデジタル化して、シリアル・ビット・ストリーム10を発生するように構成できる。
【0036】
図示しないが、各デジタイザ20は、必要に応じてアナログ・チャネル内に前置増幅器、減衰器、フィルタ及び/又は他のアナログ回路を有することができる。よって、デジタイザ20への入力信号を、デジタル化の前に、増幅し、減衰し、又はそうでなければ濾波できる。さらに、デジタイザ20は、信号をデジタル化可能な任意の種々の回路にできる。例えば、デジタイザ20は、必要に応じて関連入力信号をサンプリングするためにトラック及びホールド回路、A/D変換器、デマルチプレクサ回路の如き回路を含むことができる。
【0037】
図3は、本発明の実施例による
、波形44と、波形44に対応するビット・シーケンス46と、正規表現エンジンから
のマッチング・ビット・シーケンス
40及び42とを示す。実施例において、正規表現文法は、次のように定義できる。
【0038】
<RegExpr> := 1 | 0 | X
| <RegExpr> <RegExpr>
| <RegExpr> | <RegExpr>
| <RegExpr> +
| <RegExpr> *
| <RegExpr> ?
| <RegExpr> * INTEGER
|(<RegExpr>)
;
【0039】
この例において、マッチング・ビットは、1、0又はドントケアXとして定義できる。正規表現に、正規表現が続くことができる。代わりの正規表現は、OR「|」演算子で定義できる。1個以上の「+」又は0個以上の「*」の演算子を用いて、繰り返し正規表現を潜在的に定義できる。「?」演算子は、0又は1個の前の正規表現を意味できる。「*」演算子に続く整数は、正規表現の繰り返し数を意味できる。括弧を用いて、正規表現又は一連の正規表現をグループ分けできる。特定の文法について上述したが、実施例は、他の文法も使用できる。特に、他の文法による更なる例を以下に示す。さらに、正規表現エンジン13が用いる文法は、上述の文法又は以下の文法の全ての概念を実装するのにただ必要なだけではない。
【0040】
例として上述の文法を用いたが、正規表現を用いてマッチングを定義できる。例えば、「1010000110」を正規表現として定義できる。波形44及び対応デジタル値46を
図3に示す。ビット・シーケンス40がビット「1010000110」なので、これをマッチングとして識別できる。しかし、ビット・シーケンス42は、このシーケンスにマッチングしない。
【0041】
別の正規表現を「1010XX0110」と定義できる。上述の例とは対照的に、この正規表現には、2個のドントケア「X」値が含まれる。よって、シーケンス40及び42の両方が、正規表現「1010XX0110」にマッチングする。
【0042】
図4は、本発明の実施例による
、波形
60と、
波形60に対応するビット・シーケンス
68と、
正規表現エンジンからのマッチング・ビット・シーケンス
64と、アライメント・シーケンス
62とを示す。実施例において、正規表現エンジン13は、シリアル・ビット・ストリーム10内の演算がアライメントするように構成できる。例えば、8b/10bの如きエンコード技術は、アライメントに使用できるビットの特定の単一シーケンス又は複数シーケンスを定義できる。8b/10bエンコード内のシーケンス「1100000」又は「0011111」は、シリアル・ビット・ストリーム内の10ビットのアライメントを指示できる。周知のように、8b/10bエンコードにおける「1100000」は、プラスのランニング・ディスパリティ(RD)の制御シンボルK.28.1、K.28.5、K.28.7に共通の上位7桁であり、「0011111」はランニング・ディスパリティ(RD)がマイナスの制御シンボルK.28.1、K.28.5、K.28.7の共通の上位7桁である。これら制御シンボルK.28.1、K.28.5、K.28.7は、コンマ・シンボルと呼ばれ、シリアル・ビット・ストリーム内の10ビット・シンボルの同期(アライメント)のために利用される(非特許文献1のControl
Symbols参照)。
【0043】
正規表現文法を定義してかかるアライメント・シーケンスの表現を可能にする。例えば、アライメント表現を伴う正規表現は、次のように定義できる。
【0044】
<RegExprWithAlignment>:= <RegExpr> <Alignment>
;
<Alignment>:= width <Expr>
| alignment <RegExpr>
| <Alignment> width <Expr>
| <Alignment> alignment <RegExpr>
;
【0045】
ここでは、演算子「alignment」は、次の正規表現がシリアル・ビット・ストリーム10内のアライメント・シーケンス用のマッチングを定義することを示せる。例えば、上述のシーケンスを用いることにより、「alignment(1100000 | 0011111)」を用いて、「1100000」又は「0011111」のいずれかをアライメント・シーケンスとして定義できる。
【0046】
アライメント・シーケンスに加えて、幅を特定できる。この例の文法において、幅演算は、シリアル・ビット・ストリーム10内の「
シンボル」の幅のビット数を示すことができる。例えば、8b/10bエンコード内で、幅が10ビットにできる。よって、8b/10bエンコードの正規表現を「alignment(1100000 | 0011111)width 10」にできる。
【0047】
特に、幅の定義は、上述の如く、与えた幅よりも狭いか又は広いアライメント正規表現を可能にする。上述の例において、アライメント正規表現は、10ビット幅で2個の7ビット・マッチング・シーケンスを定義する。よって、正規表現エンジン13がシリアル・ビット・シーケンス10へのインデックスを増分するとき、幅だけの増分にできる。すなわち、実施例において、正規表現は、各ビットには適用しなくても良く、アライメント正規表現に応じてアライメントされたシリアル・ビット・ストリーム10内の複数のビットにて開始してもよい。
【0048】
図4を参照し、正規表現「1010000110 alignment(1100000 | 0011111)width 10」を考察する。
図3と同様に、波形60及び対応デジタル値68を示す。ビット・シーケンス62は、アライメント正規表現「(1100000 | 0011111)」とマッチングする。定義した幅により、識別されたビット・シーケンス62及び定義された幅に応じて、波形60への正規表現の適用をアライメントすることを実行できる。
【0049】
点線70は、波形60内の「
シンボル」の境界を線引きする。この例において、ビット・シーケンス64及び66の両方は、正規表現「1010000110」にマッチングする。しかし、ビット・シーケンス64のみが境界70にアライメントする。よって、ビット・シーケンス64のみがマッチングし、ビット・シーケンス66はマッチングしない。
【0050】
図4において、マッチング・ビット・シーケンス64をアライメント・ビット・シーケンス62の近傍として示したが、かかる近接は必要ない。例えば、実施例において、アライメント正規表現を用いてシリアル・ビット・ストリームを検索するように制御器を構成できる。見つかると、アライメント正規表現のマッチングに応答して正規表現の残部を適用するように正規表現エンジン13を構成できる。すなわち、シリアル・ビット・ストリーム10内でアライメントさせつつ、かつ、定義幅に従って残部を適用しても良い。
【0051】
アライメント・シーケンスのかなり後まで、正規表現の残部のマッチングが見つからないかもしれない。例えば、正規表現の残部へのマッチングが見つかる時点までに、アライメント・ビット・シーケンスが取込みメモリから捨てられているかもしれない。しかし、正規表現エンジン13は、シリアル・ビット・ストリーム10にアライメントするように依然動作できる。
【0052】
他の実施例において、アライメント・シーケンスにより、幅を暗に定義できる。例えば、「alignment(1100000XXX | 0011111XXX)」のアライメント正規表現は、「alignment(1100000 | 0011111)width 10」とほぼ類似に動作できる。すなわち、アライメント正規表現の幅をシリアル・ビット・ストリーム10内の「
シンボル」の幅に決定するように正規表現エンジン13を構成できる。
【0053】
実施例において、アライメント・ビット・シーケンスが既知でないかもしれないし存在しないかもしれないが、幅は既知かもしれない。例えば、アライメント正規表現は、「width 10」とできる。かかる環境において、幅に応じてシリアル・ビット・ストリーム10を参照するインデックスを増分できるが、アライメントを決定する必要があるかもしれない。
【0054】
種々の技術を用いて、シリアル・ビット・ストリーム10内のアライメントを決定できる。例えば、正規表現の幅に等しいシリアル・ビット・ストリーム10を参照する多くのインデックスを用いて、正規表現をシリアル・ビット・ストリーム10に適用するように正規表現エンジン13を構成できる。すなわち、早めの類似アライメントと重複しない所定幅に対して、シリアル・ビット・ストリーム10内の可能性のある各インデックスに対して正規表現を適用できる。例えば、幅が10ならば、0のインデックスは、10のインデックスにほぼ類似にできる。幅により定義された細分性のレベルにて可能性のある各アライメントに対して正規表現を適用できる。正規表現への最大数のマッチングを有するインデックスを使用インデックスとして選択できる。
【0055】
他の実施例において、アライメントを指示できる他の技術を用いて、シリアル・ビット・ストリーム10により用いるアライメント・インデックスを決定できる。例えば、8b/10bエンコードを用いる場合、シンボルの最後のランニング・ディスパリティを特定のレンジに制限できる。ランニング・ディスパリティが所望レンジ内であるシリアル・ビット・ストリーム10内のオフセット・インデックスを識別済みインデックスとして用いることができる。シリアル・ビット・ストリーム10へのオフセット・インデックスの特定に利用できるシリアル・ビット・ストリーム10の特性の特定の例ではあるが、適切なインデックスを定めるために、アライメントを示せるシリアル・ビット・ストリーム10の任意の特性、その期待されフォーマットなどが、幅内のインデックスの各々に渡って検索される。
【0056】
実施例において、シリアル・ビット・ストリーム10は、ダイナミックな幅にできる。ダイナミックな幅に合わせるため、有効パターンを求めてシリアル・ビット・ストリーム10を検索するように制御器12を構成できる。有効パターンが識別されると、有効パターンの位置を用いて、正規表現をシリアル・ビット・ストリーム10にアライメントすることができる。
【0057】
他の実施例において、シリアル・ビット・ストリーム10をデコードし、エラー・チェックをできる。エラーが存在するか、しきい値を超えるかなどすると、シリアル・ビット・ストリーム10のデコードを他のオフセットで実行できる。最小のエラーのオフセットが見つかると、そのオフセットを用いて、正規表現をシリアル・ビット・ストリーム10にアライメントできる。
【0058】
シリアル・ビット・ストリーム10のアライメント及び/又は幅を決定する種々の方法を説明したが、他の技術を用いてかかる情報を得ることができる。実施例において、ユーザ・インタフェース14を介してシリアル・ビット・ストリーム10を参照するインデックスを受けるように制御器12を構成することもできる。このインデックスは、種々の方法で発生できる。例えば、ユーザは、オフセット、幅又はこれらの両方を提供することができる。かかる提供情報は、ユーザ・インタフェース14、制御器12などにより、シリアル・ビット・ストリーム10を参照するインデックスに変換できる。このインデックスを用いて、制御器は、正規表現をシリアル・ビット・ストリーム10に適用できる。
【0059】
他の例において、ユーザは、カーソル位置を用いて、シリアル・ビット・ストリーム10用のオフセット・インデックスを定義できる。ユーザ・インタフェース14により、シリアル・ビット・ストリーム10を提示すことができる。ユーザは、手動や、ある自動機能によるなどして、提示したシリアル・ビット・ストリーム10内の位置を指示できる。これに応答して、制御器12は、シリアル・ビット・ストリーム10を参照するビット・インデックスを決定できる。アライメント・シーケンスが利用できないか、定義されていないなどの環境において、ユーザは、データを依然試験でき、シリアル・ビット・ストリーム10内のアライメントを指示できる。
【0060】
図5は、本発明の実施例により正規表現エンジンを有するトリガ・システムによる試験測定装置のブロック図である。トリガ入力92に応答してトリガ信号94を発生するようにトリガ・システム90を構成できる。実施例において、トリガ信号94に応答して正規表現エンジン13により正規表現をシリアル・ビット・ストリームに適用するように制御器12を構成できる。
【0061】
例えば、トリガ信号94に関連するシリアル・ビット・ストリーム10を参照するインデックスを使用するように制御器12を構成できる。トリガ・システム90からのトリガ信号94を受けるように制御器12を構成できる。トリガ信号94に時間的に関連したシリアル・ビット・ストリーム10のビット、トリガ信号94からの特定オフセットでのビットなどを、正規表現を処理するためのアライメント指示として用いることができる。アライメントが確立すると、正規表現を上述の如く適用できる。
【0062】
他の実施例において、トリガ・システム90は、正規表現エンジン91を有することができる。正規表現をトリガ入力92に適用するように正規表現エンジン91を構成できる。この例において、トリガ入力92をシリアル・ビット・ストリームにできる。上述の例を用いて、正規表現を「(1100000|0011111)」にできる。マッチングに対して、正規表現エンジンにより、トリガ入力92を分析できる。かかるマッチングに応答して、トリガ信号94を発生できる。実施例において、トリガ信号94は、識別した時点又はサンプル位置、マッチング表現、トリガ入力92におけるシリアル・ビット・ストリーム内のアライメント情報、シリアル・ビット・ストリーム自体、かかる情報の組合せなどを含むことができる。かかる情報を制御器12に供給でき、正規表現エンジン13用に用いることができ、取込みデータにて又はそうでなければ所望に用いることができる。
【0063】
上述の如く、正規表現エンジン13は、トリガ信号94に応答して、アライメントしたシリアル・ビット・ストリーム10に関連正規表現を適用できる。しかし、この実施例において、正規表現エンジン91に応答して、トリガ信号94を発生できる。上述の如く、トリガ・システム90の正規表現エンジン91が供給した正規表現をアライメント正規表現にできる。よって、トリガ・システム90は、アライメントを決定する処理を実行でき、制御器12の正規表現エンジン13は、他の正規表現を適用してマッチングを決定できる。
【0064】
図6は、本発明の実施例によりトリガ・システム内に正規表現エンジンを有する試験測定装置のブロック図である。正規表現エンジンは、種々の方法で機能的に分散できる。上述の如く、正規表現は、制御器12及びトリガ・システム90にわたって機能的に分散できる。この実施例において、制御器93は、正規表現エンジンを有する必要がない。正規表現エンジン91は、トリガ・システム90の一部である。トリガ
入力92のシリアル・ビット・ストリームへの正規表現のマッチングに応答して、取込みをトリガするようにトリガ・システム90を構成できる。
【0065】
実施例において、かかるトリガを用いて、マッチングが生じたときのみにデータを取り込める。例えば、機器は、共用媒体からデータを取り込むことができる。特定のデバイス、パケット、ソース・アドレスなどを指示する正規表現を定義できる。よって、マッチング・ソースから信号を受けると、対応するデータのみを使用できる。例えば、かかるデータから実時間データ・アイを発生できる。正規表現を用いることにより、所望ソースからの信号のみがデータ・アイに貢献できる。
【0066】
図7は、本発明の実施例による
、波形110と、波形110に対応するビット・シーケンス92と、正規表現エンジンからの
マッチング・ビット・シーケンス112及び114と、関連する関連データ
116及び118とを示す。実施例において、データを正規表現で表すことができる。例えば、次の文法によりデータを表現できる。
【0067】
<RegExprWithData>: <RegExpr> : <Data>
【0068】
明瞭にするため、正規表現文法の残部をリストしないが、正規表現「<RegExprWithData>」を、ここで述べた任意の正規表現「<RegExpr>」として使用できる。
【0069】
一例において、正規表現「(1010000110 : "D15.6+")」は、ビット・シーケンス「1010000110」をデータ「D15.6+」に関連づけることができる。波形110及び対応ビット・シーケンス92を
図7に示す。ビット・シーケンス112は、「1010000110」にマッチングする。よって、ユーザ・インタフェース14を介して、関連データ「D15.6+」をボックス116内に表すことができる。同様に、正規表現「(1000111101 : "D17.4-")」に対し、ビット・シーケンス114がその正規表現にマッチングするので、ボックス118は、ユーザ・インタフェース114を介して関連データ「D17.4-」を表すことができる。
【0070】
実施例において、かかるデータ関連を用いて、デコードを導入できる。例えば、上述の如く、2個のビット・シーケンス112及び114は、シンボル「D15.6+」及び「D17.4-」に関連した。「D15.6+」及び「D17.4-」は、8b/10bエンコード技術のシンボルの一部である。デコーダを定義する正規表現は、「((1000111100 : "D17.3-")|(1000111101 : "D17.4-")…(1010000110 : "D15.6+"))alignment(1100000 | 0011111)width 10」として定義できる。この例において、上述の3個の他に、シンボルに対するビット・シーケンスの関係は多数あるが、例として3個を用いる。よって、シンボルに対するビット・シーケンスの関係の全てを定義すると、正規表現を用いてシリアル・ビット・ストリーム10をデコードできる。上述の如く、ソース波形及び/又はビット・ストリームを表す必要がない。
【0071】
実施例において、機器のその後の動作において、かかる関連データを用いることができる。例えば、データに基づく検索を実行できるように制御器を構成できる。上述の例を用いて、「D15.6+」シンボルに対する検索を実行できる。実施例において、基本的な正規表現は、必須ではないが、ユーザから隠すことができる。例えば、種々の正規表現を、特定のシンボルに対して予め定義し、テスト設定によりロードしたりするなどができる。基本的な正規表現における情報を必要とすることなく、ユーザは、正規表現に関連したデータを選択できる。
【0072】
正規表現に関連できるデータの例としてテキストを用いたが、他の形式の情報をデータとして用いることができる。例えば、数、表現、機能などを関連データの一部にできる。
【0073】
図8は、本発明の実施例により正規表現エンジンを有する試験測定装置のユーザ・インタフェースの例である。実施例において、正規表現を表すようにユーザ・インタフェース14を構成できる。一例において、予め定義した正規表現のデータを表すようにユーザ・インタフェースを構成できる。
【0074】
予め定義された正規表現をブロック132及び134はユーザ・インタフェース130に表す。例えば、ブロック132は、正規表現「(1010000110 : "D15.6+")alignment(1100000 | 0011111)width 10”を表すことができる一方、ブロック134は、“(1000111101 : "D17.4-")alignment(1100000 | 0011111)width 10」を表すことができる。
【0075】
ポインティング・デバイスのドラグ入力の如きユーザ入力を矢印138で表す。この入力により、正規表現を形成する入力ボックス136を、ブロック132に関連した正規表現により埋めることができることをユーザが指示できる。例えば、最初に、ボックス136を空にできた。矢印138のユーザ入力に応答して、ブロック132に関連した正規表現をボックス136に入れる。
【0076】
しかし、ボックス136内の正規表現を拡張する必要がない。すなわち、ボックス136内の正規表現は、ソース正規表現に関連したデータが表すのを残せる。この例において、データは、「D15.6+」だろう。さらに、1個以上の予め定義した正規表現をボックス136に追加できる。例えば、ユーザは、ブロック134をボックス136に追加して、関連正規表現を追加し、演算子を加えるなどができる。
【0077】
実施例において、表した正規表現は、任意の正規表現にできる。上述の如く、ブロック132は、アライメント及び幅の項目を有した。しかし、関連正規表現は、1個以上のアライメント及び幅の項目なしに「(1010000110 : "D15.6+")」としても良い。
【0078】
他の例において、予め定義した正規表現は、「((1100000101 | 1010000110): “K28.5”)」にしても良い。この正規表現は、「K28.5」として表しても良い。ユーザ入力に応答して、正規表現を、拡張した「((1100000101 | 1010000110): “K28.5”)」という形を有するようにしても良い。すなわち、追加した正規表現を単なる文字列に限定する必要はなく、任意の有効な正規表現を含むことができる。
【0079】
正規表現を任意の有効な正規表現にでき、これら正規表現を比較的複雑にできるので、より一層複雑な正規表現を形成でき、その複雑さをユーザから隠す可能性がある。例えば、上述の如く、8b/10bデコーダを正規表現として記述できる。同様に、64b/66bなどの他のエンコード技術を定義できる。8b/10bをブロック132に表現でき、「64b/66b」をブロック134内に表すことができる。ユーザは、8b/10b及び64b/66bエンコードの両方に対する組合せデコーダを形成しても良い。すなわち、ユーザが「8b/10b」をボックス136にドラッグし、OR演算子「|」を入力し、「64b/66b」をボックス136にドラッグすることにより正規表現を形成しても良い。
【0080】
さらに、追加した正規表現が任意の正規表現にできるので、かかる複雑な組合を各要素に対して完全にする必要がない。例えば、「8b/10b」正規表現は、8b/10bビット・ストリームを完全にデコードできるかもしれないが、「64b/66b」正規表現は、関連エンコード技術の一部を定義できるのみかもしれない。例えば、「64b/66b」用の正規表現は、「(10 | 01)X*64 width 66」にできる。
【0081】
正規表現の構造用のユーザ・インタフェースの例としてテキスト・ボックスを用いたが、ユーザがリテラル、演算子、予め定義した正規表現などを入力できるようにする任意のインタフェースを、ボックス136の代わり、又は、ボックス136に加えて用いることができる。
【0082】
図9は、本発明の実施例により正規表現エンジンを有する試験測定装置のユーザ・インタフェースの他の例である。ユーザ・インタフェースの表示150は、フィールド記述158及び入力フィールド160で示される。この例において、IPパケット用の正規表現を述べるが、他のフォーマットも利用できる。正規表現を用いたパケットを定義する文法は、次のようにしても良い。
【0083】
<Packet>:= <BasePacket>
| <BasePacket> <Alignment>
;
<BasePacket>:= <Field>
| <Packet> ',' <Field>
;
<Field>:= '[' <RegExpr> ']' ':' ID
;
【0084】
この例において、予め定義した正規表現は、「[0000100000000000], [X*4]:Version, [X*4]:HeaderLength, [X*8]:TOS, [X*16]:TotalLength, [X*16]:ID, [X*3]:Flags, [X*13]:FragmentOffset, [X*8]:TTL, [X*8]:Protocol, [X*16]:Checksum, [X*32]:SourceIPAddr, [X*32]:DestIPAddr, [X*(TotalLength-20)*8]:Data」とできる。ここで、TotalLength ID は、バイト単位で長さを表すとしても良い。よって、データ・フィールドのビットの量は、1バイト当たり、TotalLength(バイト単位)−20ヘッダ・バイトの8倍のビットである。
【0085】
実施例において、正規表現の「フィールド」部分に対して、ユーザ・インタフェース14を介して、対応ラベル及び入力フィールドを表すことができる。この例において、ユーザは、フィールド152及び154を空白のままとし、フィールド156を16進法でC0A80105により埋めた。これは、192.168.1.5のソースIPアドレスに対応する。よって、かかる入力を用いて、「[0000100000000000 X*16], [X*16]:TotalLength, [X*54 11000000101010000000000100000101 X*32 X*(TotalLength-20)*8]」の如き正規表現を発生することができる。すなわち、フィールドが埋まっていないとフィールド152及び152を圧縮でき、要素に関連した値を加えて正規表現を変更でき、値をビットに拡張できるなどする。
【0086】
実施例において、「フィールド」のIDパラメータを正規表現の他の場所にて参照できる。この例において、TotalLengthをデータ・フィールドに用いる。特に、データ・フィールドにおけるマッチング・ビットの数の長さは、TotalLenghtフィールドの値に応じる。一例において、TotalLengthフィールドを、ソースIPアドレスに類似の定義済み値にできる。他の例において、分析する特定のビット・シーケンスからTotalLengthを決定できる。すなわち、正規表現のTotalLengthフィールドへのマッチングを開始するビットが「120」の値を参照すると、データ・フィールドにおけるマッチング・ビットの数を(120−20)*8、即ち800ビットにできる。かかる値は、正規表現の各適用に対して、異なるビット・シーケンスに変化でき、ビット・シーケンスでの位置設定を開始するなどする。
【0087】
実施例において、正規表現を逆に適用できるように正規表現エンジンを構成できる。例えば、正規表現にマッチングするビット・シーケンスの後に、シリアル・ビット・ストリーム10における特定のアライメント・シーケンスが生じてもよい。よって、アライメント・シーケンスが見つかると、正規表現エンジンをアライメント・シーケンスから逆に適用できる。
【0088】
他の実施例は、実行の際にコンピュータが任意の上述の動作を行なえるようにするコンピュータ読み出し可能な媒体上に具現化されたコンピュータ読み出し可能なコードを含む。ここで用いる如く、コンピュータは、コードを実行できる任意の装置である。マイクロプロセッサ、プログラマブル・ロジック装置、マルチプロセッサ・システム、デジタル信号プロセッサ、パーソナル・コンピュータなどがかかるコンピュータの全ての例である。実施例において、コンピュータ読み出し可能な媒体は、コンピュータ読み出し可能なコードを非一時的方法にて蓄積するように構成された具体的なコンピュータ読み出し可能媒体にできる。
【0089】
上述のように、試験測定装置は、シリアル・ビット・ストリームに対してマッチする正規表現を使用できる。しかし、上述した正規表現の文法(Grammar:グラマー)は、状態情報を含んでいない。そこで、状態情報を含む別の実施形態を説明する。
【0090】
図10は、本発明の実施形態による状態情報を含む正規表現エンジンを有する試験測定装置のブロック図である。装置には、シリアル・ビット・ストリーム10を受けるよう構成されたコントローラ1005がある。シリアル・ビット・ストリーム10は、様々の方法で発生させることができる。例えば、装置が、入力信号をデジタル化するよう構成されたオシロスコープでも良い。このデジタル化入力信号は、デジタル化アナログ信号として表すことができ、デジタル・データを表す。即ち、このデジタル化入力信号は、データ・ストリームの複数ビットの列(シリーズ)を表すことができる。シリアル・ビット・ストリーム10は、デジタル化入力信号から抽出されたビットの列のようなものでも良い。
【0091】
別の実施形態では、装置は、ロジック・アナライザでも良い。ロジック・アナライザは、入力信号をしきい値と比較し、1チャンネルに関するシリアル・ビット・ストリームを生成するよう構成できる。シリアル・ビット・ストリーム10は、ロジック・アナライザのあるチャンネルからのビット・ストリームのようなものでも良い。シリアル・ビット・ストリームを生成できる任意の装置が、本願で説明するような正規表現エンジンを含むとして良い。
【0092】
コントローラ1005には、状態特定ロジック1010があっても良い。状態特定ロジック1010は、シリアル・ビット・ストリームの状態を特定するロジック(logic)であっても良い。状態特定ロジック1010は、シリアル・ビット・ストリーム中の状態を特定するビットを、正規表現によって認識可能な状態シンボルに変化させることによって、シリアル・ビット・ストリーム10を変更することもできる。このやり方で、状態特定ロジック1010は、複数のビット(複数の0と複数の1)に加えて、状態シンボルを含む状態/ビット一体型ストリームを形成できる。状態特定ロジック1010については、
図11〜12を参照して、以下で更に説明する。
【0093】
また、シリアル・ビット・ストリームと、シリアル・ビット・ストリーム中の特定された状態情報が時間順であることも注目に値する:つまり、情報は、時間に対してシーケンス(順序)を有している。従って、状態/ビット一体型ストリームも時間順である。
【0094】
ある実施形態では、シリアル・ビット・ストリームは、コントローラ1005で処理される直前に取り込んでも良いが、直前である必要はない。例えば、シリアル・ビット・ストリームは、メモリに記憶しておいても良い。こうしたメモリは、アクイジション・メモリとしても良い。別の例では、シリアル・ビット・ストリームは、ディスク・ドライブ又は他の大容量記憶装置のような、不揮発性メモリに記憶しても良い。このように、シリアル・ビット・ストリームは、ライブのデータ、試験測定装置で取り込んだデータ、シミュレーション・データ又は予め記録したデータを含めた任意の所望データとして良い。
【0095】
シリアル・ビット・ストリームの出所に関係なく、コントローラ1005は、シリアル・ビット・ストリーム10を受けるように構成できる。コントローラ1005は、種々の任意の回路として良い。例えば、必要に応じて適当な周辺デバイスを有するデジタル・シグナル・プロセッサ(DSP)、マイクロプロセッサ、プログラマブル・ロジック・デバイス、汎用プロセッサ、又は、他の処理システムをコントローラ1005として利用し、正規表現エンジン1015の機能性を実装できる。完全な集積回路から完全にディスクリートな部品の間で任意に変更したものを、コントローラ1005を実装するのに利用できる。正規表現エンジン1015は、正規表現を状態/ビット一体型ストリームに適用するコントローラ1005の機能性を表している。
【0096】
コントローラ1005は、ユーザ・インタフェース1020に結合される。ユーザ・インタフェース1020としては、任意の様々なインタフェースがあり得る。例えば、ユーザ・インタフェース1020は、ボタン、ノブ、スライダ、キーボード、ポインティング・デバイスなどのような入力インタフェースを含んでも良い。ユーザ・インタフェース1020は、表示装置、ライト(light)、スピーカなどのような出力インタフェースを含んでも良い。ユーザ・インタフェース1020は、通信インタフェース、タッチ・スクリーンなどのような入力/出力インタフェースを含んでも良い。様々なユーザ・インタフェースや、こうしたインタフェースの組み合わせを、ユーザ・インタフェースとして用いることができる。
【0097】
コントローラ1005は、状態/ビット一体型ストリームへの正規表現の適用に応答して、ユーザ・インタフェースを介して、出力データを提示するよう構成できる。ある実施形態では、出力データは、シリアル・ビット・ストリームそれ自身か、又は、状態/ビット一体型ストリームであっても良い。しかし、別の実施形態では、出力データと、シリアル・ビット・ストリーム又は状態/ビット一体型ストリームとは、異なっていても良い。例えば、以下で更に詳しく説明するように、正規表現の状態/ビット一体型ストリームにおけるマッチ(一致)を、出力データとして使われる他のデータをトリガするのに利用しても良い。
【0098】
正規表現エンジン1015は、シリアル・ビット・ストリーム又は状態/ビット一体型ストリームの様々な提示に影響を与えるのに利用できる。例えば、後述のように、データを正規表現と関連させることができる。データは、マッチしているビット・シーケンス中に符号化されたシンボルを表すことができる。シリアル・ビット・ストリーム又は状態/ビット一体型ストリームは、シンボルを用いて、オーバレイ、シンボル単独、などとして与えられる。正規表現エンジン1015は、状態情報1025を含むこともできる。状態情報1025は、正規表現エンジン1015がいつ、どのように動作するかを定義するのに利用できる。例えば、正規表現でパケットについて定義でき、
パケットの開始及び終了を定義する状態情報を持つことができる。この状態情報がないと、状態/ビット一体型ストリーム内の同一のビット・シーケンスが、その正規表現とマッチせず、よって、出力データとして認識されないであろう。
【0099】
別の例では、正規表現エンジン1015は、状態/ビット一体型ストリーム中のパターン、その関連データなどを検索、マーキング、さもなければ、特定するのに利用できる。例えば、オシロスコープ上で、特定のビット・シーケンスを見つけるために、取り込まれた信号を表すデジタル化波形を検索できる。そのデジタル化波形の関連するシーケンスは、ユーザ・インタフェースを介して提示できる。これに代えて、関連するシーケンスにマーキングできる。
【0100】
別の例では、正規表現エンジン1015を取り込んだデータをフィルタ処理するのに利用できる。例えば、詳しくは、更に後述するように、正規表現は、特定のデバイスからのパケットにのみマッチするパケット構造とマッチング値とを定義できる。データの取込みは、マッチングする取込みのみが蓄積されるように、フィルタ処理できる。
【0101】
別の実施形態では、正規表現エンジン1015の出力は、単にマッチするだけのものでないようにできる。例えば、シリアル・ビット・ストリームを、取り込まれたデジタル化波形と関連させることができる。デジタル化波形は、時間対値として表すことができる。マッチ(一致)が出力されると、その関連デジタル化波形内の時間のような追加データを出力に加えることができる。従って、ユーザ・インタフェース1020を、その時間を反映するように調整できる。
【0102】
上述の
図10は、
図1と似ているが、状態情報を含むように変更されている。
図2〜9に示す実施形態は、同様に、状態情報をサポートするように変更できるが、本願では、そうした実施形態を明示的には示さない。
【0103】
米国特許出願第12/949,703号で説明された正規表現の文法(grammar)とは対照的に、この正規表現文法は、追加のセマンティックス(semantics:動作、意味論)を加えるように強化できる。そして、その正規表現文法は、次のように記述できる。
【0104】
<PacketExpr> := 1 | 0 | X
| INTEGER
| INTEGER : <IntExpr>
| STATEID
| ^
| $
| FIELDID
| FIELDID : <IntExpr>
| FIELDID * <IntExpr>
| <PacketExpr>, <PacketExpr>
| <PacketExpr> | <PacketExpr>
| <PacketExpr> +
| <PacketExpr> *
| <PacketExpr> ?
| <PacketExpr> # <IntExpr>
| ( <PacketExpr> )
<IntExpr> := ID
| INTEGER
| <IntExpr> + <IntExpr>
| <IntExpr> * <IntExpr>
| <IntExpr> / <IntExpr>
| ( <IntExpr> )
【0105】
正規表現に状態要素を入れるということからは外れるが、この正規表現文法は、バスが、典型的には、どのように仕様書で定義されているかにも、より近いものになっている。ユーザは、一般に、バス仕様に精通しているので、正規表現文法をバス仕様により似た形態で定義することによって、状態/ビット一体型ストリーム内で特定するための特定正規表現を定義するのが、ユーザにとって、より簡単になる。
【0106】
米国特許出願第12/949,703号にあるように、マッチング・ビットは、1、0又はドントケアXとして定義できる。正規表現は、整数値であって、特定の幅があるか又はなくても良い。正規表現は、状態項と呼ぶことができる。正規表現は、開始状態「^」又は終了状態「$」であっても良い。正規表現は、フィールドの名前であって、特定の幅があるか又はなく、最上位ビットから最下位ビットへの順序か又は最下位ビットから最上位ビットへの順序のどちらかでも良い。正規表現の後に、正規表現が続いても良い。選択的な正規表現は、OR「|」演算子で定義できる。1つ以上の「+」又は0以上の「*」演算子は、繰り返すかもしれない正規表現を定義するのに使用できる。「?」演算子は、ゼロ個又は1個の時間的に先行する正規表現を意味するものとできる。「*」演算子に続く整数は、正規表現の繰り返し数を意味するものとできる。かっこは、1つの正規表現、又は、複数の正規表現のシリーズをグループ化するのに利用できる。先に、特定の文法を説明してきたが、実施形態は他の文法も利用できる。具体的には、他の文法を用いる更なる例が、以下で与えられる。更には、正規表現エンジン13で使用される文法は、上述の文法又は以下の文法の全ての側面を実装しても良いが、必ずしも実装しなくても良い。
【0107】
パケットの内容(コンテンツ)は、米国特許出願第12/949,703号に記述されたように定義できるが、これは、必ずしもシリアル・ビット・ストリームを適切に復号化するのに充分な情報を与えるものではない。例えば、パケットがどこで始まり、そして、終わるかを知る必要がある。さもなければ、シリアル・ビット・ストリームは、実際のデータではなくて、単にランダム・ノイズを有しているだけかもしれない。
【0108】
図11は、
図10の状態特定ロジックが、状態をロジック(論理)表現として特定できることを示す。例えば、I
2Cバスが使用される場合、パケットの開始は、ロジック表現1105として特定でき、このとき、データ信号は立ち下がり(falling)で、クロック信号はハイ(高)である。同様に、パケットの終了は、イベントとして特定でき、このとき、データ信号は、立ち上がり(rising)で、クロック信号はハイ(高)である。ソフトウェアとしては、これらイベントは、次のように記述できる:
【0109】
Event S = fall(sda)&& scl == 1;
Event P = rise(sda)&& scl == 1;
【0110】
これらイベント(events)は、シリアル・ビット・ストリームをスキャンして状態を特定し、シリアル・ビット・ストリーム中のこれら情報部分を、開始及び終了状態を表すトークン(token:識別子データ)に変化させるの利用できる(これによって、状態/ビット一体型ストリームを生成する)。これら状態は、次に、パケットに関する正規表現の一部として利用できる。例えば、パケットは、次のように定義しても良い:
【0111】
Packet P7 {S, Addr:7, RW, A,(Data:8, A)*, P};
【0112】
上記のPacket P7に関する記述を注意深く見ると、Packet P7は、米国特許出願第12/949,703号に記述されたものと、異なるシンタックスを使用していることがわかる。具体的には、AddrとDataフィールドは、異なるシンタックスを使用している。しかし、当業者であれば、これら異なるシンタックスは、同じコンセプトを記述しているがわかるであろう。上記シンタックス中のAddr:7は、先のシンタックス中の[X*7]:Addrと機能的に等価である。
【0113】
図11は、1つのロジック表現1105だけを示しているが、当業者であれば、イベントとして定義される任意の数の状態があって良いことが理解できよう。
【0114】
図11と対照的に、
図12は、外部表現1205を用いて定義された
図10の状態特定ロジックを示す。例えば、パケットの開始及び終了は、シリアル・ビット・ストリームが特定ビット・パターンとマッチした場合に特定できる。先と同様、
図12は、1つの外部関数1205だけを示しているが、当業者であれば、正規表現として定義される任意の数の正規状態(regular states)があって良いことが理解できよう。
【0115】
加えて、
図11及び12に示される選択的な実施形態は、相互に排他的ではない。即ち、ある状態は、ロジック表現として定義でき、ある状態は、外部関数として定義できる。加えて、状態は、潜在的に別のやり方で定義でき、これら別の定義は、希望すれば、ロジック表現及び外部関数と組み合わせることができる。
【0116】
図13は、第1正規表現の出力に第2正規表現を適用する
図10の正規表現エンジンを示す。
図13では、米国特許出願第12/949,703号に記述されるように、状態/ビット一体型ストリームに適用できる正規表現 1305を正規表現エンジン1015が含んでいる。正規表現1305を適用すると、中間結果1310を生成することがあり、これが次に正規表現1315への入力として利用できる。このやり方では、複数の正規表現を用いて、状態/ビット一体型ストリームを順次処理できる。複数の正規表現を順次用いることにより、様々な符号化、例えば、マンチェスタ符号化、を実装できる。マンチェスタ符号化は、単一ビットの情報を表す2つの「ビット」(実際には、信号レベルの遷移)を用いる。こうして、第1正規表現は、状態/ビット一体型ストリームを、マンチェスタ符号化内にあるようなビット・パターンへと変換でき、続いて、第2正規表現は、マンチェスタ・ビット・ストリームの情報を復号化できる。更に詳しい情報は、コンピュータ・ネットワークス、第3版、Andrew S. Tanenbaum著、279〜80頁(1996年、Prentice-Hall, Inc.発行)で得られ、これは、参照することにより、事実上、本願に援用される。
【0117】
マンチェスタ符号化をどのようにデコード(復号化)するかの例として、システムが、次のようなシリアル・ビット・ストリームを受ける:
【0118】
1001010110010110101010
【0119】
2ビット値10は、1ビット値1とマッチすると共に、1ビット値1と入れ替えることができる。2ビット値01は、
1ビット値0とマッチすると共に、
1ビット値0と入れ替えることができる。これは、2値(binary)で符号化された新しいビット・ストリームを形成する。
【0120】
アライメントの問題を除けば、以下のコードは、マンチェスタを用いたビット・ストリームの部分をバイナリ・ビット・ストリームへと符号化するだけで、マンチェスタをプロトコルに変換する。
【0121】
packet Data
{
^!,
(D, [(01b:2(0:1)| 10b:2(1:1))+] {Data:16})+,
$!
}
【0122】
上記例において、「D」は、データ状態を参照し、「[(1:2(0:1)| 2:2(1:1))+]」は、新しいバイナリ・ストリームを生成し、「{Data:16}」は、この新しいバイナリ・ストリームを16ビット・ワードに分割し、「+」は、1回以上のマッチを繰り返す。フィールド定義「01b:2(0:1)」は、2ビットの1とマッチし、1ビットの0を返す(リターン:回答する)ということを言っている。フィールド定義「10b:2(1:1)」は、2ビットの2とマッチし、1ビットの0を返すということを言っている。1又は2のどちらかがマッチ(一致)であり、その他のものは、マッチの失敗(fail)となる。これは、1回以上(マッチが失敗するまで)繰り返されて、新しいバイナリ・ストリームが生成され、これは、後続のフィールド・マッチ定義に供給される。
【0123】
図13は、2つの正規表現1305及び1315の適用を示す。しかし、当業者であれば、希望に応じて、任意の回数で複数の正規表現を順次適用できることが理解できよう。よって、3個、4個、又はもっと多数の正規表現があって、それぞれが先行する正規表現の出力に適用され、最後の正規表現の出力を出力データとすることができる。
【0124】
先行する正規表現からのデータに正規表現が順次適用される
図13とは対照的に、状態/ビット一体型ストリーム内の異なる情報にマッチできる異なる正規表現を規定することも可能である。即ち、試験測定装置内のある特定正規表現が、状態/ビット一体型ストリーム内のいくつかの(まして全ての)データと必ずしもマッチすることがあるという保障はない。これは、例えば、もし試験測定装置が、異なる複数の方法で符号化されたデータを使って利用されている場合に起こり得る。この状況に取り組むため、試験測定装置が1つよりも多くの正規表現を有しても良く、そのいずれかが、状態/ビット一体型ストリームからの情報とマッチするのに利用されるようにしても良い。
図14は、こうした状況を明示している。
【0125】
図14では、
図10の正規表現エンジンは、1つよりも多くの正規表現を状態/ビット一体型ストリームに適用できる。具体的には、正規表現エンジン1015には、正規表現1405と1410があっても良く、これらのそれぞれは、状態/ビット一体型ストリーム内のデータとマッチする可能性がある。ある実施形態では、正規表現1405及び1410のそれぞれを、状態/ビット一体型ストリームが、これら正規表現のいずれかとマッチするまで、順番に適用しても良い。正規表現1405及び1410が適用される順番は、任意の所望のやり方、例えば、それらの定義の順番に定めることができる。別の実施形態では、正規表現エンジン1015は、正規表現1405及び1410の全てを同時に適用し、マッチするものを探すようにできる。更に別の実施形態では、状態/ビット一体型ストリームの異なる複数の部分が、異なる複数の正規表現とマッチするようにできる。
【0126】
図14は、2個の正規表現1405及び1410を示すが、当業者であれば、正規表現エンジン1015内に任意の個数の正規表現があって良いことが理解できよう。
【0127】
当業者であれば、上述の正規表現エンジンは、本質的には、チューリング・マシン(Turing machine)の形態であることが理解できよう。チューリング・マシンは、コンピュータ・サイエンスで使われる抽象概念である。チューリング・マシンは、複数セルに区分されたテープから構成される。このテープは、一般に長さが無限と仮定されている。チューリング・マシーンには、ヘッドもあり、これは、テープ上の1つのセルについて、シンボルを読み書きするのに利用できる。シンボルを読み出すか又は書き込んだ後に続いて、ヘッドは、1セル左又は右にテープ上を移動する。チューリング・マシーンには、状態レジスタ(register)もあり、これは、チューリング・マシーンの現在の状態を表す。最後に、チューリング・マシーンは、どのように進むかの命令のテーブルを有している。典型的には、テーブル内の各命令は、現在の状態と、テープから読み出した現在のシンボルとを含むタプル(tuple)と考えることができ、利用する次の状態と、テープに書き込むシンボルと、テープが進む方向(左又は右)とを特定する。
【0128】
コンピュータ・サイエンス理論は、単一のチューリング・マシーンが、複数のチューリング・マシーンの動作をシミュレートできることを示している。即ち、2つ以上のチューリング・マシーンの定義を与えれば、これら別々のチューリング・マシーン全ての動作を実行する単一のチューリング・マシーンを定義可能である。よって、複数のチューリング・マシーンが別々に行うごとく、単一のチューリング・マシーンで同じデータを分析できるように、単一のチューリング・マシーンを工夫することが可能である。
【0129】
コンピュータ・サイエンス理論は、また、単一のチューリング・マシーンが、2つのチューリング・マシーンの動作を順次シミュレート可能であることを示している。即ち、一方のチューリング・マシーンが入力データに対して動作し、第2のチューリング・マシーンが、この第1のチューリング・マシーンの出力を受け取って、それを異なるやり方で処理するのであれば、同じ結果を実現する単一のチューリング・マシーンを定義可能である。
【0130】
別の有用なアナロジー(例え)には、ソフトウェアのプログラミング(coding)がある。ソフトウェアは、単一のサブルーチンで実装可能である。しかし、これは、実装、デバッグ、メンテナンスを困難にする。ソフトウェアをモジュール化することで、実装、デバッグ、メンテナンスが単純化される。
【0131】
同様に、
図13〜14に示すような、複数正規表現のシリアル(順次連続的)な適用や、複数の独立した正規表現の結果を実現する正規表現を定義することは可能である。しかし、これら正規表現の定義は、非常に複雑になることがある。個別の正規表現を定義し、それらを交互に又は順次適用することは、より複雑な全体にわたる結果を実現する単一の正規表現を定義するよりも簡単である。よって、本発明は、米国特許出願第12/949,703号に対して優位がある。
【0132】
図15は、状態情報を有する正規表現を受け取って、それを
図10の試験測定装置で使用するための正規表現エンジンにコンパイルするコンパイラを示す。
図15では、コンパイラ1505が、状態情報1025を伴う正規表現1305、1405を受ける。正規表現1305、1405は、正規表現1305、1405とマッチする状態/ビット一体型ストリームを認識するステート・マシーンを効果的に記述しているので
、コンパイラ1505は、正規表現エンジン1015を構成する状態及び遷移を定義する
、このステート・マシンを利用
して、正規表現エンジン1015を生成できる。
【0133】
コンパイラ
1505は、正規表現1305、1405を受け取り、それから正規表現エンジン1015を生成できるので、当業者であれば、正規表現1305、1405と、正規表現エンジン1015との間の唯一の違いは、実装(implementation)である(これらは、両方とも、シリアル・ビット・ストリーム又は状態/ビット一体型ストリームが特定の表現とマッチする仕方を記述している)ことが理解できよう。従って、正規表現1305、1405と正規表現エンジン1015とは、実際的には異なる構造体である一方で、これら用語は、同じ基本的基礎概念を表している。従って、用語「正規表現エンジン」及び「正規表現」は、実際上、交換可能に利用でき、特定の用語の意図は、文脈から理解すれば良い。
【0134】
図16A〜16Bは、本発明の実施形態による状態情報を伴う正規表現を用いるための手続のフローチャートを示す。
図16Aにおいて、ブロック1605では、状態情報が
イベントとして定義される。ブロック1610では、シリアル・ビット・ストリームを受ける。ブロック1615では、状態を特定するロジックがシリアル・ビット・ストリームに適用され、状態/ビット一体型ストリームを生成する。ブロック1620では、正規表現が状態/ビット一体型ストリームに適用される。
【0135】
ブロック1625(
図16B中)では、中間結果が正規表現(Regular Expression)から生成される。この中間結果は、ブロック1630で、第2正規表現エンジンに入力される。ブロック1625及び1630は、もし更なる正規表現が適用されるなら、破線矢印1635で示されるように、更なる回数、繰り返しても良い。
【0136】
別の選択肢では、ブロック1625及び1630で示されるように複数の正規表現を順次適用するのではなくて、もし状態/ビット一体型ストリームが第1正規表現とマッチしなかったのなら、ブロック1640で、第2の正規表現を適用しても良い。破線矢印1645で示されるように、もし続いて起こるマッチの失敗に続いて、更なる正規表現でトライしようとするなら、ブロック1640が、更なる回数、繰り返しても良い。
【0137】
最後に、ブロック1650では、1つ又は複数の正規表現の結果がユーザに出力データとして提示されても良い。
【0138】
図17は、正規表現エンジンで使用するための構造へ正規表現をコンパイルする本発明の実施形態による手続のフローチャートを示す。
図17において、ブロック1705では、状態情報がイベントして定義される。ブロック1710では、正規表現を受ける。ブロック1715では、順次適用できる第2正規表現を受けても良い。破線矢印1720で示されるように、ブロック1715は、どのくらい多くの正規表現を受けるかに応じて、複数回繰り返しても良い。
【0139】
別の選択肢では、ブロック17
25で示すように、複数の正規表現を順次適用するのではなくて、もし状態/ビット一体型ストリームが第1正規表現とマッチしないのなら、ブロック1725で、使用すべき第2正規表現を受けるようにしても良い。破線矢印1730で示されるように、ブロック1725は、どのくらい多くの正規表現を受けるかに応じて、複数回繰り返しても良い。
【0140】
最後に、ブロック1735において、受けた正規表現をハードウェア構造にコンパイルしても良い。
【0141】
上述の
図16A〜16B及び17は、本発明で可能な様々な実施形態を表している。本発明の実施形態は、フローチャートに示したこれらのものに限定されない。本発明の実施形態の一般性を損なうことなく、種々のブロックを省略できるし、ブロックの順番を再配列できる。このように、例えば、
図16Aの破線1655、
図16Bの破線1660、
図17の破線1740 及び1745は、ブロックをスキップできる方法もあることを表す。フローチャートをどのように変更するかというこれら例は、単に例に過ぎず、フローチャートを変更できる唯一の方法を記述しようとするものではない。
【0142】
以下の説明は、本発明のある側面を実現できる適切なマシーンの簡潔な概要の説明を提供しようとするものである。典型的には、マシーンは、システム・バスを含み、これに、プロセッサ、メモリ、例えば、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、又は他の状態保持メディア、記憶装置、ビデオ・インターフェース、そして、入力/出力インターフェース・ポートが取り付けられる。マシーンは、少なくとも一部分は、キーボード、マウスなどの従来の入力デバイスからの入力によって、制御されても良く、加えて、別のマシーンから受けた指示、バーチャル・リアリティ(VR)環境を用いるインタラクティブな処理、生体フィードバック、又は、他の入力信号によって制御されても良い。本願で用いたように、用語「マシーン(machine:機械)」は、単一のマシーン又は通信可能に結合された複数マシーン若しくは一緒に動作する複数デバイスからなるシステムを広く包含することを意図している。典型的なマシーンとしては、パソコン、ワークステーション、サーバ、ポータブル・コンピュータ、ハンドヘルド・デバイス、電話、タブレットなどのようコンピューティング・デバイスに加えて、例えば、自動車、電話、タクシーなどの私有又は公共の輸送機関のような輸送装置がある。
【0143】
マシーンとしては、プログラマブル又はノン・プログラマブル・ロジック・デバイス又はアレー、ASIC、組込み型コンピュータ、スマート・カードなどのような組込み型コントローラ(embedded controller)を含んでも良い。マシーンは、ネットワーク・インターフェース、モデム、他の通信手段など、1つ以上のコネクションを用いて1つ以上の遠隔装置に接続されても良い。複数のマシーンは、イントラネット、インターネット、LAN、WANなどのような物理的又は論理的なネットワークにより、相互接続されていても良い。当業者であれば、ネットワーク通信には、無線周波数(RF)、衛星、マイクロ波、IEEE810.11、Bluetooth(登録商標)、光、赤外線、ケーブル、レーザなどといった、有線又は無線の短距離又は長距離のキャリアやプロトコルを利用して良いことが理解できよう。
【0144】
本発明は、マシーンがアクセスしたときに、マシーンがタスクを実行するか、又は、抽象データ形式又は低レベルのハードウェア状況を定義するという結果が得られる機能、手続、データ構造、アプリケーション・プログラムなどを含む関連データを参照するか又は連動して記述されても良い。関連データは、例えば、RAM、ROMなどの揮発性及び/若しくは不揮発性メモリ、又は、ハード・ドライブ、FD、オプティカル・ストレージ、テープ、フラッシュ・メモリ、メモリ・スティック、デジタル・ビデオ・ディスク、生体ストレージなどを含む他の記憶デバイス及びそれらに関連する記憶媒体に記憶しても良い。関連データは、パケット、シリアル・データ、パラレル・データ、伝播信号などの形式で、物理的及び/又は論理ネットワークを含む伝送環境を通して送ることができ、圧縮又は暗号化形態で利用されても良い。関連データは、分散型環境で利用され、マシーンがアクセスするローカル又は遠隔な場所に蓄積されても良い。
【0145】
図示した実施形態を参照しながら、本発明の原理を記述し、特徴を説明してきたが、こうした原理から離れることなく、図示した実施形態の構成や細部を変更しても良いことが理解できよう。そして、先の説明では、特定の実施形態に絞って説明しているが、別の構成も考えられる。特に、「本発明のある実施形態によると」といった表現を本願では用いているが、こうした言い回しは、大まかに言って実施形態として可能であることを意味し、特定の実施形態の構成に限定することを意図するものではない。本願で用いているように、これら用語は、別の実施形態に組み合わせ可能な同じ又は異なる実施形態に言及するものである。