Questa Functional Verification-autocheck
1.AutoCheck analysis introduce
Autocheck是自动对RTL代码使用形式验证进行规则检查的检查器,是Questa Verify tools的一部分。Autochenck功能包括对设计的结构和功能属性进行静态验证,分析设计的各种逻辑结构,并验证这些结构是否符合特定的设计规则。
Autocheck analysis 在batch mode下使用TCL指令来配置环境,对代码进行编译检查。在Debug GUI下,对验证的结果进行debug。
2.Autochenk Basic
Autocheck是对代码进行设计规则条件检查,验证的设计规则包括:
•Arithmetic rules such as divide-by-zero and value overflow.•Bus rules such as multiply-driven/undriven buses and one hot/cold conformation.•Case rules such as full/parallel case conformation anddefaultcase branching.•Combinational logic rules,such as combinational feedback loop implementations.•Logic rules,such as unused and undriven logic.•Register rules, such as multiply-driven, un-resetable and stuck-at registers.• FSM rules such as deadlock, livelock and reachability.•Other rules such as inferred latches,unreachable indexes,incomplete sensitivity lists。
大概会有40+种规则检查,我们可以通过指令屏蔽一些规则的检查,提高性能。也可以添加信息,让它在分析中识别clock,reset,还有常量信号,具体信息要看autochenck_user;它对设计代码检查的结果按照severity分成下面几种:
•Violations—Must-fix design problems.•Cautions—Potential design problems.•Info— informational issue.•Inconclusion—Analysis timed out before determining if a violation was present•Evaluated—Evaluatedwithno problem found•Off—No analysis performed .design check type was disable before analysis
3.Autocheck analysis flow

我在终端上具体跑的flow:
- setenv $HOME /install_dir/linux_x86_x64 在安装目录下配置环境。
 - make compile 编译verilog/VHDL代码
 - make autocheck 执行autocheck检查
 - make debug 启动GUI debug
 
下面是Makefile,里面有具体的指令:
Autocheck_designMakefile# V10.2 AutoCheck Design Checks Tutorial#########################################################################run: clean compile autocheck debug###### Define Variables #################################################VLIB = ${QHOME}/modeltech/plat/vlibVMAP = ${QHOME}/modeltech/plat/vmapVLOG = ${QHOME}/modeltech/plat/vlogVCOM = ${QHOME}/modeltech/plat/vcom###### Compile Design ###################################################compile:rm -rf work transcript 删除work transcript$(VLIB) work 建立一个初始的设计库,库里包括所有的设计单元$(VMAP) work ./work 建立设计从逻辑到物理的映射$(VCOM) -f qs_files/filelist_vh 编译代码$(VLOG)-f qs_files/filelist_vl 编译代码###### Compile Design ###################################################autocheck:rm -rf log_acqverify -c -do" \ -c 启动CLI模式 -do"comman" or do_fileconfigure output directory Output_Results; \ 设置输出目录do qs_files/directives.tcl; \里面包含autocheck的一些参数指令#### do qs_files/waivers.tcl; \autocheck run -d vending_machine_controller -effort high; \exit" vending_machine_controller 设计的顶层单元###### Debug Results ####################################################debug:qverify Output_Results/autocheck.db###### Clean Data #######################################################clean:qverify_cleanrm -rf work Output_Results transcript replay* modelsim.ini *.wlf`
Makefile里面的directives.tcl是关于autocheck的一些指令,可以禁止autocheck做某种类型的检查,改变autocheck的一些参数。如果你做了某种检查的禁止的话,那么这个检查的结果就是Off。
在autocheck anaysis也就是第三步完成后,会在Output_Resuilts里面生成很多.db,.log,还有.rpt文件等,其中.db文件是启动debug GUI所需要的数据库文件,如果第四步无法打开GUI,就是我们数据生成的路径和我们调用的路径不一致,需要我们从Makefile里面查找原因。
4.Debug GUI
因为这一步主要是debug,autocheck最有价值的地方就是在这里,所以单独的说一下这一步。其他的如果环境设置正确,代码符合各项规则,很容易就通过前面的检查。debug主要是针对设计的缺陷而言,可能设计中存在一个端口被赋值了两次或者有两个驱动,规则检查不出来,debug可以发现这个问题。
Questa Verify GUI 改正错误,用来检查和调试设计中的问题,可以追踪问题的原因。通过对代码的处理来改正错误,或者把某些instances设为Waived,这样就会默认为正确,或理解为对设计来说,这个问题是无关紧要的。对了,还可以设为filter,过滤掉这个错误。
Debug GUI打开的时出现的Design check window:
如何把某一种或某一个violation  设置为waived,或者 filter?
选中所要filter(或者waived)的violation → 右键 → Filter →Select
这样,Filter checks dialog就会显示我们所要过滤的violations,点击ok就完成了Filter,对于caution也是一样的操作。
    如何查找设计的缺陷或者说如何Fix violation(caution)?
