zoukankan      html  css  js  c++  java
  • “揭秘” Xilinx FPGA 的 ECO 功能

    欲观原文,请君移步

    ECO 指的是 Engineering Change Order ,即工程变更指令。目的是为了在设计的后期,快速灵活地做小范围修改,从而尽可能的保持已经验证的功能和时序。ECO 是从 IC 设计领域继承而来,ECO 便相当于 ISE 上的 FPGA Editor。本文可以对于一些FPGA疑难杂症文件排查,或者对于一些加密 IP 进行破解,请读者自行琢磨,不予公开。【如有兴趣,请联系作者】

    1.ECO的用途

    • 修改 ILA 或者 VIO 的调试探针

    • 将一个内部网络路由到外部探针

    • 修复逻辑错误等

    2.ECO 流程

    打开已经实现的设计,修改网表后,如果设计未完全布局,请运行“增量布局”。否则,可以直接跳至增量布线。然后可以保存更改到新的检查点并编写新的编程和调试探针文件,打开
    硬件管理器对设备进行编程。

    3.ECO 工程实例

    打开 dcp ,在 vivado 中一个工程在生成bit流过程中会产生 implementation 阶段产生三个 dcp 文件,分别是 *_opt.dcp, *_place.dcp, *_route.dcp中添加,如果需要固定布线,只是微调一下某些net,则使用, *_route.dcp, 对应不同的阶段,如果工程需要添加一些 cell ,可以在*_place.dcp中添加,如果需要固定布线,只是微调某些net,则使用*_route.dcp

    3.1 修改 ila 信号

    本次实例采用*_route.dcp

    3.1.1 断开 net

    disconnect_net -net u_ila_0_axis_rx_tlast -objects [list {u_ila_0/probe8}]
    
    • u_ila_0_axis_rx_tlast 的 net 名

    • Objects 后面的 pin 脚

    该命令是为了将某一 net 断开

    3.1.2 连接新的net

    connect_net -hierarchical -net {u_ila_0_axis_rx_tdata[47]} -objects [list {u_ila_0/probe8}]
    

    该命令是为了将某一 net 连接到某一 object

    3.1.3 将原来的 net 布线 unroute

    route_design -unroute -net [get_nets u_ila_0_axis_rx_tlast]
    

    3.1.4 重新 route 新的 net

    route_design -net [get_nets {u_ila_0_axis_rx_tdata[47]}]
    

    3.1.5 重新 route 新的 net

    route_design -net [get_nets {u_ila_0_axis_rx_tdata[47]}]
    

    查看布线状态

    report_route_status
    

    3.1.5 生成 bit 流

    write_bitstream aurora_test_route.bit -force
    

    3.2 将内部网络布线到另一个cell

    本次实例采用*_place.dcp

    3.2.1 断开 net

    disconnect_net -net u_ila_0_axis_rx_tlast -objects [list {u_ila_0/probe8}]
    

    3.2.2 创建 cell

    startgroup
    create_cell -reference LUT1 {LUT1}
    set_property init 2'h3 [get_cells { {LUT1}}]
    endgroup
    create_cell -reference VCC {VCC}
    

    3.2.3 创建 net

    startgroup
    create_net {LUT1_IO}
    LUT1_IO
    connect_net -hierarchical -net {LUT1_IO} -objects [list {LUT1/I0}]
    endgroup
    
    startgroup
    create_net {LUT1_O}
    LUT1_O
    connect_net -hierarchical -net {LUT1_O} -objects [list {LUT1/O}]
    endgroup
    

    3.2.4 连接 net

    将LUT1的输入连接到 VCC ,输出连接到 ila 的 probe8。

    connect_net -hierarchical -net {LUT1_IO} -objects [list {VCC/P}]
    connect_net -hierarchical -net {LUT1_O} -objects [list {u_ila_0/probe8}]
    

    3.2.5 implementation & bitstream

    place_design
    route_design 
    write_bitstream aurora_test_place.bit -force
    

    4.参考文献

    1.《ug904-Vivado Design Suite User Guide P-143:Vivado ECO Flow》

    chrome-extension://ibllepbpahcoppkjjllbabhnigcbffpi/https://www.xilinx.com/support/documentation/sw_manuals/xilinx2016_1/ug904-vivado-implementation.pdf
    

    2.《ug835- Vivado Design Suite Tcl Command Reference Guide》

    chrome-extension://ibllepbpahcoppkjjllbabhnigcbffpi/https://www.xilinx.com/support/documentation/sw_manuals/xilinx2012_2/ug835-vivado-tcl-commands.pdf
    
  • 相关阅读:
    jQuery:提交表单前判断表单是否被修改过
    jQuery multiselect的使用
    input[file]标签的accept=”image/*”属性响应很慢的解决办法
    Linux-read命令
    shell编程学习
    优化网站加载速度
    select下拉框选中问题
    QTableWidget class
    QLabel class
    QMainWindow class
  • 原文地址:https://www.cnblogs.com/xiguazai/p/13508164.html
Copyright © 2011-2022 走看看