1.环境介绍

linux发行版:ubantu20.0_64位
synosys2016 版本
gcc 4.4 g++4.4

资源下载地址:链接https://pan.baidu.com/s/1zXy7O7FfAr0kz_klye4y3w
提取码:yt7i
经过几天的学习,终于会了synopsys公司的VCS软件,在此做一个小小的总结,分享自己得学习心得。希望对大家有所帮助,也希望大家多多指教,谢谢!

2. verilog 仿真规范

首先介绍一下verilog语言的仿真的一些规范:
verilog语言的仿真时基于分层的思想来实现的,首先会创建一个执行事件的队列,然后计算仿真时间。verilog的仿真会首先执行零延迟的事件,然后将仿真的起止时间设置为0,这样为后面的延迟时间语句提供了一个参考点,便于后续有延迟事件能按一定的时间顺序执行。
特别注意:在verilog仿真中,当多个事件(并发)在同一时刻来调度执行,该执行哪一个呢?
随便执行哪一个都行,verilog语法并没有规定,所以这是后续我们在处理一些设计问题需要考虑的问题。

2.1 verilog仿真队列

理解仿真队列有什么用?我们直接上手VCS不好吗?
理解VCS会有助于你理解我们将写的code交给VCS后执行的是什么样的操作,理解仿真的原理,有利于解决在后续仿真过程中出现的各种问题。verilog仿真队列图如下:

VCS工具将仿真过程分为5个区域:

  1. VCS首先读入用户写的语句块(initial,always,assgin等),然后执行没有延迟的语句(例如初始化语句),再将仿真时间设置为0。–上述文字有降到。
  2. 然后进入active区,首先执行一些原语(就是一些逻辑门语句,简单MOSE电路,上拉下拉语句,$display,无延迟的assign语句,阻塞赋值语句)值得注意的是,在active 阻塞赋值语句是完全执行的,例如 a = z+y; 在这个区,阻塞赋值语句执行了z+y的计算,还执行了赋值的过程,但是对于非阻塞赋值,在active区只执行了z+y的计算,并没有执行赋值过程,所以在这里内存里存的非阻塞赋值的值还是更新前的值
  3. 然后进入 inactive区,主要作用执行延迟语句#(time);
  4. 然后进入nonblack区,这个区执行非阻塞赋值功能。
  5. 然后进入monitor区,执行monitor函数信号跟踪。和display很像,但是运行的区不一样,结果和功能也不一样。

2.2 仿真有趣的现象

在仿真的过程中有许多有趣的现象:有些代码在不同厂家的仿真工具中仿真的结果不一样,到底谁对谁错?可以说没有对错之分,各个厂家对语法没提及到的一些现象,设置是不同的。下面来看个例子:

module test;reg clk,a,z,zin;always @(posedge clk) begina = 1'b1;#0 a = 1'b0;end`ifdef CASE1always @(a) #0 z = zin;always @(a) zin=a;`elsealways @(a)  z= zin;always @(a) #0 zin=a;`endifinitial begin#50 clk = 1'bz;#50 clk = 1'b0;#50 clk = 1'b1; #50 clk = 1'b0;#50 $finish;end
endmodule

VCS 仿真情况:

得出的稳定结果是a=0,z=1,zin=0;
ModelSim 仿真结果:

仿真结果是a=0,z=0,zin=0;

当然上述例子还有很多代码风格上不足的缺点:

  • 在描述时序电路时候应该用阻塞赋值
  • 在always块中使用#0延迟
    3.在组合逻辑电路中的敏感列表要完整,否者会产生锁存器,为了不漏掉敏感信号可以写成always @(*)。

2.3 学习VCS需要的工具

  • verilog语言
  • linux操作系统
  • GVIM编辑器
  • debug 和 设计优化
  • 覆盖率的操作

