I'm trying to bring up a Zmod ADC 1410-40 on an Opal Kelly Brain-1 carrier. When Vivado tries to Run Implementation, it gives the following errors.
[Place 30-126] Unroutable Placement! A BUFIO can only drive loads in the same IO bank. The following BUFIO clock loads are placed too far from the BUFIO to be routable.
design_1_i/ZmodScopeController_0/U0/InstDataPath/InstDcoBufio (BUFIO.O) is provisionally placed by clockplacer on BUFIO_X1Y8
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[0].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y95
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[10].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y98
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[11].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y97
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[12].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y94
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[13].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y91
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[1].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y149
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[2].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y111
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[3].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y80
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[4].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y79
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[5].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y138
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[6].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y100
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[7].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y137
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[8].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y96
design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[9].InstIDDR (IDDR.C) is locked to ILOGIC_X1Y112
The above error could possibly be related to other connected instances. Following is a list of
all the related clock rules and their respective instances.
Clock Rule: rule_gclkio_mmcm_1load
Status: PASS
Rule Description: An IOB driving a single MMCM must both be in the same clock region if CLOCK_DEDICATED_ROUTE=BACKBONE
is NOT set
ZmodDcoClk_0_IBUF_inst (IBUF.O) is locked to IOB_X1Y74
design_1_i/ZmodScopeController_0/U0/InstDataPath/MMCME2_ADV_inst (MMCME2_ADV.CLKIN1) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
Clock Rule: rule_mmcm_bufg
Status: PASS
Rule Description: An MMCM driving a BUFG must be placed on the same half side (top/bottom) of the device
design_1_i/ZmodScopeController_0/U0/InstDataPath/MMCME2_ADV_inst (MMCME2_ADV.CLKOUT1) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
design_1_i/ZmodScopeController_0/U0/InstDataPath/InstDcoBufg (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y31
Clock Rule: rule_mmcm_bufr_bufio
Status: PASS
Rule Description: An MMCM driving a BUFR/BUFIO must both be in the same clock region
design_1_i/ZmodScopeController_0/U0/InstDataPath/MMCME2_ADV_inst (MMCME2_ADV.CLKFBOUT) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
design_1_i/ZmodScopeController_0/U0/InstDataPath/InstBufrFeedbackPLL (BUFR.I) is provisionally placed by clockplacer on BUFR_X1Y4
Clock Rule: rule_mmcm_bufr_bufio
Status: FAIL
Rule Description: An MMCM driving a BUFR/BUFIO must both be in the same clock region
design_1_i/ZmodScopeController_0/U0/InstDataPath/MMCME2_ADV_inst (MMCME2_ADV.CLKOUT2) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
design_1_i/ZmodScopeController_0/U0/InstDataPath/InstDcoBufio (BUFIO.I) is provisionally placed by clockplacer on BUFIO_X1Y8
ERROR: The above is also an illegal clock rule
Workaround: < set_property CLOCK_DEDICATED_ROUTE ANY_CMT_COLUMN [get_nets design_1_i/ZmodScopeController_0/U0/InstDataPath/DcoPLL_Clk2] >
Clock Rule: rule_bufh_bufr_ramb
Status: PASS
Rule Description: Reginal buffers in the same clock region must drive a total number of brams less
than the capacity of the region
design_1_i/ZmodScopeController_0/U0/InstDataPath/InstBufrFeedbackPLL (BUFR.O) is provisionally placed by clockplacer on BUFR_X1Y4
Clock Rule: rule_bufr_mmcm
Status: PASS
Rule Description: A BUFR driving an MMCM must be placed within the same clock region
design_1_i/ZmodScopeController_0/U0/InstDataPath/InstBufrFeedbackPLL (BUFR.O) is provisionally placed by clockplacer on BUFR_X1Y4
and design_1_i/ZmodScopeController_0/U0/InstDataPath/MMCME2_ADV_inst (MMCME2_ADV.CLKFBIN) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
I tried adding the suggested workaround to my constraint file, and then got this error (and 7 more like it):
[Place 30-512] Clock region assignment has failed. Clock buffer 'design_1_i/ZmodScopeController_0/U0/InstDataPath/InstDcoBufio' (BUFIO) is placed at site BUFIO_X1Y8 in CLOCKREGION_X1Y2. Its loads need to be placed in the area enclosed by clock regions CLOCKREGION_X1Y2 and CLOCKREGION_X1Y2. One of its loads 'design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[13].InstIDDR' (IDDR) is placed in site ILOGIC_X1Y91 in CLOCKREGION_X1Y1 which is outside the permissible area.
The Zmod Scope Controller user guide says the following, but does not provide enough details for me to know what constraints to add.
Quote
The IP does not constrain the clocks it requires as inputs, except for the DCO clock, therefore clocks need to be constrained in the top-level design either manually or by relying on the auto-derived constraints, if using clock modifying blocks. It is the user’s responsibility to correctly configure the input clocks of this IP.
I'm generating all the clocks in the design from a single clock wizard, driven by FCLK_CLK3 at 200 MHz, configured with source=global buffer.
I'm obviously not very knowledgable about clock routing issues yet, and would really appreciate some help with this.
Question
Todd-Kairos
I'm trying to bring up a Zmod ADC 1410-40 on an Opal Kelly Brain-1 carrier. When Vivado tries to Run Implementation, it gives the following errors.
I tried adding the suggested workaround to my constraint file, and then got this error (and 7 more like it):
[Place 30-512] Clock region assignment has failed. Clock buffer 'design_1_i/ZmodScopeController_0/U0/InstDataPath/InstDcoBufio' (BUFIO) is placed at site BUFIO_X1Y8 in CLOCKREGION_X1Y2. Its loads need to be placed in the area enclosed by clock regions CLOCKREGION_X1Y2 and CLOCKREGION_X1Y2. One of its loads 'design_1_i/ZmodScopeController_0/U0/InstDataPath/GenerateIDDR[13].InstIDDR' (IDDR) is placed in site ILOGIC_X1Y91 in CLOCKREGION_X1Y1 which is outside the permissible area.
The Zmod Scope Controller user guide says the following, but does not provide enough details for me to know what constraints to add.
I'm generating all the clocks in the design from a single clock wizard, driven by FCLK_CLK3 at 200 MHz, configured with source=global buffer.
I'm obviously not very knowledgable about clock routing issues yet, and would really appreciate some help with this.
Thanks!
Edited by Todd-KairosCorrected typo
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now