一、vcs -xprop简介
https://www.synopsys.com/zh-cn/verification/simulation/vcs-xprop.html
Verilog 和 VHDL 常用于数字设计建模。设计人员使用 RTL 构造描述硬件行为。然而,某些 RTL 仿真语义不足以准确地为硬件行为建模。因此,相比实际硬件行为,仿真结果要么太过乐观,要么太过悲观。
因为这些语义限制,Verilog 和 VHDL RTL 仿真器会忽略掉控制信号上的X不定态,在输出上会分配一个固定的数值。这样造成的结果就是,由于缺少X的传播, RTL 仿真器往往无法检测到和 X态相关的设计问题。然而,同样的设计问题可以在门级仿真中检测出来,因此许多时候必须运行大量的门级仿真,只是为了调试 X 相关问题。现在VCS在RTL阶段提供了的全新 X 传播(X-propagation)支持,使用该技术,工程师可以节省大量用于调试RTL和门级仿真的X建模的差异上的时间和精力。
VCS Xprop 旨在帮助寻找 RTL 中的 X 相关问题,减少对冗长的门级仿真的需求。两种 HDL 语言,Verilog 和 VHDL 的条件构造仿真语义都不足以精确地为未初始化的寄存器和上电复位值中固有的模糊性建模。当建模为 ‘X’ 值的不确定状态成为控制表达式时,这些问题格外棘手。
启用 VCS Xprop 时,突出的仿真差异最常见的来源之一就是不正确的初始化序列。该行为通常因为复位/时钟信号从 0 转换至 X、从 1 转换至 X,或反之亦然。如果触发器对时钟信号的上升沿敏感,X 到 1 的转换将触发触发器,当使用 Verilog 上升沿或传统 VHDL 触发器行为代码进行编码时,输入值传递至输出,代码为:clk’event 和 clk’1’。相反,如果触发器使用 VHDL rising_edge(event) 构造编码,则触发器将不会加载新值。实际上,Verilog 构造以及一种 VHDL 构造认为 X 到 1 的转换为真,而其他 VHDL 构造认为假。然而,在 VCS Xprop 仿真中,同样的时钟转换将导致触发器合并输入和输出,从而可能导致未知的值。因此,要想有效地将新值加载到触发器,您必须确保时钟信号的值有效且稳定,这样的情况将通过启用 VCS Xprop 的仿真显示在 RTL 运行中。
二、仿真选项
如果不定义-xprop,则vcs 为vmerge mode,为典型的verilog behavior。
-xprop=tmerge,则vcs为tmerge mode,更接近实际的电路行为,也是使用比较多的。如果定义-xprop,则default 为tmerge mode。此模式下x态会传播一段路径后终结。
-xprop=xmerge,则vcs为xmerge mode,更悲观的一种行为,此行为下x态会一直传播。
-xprop是用来解决控制信号x态暴露问题的。
可以参考vcs user guide中Using X-Propaon章节。
VCS Xprop Introduction
The VCS Xprop simulator provides an effective simulation model that allows Xprop problems to be exposed by standard RTL simulations.
The VCS Xprop simulator provides two built-in merge modes that you can choose at either compile time or runtime:
==xmerge mode ==: This mode is more pessimistic than a standard gate-level simulation.
==tmerge mode ==: This mode is closer to actual hardware behavior and is the more commonly used mode.The merge result yields X when all output values of logic 0 and logic 1 control signal are different, similar to a ternary operator.
vmerge mode : This mode is the classic Verilog (optimistic) behavior, which effectively disables the enhanced Xprop semantics
The -xprop compile-time option is used to enable Xprop and to specify the merge mode at run time. By default, VCS uses the tmerge merge mode.
Following is the syntax of the -xprop option:

vcs -xprop[=tmerge|xmerge|xprop_config_file]
[-xprop=flowctrl]
[-xprop=nestLimit=<limit>]
other_vcs_options

The merge mode can also be modified at runtime via the $set_x_prop() system task.

Xprop Config file
You can define the scope of the Xprop instrumentation and select the merge mode in the configuration file. The Xprop configuration file is used to define the scope of Xprop instrumentation in a design. The file allows you to specify the design hierarchies or modules to be excluded or included for Xprop.
If you use an Xprop configuration file, by default VCS does not perform Xprop instrumentation. You must use the xpropOn attribute to specify the design hierarchies or modules for Xprop instrumentation.
For instance,

tree { bridge } { xpropOff } ;
instance { top.bridge.cpu } { xpropOn } ;
module { sram } { xpropOff } ;
merge = merge_mode

Compile Time Diagnostic Report
When you compile a design with Xprop enabled, VCS generate reports that record all the statements considered for Xprop instrumentation, whether or not the statements are instrumented, and the reason for statements not being instrumented. Reports are generated with the name xprop.log for Verilog.

Querying X-Propagation at Runtime
You can use the $is_xprop_active Verilog system function to query the X-prop status for a particular module or an entity instance. The function returns an 1 if Xprop is enabled in the current instance
三、ius 仿真器
-xprop C x态传播一段路径后停止;
C模式是 如果0&x,那么得出的是0,x态就终结了,类似的1|| x,得出的是1。
-xprop F x态一直传播 ;
F模式是 如果0&x,那么得出的是x,类似的1|| x,得出的是x,x态会一直在。

