usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

The design did not satisfy timing constraints.

AT
AERMAN TUERXUN.
Fri, Dec 23, 2022 1:11 AM

Hi,

I am building a custom RFNoC block on USRP X310.
When I was trying to build bitstream, after almost two hours processing, it
gave me the error as below.

Do you have any idea what timing constraints are?
Is that because the custom IP is too large for FPGA?
Thank you!

It started after
[01:58:36] Executing Tcl: write_bitstream -force
/home/xxxxx/uhd/fpga/usrp3/top/x300/build-X310_HG/x300.bit
[01:58:36] Starting Write Bitstream Command
... (omit same CRITICAL WARNING)
CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL
u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a clock
period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2
u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[7].iserdes_dq_.idelay_dq.idelaye2
has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL
REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property.
CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL
u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a clock
period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2
u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[8].iserdes_dq_.idelay_dq.idelaye2
has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL
REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property.
ERROR: [Builder 0-0] The design did not satisfy timing constraints.
(Implementation outputs were still generated)
ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors.
[02:00:08] Current task: Write Bitstream +++ Current Phase: Starting
[02:00:08] Current task: Write Bitstream +++ Current Phase: Finished
[02:00:08] Process terminated. Status: Failure

---=======================
Warnings:          1121
Critical Warnings:  113
Errors:            2

make[5]: *** [Makefile.x300.inc:127: bin] Error 1
make[4]: *** [Makefile:85: X310_HG] Error 2

Hi, I am building a custom RFNoC block on USRP X310. When I was trying to build bitstream, after almost two hours processing, it gave me the error as below. Do you have any idea what timing constraints are? Is that because the custom IP is too large for FPGA? Thank you! It started after [01:58:36] Executing Tcl: write_bitstream -force /home/xxxxx/uhd/fpga/usrp3/top/x300/build-X310_HG/x300.bit [01:58:36] Starting Write Bitstream Command ... (omit same CRITICAL WARNING) CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2 u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[7].iserdes_dq_.idelay_dq.idelaye2 has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property. CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2 u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[8].iserdes_dq_.idelay_dq.idelaye2 has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property. ERROR: [Builder 0-0] The design did not satisfy timing constraints. (Implementation outputs were still generated) ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors. [02:00:08] Current task: Write Bitstream +++ Current Phase: Starting [02:00:08] Current task: Write Bitstream +++ Current Phase: Finished [02:00:08] Process terminated. Status: Failure ======================================================== Warnings: 1121 Critical Warnings: 113 Errors: 2 make[5]: *** [Makefile.x300.inc:127: bin] Error 1 make[4]: *** [Makefile:85: X310_HG] Error 2
MD
Marcus D. Leech
Fri, Dec 23, 2022 1:17 AM

On 22/12/2022 20:11, AERMAN TUERXUN. wrote:

Hi,

I am building a custom RFNoC block on USRP X310.
When I was trying to build bitstream, after almost two hours
processing, it gave me the error as below.

Do you have any idea what timing constraints are?
Is that because the custom IP is too large for FPGA?
Thank you!

I'm not an FPGA person, per se, but in general failure to meet timing
means that the layout engine cannot
  find a layout in which all the signals that are supposed to arrived
"together" do so within the appropriate
  timing windows.  It is the case, in my previous experience with FPGA
designs, that the larger the design,
  the harder it is for the layout engine to find a layout that
satisfies timing for all the timing-critical pieces
  of the design.

Others on this list have vastly more experience than me and can amplify
on this.  The general question of
  "what are timing constraints" is MUCH more of a general "designing
with FPGAs" question than a UHD
  question or even an RFNoC question, per se.  But there may be aspects
of the RFNoC universe that make
  this a more frequent problem in adding custom bits and pieces to the
standard design.

It started after
[01:58:36] Executing Tcl: write_bitstream -force
/home/xxxxx/uhd/fpga/usrp3/top/x300/build-X310_HG/x300.bit
[01:58:36] Starting Write Bitstream Command
... (omit same CRITICAL WARNING)
CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL
u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a
clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2
u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[7].iserdes_dq_.idelay_dq.idelaye2
has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL
REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property.
CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL
u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a
clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2
u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[8].iserdes_dq_.idelay_dq.idelaye2
has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL
REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property.
ERROR: [Builder 0-0] The design did not satisfy timing constraints.
(Implementation outputs were still generated)
ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors.
[02:00:08] Current task: Write Bitstream +++ Current Phase: Starting
[02:00:08] Current task: Write Bitstream +++ Current Phase: Finished
[02:00:08] Process terminated. Status: Failure

---=======================
Warnings:           1121
Critical Warnings:  113
Errors:             2

make[5]: *** [Makefile.x300.inc:127: bin] Error 1
make[4]: *** [Makefile:85: X310_HG] Error 2


USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-leave@lists.ettus.com

