一、 問題描述:
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系統時鐘
在ip配置過程中,如果配置成差分形式,必須從板級差分輸入時鐘提供,
如果配置成單端的形式,可以從板級輸入或者從內部鎖相環輸出來提供。