이 X 전파 문제의 근본 원인은 읽기 데이터 이동기(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)
시놉시스 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_표현 = "UNSIGNED",
LPM_DEST_ADD_SUB_component.lpm_type = "LPM_ADD_SUB",
LPM_DEST_ADD_SUB_component.lpm_너비 = RDDMA_AVL_ADDR_WIDTH;
*********************************************************************************************************************************
해결 방법은 아래와 같이 .datab 포트의 입력 신호 벡터를 제대로 0으로 확장하는 것입니다.
.datab({{(RDDMA_AVL_ADDR_WIDTH-12){1'b0}}, rd_dw_size, 2'b00}),
이 문제는 인텔® Quartus® Prime 소프트웨어의 향후 버전에서 해결될 예정입니다.