VCS专题之简介(一)相关推荐

  1. VCS专题之功能及其命令(二)

    1.VCS功能 VCS的功能可以大致分为两个大类:编译和仿真. VCS编译的过程,就是经过一系列的操作,将verilog代码转换为可执行文件(.svim),接下来就是用dve进行仿真过程生成.vpd波 ...

  2. emWin专题——emWin简介及模拟器的使用

    一.emWin简介 1.emWin和ucGUI的关系 记得刚上大学的时候接触到单片机领域的一个图形界面叫ucGUI,也是跑在STM32上的,后来过了没多久网上查资料发现大家都是用的emWIn了,了解了 ...

  3. 训练dnn_[预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合

    本文为预训练语言模型专题系列第八篇 快速传送门 1-4:[萌芽时代].[风起云涌].[文本分类通用技巧].[GPT家族] 5-7:[BERT来临].[浅析BERT代码].[ERNIE合集] 感谢清华大 ...

  4. 训练dnn_[预训练语言模型专题] MTDNN(KD) : 预训练、多任务、知识蒸馏的结合

    本文为预训练语言模型专题系列第八篇 快速传送门  1-4:[萌芽时代].[风起云涌].[文本分类通用技巧] . [GPT家族]5-7:[BERT来临].[浅析BERT代码].[ERNIE合集]感谢清华 ...

  5. Django MTV - 模型层 - (专题)知识要点与实战案例

    Django- 模型层(models)知识要点与实战案例 (专题概述及索引) 概述:本专题以讨论Django中模型层相关的基础知识,这些基础知识在我们的日常开发中有着相当重要的作用.模型(models ...

  6. 网络通信专题总结之OTA专题

    大纲: |网络通信专题总结之OTA专题 |OTA简介 |OTA模式以及分类 |用户个性化定制更新业务流程讲述 |具体是怎样实现: |APP |嵌入式端 获取url.md5.版本号 请求服务器 下载与存 ...

  7. [预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合

    本文为预训练语言模型专题系列第八篇 快速传送门   1-4:[萌芽时代].[风起云涌].[文本分类通用技巧] . [GPT家族] 5-7:[BERT来临].[浅析BERT代码].[ERNIE合集] 感 ...

  8. SEO人员如何利用专题页策略来做排名优化

    一个网站的首页标题长度是有限的,一般来说首页能够做3〜5个主关键词就很不错了.这时候,如果还想继续获取更多主关键词的流量,就会面临以下几个问题: 1,首页长度有限,无法放置更多关键词 .2,栏目页仅仅 ...

  9. 网站专题页SEO优化来抢占海量长尾词排名

    做SEO常常需要记录和跟踪一些值,如数据收集.数据.交通数据,查询等数据可以Excel跟踪记录,当然,但是如果我们能有一个系统每天自动帮你记录这些数据,那不是更舒服.人工记录经常泄漏由于假期之类的东西 ...

最新文章

  1. ubuntu 14.04安装mysql server mysql client
  2. 《流浪地球》 电影全集
  3. 家乡饮食文化PHP开题报告,挖掘家乡饮食文化拓展幼儿园课程
  4. 八年级计算机考操作试题,八年级计算机会考必看试题!!!!!!
  5. python获取url的json数据_通过url获取json数据并在python中使用(simplejson)
  6. 若依可以商用吗_商用自动炒菜机Qamp;A,你想知道的都在这里!
  7. 输入法android版,享受流畅手机输入 百度手机输入法Android版试用
  8. PHP 缓存 内存,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP
  9. C语言之三种基本结构
  10. 肤色冷暖色测试软件_认识你自己|肤色冷暖测试
  11. iMac (Retina 5K, 27-inch, Late 2015) 在内置硬盘及外置移动硬盘上安装 macOS Monterey/Windows11 22H2 双系统
  12. sprd9820 来电归属地
  13. 如何预防服务器IP被封
  14. Neo4j 重置密码
  15. OpenFeign 夺命连环 9问
  16. ZYNQ之高速AD/DA验证实验
  17. CSDN积分怎么获取
  18. Java毕业设计目录
  19. Sublime Text3中几款比较好看的主题
  20. 五子棋项目结束总结_朱建锋:五子棋对局要不断总结、精益求精!

热门文章

  1. 外国人眼中的珍珠奶茶是啥?
  2. 3Ds Max基础(杂)
  3. 爱天涯For Android(天涯客户端软件)已经发布,欢迎下载试用
  4. PHP字符串拼接/连接,PHP文字拼接/连接方法
  5. 跨平台应用开发进阶(一) :走近 uni-app
  6. python字符编码使用ascii编码储存对么_Python字符编码详解(转)
  7. 计算机专业西安交大本硕连读,智商高颜值高 15岁学霸考上西安交大本硕连读
  8. 如何备考一级建造师?网课 视频 教材如何选择?从哪里下手?小白零基础一次过一建!
  9. 【视频】超越BERT的最强中文NLP预训练模型艾尼ERNIE官方揭秘
  10. 三种增加DataFrame行的办法