1.AutoCheck analysis introduce


  • Autocheck是自动对RTL代码使用形式验证进行规则检查的检查器,是Questa Verify tools的一部分。Autochenck功能包括对设计的结构和功能属性进行静态验证,分析设计的各种逻辑结构,并验证这些结构是否符合特定的设计规则。

  • Autocheck analysis 在batch mode下使用TCL指令来配置环境,对代码进行编译检查。在Debug GUI下,对验证的结果进行debug。


2.Autochenk Basic


Autocheck是对代码进行设计规则条件检查,验证的设计规则包括:

  1. •Arithmetic rules such as divide-by-zero and value overflow.
  2. •Bus rules such as multiply-driven/undriven buses and one hot/cold conformation.
  3. •Case rules such as full/parallel case conformation anddefaultcase branching.
  4. •Combinational logic rules,such as combinational feedback loop implementations.
  5. •Logic rules,such as unused and undriven logic.
  6. •Register rules, such as multiply-driven, un-resetable and stuck-at registers.
  7. • FSM rules such as deadlock, livelock and reachability.
  8. •Other rules such as inferred latches,unreachable indexes,incomplete sensitivity lists。

大概会有40+种规则检查,我们可以通过指令屏蔽一些规则的检查,提高性能。也可以添加信息,让它在分析中识别clock,reset,还有常量信号,具体信息要看autochenck_user;它对设计代码检查的结果按照severity分成下面几种:

  1. •Violations—Must-fix design problems.
  2. •Cautions—Potential design problems.
  3. •Info— informational issue.
  4. •Inconclusion—Analysis timed out before determining if a violation was present
  5. •Evaluated—Evaluatedwithno problem found
  6. •Off—No analysis performed .design check type was disable before analysis

3.Autocheck analysis flow


我在终端上具体跑的flow:

  1. setenv $HOME /install_dir/linux_x86_x64 在安装目录下配置环境。
  2. make compile 编译verilog/VHDL代码
  3. make autocheck 执行autocheck检查
  4. make debug 启动GUI debug

