Xilinx公司的IDE(集成开发环境) Vivado用处广泛,学会使用Vivado对FPGA的学习至关重要,这里以PRX100-D开发板为例,对Vivado的学习使用进行探讨。本文将会持续更新,列出一些常见的Vivado使用过程中出现的问题,供大家参考。

在Vivado使用过程中 出现的问题,主要会分为以下几类:

  1. 与Vivado软件本身相关的问题
  2. Vivado综合,仿真,实现过程中出现的问题
  3. 编程和调试PRX100-D开发板注意事项

1.与Vivado软件本身相关的问题

  • Vivado在添加新的工程/HDL文件后会自动崩溃退出

这一问题出现在2018.2版本中。Xilinx官方网站上说明在2017.1版本后都出现过该问题。该问题的出现可能是与srcscanner.exe(用于刷新工程文件的hierarchy结构) 和低端的启动库有关。解决方法为先尝试重启系统,如果不能解决这个问题,可以尝试安装Xilinx提供windows操作系统下的boot可执行文件,文件在bootSharedDirFixApp.zip(附在文后)里面。直接解压缩和执行就能解决这个问题。

  • Vivado出现内部异常,如图1.1所示

图1.1 Vivado出现内部异常

导致内部异常的原因有很多,但是可行的解决方法有非常直接的,经测试后可行的就是关闭Vivado窗口,再次重新打开。

2.Vivado综合,仿真,实现过程中 出现的问题

  • 在Vivado综合时,出现如图2.1所示错误

图2.1 Vivado综合错误

图2.1显示了没有错误信息,只有警告信息,但是工程综合失败。这种情况可能是由于工程的路径名上出现了中文导致的。所以可以将工程路径全改成由英文/数字/下划线组成。Vivado只支持由Ascii字符组成的名字,包括:A-Z,a-z,0-9和下划线。

  • Vivado错误:Vivado [Common 17-180] Spawn failed: No error

这个错误出现的原因是工程的路径名太长,超过了80个字符。解决方法也很简单,缩短工程路径即可。

  • Vivado在编写和genvar有关的代码时,出现的错误:[Synth 8-196] conditional expression could not be resolved to a constant

错误原因不明,也没有官方的解决方法,已知都是与genvar有关。尝试过有效的解决方式是将声明的genvar的名字更改的更特别,比如从genvar u换成genvar uu_var。

  • Vivado综合时出现错误:[Synth 8-3352] multi-driven net…

在使用D flip-flop时,错误将输出Q端在不同的代码块内被赋值了两次。简易的D flip-flop如图2.2所示。解决办法是把两次不同的赋值集中到一个代码块,并且添加不同的条件限制,使其不是同时被执行。

图2.2 D flip-flop简单示意图

  • Vivado仿真出现错误:ERROR: [Simulator 45-7] No such file ‘C:/FII_RISCV_V2.01_2020_0724/FII_RISCV_V2.01.srcs/sources_1/new/cpu_sys/fii_rv32i_core.v’ in the design.

错误出现原因是将工程转移到了另外的文件路径下。解决方法有以下几种:

    • 换一种文件途径名,避免出现不支持的字符,比如空格,中文等
    • 挪回原来的文件夹
    • 重启工程/仿真
    • 删掉C:\FII_RISCV_V2.01_2020_0724\FII_RISCV_V2.01.sim\sim_1\behav\xsim(这里是示例文件途径,可针对性自己的文件途径修改)

经过测试,最后一种方法解决了这个问题。

  • Vivado仿真出现错误:ERROR: [XSIM 43-3322] Static elaboration of top level Verilog design unit(s) in library work failed.

在网上查询得到的是Vivado软件的错误,但实际测试后发现,该错误出现的原因是仿真读取十六进制数据时(使用的是readmemh),模块的路径错误。已知readmemh的用法如下:

reg [<memory_width>] <reg_name> [<memory_depth>];

