完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
从ML605参考设计下载rdf0011.zip后,我试图在预建的设计文件夹下打开.xise文件。
大多数文件都放错了位置,有些文件名称不好,但是一旦我找到它们,我就试图综合设计。 由于关于过多粘合IOB的错误,放置失败 - 我通过关闭IOB的自动推断来修复此问题。 但是,现在我遇到了几个错误如下: 错误:MapLib:978 - LUT3符号“u_infrastructure / rst_tmp1”(outputsignal = u_infrastructure / rst_tmp)有一个使用输入引脚I1的公式,它不再具有连接信号。 请确保此LUT的公式中使用的所有引脚都有未被修整的信号(有关修剪哪些信号的详细信息,请参见地图报告文件的第5节).ERROR:MapLib:978 - LUT5符号“u_memc_ui_top / u_mem_intfc / mc0 / bank_mach0 / bank_common0 / was_wr_rstpot“(outputsignal = u_memc_ui_top / u_mem_intfc / mc0 / bank_mach0 / bank_common0 / was_wr_rstpot)具有使用输入引脚I4的等式,其不再具有连接信号。 请确保此LUT的等式中使用的所有引脚都没有被修整(请参见地图报告文件的第5节,了解修剪信号的详细信息).ERROR:MapLib:978 - LUT5符号“u_memc_ui_top / u_mem_intfc / mc0 / bank_mach0 / bank_common0 / was_wr_rstpot“(outputsignal = u_memc_ui_top / u_mem_intfc / mc0 / bank_mach0 / bank_common0 / was_wr_rstpot)具有使用输入引脚I4的等式,其不再具有连接信号。 请确保此LUT的等式中使用的所有引脚都没有被修整(请参见地图报告文件的第5节,了解修剪信号的详细信息)。 我不知道造成这些错误的原因。 坦率地说,我只想要一个有效的参考设计......有人有吗? 我尝试使用coregen在一个项目中生成我自己的DDR3内核,并使用预构建设计中的UCF。 我有一个错误,因为它试图通过DIFF_SSTL15_T_DCI标准引脚发送由OBUFDS生成的差分对 - 我将其更改为DIFF_SSTL15,现在我只是得到以下错误: 错误:地点:864 - 不兼容的IOB被锁定到同一银行35 冲突的IO标准是: IO标准1:名称= SSTL15_T_DCI,VREF = 0.75,VCCO = 1.50,TERM = SPLIT, DIR = BIDIR,DRIVE_STR = NR 锁定的IOB列表: ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq 错误:地点:864 - 不兼容的IOB被锁定到同一银行35 冲突的IO标准是: IO标准1:名称= DIFF_SSTL15_T_DCI,VREF = NR,VCCO = 1.50,TERM = SPLIT,DIR = BIDIR,DRIVE_STR = NR 锁定的IOB列表: ddr3_dqs_n ddr3_dqs_n ddr3_dqs_n ddr3_dqs_p ddr3_dqs_p ddr3_dqs_p 错误:地点:864 - 不兼容的IOB被锁定到同一银行35 冲突的IO标准是: IO标准1:名称= SSTL15,VREF = NR,VCCO = 1.50,TERM = NONE,DIR = OUTPUT,DRIVE_STR = NR 锁定的IOB列表: ddr3_dm ddr3_dm ddr3_dm 错误:位置:864 - 不兼容的IOB被锁定到同一个库35冲突的IO标准是:IO标准1:名称= SSTL15_T_DCI,VREF = 0.75,VCCO = 1.50,TERM = SPLIT,DIR = BIDIR,DRIVE_STR = NR锁定列表 IOB的: ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq ddr3_dq 错误:位置:864 - 不兼容的IOB被锁定到同一个库35冲突的IO标准是:IO标准1:名称= DIFF_SSTL15_T_DCI,VREF = NR,VCCO = 1.50,TERM = SPLIT,DIR = BIDIR,DRIVE_STR = NR锁定列表 IOB的: ddr3_dqs_n ddr3_dqs_n ddr3_dqs_n ddr3_dqs_p ddr3_dqs_p ddr3_dqs_p 错误:地点:864 - 不兼容的IOB被锁定到同一个银行35冲突的IO标准是: IO标准1:名称= SSTL15,VREF = NR,VCCO = 1.50,TERM = NONE,DIR = OUTPUT,DRIVE_STR = NR锁定的IOB列表: ddr3_dm ddr3_dm ddr3_dm 除非有人正在使用rdf0011,否则任何人都知道如何修复我发布的错误? 谢谢。 |
|
相关推荐
9个回答
|
|
|
|
|
|
None
|
|
|
|
None
|
|
|
|
我似乎已经走了这条完全相同的路径而且我遇到了完全相同的错误。
我也在为ML605板使用带有MIG 3.4生成的DDR3控制器的12.1。 任何见解将不胜感激! 我也声明,我不得不注释掉,由MIG产生的,因为它不能找到这些情况下,例如UCF文件两行......我已经包含注释掉这两行我UCF文件的底部。 ################################################## ########################################################################################################################## “SPARE”OLOGIC)####网站:J16 - 银行:36 ################################# ################################################## ######### INST “* / gen_enable_ocb_mon.u_phy_ocb_mon_top / u_oserdes_ocb_mon” LOC = “OLOGIC_X2Y130”; ######################### ################################################## ############# MMCM_ADV CONSTRAINTS ################################### ################################################## ### INST “* / u_infrastructure / u_mmcm_adv” LOC = “MMCM_ADV_X0Y9”; #Banks 16,26,36#INST “* / u_memc_ui_top / u_mem_intfc / phy_top0 / u_phy_read / u_phy_rdclk_gen / u_mmcm_clk_base” LOC = “MMCM_ADV_X0Y8”; #Banks 16,26,36 |
|
|
|
所以,我得到了它的工作。
也就是说,我让phy_init_done变高,这意味着它在校准期间读取并写入内存,我仍然在测试是否可以寻址所有内存。 我的步骤如下,它以我的不同设计开始: 我用coregen添加了一个名为DDR3的新组件。 它将.xco添加到我的项目和ipcor_dir / DDR3 /目录下的目录user_design。 与其他coregen项目不同,它不会为您创建包含在项目中的网表,但实际上会为您提供源代码。 这就是说您不需要包含源代码,.vho中的instantion模板就是您需要包含在项目中的所有内容,但您可能需要对user_design / rtl中的代码进行更改。 2.在生成项目时,有一点我被问到这是一个新的设计还是我有一个预先存在的设计。 选择预先存在的一个。 然后,您必须在第一个屏幕中为ML605的主UCF输入大量值。 在第二个屏幕中,您选择的是实际上不会出板的引脚(我认为),因此请使用它建议的那些引脚,确保不要使用可能在主ucf中的任何其他位置使用的引脚。 3.将user_design / par / DDR3.ucf中的所有内容复制到项目的UCF中。 我为时钟选择了单个而不是差分,因为我已经有一个带有时钟管理器的现有设计。 赔率大多数人都是一样的。 不幸的是,这导致了一个需要修复的问题...... 5.需要解决的问题。 在尝试合成时,您会得到两个错误,即两个BUFG串行排列。 你必须进入ipcore_dir / DDR3 / user_design / rtl / ip_top并修改两个文件clk_ibuf.vhd和iodelay_ctrl.vhd。 它们都有一个单时钟选项的生成部分,你需要从两者中删除IBUFG,只需将两个信号直接连接在一起而不用它。 6.传入时钟时,请确保将200MHZ时钟传递给sys_clk。 在MIG生成的代码中某处有一条注释,参考时钟应该得到200MHZ时钟,但可能是由于可怕的命名,参考时钟似乎是sys_clk,而clk_ref似乎是其他东西 - 也许是用户时钟? 我传入一个125MHZ时钟,我得到phy_init_done,但我仍然不确定clk_ref是做什么的。 我正在希望它允许我设置我与MIG交互时使用的时钟频率... 我认为这就是我所做的一切。 如果这不适合你,让我知道你得到了什么错误,如果这也是我得到的东西我会告诉你我做了什么绕过它。 这有点模糊。 现在一些针对Xilinx的错误和问题: 1.如果您尝试重新生成MIG,它不会覆盖它第一次生成的文件。 你必须从你的项目中删除MIG .vho,你必须进入ipcore_dir并删除DDR3目录和任何DDR3文件,并从头开始生成它们。 2.在其中一篇文章中,我认为UG086,但我不确定,它说MIG让你可以选择使用你自己的时钟发生器产生200MHZ,用户时钟和用户时钟90度,也许 其他一些时钟传入。我没有在任何地方找到这个选项。 如果存在这个选项,我认为我可以避免在user_design / rtl / ip_top目录中的两个文件中删除整个BUFG。 3.在向导屏幕中输入现有的引脚排列,它会为您可能不想传入的信号请求几个引脚位置。例如,scl和sda。 这些引脚上应该有一个选项,也许是在phy_init_done上(我不是将它从FPGA中发送出来),而是错误引脚将它们留空。 4.选择内存模块时,有512MB,1GB,2GB和4Gb [sic。]选项。 也许4Gb应该是4GB? 否则这很奇怪,考虑到它的双重排名...... 5. tb_clk ...我想控制该时钟与以太网时钟的关系。 在我发现的任何MIG文档中都没有解释如何做到这一点。 这个时钟与clk_ref有关吗? 是1-1吗? 有乘法吗? 6. MIG有什么东西阻止我以超过303MHZ的速度运行双级SODIMM吗? 所有其他芯片都可以在400MHZ运行...... 谢谢。 |
|
|
|
我可以尝试回答或评论您的一些问题:
2)UG086不适用于V6。 这适用于V4,V5和S3系列。 我相信你应该看看UG406。 4)是的,可能是一个bug,应该是4 GB。 您使用的是哪个版本的MIG? 6)设计仅在一个等级上校准。 由于无法保证第二级具有相同的时序,因此MIG有意将双级的限制设置为尽可能低。 如果您可以确定DIMM上的等级匹配良好和/或您对系统进行特征化和分析并确定可能的频率更高,那么您可以更改代码以提高速度。 |
|
|
|
Re 4)我在ISE 12.1中使用MIG 3.4 for Linux-64。
Re 6)非常有帮助,谢谢。 我们将使用它 - 我假设校准是静态的,因为它是在初始化时完成的,所以它永远不会在模块的整个生命周期内改变? 因此,如果我们对它进行一次令我们满意的测试,从那时起它应该同样好......? 新7)我想我发现了另一个错误。 由coregen为单列和双列生成的.vho和示例设计在VHDL中具有以下通用(我不使用verilog设计,因此我不知道它是否相同): ADDR_WIDTH:integer:= 29; - #= RANK_WIDTH + BANK_WIDTH - + ROW_WIDTH + COL_WIDTH; RANK_WIDTH:整数:= 1; - #= ceil(log2(RANKS)) 最后我检查了,log2(1)= 0,ceil(0)= 0,log2(2)= 1,ceil(1)= 1,所以有些错误 - 注释或数字。 有趣的是,对于MIG中列出的512MB SODIMM模块,ADDR_WIDTH泛型为27,这是正确的,因为它为RANK_WIDTH + BANK_WIDTH + ROW_WIDTH + COL_WIDTH = 27.此外,对于1GB模块,ADDR_WIDTH为28,对于2GB模块,它为29 ,奇怪的是,对于4GB模块,它也是29。 现在,如果我是正确的(我没有在UG406的任何地方找到答案,但基于测试我的同事之一我们认为是这种情况)每个地址值对应32位数据(这是一个 由于数据路径是64位宽,因此您认为最小可寻址大小为64位...)如果是这种情况,那么为了解决4GB问题,我们需要30个地址位。 因此看起来双列模块的地址宽度是错误的,但这很奇怪,因为从技术上讲,似乎导致2GB模块和4GB模块的相同地址宽度的不正确的值是单个等级的等级宽度不正确 模块...在内存术语中解决我的困惑 - 我有一个2位错误,但我正在运行SECDED算法...我不知道要解决什么。 |
|
|
|
MIG中的Virtex-6 DDR3设计最初进行校准,然后逐步进行校准。
它在初始化时不会仅进行一次纯校准。 不要忘记CS将用于区分双列情况下的秩而不是另一个地址位。 最小可寻址大小是突发长度乘以宽度。 对于DDR3,BL8是最常用的。 到目前为止,64位宽度(8字节),每个BL8读取将获得64个字节。 |
|
|
|
也许ug406(v1.3)存在问题,但根据该文档,app_addr(定义为ADDR_WIDTH-1 DOWNTO 0)是包含排名的扁平地址。
如图1-56,第69页所示。 此外,该文件似乎存在很多差异。 例如,有许多对app_rdy信号的引用表明MIG已准备好接收新命令,但似乎已被app_full取代,这似乎是app_rdy的否定(似乎信号是 重命名,文字被更改但不是数字。) 另外,我使用BC4和BL8生成了一个项目(我选择了BC4,因为MIG生成器向导中没有BL4选项...)并且在这两种情况下地址宽度都是29.你是说在OFT模式中,如果 我使用突发长度8,我的地址空间看起来不同于我使用突发长度4? 或者甚至当我生成固定的8或固定的4个突发长度时(同样,BC4是一个选项,但不是BL4。)这似乎没有在UG406中涵盖。 我的意思是,如果我们对DDR3模块中的所有字节进行编号,那么从地址0读取时读取的最低字节是什么,以及在寻址地址1时读取的最低字节是什么? 我的同事认为它是一个4字节的粒度......所以地址0从字节0开始,地址1从字节4开始。 |
|
|
|
只有小组成员才能发言,加入小组>>
2378 浏览 7 评论
2793 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2260 浏览 9 评论
3334 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2426 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
750浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
537浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
360浏览 1评论
753浏览 0评论
1955浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 01:22 , Processed in 1.349048 second(s), Total 92, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号