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

逻辑仿真工具VCS的使用-Makefile

        Gvim写RTL code,VCS仿真,Verdi看波形,DC做综合下约束,Primetime做STA,Spyglass做异步时序分析。 
         VCS全称Verilog Computer Simulation ,VCS是逻辑仿真EDA工具的编译源代码的命令。要用VCS做编译仿真,首先得有一个RTL代码,比如我们写了一个全加器和全加器的testbench,总共两个.v文件 。

有了RTL文件后,如何调用VCS进行编译呢? 在.v文件所在的目录下打开terminal,键入:

        vcs -sverilog -debug_all full_adder.v full_adder_tb.v -l com.log
上面有很多细节,一个一个讲:

        -sverilog:编译命令选项,识别SystemVerilog语法,如果代码中有SV语法,则编译的时候必须加这个选项。

        -debug_all:编译命令选项,可以将debug的信息全部保存下来,比如波形文件。

        -l com.log:编译命令选项,将编译过程生成的日志写入com.log文件。

        执行完上面这条代码后,如果编译没有报错,一切正确,那么在当前文件夹就会生成一个simv文件,这个文件就是仿真文件,我们跑仿真就用这个文件,注意是simv不是sim。

        当然除了写命令调用VCS,也可以用命令:dve & ,启动逻辑仿真工具VCS自带的一个图形化界面dve。命令中的& 表示后台运行dve命令,不占用当前的 terminal。 

        图形化界面如果想要跑仿真,点击simulate的setup选项,然后选中编译过后的仿真文件simv文件,就可以进行跑仿真了。

把需要看波形的信号点击,Add to wave,然后就会打开一个波形窗口。

生成的波形窗口如下,在底层的输入命名行输入:run,就会开始跑仿真了。

 输入run之后,开始仿真就可以看波形了。 

按f键,显示所有波形,下面的log窗口就是显示仿真的日志。

        上面讲的操作是用界面化的DVE窗口去操作的,实际上我们都使用脚本命令的方法去操作,写命令行编译、写命令行仿真、写命令行看波形。

        看波形命令为:dve -vpd vcdplus.vpd & ,想要看波形,我们需要在tb文件里面输出波形文件才行,在tb中展示为:

                                        initial begin

                                            $vcdpluson;

                                        end 

输出波形文件后就可以用脚本命令调用dve看波形了。

综上,我们用VCS进行编译、仿真、看波形的脚本命令分别为:

        编译源代码:vcs -sverilog -debug_all full_adder.v full_adder_tb.v -l com.log

        跑仿真:./simv -l sim.log

        看波形:dve -vpd vcdplus.vpd &

        但事实上,如果每次编译仿真看波形,都要用手去打这些字符的话,会很累,能不能用什么脚本命令,让我们能够键入很少的字符,就可以进行编译仿真看波形,甚至一条龙服务呢?有,Makefile。

        我们用Gvim新建一个文本文件,命名为Makefile,然后如图所示写命令,写命令的方式就是,写一个随便什么关键字,然后+冒号+回车,再键入你设置关键字绑定的脚本命令。比如我们上面写的com,是用来编译的用户自定义关键字,下一行就紧跟着我们定义关键字所代表的代码。注意一个细节,怎么判断我们写的脚本是否被自定义挂件字链接了呢?看颜色,如果没有连接上的话,颜色是普通的黑色,如下图:

这就代表没链接上,通常是由于缩进问题导致的,这点需要注意。

        还有一个细节,细心的人会发现,我们编译的时候,没有把文件的名字写到com脚本连接的命令里,而是写 -f rtl.list。这是什么意思呢,这里的rtl.list用来存放我们rtl 代码的名字,用这种方式更方便,后续修改rtl代码名称也好,增减也好都好修改,我们只需要把所有rtl代码的名字都存放到rtl.list中,生成rtl.list的命令也很简单,只要检索当前目录下所有以.v结尾的文件的文件名,然后存入rtl.list就行了,linux命令:find -name "*.v" > rtl.list

        对于某个信号,还有一些好用的快捷键可以实用比如圈出来的三个按键 

         它们分别是:Trace Drivers (Ctrl + D)追踪它的驱动、Trace Value Change ( Ctrl + Shift + D) 追踪代码中数值改变的位置、Trace Loads (Ctrl + Loads)追踪它的负载。 

 

 选择要追踪的边沿或者数值,可以直接追踪。 

        在上面已经提到过Makefile 脚本的书写格式,就是写一个关键字加冒号,然后回车输入一行命令,输入完后,以后要运行这行命令就不用全部打全了,只需要在terminal界面,输入make 关键字就行了。

        比如,我们已经在当前文件夹下写好了上面所示的Makefile脚本文件,然后我们也写好了rtl代码,并在terminal 中输入:find -name "*.v" >rtl.list,把.v文件的相对路径都放到了rtl.list中。这时候如果要编译,我们只需要在terminal界面输入:make com 回车

        系统会自动帮我们打出com关键字所链接的命令行,如图所示: 

