La cause initiale de ce problème x est que le LPM_DEST_ADD_SUB_component l’instanciation dans le module Read Data Mover(altpcieav_dma_rd.sv)n’a pas son port .datab correctement étendu à zéro à la largeur vectorielle complète du signal. Par conséquent, le simulateur attribue les X aux principaux bits non affectés à l’adresse de destination.
Reportez-vous à l’instantiation LPM_DEST_ADD_SUB_component ci-dessous.
*********************************************************************************************************************************
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)
synopsys translate_off
,
.aclr (),
.add_sub (),
.cin (),
.cout (),
.overflow ()
synopsys 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 = « NON SIGNÉE »,
LPM_DEST_ADD_SUB_component.lpm_type = « LPM_ADD_SUB »,
LPM_DEST_ADD_SUB_component.lpm_width = RDDMA_AVL_ADDR_WIDTH ;
*********************************************************************************************************************************
La solution de contournement consiste à ne pas étendre correctement le vectoriel de signal d’entrée du port .datab, comme indiqué ci-dessous.
.datab({(RDDMA_AVL_ADDR_WIDTH-12){1'b0}}, rd_dw_size, 2'b00}),
Ce problème devrait être résolu dans une version ultérieure du logiciel Intel® Quartus® Prime.