VCS User Guide学习笔记【使用精简版】
VCS_UG学习笔记
除了说明性质的内容,关于命令和仿真,均是默认Verilog语言,暂不考虑SystemVerilog相关的内容。
环境:
运行脚本来验证你的系统配置:syschk.sh
库:
名称上看:库 = 设计库 = 逻辑库
功能上看:VCS里面库的概念不像C语言中的头文件。库是VCS存放中间文件的地方,VCS把全部的中间文件存储在库里面。库指向文件系统的一个真实的物理目录,这个指向关系由synopsys_sim.setup文件指定。
默认情况:WORK是默认的库,它被映射到worklib目录。
WORK > DEFAULT DEFAULT : ./worklib
仿真:
VCS支持两种工作的流程:Two-step Flow和Three-step Flow
类型 | 步骤 | 语言 |
---|---|---|
两步 | 编译——仿真 | Verilig、SystemVerilog |
三步 | 分析——执行(制作)——仿真 | Verilog、VHDL、混合HDL |
相同点:仿真的前一步得到simv可执行文件,作为仿真阶段的输入。不同点:TODO。
- 两步方式的基本使用:
vcs [compile_options] Verilog_files
simv [run_options]
- 三步方式的基本使用:
vlogan [vlogan_options] file1.v file2.v
vcs [elaboration_options] design_unit
simv [run_options]
编译标志:
适用于命令中为compile_options或者elaboration_options的位置。compile_options与elaboration_options基本是一样的,稍有个别的标志是不同的,没必要严格区分,此处均以编译标志概括。这里给出一些常用的编译标志。
编译标志 | 功能 |
---|---|
-q | 静默模式 |
-f filename | 指明源文件列表的文件 |
-full64 | 64位 |
-l filename | 指明一个日志文件 |
-timescale=time_unit/time_precision | 指明仿真时间,优先级高于源代码中的 |
-v library_file | 指明Verilog模块定义的库文件 |
-y library_directory | 指明Verilog模块定义的库文件的目录 |
+define+macro | 宏定义 |
+lint=[no]ID|none|all | 打印出不良的Verilog代码风格 |
+incdir+directory | 指明include文件存放的目录 |
Verilog_source_filename | Verilog源文件名 |
-debug_access(+) | 使用调试模式而非优化模式,常用+all |
-debug_report | 记录调试日志debug.report |
-xzcheck | 仿真发现条件表达式里面有x或者z的时候打印警告信息 |
-diag sys_task_mem | 打印mem系统函数的文件信息 |
-R | 立即执行 |
备注说明:验证-xzcheck标志的作用
Warning-[XZCHK] Value goes to x/zSignal/expression '(forward_B_sel_i == 4'b1001)' goes to x/z within scope 'tb_top.soc_lite.cpu.ex_u1' in file rtl/myCPU/ex.v:141 at time 15000.
备注说明:验证-diag sys_task_mem标志的作用
Note-[STASK_RMEM] Encountered Memory Read Task
/home/juw28/Molly_SRAM_v1.0/rtl/RAM/inst_ram.v, 13At module inst_ram, Instance tb_top.soc_lite.inst_ramReading from file /home/juw28/Molly_SRAM_v1.0/inst_ram.dat.
备注说明:验证+lint=[no]ID|none|all标志的作用
Lint-[WMIA-L] Width mismatch in assignment
rtl/myCPU/decoder.v, 116Width mismatch between LHS and RHS is found in assignment:The following 32-bit wide expression is assigned to a 2-bit LHS target:Source info: imm_ex_sel = 0;Expression: imm_ex_sel
关于调试:
基本使用
编译阶段和仿真阶段,均有调试模式(又称交互模式)和优化模式(又称批处理模式)两种。
当使用调试模式的时候,在编译阶段,需要添加编译标志-debug_access(+<option>)
。
当使用优化模式的时候,在编译阶段,不需要添加该标志。
当使用调试模式的时候,在仿真阶段,需要添加运行标志-gui
打开Verdi GUI进行调试,或者添加运行标志-ucli
打开命令行进行调试。
当使用调试模式的时候,在仿真阶段,不需要添加该标志。
波形格式
VCD是IEEE标准的格式,通过Verilog系统任务$dumpvars
生成。VPD是Synopsys在VCD基础上的升级的格式,使用Verilog系统任务$vcdpluson生成。VCS提供工具进行两种格式之间的转换。VPD必须基于调试模式的打开,不能够在优化模式下使用。波形的记录默认是全部层次的全部信号,可以指定想要观察的源文件层次的深度、范围、信号等。
$vcdplusfile("filename.vpd"); //默认名是vcdplus.vpd,可通过$vcdplusfile系统任务修改$vcdpluson(); //打开波形记录$vcdplusoff(); //停止波形记录
传播未定值:
当遇到未定值X作为分支条件的时候,标准的Verilog行为是走到下一个分支,这样会导致一些潜在的问题,最终在门级仿真的阶段才能够发现,增加了代价消耗。VCS采用了更为高效合理的方法解决未定值X的传播问题。VCS提供了三种编译时、运行时的模式:
模式 | 阶段 | 功能 | 内部逻辑 |
---|---|---|---|
xmerge mode | 编译 | 比门级悲观 | 遇到x恒为x |
tmerge mode | 编译 | 最常用,最接近真实硬件的行为 | 同则同,异则x |
vmerge mode | 运行 | 经典Verilog行为 | 走else分支 |
VCS给出了传播未定值仿真的建议:
一次一部分的使用。(如果在整个设计工程上面都使用传播未定值,可能导致仿真的失败)
面向可综合代码。(tb和不可综合的代码,不应该加入)
VCS命令格式:
默认情况是全设计都进行X传播,默认使用tmerge模式。xprop_config_file是配置文件,指明应用的范围和选项。
vcs -xprop = [tmerge] | [xprop_config_file]
注意,模式和配置文件是二选一的关系,不能同时指定,如以下两个命令选择一个使用。
vcs -xprop=xprop.cfg
vcs -xprop=tmerge top.v
VCS_UG学习笔记
除了说明性质的内容,关于命令和仿真,均是默认Verilog语言,暂不考虑SystemVerilog相关的内容。
环境:
运行脚本来验证你的系统配置:syschk.sh
库:
名称上看:库 = 设计库 = 逻辑库
功能上看:VCS里面库的概念不像C语言中的头文件。库是VCS存放中间文件的地方,VCS把全部的中间文件存储在库里面。库指向文件系统的一个真实的物理目录,这个指向关系由synopsys_sim.setup文件指定。
默认情况:WORK是默认的库,它被映射到worklib目录。
WORK > DEFAULT DEFAULT : ./worklib
仿真:
VCS支持两种工作的流程:Two-step Flow和Three-step Flow
类型 | 步骤 | 语言 |
---|---|---|
两步 | 编译——仿真 | Verilig、SystemVerilog |
三步 | 分析——执行(制作)——仿真 | Verilog、VHDL、混合HDL |
相同点:仿真的前一步得到simv可执行文件,作为仿真阶段的输入。不同点:TODO。
- 两步方式的基本使用:
vcs [compile_options] Verilog_files
simv [run_options]
- 三步方式的基本使用:
vlogan [vlogan_options] file1.v file2.v
vcs [elaboration_options] design_unit
simv [run_options]
编译标志:
适用于命令中为compile_options或者elaboration_options的位置。compile_options与elaboration_options基本是一样的,稍有个别的标志是不同的,没必要严格区分,此处均以编译标志概括。这里给出一些常用的编译标志。
编译标志 | 功能 |
---|---|
-q | 静默模式 |
-f filename | 指明源文件列表的文件 |
-full64 | 64位 |
-l filename | 指明一个日志文件 |
-timescale=time_unit/time_precision | 指明仿真时间,优先级高于源代码中的 |
-v library_file | 指明Verilog模块定义的库文件 |
-y library_directory | 指明Verilog模块定义的库文件的目录 |
+define+macro | 宏定义 |
+lint=[no]ID|none|all | 打印出不良的Verilog代码风格 |
+incdir+directory | 指明include文件存放的目录 |
Verilog_source_filename | Verilog源文件名 |
-debug_access(+) | 使用调试模式而非优化模式,常用+all |
-debug_report | 记录调试日志debug.report |
-xzcheck | 仿真发现条件表达式里面有x或者z的时候打印警告信息 |
-diag sys_task_mem | 打印mem系统函数的文件信息 |
-R | 立即执行 |
备注说明:验证-xzcheck标志的作用
Warning-[XZCHK] Value goes to x/zSignal/expression '(forward_B_sel_i == 4'b1001)' goes to x/z within scope 'tb_top.soc_lite.cpu.ex_u1' in file rtl/myCPU/ex.v:141 at time 15000.
备注说明:验证-diag sys_task_mem标志的作用
Note-[STASK_RMEM] Encountered Memory Read Task
/home/juw28/Molly_SRAM_v1.0/rtl/RAM/inst_ram.v, 13At module inst_ram, Instance tb_top.soc_lite.inst_ramReading from file /home/juw28/Molly_SRAM_v1.0/inst_ram.dat.
备注说明:验证+lint=[no]ID|none|all标志的作用
Lint-[WMIA-L] Width mismatch in assignment
rtl/myCPU/decoder.v, 116Width mismatch between LHS and RHS is found in assignment:The following 32-bit wide expression is assigned to a 2-bit LHS target:Source info: imm_ex_sel = 0;Expression: imm_ex_sel
关于调试:
基本使用
编译阶段和仿真阶段,均有调试模式(又称交互模式)和优化模式(又称批处理模式)两种。
当使用调试模式的时候,在编译阶段,需要添加编译标志-debug_access(+<option>)
。
当使用优化模式的时候,在编译阶段,不需要添加该标志。
当使用调试模式的时候,在仿真阶段,需要添加运行标志-gui
打开Verdi GUI进行调试,或者添加运行标志-ucli
打开命令行进行调试。
当使用调试模式的时候,在仿真阶段,不需要添加该标志。
波形格式
VCD是IEEE标准的格式,通过Verilog系统任务$dumpvars
生成。VPD是Synopsys在VCD基础上的升级的格式,使用Verilog系统任务$vcdpluson生成。VCS提供工具进行两种格式之间的转换。VPD必须基于调试模式的打开,不能够在优化模式下使用。波形的记录默认是全部层次的全部信号,可以指定想要观察的源文件层次的深度、范围、信号等。
$vcdplusfile("filename.vpd"); //默认名是vcdplus.vpd,可通过$vcdplusfile系统任务修改$vcdpluson(); //打开波形记录$vcdplusoff(); //停止波形记录
传播未定值(未验证):
当遇到未定值X作为分支条件的时候,标准的Verilog行为是走到下一个分支,这样会导致一些潜在的问题,最终在门级仿真的阶段才能够发现,增加了代价消耗。VCS采用了更为高效合理的方法解决未定值X的传播问题。VCS提供了三种编译时、运行时的模式:
模式 | 阶段 | 功能 | 内部逻辑 |
---|---|---|---|
xmerge mode | 编译 | 比门级悲观 | 遇到x恒为x |
tmerge mode | 编译 | 最常用,最接近真实硬件的行为 | 同则同,异则x |
vmerge mode | 运行 | 经典Verilog行为 | 走else分支 |
VCS给出了传播未定值仿真的建议:
一次一部分的使用。(如果在整个设计工程上面都使用传播未定值,可能导致仿真的失败)
面向可综合代码。(tb和不可综合的代码,不应该加入)
VCS命令格式:
默认情况是全设计都进行X传播,默认使用tmerge模式。xprop_config_file是配置文件,指明应用的范围和选项。
vcs -xprop = [tmerge] | [xprop_config_file]
注意,模式和配置文件是二选一的关系,不能同时指定,如以下两个命令选择一个使用。
vcs -xprop=xprop.cfg
vcs -xprop=tmerge top.v
备注:使用XProp需要VCS License支持这一部分。
VCS User Guide学习笔记【使用精简版】相关推荐
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java中如何创建自定义的注解学习笔记(MD版)
概要 Java中如何创建自定义的注解学习笔记(MD版). 博客 博客地址:IT老兵驿站. 前言 记得这篇笔记还是在泉州的龙玲酒店记录的,是一个周六的晚上,坐飞机从上海到泉州,从笔记中能勾起一些旅游的回 ...
- 单片机c语言北航,【下载资料】《51单片机学习笔记》北航版
原标题:[下载资料]<51单片机学习笔记>北航版 如果手机下载有问题,请移步至电脑端,链接:https://forum.mianbaoban.cn/t/topic/36906 内容简介 本 ...
- LaTeX 学习笔记(刘大成版)
LaTeX \LaTeX LATEX 学习笔记(刘大成版) 常用参考网站: 目录 LaTeX \LaTeX LATEX 学习笔记(刘大成版) 1. LaTeX \LaTeX LATEX的概述与安 ...
- pandas基础学习笔记(简略版)
pandas基础学习笔记(简略版) 1.DataFrame 2.series 3.基本数据操作 4.DataFrame 运算 5.pandas绘图 6.文本的读取与存储 1.DataFrame 既有行 ...
- 李宏毅深度学习笔记——呕心整理版
李宏毅深度学习笔记--呕心整理版 闲谈叨叨叨: 之前看过吴恩达的一部分课程,所以有一定理论基础,再看李宏毅的课程会有新的理解.我先以有基础的情况写完学习过程,后续再以零基础的角度补充细节概念(估计不会 ...
- VCS user guide读书笔记启发篇
文章目录 引言 1.Getting Started 2.VCS MX flow 2.1 分析过程 2.2 综合过程 2.3 仿真过程 引言 本文用于总结阅读VCS user guide后的读书笔记,具 ...
- 批处理脚本学习笔记——程序猿版
批处理脚本学习笔记 原创作品.同意转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/taotaoyouarebaby/ar ...
- 批处理脚本学习笔记——程序员版
批处理脚本学习笔记 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/taotaoyouarebaby/ar ...
最新文章
- 2022-2028年中国干电池制造行业产销需求与投资预测分析报告
- bat命令 修改ini文件内容_关于mysql使用中文乱码;mysql修改ini文件无法启动;以及mysql卸载无法安装的一系列问题说明。...
- 《毅力–如何培养自律的习惯》读书笔记
- 【渝粤题库】国家开放大学2021春2503学前儿童健康教育题目
- include引入php报错,如何解决引入php文件报错的问题
- 【英语学习】【Level 08】U04 What I love L5 Breathe in, breathe out
- c++ opengl 分形树_推荐一些适合新手练手的C/C++项目,小白练手最适合!
- java list t 类_Java ListT 、List?、ListObject、ListE、ListU的区别
- ad10搜索快捷键_ad快捷键有哪些 ad快捷键汇总
- “我们”是量子计算业内人士,“我们”在炒作
- 生物化学-第二章-氨基酸
- UOS统信系统任务栏不见解决方案
- (SSM,JQUERY-EASYUI,MYSQL)快递物流系统
- 2017计算机办公自动化试题,【2017年整理】计算机办公自动化试题.doc
- Redis 深度历险: 核心原理和应用实践
- linux resolv.conf 重启,Ubuntu关于修改resolv.conf重启失效的问题
- 以太坊概念知识入门篇 1
- 老鼠出迷宫问题(Java)(递归)
- python笔记---(实验二)
- 表单验证 手机号输入框
热门文章
- NGUI与Unity3d物体交叉显示的一种解决方案
- 【5G】有史以来最强的5G入门科普
- 电梯程序c语言51单片机,基于51单片机的六层电梯控制系统c语言程序.pdf
- 好用的矢量绘图软件:EazyDraw 9 for Mac中文破解版!
- 厦大纪荣嵘团队新作|OneTeacher: 解锁 YOLOv5 的正确打开方式
- Problem B: 字符串加密(编程)
- webpack的devtool
- ISO9000和ISO9001有哪些区别?
- 在线HTTP速度测试(响应时间测试)及浏览器兼容测试
- 跨境3.0时代正合奇胜法则:动态需求理论