VCS和Verdi联合仿真使用学习记录

环境:linux

工具:vcs,verdi

最近学习如何在linux环境下使用vcs编译仿真,使用verdi查看波形。VCS 是 Synopsys 开发的一款高性能的 Verilog 和 SystemVerilog 编译仿真工具。它广泛用于数字电路设计和验证,特别是在 ASIC 和 FPGA 设计中。Verdi 是 Synopsys 提供的一款高级调试和可视化工具,主要用于硬件设计的调试和分析。它通常与 VCS 一起使用,以便在仿真过程中提供更好的可视化和调试体验。

vcs和verdi软件环境

由于在linux服务器上支持Environment Modules。他支持安装有不同版本的多种编译器和其他软件。可以按需要加载。

加载LICENSE和EDA工具。

这里直接使用module load加载工具license。

module load license vcs/all_vS-202109SP1 verdi/verdi_vS-202109SP1

加载完成后使用module list查看已经加载工具版本

module list

新建RTL代码

新建RTL文件夹

mkdir rtl

在此文件夹下新建RTL代码(.v文件)

vi test.v

代码如下

// *********************************************************************************/
// Project Name :
// Author       : i_huyi
// Email        : i_huyi@qq.com
// Creat Time   : 2024/9/18 15:39:42
// File Name    : .v
// Module Name  : 
// Called By    :
// Abstract     :
//
// CopyRight(c) 2020, xxx xxx xxx Co., Ltd.. 
// All Rights Reserved
//
// *********************************************************************************/
// Modification History:
// 1. initial
// *********************************************************************************/
// *************************
// MODULE DEFINITION
// *************************
`timescale 1 ns / 1 ps
module test#(
parameter               U_DLY = 1)(
input  wire               clk                  , // (input )
input  wire               rst_n                , // (input ));
//----------------------------------------------
// localparam
//----------------------------------------------//----------------------------------------------
// register
//----------------------------------------------
reg                       clk_div              ; 
//----------------------------------------------
// wire
//----------------------------------------------//----------------------------------------------
// assign
//----------------------------------------------//------------------------------------------------------------
//------------------------------------------------------------
always @ (posedge clk or negedge rst_n)
beginif(rst_n == 1'b0)beginclk_div <= 1'b0;endelse beginclk_div <= ~clk_div;end end
//------------------------------------------------------------
//------------------------------------------------------------//------------------------------------------------------------
//------------------------------------------------------------
endmodule

新建仿真文件vtf_test.v

vi vtf_test.v

代码如下

// *********************************************************************************/
// Project Name :
// Author       : i_huyi
// Email        : i_huyi@qq.com
// Creat Time   : 2024/9/18 15:39:42
// File Name    : .v
// Module Name  : 
// Called By    :
// Abstract     :
//
// CopyRight(c) 2020, xxx xxx xxx Co., Ltd.. 
// All Rights Reserved
//
// *********************************************************************************/
// Modification History:
// 1. initial
// *********************************************************************************/
// *************************
// MODULE DEFINITION
// *************************
`timescale 1 ns / 1 ps
module vtf_test;
//----------------------------------------------
// localparam
//----------------------------------------------//----------------------------------------------
// register
//----------------------------------------------
reg                       clk                  ; 
reg                       rst_n                ; 
//----------------------------------------------
// wire
//----------------------------------------------//----------------------------------------------
// assign
//----------------------------------------------//------------------------------------------------------------
//------------------------------------------------------------
test u_test(.clk                          (clk                          ), // (input ) (input ).rst_n                        (rst_n                        )// (input ) (input
);
//------------------------------------------------------------
//------------------------------------------------------------
initial
beginclk     =0;rst_n   =0;#100;rst_n   =1;#1000;$finish(0);
end//此代码生产fsdb文件为verdi读取波形
initial
begin$fsdbDumpfile("tb.fsdb");$fsdbDumpvars(0);
endalways #5 clk = ~clk;
//------------------------------------------------------------
//------------------------------------------------------------
endmodule

保存后文件如下

使用filelist文件保存

新建sim文件夹

mkdir sim

在sim文件中使用filelist,将我们要进行编译仿真的.v文件放在一起。

使用命令找到当前文件夹下的所有.v文件编辑成一个.f的文件清单(filelist)。

find -name “*.v” > filelist.f

由于我们存放.v的文件在上一层目录

这里写为

find ../rtl -name “*.v” > filelist.f

使用vcs编译文件使用verdi查看波形

这里介绍一下VCS主要指令

指令

介绍

-sverilog

用VCS编译,支持SystemVerilog

-full64

这是你安装的VCS版本,如果是64位需要此指令,否则会错

-R

表示编译完成之后直接运行可执行文件,如果缺少此指令,编译完成后VCS就会退出,如果你要生成fsdb波形文件的话就需要这个指令,否则生成不了这个文件。