On 22/12/2022 20:11, AERMAN TUERXUN. wrote: > Hi, > > I am building a custom RFNoC block on USRP X310. > When I was trying to build bitstream, after almost two hours > processing, it gave me the error as below. > > Do you have any idea what timing constraints are? > Is that because the custom IP is too large for FPGA? > Thank you! I'm not an FPGA person, per se, but in general failure to meet timing means that the layout engine cannot   find a layout in which all the signals that are supposed to arrived "together" do so within the appropriate   timing windows.  It is the case, in my previous experience with FPGA designs, that the larger the design,   the harder it is for the layout engine to find a layout that satisfies timing for all the timing-critical pieces   of the design. Others on this list have vastly more experience than me and can amplify on this.  The general question of   "what are timing constraints" is MUCH more of a general "designing with FPGAs" question than a UHD   question or even an RFNoC question, per se.  But there may be aspects of the RFNoC universe that make   this a more frequent problem in adding custom bits and pieces to the standard design. > > It started after > [01:58:36] Executing Tcl: write_bitstream -force > /home/xxxxx/uhd/fpga/usrp3/top/x300/build-X310_HG/x300.bit > [01:58:36] Starting Write Bitstream Command > ... (omit same CRITICAL WARNING) > CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL > u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a > clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2 > u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[7].iserdes_dq_.idelay_dq.idelaye2 > has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL > REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property. > CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL > u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a > clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2 > u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[8].iserdes_dq_.idelay_dq.idelaye2 > has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL > REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property. > ERROR: [Builder 0-0] The design did not satisfy timing constraints. > (Implementation outputs were still generated) > ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors. > [02:00:08] Current task: Write Bitstream +++ Current Phase: Starting > [02:00:08] Current task: Write Bitstream +++ Current Phase: Finished > [02:00:08] Process terminated. Status: Failure > > ======================================================== > Warnings:           1121 > Critical Warnings:  113 > Errors:             2 > > make[5]: *** [Makefile.x300.inc:127: bin] Error 1 > make[4]: *** [Makefile:85: X310_HG] Error 2 > > > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com
WF
Wade Fife
Fri, Dec 23, 2022 8:39 PM

Here's a quick explanation. FPGAs have clocks that control the transfer of
data between its internal registers. The Xilinx Vivado tool does a timing
check during build to make sure that the paths from each driving register
to each receiving register is not too long for the specified clock period.
When it says "The design did not satisfy timing constraints" it means it
couldn't arrange the logic on the chip to meet one or more of the clock
requirements. There are several reasons this might happen:

  • You added new logic to the design with too much logic between registers.
    In this case, you should modify your code to make meeting timing easier.
  • You added new logic, but made a mistake where it's trying to use the
    wrong clock or reset for something, which makes it impossible to meet
    timing. In this case you would need to correct your logic design.
  • The design has become too crowded, making it difficult for the tools to
    meet the timing requirements. In this case you might need to remove
    something to make more room.
  • Bad luck. The tools use some randomness to find solutions to really hard
    problems, and sometimes it just doesn't find a good solution even when one
    is possible. In this case you can just make a minor change to the design
    and build again to see if it does better the second time. If you don't
    change anything, it will typically give you identical results each time.

The FPGA tools produce a timing report that says exactly which path failed
to meet timing. Sometimes that can point you in the right direction. But
sometimes the path that failed only failed because of another path that's
even more difficult. Take a look at
build-X310_HG/post_route_timing_summary.rpt and search for "(VIOLATED)" to
find the path(s) that failed.

Wade

On Thu, Dec 22, 2022 at 7:18 PM Marcus D. Leech patchvonbraun@gmail.com
wrote:

On 22/12/2022 20:11, AERMAN TUERXUN. wrote:

Hi,

I am building a custom RFNoC block on USRP X310.
When I was trying to build bitstream, after almost two hours
processing, it gave me the error as below.

Do you have any idea what timing constraints are?
Is that because the custom IP is too large for FPGA?
Thank you!

I'm not an FPGA person, per se, but in general failure to meet timing
means that the layout engine cannot
find a layout in which all the signals that are supposed to arrived
"together" do so within the appropriate
timing windows.  It is the case, in my previous experience with FPGA
designs, that the larger the design,
the harder it is for the layout engine to find a layout that
satisfies timing for all the timing-critical pieces
of the design.

Others on this list have vastly more experience than me and can amplify
on this.  The general question of
"what are timing constraints" is MUCH more of a general "designing
with FPGAs" question than a UHD
question or even an RFNoC question, per se.  But there may be aspects
of the RFNoC universe that make
this a more frequent problem in adding custom bits and pieces to the
standard design.

It started after
[01:58:36] Executing Tcl: write_bitstream -force
/home/xxxxx/uhd/fpga/usrp3/top/x300/build-X310_HG/x300.bit
[01:58:36] Starting Write Bitstream Command
... (omit same CRITICAL WARNING)
CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL
u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a
clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2

u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[7].iserdes_dq_.idelay_dq.idelaye2

has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL
REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property.
CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL
u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a
clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2

u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[8].iserdes_dq_.idelay_dq.idelaye2