下面是Makefile,里面有具体的指令:

  1. Autocheck_designMakefile
  2. # V10.2 AutoCheck Design Checks Tutorial
  3. #########################################################################
  4. run: clean compile autocheck debug
  5. ###### Define Variables #################################################
  6. VLIB = ${QHOME}/modeltech/plat/vlib
  7.             VMAP = ${QHOME}/modeltech/plat/vmap
  8. VLOG = ${QHOME}/modeltech/plat/vlog
  9.             VCOM = ${QHOME}/modeltech/plat/vcom
  10. ###### Compile Design ###################################################
  11. compile:
  12. rm -rf work transcript 删除work transcript
  13. $(VLIB) work    建立一个初始的设计库,库里包括所有的设计单元
  14.                 $(VMAP) work ./work 建立设计从逻辑到物理的映射
  15. $(VCOM) -f qs_files/filelist_vh   编译代码
  16.                 $(VLOG)-f qs_files/filelist_vl 编译代码
  17. ###### Compile Design ###################################################
  18. autocheck:
  19. rm -rf log_ac
  20. qverify -c -do" \ -c 启动CLI模式 -do"comman" or do_file
  21. configure output directory Output_Results; \ 设置输出目录
  22. do qs_files/directives.tcl; \里面包含autocheck的一些参数指令
  23. #### do qs_files/waivers.tcl; \
  24. autocheck run -d vending_machine_controller -effort high; \
  25. exit" vending_machine_controller 设计的顶层单元
  26. ###### Debug Results ####################################################
  27. debug:
  28. qverify Output_Results/autocheck.db
  29. ###### Clean Data #######################################################
  30. clean:
  31. qverify_clean
  32. rm -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的更多相关文章

  1. 带你了解强大的Cadence家族,你可能只用到了它1/10的工具

    [转载自 SI-list[中国]http://mp.weixin.qq.com/s/qsdfzQwIVjvwHXuCdvrPXA ] 本篇对2017年初版Cadence的全套所有EDA工具的技术特性特 ...

  2. Logic and Fault simulation

    fault simulation是指对fault circuit的simulation,来locate manufacturing defects并且进行fault diagnosis. logic ...

  3. 如何学习FPGA

    如何学习FPGA 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/k331922164/article/details/44626989 PS:笔者强 ...

  4. HBASE SHELL 命令使用

    HBASE SHELL命令的使用 在hbase shell客户端有许多的操作命令,今天回顾并且总结一二,希望和广大读者共同进步,并且悉心聆听你们的意见.在此的hbase版本是:HBase 1.2.0- ...

  5. [转]关于几本模拟IC设计书

    1.P.R.Gray的书 这本书被业界誉为模拟IC的Bible,盛名之下,必无虚士.现在已经出到第四版,作者无一例外是业界大牛,该书论述严谨,思路清晰,对电路分析透彻,定义严格明确,无愧Bible之名 ...

  6. 如何学好FPGA

    http://bbs.elecfans.com/jishu_278578_1_1.html 掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性.掌握了FP ...

  7. systemverilog(3)之Randomize

    what to randomize? (1) primary input data <==one data (2)encapsulated input data <== muti grou ...

  8. RFTWEB测试对象抓取的方法

    本文转自:http://feiyeguohai.iteye.com/blog/1468576 Rational Functional Tester (RFT) 作为 IBM 自己设计研发的自动化测试工 ...

  9. 基于Verilog语言的可维护性设计技术

    [注]本文内容主体部分直接翻译参考文献[1]较多内容,因此本文不用于任何商业目的,也不会发表在任何学术刊物上,仅供实验室内部交流和IC设计爱好者交流之用. “曲意而使人喜,不若直节而使人忌:无善而致人 ...

随机推荐

  1. angular路由

    ngRoute需要引进以下文件 <script src="http://code.angularjs.org/1.2.5/angular.min.js"></sc ...

  2. 无废话SharePoint入门教程二[SharePoint发展、工具及术语]

    一.前言 1.由于上一篇文章的标题命名失误,此篇标题写给百度搜索”什么是SharePoint”. 2.关于什么是SharePoint,请参见本人的第一篇文章:http://www.cnblogs.co ...

  3. iis里面浏览网页,提示找不到应用程序的解决办法

    iis配置成功,数据库链接正确,代码无误,在iis里面,浏览某网页,提示找不到应用程序,这时一下子懵了. 处理办法:在浏览器中直接输入网址,例如:http://192.168.1.111,这时能够打开 ...

  4. .net 附加W3wp进程

    步骤:1.鼠标右键点击application项目中的web,找到属性 2.修改web服务器地址(如果使用localhost报错,则http://电脑IP/): 3.在本地iis中找到你部署的网站,点击 ...

  5. 山锅(samgor)的博客 2014

    搞移动端的前端开发已经3年,悄悄地从一个前端小白变成老油条. 项目已经做了好几个,最近发现技术的提升貌似停滞不前.说很菜吧,知道的还是不少.说精通吧,自我感觉还算不上. 认真的考虑下这个问题,觉得技术 ...

  6. linux下关于Apache设置二级域名绑定二级目录的方法

    背景:对于一些论坛网站,某些目录需要制定二级域名去访问,这时候就要在apache中用二级域名绑定二级目录. 方法: 1.首先你要找到apache安装路径,在apahce安装路径下的conf文件夹中找到 ...

  7. 如何理解和熟练运用js中的call及apply?

    改变this指向 要先明白存在call和apply的原因,才能记得牢一点: 在javascript OOP中,我们经常会这样定义: function cat(){ } cat.prototype={ ...

  8. Android源码编译出错解决办法

    编译环境:Ubuntu12.04 64位 Android源码:Android 4.3 以下问题是笔者亲自碰到,通过网上查询整合在一起的. 1.error while loading shared li ...

  9. JavaScript 闭包系列二(匿名函数及函数的闭包)

    一. 匿名函数 1. 函数的定义,可分为三种 1) 函数声明方式 function double(x) {     return 2*x; } 2)Function构造函数,把参数列表和函数体都作为字 ...

  10. JavaScript 变量作用域

    一. 变量声明 变量用var关键字来声明,如下所示: 变量在未声明的情况下被初始化,会被添加到全局环境. JavaScript执行代码时,会创建一个上下文执行环境,全局环境是最外围的环境.每个函数在被 ...