[DRC REQP-1884] ODDR_has_invalid_load: ODDR cell ODDR_p0_0 loads should only be an output buffer or a port, but it is driving an invalid load (one or more of): rgmii_p0_txd_OBUF[0]_inst, ila_wr_inst/inst/ila_core_inst/shifted_data_in_reg[7][132]_srl8, and ila_wr_inst/inst/ila_core_inst/u_trig/U_TM/N_DDR_MODE.G_NMU[13].U_M/allx_typeA_match_detection.ltlib_v1_0_0_allx_typeA_inst/probeDelay1_reg[0]

上述报错是因为将经过ODDR原语输出的信号进行ILA采样,经过ODDR/IDDR输出后的信号不能用于ILA采样。

XILINX给出的ODDR硬件原语实例化模板(Verilog):

// ODDR: Output Double Data Rate Output Register with Set, Reset
// and Clock Enable.
// 7 Series
// Xilinx HDL Language Template, version 2018.3
ODDR #(
.DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE"
.INIT(1'b0),                                                 // Initial value of Q: 1'b0 or 1'b1
.SRTYPE("SYNC")                                    // Set/Reset type: "SYNC" or "ASYNC"
) ODDR_inst (
.Q(Q),                                                        // 1-bit DDR output
.C(C),                                                        // 1-bit clock input
.CE(CE),                                                   // 1-bit clock enable input
.D1(D1),                                                    // 1-bit data input (positive edge)
.D2(D2),                                                    // 1-bit data input (negative edge)
.R(R),                                                        // 1-bit reset
.S(S)                                                         // 1-bit set
);
// End of ODDR_inst instantiation
XILINX给出的IDDR硬件原语实例化模板(Verilog):
// IDDR: Input Double Data Rate Input Register with Set, Reset
// and Clock Enable.
// 7 Series
// Xilinx HDL Language Template, version 2018.3
IDDR #(
.DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE", "SAME_EDGE"
                                                                   // or "SAME_EDGE_PIPELINED"
.INIT_Q1(1'b0),                                          // Initial value of Q1: 1'b0 or 1'b1
.INIT_Q2(1'b0),                                          // Initial value of Q2: 1'b0 or 1'b1
.SRTYPE("SYNC")                                    // Set/Reset type: "SYNC" or "ASYNC"
) IDDR_inst (
.Q1(Q1),                                                     // 1-bit output for positive edge of clock
.Q2(Q2),                                                     // 1-bit output for negative edge of clock
.C(C),                                                         // 1-bit clock input
.CE(CE),                                                    // 1-bit clock enable input
.D(D),                                                         // 1-bit DDR data input
.R(R),                                                         // 1-bit reset
.S(S)                                                          // 1-bit set
);
// End of IDDR_inst instantiation
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