3.12 FIND_PATTERNダイアログ
000パターンを検索してみます。
QW1を右クリックしてFIND_PATTERNダイアログを出します。信号は、16ビット幅ですが、下位12ビット12'h000(Verilogと同じ構文)を
入力します。Baseは、0、Widthは12です。
黒カーソルを出して ->を押すと12'h000を検索してカーソルが移動します。(全く動かないときは、指定がまちがっているかパターンがないかです。) 下図のように確かに000パターンからxxx->Validになっているのが確認できました。
複数条件ので検索
Ver.120Aより、複数のFind PatternのANDでの検索が可能になりました。
例えば、「ADRS(アドレス)が8'h34でかつ、WENの立ち上がり」
のようなAND条件でのサーチなどをサポート
します。その後、黒カーソルをだしておき、LISTVIEW(左ペイン)上のWEN,とADRSの二つを選択します。
<− −>で、当該パターン箇所に移動します。
実際の例で見ましょう。
次の例の記述でマッチする所を検索するものとします。
always @ (negedge clock) begin
if (find_check) begin
if (a_func==Rotate_mode) begin
ここを検出したい。
end
end
end
まず、複数条件のANDを取る場合には、唯一のSTROBE信号を定義してやる必要があります。
本例の場合、@(negedge clock)ですので、そのまま下図のように定義します。
NOTE:
Veritakの内部実装では、まず@(negedge clock)を検索し、見つかったら、その時刻におけるパターンマッチ(レベル)を見ています。つまりSTROBE時刻におけるレベルを見ていることになります。その為に、STROBE信号の定義が一つだけ必要になります。
次にa_func==4'b0010(Rotate_mode)を定義します。
次に1ビット幅の信号レベルを定義します。STROBE信号ではない(レベル判定)ので、レベルをチェックします。
次にカーソルを出しておきます。(カーソルを出さないと検索開始点が定まらないので動きません。)
検索条件の3信号を選択します。
最後に検索方向を指定してやると、パターンマッチした箇所にカーソルが移動します。