Forum Discussion
Hi Alex,
Just a quick follow up since there is no reply.
Did you try out the provided E-tile example ?
Regards,
Wincent_Intel
So I did some digging around, and the problem seems to be with how i_ptp_fp was being driven. Apparently something about the soft logic wrapper around the E-Tile ends up requiring that all of the PTP-related input signals are driven by a "hyperflex-friendly register".
For reference, the error is associated with the wdata_reg input of
alt_ehipc3_mlab #( .WIDTH (TX_PTP_WIDTH), .ADDR_WIDTH (4), .SIM_EMULATE(0) ) ptp_tx_ff ( .wclk (int_tx_clk), .wdata_reg (usr_tx_ptp_ff_in), .wena (tx_ts_ff_write), .waddr_reg (ptp_tx_ff_waddr), .raddr (ptp_tx_ff_raddr), .rdata (usr_tx_ptp_ff_out_wire) );
This is driven by
assign usr_tx_ptp_ff_in = {i_ptp_ins_ets, // 1-bit i_ptp_ins_cf, // 1-bit i_ptp_zero_csum, // 1-bit i_ptp_update_eb, // 1-bit i_ptp_ts_format, // 1-bit i_ptp_ts_offset, // 16-bit i_ptp_cf_offset, // 16-bit i_ptp_csum_offset, // 16-bit i_ptp_eb_offset, // 16-bit i_ptp_tx_its, // 96-bit i_ptp_ts_req, // 1-bit i_ptp_fp // 8-bit };
Apparently whatever directly drives these signals must be a simple flip flop with no reset input. Not an MLAB, not an M20K, not even a flip flop with a reset, preset, etc. input.
Personally, I consider this to be a bug in the soft logic wrapper. If this MLAB instance needs to be driven by "hyperflex-friendly registers", then such registers should exist in the soft logic wrapper to isolate the upstream logic from the MLAB instances to avoid this kind of difficult-to-debug DRC error. It's unclear why this only seems to be a problem on Stratix 10 devices, but not on Agilex.
Anyway, what I ended up doing was adding a register slice across all of the input signals on the transmit side, both the AVST interface and i_ptp_fp. Presumably this will end up being a permanent workaround for this issue.