zoukankan      html  css  js  c++  java
  • FPGA 移交代码学习——Map错误 ODDR2 使用问题

    这段时间一直忙贴片生产相关事情,又是搬家,都没有什么时间好好整整。

    前人移交过来的记录仪代码,发现一个BUG ,

    1 wire [8:0] fchk_shift_r1 = fenergy_chk<<1;
    2 wire [9:0] fchk_shift_r2 = fenergy_chk<<2;
    3 wire [10:0]fchk_shift_r3 = fenergy_chk<<3;
    4 wire [11:0]fchk_shift_r4 = fenergy_chk<<4;
    5 
    6 wire [8:0] fchk_shift_l1 = fenergy_chk>>1;
    7 wire [9:0] fchk_shift_l2 = fenergy_chk>>2;
    8 wire [10:0]fchk_shift_l3 = fenergy_chk>>3;
    9 wire [11:0]fchk_shift_l4 = fenergy_chk>>4;

    上面的命名和操作反了,正是如此导致我们该模块一直工作不正常

    然而仅仅将>>改成了<< ,综合能过,MAP出现如下错误:

    ERROR:Place:1205 - This design contains a global buffer instance,
    <UUT_DCM/clkout1_buf>, driving the net, <clk12M_OBUF>, that is driving the
    following (first 30) non-clock load pins off chip.
    < PIN: clk12M.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_Editor.
    < PIN "UUT_DCM/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >

    参考:

    Xilinx spartan6 ODDR2的用法! - chen.terry - 中国电子顶级开发网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 - Powered by X-Space
    http://www.eetop.cn/blog/html/04/869304-26543.html

    FPGA产生时钟后输出时钟是出现的went_D大调的感觉_百度空间
    http://hi.baidu.com/lu_shan_2012/item/13f3b21749fb97422a3e2200

    应用ISE自带的原语,添加ODDR2:

     1     // ODDR2: Output Double Data Rate Output Register with Set, Reset
     2     // and Clock Enable.
     3     // Spartan-6
     4     // Xilinx HDL Libraries Guide, version 12.3
     5     ODDR2  #(
     6     .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
     7     .INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1
     8     .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
     9     ) 
    10     U_ODDR2_clk12m (
    11     .Q(clk12m), // 1-bit DDR output data
    12     .C0(oddr2_12m), // 1-bit clock input
    13     .C1(~oddr2_12m), // 1-bit clock input
    14     .CE(1'b1), // 1-bit clock enable input
    15     .D0(1'b1), // 1-bit data input (associated with C0)
    16     .D1(1'b0), // 1-bit data input (associated with C1)
    17     .R(1'b0), // 1-bit reset input
    18     .S(1'b0) // 1-bit set input
    19     );
    20     // End of ODDR2_inst instantiation
    ODDR2

    再编译,又出现如下错误:

    ERROR:Pack:2531 - The dual data rate register "U_ODDR2_clk12m" failed to join
    the "OLOGIC2" component as required. The output signal for register symbol
    U_ODDR2_clk12m requires general routing to fabric, but the register can only
    be routed to ILOGIC, IODELAY, and IOB.

    参考:

    Pack:2531 - The dual data rate register "clock_clk... - Xilinx User Community Forums
    http://forums.xilinx.com/t5/Spartan-Family-FPGAs/Pack-2531-The-dual-data-rate-register-quot-clock-clk-5p3M-quot/td-p/344879

    出现此问题是由于 又将ODDR2的输出结果用在了内部逻辑上

    经过查实,其实该输出管脚已经不需要用了,将其注释掉之后再编译:

    又出现如下错误:

    ERROR:ChipScope: One or more invalid signal connections detected.
    ERROR:ChipScope: Double-click the AGC_test.cdc icon in the sources window to edit and fix the CDC project.

    打开AGC_test.cdc文件

    原本可用的文件,在经过更改>><<之后确不行了,

    虽然移除该cdc文件,编译通过~ 但是 所有需要的IO口都没啦!!!

    真的是乱啊! 纠结!待继续!

    另外求教大神,为什么程序这么不稳定的原因,完全是牵一发而动全身~

    有什么好的方法对该代码进行改造入手不~

    万分感谢~

  • 相关阅读:
    Python Tkinter canvas oval原理
    ButterKnife你需要知道的点
    RecyclerView不同类型Item的展示
    PNG图片小结
    安装应用
    java.io.IOException: open failed: ENOENT (No such file or directory)open failed: EISDIR (Is a directory)
    YouTube视频插入Markdown
    Android icons集合
    vue动态绑定类样式ClassName知多少
    js正则表达式中的正向肯定预查和正向否定预查
  • 原文地址:https://www.cnblogs.com/nety0403/p/3426717.html
Copyright © 2011-2022 走看看