-debug_all

表示调用UCLI和DVE,并为进一步调试DVE建立所需要的文档,继续用VCS看波形用此命令

-debug_access

这个命令是要生成fsdb波形,后面用Verdi看波形就要用到它了

–gui

调用 VCS 的图形界面

在上述的tb文件中,为了使得编译后生成.fsdb波形文件。需要在testbench中加入如下命令

initialbegin$fsdbDumpfile(“tb.fsdb”);$fsdbDumpvars(0);end

第一步使用vcs编译文件

说明一下,我这里使用的服务器,所以在所有的操作命令前面都增加了

bsub -Is xxx(操作指令)

使用vcs编译文件指令

bsub -Is vcs -f filelist.f -timescale=1ns/1ns -full64 -R +vc +v2k -sverilog -debug_access+all | tee vcs.log

执行完成后可以看到生成了tb.fsdb和vcs.log文件。

使用verdi查看波形

bsub -Is verdi -sv -f filelist.f -ssf tb.fsdb

等待一段时间后打开了verdi软件

这里的二分频电路仿真波形已经出现

新建makefile文件

这里我们新建makefile将上述复杂的操作写入makefile中,来简化上述的过程。

vi Makefile

内容如下

all:vcsverdi
#---------------------------------------
#vcs
vcs:bsub -Is vcs -f filelist.f -timescale=1ns/1ns -full64 -R +vc +v2k -sverilog -debug_access+all | tee vcs.log
#---------------------------------------
#verdi
verdi:bsub -Is verdi -sv -f filelist.f -ssf tb.fsdb
#---------------------------------------
#clean
clean:rm -rf *~ core csrc simv* vc_hdrs.h ucli.key urg* *.log novas.* *.fsdb* verdiLog 64* DVEfiles *.vpdrm -rf INCA_libs irun*rm -rf modelsim.ini transcript work

:

接下来就可以使用make命令来进行仿真了

启用vcs编译

bsub -Is make vcs

启用verdi查看波形

bsub -Is make verdi

清除生成的一些列文件

bsub -Is make clean

清除前

清除后

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

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

相关文章

javascript-代码执行原理

js 是解释型语言 js 引擎执行流程 分为两个阶段: 语法分析执行阶段执行阶段涉及的数据结构: 调用栈。处理执行上下文和执行代码内存堆。给对象分配内存任务队列。暂存待执行的任务,分为宏任务队列和微任务队列语法分析 词法分析 > 语法分析 > 代码生成(字节码) …

C++map,set,multiset,multimap详细介绍

目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set set的介绍 set的使用 1. set的模板参数列表 2. set的构造 3. set的迭代器 4. set的容量 5. set的修改操作 6. set的使用举例 ​3.2 map map的介绍 map的使用 1. map的模板参数声明 2. map的构造 …

【数学分析笔记】第3章第2节 连续函数(4)

3. 函数极限与连续函数 3.2 连续函数 3.2.9 反函数的连续性定理 【定理3.2.2】【反函数连续性定理】设 y f ( x ) yf(x) yf(x)在闭区间 [ a , b ] [a,b] [a,b]上连续且严格单调增加&#xff0c;设 f ( a ) α , f ( b ) β f(a)\alpha,f(b)\beta f(a)α,f(b)β&#xff0…

iPhone 16系列:摄影艺术的全新演绎,探索影像新境界

在科技的浪潮中&#xff0c;智能手机摄影功能的进化从未停歇。 苹果公司即将推出的iPhone 16系列&#xff0c;以其卓越的相机升级和创新特性&#xff0c;再次站在了手机摄影的前沿。 从硬件到软件&#xff0c;从拍照体验到图像处理&#xff0c;iPhone 16系列都展现了其在移动…

通信工程学习:什么是PON无源光网络

PON&#xff1a;无源光网络 PON&#xff08;Passive Optical Network&#xff0c;无源光纤网络&#xff09;是一种采用光分路器等无源光器件进行信号传输和分配的光纤接入技术。它利用光纤作为传输媒介&#xff0c;通过无源设备将光信号从中心局&#xff08;如光线路终端OLT&am…

工号不够用了怎么办? - 华为OD统一考试(E卷)

2024华为OD机试&#xff08;E卷D卷&#xff09;最新题库【超值优惠】Java/Python/C合集 题目描述 3020年&#xff0c;空间通信集团的员工人数数量突破20亿&#xff0c;现有工号系统不够用的窘境。 现在&#xff0c;请你负责调研新工号系统。继承历史传统&#xff0c;新工号系…

瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商

本文适用于触觉智能所有Linux系统的开发板、主板添加自启动命令的方法&#xff0c;本次使用了触觉智能的EVB3588开发板演示&#xff0c;搭载了瑞芯微RK3588旗舰芯片。 该开发板为核心板加底板设计&#xff0c;为工业场景设计研发的模块化产品&#xff0c;10年以上稳定供货,帮助…

