2.6 Trace Mode

Veritakの最もユニークな機能です。.
ドライバの記述に飛んでいく機能です。WaveformView "エディタ ドライバ記述へ飛ぶ"で、ドライバ記述.に飛びます。
これには、Trace Debug Mode でコンパイルする必要があります。

例で見ていきましょう。
Load Project
"124test1.vtakprj"
Select [3:0] a, 右クリック => エディタ ドライバ記述へ飛ぶ

するとT1カーソル時のドライバに飛んでいきます。.
飛んできましたが、ここは、宣言箇所で、ドライバではありません。
この時点T1 cursor time (294215ps)では、代入記述が未だされていない為です。

そこで、少しT1カーソルをずらしてもう一度やってみます。

今度は、いいみたいです。(ライン37)

もう一つの例です。. エディタ ドライバ記述へ飛ぶ [480:1] str .

確かに飛んできました。

Multiple Destination
"[1:0] resolve_source"で、エディタ ドライバ記述へ飛ぶ. をやってみると、ビット展開してください
すると 飛び先が分かれている。。 と言われますので、ビット展開して、resolve_source[0].を指定します。
.結果が下ですが、確かに1が代入された箇所に飛んでいます。

Multiple Driver
今度は "[1:0] resolve_wire"でやってみます。飛び先が分かれている。。 複数のドライバがある。。の後、.
Resolver7[1] と Resolve_source[0]で飛んでみます。

下は、 "Resolver7" の結果です。これは、定数代入なので名前がありません。そこで、Resolver7 という名前がついていた訳です。

resolve_source[0]の結果です。確かに1が代入された箇所に飛んでいます。.

Verilog-HDLでは、複数のドライバの衝突は、次の関数で解決しています。

この関数は、LRMで定義されており、strengthが同じなら次のテーブルになります。

 この例では、定数 1 と resolve_source[0]が Resolverの入力だったことになります。.
このようにVeritak のtrace modeはResolverの入力表示機能を有しています。

もう一つの例

[7:0] counter valueが8'h0c=>8'h16にジャンプしていますが、どうしてこれが起きたかを解析してみましょう。.

エディタ ドライバ記述へ飛ぶ [7:0] counter

Line 189に飛んできました。.
bcounter をダブルクリックしてtool-tipを出します。.
8'h17.になっています。
.

そこで、 "bcounter" を WaveformView.に追加します。

WaveformViewから、,[7:0] counter は、[7:0] bcounterを at line 189 Non-Blocking statementでロードした結果であることが分かります。

Trace Mode と Debug Mode の違い

Debug Modeとの違いをまとめると、下表になります。

Debug Mode Trace Mode
EditorTooltip
時刻
シミュレーションエンジンが生きている間の現在値を指します。シミュレーションエンジンが終了するとToolTipはでません。 T1カーソルの時刻を指します。シミュレーションエンジンが終了していてもOKですが、T1カーソルが出ていないと時刻が指定されないため、Tooltipはでません。
インスタンス ScopeTreeViewと連動していません。ファイル名と行番号から推定されるインスタンス全部を表示、追加になります。 ScopeTreeViewと連動しています。インスタンスが一つに限定されるため、波形追加もインスタンスを指定した形で限定的に行え、よりトレースしやすくなります。ただし、選択されていないScopeのソースを指定しても無視されます。従いViewからEditorに行くようにしてください。
速度 1とします。 2-3倍に遅くなります。RTL記述によります。
メモリ消費量 1とします。 2-3倍になります。RTL記述によります。
SDF 小規模なら、可能です。 内部でトレースモードはDisableされます。
付加Scope ありません。 Resolve_Scopeという名前のScopeが、TreeViewに表示されます。
これは、Veritak内部で使用しているもので、無視してください。
Note:Trace Mode1,2では、$sdf_anotate後のゲートレベルで実施することはできません。

Tips:: Trace Mode1,2を使った解析例が、下記Section5にあります。
http://www.sugawara-systems.com/opencores/yacc/index.htm