Altera DSP Builder Advanced Internal Restriction: d:/SJ/nightly/12.0/178/w32/p4/ip/aion/src/mip_common/hw_model_dup_remover.cpp:191 の「blockMap.find(fu->GetName()== blockMap.end()」。
例として、スケジュールされたサブシステム内にデザインに 2 つのブロックがある場合: -
psc_ctrl_fixed/FIX_MCTRL/Fix_Mtr_Ctrl1_DSPBA/Current_DSPBA/T/KU1/Mult
psc_ctrl_fixed/FIX_MCTRL/Fix_Mtr_Ctrl1_DSPBA/Current_DSPBA/T/KU1/Mult
これらは、スケジュールされたサブシステムのレベルで内部でフラット名に変換されます。-
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_KU1_Mult
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_-KU1_Mult
アルファベット以外の文字のほとんどは VHDL シンボルでは使用できません。そのため、下線に変換されます:-
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_KU1_Mult
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T__KU1_Mult
また、VHDL シンボルではダブルアンダースコアは合法ではありません。そのため、単一のアンダースコアに分割されています:-
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_KU1_Mult
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_KU1_Mult
この 2 つのシンボルは同一になり、DSPBA パイプライン内で内部エラーが発生します。
回避策は、英数字以外の文字を使用してサブシステムを同じレベルで区別しないようにすることです。