• Showing Page History #76818

TimingChartViewer

こんな風にソースコードに書いて、

  1. // TimingChart
  2. //
  3. // ACLK /|/ / / / / / / / / / / / /
  4. // ARADDR x|A A B B x x x x x x x x x : A B
  5. // ARVALID 0|1 1v1 1 0 0 0 0 0 0 0 0 0
  6. // ARREADY x|0 1 0 1 x x x x x x x x x
  7. // RDATA x|x x x A x x B x C D x E x : \
  8. // D(A0) D(A1) D(A2) D(B0) D(B1)
  9. // RLAST 0|0 0 0 0 0 0 0 0 1 0 0 1 0
  10. // RVALID 0|0 0 0 1 0 0 1 0 1v1 0 1 0
  11. // RREADY 0|0 0 1 1 0 1 1v1 1v1v1 1 0
  12. // RREADY 0|0 0 1 1 0 1 1v1 1v1v1 1 0
  13. //
  14. // TimingChartEnd

こんな風に起動すると

tcv.jar axi_readburst.v

こんな出力が得られるソフトウェアを作りました。 TimingChartViewer.png

動作環境

  • Java(TM) SE Runtime Environment (動作は Windows7(x86_64)上のJava 1.6.0_27(64bit版) で確認しました)

使い方

リリース一覧から、TimingChartViewer_r???をダウンロードして、適当なディレクトリに展開してください。 中に入っているtcv.jarが実行ファイルとして動作します。

起動は、以下のように打ち込んでください。

<tcv.jarを置いたパス>\tcv.jar <ファイル名>
 または
java -jar <tcv.jarを置いたパス>\tcv.jar <ファイル名>

TimingChartViewerは、波形の記述が埋め込まれたVerilog HDLやVHDLのソースコードが与えられることを想定して開発されていますが、入力はテキストファイルであれば何でもかまいません。

ボタンとその動作

ボタン 動作
Reload ファイルを読み直します。
Clip 波形画像をクリップボードにコピーします。
PNG PNG形式の画像を、与えられたファイルと同一のディレクトリに出力します。

なお、ボタンにフォーカスがあたっている状態でスペースキーを押すと、マウスでボタンを押した場合と同じ効果があります。

制限など

  • 信号の変化点を前後にずらすことはできないので、非同期信号の記述には向きません。
  • クロックがHigh Activeであることが前提なので、クロックがLow Activeなタイミングチャートは表現できません。
  • r219 および r226 ではバスにHi-Zを記述するとエラーになります。バグですので、修正を予定しています。

複雑な波形を描かなければならない場合は、 タイミングチャート清書ツール などをご検討ください。

文法

サンプルが tcvsample.vhd にあります。

各行の形式は、バスでない1本の信号ならば

信号名 信号レベル|信号レベル 信号レベル ...
バスならば
信号名 信号レベル|信号レベル 信号レベル ... : コメント コメント ...
のように記述します。

1本の信号の場合は、キャラクタとして / 0 1 z x が使用できます。

バスの場合は、キャラクタとして x A B C ... Z が使用できます。

最初の信号レベルは、タイミングチャートに載る以前の信号レベルを意味します。 最初の信号レベルと次の信号レベルの間に|があるのは可読性を上げるためであり、空白と同様に扱われます。

vは、Highが連続するけれど瞬間的にLowになる波形、 ^ (ハット)は、Lowが連続するけれど瞬間的にHighになる波形、俗に言うヒゲを表現するために使用します。

バスの場合は、: (コロン) のあとにコメントを書きます。タイミングチャートの中で、Aがコロンのあとの最初の文字列、Bが二番目の文字列、Cが三番目の文字列、というように置換されます。

記述 意味 表示
TimingChart 解釈の開始行 -- TimingChart
TimingChartEnd 解釈の終了行 -- TimingChartEnd
/ クロック信号 -- CLK_I /|/ / / / CLK_I.png
\ 次の行に続く -- HOGE_I x|A x B : \
| 空白と同じ扱い -- FUGA_O 0|0 1 1 0
0, 1, z, x Low High HiZ 不定 -- A_I 0|0 1 z x 01zx.png
v 瞬間的にLow -- B_O 0|0 1v1 0 v.png
^ 瞬間的にHigh -- C_O 1|0^0 0 1 hat.png
A B ... : comment バスのコメント -- INST_I x|A B x A : LD MOV bus.png

リリース履歴(新しいもの順)

r226 Javaで再実装。クリップボードへのコピー、正しい大きさのPNG画像出力、T0,T1,T2,...の表示を可能にした。
r219 Tclで実装した、最初のリリース。PNG画像出力機能がいまいち。

実装予定機能

  • ウィンドウがフォアグラウンドになると自動でリロードする
  • 0-1で滑らかに表示
  • バスのz対応
  • Negative CLK n|n n n
  • 1/2 clock周期 / _ / _ / _
  • テストベンチ OVLをクリップボードに吐く
  • 表示x,y位置の調整
  • 信号名と波形の間の空白を減らす