補足 - directiveattribute

[] [] []


合成制約をdirectiveattributeと呼んでいるが、Synplifyではこの2つを区別している。

(1) directive コンパイラ指示子

 RTL記述を解析して中間形式(論理式のようなもの?)に変換する段階にかかる合成制約

 RTL記述中に書かなければならない

(2) attribute 属性

 中間形式から各種FPGAのセル(FF,LUT,RAM,DSP,IO)にマッピングする段階にかかる合成制約

 RTL記述中に書く他に、制約ファイル(.sdc)に書いてもよい

ここでとりあげた合成制約について区別を示すと大体感じがわかる。

合成制約

意味

Directive/Attribute

syn_noprune

出力が未使用のFFを削除しない

D

syn_preserve

冗長なFFを削除しない

D

syn_keep

信号を保持する

D

syn_replicate

FFの複製をしない

A

syn_useioff

IOセルのレジスタにパッキングする

A

syn_encoding

FSMのエンコーディングを指定する

A

syn_ramstyle

RAMをマッピングするセルを指定する

A

syn_multstyle

乗算器をマッピングするセルを指定する

A

制約は論理合成後の配置配線する段階でもかかる。特に論理合成をサードパーティのツールで実行する場合、RTL記述中に合成制約を書いてあっても、配置配線するFPGAツールへ制約が受け渡されないと、配置配線で信号やFFが削除されてしまうので注意しなければならない。

なお、合成制約(*  *)は論理合成ツールから見ればコンパイラ指示子だが、シミュレータから見れば

`define等がコンパイラ指示子

(*  *)は属性

なので、何と呼ぶかは主語によって変わるものである。


[] [] []