สาเหตุหลักของปัญหาการแพร่กระจาย X นี้คือ การสร้างอินสแตนซ์LPM_DEST_ADD_SUB_componentในโมดูล Read Data Mover (altpcieav_dma_rd.sv) ไม่มีพอร์ต .datab ที่ขยายเป็นศูนย์ไปยังความกว้างของเวกเตอร์สัญญาณทั้งหมดอย่างถูกต้อง ดังนั้นโปรแกรมจําลองจะกําหนด X ให้กับบิตชั้นนําที่ไม่ได้กําหนดในที่อยู่ปลายทาง
ดูการสร้างอินสแตนซ์LPM_DEST_ADD_SUB_componentด้านล่าง
*********************************************************************************************************************************
lpm_add_sub LPM_DEST_ADD_SUB_component (
.clken (1'b1),
.clock (Clk_i),
.dataa (cur_dest_addr_reg),
.datab ({rd_dw_size, 2'b00})
.result (cur_dest_addr_adder_out)
translate_offการรบกวน
,
.aclr (),
.add_sub (),
.cin (),
.cout (),
.overflow ()
translate_onการรบกวน
);
defparam
LPM_DEST_ADD_SUB_component.lpm_direction = "ADD"
LPM_DEST_ADD_SUB_component.lpm_hint = "ONE_INPUT_IS_CONSTANT=NO, CIN_USED=NO"
LPM_DEST_ADD_SUB_component.lpm_pipeline = 1
LPM_DEST_ADD_SUB_component.lpm_representation = "UNSIGNED"
LPM_DEST_ADD_SUB_component.lpm_type = "LPM_ADD_SUB"
LPM_DEST_ADD_SUB_component.lpm_width = RDDMA_AVL_ADDR_WIDTH;
*********************************************************************************************************************************
การแก้ไขปัญหาคือการขยายเวกเตอร์สัญญาณอินพุตของ พอร์ต .datab อย่างเหมาะสมตามที่แสดงด้านล่าง
.datab ({(RDDMA_AVL_ADDR_WIDTH-12){1'b0}, rd_dw_size, 2'b00}),
ปัญหานี้ได้รับการกําหนดเวลาให้แก้ไขในเวอร์ชันในอนาคตของซอฟต์แวร์ Intel® Quartus® Prime