我们做项目,进入找bug阶段时,需要用ILA捕获相关的信号。之前我做项目,每改动一次探针(debug probes),都要重新综合、实现,通常要花掉1个小时,一天下来调试不了两下就过去了,效率极其低下,因此也吐槽过vivado的编译时间问题。这两天无意从高老师的公众号中看了高效的方法,有种相见恨晚的感觉。因为从原来的1个小时,提升到了5-10分钟,感激涕零。

根据高老师的公众号的介绍,我自己手动操作一遍,记录一下相对详细的操作方法。

1. 什么是ECO

ECO 指的是Engineering Change Order ,即工程变更指令。目的是为了在设计的后期,快速灵活地做小范围修改,从而尽可能的保持已经验证的功能和时序。ECO 的叫法算是从IC 设计领域继承而来,其应用在FPGA设计上尚属首次,但这种做法其实在以往的FPGA 设计上已被广泛采用。简单来说, ECO 便相当于ISE 上的FPGA Editor 。但与FPGA Editor 不同, Vivado 中的ECO 并不是一个独立的界面或是一些特定的命令,要实现不同的ECO 功能需要使用不同的方式。

我们的操作环境就是在ECO模式下进行的。

2. 操作步骤

基于vivado 2016.4

  1. 打开布线DCP文件

经过综合、实现后的工程,会生产几个DCP文件,其中一个是布线文件(routed dcp)。通过“open Checkpoint”打开。

将vivado layout切换为ECO模式。

  1. replace debug probes

点击“ECO Navigator”栏中的“Replace Debug Probes”,会出现之前设计的ILA中的各种探针,一个探针代表一个观测信号。


选中要被替换的信号,右键点击“Edit Probes”或者点击最右侧的"铅笔"标志,会出现“Choose Nets”小窗口,查询需要用来替换的信号。

注意事项:最开始我直接搜索代码中的信号名,一直搜索不出来。结果忽视了综合、实现过程中,已将代码转换为网表,所以只能用schematic中的nets名来进行搜索。

查到nets之后,移向右侧。各种确定之后保存,这就完成了debug probes的替换工作。

  1. 生成新的bit 、ltx文件

在Navigator栏最下面保存、生成bit和ltx文件。就可以进行新的测试了。

关于ECO还有更多内容,包括手动布局、布线之类的,可以参考官方文档UG904。

参考文献:

  1. UG904;
  2. 《替换Debug Probes其实很简单》——高亚军;

干掉Vivado幺蛾子(2)-- 快速替换debug probes的更多相关文章

  1. 干掉Vivado幺蛾子(1)-- Xilinx Tcl Store

    目录 1. 安装Xilinx Tcl Store 2. 手动更新 2.1 下载库 2.2 修改环境变量 参考文献: 最近在跟着高亚军老师的分析文章来学习Xilinx最近发布的<UltraFast ...

  2. 快速替换dll命名空间

    时15年9月18日,闲来无事,更一博.  背景 三天前,Y公司为避免法律诉讼,需要将代码(包括dll)中有关老东家的命名空间全部改掉.现在我就将快速替换命名空间的方法一步步告诉大家,注意,此举不是为了 ...

  3. Python_内置函数之round的幺蛾子

    pycharm运行结果 1 ret = round(0.5) print(ret) >>> 0 ret1 = round(1.5) print(ret1) >>> ...

  4. pycharm如何快速替换代码中的字符

    使用快捷键: ctrl+r:快速定位到替换栏,选择要替换的关键字即可方面快捷,特别适用于重复造文字的代码编程上 废话不多少,上图说话硬气:

  5. 转载:vim的复制,删除,粘贴,块操作以及快速替换功能

    掌握如下命令有什么好办法,我可以告诉你唯手熟尔!!多看多练对于VIM而言,复制,删除,粘贴的操作应该是非常多的.这次也做一个总结,关于处理VIM下的复制,删除,粘贴等操作.学会使用帮助文件,命令的帮助 ...

  6. 让现有vue前端项目快速支持多语言 - 用.net core程序快速替换中文为资源Key,咱不干体力活

    前言 最近应公司上层要求,需要将现有项目尽快支持多语言,而中文内容可以找专业人员翻译.那么咱们说干就干,首先我们项目的前端是用vue写的spa程序且组件方面用的element ui,那么自然而然想到用 ...

  7. Sed+Grep 快速替换查找字段(批量替换字符串)

    格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl路径` 命令分解: grep 查找字段 -rl路径   列出”路径”中” 查找字段” 的所有文件 ...

  8. 快速替换dll命名空间 z

    Step1:使用ildasm将代码反编译成il中间语言. 名字存贮为你想要的名字. Step2:用记事本打开il文件全局替换命名空间. Step3:使用ilasm将il文件编译成dll 按下回车即可生 ...

  9. js快速替换json里的key值

    需求是将b根据a的值替换对象中的key值 let a = ["code","name","date","font"]; ...

随机推荐

  1. SpringBoot全局异常的捕获设置

    1.新建立一个捕获异常的实体类 如:LeeExceptionHandler package com.leecx.exception; import javax.servlet.http.HttpSer ...

  2. sqlserver三种数据集合运算

    2.1   并集运算(UNION) (1)UNION ALL(不删除重复行) Code: 1 SELECT empID,empName,position,degree 2 FROM Employees ...

  3. qy Undefied index报错

    目测是不支持如下写法 $value['status'] = $map[$value['status']];

  4. js失去焦点触发

    onblur="displayRest($(this))"

  5. PHP发红包程序限制红包的大小

    我们先来分析下规律. 设定总金额为10元,有N个人随机领取: N=1 第一个 则红包金额=X元: N=2 第二个 为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数. 第 ...

  6. Dubbo服务启动依赖检查

    dubbo 官方文档地址:http://dubbo.io/User+Guide-zh.htm 项目中存在服务之间存在循环依赖,启动时总是报错,通过修改启动检查check=false解决,下面是dubb ...

  7. 编写高质量代码改善C#程序的157个建议——建议97:优先考虑将基类型或接口作为参数传递

    建议97:优先考虑将基类型或接口作为参数传递 除了公开及类型或接口外,方法的参数也应该考虑基类型或接口. 以Enumerable类型为例,它的成员方法中只要涉及需要操作集合对象的地方,都要使用IEnu ...

  8. c_c++基础问题(平时读书时笔记)

    1 IP私有地址: 10.0.0.0 -- 10.255.255.255 172.16.0.0 -- 172.31.255.255 192.168.0.0 -- 192.168.255.255 2OS ...

  9. jeecms栏目模型和内容模型的使用以及对应前台的标签中的属性名

    第一步:模型管理-添加模型: 栏目模板前缀设定方案下的channel目录下的ch_menu.html作为浏览栏目的模板页.对应访问网址:项目名/栏目名(一级或者二级栏目如news或者gnxw)/ind ...

  10. [LeetCode 题解]:Convert Sorted List to Binary Search Tree

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...