Makefile 脚本命令解释:


        vcs表示调用vcs软件,-sverilog 表示编译所用的规范,如果我们写的代码里有systemverilog就一定要有这个选项,-debug_all 完全调试模式, -timescale = 1ns/1ps 这个在编译的时候就写,那么在tb里面就不用写了,表示最小仿真时间是1ns,最小仿真精度是1ps。-f rtl.list意思是吧rtl.list里的所有文件都编译进去, -l com.log 意思是把编译产生的编译文件保存在com.log文件中。

        ./simv 表示运行当前文件夹下的simv文件,这个文件在com命令过后会生成,也就是编译结束后会生成。-l sim.log,意思是把仿真产生的仿真信息都存储在sim.log文本文件中。 

        把以后缀“.vpd”、“.log”、“.key”、“.vdb”的文件删掉,把csrc文件删掉,把sim开头的文件删掉,把DVEfiles文件删掉。删掉运行verdi软件产生的一些附属文件。

        这里写的是设计的一些VCS操作,实际上如果是做验证的话,还会有更多的一些操作,比如收覆盖率,仿真给随机种子等。

相关文章:

逻辑仿真工具VCS的使用-Makefile

Gvim写RTL code,VCS仿真,Verdi看波形,DC做综合下约束,Primetime做STA,Spyglass做异步时序分析。 VCS全称Verilog Computer Simulation ,VCS是逻辑仿真EDA工具的编译源代码的命令。要用VCS做编译仿…...

信息系统安全技术

一、信息安全的有关概念 1. 属性2. 四个安全层次※3. 信息安全保护等级※4. 安全保护能力的等级※ 二、信息加密、解密与常用算法 1. 对称加密2. 非对称加密3. Hash函数4. 数字签名5. 认证 三、信息系统安全 1. 计算机设备安全2. 网络安全3. 操作系统安全4. 数据库安全5. 应用系…...

【数据结构】最小生成树(Prim算法,普里姆算法,普利姆)、最短路径(Dijkstra算法,迪杰斯特拉算法,单源最短路径)

文章目录前置问题问题解答一、基础概念:最小生成树的定义和性质(1)最小生成树(Minimal Spanning Tree)的定义(2)最小生成树(MST)的性质二、如何利用MST性质寻找最小生成树…...

Session与Cookie的区别(一)

从我刚开始学程序时这一题就常出现在面试考题里,一直到现在都还是能看见这个问题。 这个问题重要吗?我觉得蛮重要的。因为 Session 所代表的是「状态」,如果没有了状态,一大堆功能都会失效。 对于工程师来说必须去理解什么是 Sess…...

【Java】重载和重写的区别

重载(Overload) 在同一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同…...

AcWing 第 90 场周赛

目录A、首字母大写B、找数字C、构造字符串A、首字母大写 原题链接&#xff1a;AcWing 4806. 首字母大写 签到题。 #include <bits/stdc.h>using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);string s;cin >> s;s[0] toupper(s[0]);…...

刚刚,体验了一把Bing chat很爽

文章目录刚刚&#xff0c;体验了一把Bing chat很爽你能做啥&#xff1f;与chatgpt有什么不同&#xff1f;以下是Bingchat的 10个新功能1⃣️在网上搜索结果2⃣️摘要链接3⃣️对话助手4⃣️向您发送实际信息&#xff0c;正确的链接5⃣️在单个查询中执行多个搜索6⃣️玩冒险游戏…...

牛客网Python篇数据分析习题(二)

1.现有一个Nowcoder.csv文件&#xff0c;它记录了牛客网的部分用户数据&#xff0c;包含如下字段&#xff08;字段与字段之间以逗号间隔&#xff09;&#xff1a; Nowcoder_ID&#xff1a;用户ID Level&#xff1a;等级 Achievement_value&#xff1a;成就值 Num_of_exercise&a…...

