vivado中ila的使用方法记录

news2024/11/26 16:32:00

ILA工具生成方法

一、 ILA工具介绍

在FPGA的开发中,当完成代码设计后,为了验证代码的准确性和各种不同条件下的可靠性,往往需要优先想到通过逻辑仿真进行相关验证。使用逻辑仿真进行验证虽然可以周密的考虑给出不同输入条件下的输出结果或交互结果,但是也其相对局限性:使用仿真需要设计人员写testbench代码,从而增加代码的书写量,随之而产生提高验证工作的门槛和排除错误的工作量等一些列问题。特别是对纲入门的人,有时候难对testbench的设计方法优准确的把握,甚至testbench的书写规则和设计源码的规则混淆了,从而对学习源码设计参数适得其反的效果

使用仿真进行逻辑验证还有另一个局限性,其体现在:有些驱动模块的模型无法获取的情况下,仿真几乎是一项不可能完成的任务。比如,在没有ddr2、ddr3、摄像头模组等代码模型的条件下,设计的驱动模块缺乏能够模拟真实外部期间的数据交互环境,从而很难实现仿真的验证过程。

最后,仿真大多适合以时间为标尺,对条件变化有清晰的时间节点预设的验证需求。这就导致对工程的验真很难形成FPGA芯片、计算机和人的三者互动,也很难通捕捉随机触发条件而进行验证,从而使得触发条件的选择,受较大的局限性。

能够较好解决以上问题的一种方案,是考虑使用逻辑分析仪。而采用传统的逻辑分析仪又存在额外的设备采购开销。得益于FPGA的硬件定制自由属性,FPGA生产设计公司从自身发掘潜力,并配套以软件开发环境,推出了在一定程度上能够代替逻辑分析仪的在线调试工具。

FPGA两大厂商都有自己的在线调试工具。Intel的SinganlTap,xilinx的ILA工具。

二、方法

方法一:添加ILA IP核

image-20230607154658862

image-20230607155018378

将ila IP核在顶层文件中例化。例化模板可以在ip source–>ila_o–>instantiation template–>ila_0.veo中复制过来。

image-20230607155702226

然后编译生成bit流文件下板验证即可

方法二:使用Debug标记创建ILA调试环境

直接使用debug标记的方法创建ILA调试环境,能够弱化抓线信号的位宽对抓线调试的影响。

image-20230607163036412

image-20230607163210279

标记完之后对工程进行编译。编译完毕后点击open synthesized design ,再选择debug。

image-20230607163941922

image-20230607164618072

到这步之后,我发现我的图中并没有出现蜘蛛的符号,查看控制台发现警告:

[Netlist 29-72] Incorrect value 'ture' specified for property 'mark_debug'. Expecting type 'bool' with possible values of '1,0'. The system will either use the default value or the property value will be dropped. Please verify your source files.
Resolution: Please check the value of the property and set to a correct value.
大概的意思是:[网表29-72]为属性“mark_debug”指定的值“ture”不正确。应为可能值为“1,0”的类型“bool”。系统将使用默认值或删除属性值。请验证您的源文件。
解决方案:请检查属性的值并设置为正确的值。

然后我根据提示将语句中的”ture“改为”1“,如下图

image-20230607170810665

改好的结果:

image-20230607170955561

解决问题之后,继续:创建ila ip核

image-20230607171541639

image-20230607171707223

image-20230607171854418

image-20230607172006139

image-20230607172118644

接下来将需要观察的信号绑定到探针上:

image-20230607172327268

image-20230607172442709

image-20230607172515995

image-20230607172616178

绑定完成之后就可以生成bit流文件,运行ila。

注意:在使用mark_debug方法抓线完成调试工作之后,需要记得删除源码中的mark_debug标记。否则,不但代码会留下杂乱的调试痕迹,而且被标记的信号会保持占用工程的逻辑资源,导致工程总逻辑资源使用量增大。

方法三:使用路径标记核set up debug 菜单创建ILA调试环境。

可以通过在综合后的原理图上直接进行调试标记,而简单的锁定需要观察的信号。这样,我们就不需要在代码中进行标记,也不需要承担在调试完成后忘记在代码中删除mark_debug标记的风险了。

在vivado的 tcl console中输入:reset_project。可以将工程复位到ready状态。

image-20230607192411848

image-20230607192520420

image-20230607192637693

image-20230607193333293

image-20230607193500924

image-20230607193634731

image-20230607193737577

然后直接生成bit流文件上板调试。

方法四:使用IP核在block design界面创建ILA调试环境

首先创建block design工程,添加ila IP核。

image-20230607194452611

image-20230607194614637

image-20230607194802819

image-20230607194844017

image-20230607195036978

把线连接好之后生成顶层

