当前位置: 首页 > news >正文

vivado2024与vcs2023、verdi2023联合仿真尝试

vcs与vivado联合仿真

系统:redhat8.10 软件版本:vivado2024.2,vcs-2023.12-SP2,verdi-2023.12-SP2

前言

一直听闻vcs仿真非常之快(传言大型工程可以比moldesim快上4~5倍),还能够直接抓取所有波形,不用繁琐的手动添加重新仿真,verdi的界面也十分人性化,加之实在想摆脱vivado自带的仿真器,便有了这次折腾 vcs和verdi安装资料教程在创芯网有非常多,不同vivado版本适配的vcs版本也不同,不再赘述安装教程

csdn的博客无法显示图片,可以到我的博客看 http://www.heisuo.top/archives/413

基础环境

vcs2023要求使用gcc9.2编译vivado2024.2的IP库,gcctool中gcc9默认版本为gcc9.3.1,安装gcc9.2只能手动下载编译

安装gcc9_2

参考以下文章 Linux安装GCC 9.2.0-CSDN博客
安装后使用which gcc命令查看gcc9.2.0安装路径,然后将该地址复制到vivado编译IP库的gcc路径,如下图所示 其中预编译库路径vcs_lib 选项需要自己创建文件安装以上配置完成IP库的编译

注意:在哪个路径打开的vivado,编译IP库后会在该路径生成一个synopsys_sim.setup文件,该文件非常重要,之后不管在哪个路径打开vivado,都需要拷贝一份在该路径下,不然会报错找不到预编译库的路径,这里博主踩了很久的坑!!

联合仿真教程

本次使用的参考工程为vcs内自带的test同步fifo工程,路径如下/home/yian/Synopsys/vcs/V-2023.12-SP2/doc/examples/basic-hdl/verilog/syn_fifo只有一个hdl和一个bench文件,代码贴在最后,其中bench文件做了修改,在最后加入如下代码,生成verdi所需的fsdb文件

initial begin $fsdbDumpfile("fifo.fsdb"); $fsdbDumpvars(0,"tb_fifo","+all");//第一个参数表示dump所有层级的信号,第二个表示测试bench的名称,第三个表示dump进入fsdb中信息的种类,前两个参数实测可以缺省 end

创建vivado工程,将两个文件加入

基础配置

打开一个任意工程 进入设置,从上到下分别设置vcs的安装路径,gcc的安装路径,预编译库的路径

仿真配置

进入仿真配置界面,配置如下,其他选项保持默认

导出脚本

不知什么原因,vivado GUI界面直接launch可以运行不报错,但是却不能生成fsdb文件,因此采用脚本导出的方式,这种方式可以实现后期全脚本化仿真

在打开的工程中选择File–>Export Simulation,进行如下配置

仿真

将脚本导出来后,发现工程目录下多了一个VCS文件夹; 在VCS目录下有一个*.sh脚本文件,仿真直接执行该脚本,此时成功生成fsdb文件,执行命令

verdi -ssf fifo.fsdb &

打开verdi并且自动导入fsdb文件,界面如下点击该按钮添加波形点击左边的按钮全选波形,点击右边的按钮添加波形效果如下,仿真成功

添加代码仿真

Verdi有一个非常强大的功能,就是可以根据代码定位波形,但是我们导入的波形里却没有代码,是因为没有filelist文件 查看vivado自带的shell脚本,发现里面有对应的filelist,在"compile()"之后的字符都是对应的RTL文件,将其copy出来,创建一个file.f文件,再拷贝进去即可。执行命令

# -f为添加filelist verdi -f file.f -ssf fifo.fsdb &

得到verdi的完全体

总结

经过以上操作,配合makefile和tcl脚本,我们可以实现全脚本化仿真编译等操作,无GUI的vivado运行比带GUI的快很多,vcs➕verdi还有非常多强大的功能,后续再探索吧。

分享一些十分优质的学习博文 VCS+DVE+Verdi+Makefile使用 - 咸鱼IC - 博客园[VCS]VCS常用命令詳解_vcs -y-CSDN博客
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/2301_77629065/article/details/146549124

http://www.jsqmd.com/news/460300/

相关文章:

  • googlesearch:Python实现Google搜索的终极指南
  • 从‘笨小猴‘到‘飞碟验证‘:用C++字符串实战解锁竞赛题套路
  • Linux与数据库
  • Springboot 使用EasyExcel导出含图片并设置样式的Excel文件
  • 18. 基于CW32F030C8T6的GTIM1 PWM呼吸灯实现详解
  • RapidPages完全指南:从安装到部署的一站式前端开发解决方案
  • RMBG-2.0镜像免配置价值:节省新员工环境搭建时间达90%
  • python---包,库,模块
  • java8-java17新特性总结
  • SUNFLOWER MATCH LAB C语言基础集成:嵌入式设备图像预处理
  • zzzzzzzzzz
  • Web制作网站
  • hot100——第八周
  • zzzzzz
  • 手把手教你解决FFmpeg的Segmentation fault错误:avformat_open_input返回-1330794744的终极指南
  • TerraGoat多云挑战:Azure环境下的15个高危配置错误深度剖析
  • CentOS7安装MySQL5.7踩坑实录:手把手教你解决libsasl2.so.2依赖问题(附完整rpm包下载)
  • AI购物革命:Spring Boot+大模型打造智能购物系统
  • vim-json高级配置:自定义高亮、隐藏与警告设置
  • 【训练营】基于安信可WiFi模块的物联网时钟项目实战(立创EDA)
  • Axmol Engine渲染后端全解析:Metal、OpenGL到WebGL的跨平台实现
  • 最新版Keil5 MDK的相关问题综述
  • Doris监控与调优:大数据集群性能优化全攻略
  • 嵌入式开发者的福音:Clangd跨编译器兼容性全解析(ARM GCC/IAR/Keil实测)
  • 9篇7章11节:2025年后如何使用扩展包访问、下载和分析 NHANES 数据
  • [LVGL]移植实战:v8.3 堆栈深度剖析与HardFault_Handler精准定位
  • Apache Jena开发入门:Java API使用教程与示例代码
  • 风蚀和土地沙化
  • PyQt5重装无效?LabelImg启动失败的终极解决方案(含conda环境清理指南)
  • 9篇7章12节:如何直接显示NHANES某个变量的代码本