只用OBUFDS是不行的,编译报错,错误内容如下
/////////////////////////////////////////////////////////////////////////////////////////
ERROR:Place:1205 - This design contains a global buffer instance,
<OUT20_40M/clkout2_buf>, driving the net, <CLK_OUT40M>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: MyPrimitive/ADCLK400M_P.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue. Although the net
may still not route, you will be able to analyze the failure in FPGA_EditERROR
/////////////////////////////////////////////////////////////////////////////////////////
上面大致内容是:时钟驱动片外非时钟端口,在Spartan-6中会导致全局网络布线受限,即使布线
后,会导致过大的延迟和抖动,两种改进方法:1.在OBUFDS前使用ODDR2。 2.在UCF中使用专
用约束语句, < PIN "OUT20_40M/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
忽略错误,但会给出警告。
本次采用方法一,编译通过,结果还待测试。