systemVerilogをQuartus2で合成してみる②・その後。。

その後、実チップでも動作しました。
途中。。エンハンス怒Q事件もあり確認が遅れていたが(下記参照)
 http://blogs.yahoo.co.jp/sawaragikun/22066774.html
動作しましたが。。問題発見!

enum記述で不具合が。。

`define IDLE  4'h0
`define VALID  4'hB

enum  logic[3:0] {
                   IDLE = `IDLE
                    ....
                    ....
                  ,VALID = `VALID } state ;

デバイスドライバコード(C言語)へdefine文をそのままコピペして使用したら動作しない。。汗)
調べたら、enum記述の設定値がdefienと異なっていた、どうも合成で最適化が掛かりdefine設定値と違う値なったみたい。。
  → net+sdfシミュレーションで見てみたら確かにRTLと異なっていました。Quartus2特有かも

今まではverilog95だったので気がつきませんでした。。汗)
enumを使用するとシミュレーション波形が見やすくなるので(modelsimではenum値が文字で出てくる)使用してみたが。。このざまでした。

DPI-Cを使用したnet+sdfシミュレーションなら早期に発見できたのかな、めんどくさそうだけど次の機会に試してみます。

systemVerilog 回路合成 FPGA Quartus2