1 逻辑仿真工具VCS的使用

在书写完成RTL代码之后,确保自己书写的代码和自己想要的逻辑是一致的。

VCS是synopsys公司下的的仿真工具。

1 VCS仿真过程

编译-->仿真-->debug/查看波形

vcs

1.1.1 编译

vcs -sverilog -debug_all full.adder full_adder_tb.v -l com.log
  • vcs--是逻辑仿真工具EDA工具的编译源代码命令
  • -sverilog--编译命令选项,识别system verilog语法
  • -debug_all--编译选项,保存所有的debug信息
  • -l com.log--编译选项,将编译过程生成的日志写入com.log文件
  • 编译之后会生成simv,simv文件可以进行直接执行
//执行simv文件,生成vpd文件
./simv -l sim.log //打开vpd文件的图形界面
dve -vpd vcdplus.vpd &

1.1.2 图形界面仿真

  1. 启动图形界面
dve &
  • &--后台使用dve,不占用当前的terminal
  1. setup,读入simv文件
  2. 输入run执行仿真

  3. 查看波形

    注意:
  • 仿真至少有两层,xxx.v及testbench.v
  • Hierachy--显示结构,上层为testbench,下层是源代码

2 Verilog Testbench功能

  • 产生激励 Generate stimulus--过多长时间给什么样的值
  • 将激励输入到待测设计(DUT,design under verification)
  • 获取响应 Capture response
  • 检查响应的正确性 Check the response for correctness
  • 根据验证目标评估验证进度 Measure the progress against the overall verification goals

3 验证一个模块,比如全加器

  1. 真值表

    可以将真值表作为pattern,用于进行验证
  2. 验证
  • 功能完整性
  • 穷举法
  • 代码覆盖率--所有的代码都在进行仿真的时候用到

    3 进行仿真
  • 编译
  • 仿真
  • 查看波形

4 一些概念

输入信号是驱动信号,输出信号是被驱动信号

  • 在RTL源代码中
  1. 如果被驱动信号写到assign语句中,定义为wire型的信号
  2. Input信号都是wire型,可以省略掉。
  3. 如果被驱动信号写道always语句块中,定义为reg型的信号
  • 在Testbench中
  1. Testbench中的驱动信号reg
  2. 驱动信号的类型是reg信号
  3. 被驱动类型的信号wire类型

注意::进行DUT测试,需要外加Testbench向DUT中灌入一些信号进行测试。所以在DUT中和Testbench中的输入输出信号类型是相反的。

01-逻辑仿真工具VCS使用的更多相关文章

  1. 【分类器】感知机+线性回归+逻辑斯蒂回归+softmax回归

    一.感知机     详细参考:https://blog.csdn.net/wodeai1235/article/details/54755735 1.模型和图像: 2.数学定义推导和优化: 3.流程 ...

  2. VCS 常用命令速查

      VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言.PLI和SDF.VCS具有目前行业中最高的模拟性能,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模 ...

  3. DDR3 IP和CIC IP仿真问题解决记录

    1.更新vivado的仿真库(data/secureip和verilog和vhdl文件夹)至最新的vivado库和生成IP的版本匹配: 2.vcs编译脚本里面把仿真库地址指向匹配的仿真库版本: 3.v ...

  4. 数字IC设计工程师成长之路

    学习的课程 仿真工具VCS实践学习 2019年12月9日-2019年12月23日

  5. 029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符

    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑"非"运算符 本文知识点:Java中的逻辑"非"运算符 逻辑& ...

  6. 028 01 Android 零基础入门 01 Java基础语法 03 Java运算符 08 逻辑“或”运算符

    028 01 Android 零基础入门 01 Java基础语法 03 Java运算符 08 逻辑"或"运算符 本文知识点:Java中的逻辑"或"运算符 逻辑& ...

  7. 027 01 Android 零基础入门 01 Java基础语法 03 Java运算符 07 逻辑“与”运算符

    027 01 Android 零基础入门 01 Java基础语法 03 Java运算符 07 逻辑"与"运算符 本文知识点:Java中的逻辑"与"运算符 逻辑运 ...

  8. 【黑金ZYNQ7000系列原创视频教程】01.熟悉vivado——纯逻辑led实验

    黑金论坛地址: http://www.heijin.org/forum.php?mod=viewthread&tid=36627&extra=page%3D1 爱奇艺地址: http: ...

  9. Stealth——01场景的基本搭建以及基础逻辑

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  10. ASP.NET一般登陆逻辑分享(01)

随机推荐

  1. Vue中引入echarts。

    1.安装 在终端vue项目的文件夹下运行npm install echarts --save安装依赖 可以使用npm install echarts@("这里可以写版本号") -- ...

  2. python学习笔记---流程控制

    二.流程控制 2.1选择结构与语句 2.1.1 最简单的if语句 注意:if语句后边必须加上冒号 满足条件后.可以执行多条语句. #最简单的if语句 print("请输入一个既能整除2,又能 ...

  3. Python 根据两个字段排序 中文排序 汉字排序 升序 降序

    Python3写法 代码 # -*- coding: utf-8 -*- # 需求:年龄倒序,姓名正序 from itertools import chain from pypinyin import ...

  4. SpringBoot自动配置(装配)流程

    源码分析 SpringBoot自动配置流程 ​ ​ 首先,我们要了解在@SpringBootApplication注解的内部,还具有@EnableAutoConfiguration,@SpringBo ...

  5. android 代码分析

    1.@Override注解 @Override 注解是用来指定方法重写的,只能修饰方法并且只能用于方法重写,不能修饰其它的元素. 作用是告诉编译器检查这个方法,保证父类要包含一个被该方法重写的方法,否 ...

  6. 关于软件物料清单(SBOM),你所需要了解的一切

    在此前的多篇文章中,我们已经详细地介绍了软件物料清单(SBOM)对于保障软件供应链安全的重要性以及一些注意事项.在本文中,我们将会更深入地介绍SBOM,包括最低要求元素.格式.使用场景以及如何对其进行 ...

  7. 2022-11-02 Acwing每日一题

    逆序对的个数 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量. 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆 ...

  8. RabbitMQ个人实践

    前言 MQ(Message Queue)就是消息队列,其有点有很多:解耦.异步.削峰等等,本文来聊一下RabbitMQ的一些概念以及使用. RabbitMq 案例 Springboot整合Rabbit ...

  9. ElasticSearch7.6.1学习笔记-狂神

    ElasticSearch:7.6.1 https://gitee.com/yujie.louis/elastic-search 笔记,代码,安装包等 什么是ElasticSearch? Elasti ...

  10. 4 c++编程-提高篇-STL简介

    ​ 重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦!  生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要简单介 ...