initial
$readmemh ("<file_name>", <reg_name>, <start_address>, <end_address>);

实际用法如下所示,在将红体标记的路径改正后,可以正常进行仿真:

localparam FILE_NAME = "../../../f_seg.HEX";
integer file_handle = 0;
initial begin
file_handle = $fopen(FILE_NAME,"r");
if(!file_handle)
begin
$display("Could not open File \r");
$stop;
end
$readmemh (FILE_NAME, fii_cpu_sys_inst.fii_riscv_cpu_inst.fii_rv32i_core_inst.fii_instr_rib_inst.program_inst.inst.native_mem_module.blk_mem_gen_v8_4_1_inst.memory); $fclose(file_handle);
end

3.编程和调试PRX100-D开发板注意事项

  • 连接到JTAG后,在Vivado中找不到相应的硬件

可能原因有PRX100-D上JTAG的跳线位置不对,注意在图3.1所示的跳线中,应当连接内部JTAG,也就是2-3。并使用对应的线连接上PRX100-D和电脑。

图3.1 JTAG跳线

还有一种可能是连接JTAG和电脑的线缆供电不足,这种情况可以通过用外部12V电源供电的方式,如图3.2所示,将电源线接到电源口,并且将电源跳线连接EXT-5V和PWR_5V(用连接JTAG和电脑的线供电时,需要将电源跳线跳到USB_5V和PWR_5V),如图3.3所示,即可缓解单根JTAG到电脑线的供电不足问题。也可以尝试同时连接JATG端口,UART端口和电脑,用两根线缆同时供电。

图3.2 电源接口

图3.3 电源选择跳线

最后,注意在连接好PRX100-D和电脑后,需要将开发板的电源按钮按下启动。电源启动按钮如图3.4所示。

图3.4 电源启动按键

  • 连接到UART接线后,在windows下的设备管理器下没有出现相应的端口。

正确的设备管理器发现UART接线的情况,如图3.5所示。但可能有少数情况下,UART的硬件无法被windows系统发现,这时,则需要重新安装CP210x的驱动程序,可以从Silicon Lab上官方网站上下载(点击这里到相应的界面)对应的驱动。

图3.5 设备管理器中出现正常的UART接线

  • Vivado错误:ERROR: [Common 17-70] Application Exception: CORE_LOCATION mismatch

错误出现的步骤一般是在添加debug core后上板调试时,错误原因不明。Xilinx官方技术人员提供的解决方法都没有效果。实际有效的操作为关闭Vivado窗口,再次重新打开。

4.文章参考

[1] Xilinx官方论坛:https://www.xilinx.com/support.html

