Altera restriction interne avancée du constructeur DSP : « blockMap.find (fu->GetName()) = blockMap.end () » en d:/SJ/nightly/12.0/178/w32/p4/ip/aion/src/mip_common/hw_model_dup_remover.cpp:191.
Par exemple, si vous avez deux blocs dans votre conception dans un sous-système planifié : -
psc_ctrl_fixed/FIX_MCTRL/Fix_Mtr_Ctrl1_DSPBA/Current_DSPBA/T/KU1/M Fix_Mtr_Ctrl1_DSPBA
psc_ctrl_fixed/FIX_MCTRL/Fix_Mtr_Ctrl1_DSPBA/Current_DSPBA/T/KU1/Mcul
Ces noms sont convertis en interne en noms plats au niveau du sous-système prévu : -
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_KU1_Mult
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_-KU1_Mult
La plupart des caractères non alphanumériques ne sont pas légaux dans les symboles VHDL et sont ainsi convertis en traits de soulignement : -
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_KU1_Mult
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T__KU1_Mult
Les doubles traits de soulignement ne sont pas non plus légaux dans les symboles VHDL et sont ainsi transformés en traits de soulignement uniques : -
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_KU1_Mult
Fix_Mtr_Ctrl1_DSPBA_Current_DSPBA_T_KU1_Mult
Les deux symboles sont maintenant identiques, ce qui entraîne une erreur interne à l’intérieur du pipeline DSPBA.
La solution consiste à éviter d’utiliser des caractères non alphanumériques pour distinguer les sous-systèmes au même niveau les uns des autres.