verdi使用linux命令,vcs和verdi的调试及联合仿真案例

2023-11-12

环境配置

首先搭建好vcs和Verdi都能工作的环境,主要有license问题,环境变量的设置。在220实验室的服务器上所有软件的运行环境都是csh。所以,所写的脚本也都是csh的语法。

生成波形文件

Testbench的编写

若想用Verdi观察波形,需要在仿真时生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通过两个系统调用$fsdbDumpfile $fsdbDumpvars来实现的。而这两个系统调用并不是Verilog中规定的,是Verdi以pli(Programming Language Interface)的方式实现的。这就需要让vcs编译时能找到相应的库。

首先在testbench中需加入以下语句

`ifdef DUMP_FSDB

initialbegin

$fsdbDumpfile(“test.fsdb”);

$fsdbDumpvars;

end

`endif

这个编译开关在用vcs编译时加入+define+DUMP_FSDB选项就可以打开,也可以在define.v文件中定义DUMP_FSDB这个宏。

我们现在所接触的仿真波形文件主要有

Ø Wlf文件: WLF波形日志文件,是modelsim的专用文件。这个wlf文件只能是由modelsim来生成,也只能通过modelsim来显示。在用modelsim做仿真时,仿真结束都会生成一个*.wlf的文件(默认是vsim.wlf)。下次就可以通过通过modelsim直接打开这个保存下来的波形。vsim -view vsim.wlf -do run.do其中run.do中的内容为要查看的波形信号。要强调的是不是一个通用的文件文件格式。