如何用Python打包好exe文件,并替换图标

前言 Python打包&#xff1f;打包exe文件&#xff1f;怎么操作&#xff1f; ok&#xff0c;今天我来分享分享&#xff0c;教你们如何打包号文件&#xff0c;顺便还来展示一下&#xff0c;如何替换好图标 首先把你的代码准备好&#xff0c;尽量不要中文路径&#xff0c;容易报…...

NFC概述摘要

同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 原理来说,NFC和Wi-Fi类似,利用无线射频技术来实现设备间通信。NFC的工作频率为13.5…...

Python-项目实战--贪吃蛇小游戏(1)

1.贪吃蛇游戏规则贪吃蛇游戏规则如下:1.1开始和结束贪吃蛇初始出现在游戏窗口的左上角位置,体长共有3节游戏过程中&#xff0c;一旦蛇头撞到了窗口的边缘或者身体的其他部位,游戏结束游戏过程中&#xff0c;点击游戏窗口的关闭按钮&#xff0c;或者按下ESC键可以直接退出游戏一…...

vscode sftp从linux服务器下载文件至本地:No such file or dictionary【已解决】

在服务器跑完程序需要下载数据的时候报错&#xff1a; [warn] ENOENT: no such file or directory, open /home/LIST_2080Ti/.ssh/config load /home/LIST_2080Ti/.ssh/config failed 完整报错内容如下&#xff1a; [02-10 08:38:47] [info] config at /home/LIST_2080Ti {&q…...

详解指针(2)(初阶版)

前言&#xff1a;内容包括&#xff1a;指针运算&#xff0c;指针和数组&#xff0c;二级指针&#xff0c;指针数组 详解指针&#xff08;1&#xff09;&#xff08;点击即跳转&#xff09; part 1&#xff1a;指针运算 1 指针-整数 以如下代码为例&#xff1a;初始化数组内容…...

超详细讲解字符串查找函数(保姆级教程!!!)

超详细讲解字符串查找函数&#xff08;保姆级教程&#xff01;&#xff01;&#xff01;&#xff09;字符串查找函数strstr函数strstr函数的使用strstr函数的模拟实现strtok函数strtok函数的使用strtok函数的模拟实现strpbrk函数strpbrk函数的使用strpbrk函数的模拟实现strcspn…...

LeetCode-1138. 字母板上的路径【哈希表,字符串】

LeetCode-1138. 字母板上的路径【哈希表&#xff0c;字符串】题目描述&#xff1a;解题思路一&#xff1a;首先考虑坐标位置&#xff0c;字符是有序的从0开始&#xff0c;当前字符c的行为(c-a)/5,列为(c-a)%5。其次是考虑特殊情况z。若当前从‘z’开始则只能往上走;若是其他字符…...

Vue 可配置化的路由缓存(Vu2 Vue3)

Vue 可配置化的路由缓存&#xff08;Vu2 & Vue3&#xff09; 1 介绍 在Vue的项目当中&#xff0c;路由缓存是一个比较常见的功能&#xff0c;譬如&#xff0c;从列表页面进入到详情页面&#xff0c;返回到列表页面时&#xff0c;如果可以保持列表的状态&#xff0c;那用户…...

Linux VPU驱动

1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. 概述 VPU 是用来进行图像、视频数据进行硬件编、解码的硬件模块。内部集成了 Encoder、Decoder 功能部件进行图像、视频数据进行硬件编、解码&a…...

spring 笔记

一、spring概述 1.1 spring介绍 spring是一个轻量级的控制反转和面向切面的容器框架&#xff0c;用来解决企业项目开发的复杂度问题---解耦 轻量级&#xff1a;体积小&#xff0c;对代码没有侵入性控制反转&#xff1a;IOC inverse of control&#xff0c; 把创建对象的工作交…...

Java日志框架学习

首先&#xff0c;Java日志框架可以分为两类&#xff1a;门面型日志框架和记录型日志框架。 门面型日志框架 JCL&#xff1a;Java日志接口&#xff0c;后更名为Commons LoggingSLF4J&#xff1a;是一套简易Java日志门面&#xff0c;本身并无日志的实现 记录型日志框架 JUL&a…...

基础面试题:堆和栈的区别

面试题&#xff1a;堆和栈的区别&#xff08;往往讲的是内存zha&#xff09; 为什么说访问栈栈比访问堆快些&#xff1f; 目录 一、数据结构中的堆栈 1、数据结构中的堆 1&#xff09;堆的定义 2&#xff09;堆的效率 2、 数据结构中的栈 二、内存中的堆栈 1、内存堆的定义…...

