`defineの注意
仕事で結構FPGAをいじっているのに、FPGAやVerilog HDLのエントリーが少ないなーと思ったのでたまには書きます。
恥ずかしいエラーの話
外付けのマルチプレクサ制御用のモジュールのコードを書いている時の話問題のコードは以下のとおり
`define HOGE 8'b00000001; module MUX_CONTROLLER(); reg [7:0] hogehoge ; always @ (posedge CLK or posedge RST) begin ... hoge <= `HOGE ; ... end endmodule
...は省略の意味
これでISimだと問題なくシミュレーションできる。しかしISEでCheck Syntaxをかけると以下のErrorがかえってくる。
line 92 expecting 'end', found ';'
最初は途中で全角スペースが入ってしまったかなぁ〜と思ったり、色々試してみてもダメ。途中から@marsee101さんと@unimaru_さんにも手伝って頂きました。
色々やってもだめで時間ばかりが過ぎて行きましたが、原因は簡単なものでした。`defineの最後に';'があるのがエラーの根源でした。
つまり
hoge <= 8'b00000001 ;;
となり、';'が2つ入っていたのが原因です。
初歩的なミスすぎて、ちょっと恥ずかしいです。
最後に、協力していただいた@marsee101さんと@unimaru_さんに感謝したいです。