attribute my_att : string;
attribute my_att of beh : architecture is "my_value"
attribute DONT_TOUCH : string;
attribute DONT_TOUCH of beh : architecture is "yes";
カスタム属性を信号に設定する場合も注意が必要です。信号にカスタム属性が設定されていると、合成ツールはアイテムにその属性を配置しようとしますが、RTL コードがツールによりどのように評価されるかによって、そのアイテムがレジスタまたはネットに変換されることがあります。また、階層に設定される場合と同様、信号にカスタム属性が設定されていても、その信号が最適化により削除され、属性が失われる可能性があります。信号に設定したカスタム属性を保持するには、それらの信号に DONT_TOUCH
または KEEP
属性を設定する必要があります。
最後に、RTL の信号はレジスタおよびレジスタから出力されるネットを記述するので、合成ツールはカスタム属性と DONT_TOUCH
属性が設定されたアイテムをチェックします。そのネットがレジスタで駆動される場合、合成でそのカスタム属性がレジスタとネットにコピーされます。これは、カスタム属性の使用方法が複数あるためです。属性は、レジスタに必要なこともあれば、ネットに必要なこともあります。