SSブログ

HDLソースに制約を埋め込む [IPコア]

QuartusPrimeではソースファイル側にハードウェアやタイミングの制約を埋め込むオプションがある。
一番よく使うのは、クロックドメインをまたぐレジスタのタイミングパスを切る指示。
これは一般的なフローではSDCファイルに記述するが、どのレジスタがタイミングを無視していいかなんてのはソースに一緒に書いた方がわかりやすい。

記述はHDLの中にaltera_attribute属性の文字列を埋め込むことで行う。これはQuartusへ合成指示を渡すオプションで、qsfファイルに記述するテキストと基本的には同一。
‥‥が、Verilogではアトリビュート記述は一行に納めないといけないので、複数行に分割しないとSDCに書き出すよりも遙かに見難いソースが出来上がるので注意が必要。

・Verilog-2001
(* altera_attribute = {"-name SDC_STATEMENT \"set_false_path -from [get_registers *sv_xcvr_pipe_native*] -to [get_registers *altpcie_rs_serdes|*]\"; -name SDC_STATEMENT \"set_false_path -to [get_registers *altpcie_rs_serdes|fifo_err_sync_r\[0\]]\"; -name SDC_STATEMENT \"set_false_path -to [get_registers *altpcie_rs_serdes|busy_altgxb_reconfig*]\""} *)


・VHDL
attribute altera_attribute : string;
attribute altera_attribute of rtl : architecture is (
"-name SDC_STATEMENT ""set_false_path -from [get_registers *sv_xcvr_pipe_native*] -to [get_registers *altpcie_rs_serdes|*]"";" &
"-name SDC_STATEMENT ""set_false_path -to [get_registers *altpcie_rs_serdes|fifo_err_sync_r\[0\]]"";" &
"-name SDC_STATEMENT ""set_false_path -to [get_registers *altpcie_rs_serdes|busy_altgxb_reconfig*]""
);


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。