ファンアウトが大きい時
対策としてはレジスタを複製してレジスタあたりの受信側回路を減らしてやる。
ツールで勝手にやってくれる場合もあるらしいがよくわからんのでコードで明確に複製する。
手動でレジスタをコピー
process(clk) begin if(clk'event and clk='1') then copy_reg1 <= src_reg; copy_reg2 <= src_reg; copy_reg3 <= src_reg; end if; end process;
適時ファンアウトを減らすようにcopy_reg1,copy_reg2,copy_reg3を散りばめる。
signal copy_reg1 : std_logic; signal copy_reg2 : std_logic; signal copy_reg3 : std_logic; attribute EQUIVALENT_REGISTER_REMOVAL : string; attribute EQUIVALENT_REGISTER_REMOVAL of copy_reg1: signal is "NO"; attribute EQUIVALENT_REGISTER_REMOVAL of copy_reg2: signal is "NO"; attribute EQUIVALENT_REGISTER_REMOVAL of copy_reg3: signal is "NO";