ファンアウトが大きい時

対策としてはレジスタを複製してレジスタあたりの受信側回路を減らしてやる。
ツールで勝手にやってくれる場合もあるらしいがよくわからんのでコードで明確に複製する。

手動でレジスタをコピー

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";