线性调频等离子鞘套目标雷达探测平台【附代码】

✨ 长期致力于等离子鞘套、脉内多普勒频率、干扰目标抑制、FPGA研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;等离子鞘套回波建模与脉内多普勒参数提…...

【仅开放72小时】:Gemini Workspace与Microsoft Entra ID双向同步的密钥轮换脚本(含自动审计日志生成器)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini Workspace整合方案概述 Gemini Workspace 是 Google 推出的面向企业级 AI 协作的统一平台&#xff0c;其核心价值在于将 Gemini 模型能力深度嵌入办公套件&#xff08;如 Gmail、Drive、Docs、M…...

黄仁勋CMU演讲:取代你的是会AI的人,所有人同一起跑线,奔跑吧

老黄又当博士了。这是他的第7个荣誉博士学位&#xff0c;而且英特尔CEO陈立武亲自为其授袍。卡内基梅隆大学&#xff08;CMU&#xff09;最新一届毕业典礼上&#xff0c;黄仁勋向5800多名毕业生发表演讲。面对AI浪潮的冲击&#xff0c;所有人都在焦虑、都在担心会不会被AI取代&…...

新手入门教程使用curl命令直连Taotoken测试大模型聊天补全接口

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 新手入门教程&#xff1a;使用curl命令直连Taotoken测试大模型聊天补全接口 本文面向刚接触API调用的开发者&#xff0c;旨在指导如…...

第六届机械制造与智能控制国际学术会议(ICMMIC 2026)

第六届机械制造与智能控制国际学术会议&#xff08;ICMMIC 2026&#xff09;将于2026年6月12-14日在中国浙江湖州隆重举行。本次会议旨在汇聚全球“机械制造、智能控制”领域的学者、专家、研发者和技术人员&#xff0c;共同探讨学术前沿&#xff0c;分享科研成果&#xff0c;促…...

3PEAK思瑞浦 TPA2644-SO2R-S SOP14 运算放大器

特性 供电电压:3V至36V 偏移电压:3mV(最大值)差分输入电压范围至电源轨&#xff0c;可作为比较器工作 带宽:1.5MHz&#xff0c;斜率:0.5V/us输入轨至-Vs&#xff0c;无内部ESD二极管至Vs 低1/f噪声:在10Hz时为50nV/Hz 高PSRR:100kHz时60dB 开机和关机电流期间无明显输出抖动 工…...

【独家首发】Sora 2正式版未公开能力清单:原生支持3D空间锚点+时间轴语义编辑+版权水印嵌入(附OpenAI内部文档节选)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora 2正式版核心能力全景概览 多模态时序理解与生成一体化 Sora 2正式版突破性地将文本、图像、音频及物理运动参数统一编码至共享时空潜空间&#xff0c;支持长达120秒、1080p分辨率的连贯视频生成。…...

全国跨省搬家专业靠谱无套路排行 跨省搬家公司选哪个物流平台便宜省心?哪个搬家公司专业安全保障,没有半路加价?

用户最担心的“半路加价”问题&#xff0c;几乎所有“搬家公司/搬家平台”每天都发生各样“半路加价”问题。本文根据各大社交平台用户避雷贴&#xff0c;统计出搬家公司/搬家平台专业靠谱无套路程度前5名&#xff0c;方便广大需要跨省搬家的用户&#xff0c;接近跨省搬家公司选…...

保姆级教程:用Intel官方工具搞定Realsense D435深度不准和黑点问题

深度视觉优化实战&#xff1a;Intel RealSense D435深度校准全流程解析 刚拆封的RealSense D435摄像头在深度模式下出现零星黑点&#xff1f;深度图某些区域数值明显失真&#xff1f;这些问题往往不是硬件缺陷&#xff0c;而是出厂校准参数与实际使用环境不匹配导致的。作为计算…...

Windows下Python包管理权限踩坑实录:从WinError 5到WinError 32的完整解决流程

Windows下Python包管理权限问题深度解析&#xff1a;从WinError 5到WinError 32的实战指南 作为一名长期在Windows平台进行Python开发的工程师&#xff0c;我深刻理解文件权限问题带来的困扰。特别是当你在紧急项目交付前夜&#xff0c;突然遭遇PermissionError: [WinError 5]或…...