【芯片设计- RTL 数字逻辑设计入门 2 - vcs 及 verdi 使用介绍】

news2024/11/27 15:53:35

文章目录

    • 1.1 VCS 编译环境
      • 1.1.1 Complie Design
      • 1.1.2 simv 仿真
    • 1.2 VCS 波形生成及查看
      • 1.2.1 verdi 命令介绍
      • 1.2.2 verdi 波形查看

1.1 VCS 编译环境

VCS 全称是 Verilog Compiler Simulator,是 Synopsys 公司的,类似于windows环境下的 questasim 或 modelsim,只不过 vcs 是 linux 环境下的工具。编译之前首先检查编译环境是否准备完善,一般是通过 module list 命令来检查,module 常见的一些指令如下:

module help               # 显示帮助信息
module avail              # 显示已经安装的软件环境
module load               # 导入相应的软件环境
module unload             # 删除相应的软件环境
module list               # 列出已经导入的软件环境
module purge              # 清除所有已经导入的软件环境
module switch [mod1] mod2 # 删除mod1并导入mod2

可以通过 module list 检查是否 load 了 vcsverdi,如果没有,可以通过 module load xxx/xxx 进行加载。
在这里插入图片描述

1.1.1 Complie Design

首先是编译,主要完成语法检查和文件联编,并生成可执行的仿真文件
可直接在 Linux 终端执行,格式如下:

vcs [选项] [文件]

其中选项是可选的,下面给出一些常用选项

  • -full64: 支持64位系统;
  • -l [文件名]: 创建文件,用于记录编译日志;
  • -f [文件名]: 在某文件中索引要编译的文件路径,以及其他编译选项;
  • -o [文件名]: 重命名仿真文件;
  • -debug_acc+all: 支持UCLI调试;
  • +incdir+[目录]: 为`include指定索引目录;
  • +define+[宏]: 宏定义;
  • -notice: 更加冗长的编译信息,便于调试;
  • -timescale=1ns/1ps:时间单位和时间精度;
  • +v2k: 开启verilog 2001架构;
  • -sverilog: 开启systemverilog 架构。

编译完成后生成的文件如下:
在这里插入图片描述

1.1.2 simv 仿真

上图中 文件 simv 就是用于仿真的文件,生成 simv 文件之后就可以使用 DVE 进行仿真了

命令格式

simv [选项]

选项如下
-l [文件]: 仿真日志;
-gui: 开启GUI界面,否则就在 linux 终端显示 transcript 的内容;
-ucli: 在 linux 终端使用 TCL 控制仿真进程;
-i [文件名].tcl: 启动DVE后,在 UCLI 要启动的 TCL 命令;

1.2 VCS 波形生成及查看

VCS 对应的 waveform 工具有 DVEVerdi, DVE 因为是原生的,所以 VCS 对 DVE 非常友好。但 DVE 已经过时了,其对 uvm 等新 feature 支持的不好。

Verdi 是 Debussy 公司的产品,已 Synopsy 收购并, 如果要支持 Verdi,需要设置好 NOVAS_LIB_PATH 的环境变量,并且在命令行中添加 -kdb 的 option,knowledge database(kdb)是VCS支持Verdi时的重要概念。另外,VCS 支持 VPD 和 FSDB 两个格式的 dump wave, fsdb 的文件相对比较小。

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

`ifdef DUMP_FSDB
    initialbegin
        //$fsdbDumpon;		打开波形保存功能
        //$fsdbDumpoff;		关闭波形保存功能
        $fsdbDumpfile("test.fsdb"); // 指定波形文件名为test.fsdb
        $fsdbDumpvars;
    end
