以前のNotepad++には、変更された箇所が黄色の線で示され、セーブしたら緑色の線で示される機能があった。この機能がどうしても欲しかったので、調べてみると
Notepad++用プライグインのサイトがあって、そこにChange Makersがあった。このプラグインを入れると、私の希望の機能が実現できるようだ。
早速、
Change MakersのサイトからUnicode用のプラグインをダウンロードした。
ダウンロードした内容(下の図)をNotepad++を閉じてから、Notepad++のフォルダの下のpluginsフォルダにコピーする。

すべてコピーしないと動かないようだ。
Notepad++を起動すると左脇に1列増えている。まだChange Makersがイネーブルされていないので、変更しても表示されない。プラグインメニューからChange Makersを選んで、Disable Pluginのチェックを外すと有効になる。

更に左脇の増えている1列が気になるので、それを削除しよう。やはりプラグインメニューからPlugin Maker Marign のSecond View: Show Margin のチェックを外す。こうすると左脇の余計なマージンがなくなるはずだ。

これで、Notepad++の画面で文字を入力してみると、黄色い金平糖マークが表示される。

次に、そのファイルをセーブすると緑の金平糖マークになる。

とりあえず目的は達したが、いろいろなプラグインがあるようなので、後で見てみよう。
(追記)
いままでの記述はWindwos XPだったが、Vistaでは挙動が違うようだ。まずは、Change Makersが最初から有効になっていた。
Plugin Maker MarignのSecond View: Show Margin のチェックは外せなかった。その代わりにNppPlugin_PluginMargin.dll を入れなくても怒られずに、入れなければ左脇の余計なマージンは出てこない。どうなるか分からないが、これでやってみようと思う。(自己責任でお願いします)
ビットマップVGAコントローラをデバックしている。大体動作してきたと思う。
下にシミュレーション波形を示す。

vram_addressが読んでくるVRAM(DDR2 SDRAM)のアドレスを示す。読んでくる時にカウントアップされている。vram_req_weはアービタへのVRAMのリクエストを書き込む信号。リクエストしたVRAMアドレスのデータがvram_data_inにでてきて、その有効はvram_data_validによって示される。
cs_rdgステートマシがビットマップVGAコントローラの描画データの読み込み状態を示す。最初にidle_rdgになっているが、リセットが外れたら、init_full_modeになって、描画データを貯めておくpixel_async_fifoをFULL状態になるまで、アービタにリクエストを出す。リクエストがDDR2 SDRAMコントローラに届いて、VRAMにある描画データを読み込みpixel_async_fifoがFULLになったら、cs_rdgステートマシンはwait_half_full状態に移行し、pixel_async_fifoが描画データを吐き出して、半分になるのを待つ。半分になったら、cs_rdgステートマシはreq_vram_burstステートに移行し、pixel_async_fifoの容量半分をアービタにリクエストをだして、描画データを読んでくる。
最初に、pixel_async_fifoがFULLになってから、描画もスタートする。これは、cs_rdgステートマシがinit_full_modeからwait_half_full状態に移行したときにh_countのカウントが始まることでわかると思う。今のところ、動作的にはうまく行っているようだ。ちなみにDDR2 SDRAMから読んでくるデータはまだ、書き込んでいないのでXとなってしまっている。
pixel_async_fifoがFULLから半分になるのが2.672usec、req_vram_burstステートに移行して描画データを読んでから、もう一度req_vram_burstステートに移行するまでの時間は1.541usecだった。最初は描画が止まっているので、長い時間になっている。req_vram_burstステートでは、ちょうどpixel_async_fifoの容量の半分のデータをアービタにリクエストしているが、もう少し増やそうと思う。
いままでは、Veritakをあまり気にしないで使ってきたが、いろいろと便利な機能があるようなので、使ってみた。そのことを備忘録として書いておくことにした。
今のところ、グラフィック・コントローラ・テスト回路は、DDR2 SDRAMコントローラのアドレスFIFOがOVERFLOWになり、FIFOのアサーションでシミュレーションがストップされているがその原因を探ることにした。
下のシミュレーション波形でddr2_addr_fifo_fullが1になったときに、ddr2_addr_fifo_weが1になるのがおかしい。つまりFIFOがFULLになったときに書き込んでいる。これをトラブルシュートする。

その前に、私の環境はVeritak-Basic 3.75A で、エディタのNotepad++ v5.6.6にNppVeritakPlugin04をインストールして使用している。Notepad++の使用とプラグインのインストールは
ここを参照。
さて、今回はWaveform Viewerの信号名の右クリックメニューのうちの”エディタ ドライバ記述に飛ぶ”を使いたかった。普通にやるとエラーダイアログが出て使用することが出来ないので、検索したところ、
ここに記述があった。
このマニュアルによると、Trace Debug Mode でコンパイルする必要があるそうだ。早速、Verilogプロジェクtメニューからプロジェクト設定を選択して、Project Settingダイアログを出して、Debug Mode をTrace Debug Modeに設定し、もう一度コンパイル、シミュレーションをした。これで、右クリックメニューのうちの”エディタ ドライバ記述に飛ぶ”を使う準備ができた。

さて、ddr2_addr_fifo_weの右クリックメニューのうちの”エディタ ドライバ記述に飛ぶ”を選択する。その時にT1カーソルの位置(ピンクの四角の位置)のドライバ記述に飛ぶと言うことなので、T1カーソルをddr2_addr_fifo_fullが1になったときに合わせる。

そうするとNotepad++の該当するドライバ記述に飛ぶ。

その時に、信号にマウスカーソルを合わせるとT1カーソル時の値が表示される。これの表示は信号の階層が深いと画面の右端にフェードアウトしてしまうので、なるべくNotepad++を左に持ってくる。(この辺の回避方法があったら教えてください)

