การจํากัดภายในของ Altera DSP Builder Advanced Internal: 'blockMap.find(fu->GetName()) == blockMap.end()' ใน d:/SJ/nightly/12.0/178/w32/p4/ip/aion/src/mip_common/hw_model_dup_remover.cpp:191
ตัวอย่างเช่น หากคุณมีสองบล็อกในการออกแบบของคุณภายในระบบย่อยที่กําหนดไว้: -
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
ในตอนนี้ สัญลักษณ์ทั้งสองจะเหมือนกัน ซึ่งทําให้เกิดข้อผิดพลาดภายในภายในไปป์ไลน์ DSPBA
วิธีแก้ไขปัญหาชั่วคราวคือการหลีกเลี่ยงการใช้อักขระที่ไม่ใช่ตัวอักษร/ตัวเลขเพื่อปรับใช้ระบบย่อยในระดับเดียวกันจากกัน