先给大家简单快速地介绍一下 Vivado 集成设计环境,即 IDE。
工程总结
当打开 Vivado 工程后,会有一个工程概要,向您介绍工程的设置、警告和错误信息以及工程的一般状态。
源
源视图用于显示项目中的文件类型,比如硬件描述语言文件、约束文件、仿真文件和 IP。您可以使用源代码编辑器,在工作过程中添加或者创建源文件。
流程导航
左边的这个部分叫做流程导航器 (Flow Navigator),用于控制编译流程和分析视图。它的组织方式与一般的开发流程一样。点击浏览器上的按钮可以执行流程,也可以加载处于某种特定状态的设计,用于查看和分析。
IP 目录
赛灵思 IP 库可用于选择和配置 IP。点击“IP 目录”按钮会出现 IP 视图,供浏览和搜索。完全展开后,我们会看到完整的 IP 列表,双击某个 IP,弹出配置向导,它将引导用户完成对 IP 核的整个参数配置过程,比如这个基于 AXI 的 DMA 控制器。完成配置向导的所有选项后,点击“结束”按钮,IP 核就作为源被添加到我的工程中。
一键式实现
流程浏览器用于执行最常见的任务,包括仿真、行为验证以及综合与实现。点击“运行实现”按钮启动一键式综合与实现操作,在后台执行设计编译工作,从而可将 GUI 用于执行分析任务。Vivado 可以充分发挥多核处理器的功能,最大化工作效率。Vivado 仿真、综合与实现的速度比同类竞争工具快 4 倍。
仿真
波形视图
点击“仿真”按钮即可加载设计的仿真视图。仿真最重要的作用是在 RTL 层面对设计进行功能验证。在这里,您可以运行仿真工作台,选择需要检测的信号并查看波形视图。波形视图和其他视图一样,可以用键盘缩放大小并对设计进行调试。
源交叉追踪
仿真视图中的对象可以轻松在 RTL 源代码中找到。选择信号,点击鼠标右键,您可以通过弹出菜单直接找到源代码文件中的相关代码行。
可以发现在整个工具中,您可以利用共享对象模型跨越不同区域查找设计对象,这对调试和分析工作有巨大帮助。
RTL 详情
打开详情
点击“RTL分析”按钮打开 RTL 的详细视图,在运行综合之前查看设计原理图。这样可以迅速查看自己的设计,无需等到编译完成。您还可以利用此工具对设计进行早期分析,使 RTL 和约束的开发工作更有效率。
源交叉追踪
在原理图中选择一个实例,同样是点击鼠标右键弹出菜单,直接找到定义或实例化此对象的源代码。
综合视图
点击“综合”按钮运行综合,或打开综合完成后建立的综合网表。这将读取综合生成的门级网表,并读取约束,将其应用于网表(在内存中),便于您对设计进行报告和分析。这里我们使用的是综合网表结果,但设计还没有完成布局布线,因此工具会适当地使用估计算法,这个阶段有许多报告可以使用。
资源利用率
后综合阶段,您最关注的可能是资源利用。打开设计后,点击“资源利用报告”按钮,就可以看到以图形方式显示的器件资源利用情况,既可以按类型进行全局划分,也可以按设计的逻辑层次结构划分。
设计人员关注的另一个问题是时序分析。如果设计在这个阶段遇到时序问题,整个编译过程就有可能是无用功,因此我们建议用户最好先用约束多试几次,在实施前将问题全部清除。
时序
介绍
点击“时序报告”按钮,弹出时序报告选项对话框。点击“OK”选择默认设置,即可显示每个时钟域的总体状况以及其中的最差路径。这样可以生成按时钟组分类的图形化报告,最差路径显示在报告的顶端。展开结果视图查看所有路径,双击一条路径查看路径的详细情况以及建立时间或者保持时间分析裕量的计算方法。
时序交叉跟踪
也可以选择一条路径,点击鼠标右键,选择生成时序路径的原理图,也可以跨区域查询路径的 RTL 源代码。
实现
在后实现阶段点击“实现视图”加载设计,读取最终网表,布局布线数据库以及与实现结果匹配的最终约束。这是设计的最终阶段,您可以得到最准确的分析结果。注意器件详细视图显示很多绿色区域,这代表器件使用的走线资源。
资源利用率
与后综合阶段一样,我们可以生成用图形显示的资源利用报告,用以反映实现状态,按资源类型或者逻辑层次结构划分。
时序
现在我们将运行时序报告,就像我们在后综合阶段所做的一样。不过现在不需要估算网络延迟,而是使用布局布线设计的实际延迟。我们可以利用内存实时运行静态时序分析,不需要从磁盘读取报告文件。这样能够提供强大的互动查询功能,还可以根据“假设”场景添加约束。
器件视图交叉跟踪
展开时序结果报告,发现有不满足时序的地方,我们需要对这些不满足时序的地方进行研究。双击一条路径,弹出详细的路径跟踪窗口。转到器件视图,放大器件,查看选中单元的布局布线,观察器件的哪些区域受到了影响。
路径详情
回到路径跟踪窗口,可以注意到源时钟和目的时钟不同,意味着这是一条跨时钟路径。而且我知道这两个时钟域彼此独立,也就是说不能同时处于激活状态,但是我忘记了添加约束来对其进行恰当的配置。约束语言采用行业标准的 SDC (Synopsys Design Constraints)。
假设加约束
打开约束编辑器,添加set_clock_group命令,将两个时钟设置为彼此逻辑独立。然后重新运行时序报告,可以立刻看到时序图有很大改善。请注意,我无需重新运行实现过程就能看到修改约束后的结果。我刚刚加入约束文件的约束将在下次运行时参与整个运行过程。
功耗
本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念
本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“
课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了
@2003-2020 中国电子顶级开发网