ddr2 ip调试问题集合

一、 问题描述

ERROR:NgdBuild:455 - logical net 'clk400m_p' has multiple driver(s)

ERROR:NgdBuild:455 - logical net 'clk400m_n' has multiple driver(s)

解决办法

DDR生成后有一个顶层的源文件,在那里面找到一个关于原语写的BUFG也不知是IBUFG,将这个原语跳过就可以,保存然  后在编译就不报错了。

   原因分析

DCM出来的时钟经进了BUFG,而DDR的输入时钟是从IBUFG进入的,在底层结构上BUFG不能联到IBUFG。

 

二、问题描述:

在Translate过程中出现如下错误:

"ERROR:ConstraintSystem:59 - Constraint< xxx >: NET/INST "xxx" 未找到。Please verify that:

1. The specified design element actually exists in the design.

2. The specified object is spelled correctly in the constraint source file.

   解决办法

为了防止综合工具删除 net,应为 net 应用 "KEEP"

      另外注意检查管脚约束UCF文件中,是否有对多余的IO信号分配了同一个管脚。

 

三、 问题描述

在implement时点击translate后,出现如下错误:

ERROR:NgdBuild:924- input pad net 'clk' is driving non-buffer primitive

意为输入信号clk未经buffer就用来驱动其他primitives了    

   原因分析

输入时钟clk_in在作为DCM输入引脚的时候又为其他module的输入,也就是说clk有两个load,连接PLL时,输入信号先要连接到内部buffer以产生较强的驱动能力,从而保证时钟的时序质量。但是由于输入信号的另一分支不经过任何电路就直接连接到了输出Pad ,所以存在一种可能,即连接buffer的分支会被短路,从而失去预期的效果。即输入clk两个分支,一个直接连到模块fsm;一个连在了DCM的输入时钟源。由于经过DCM时会自动加一个buffer缓冲器,而到fsm会直接连在一起,这样会造成DCM这一路短路出现错误。正因为如此,ISE给出了错误警告。

   解决办法

clk只是连接一个load,就是DCM。DCM两个输出一个CLKFX_OUT_1,另外一个用CLK0_OUT此信号和clk无论相位还是频率是一样的

 另外: chipscope 不能用晶振输入时钟来作为采样时钟

 

四、 问题描述

PLL或者DLL产生的时钟直接接到核上,出现如下错误

ERROR:NgdBuild:770 - BUFG 'test_ddr2_inst/memc3_infrastructure_inst/se_input_clk.u_ibufg_sys_clk'

And BUFG 'pll_200m_inst/clkout1_buf' on net 'clk_200m' are lined up in series.  Buffers of the same direction cannot be placed in series. 

原因分析

IBUFG和BUFG串一块儿了。

解决办法

进到PLL或者DDR2模块里,把相应的BUFG(IBUFG)屏蔽掉。

 


你可能感兴趣的:(ddr2 ip调试问题集合)