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 and default case 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 — Design styles considered okay
•Inconclusion — Analysis timed out before determining if a violation was present
•Evaluated — Evaluated with no problem found
•Off — No analysis performed .design check type was disable before analysis 

3.Autocheck analysis flow


autocheck-01.png

下面是我在终端具体跑的时候的Flow:

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

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

                        Autocheck_design Makefile
                # V10.2 AutoCheck Design Checks Tutorial
#########################################################################
        run: clean compile autocheck debug
###### Define Variables #################################################
        VLIB = ${QHOME}/modeltech/plat/vlib
        VMAP = ${QHOME}/modeltech/plat/vmap
        VLOG = ${QHOME}/modeltech/plat/vlog
        VCOM = ${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_ac
            qverify -c -do " \   -c 启动CLI模式 -do"comman" or do_file
            configure 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_clean
            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:

autocheck-02.png

我们可以根据Design check window里的Type确认error的类型,可以通过Module确认发生错误error的模块,从而快速定位code。

如何把某一种或某一个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的端口或信号有关的代码,颜色会特别标明,就像这样:

autocheck-03.png

每次我们Fix bug或者对代码修改后,记得要重新跑一边Flow。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容