vivado报错及解决【十一】

发布时间:2026/7/18 5:34:06
vivado报错及解决【十一】 问题[Place 30-174] Unroutable Placement!The following clock source components are placed too far from each other. These clocks drive common load instances. This requires them to be placed in a relative way such that both clocks can drive the common load instances. Please refer to the clocking user guide for more details on which clock regions these clock sources can drive.dvi_clk_bufg_dvi0 (BUFR.O) is provisionally placed by clockplacer on BUFR_X0Y16dvi_clk_bufg_dvi1 (BUFR.O) is provisionally placed by clockplacer on BUFR_X0Y22dvi_inst/dvi_clk_INST_0_i_3 (LUT6.I3) cannot be placeddvi_inst/dvi_clk_INST_0_i_3 (LUT6.I2) cannot be placed分析BUFR 是区域时钟缓冲器只能驱动它所在同一个时钟区域内的逻辑。X0Y16 和 X0Y22 分属不同时钟区域它们的驱动范围不重叠没有一个物理位置能同时被这两个 BUFR 覆盖。代码中为什么会出现这种情况呢是因为代码中有一段时钟选择逻辑用组合逻辑/LUT 将多个 BUFR 输出做 MUX// 类似这样的写法导致了问题assign clk_594m sel ? bufr_clk0 : bufr_clk1; // LUT实现 → 多BUFR驱动同一LUT综合工具把这个 MUX 映射到了一个 LUT6导致该 LUT 的两个输入分别来自不同区域的 BUFR核心问题是 BUFR 区域限制 LUT 多时钟驱动导致不可布线。解决方法可以尝试以下三种解决方法解决1将BUFR改为BUFGBUFG资源少的不建议1.BUFR可将时钟信号驱动至时钟区域内的专用时钟网络独立于全局时钟树。与BUFIO组件不同BUFR组件可驱动时钟区域内I/O逻辑和逻辑资源如CLB、块RAM等。它们可通过IBUF、BUFMRCE、MMCM或本地互连的输出驱动并能根据时钟输入产生分频时钟输出。分频值为1到8之间的整数。BUFR组件非常适合需要时钟域交叉或串并转换的源同步时钟应用。若在多个时钟区域内需要本地时钟BUFMRCE可驱动相邻时钟区域的m个BUFR组件从而进一步扩展时钟覆盖能力。portdirectionwidthfunctionCEINPUT1时钟使能端口。该引脚不能在“BYPASS”模式下使用。当BUFR_DIVIDE设置为“BYPASS”或未使用时将其连接到vcc。CLRINPUT1分频时钟输出的异步清零功能。当该引脚处于高电平有效状态时将复位用于生成分频时钟输出的计数器并使输出信号处于低电平有效状态。该引脚不可用于“BYPASS”模式。若BUFR_DIVIDE设置为“BYPASS”或未使用时应将其连接至接地端。IINPUT1时钟输入端口。该端口是 BUFR 的时钟源端口可由 IBUF 、BUFMRCE、 MMCM 或本地互连驱动。OOUTPUT1时钟输出端口。atttributetypeAllowed_valuesdefaultdescriptionBUFR_DIVIDESTRINGBYPASS, 1, 2, 3,4, 5, 6, 7, 8BYPASS指定输出时钟是否为输入时钟的分频版本SIM_DEVICESTRING7SERIES7SERIES若要实现正确的仿真行为当目标为7系列设备时必须将此属性设置为“7SERIES”。verilog例化// BUFR: Regional Clock Buffer for I/O and Logic Resources within a Clock Region// 7 Series// Xilinx HDL Language Template, version 2018.3BUFR #(.BUFR_DIVIDE(BYPASS), // Values: BYPASS, 1, 2, 3, 4, 5, 6, 7, 8.SIM_DEVICE(7SERIES) // Must be set to 7SERIES)BUFR_inst (.O(O), // 1-bit output: Clock output port.CE(CE), // 1-bit input: Active high, clock enable (Divided modes only).CLR(CLR), // 1-bit input: Active high, asynchronous clear (Divided modes only).I(I) // 1-bit input: Clock buffer input driven by an IBUF, MMCM or local interconnect);2.BUFG该设计元件是一个高扇出缓冲器用于将信号连接到全局布线资源以实现信号的低偏斜 。BUFG通常用于时钟网以及其他高扇出网如设置/复位和时钟使能。verilog例化// BUFG: Global Clock Simple Buffer// 7 Series// Xilinx HDL Language Template, version 2018.3BUFG BUFG_inst (.O(O), // 1-bit output: Clock output.I(I) // 1-bit input: Clock input);解决2用BUFGMUX 做时钟选择不用 LUT解决3在BUFR之前做好选择在这里博主是先将多个时钟进行BUFR处理后再进行多选一处理出现的问题那么可以先做多选一处理然后再BUFR就可以解决上面出现的问题。