Vivado中综合,实现,编程和调试工程可能会出现的问题及解决方案的更多相关文章

  1. 脚本编程中的test、bash调试、变量计算、参数

    脚本编程中的test.bash调试.变量计算.参数 1.文件测试 -e FILE:测试文件是否存在 -f FILE:测试文件是否为普通文件 -d FILE:测试路径是否为目录 -r FILE:测试当前 ...

  2. ddr3调试经验分享(一)——modelsim实现对vivado中的MIG ddr3的仿真

    Vivado中的MIG已经集成了modelsim仿真环境,是不是所有IP 都有这个福利呢,不知道哦,没空去验证. 第一步:使用vivado中的MIG IP生成一堆东西 ,这个过程自己百度.或者是ug5 ...

  3. Vivado中debug用法

    Vivado和ISE相比ChipScope已经大幅改变,很多人都不习惯.在ISE中称为ChipScope而Vivado中就称为in system debug.下面就介绍Vivado中如何使用debug ...

  4. Tcl在Vivado中的使用

    http://blog.chinaaet.com/detail/36014 Vivado是Xilinx最新的FPGA设计工具,支持7系列以后的FPGA及Zynq 7000的开发.与之前的ISE设计套件 ...

  5. Vivado中ILA的使用

    Vivado中ILA的使用 1.编写RTL代码      其中需要说明的是(* keep = "TRUE" *)语句的意识是保持cnt信号不被综合掉,方便以后的调试,是否可以理解为 ...

  6. vivado中设置多线程编译

    VIVADO中一个run编译时支持的线程数如下表:(综合时一般是2线程) Place Route Windows默认 2 2 Linux默认 4 4 Windows开启maxThreads=8 4 4 ...

  7. 73.Vivado使用误区与进阶——在Vivado中实现ECO功能

    关于Tcl在Vivado中的应用文章从Tcl的基本语法和在Vivado中的应用展开,继上篇<用Tcl定制Vivado设计实现流程>介绍了如何扩展甚至是定制FPGA设计实现流程后,引出了一个 ...

  8. 初探Delphi中的插件编程

    前言 我写Delphi程序是从MIS系统入门的,开始尝试子系统划分的时候采用的是MDI窗体的结构.随着系统功能的扩充,不断有新的子系统加入系统中,单个工程会变得非常大,每次做一点修改都要重新编译,单个 ...

  9. Apache Beam中的函数式编程理念

    不多说,直接上干货! Apache Beam中的函数式编程理念 Apache Beam的编程范式借鉴了函数式编程的概念,从工程和实现角度向命令式妥协. 编程的领域里有三大流派:函数式.命令式.逻辑式. ...

  10. Java中的网络编程

    ​ Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的 C/S程序应用:客户/服务器模式,如QQ客户端 ...

随机推荐

  1. -bash: nslookup: 未找到命令;centos7 安装nslookup

    一.安装服务 [root@localhost ~]# yum -y install bind-utils 二.查看 [root@localhost ~]# nslookup

  2. superset2 开发环境部署+阿里odps连接

    引用:https://help.aliyun.com/document_detail/280392.htm https://blog.csdn.net/weixin_45684985/article/ ...

  3. 新年快乐!体验Windows7黄金版,祝你2023财源广进!

    新年快乐!体验Windows7黄金版,祝你2023财源广进! 首先,开机画面表示出它的土豪,并说明,它并不来自Microsoft. 然后: 它是2016年出现的. 改成64位的. 然后许可: 自定义: ...

  4. cudnn Backend API注意事项

    一.在包含多个节点的图中,不支持in-place node.(如果图只包含一个节点,支持in-place node) Note that graphs with more than one opera ...

  5. Maven3.6.1 (转载大佬文章)

    (30条消息) Maven3.6.1安装及配置_浅若清风过的博客-CSDN博客 1.下载https://archive.apache.org/dist/maven/maven-3/3.6.1/bina ...

  6. Zookeeper ZAB协议

    这篇博客是从源码的角度了解Zookeeper 从接收客户端请求开始,到返回数据为止,有很多涉及到的对象创建因为在前几篇文章已经说明过了,这里就不再重复的说明了,如果不是很明白的的,可以先看前几篇博文了 ...

  7. OS X Maven 安装与使用简介

    Java真的很重很复杂,连项目构建和编译都得专门拉出来学,这里整理一下在OS X上使用Maven的注意事项. 一.安装 [bash] 1.从http://maven.apache.org/downlo ...

  8. Lecture 1. Introduction and Basics - Carnegie Mellon - Computer Architecture 2015 - Onur Mutlu

    1.Hamming Distance: 两个相同长度比特串对应位置的不同位的数量,一般使用 d(x,y) 来表示汉明距离.对两个比特串进行异或运算,统计结果为1的个数就是汉明距离.   ======= ...

  9. windows检查

    # coding: UTF-8 import psutil import platform import re def get_cpu_used(upu_base, interval=1): perc ...

  10. JavaScript垃圾回收机制的了解

    对于js种的任意长度字符串,对象,数组是没有固定大小的,只有在分配存储时,解释器就会分配内存来存储这些数据.当js的解释器消耗完系统所有可用内存时,就会造成系统崩溃.因此js有着自己的一套垃圾回收机制 ...