image-20230607195219954

点击generate bitstream生成bit文件。

三、生成bit文件,板级调试

采用ila IP核的方法生成比特流下载到板子上。

1、波形显示窗口,可以通过点击十添加想查看的波形的信号。因为在IP设置中对探针设置的时候,cnt和 key_state信号的 Probe Trigger or Data 属性设置为了“DATA AND TRIGGER”,所以这里可查看的信号有cnt和 key_state。当然,通常在下载完程序后,ILA能够非常智能的识别出设计师期望观察的信号,同时,在右键菜单也可以找到删除观察信号的指令。这样,有限的窗口面积就可以被充分利用,自由调配和增减所需观察信号的条目。

image-20230607220919540

2、ILA core的状态控制和显示窗口

image-20230607220936357

按钮①:设置采样执行过程为循环采样。如果该按钮按下,则其外框为灰色线条,且框内颜色微深于面板背景色。
按钮②:启动采样按钮。按下后将启动ILA采样。根据是单次采样还是循环采样,根据是有条件触发还是无条件触发,启动后会呈现ILA状态的周期性变化或等待触发条件的到来。
按钮③:无条件执行ILA采样。
按钮④:停止采样按钮。如果处于循环采样状态,按下此按钮后,本轮正在执行的循环结束则停止采样。
状态栏⑤:状态栏⑤由5个空心圈组成,唯一的实心绿色点所处的位置表征ILA的运行状态。
状态栏⑥:已采集的点数占总采集点数的关系。由于图1.7-8中TRIGGER设置的在波形窗口2048点展示,而 TRIGGER还未到来,所以采样完成了2048个点而正等待TRIGGER。
状态栏⑦:以进度条的方式结合状态名称,标明当前所处的状态以及采样过程中执行状态的百分比。

3、点击窗口内➕ 添加产生触发条件的信号

image-20230607221105455

点击后,在弹出的Add Probes窗口选择需要添加的信号。因为在IP设置中对探针设置的时候,cnt和 key_state信号的Probe Trigger or Data 属性设置为了“DATAAND TRIGGER”,所以这里可查看的信号有cnt和 key_state。

image-20230607221153772

image-20230607221208895

添加好触发信号后,需要设置触发条件,触发条件有多个地方可进行设置。假设现在我们想设置在满足cnt =- 24999999并且 key_state为时触发进行一次信号的抓取,设置如下:
设置触发情况,下面是设置多个信号产生触发信号时的条件,与、或、
同或、异或,这里根据需求设置“Set Trigger Condition to‘Global AND’”表示。

image-20230607221240276

image-20230607221254669

image-20230607221355072

image-20230607221403022

image-20230607221413390

设置好之后按下开发板的按钮

image-20230607221635814

结果:T的位置就是触发的位置

image-20230607221450247

image-20230607221745036
视频参考连接:

https://www.bilibili.com/video/BV1uG4y1q7pT/?p=7&spm_id_from=pageDriver&vd_source=58dae662e3d0551fcf0adfdc00c4e557
	--晓凡  2023年6月6日于桂林书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“智慧赋能 强链塑链”—— 汽车行业供应链管理数字化应用探讨

01车企供应链数字化的必要性 汽车供应链是一个复杂的系统,很多汽车企业因为供应链管理不当,造成资源浪费、成本高、客户满意度低等一系列问题;而汽车行业规模技术门槛高、配合协同复杂的特性,决定了其供应链缺口无法在短时间内填…

Three.js系列-报错export ‘Geometry‘ (imported as ‘THREE‘) was not found in ‘three‘

