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基本选项命令介绍 的相关文章

  • 动态库的链接和链接选项-L,-rpath-link,-rpath【转】

    转自 https my oschina net shelllife blog 115958 链接动态库 如何程序在连接时使用了共享库 就必须在运行的时候能够找到共享库的位置 linux的可执行程序在执行的时候默认是先搜索 lib和 usr
  • Unity Shader:Waveform波形(2)-基本波形:正弦,三角,锯齿,直角以及其变种的实现方式

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

    Microchip Studio 7 0 系列教程 1 Microchip Studio 7 0 如何修改字体大小Microchip Studio 7 0 如何修改字体大小 2 MicroChip Studio 7 0如何快速打开 h文件
  • 【设计】低压差稳压器(LDO)的设计分析

    本简短教程介绍了一些常用的LDO 相关术语 以及一些基本概念 如压差 裕量电压 静态电流 接地电流 关断电流 效率 直流输入电压和负载调整率 输入电压和负载瞬态响应 电源抑制比 PSRR 输出噪声和精度 同时 为了方便理解 文中采用了示例和
  • Python探索Raspberry Pi机器人平台

    随机轨迹 第一代机器人吸尘器在一个无限循环中使用了一种非常简单的算法 直行直到撞到障碍物 转一个随机角度 如果您担心这种行为的清洁质量 那可能是对的 但是从数学角度来看 如果给定无限的时间 只要机器人可以物理上到达 该算法将覆盖整个清洁区域
  • cmake安装

    http hezuyou blog 163 com blog static 78497415201311734452972 编译安装cmake 下载cmake源码包cmake 2 8 4 tar gz mv到 usr local src目录
  • 单相半桥逆变器仿真技巧

    1 拓扑与控制 单相半桥逆变器拓扑如下 电压环和电流环控制图如下 调制方式如下 2 仿真步骤 单相半桥逆变器的仿真应该遵循以下步骤 1 选择合适的滤波电感和滤波电容 一般是mH级别 2 选择合适的调制度 注意由于半桥电容电压波动过大 往往不
  • 【基于Android的ARM汇编语言系列】之二:C/C++程序生成ARM汇编程序的过程分析

    作者 郭嘉 邮箱 allenwells 163 com 博客 http blog csdn net allenwells github https github com AllenWell 基于Android的ARM汇编语言系列 章节列表
  • VCS基本选项命令介绍

    一 如何执行 编译执行 1 编译链接生成二进制可执行文件 vcs source file compile time options 例如 vcs v2k filename v debug all 2k指2001版本 compile time
  • Makefile中四种常用等式(= := += ?=)与自动化变量$X的实例说明

    1 引言 在阅读Makefile时经常会碰到一些 奇怪的符号 比如 还有 lt 等 之前也都看过了解 但是时间一长 回过头来看就又忘记了 这里做个简单的记录 方便同样遇到困惑的同学查询 1 四种常用等式 1 1 四种等式的作用 序号 等式
  • 使用Clang作为编译器 —— Assembling a Complete Toolchain

    装配一个完整的工具链 1 介绍 2 工具 2 1 Clang 前端 2 2 其他语言的语言前端 2 3 汇编器 2 4 链接器 3 运行时库 3 1 编译器运行时 Compiler runtime 3 2 原子库 Atomics libra
  • esmini LongSpeedAction修改

    esmini的LongSpeedAction 如果shape设置为step的话 DynamicsDimension实际就无效了 因为step的意思就是直接设置 在LongSpeedAction的Start过程中设置完就结束了 Step就不在
  • LLVM-Clang编译器安装和使用

    LLVM不仅仅是一个编译器 同时提供了模块化的功能和库 用于编译器的开发和功能扩展 常规的一个编译器分为前端 优化器和后端 LLVM编译器也不例外 Clang就是属于一个编译器的前端部分 LLVM属于优化器和后端 当然LLVM也可以支持其他
  • VCS+Verdi 安装及破解过程(Ubuntu)【1】

    转载自 https blog csdn net qq 40829605 article details 85345795 由于系统不一样 中途改了一些东西 不过终于装成功了 分享一下 简述 这篇文章讲述了在Ubuntu 64bit系统上VC
  • Ubuntu14/16 PCL1.7/1.8 opencv2/3/4 编译安装共存

    为了使用cuda和pcl共同编程 而系统带的pcl1 7不带gpu模块 故编译安装pcl完全版 与系统pcl1 7共存 不同分发版本Ubuntu应该没有什么区别 不同版本pcl编译和使用道理也都基本相同 opencv也是一样的道理 PCL
  • 用三元操作符替代if-else以降低CPU分支预测惩罚实现Unity内函数13倍提速

    测试对象 1 C Unity脚本 2 C DLL mcs build的动态链接库再导入Unity 3 C Native Code LLVM编译后导入Unity 被测试函数源码 两个随机数数组进行大小比较 一个数组保存大数 另一个保存小数 C
  • python实现电影院仿真(SimPy)

    SimPy Simulating Real World Processes With Python 仿真环境 电影院仿真 目标 减少顾客的平均等待时间 少于10分钟 在开始仿真前 先思考这个仿真过程 顾客在坐下来看电影前需要经过哪些步骤 到
  • Qt5 Alpha Complie in XP with Mingw/vs2008

    根据 http qt project org wiki Qt 5 Alpha building instructions 提示 下载 Perl http www perl org get html python http python or
  • 华为方舟编译器开源项目编译第四弹——自带Java测试用例的编译

    在编译Java测试用例时的错误提示信息 javac option bootclasspath not allowed with target 1 9 Usage javac
  • 编译原理13:SLR(1)分析表、LR(1)分析表

    更强的LR分析 可以根据当前单词 来选择是移进还是归约 只要所有移进项目中的点后面的那些终结符 与归约项目生成的非终结符的Follow集合的元素没有重叠 若当前单词属于上述Follow集合里则规约 SLR 1 冲突解决办法 SLR 1 分析

随机推荐

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

    给出两个字符串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