has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL
REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property.
ERROR: [Builder 0-0] The design did not satisfy timing constraints.
(Implementation outputs were still generated)
ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors.
[02:00:08] Current task: Write Bitstream +++ Current Phase: Starting
[02:00:08] Current task: Write Bitstream +++ Current Phase: Finished
[02:00:08] Process terminated. Status: Failure

---=======================
Warnings:          1121
Critical Warnings:  113
Errors:            2

make[5]: *** [Makefile.x300.inc:127: bin] Error 1
make[4]: *** [Makefile:85: X310_HG] Error 2


USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-leave@lists.ettus.com


USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-leave@lists.ettus.com

Here's a quick explanation. FPGAs have clocks that control the transfer of data between its internal registers. The Xilinx Vivado tool does a timing check during build to make sure that the paths from each driving register to each receiving register is not too long for the specified clock period. When it says "The design did not satisfy timing constraints" it means it couldn't arrange the logic on the chip to meet one or more of the clock requirements. There are several reasons this might happen: - You added new logic to the design with too much logic between registers. In this case, you should modify your code to make meeting timing easier. - You added new logic, but made a mistake where it's trying to use the wrong clock or reset for something, which makes it impossible to meet timing. In this case you would need to correct your logic design. - The design has become too crowded, making it difficult for the tools to meet the timing requirements. In this case you might need to remove something to make more room. - Bad luck. The tools use some randomness to find solutions to really hard problems, and sometimes it just doesn't find a good solution even when one is possible. In this case you can just make a minor change to the design and build again to see if it does better the second time. If you don't change anything, it will typically give you identical results each time. The FPGA tools produce a timing report that says exactly which path failed to meet timing. Sometimes that can point you in the right direction. But sometimes the path that failed only failed because of another path that's even more difficult. Take a look at build-X310_HG/post_route_timing_summary.rpt and search for "(VIOLATED)" to find the path(s) that failed. Wade On Thu, Dec 22, 2022 at 7:18 PM Marcus D. Leech <patchvonbraun@gmail.com> wrote: > On 22/12/2022 20:11, AERMAN TUERXUN. wrote: > > Hi, > > > > I am building a custom RFNoC block on USRP X310. > > When I was trying to build bitstream, after almost two hours > > processing, it gave me the error as below. > > > > Do you have any idea what timing constraints are? > > Is that because the custom IP is too large for FPGA? > > Thank you! > I'm not an FPGA person, per se, but in general failure to meet timing > means that the layout engine cannot > find a layout in which all the signals that are supposed to arrived > "together" do so within the appropriate > timing windows. It is the case, in my previous experience with FPGA > designs, that the larger the design, > the harder it is for the layout engine to find a layout that > satisfies timing for all the timing-critical pieces > of the design. > > Others on this list have vastly more experience than me and can amplify > on this. The general question of > "what are timing constraints" is MUCH more of a general "designing > with FPGAs" question than a UHD > question or even an RFNoC question, per se. But there may be aspects > of the RFNoC universe that make > this a more frequent problem in adding custom bits and pieces to the > standard design. > > > > > > It started after > > [01:58:36] Executing Tcl: write_bitstream -force > > /home/xxxxx/uhd/fpga/usrp3/top/x300/build-X310_HG/x300.bit > > [01:58:36] Starting Write Bitstream Command > > ... (omit same CRITICAL WARNING) > > CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL > > u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a > > clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2 > > > u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[7].iserdes_dq_.idelay_dq.idelaye2 > > > has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL > > REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property. > > CRITICAL WARNING: [Timing 38-469] The REFCLK pin of IDELAYCTRL > > u_ddr3_32bit/u_ddr3_32bit_mig/u_iodelay_ctrl/u_idelayctrl_200 has a > > clock period of 4.998 ns (frequency 200.080 Mhz) but IDELAYE2 > > > u_ddr3_32bit/u_ddr3_32bit_mig/u_memc_ui_top_axi/mem_intfc0/ddr_phy_top0/u_ddr_mc_phy_wrapper/u_ddr_mc_phy/ddr_phy_4lanes_0.u_ddr_phy_4lanes/ddr_byte_lane_C.ddr_byte_lane_C/ddr_byte_group_io/input_[8].iserdes_dq_.idelay_dq.idelaye2 > > > has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL > > REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property. > > ERROR: [Builder 0-0] The design did not satisfy timing constraints. > > (Implementation outputs were still generated) > > ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors. > > [02:00:08] Current task: Write Bitstream +++ Current Phase: Starting > > [02:00:08] Current task: Write Bitstream +++ Current Phase: Finished > > [02:00:08] Process terminated. Status: Failure > > > > ======================================================== > > Warnings: 1121 > > Critical Warnings: 113 > > Errors: 2 > > > > make[5]: *** [Makefile.x300.inc:127: bin] Error 1 > > make[4]: *** [Makefile:85: X310_HG] Error 2 > > > > > > _______________________________________________ > > USRP-users mailing list -- usrp-users@lists.ettus.com > > To unsubscribe send an email to usrp-users-leave@lists.ettus.com > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com >