<< 2024年10月
新着記事
最近のコメント
月別
カテゴリ
2024.10.01 08:10

ILAを試してみる


・FPGAでILAを使ってみる。以前Block DesignでやっていたときはILAモジュールを貼り付けた後にあちこちのファイルに検索をかけて中身をごちゃごちゃといじってやらないといけないという超のつくような面倒臭さだったのだけど、今度は簡単というか、当たり前になった。
・Flow navigatorのOpen Synthessis DesignのSetup Debugを選択。あとは眺めたい信号をピックアップしていけば良い。ただ、問題はソースコードの信号がどれなのかわかりにくくなるということ。たとえばcounterというのがあると、これはF/Fというのかラッチというのか……が生成されるわけだけど、こいつの入力、出力、リセットに全部counterのプリフィックスがついてくる。ここに「reset」とかわかりやすい名前が付けば良いのだけど、そうはいかない。
counter_reg_n_0_0_0[0]とかcounter_reg[8]_i_1_n_5とか、判じ物状態。
・入出力に関しては入出力バッファがあるおかげでわかりやすいのだけど中身はそんな感じ。まぁ、仕方ない。
・とりあえず信号をピックアップして、GenerateBitStream。ロジックアナライザの機能もまた論理回路としてターゲットに付加されることになるので、当然のように再ビルドが必要になる。
・xdcファイルの書き換えも必要になるらしくて、「新しく作るか、既存のものに上書きするか」と聞いてくるのでとりあえず「上書きして良いよ」としてみる。
・さて、その後ロジックアナライザ画面はどうやってだすのだろうと思っていたら、普通の場合と同じようにダウンロードしてやれば勝手にロジックアナライザ画面が起動する。なかなかサービスがいい。
・で、右下のペインでトリガ条件とかを設定してGoしてやれば普通にロジアナ
。簡単だな。
・ところでロジックアナライザ機能を外して元に戻すには、再びSetup Debugすれば良い……はずなのだけど、自動で書き換えられたxdcファイル(実際には後ろにロジアナ用の記述が足されるだけだけど)が元に戻っていない感じ。
・まぁ、このあたりは普通にエディタを使うなり、Vivado内蔵のエディタなりで開いて削ってしまえば良いだけの話だけど。

・そんなところでUG-908の説明

を見ると、verilogの場合には
 (* mark_debug = "true" *)reg [`CMIN+3:0] counter;
のような感じで、(* mark_debug = "true" *)をつけてやるという手もあるらしいので、これをやってみると、信号名選択のところで、自動的にピックアップされた。
・ただ、この例みたいに配列の全信号がターゲットになると大きすぎるときもある。
 (* mark_debug = "true" *)reg [`CMIN+3:`CMIN] counter;
 reg [`CMIN-1:0] counter;
なんていう具合に分割すれば良いのかな?と思ってやってみたら良い感じ。

たぶんこれをつけておけば論理合成のときに最適化で無くなったりしないんだな。実用的にはこんなふうにソースコードをいじるほうが正解かな。