VCS专题之简介(一)
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个区域:
- VCS首先读入用户写的语句块(initial,always,assgin等),然后执行没有延迟的语句(例如初始化语句),再将仿真时间设置为0。–上述文字有降到。
- 然后进入active区,首先执行一些原语(就是一些逻辑门语句,简单MOSE电路,上拉下拉语句,$display,无延迟的assign语句,阻塞赋值语句)值得注意的是,在active 阻塞赋值语句是完全执行的,例如 a = z+y; 在这个区,阻塞赋值语句执行了z+y的计算,还执行了赋值的过程,但是对于非阻塞赋值,在active区只执行了z+y的计算,并没有执行赋值过程,所以在这里内存里存的非阻塞赋值的值还是更新前的值
- 然后进入 inactive区,主要作用执行延迟语句#(time);
- 然后进入nonblack区,这个区执行非阻塞赋值功能。
- 然后进入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专题之简介(一)相关推荐
- VCS专题之功能及其命令(二)
1.VCS功能 VCS的功能可以大致分为两个大类:编译和仿真. VCS编译的过程,就是经过一系列的操作,将verilog代码转换为可执行文件(.svim),接下来就是用dve进行仿真过程生成.vpd波 ...
- emWin专题——emWin简介及模拟器的使用
一.emWin简介 1.emWin和ucGUI的关系 记得刚上大学的时候接触到单片机领域的一个图形界面叫ucGUI,也是跑在STM32上的,后来过了没多久网上查资料发现大家都是用的emWIn了,了解了 ...
- 训练dnn_[预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合
本文为预训练语言模型专题系列第八篇 快速传送门 1-4:[萌芽时代].[风起云涌].[文本分类通用技巧].[GPT家族] 5-7:[BERT来临].[浅析BERT代码].[ERNIE合集] 感谢清华大 ...
- 训练dnn_[预训练语言模型专题] MTDNN(KD) : 预训练、多任务、知识蒸馏的结合
本文为预训练语言模型专题系列第八篇 快速传送门 1-4:[萌芽时代].[风起云涌].[文本分类通用技巧] . [GPT家族]5-7:[BERT来临].[浅析BERT代码].[ERNIE合集]感谢清华 ...
- Django MTV - 模型层 - (专题)知识要点与实战案例
Django- 模型层(models)知识要点与实战案例 (专题概述及索引) 概述:本专题以讨论Django中模型层相关的基础知识,这些基础知识在我们的日常开发中有着相当重要的作用.模型(models ...
- 网络通信专题总结之OTA专题
大纲: |网络通信专题总结之OTA专题 |OTA简介 |OTA模式以及分类 |用户个性化定制更新业务流程讲述 |具体是怎样实现: |APP |嵌入式端 获取url.md5.版本号 请求服务器 下载与存 ...
- [预训练语言模型专题] MT-DNN(KD) : 预训练、多任务、知识蒸馏的结合
本文为预训练语言模型专题系列第八篇 快速传送门 1-4:[萌芽时代].[风起云涌].[文本分类通用技巧] . [GPT家族] 5-7:[BERT来临].[浅析BERT代码].[ERNIE合集] 感 ...
- SEO人员如何利用专题页策略来做排名优化
一个网站的首页标题长度是有限的,一般来说首页能够做3〜5个主关键词就很不错了.这时候,如果还想继续获取更多主关键词的流量,就会面临以下几个问题: 1,首页长度有限,无法放置更多关键词 .2,栏目页仅仅 ...
- 网站专题页SEO优化来抢占海量长尾词排名
做SEO常常需要记录和跟踪一些值,如数据收集.数据.交通数据,查询等数据可以Excel跟踪记录,当然,但是如果我们能有一个系统每天自动帮你记录这些数据,那不是更舒服.人工记录经常泄漏由于假期之类的东西 ...
最新文章
- ubuntu 14.04安装mysql server mysql client
- 《流浪地球》 电影全集
- 家乡饮食文化PHP开题报告,挖掘家乡饮食文化拓展幼儿园课程
- 八年级计算机考操作试题,八年级计算机会考必看试题!!!!!!
- python获取url的json数据_通过url获取json数据并在python中使用(simplejson)
- 若依可以商用吗_商用自动炒菜机Qamp;A,你想知道的都在这里!
- 输入法android版,享受流畅手机输入 百度手机输入法Android版试用
- PHP 缓存 内存,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP
- C语言之三种基本结构
- 肤色冷暖色测试软件_认识你自己|肤色冷暖测试
- iMac (Retina 5K, 27-inch, Late 2015) 在内置硬盘及外置移动硬盘上安装 macOS Monterey/Windows11 22H2 双系统
- sprd9820 来电归属地
- 如何预防服务器IP被封
- Neo4j 重置密码
- OpenFeign 夺命连环 9问
- ZYNQ之高速AD/DA验证实验
- CSDN积分怎么获取
- Java毕业设计目录
- Sublime Text3中几款比较好看的主题
- 五子棋项目结束总结_朱建锋:五子棋对局要不断总结、精益求精!
热门文章
- 外国人眼中的珍珠奶茶是啥?
- 3Ds Max基础(杂)
- 爱天涯For Android(天涯客户端软件)已经发布,欢迎下载试用
- PHP字符串拼接/连接,PHP文字拼接/连接方法
- 跨平台应用开发进阶(一) :走近 uni-app
- python字符编码使用ascii编码储存对么_Python字符编码详解(转)
- 计算机专业西安交大本硕连读,智商高颜值高 15岁学霸考上西安交大本硕连读
- 如何备考一级建造师?网课 视频 教材如何选择?从哪里下手?小白零基础一次过一建!
- 【视频】超越BERT的最强中文NLP预训练模型艾尼ERNIE官方揭秘
- 三种增加DataFrame行的办法