VCS基本选项命令介绍

2023-11-04

一:如何执行(编译执行)

  1:编译链接生成二进制可执行文件

  $vcs source_file[compile_time_options],  例如 vcs +v2k filename.v -debug_all   (+2k指2001版本)

    compile_time_options 可选项

          A:基本可选项

         -Mupdate     :增量编译,再次编译时只编译改变的文件,提高速率

     -R                :run after compilation,编译后继续执行run

       -gui             :打开DVE图形界面

       -l<filename>:set log file name,用于写编译信息,大型项目中经常使用,如 -l compile.log

    -sverilog      :支持system verilog

      +v2k    :支持verilog2001的标准

      B:工艺库可选项

      -v lib_file  :lib_file(工艺库名字) RTL代码里涉及到工艺库

   -y lib_dir   :告诉vcs到哪里找这个工艺库

     +libext+lib_ext:当用到很多库,代替-v

     +incdir+inc_dir:代码里如果有include,使用这个命令告诉vcs包含文件的位置。verilog代码里面写`include "filename.vh"

        C: 文件可选项

   -f file               :当有很多源代码时,将这些源代码整合到file里

    D:修改可执行文件名字

          -o foo     :可执行文件名为simv,使用此命令改名字;      如 -o my_simv

    F:define 一个宏

    +define +<macro_name>=<value> :macro_name 宏名;value 初始化值;    如+define+INCR_COUNTER

 2:执行

   $simv[run_tiime_options]

      例如   ./sim -gui &(./指在当前文件,sim指编译得到的可执行文件,gui指打开vcs的gui界面-dve,&指后台执行)将会得到执行的PID值

      -s   结束仿真时间

      $plusargs() 动态接收参数

      -E echo     

      -l logfile   把仿真信息写入logfile文件里

二:基本知识

1:  verilog compiled simulator;包含PLI 1.0/VPI接口(调用c++/c的程序);

2:  支持多抽象层仿真 

    行为级描述(验证,不可综合) - RTL级描述(设计,寄存器传输级) - Gate-level(门级,RTL级经过综合得到,与具体工艺              库相关,TSMC,SMIC,CSMC)

三:vcs debug

  三种debug方法:system task calls,VCS UCLI,VCS DVE(GUI)

  考虑因素:速度,信号可见性,信号。。可用性

1:  system task calls

    $display 打印变量赋值前值

    $montor 打印变量赋值后值,变量值改变,打印值也变

    $time  仿真时间

    $readmemb  将文件里的内容读入存储器中,读二进制binary

    $readmemh 将文件里的内容读入存储器中,读十六进制hexadmecimal

2:  VCS UCLI命令行  效果不好   $vcs filename +v2k -ucli -R

3:  DVE

    根据此笔记的一打开DVE软件,DVE支持交互式仿真(在终端输入命令),支持后仿分析

          tips1:task里面的参数在波形上显示不出来,所以最好使用display显示出来

     tips2:debug 

      f10 单步执行(括号加外箭头),f11单步且进入函数体执行(括号加内箭头);每次单步仿真结束需点下箭头重新仿真方可再次仿真

          tips3:波形知识点 

                  F键:波形自动,全屏

     group:将多个信号组成一组

     set radix:波形的不同显示形式,十进制,二进制....状态机显示状态为set radix - state name

     找波形里面具体数字有没有出现:右上角空-value-数字-前后点,可发现有没有这个数字

     compare:选中比较的两个图形-signal-compare-name输入-creat-close

     构造bus:选中信号-set bus-观察bus后的总线波形

    tips4:DPI  (在verilog里调用c语言的代码)

                第一步:写一个c文件,c文件要求:#include“svdpi.h“

                

 

    第二步:在verilog源文件里添加调用c代码的语句

           

    第三步:在终端执行编译命令时,添加c代码文件以及sverilog命令

    

    第四步:终端执行 ./simv

    显示hello,verilog

四:post-processing with VCD+ files

   VCD(verilog change dump)是VCS的早期波形文件,VCD+是VCD压缩文件;大的项目波形文件很占内存与影响速度,所以产生了VCD波形文件,记录寄存器的值,层次等;将一些系统函数(例如$vcdpluson)嵌入到源代码中,编译仿真产生VCD文件(后缀名为vdp),打开DVE,参考log文档与波形文件,快速解决bug。

1:什么时候使用VCD+

  当debug一个成熟的设计时,当仿真分析需要多名设计人员参与时,当仿真采用script(如makefile)时

2:VCD+的系统函数

  $vcdpluson(level_number,module_instance)从module这个模块开始,记录number-1层

      level_number:  0-记录特定模块的所有层次模块

              1-记录特定模块的顶层模块

              n-记录特定模块向内的n个模块

      module_instance:以此模块为基准

  $vcdplusoff(module_instance) 关闭

3:VCD+的编译执行

  compiling:  vcs files vcdplus_switches other_switches

        files: sources files

        vcdplus_switches: 更改vcd文件名,否则在simulator后默认生成vcdplus.vpd文件。+vpdfile

                 +vdpfilename.vpd

        other wsitches: vcs的其他开关选项;

        还有debug选项开关选项:-debug,-debug_all, debug_pp

  simulate:  ./simv

  打开DVE,打开vcd文件:dve -vpd vcdplus.vpd。  或者dve &—>file—>open database—>vcdplus.vpd

4:在源代码如何添加系统函数

   `ifdef dumpme

    $vcdpluson();

   `endif

  通过是否定义dumpme(一般在脚本的complier里定义宏)+define+dumpme

5:$test$plusargs  键盘动态接收参数

6 :  在已有makefile文件的基础上,使用VCD文件的步骤

  make clean -> make com -> make sim -> dve &(或者dve -dvp vcdplus.vpd) -> 查看波形,可双击波形上的某个数值进入源代码 - >debug   

7:readmemb:将文件里的内容存在数组里。一般在VCD文件里没有数组的波形,可使用$vcdplusmemon将数组导入。

8:$display

   $display("hello verilog  ",`__FILE__,`__LINE__);  //打出具体文件具体行的hello verilog,两个下划线

   //打出的hello,verilog为红色字体

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

VCS基本选项命令介绍 的相关文章

  • 编译语言的编译和脚本语言的解释

    编译语言的编译和脚本语言的解释 编译语言和脚本语言 这个博主看了几篇帖子 觉得Jonny工作室的这篇文章解释的最简单明了 联想之间之前写的程序 大胆给一点自己的看法 如有不对还望指正 编译语言 脚本语言 c c python 题目出现编译语
  • 理解make update-api命令

    一 使用场景 增加系统API 修改 hide的API 修改公共API 存在以上修改后 都需要先执行make update api 然后再make 二 缘起 1 在以上使用场景下 编译系统源码都会出现如下提示 see build core a
  • Unity Shader:Waveform波形(2)-基本波形:正弦,三角,锯齿,直角以及其变种的实现方式

    概述 在Shader中 波形可以作为一种模拟动态的手段 例如颜色的波动 形状的波动 可以基于此创作出各种效果 下文介绍几种基本波形以及变种的Shader实现代码 并配以函数图像和简单动画效果图 在效果图中 Shader代码计算出y值 在顶点
  • 了解LLVM、Clang编译过程

    LLVM 是一个自由软件项目 它是一种编译器基础设施 以 C 写成 包含一系列模块化的编译器组件和工具链 用来开发编译器前端和后端 它是为了任意一种编程语言而写成的程序 利用虚拟技术创造出编译时期 链接时期 运行时期以及 闲置时期 的最优化
  • autoscan、aclocal、automake和autoconf区别【转】

    转自 https blog csdn net renhui1112 article details 96480535 autoscan 扫描源代码以搜寻普通的可移植性问题 比如检查编译器 库 头文件等 生成文件configure scan
  • Verdi/Coverage tool 学习 第1节(入门篇)

    目录 1 Verdi Coverage 工具概述 2 VCS使用实例 3 VCS中的覆盖率分析 3 1 覆盖率类型 3 2 Coverage Database的产生 3 3 其他的vcs编译和仿真中的选项 3 4 有时需要Merge 多个C
  • 仿真4. 仿真平台架构设计

    背景 1 业务背景 我司对仿真系统的需求日渐增加 比如道路交通的仿真 船舶港口仿真 车联网 ad hoc 仿真 以及运营商承载网的仿真等 2 回顾 什么是仿真时钟 用于描述仿真时间的变化 在连续系统中 仿真时间的变化基于仿真时钟步长的确定
  • 使用msys2 mingw64编译gcc

    我们在msys2中使用pacman安装的GCC默认是不能显示中文帮助的 而Linux下是可以显示中文的 这是因为在编译msys2 Mingw在编译GCC时 是没有打开 enable nls开关的 为了让其可以显示中文 可以尝试自己编译GCC
  • 编译busybox报错:scripts/Makefile.build:192: recipe for target 'loginutils/passwd.o' failed

    ubuntu18 04上编译busybox 提示上图中的错误 如何解决 修改busybox中的源码 include libbb h 中 增加一行 include
  • LLVM-Clang编译器安装和使用

    LLVM不仅仅是一个编译器 同时提供了模块化的功能和库 用于编译器的开发和功能扩展 常规的一个编译器分为前端 优化器和后端 LLVM编译器也不例外 Clang就是属于一个编译器的前端部分 LLVM属于优化器和后端 当然LLVM也可以支持其他
  • 【机器人仿真Webots教程】-Webots安装

    Webots安装 文章目录 Webots安装 1 Webots简介 2 Webots安装 2 1 系统要求 2 2 验证显卡驱动 2 3 安装 3 Webots仿真 3 1 world文件 3 2 Controller文件 3 3 Supe
  • 1_simulink简单入门_simulink仿真PID控制

    1 simulink简单入门 simulink仿真PID控制 2 simulink搭建RCL 电阻电感电容模块 毕业前想去做物联网还是或者linux 结果玩了一年多的电机控制 早就深知matlab simulink绕不过的 拖到现在 下班晚
  • Netlist与RTL仿真结果不匹配

    Netlist 仿真和RTL比匹配主要是因为Netlist会存在不定态以及传播不定态 导致仿真不正确 不定态的来源 大多数设计在上电时不能保证cell的特定的逻辑状态 flip flop或memory根据环境因素 芯片间的工艺差异等可能会有
  • 用三元操作符替代if-else以降低CPU分支预测惩罚实现Unity内函数13倍提速

    测试对象 1 C Unity脚本 2 C DLL mcs build的动态链接库再导入Unity 3 C Native Code LLVM编译后导入Unity 被测试函数源码 两个随机数数组进行大小比较 一个数组保存大数 另一个保存小数 C
  • 静态链接与动态链接的区别

    我们大家在编程过程中对 链接 这个词并不陌生 链接所解决的问题即是将我们自己写的代码和别人写的库集成在一起 链接可以分为静态链接与动态链接 下文将分别讲解这两种方式的特点与其区别 静态链接 特点 在生成可执行文件的时候 链接阶段 把所有需要
  • 链接、装载与库——编译与链接

    从第二章开始不再按照目录的顺序总结 而是将大块知识点总结在一起 第二章 编译和链接 集成开发环境 IDE 一般都将编译和链接的过程一步完成 此过程成为构建 Bulid 但其掩盖了系统软件运行机制 gcc hello c a out 一个可执
  • 在multisim14上完成数码管的显示(0-9)

    提前说说 前几天给西电的同学做了一个小的线上课程设计 用到数码管 没想到我们课程设计也是关于数码管 所以在这总结一下如何仿真实现数码管 目标 完成一个数码管的显示 从0 9分别显示 一 首先 确定使用的是共阴极数码管 在元器库中找到 二 接
  • gradle 编译 Spring 源码(亲测有效)

    天知道我今天下午经历了什么 从去年开始断断续续看源码 在 IDEA 中 Spring 源码只读不能写 所以每次都是将方法拷贝到 vscode 中 IDEA 中看代码逻辑 接着在 vscode 对应的方法上写注释 期初这种方式没觉得有什么不便
  • windows下搭建编译chromium的开发环境

    本篇为windows下搭建编译chromium的方法 mac篇 mac下搭建编译chromium的开发环境 二七 CSDN博客 linux篇 linux 搭建和编译 chromium 环境 二七 CSDN博客 注意 搭建部署chromium
  • OpenCV项目编译错误

    编译遇到如下错误 opencv 3 4 4 modules highgui src window gtk cpp 1062 error 218 No OpenGL support Library was built without Open

随机推荐

  • 最长公共子序列(输出公共序列)

    给出两个字符串A B 求A与B的最长公共子序列 子序列不要求是连续的 比如两个串为 abcicba abdkscab ab是两个串的子序列 abc也是 abca也是 其中abca是这两个字符串最长的子序列 Input 第1行 字符串A 第2
  • python 基础篇 day 4 选择结构—— if 结构

    文章目录 if 基础结构 单 if 语句 if else 语句 if elif else 语句 嵌套的 if 语句 if 进阶用法 使用比较运算符 使用逻辑运算符 使用 in 关键字 range 函数 使用 is 关键字 使用 pass 语
  • 【数据库管理】十分钟了解啥是三级封锁协议、X锁和S锁

    一 为什么要用锁 在多用户共享系统中 许多事务可能同时对同一数据进行操作 称为 并发操作 此时数据库管理系统的并发控制子系统负责协调并发事务的执行 保证数据库的完整性不受破坏 同时避免用户得到不正确的数据 如果并发不受控制 则数据库的多个事
  • [HNOI2019]校园旅行(生成树+二分图+DP+回文性质)

    神仙好题啊 膜拜出题者 洛谷题目传送门 题目描述 给定一张无向图 每个点有权值v 0或1 q次询问 每次给出两个点 判断两点间是不是有一条路径 使得路径上经过的点的权值构成一个回文串 每个点 每条边可以重复走 解题思路 30pts 我们形式
  • 信息安全技术 信息安全风险评估规范

    风险处理计划 对不可接受的风险应根据导致该风险的脆弱性制定风险处理计划 风险处理计划中明确应采取的弥 补弱点的安全措施 预期效果 实施条件 进度安排 责任部门等 安全措施的选择应从管理与技术两 个方面考虑 安全措施的选择与实施应参照信息安全
  • Figma实用小技巧

    1 介绍 原作 草帽 视频地址 文字版整理 岩鸣杨子 2 快速拖拽调整数值 按住option可在数值上拖拽调整 不按option时只能在X Y W H 旋转 圆角等的图标上拖拽调整 不能调整透明度的数值 3 属性粘贴复制 shift X 互
  • java web选择题_Servlet、JSP选择题

    Java EE软件工程师认证考试 试题库 选择题 一 选择题 包括单选和双选 1 A 对于B S架构的工作流程 以下说法正确的是 选择一项 A 浏览器接受用户的输入 gt 浏览器向服务器端发送请求 gt 服务器端数据处理 gt 响应数据至客
  • shell命令:在windows的git bash执行ln -s 无效

    在windows的git bash执行ln s 无效 网上的方法试过 但是没用 仍然是创建文件及目录的拷贝而不是创建软链接 windows n WINDIR function common link if windows then echo
  • ImageLoader简单使用

    1 导包 implementation com nostra13 universalimageloader universal image loader 1 9 5 2 权限
  • kafka多个消费者消费一个topic_Kafka 为什么使用消费者组?

    1 消费者组的特点 这是 kafka 集群的典型部署模式 消费组保证了 一个分区只可以被消费组中的一个消费者所消费 一个消费组中的一个消费者可以消费多个分区 例如 C1 消费了 P0 P3 一个消费组中的不同消费者消费的分区一定不会重复 例
  • qt中插入数据库的数据类型是float类型时

    一般正常的插入数据库的类型为varchar类型时 我们可以在程序中QString类型来直接进行插入 如下数据库类型 2 但是如果你想要插入的是float类型的数据时 就会发现单纯使用QString是没办法进行插入的 如下数据库类型 3 这个
  • format 修改matlab数据显示的位宽

    修改matlab数据显示的位宽 format long maltab浮点数据显示一般默认小数点后四位 如 如果需要扩大显示的精度 可以使用format long 对于双精度数据显示15位小数位 对于单精度数据显示7位小数位 如 通过help
  • Spring中同一个service调用方法不回滚的解决方法

    在java配置类上添加注解 EnableAspectJAutoProxy exposeProxy true 方式暴漏代理对象 然后在service中通过代理对象AopContext currentProxy 去调用方法 Service pu
  • echarts 渐变

    series name 电流 A type line showBackground true itemStyle color 437EE0 areaStyle color type linear x 0 y 0 x2 0
  • 【毕业设计】深度学习指纹识别算法研究与实现 - python opencv

    文章目录 1 前言 2 指纹识别方式 2 1 电容式指纹识别 2 2 光学式指纹识别 3 指纹识别算法实现 3 1 指纹识别算法流程 3 2 指纹图像预处理 3 3 指纹图像目标提取 3 4 指纹图像增强 3 5 指纹特征提取 3 6 指纹
  • Java Web项目练习---信息管理系统

    一 项目简介 本次项目为Java Web的一个练习 是小白入门级较好的资料 文章如有不妥 请多多指教 1 技术需求 Servlet JSP MVC设计 JDBC MVC设计思想将整个项目分为三层结构 分别为model层 包括pojo层 da
  • <flutter>跨平台开发小白入坑 Dart Dio Pubspec 打包 MethodChannel 解析 Xcode hybrid

    1 资源文件和依赖三方包 pubspec yaml pubspec yaml文件可以说是和安卓的gradle文件差不多 它用来描述版本号 sdk 依赖等的 在资源导入方面同安卓不一样的是 flutter需要在pubspec yaml中声名
  • 大学生团体天梯赛L3-016 二叉搜索树的结构(非暴力解法,建树后O1查找)

    不难发现 里面绝大多数的查询都是跟父节点有关 所以我们每次插入的时候维护他和他的父节点 同层则再维护一个层节点 1 指针法 include
  • logback源码解析及自定义Appender、自定义logback.xml标签

    本文基于slf4j 1 7 25 目录 0 基本概念介绍 1 简单实用示例 2 加载解析配置logback配置文件源码解析 3 加载解析配置文件拓展点 3 1 标签对应复杂对象 默认用NestedComplexPropertyIA解析执行
  • VCS基本选项命令介绍

    一 如何执行 编译执行 1 编译链接生成二进制可执行文件 vcs source file compile time options 例如 vcs v2k filename v debug all 2k指2001版本 compile time