FC2カウンター FPGAの部屋 2009年05月21日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

StateCADはISE11.1iがインストールしてあると使用できない

複雑でないステートマシンでは、StateCADを便利に使っていたのですが、ISE11.1iから使えなくなったようです。
職場のパソコンにはISE9.1i、ISE9.2i、ISE10.1i、ISE11.1iが入っている。StateCADのファイル(.DIA) はISE10.1iのbin/ntに入っているsc.exeに関連付けしてあり、.DIAファイルをダブルクリックするとStateCADが起動するようになっていた。
ISE11.1iにStateCADがなくなっていたのは知っていたのですが、今までどおりに.DIAファイルをダブルクリックすると起動すると思っていた。今日、やってみたところ、”エントリポイントが見つかりません”ダイアログが出てStateCADが起動できなかった。
sc_error_090521.png

ショックだが、これを機会にVHDLに書き換えることにする。(職場ではVHDL使っています)

2009/05/22 追記:
ibPortabillity.dllをコピーしなくても、ISE10.1iのインストールフォルダの下のbin/ntの下のsc.exeをダブルクリックすると起動しました。ここからファイルをオープンできるので、ここからファイルを読み込んで使うことにします。
  1. 2009年05月21日 11:13 |
  2. StateCADの使い方
  3. | トラックバック:0
  4. | コメント:2

Graphvizでステートマシンの図を書いてみた

ブログをFPGAキーワードで検索していたら、Graphvizで仕事用の図を書いているというブログを見つけた。(すみません。どなたのブログかわからなくてしまいました)
Graphvizってもしかして、doxygenをインストールしたとき入れたソフトだなと思い、調べてみると、いろいろな図を書けるということが分かった。(バージョンは2.22です)
そのブログに書いてあったGraphviz チュートリアルのページに詳しく書いてある。ダウンロードはGraphviz本家から。
Graphviz チュートリアルのページによると、テキストファイルで図を各コマンドを書いていけば自動的に図にしてくれるとのこと。
.dotファイルを作って、コマンドプロンプトの窓の中でサンプルを作り、dotコマンドを使って、やってみたがPATHが通っていない。。。
WindowsのスタートからGraphviz 2.22のフォルダを見てみると、Dotty.exeとGVedit.exeがある。
まずはDotty.exeを立ち上げてみる。Dotty.exeを起動すると真っ白な何もない画面が出る。
Dotty_1_090520.png

左クリックすると楕円が表示されるがどうやって図を書くのかよくわからない。右クリックをするとメニューが表示される。
Dotty_2_090520.png

右クリックメニューのコマンドでalf.gvを選んで表示したのがこれ。
Dotty_3_090520.png

こんな風に書ければ良いが、とりあえずやり方が良く分からない(マニュアルはあるのだが、読むのが面倒だし、マウスの真ん中(ホイールクリック)ボタンがうまくいかない)。(ホイールクリックはマウスのせいみたいです。マウスを変えたら線は書けたのですが、楕円の中にステートを書く方法が分かりません)

次にはGVedit.exeを使ってみることにした。
GVeditは、FileメニューからNewを選んで開いた、Graphviz Layoutにコマンドを書いて、GraphvizメニューからRunするとステート図にしてくれる。こんな感じ。
Dotty_5_090520.png

ステート図にするには、Graphvizメニューからsettingsを選んで設定する。
Dotty_4_090520.png

Layout Engine はdotにしたほうが良いようだ。私はPNGファイルを出力するようにしている。

さっそく、Graphviz チュートリアルのページを参考に、今作っているDDR2 SDRAMのコマンドを出力するステートマシンを書いてみたが、条件が多すぎて、あまりうまく書けない。条件を単純化して書いてみたソースがこれ。

digraph ddr2_cmd {
    graph [ranksep = 3, nodesep = 1.0, rankdir = LR];
    NOP -> PALL [label = "pall1_init"];
    NOP -> PALL [label = "pall2_init"];
    NOP -> PALL [label = "refresh and actived banks"];
    NOP -> PALL [label = "not equal_active_bank"];
    NOP -> EMRS [label = "emr2s_init"];
    NOP -> EMRS [label = "emr3s_init"];
    NOP -> EMRS [label = "emrs_dllena_init"];
    NOP -> EMRS [label = "emrs_ocd_def_init"];
    NOP -> EMRS [label = "emrs_ocd_exit_init"];
    NOP -> MRS [label = "mrs_dllrst_init"];
    NOP -> MRS [label = "mrs_init"];
    NOP -> REF [label = "ref1_init"];
    NOP -> REF [label = "ref2_init"];
    NOP -> REF [label = "refresh and not active banks"];
    NOP -> ACT [label = "not addr_fifo_empty and not active_bank"];
    NOP -> READ [label = "read_writex='1' and equal_active_bank"];
    NOP -> WRIT [label =  "read_writex='0' and equal_active_bank"];;
    NOP -> NOP;
    PALL -> NOP;
    EMRS -> NOP;
    MRS -> NOP;
    REF -> NOP;
    ACT -> NOP;
    READ -> NOP;
    WRIT -> NOP;
}


これをGraphzivで図にするとこうなった。
ddr2_cmd_090520.png

Graphzivはいろいろな図を書けそうなので、もっと勉強してみたい。VHDLやVerilog-HDLのステートマシン記述から自動的にGraphzivのフォーマットに直してくれるパーサ?があればいいんだけど。。。

2009/06/03 : 追記
Graphzivの記事をどなたのブログで見たかがわかりました。”日曜プログラマがダラダラ書く”さんの”2009-04-06”でした。
  1. 2009年05月21日 04:29 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:0