合成制約の書き方
Verilog-HDLは歴史的にシミュレーション用言語として生まれたため、論理合成に必要な合成制約はHDLの言語仕様に含まれていない。それでもFPGAが小規模だった時代はツールのオプション設定をする程度でよかったが、FPGAが大規模になるにつれて細かい合成制約が必要になってきたので、RTL記述のコメント文の中に合成制約(directive,attribute,pragmaなどと呼ばれる)を書くようになった。(→補足 - directiveとattribute)
通常のコメント文として書く方法 <文> /* synthesis <directive>=<value> */; (注) QuartusやSynplifyで使えるがVivadoでは使えない。 |
さらに、Verilog-2001で通常のコメント文と区別できるように合成制約用のコメント文が定義され、どのツールでも使えるようになった。
Verilog-2001の書き方 (* <directive>=<value> *) <文>; |
このように書き方は言語仕様で定義されたが、directive自体は依然として論理合成ツールによって異なるので、移植する際に修正する必要がある。
この章では合成制約を使う具体例を説明する。(ただしツールのバージョンに依存するかもしれないので参考レベルにして下さい)