
服务热线:
13510270108







取缔
清空纪录
汗青纪录
清空纪录
汗青纪录
赛灵思 FPGA 开发 Vivado 工具使用常见问题与调试技巧
搞 FPGA 开发的人,,,,,,十个里面有八个被 Vivado 折磨过。。。。。。不是综合报错就是下载器连不上,,,,,,好不容易跑通了,,,,,,波形一抓满是 X。。。。。。这篇把实战中常踩的坑和真正好用的调试技巧整顿出来,,,,,,少走半年弯路。。。。。。
?
一、装置阶段就翻车的三大坑
蹊径不能有中文。。。。。。 这条是铁律。。。。。。Vivado 只认 ASCII 字符,,,,,,工程蹊径、装置蹊径、甚至 Windows 用户名里带中文都可能出问题。。。。。。综应时莫名报错、增长文件后直接崩溃,,,,,,八成是蹊径的锅。。。。。。
杀毒软件必须关。。。。。。 Vivado 综应时报 PID not specified、EXCEPTION_ACCESS_VIOLATION,,,,,,别疑惑,,,,,,就是杀毒软件把服务拦截了。。。。。。360、火绒十足关掉,,,,,,次运行综合若是弹出"可疑法式"提醒,,,,,,一概点允许。。。。。。
License 文件放英文蹊径。。。。。。 好多人把 license 丢到桌面中文文件夹里,,,,,,而后问为什么加载失败。。。。。。答案就这么单一。。。。。。

?
二、JTAG 连不上?????按这个挨次排查
Vivado 的 Hardware Manager 里找不到下载器,,,,,,连 localhost 都不显示——或许率是弹出网络权限窗口时点了回绝。。。。。。Vivado 链接下载器走的是网络服务,,,,,,把那个勾去掉就能解决。。。。。。
一台电脑只能挂一个赛灵思下载器,,,,,,插了两根线反而互有关扰。。。。。。另表 K7 或 Zynq-7035 开发板若是是长按上电版本,,,,,,插上 USB 但没长按按钮,,,,,,也会显示找不到芯片。。。。。。
下载器自身供电不及也是常见原因。。。。。。早期电脑 USB 口只有 500mA,,,,,,带不动板子。。。。。;;;;;灰桓帘蔚 Type-C 数据线,,,,,,或者直接上表部 12V 供电,,,,,,问题根基就隐没了。。。。。。

?
三、ILA 抓波形的正确姿势
ILA 是在线调试的工具,,,,,,但用不合就是白费。。。。。。
时钟必须匹配。。。。。。 ILA 的采样时钟要和被测信号在统一个时钟域,,,,,,并且必须走全局时钟网络(BUFG),,,,,,用通常逻辑输出的时钟去驱动 ILA,,,,,,时序分析直接挂掉。。。。。。
JTAG 时钟不要超过信号时钟的 2.5 倍。。。。。。 这条写在 UG908 里,,,,,,但没几幼我看。。。。。。超了之后要么报错,,,,,,要么抓回来满是 X。。。。。。
采样深度别贪多。。。。。。 默认 1024 够用了,,,,,,设太大吃 RAM 资源,,,,,,还拖时序。。。。。。探针位宽也一样,,,,,,够用就行,,,,,,别把整个总线都塞进去。。。。。。
信号被优化掉了怎么办????? 在信号申明前加 (* mark_debug = "true" *),,,,,,或者用 (* keep = "true" *),,,,,,通知综合器这根线不许动。。。。。。

?
四、VIO 动态调参,,,,,,不用改代码沉新烧
VIO 是 ILA 的搭档——ILA 掌管看,,,,,,VIO 掌管改。。。。。。不用 recompile,,,,,,直接在 Hardware Manager 里拖滑块、按按钮,,,,,,就能实时改 FPGA 内部寄放器的值。。。。。。
配置时把稳:VIO 的时钟必须和被控信号同频同域,,,,,,不然写进去的值采样不到。。。。。。Input Probe 数量设成你要监控的信号数,,,,,,Output Probe 设成要节造的信号数,,,,,,Enable Activity Detectors 打开后,,,,,,信号一变就有箭头提醒,,,,,,定位问题快得多。。。。。。

?
五、DDR3 校准失败?????查抄 VREF
Spartan-7 上跑 DDR3,,,,,,MIG IP 报 init_calib_complete=0,,,,,,dbg_wrcal_err=1。。。。。。硬件没问题,,,,,,DDR 型号也没选错,,,,,,发现是 VREF 引脚悬空。。。。。。FPGA 道理图上 DDR 数据信号地点 BANK 的 VREF 没接参考电压,,,,,,Vivado 里要勾上 Internal Vref,,,,,,对应约束是 set_property INTERNAL_VREF 0.750 [get_iobanks 34]。。。。。。
?
六、远程调试:编码和调试不在统一台电脑
打开远端电脑的 hw_server.bat,,,,,,本地 Vivado 里 Hardware Manager → Open New Target → 填远端 IP 和端口(默认 3121),,,,,,就能远程烧录和调试。。。。。。推荐远端装 Vivado Lab 版本,,,,,,占用幼、装得快,,,,,,只装 Hardware Server 就够用。。。。。。
?
七、异步时钟约束别写错
set_clock_groups -asynchronous 报 No valid object(s) found,,,,,,通常是时钟对象没吓酌 create_clock 创建就直接引用了。。。。。。正确挨次:先 create_clock 定名,,,,,,再 set_clock_groups 约束。。。。。。
?
Vivado 的坑的确多,,,,,,但大部门问题都有固定解法。。。。。。把这篇存下来,,,,,,遇到报错先对照着查,,,,,,能省掉大量无效排查功夫。。。。。。