`endif

DUMP_FSDB 编译开关在 vcs 编译时加入+define+DUMP_FSDB 选项就可以打开(也可以在 define.v 文件中定义 DUMP_FSDB 这个宏), 生成的 fsdb 文件如上图中 test.fsdb 文件。

1.2.1 verdi 命令介绍

verdi 的命令可直接在 Linux 终端执行,格式如下:

verdi [选项] [文件]

其中选项是可选的,下面给出一些常用选项:

  • -f [文件名]: 在某文件中索引工程包含的文件路径;
  • -top [名称]: 工程名称,后接的是tb文件的 Module 名字;
  • -nologo: 无欢迎界面;
  • -ssf [文件名].fsdb: 指定已有的波形文件。

1.2.2 verdi 波形查看

verid 波形查看命令:

bsub verdi -elab ./simv.daidir/kdb.elab++ -ssf test.fsdb

在这里插入图片描述
关于 bsub 的使用请参考:https://blog.csdn.net/sinat_32960911/article/details/129976200

推荐阅读
http://www.taodudu.cc/news/show-5437615.html
https://download.csdn.net/download/dxydxzsxzg/11216049

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flink sql

1.创建表的执行环境 第一种 StreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); SingleOutputStreamOperator<Event> streamOperator env.addSource(new ClickSource()).assignTimestampsAndWatermarks(W…

深入理解C语言指针

目录 一、指针基础知识 二、野指针 三、指针运算 四、二级指针 五、指针数组与数组指针 六、函数指针与函数指针数组 一、指针基础知识 什么是指针&#xff1f; 指针其实就是个用来存放地址的变量&#xff0c;定义为type *。 指针大小&#xff1f; 32位平台(32个地…

【大数据-调度工具】dolphinscheduler安装和遇到的问题

1.安装 安装步骤按照官网安装即可 官网&#xff1a;DolphinScheduler | 文档中心 (apache.org) 版本&#xff1a;3.1.5 2.踩坑记录 Q1.大文件无法上传 问题描述&#xff1a; 在资源中心中上传文件选择完大文件夹之后&#xff0c;选择确认之后确认按钮转了几圈圈之后就没…

[Element]调整select样式

通过伪元素&#xff0c;实现这个和step长得差不多的样式 <template><el-selectv-model"value"placeholder"请选择提报单位"style"width: 430px"><el-optionv-for"(item, i) in officeList":class"el-option get…

hive的基本操作语句

背景&#xff1a;记录一下hive创建数据库&#xff0c;建表&#xff0c;添加数据&#xff0c;创建分区等的语句吧&#xff0c;省得总百度&#xff0c;&#x1f604; 第一步&#xff1a;hive的建库语句 create database pdata_dynamic;查看是否创建成功了 show databases;显示如…

Jenkins入门教程

一、开始使用 Jenkins 本导读将向您介绍使用 Jenkins、Jenkins 的主要特性和 Jenkins Pipeline 的基本知识。 本导读使用“独立”的 Jenkins 发行版&#xff0c;它可以在您自己本地的机器上运行。 准备工作 第一次使用 Jenkins&#xff0c;您需要&#xff1a; 机器要求&…

从入门到实践:计算机视觉图像分类完全指南

计算机视觉图像分类是计算机视觉领域的一个重要分支&#xff0c;它的目标是让计算机能够识别并分类不同的图像。在本文中&#xff0c;我们将介绍计算机视觉图像分类的基本概念、流程和常用算法。 一、图像分类的基本概念 图像分类是指将输入的图像自动分类到预定义的一组类别中…

量子计算+真实材料模拟!美国埃姆斯国家实验室科学家获得新突破

​ 噪声量子比特ADAPT仿真&#xff08;图片来源&#xff1a;网络&#xff09; 量子计算机的潜在功能远远超出当今的经典计算机&#xff0c;来自美国能源部埃姆斯国家实验室的科学家们展示了一种在材料研究中利用量子计算的新方法&#xff0c;通过模拟材料的自适应算法&#xf…

自参考和对比学习正则化的Few-shot医学图像分割

文章目录 Few-shot Medical Image Segmentation Regularized with Self-reference and Contrastive Learning摘要本文方法Local Prototype-Based SegmentationSelf-reference RegularizationContrastive LearningSuperpixel-Based Self-supervised Learning 实验结果 Few-shot …

分布式搜索引擎2——深入elasticsearch

数据聚合 聚合的分类 聚合(aggregations)可以实现对文档数据的统计、分析、运算。聚合常见的有三类: 桶(Bucket)聚合:用来对文档做分组 TermAggregation:按照文档字段值分组Date Histogram:按照日期阶梯分组&#xff0c;例如一周为一组&#xff0c;或者一月为一组 度量&…

第10章:数据处理增删改

一、插入数据 CREATE TABLE emp1 (id int(11) ,name varchar(15) ,hire_date date ,salary double(10,2) )1.添加一条数据 ①没有指明添加的字段&#xff0c;一定按照顺序添加 insert into emp1 values(1,wang,2000-4-4,5900)②指明添加的字段&#xff08;推荐&#xff09;…

【 图像水印 2019 CVPR】 StegaStamp 论文翻译

【 图像水印 2019 CVPR】 StegaStamp 论文翻译 论文题目&#xff1a;StegaStamp: Invisible Hyperlinks in Physical Photographs 中文题目&#xff1a;物理照片中不可见的超链接 论文链接&#xff1a;https://arxiv.org/abs/1904.05343 论文代码&#xff1a;https://github.co…

QxRibbon 知:openEuler 23.03 搭建 Qt5 开发环境

文章目录 安装 openEuler 23.03 虚拟机安装 GNOME 桌面环境安装 Qt5 开发环境构建 QxRibbon参考资料 安装 openEuler 23.03 虚拟机 VMware 安装 openEuler 23.03 虚拟机 平台&#xff1a;x86_64 虚拟机配置&#xff1a;4核、4G内存、100G磁盘 ISO 镜像&#xff1a;https://mir…

FT2000+ qemu kvm 红旗 crash 分析 频繁设置CPU online导致进程卡死、不调度故障

测试程序 /** tcti.cpp参考&#xff1a; https://www.cnblogs.com/organic/p/17321523.htmlg -stdc11 -lpthread trigger_cgroup_timer_inactive.cpp -o inactive_timer ./inactive_timer 100000 10000 */#include <errno.h> #include <iostream> #include <pt…

Redis进阶(集群,雪崩,击穿,穿透.......)

Redis进阶 Redis事务_事务的概念与ACID特性 Redis的事物不保证原子性 数据库层面事务 在数据库层面&#xff0c;事务是指一组操作&#xff0c;这些操作要么全都被成功执行&#xff0c;要么全都不执行。 数据库事务的四大特性 A&#xff1a;Atomic&#xff0c;原子性&#xf…

Docker笔记5 | 容器的基本操作

5 | 容器的基本操作 1 启动容器1.1 启动方式1.2 新建容器并启动1.3 docker run时的运行过程1.4 启动已终止容器1.5 后台运行1.6 查看容器信息 2 终止容器3 进入容器3.1 docker attach3.2 docker exec 4 导入导出容器4.1 导出容器4.2 导入容器 5 删除容器 1 启动容器 1.1 启动方…

Linux内核主要组成部分有哪些?

Linux 内核由几大子系统构成&#xff0c;分别为进程调度、进程间通信&#xff08;IPC&#xff09; 、内存管理、虚拟 文件系统和网络接口。这几大子系统既相互独立又有非常紧密的关联。图 3-5 展示了内核的 几大子系统之间以及这些子系统和计算机系统的其他模块之间的关系。 接…

ADS-B教学实验方案

ADS-B教学系统是为了让学生学习ADS-B原理、ADS-B系统组成、ADS-B信号处理技术。可以通过ADS-B教学系统进一步研究分析ADS-B位置的精度、准确性、稳定性、实时性&#xff0c;设计基于ADS-B的空中碰撞告警系统&#xff0c;混合空域的空中交通管理系统(UTM)设计。也可以研究ADS-B报…

《花雕学AI》你不知道的AI 机器人:29个让你大开眼界的事实

AI 机器人是人工智能技术的最具代表性的应用之一&#xff0c;它们可以模仿人类的行为和思维&#xff0c;完成各种复杂的任务&#xff0c;如识别图像、语音和文字&#xff0c;进行对话、翻译和推理&#xff0c;控制机械臂、汽车和飞机等。AI 机器人的发展速度令人惊叹&#xff0…

Windows命令提示行使用指南二(批处理)

命令提示行使用指南 前言四、批处理简介五、如何编写批处理1、Hello world2、做加法3、查找文件&#xff0c;并输出到文本。4、批量重命名5、自动记录开机时间 前言 cmd 是 Windows 操作系统中的命令行界面&#xff08;CLI&#xff09;&#xff0c;也称为命令提示符&#xff0…