Ø VCD文件:VCD 是一个通用的格式。 VCD文件是IEEE1364标准(Verilog HDL语言标准)中定义的一种ASCII文件。可以通过Verilog HDL的系统函数$dumpfile,$dumpvars等来生成。我们可以通过$dumpvars的参数来规定我们抽取仿真中某个特定模块和信号的 VCD数据。它主要包含了头信息,变量的预定义和变量值的变化信息。正是因为它包含了信号的变化信息,就相当于记录了整个仿真的信息。可以用这个文件来再现仿真,也就能够显示波形。另外我们还可以通过这个文件来估计设计的功耗。因为VCD是 Verilog HDL语言标准的一部分,因此所有的verilog的仿真器都要能实现这个功能。因此我们可以在verilog代码中通过系统函数来dump VCD文件。另外,我们可以通过modelsim 命令来dump VCD文件,这样可以扩展到VHDL中。具体的命令: vcd file myfile.vcd vcd add /test/dut/* 这个就生成一个含dut下所有信号的VCD数据信息。我们在使用来进行仿真 vsim -vcdstim myfile.com test;add wave /*;run -all;

Ø FSDB文件:fsdb文件是verdi使用一种专用的数据格式,类似于VCD,但是它是只提出了仿真过程中信号的有用信息,除去了VCD中信息冗余,就像对 VCD数据进行了一次huffman编码。因此fsdb数据量小,而且会提高仿真速度。我们知道VCD文件使用verilog内置的系统函数来实现 的,fsdb是通过verilog的PLI接口来实现的。$fsdbDumpfile,$fsdbDumpvars等 另外,在VCS仿真器中还有一种VCD+的数据格式VPD,详细情况参照VCS的使用。 注意:WIF:波形中间格式;WLF:波形日志文件。由于在ModelSim下只能打开WLF文件 使用ModelSim行命令vcd2wlf 将VCD文件转化为WLF文件。

而在dump fsdb文件需要几个文件,Verdi.tab, pli.a 以及与仿真器相应版本的.so库文件(需要修改LD_LIBRARY_PATH变量)。而这些目录在以往的版本中是比较凌乱的。

在Verdi200907版本之后它的dumper就做了统一化的处理:

How to Link the New Unified Dumper?

Prerequisites:

Ø ${NOVAS_INST_DIR} :

Verdi/Siloti install directory.

Ø ${PLATFORM} :

LINUX: Linux OS (32-bit)

LINUX64: Linux OS (64-bit)

SOL2: SunOS 5.x (32-bit)

SOL7: SunOS 5.x (64-bit)

IBM5: IBM 5.1

Ø Tab file:

novas.tab

Ø LD_LIBRARY_PATH

${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM} needs to be added as one of the

LD_LIBRARY_PATH searching paths all the time.

Ø Novas banner:

*Novas*

Ø novas.vhd file:

For VHDL and mixed language users who transfer from the old FSDB dumper, the first time use of new unified FSDB dumper needs the “novas.vhd” to be re-compiled (or re-analyzed) if the FSDB dumping commands have been specified in the VHDL design.

The related unified dumper directories are:

${NOVAS_INST_DIR}/share/PLI/VCS

${NOVAS_INST_DIR}/share/PLI/MODELSIM

${NOVAS_INST_DIR}/share/PLI/IUS

${NOVAS_INST_DIR}/share/PLI/lib

在我设的vcs环境中(csh)中设计的脚本如下

#!/bin/tcsh

if(-esimv)then

\rm-rsimv

endif

if(-esimv.daidir)then

\rm-rfsimv.daidir

endif

if(-ecsrc*)then

\rm-rfcsrc

endif

vcs0809

#verdi env setting

setPLATFORM=LINUX

setNOVAS_INST_DIR=/opt/spring/verdi201004

setenvLD_LIBRARY_PATH${NOVAS_INST_DIR}/share/PLI/lib/${PLATFORM}:${LD_LIBRARY_PATH}

vcs -l vcs.log \

-notice \

-line -debug_all \

-P $NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/novas.tab \

$NOVAS_INST_DIR/share/PLI/VCS/$PLATFORM/pli.a \

-f vcs.args

。/simv

需要注意:

Csh中设置环境变量,需把环境变量用{}括起来,这一点我试了很多次,它确实不如bash的解析器更加智能。

在220的服务器上,vcs的版本是201006的,而Verdi的版本时间比较低,编译时会提示,相应的libsscore_vcs201006.so文件找不到。现在我用的Verdi的版本是201004,而vcs的版本是200809

其中的vcs.args的参考脚本如下(以intra mode decision为例)

+libext+.v

+v2k

+acc

+define+DUMP_FSDB

-y http://www.cnblogs.com/rtl

-work work

//

// Testbench files

//

+incdir+http://www.cnblogs.com/bench

http://www.cnblogs.com/bench/tb_ip_mode_decision.v

// RTL files

//

+incdir+http://www.cnblogs.com/rtl

http://www.cnblogs.com/rtl/ip_mode_decision.v

http://www.cnblogs.com/rtl/defines.v

http://www.cnblogs.com/rtl/timescale.v

在csh中运行

。/run_vcs

即可生成Verdi所需要的fsdb文件

之后运行以下命令启动Verdi

verdi -2001 -f vcs.args -ssf test.fsdb

Verdi调试

Verdi调试主要分为以下几步

Ø Load design and testbench into Debussy;

Ø 打开nWave,载入对应的FSDB;

Ø 在nTrace中将要观察的信号通过鼠标中键Drag&Drop拖放到nWave中;

Ø 通常都是在波形上发现问题,找到错误地方并双击鼠标,会自动跳到Real driver statement,也即会跳到源代码所在。

Ø nTrace中,Active Annotation(快捷键X)标出仿真结果在source code下;

Ø 在先前driver statement中找个driver来使用active trace来追踪有效驱动。

Verdi就是之前的Debussy,在调试时有着诸多的优点,现在我感觉最基础的几点就是它

Ø 只需执行一遍仿真就可以查看所有的波形,而在modelsim中则需要反复运行add wave命令,每一次都要重新仿真。

Ø 可以查看设计的原理图schematic,这非常方便查看每一个module和wire的所对应的硬件结构,modelsim现在还没有这个功能。

Ø 在仿真时可以很轻易地追踪每个信号所对应的源码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

verdi使用linux命令,vcs和verdi的调试及联合仿真案例 的相关文章

  • libev学习系列之四:ev_loop事件循环

    libev学习系列之四 ev loop事件循环 版本说明 版本 作者 日期 备注 0 1 ZY 2019 5 31 初稿 目录 文章目录 libev学习系列之四 ev loop事件循环 版本说明 目录 一 前言 二 描述 三 例子 一 前言
  • tensorflow(十七)关于tensorboard网络运行时参数的查看

    关于tensorboard网络运行时查看参数主要包括网络的权值和偏差
  • [学习笔记-opencv篇]ubuntu系统下运行opencv自带双目标定+立体匹配程序

    ubuntu系统下运行opencv自带双目标定 立体匹配 双目标定 立体匹配 找了很多opencv自带双目标定的资料 发现大多数都是使用vs opencv或matlab运行的 也可能是找的还不够 参考了一些资料 写了个cmake 然后一通操
  • 机械革命深海幽灵z2学习电脑系统史

    目录 前言 第一次蓝屏 第一次接触重装系统 装Linux系统 Linux16 04版本与显卡1060不兼容问题 windows与linux双系统问题 Linux学习 售后 自己重装系统 换主板 没有我修不好的电脑 键盘故障 再次蓝屏 重装系
  • [精华]uniapp微信授权登录,

    转载一 微信授权登录 转载二 uniapp页面速成提效工具 uniapp uview ui 可视化 完全自由拖拽 一键生成flex代码网站 http aicode shagua wiki uni index html 十大特性 1 可视化
  • Unity屏幕坐标转UI局部坐标

    RectTransformUtility ScreenPointToLocalPointInRectangle https docs unity cn cn 2019 2 ScriptReference RectTransformUtili
  • 在C语言多维数组a[3][2]中的a[2]代表的是什么意思

    一开始我以为a 2 是等价与a 2 0 也就是第三行的第一个元素 后来发现错误 a 2 是等价与 a 2 其值是第二行的首地址 a 2 0 等价于 a 2 个人认为可以把二位数组的数组名理解成一个二维指针 解运算一次 放的是地址 行地址 解
  • 08:js逆向---压缩技术

    可以看到了变的参数只有一个 toke 接下来解决toke 直接搜索 通过window Rohr Opt reload函数加密 reqUrlAndParams是在上面生成的 进去函数里面看 iP reload function jv jv最初
  • Win10家庭版远程桌面工具RDP Wrapper

    由于win10家庭版官方不支持使用远程控制mstsc工具 所以使用RDP Wrapper可以解决该问题 软件环境如下 不止当前版本 经过验证在21H2版本上依旧可行 如果嫌弃阅读文章浪费时间可以直接下载打包好的压缩文件 直接替换就可以使用
  • C语言实现扫雷游戏(进阶篇)

    C语言实现扫雷游戏 基础篇 的链接在下面 https blog csdn net m0 73676323 article details 129357113https blog csdn net m0 73676323 article de
  • 【华为OD机试c++】优选核酸检测点【2022 Q4 A卷

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 张三要去外地出差 需要做核酸 需要在指定时间点前做完核酸 请帮他找到满足条件的核酸检测点 给出一组核酸检测点的距离和每个核酸检测点当前的人数 给
  • ​语义分割损失函数​

    这里面有几个损失函数 GitHub MichaelFan01 STDC Seg Source Code of our CVPR2021 paper Rethinking BiSeNet For Real time Semantic Segm
  • Hadoop学习笔记(1)

    原文 http www cnblogs com zjfstudio p 3859704 html Hadoop学习笔记 1 菜鸟入门 Hadoop是什么 先问一下百度吧 百度百科 一个分布式系统基础架构 由Apache基金会所开发 用户可以
  • 一文说清产品经理、项目经理、产品负责人的区别

    以下为译文 原文链接 https nealcabage com product vs project vs program management 太多的团队无法区分Product Manager Product Owner Program
  • SSD 之OP预留空间

    SSD上的OP指的是用户不可操作的容量 大小为实际容量减去用户可用容量 OP区域一般被用于优化操作如 WL GC和坏块映射等 OP一般分三层 见下图 第一层容量固定为SSD标称容量的7 37 这是因为标称容量采用千进制为单位 而NAND颗粒
  • 并行编程——OpenMP

    文章目录 并行机体系结构 并行机体系结构及通信机制 并行程序 设计方法 设计模型 openmp 基础 OpenMp简介 在VS中启用OpenMP OpenMp并行编程模型 OpenMp 存储模型 支持条件编译 并行化控制 编译制导 功能指令
  • 小扎亲自官宣Meta视觉大模型!自监督学习无需微调,多任务效果超OpenCLIP丨开源...

    萧箫 发自 凹非寺量子位 公众号 QbitAI 无需文字标签 完全自监督的Meta视觉大模型来了 小扎亲自官宣 发布即收获大量关注度 在语义分割 实例分割 深度估计和图像检索等任务中 这个名叫DINOv2的视觉大模型均取得了非常不错的效果
  • feign get方法参数是form提交方式

    使用feign调用服务端接口时如果服务端接口是get方式 并且采用form方式表达提交的时候需要使用 SpringQueryMap 注解 但是参数列表中只能使用一个 SpringQueryMap注解 多个只会有一个生效 服务端 被调用方 c
  • 全球及中国动脉导管未闭治疗设备行业渠道模式分析与需求前景预测报告2022版

    全球及中国动脉导管未闭治疗设备行业渠道模式分析与需求前景预测报告2022版 修订日期 2021年12月 搜索鸿晟信合研究院查看官网更多内容 2021年 全球动脉导管未闭治疗设备市场规模达到了 百万美元 预计2027年可以达到 百万美元 年复

随机推荐

  • 理事的三板斧-以项目部为例

    作为管理者来说 无非是理事 管人 这中间理事尤为重要 因为事理的不清楚 人肯定难管好 即使有个人魅力 队伍凝聚力强 事理的不对 也会事倍功半 长期的去看 团队也会出问题的 事理的清楚 我认为主要有三点 目标 流程 模板 目标清楚了 方向就不
  • 跨度计算算法

    int FindingSpans int inputArray int spans new int inputArray length for int i 0 i lt inputArray length i int span 1 int
  • 关于matplotlib及相关cmap参数的取值

    关于matplotlib及相关cmap参数的取值 在matplotlib中对于图片的显示有如下方法 这不是重点 其中有cmap binary 的参数 plt imshow imgs i reshape 28 28 cmap binary 或
  • Linux系统之安装java开发环境

    Linux系统之安装java开发环境 一 java介绍 1 java简介 2 java的三大平台 3 java的主要特性 二 检查本地系统环境 1 检查系统版本 2 检查系统内核版本 三 清空java环境 1 删除java目录 2 移除所有
  • 不高兴的津津1073

    Description 津津上初中了 妈妈认为津津应该更加用功学习 所以津津除了上学之外 还要参加妈妈为她报名的各科复习班 另外每周妈妈还会送她去学习朗诵 舞蹈和钢琴 但是津津如果一天上课超过八个小时就会不高兴 而且上得越久就会越不高兴 假
  • 经典Proxool.properties

    数据库1jdbc 1 proxool alias WEBGISjdbc 1 proxool driver class oracle jdbc driver OracleDriverjdbc 1 proxool driver url jdbc
  • JNLP 文件无法打开的解决办法

    JNLP Java Network Launching Protocol 是 java 提供的一种可以通过浏览器直接执行 java 应用程序的途径 它使你可以直接通过一个网页上的 URL 连接打开一个 java 应用程序 因此 要运行 jn
  • 用户·角色·权限·表

    一 引言 因为做过的一些系统的权限管理的功能虽然在逐步完善 但总有些不尽人意的地方 总想抽个时间来更好的思考一下权限系统的设计 权限系统一直以来是我们应用系统不可缺少的一个部分 若每个应用系统都重新对系统的权限进行设计 以满足不同系统用户的
  • React新特性hooks中memo,usememo,useCallback的区别

    useMemo memo类似于PureCompoent 作用是优化组件性能 防止组件触发重渲染 memo针对 一个组件的渲染是否重复执行
  • 江苏开票系统安全接入服务器地址,江苏省增值税发票查询平台网址.doc

    江苏省增值税发票查询平台网址 江苏省增值税发票查询平台网址 81 增值税发票查询平台于2016年5月27日在全国36个省 市 自治区升级完毕 目前全国统一版本为V2 0 00 新版本上线后 功能更加强大和人性化 为了使广大纳税人能更加正确
  • nginx出现 “414 request-uri too large”

    公司项目有一个模块 在请求查询的时候使用了Get方法 由于拼接的url过长 导致nginx出现了 414 request uri too large 错误 出现这种问题可以按照如下解决 在nginx的nginx conf修改如下参数的 cl
  • git check-pick,git patch 与 git stash 详解

    大家好 我是 17 今天和大家聊一聊 git check pick git patch 与 git stash 的用法 git cherry pick 为什么要用 cherry pick 不适合 merge 的场景就可以考虑 cherry
  • mysql数据库——思维导图

    学完mysql后 自己弄得的思维导图 原图30 6MB 太大了放不上来 这里就放个链接吧 欢迎大家去看 如果有需要改正的地方 请告诉我 谢谢 链接 https www zhixi com view 718f3805 密码 6522 下面是M
  • Android 动态权限判断是否允许的几种方式及测试

    一 说在前面 由于各个系统厂商定制 checkSelfPermission在有些机型上是始终为0的 也就是允许 这个问题非常头疼嘞 于是手持一加对三种方式进行了测试 以read sms权限为例 二 检查方式 常用的检查 ContextCom
  • java 内存分配管理_JAVA实验操作系统内存管理-最优分配,最先分配,最坏分配算法...

    package Memory import java util ArrayList import java util Iterator import java util Scanner public class OS ArrayList f
  • 用这个算法能让大数据集群性能提升100倍!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 前情概要 二 背景引入 三 问题凸现 四 Hadoop的优化方案 一 前情概要 这篇文章给大家聊聊Hadoop在部署了大规模的集群场景下 大量客户端并发写数
  • K8S安装部署Nacos集群

    1 在k8s中部署的难点 在k8s中部署nacos集群和在裸机器上直接部署nacos机器其实差别不大 最主要的区别是k8s中部署的服务没有固定的ip地址 而nacos集群部署需要配置所有实例的ip 2 解决 在k8s中通过StatefulS
  • day06 Spring AOP

    DI注解 作用 解决使用xml配置繁琐的问题 该注解和使用配置文件一样分成两类进行注入 字段注入或属性注入 注入bean 取代xml中的ref 1 value注解 使用value注解给属性进行赋值 只能使用于八大基本类型和常量类型 Stri
  • Woedpress分类目录绑定二级域名

    实现分类目录和二级域名绑定需要使用 WordPress 的多站点功能 Multisite 以下是一个基本的步骤和示例代码来实现这个功能 代码实现方法 步骤 将 WordPress 安装为多站点模式 在 WordPress 安装目录下的 wp
  • verdi使用linux命令,vcs和verdi的调试及联合仿真案例

    环境配置 首先搭建好vcs和Verdi都能工作的环境 主要有license问题 环境变量的设置 在220实验室的服务器上所有软件的运行环境都是csh 所以 所写的脚本也都是csh的语法 生成波形文件 Testbench的编写 若想用Verd