ここで、ddr2_addr_fifo_we <= Bitmap_VGAC_addr_we;の記述があるので、Bitmap_VGAC_addr_weの記述を見たいということになる。Bitmap_VGAC_addr_weを選択して、Npp-Veritak IFダイアログのAdd Waveformボタンをクリックする。

そうするとVeritakのWaveform ViewerにBitmap_VGAC_addr_weが追加されているので、右クリックメニューのうちの”エディタ ドライバ記述に飛ぶ”を選択する。

そうするとBitmap_VGAC_addr_weのドライバ記述に飛ぶことができる。

こうやって、便利に原因を特定していくことができる。
#ちなみに、このバグは、ブログを書くために残しておいたので、まだでバック出来ていない。ブログ書きながらなので、デバックが進まないが、後でやり方がわからなくならないように残しておく。
(追記)
バグの原因がわかりました。Bitmap_VGAC_addr_weのドライバ記述のステーマシンのステート値の定義でした。下のように書かれていました。
parameter [1:0] vram_req_we_low= 2'b01,
vram_req_we_high= 2'b01; // active
下のように修正したら直りました。
parameter [1:0] vram_req_we_low= 2'b01,
vram_req_we_high= 2'b10; // active
今まで、Verilogのステートマシンは論理合成不可の部分にストリングで書いていたが、(”
Verilogでのシミュレーションの疑問(解決編)”参照) Veritakでenum選択でステートが表示できると聞いたような気がしたので、やってみることにした。
cs_mainステートマシンを選んで、右クリック。右クリックメニューから”表示の選択”を選び、その下の”enum選択”を選ぶ。

parameter selectionダイアログが出てくる。ここで、使うパラメータをすべて選択してもステートは表示されない。

ステートマシンのパラメータの宣言は下のようになっている。
parameter wait_cmd_fifo_not_empty =4'b0001;
parameter vram_addr_counter_load =4'b0010;
parameter next_char_code_load =4'b0100;
parameter char_generation_state =4'b1000;
Veritakマニュアルの
2.4.2 Enum Displayを見るとparameterの書き方が悪いのがわかった。それによると、下のように書く必要があるらしい。
parameter [3:0] wait_cmd_fifo_not_empty = 4'b0001,
vram_addr_counter_load = 4'b0010,
next_char_code_load = 4'b0100,
char_generation_state = 4'b1000;
上のように書き換え、コンパイル、シミュレーションして、cs_mainステートマシンを選んで、右クリック。右クリックメニューから”表示の選択”を選び、その下の”enum選択”を選んで、parameter selectionダイアログを出す。

param0〜param3 まで値が入って、この行を選択してOKボタンをクリックすると、ステート値が表示された。

うまく行ってよかった。上記のように全部のステートマシンを書き換えようと思う。
見てわかるとおりに、グラフィック・コントローラ・テスト回路の動作はまだまだおかしい。まだ、DDR2 SDRAMコントローラのアドレスFIFOがOVERFLOWになり、FIFOのアサーションでシミュレーションがストップされている。Verilogのアサーションだけども、やはりアサーションは便利だ。
これからステートマシンのステート値を定義するparameterを書き換えてデバックする予定だ。
この頃、仕事でVHDLファイルを生成するためのRubyプログラムを書いている。Rubyはダウンロードしたのだが、コマンドプロンプトでやるのでは、どうにも効率がわるい。
そこで、NetBeans IDE 6.8を使ってRubyを書いて、デバックしてみることにした。
Java SE Development Kit 6u18 および NetBeans IDE 6.8をダウンロードしてインストールし、起動した。
起動後にRubyプラグインを入れる必要がある。ツールメニューからプラグインを選択すると、プラグインダイアログが開く。使用可能なプラグインタブをクリックして、RubyおよびRailsを選択してインストールする。
更に既存のRubyファイルをプロジェクトに入れてデバックしてみることにした。下の図が新規プロジェクトを作って、既存のRubyソフトをプロジェクトに入れたところ。

ここのText Editorで記述をミスればワーニングやエラーが出てくる。理由も出てくる。ここでは英語だが、一部日本語でも職場ではでてきた。

更に、ここで書くと、例えばfile. と入力するとその下のメソッドを表示してくれる。説明もあるものは出てくる。しかしこんなにメソッドがあるのか?まだ良くわからないけどしぼれるのかな?

次にデバックなのだが、まだ良くわからないのだが、単体ファイルをデバックするときには、デバックメニューからファイルをデバックを選ぶと良いみたいだ。(デバックの前に行番号をクリックしてブレークポイントを設定しておく)

そうするとファイルのデバックダイアログが出てくる。

ここに、実行引数とRubyオプションを入れて、了解ボタンをクリックしデバックカーを実行する。そうするとデバックモードになって、ブレークポイントで停止する。Text Editorの変数にマウスカーソルを合わせると値が表示されるようだ。

右下の変数タブをクリックすると変数の値を見ることができる。

コマンドプロンプトからやるのよりもとても便利。
更にデバッカーを起動すると、サーバー用のTCPポート3000が使われていてサーバーが起動出来ないと言うエラーが出たが、これはRuby Railsのサンプルプロジェクトをロードする。プロジェクトを右クリックし、右クリックメニューからプロパティーを選ぶとプロジェクトプロパティーのダイアログが出てくるので、そこのサーバーポート番号を変更する。

NetBeans IDE 6.8を使ってRubyを書くと便利だと思った。
#職場でやってみたのだが、うまくいかなかったので、家でもやってみたらうまく行った。備忘録として書いてみました。
(2010/02/08:追記)
RubyおよびRailsプラグインの記述を追加。