Selenium实现滑动滑块验证码验证!

背景&#xff1a;在部分的登录中有滑动验证码的验证&#xff0c;由于滑动验证码的缺块是随机的就导致实现起来比较困难&#xff01; 01、实现方案 模板匹配 通过openCV分析两个图片的相似度&#xff0c;获取两个相似度很高图片的坐标&#xff0c;从而计算两个图片的距离。 轮…

医学数据分析实训 项目九 糖尿病风险预测

文章目录 综合实践二 糖尿病遗传风险预测一、分析目标二、实现步骤三、数据准备四、特征工程五、模型构建六、性能度量七、提交要求 综合实践任务二 糖尿病遗传风险预测代码&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;特征工程&#xff08;三&#xff09;模…

云原生(Cloud Native)简介及相关技术

云原生&#xff08;Cloud Native&#xff09;简介及相关技术 什么是云原生&#xff1f; 云原生&#xff08;Cloud Native&#xff09;是一种设计和开发应用程序的方法&#xff0c;旨在充分利用云计算的弹性、可扩展性和分布式架构优势。通过采用微服务架构、容器化、持续集成…

vscode软件在 C发中常用插件

一. 简介 本文简单介绍一下&#xff0c;当做 C开发时 vscode软件常用的插件。 vscode软件是 微软公司目前提供的一款免费的开发软件&#xff0c;可以通过 vscode官网下载 vscode。 二. vscode软件在 C开发中常用插件 注意&#xff1a;vscode软件安装后&#xff0c;可以直接…

【Canvas与诗词】《登科后》唐.孟郊

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>昔日龌龊不足夸</title><style type"text/css"&g…

算法知识点———并查集

并查集是一种用于管理元素所属集合的数据结构&#xff0c;实现为一个森林&#xff0c;其中每棵树表示一个集合&#xff0c;树中的节点表示对应集合中的元素。并查集支持两种操作&#xff1a; 合并&#xff08;Union&#xff09;&#xff1a;合并两个元素所属集合&#xff08;合…

OpenAI o1碎片化过程中探索与利用的泛化

在上一篇《OpenAI o1&#xff1a;隐含在训练与推理间的动态泛化与流形分布》笔记里尝试剖析OpenAI o1内部机理的过程中我们将目光聚焦在了「模型从训练到推理两个阶段的动态渐进与平衡」之上&#xff0c;并将其等价于对long reasoning chain&#xff08;长程推理链&步骤&am…

【重学 MySQL】三十四、加密与解密函数

【重学 MySQL】三十四、加密与解密函数 在 MySQL 中&#xff0c;加密与解密函数是保护数据安全的重要手段&#xff0c;它们允许开发者在存储和传输敏感数据时保持数据的保密性。 函数名描述返回值类型备注AES_ENCRYPT(str, key_str)使用 AES 算法加密字符串BLOB返回加密后的二…

梯度的定义是什么?一阶梯度、二阶梯度对应的优化器是什么?

梯度 梯度的定义一阶梯度、二阶梯度对应的优化器 梯度的定义 梯度的定义主要出现在多元函数的微分学中&#xff0c;是一个向量场&#xff0c;表示某一函数在该点处的方向导数沿着该方向取得最大值&#xff0c;即函数在该点处沿着该方向&#xff08;此梯度的方向&#xff09;变…

好用的网页翻译插件

软件介绍 「火山翻译&#xff0c;开箱即用免配置&#xff0c;完全免费无广告&#xff0c;开发的多语言翻译插件&#xff0c;基本涵盖众多小语种及国际通用语言的翻译&#xff0c;支持网页一键翻译、划词翻译、英语词典、生词本、吐司弹词记忆等丰富能力。 下载方式 请看文章…

Red Hat 和 Debian Linux 对比

原图的作者(https://bbs.deepin.org/post/209759) Red Hat Enterprise Linux https://www.redhat.com/ CentOS Linux https://www.centos.org/ Fedora Linux https://fedoraproject.org/ Debian https://www.debian.org/ Ubuntu https://cn.ubuntu.com/ https://ubuntu.c…

Python “字符串操作” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业

本文主要是作为Python中列表的一些题目&#xff0c;方便学习完Python的元组之后进行一些知识检验&#xff0c;感兴趣的小伙伴可以试一试&#xff0c;含选择题、判断题、实战题、填空题&#xff0c;答案在第五章。 在做题之前可以先学习或者温习一下Python的列表&#xff0c;推荐…

[数据集][目标检测]文本表格检测数据集VOC+YOLO格式6688张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6688 标注数量(xml文件个数)&#xff1a;6688 标注数量(txt文件个数)&#xff1a;6688 标注…