完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用时钟发生器ip来生成几个时钟。但是当我生成比特流时,XPS会产生错误:
错误:未满足3个约束。 通过读取timing约束,可以自动添加一些constainsts 有没有人告诉我如何解决这个问题? 谢谢。 |
|
相关推荐
6个回答
|
|
也许你可以研究你的设计,看看它的失败时机在哪里?
如果自动添加约束,那么它们可能是一个很好的理由,简单地“删除”它们可能意味着您的设计“满足”时序(因为它实际上是不受约束的)但在硬件中无法正常运行。 问候, 霍华德 ----------“我们必须学会做的事情,我们从实践中学习。” - 亚里士多德 |
|
|
|
|
|
|
|
首先,您的设备输入时钟是否有PERIOD约束?
如果没有,所有投注均已关闭,您必须在继续之前纠正此错误。 如果您已为输入时钟正确设置了相关的PERIOD约束,那么这些工具足够智能,可以为时钟管理(例如PLL,DCM,MMCM等)生成的所有时钟导出适当的约束,而不管频率或相位关系如何。 如果由于以这种方式导出的约束而导致计时失败,则必须检查故障路径以及设计,并了解如何纠正计时故障。 一个例子可能是您需要管道设计或以其他方式限制寄存器之间的组合逻辑量。 如果您的数据路径在一个频域中启动并移动到另一个频域,则可能需要使用交叉时钟域技术。 您对设计进行的基于时序的修改量将取决于您在一定程度上生成的时钟频率(即频率越高,您可能需要的流水线越多)但您应遵循同步的最佳实践 无论如何设计。 如果您不确定,发布您的确切失败并突出显示相关代码可能有助于我们更好地帮助您。 ----------“我们必须学会做的事情,我们从实践中学习。” - 亚里士多德 |
|
|
|
您遇到的问题实际上是“相关时钟”的概念 - 它与时钟核心的生成方式无关(手动或通过COREgen)。
在ISE中,任何来自相同时钟源的时钟都是相关的。 因此,如果输入时钟进入DCM / MMCM / PLL,则输入时钟和所有输出时钟都相互关联。 ISE(顺便说一下,我假设您使用的是ISE,而不是Vivado,这是不同的)假设您将在所有相关的时钟之间同步交叉 - ngdbuild在频率和相位关系方面添加描述这些新时钟的约束条件 输入时钟。 如果DCM / MMCM / PLL的输出具有奇数乘法和除法速率,则这些相关时钟之间的关系可能变得不可能满足。 如果您需要在它们之间移动数据,那么您需要找到一种可靠的方法。 这将需要一个时钟交叉电路。 如果在时钟域之间的路径上放置时钟交叉电路(也称为同步电路),则由时序引擎确定的默认约束不再正确。 您不会删除它(因为它确定关系的时钟的PERIOD约束),但是您使用新约束覆盖它 - 带有TIG或DATAPATH_ONLY的FROM / TO。 让我们说clka和clkb是具有奇数比率的DCM / MMCM / PLL的两个输出网络 - 首先需要为输出定义组: NET clka TNM = tnm_clka; NET clkb TNM = tnm_clkb; 然后你需要覆盖约束。 很多人使用TIG TIMESPEC TS_clka2clkb = FROM tnm_clka TO tnm_clkb TIG; 然而,大多数时钟交叉电路确实需要约束以便通过时钟交叉电路来约束偏斜。 TIMESPEC TS_clka2clkb = FROM tnm_clka TO tnm_clkb 3 DATAPATH_ONLY; 但是 - 正如其他人所指出的那样 - 不仅仅是因为失败而超越约束 - 它是正确的; 这两个时钟之间有一条路径,因此约束失败。 如果这样做是正确的,那么覆盖约束是唯一可行的 - 即你已经“处理”了这条路径,使得正常的同步默认值不正确(就像你在它上面放一个时钟交叉电路一样) 。 Avrum |
|
|
|
包括时钟发生器的mhs如下所示:
BEGIN clock_generator PARAMETER INSTANCE = clock_generator_0 PARAMETER HW_VER = 4.03.a PARAMETER C_EXT_RESET_HIGH = 0 PARAMETER C_CLKIN_FREQ = 2亿PARAMETER C_CLKOUT0_FREQ = 83333333 PARAMETER C_CLKOUT0_GROUP = NONE PARAMETER C_CLKOUT1_FREQ = 2亿PARAMETER C_CLKOUT2_FREQ =千万PARAMETER C_CLKOUT3_FREQ = 5000000 PARAMETER C_CLKOUT2_GROUP = PLL0 PARAMETER C_CLKOUT2_BUF = FALSE PARAMETER C_CLKOUT3_GROUP = PLL0参数C_CLKOUT3_BUF = FALSE PORT LOCKED = proc_sys_reset_0_Dcm_locked PORT CLKOUT0 = clk_83_3333MHz PORT CLKOUT1 = clk_200_MHz PORT CLKOUT2 = clk_10_MHz PORT CLKOUT3 = clk_5_MHz PORT RST = RESET PORT CLKIN = CLKEND BEGIN check_module PARAMETER INSTANCE = check_module_0 PARAMETER HW_VER = 1.00.a PARAMETER C_S_AXI_BASEADDR = 0x7ee00000 PARAMETER C_S_AXI_HIGHADDR = 0x7ee0ffff BUS_INTERFACE S_AXI = axi4lite_0 PORT S_AXI_ACLK = clk_83_3333MHz PORT CLK = clk_200_MHz PORT sig_clk = clk_10_MHz PORT sig_sync = clk_5_MHz PORT s_user_rvalid = check_module_0_s_user_rvalid PORT s_user_rready = check_module_0_s_user_rready PORT s_user_raddr = check_module_0_s_user_raddr PORT s_user_rdata_ready = check_module_0_s_user_rdata_ready PORT s_user_rdata_valid = check_module_0_s_user_rdata_valid PORT s_user_rdata = check_module_0_s_user_rdata PORT judge_data = check_module_0_judge_data PORT counter_data = check_module_0_counter_dataEND check modue的源代码如下。 check_sync_clk.v 3 KB check_sig_clk.v 2 KB |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2384 浏览 7 评论
2800 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2264 浏览 9 评论
3336 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2431 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
759浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
548浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
371浏览 1评论
1966浏览 0评论
685浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 20:57 , Processed in 1.520381 second(s), Total 88, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号