造成 X 传播问题的根源在于,Read Data Mover(altpcieav_dma_rd.sv)模块中的LPM_DEST_ADD_SUB_component实例化没有其.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)
synopsys translate_off
,
.aclr (),
.add_sub ()
.cin (),
.cout (),
.溢出 ()
synopsys translate_on
);
defparam
LPM_DEST_ADD_SUB_component.lpm_direction = "ADD",
LPM_DEST_ADD_SUB_component.lpm_hint = "ONE_INPUT_IS_CONSTANT=否,CIN_USED=否",
LPM_DEST_ADD_SUB_component.lpm_pipeline = 1、
LPM_DEST_ADD_SUB_component.lpm_代表 = "UNSIGNED",
LPM_DEST_ADD_SUB_component.lpm_type = "LPM_ADD_SUB",
LPM_DEST_ADD_SUB_component.lpm_宽度 = RDDMA_AVL_ADDR_WIDTH;
*********************************************************************************************************************************
变通方法是正确零扩展 .datab 端口的输入信号向量,如下所示。
.datab ({(RDDMA_AVL_ADDR_WIDTH-12){1'b0}},rd_dw_size,2'b00}),
此问题计划在 英特尔® Quartus® Prime 软件的未来版本中修复。