ToDo
優先度高
- 図解を増やす。文章だけではどうやってもわかりづらい。
優先度中
- ドキュメントの構造を整理する。
- Wishboneのインタフェースをサポートする
- isesim + ファイル圧縮 + GtkWaveで波形表示ができないか?
- VHDL版のコーディング規則を作る。
- svnからのバージョンスタンプをsamplefpgaに入れる
- makefile、各種rubyスクリプトの解説が必要
優先度低
- ModelSIMでadd_cmdhelpを使ってみる。
- モジュールからテストベンチの雛型作成
- FPGA内部信号をロジアナで観測するために、深いモジュールに穴をあけるのを自動化する(トグル化、パラシリ変換もする)
- DIPSWで出力を切り替えるのもサポートする。
- PicoBrazeのメモリを書き換えるサンプルを用意する(オートインクリメントのアドレスregとデータreg)
- ArmUsbTiny --- JTAGデバッガでいろいろやってみる
済み
ドキュメントを書いたら、知人にアナウンスする。
シミュレータの画面にprintfできるようにする。DPI-C版で実現した。
- 没
fsm.tclをincr Tcl化する。
ModelSIMのTkで、LEDを表示して、信号線の状態によって明滅させる。
- 転記
compileoutofdateに失敗した場合、シミュレーション起動を停止する。
- 転記
Excelのファイルから指定したシートをCSVファイルに書き出すスクリプトを作成する。
- 転記
sh4以外のCPUのためのconfig.tclを用意する。
- 転記
make dependを可能にする
- 転記
incr Tclでfsm.tclをオブジェクト指向化する。
- 転記
Verilog HDLに移植する
ISE Simulator対応する。
Wikiの必要なページにLineCommentを入れる。
Wikiのドキュメントライセンスを決める。
MIMIC_DCM.vhdの解説が必要
参考にした文書のリストを作る。アフェリエイト用にもなる。
- 転記
sleepに指定した値が大きい場合にエラーになる問題を調べ、対策する。
msys/binにパスを通す、をドキュメントに書く必要がある。
プログラムのmakeの仕方を書く
endOfConfigは明示呼び出しに変更する。
ファイルをglobに集めさせる。
sスクリプトでnoodlyboxディレクトリの位置を特定する。
_PKG.vhdをpkgディレクトリに吐き出すように直す。
fsmと打つだけで、過去のオプションで動くようにする。aliasが使える?
ModelSIMでaliasを使ってみる。
- 没
一回do fsm.tclするだけにして、あとはprocとして起動する。
サイトがまともになったら、AmazonアフェリエイトIDを登録する。
configファイルの行またぎ記述で、'_'でなく'\'を使用する。
samplefpgaでMIMIC_DCMを使う
既存プロジェクトにNOODLYBOXを取り込んで利用する方法を書く。
あとあと列を増やしても問題ないように、csvファイルの1行目を見て代入する変数を決める。
備忘録
- VHDLでは、OUT <= IN; の記述だけでデルタ遅延が発生する。
Tclの豆知識
- info command Fsm::* でproc定義したコマンドのリストが出る。
- info nameofexecutable でModelSIM vishとISE Simulatorの区別ができる。
- ModelSIMにはDOPATHがあるが、ISEにはない?
古い解説
現在ではうそになっている部分があるので、書き直してからしかるべき場所に移す。
HDL部分(NOODLYBOX.vhd、tNOODLYBOX.vhd)の解説
- テストベンチの最上位階層に、NOODLYBOXおよびFPGAの最上位(以下FPGA_TOPとする)をインスタンス化し、アドレス、データ、制御信号を相互に繋いでいます。
- fsm.tclに対してNOODLYBOXインスタンスのパスを教えるには、テキストファイル先頭に"set noodlyboxPath /foo/bar"を書いてください。テキストファイルとは、-fオプションを使うならばそれによって指定されるファイル、-cオプションを使うならばSimulator::config()に指定するファイルを指します。
Tcl部分(fsm.tcl)の解説
- FSM.tclが、HDLシミュレータの中のNOODLYBOXと外界とのやりとりを仲介します。
- do ../fsm.tcl -f ファイル名 とすると、テキストファイルを解釈して実行します。テキストファイルの文法は、複数行にまたがる記述を_で繋ぐことを除き、Tclそのものです。サンプルは../sh4commands.txtです。
- do ../fsm.tcl -c 実行ファイル名 とすると、パイプを介して実行ファイルとやりとりします。サンプルは../c/accessfpga.exeです。
テキストファイル(サンプル sh4commands.txt)の解説
- 中身はTclスクリプトそのものです。ただし、複数行にまたがる記述は解釈に失敗します。
- source ../sh4config.tcl という記述で、信号タイミングなどを設定するファイル sh4config.tcl を読み込ませています。sh4config.tclは、後述するaccessfpga.cでも使用されます。
C言語部分(サンプル accessfpga.exe)の解説
- 実装の詳細を隠すために、C++風のCプログラムになっています。~fpga構造体のみを使い、Processor構造体およびSimulator構造体が未使用であれば、マクロ"REALWORLD"を定義することで実機用のオブジェクトファイルが作成できます。
- samplefpga.csvを検証対象のFPGAのレジスタ構成にあわせて修正し、accessfpga.cにそれらのレジスタを読み書きする記述を書いてください。
- Simulator::config()にテキストファイルを与えることで、デバッグ情報出力のOn/Off、信号タイミングの変更などができます。
- Simulator::force()で信号状態の変更、Simulator::examine()で信号状態の確認ができます。forceはDIPスイッチ入力回路の動作確認などに、examineはDAコンバータへの出力回路の確認などに使えると思います。
MIMIC_DCM
- Architecture Wizardで作った~DCM.vhdに対して以下の修正をします。
- use work.MIMIC_DCM_PKG.all; を先頭近くに挿入する。
- DCM_INST : DCM を DCM_INST : MIMIC_DCM に書き換える。
ちなみに、MIMIC_DCM.vhdは合成するとXilinxのDCMに化けるようになっているので、シミュレーションと合成でソースは同一のものが使用できます。
また、mimic.rb ~DCM.vhdすることで、自動的に上記の書き換えが行われますので、そちらを使用しても構いません。
FAQ
- Q.fsm.tclにオプションでファイルやコマンドを指定しているのに効きません。
- A.-cや-fを頭に付けているか、exeファイルが対象なのに-fを使っていたり、テキストファイルが対象なのに-cを使っていたりしないかどうか確かめてください。