选中我们所关心的violation 或者 caution  →右键  →show →schematic ;
这样,会出现电路原理图,我们可以根据电路模型图,推断出错误的原因。
或者也可以这样,选中我们所关心的violation 或者 caution  →右键  →show →source;
这里会出现violation的信号或端口的声明,选中这部分定义→ Navigate →Drivers;
会出现所有跟violation的端口或信号有关的代码,颜色会特别标明,就像这样:

Questa Functional Verification-autocheck的更多相关文章
- 带你了解强大的Cadence家族,你可能只用到了它1/10的工具
		
[转载自 SI-list[中国]http://mp.weixin.qq.com/s/qsdfzQwIVjvwHXuCdvrPXA ] 本篇对2017年初版Cadence的全套所有EDA工具的技术特性特 ...
 - Logic and Fault simulation
		
fault simulation是指对fault circuit的simulation,来locate manufacturing defects并且进行fault diagnosis. logic ...
 - 如何学习FPGA
		
如何学习FPGA 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/k331922164/article/details/44626989 PS:笔者强 ...
 - HBASE SHELL 命令使用
		
HBASE SHELL命令的使用 在hbase shell客户端有许多的操作命令,今天回顾并且总结一二,希望和广大读者共同进步,并且悉心聆听你们的意见.在此的hbase版本是:HBase 1.2.0- ...
 - [转]关于几本模拟IC设计书
		
1.P.R.Gray的书 这本书被业界誉为模拟IC的Bible,盛名之下,必无虚士.现在已经出到第四版,作者无一例外是业界大牛,该书论述严谨,思路清晰,对电路分析透彻,定义严格明确,无愧Bible之名 ...
 - 如何学好FPGA
		
http://bbs.elecfans.com/jishu_278578_1_1.html 掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性.掌握了FP ...
 - systemverilog(3)之Randomize
		
what to randomize? (1) primary input data <==one data (2)encapsulated input data <== muti grou ...
 - RFTWEB测试对象抓取的方法
		
本文转自:http://feiyeguohai.iteye.com/blog/1468576 Rational Functional Tester (RFT) 作为 IBM 自己设计研发的自动化测试工 ...
 - 基于Verilog语言的可维护性设计技术
		
[注]本文内容主体部分直接翻译参考文献[1]较多内容,因此本文不用于任何商业目的,也不会发表在任何学术刊物上,仅供实验室内部交流和IC设计爱好者交流之用. “曲意而使人喜,不若直节而使人忌:无善而致人 ...
 
随机推荐
- vue.common.js?e881:433 TypeError: Cannot read property 'nodeName' of undefined
			
我觉得吧,是这么个原因,就是响应式要找这个node改它的内容,没找着,就报错了. 用computed监控vuex的state属性,绑定到页面上,如果这个属性改了,因为响应式,那么就要更改页面,如果页面 ...
 - kaggle数据挖掘竞赛初步--Titanic<原始数据分析&缺失值处理>
			
Titanic是kaggle上的一道just for fun的题,没有奖金,但是数据整洁,拿来练手最好不过啦. 这道题给的数据是泰坦尼克号上的乘客的信息,预测乘客是否幸存.这是个二元分类的机器学习问题 ...
 - synchronized和ReentrantLock
			
一.什么是sychronized sychronized是java中最基本同步互斥的手段,可以修饰代码块,方法,类. 在修饰代码块的时候需要一个reference对象作为锁的对象. 在修饰方法的时候默 ...
 - python【1】-基础知识
			
1.简介 python是一种解释性的.面向对象的.带有动态语义的高级程序设计语言. 廖雪峰网站:http://www.liaoxuefeng.com/wiki/001374738125095c955c ...
 - [原创]C#引用C++编译的dll
			
一.DllImportAttribute 1.属性介绍 using System; using System.Reflection; using System.Security; namespace ...
 - [原创]C#应用WindowsApi实现查找\枚举(FindWindow、EnumChildWindows)窗体控件,并发送消息。
			
首先介绍基本WindowsApi: public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 函 ...
 - Thrift入门及Java实例演示<转载备用>
			
Thrift入门及Java实例演示 作者: Michael 日期: 年 月 日 •概述 •下载配置 •基本概念 .数据类型 .服务端编码基本步骤 .客户端编码基本步骤 .数据传输协议 •实例演示(ja ...
 - CSS入门
			
CSS,层叠样式表,是对web页面显示效果进行控制的一套标准.当页面的内容受多种样式控制,将会按照一定的顺序处理.CSS的作用:(1)将网页的内容结构和格式控制分开.(2)可以精确控制页面的所有元素. ...
 - 学习solr
			
1.下载地址 http://apache.opencas.org/lucene/solr/
 - 浅谈学习掌握linux系统的优势
			
Linux系统让我们懂得了共享.开放.自由可以让人类生活的更加美好,开源精神是一种让每个从事Linux行业的技术人员从骨子里自豪的情怀,开源产品的兴盛受益于开源社区的强壮根基.Linux真的给了我很多 ...