今天遇到报错export ‘Geometry’ (imported as ‘THREE’) was not found in ‘three’ port Geometry (imported as THREE) was not found in three (possible exports: ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, …

为什么大家都不用postman而选择 Apifox呢?

丢掉 Postman,Apifox 更香 作为开发者,丢掉 Postman 和 Jmeter吧,这款国产 API 工具更香,更安全!一键即可导入 Postman 数据! 一、Apifox 是什么? 1、Apifox 定位 Apifox Postman Swagger …

Altium Designer(AD)局域网内使用解冲突

1. Altium Designer 版本 AD15.0.8,电路设计软件,硬件工攻城狮必备技能,软件攻城狮也要会一点点 2. AD软件出现“Your license is already used on computer “LAPTOP-F99R6OR1” using product “AltiumDesigner” 用同事的安装包解压安装的…

Mysql 索引详细解析——底层->应用

1、索引的数据结构 1.1 概述 索引(index)是帮助Mysql高效获取数据的数据结构。 索引的本质: 索引是数据结构。简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可…

期末计算机网络知识点总结

开篇提示: 因为博主图床使用的是GitHub进行存储的,因此当出现图片无法加载,可以尝试更换网络,或者用其他上网方法。当时想用 Gitee进行存储,但一直失败,过一段时间再试几次。目前这篇博文会一直更新,补充新…

Python的内置函数和保留字(关键字)

目录 内置函数 关键字(保留字) 内置函数 Python 解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。 将使用频繁的代码段封装起来,并给它起一个名字,以后使用的时候只要知道名字就可…

虹科分享 | 《面向金融行业的商业智能解决方案》白皮书

在以数据为中心的商业环境中,金融业面临着众多挑战,包括瞬息万变的市场动态、监管要求以及客户期望。金融行业从各种来源生成大量数据,包括交易、客户互动、市场数据和内部运营等。然而,如果缺乏有效的数据管理和分析,…

算法修炼之筑基篇——筑基二层后期(初步理解解决贪心算法)

✨博主:命运之光 🦄专栏:算法修炼之练气篇 🍓专栏:算法修炼之筑基篇 ✨博主的其他文章:点击进入博主的主页 前言:学习了算法修炼之练气篇想必各位蒟蒻们的基础已经非常的扎实了,下来…

【opencv】无法打开源文件opencv.hpp | bug记录

问题描述 今天这个bug其实比较搞笑: 原因分析: 那就是我们的VS软件没有识别到安装的库。肯定是下面三个环节哪里出错了: 1)项目属性里的包含目录(include) 2)项目属性里的库目录(lib) 3&…

随笔记录阿里云开发者社区Java开发高级技能自测20道题

目录 【单选】1.MyBatis中,主要使用哪个Java 接口来执行SQL命令?【单选】2.Spring中ApplicationContext的主要用法是?【单选】3.MySQL中,使用正则表达式查找news表中title以S或Q或L字母开头的所有数据,语句是&#xff…

【MySql】MySql的数据类型

文章目录 数据类型分类数值类型tinyint类型bit类型小数类型floatdecimal 字符串类型charvarchar日期和时间类型enum和set 数据类型分类 对于数据类型分类,这里简单分为数值类型(如BIT,BOOL,INT),文本、二进制类型(如CH…

JMeter 测试 ActiveMq

JMeter 测试 ActiveMq 的资料非常少, 我花了大量的时间才研究出来 关于ActiveMq 的文章请参考我另外的文章。 版本号: ActiveMq 版本号: 5.91 Jmeter 版本号: 1.13 添加ActiveMq 的jar包 将 ActiveMq 下的 "activemq-all-5.9.1.jar" 复制…

labelme安装与打包为独立exe程序(超级详细版!!!!)

文章目录 labelme安装与打包为独立exe安装打包以上全部命令直接复制粘贴就行!!!! labelme安装与打包为独立exe 按照官网给出的详细教程即可,不用去看一些博客(都过时了)。。。label官网 简要说…

Linux操作

Linux操作 一、Linux操作 1.安装yum包: $ yum install PACKAGE_NAME yum install mysql2.取出yum包装: $ yum remove PACKAGE_NAME yum remove mysql3.重新安装一个yum包: $ yum reinstall PACKAGE_NAME yum reinstall mysql4.搜索yum包…

tb6612电机驱动软件开发(cubeide工程调试,引脚等设置)

tb6612电机驱动软件开发(cubeide工程调试,引脚等设置) 文章目录 tb6612电机驱动软件开发(cubeide工程调试,引脚等设置)CLOCK(RCC)SYSGPIONVICTimer定时器配置PWM输出设置电机转速定时器编码模式普通定时器 UART串口设置 CLOCK(RCC…

unittest测试框架详解

单元测试的定义 1. 什么是单元测试? ​ 单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类,一般是开发来做的,按照测试阶段来分&a…

Vue实现锁屏功能

这两天刚做了个新需求,要做个系统锁屏(当然锁的是当前的系统),就类似于电脑锁屏似的。 共两种情况下锁屏,一种是无操作一定时间后自动锁屏;第二种是可以按下组合键(快捷键)主动进行锁…

利用ThreadLocal+AOP切面编程实现RPC日志

前言 最近在稍微学了一下ThreadLocal以及它的使用场景,同时也学了一下AOP相关的内容,刚好做个很常见的RPC日志来练练手。 主要思想是通过切面来拦截所有的请求,在请求进入切面的时候,可以用ThreadLocal来存储当前请求的线程专属的…

微信小程序基础使用

微信小程序的基本使用 微信小程序文件类型 微信小程序主要提供了 4 种文件类型: 类型名称作用是否必须存在.wxml用于页面的布局结构,相当于网页中 .html 文件是.wxss用于页面的样式,相当于网页中的 .css 文件否.js用于页面的逻辑是.json用…