vcs -xprop的理解相关推荐

  1. VCS User Guide学习笔记【使用精简版】

    VCS_UG学习笔记 除了说明性质的内容,关于命令和仿真,均是默认Verilog语言,暂不考虑SystemVerilog相关的内容. 环境: 运行脚本来验证你的系统配置:syschk.sh 库: 名称 ...

  2. VCS的x态传播选项xprop的用法

    VCS的xprop选项用来仿真X态传播,模拟硬件的行为.xprop在脚本中的配置如下: xprop = off ifeq ($(xprop),on) USER_CMP_OPTS += -xprop=. ...

  3. #VCS# 关于VCS 编译选项 《-v 、 -y 、+libext+》 的理解

    我们知道,VCS 提供了如下三个选项:-v .-y.+libext+. 今天我们一起拿好小黑板,坐稳小板凳,分析一下三个编译选项的含义和正确使用场景.不要大意,还是有陷阱的哦~ 关于 -v 选项 -v ...

  4. 深入理解学习Git工作流

    2019独角兽企业重金招聘Python工程师标准>>> 个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心 ...

  5. 到底该如何理解DevOps这个词

    炒了8年的概念,到底该如何理解DevOps这个词? 转载本文需注明出处:EAII企业架构创新研究院,违者必究.如需加入微信群参与微课堂.架构设计与讨论直播请直接回复公众号:"EAII企业架构 ...

  6. 6张图,带你深入理解GitOps,真硬核!

    大家好,我是小碗汤,今天分享一篇6张图深入理解GitOps,内容硬核,建议兄弟们收藏~ 在使用 K8s 的云原生应用中,Serverless,Devops 工具以及大量其他云技术.通常,基础设施代码和 ...

  7. 炒了8年的概念,到底该如何理解DevOps这个词?

    什么是DevOps及误区 DevOps概念从2009年提出已有8个年头.可是在8年前的那个时候,为什么DevOps没有迅速走红呢?即便是在2006年Amazon发布了ECS,微软在2008年和2010 ...

  8. (零)VCS学习笔记

    本文参考Verification with VCS Workshop的讲义,简单对理解的进行总结 1,VCS is? 什么是VCS (Verilog Compiled simulator)就是Veri ...

  9. 【VCS】Git之无尽探索

    本文是关于Git探索的一篇文章,阐述了Git的大部分命令和使用方式,并列举了几个典型的使用场景以供参考和体会. 多host环境 clone,remote,fetch,pull,push gitigno ...

最新文章

  1. WCF服务的REST / SOAP端点
  2. Fedora 8中驱动ASUS6摄像头
  3. Android小項目之---時間線程應用(附源碼)
  4. 关于ARM的22个常用概念
  5. permission denied和linux赋值权限chmod命令
  6. 一个迄今为止最快的并发键值存储库FASTER诞生
  7. Java并发教程–锁定:内在锁
  8. python调用linux命令输出结果,Python-运行shell命令并捕获输出
  9. Qt实现对json文件的解析
  10. tensorflow 指定cpu 但是还会运行 gpu_PyTorch VS TensorFlow 谁最强?这是标星 15000+ Transformers 库的运行结果...
  11. ASP.NET 4.0升级至ASP.NET 4.5需要注意的地方
  12. 怎样用c语言统计字符个数字,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  13. 完美解决IE6不支持position:fixed的bug
  14. 织梦网站如何上传服务器还原,织梦系统DedeCMS网站通过数据库备份、还原实现网站整站搬家移植...
  15. linux实现多台服务器文件同步
  16. GridView控件RowDataBound事件中获取列字段途径
  17. Tracepro 中LED光源模型建立(英文
  18. OllyDBG V1.10聆风听雨汉化版
  19. 我们总是喜欢拿顺其自然来敷衍人生道路上的荆棘坎坷,却很少承认,真正的顺其自然是竭尽所能之后的不强求,而非两手一摊的不作为。
  20. 流浪是对另一种生活的执着

热门文章

  1. 链游的趋势和前景:团队开始专注于建设 进入 6-12 个月重新整合期
  2. 找树左下角的值+路径总和+从前序和中序遍历序列构造二叉树(day18*)
  3. 《设计模式入门》 19.命令模式
  4. python成功安装cartopy之后,调用crs时却出现错误,如何解决
  5. GVRP和VTP的比较与区别
  6. 缅因大学欧洛诺分校计算机科学,缅因大学申请要求高不高?开学时间是什么时候?...
  7. 线上AI僚机,告诉你对方喜好,手把手教你如何正确约会
  8. [前端之旅] - 01 开端 (持续更新各种资料)(夜·猫之使徒·哮喘征服者·被光选中的人·逐梦)
  9. 关于QQ截图中马赛克处理的想法
  10. C++ 读取文件时报错“将一个无效参数传递给了将无效参数视为严重错误的函数”解决方法