码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • VCS工具学习笔记(7)



    目录

    引言

    代码覆盖率

    覆盖率类型

     代码覆盖率分析流程

     实际操作

    // VCS coverage off  // VCS coverage on

     模块屏蔽/添加


     


    引言

    按照视频的讲解进度,继续学习 VCS的使用。

    前几篇文章:

    VCS 工具学习笔记(1)

    VCS工具学习笔记(2)

    VCS工具学习笔记(3)

    VCS工具学习笔记(4)

    VCS工具学习笔记(5)

    VCS工具学习笔记(6)

    本文主要是 关于 代码覆盖率 。(很重要)

    本系列文章建议电脑端查看~~



    代码覆盖率

    行覆盖率一般要求达到99%以上,否则,可能是设计存在冗余,意味着面积增大,成本增加。

    覆盖率类型

     代码覆盖率分析流程

     实际操作

    这里拿我之前写过的一个状态机设计进行实验。源码见下面的博客链接:

    FSM实例——按键消抖及状态检测icon-default.png?t=M85Bhttps://blog.csdn.net/qq_43045275/article/details/124394454

    仿真文件最后的 $stop 改成 $finish

    这里就分享一下我的makefile吧。供参考~~

    1. .PHONY: com cov clean debug
    2. OUTPUT = simv_FSM_EXP
    3. VPD_SW_DEFINE = +define+VPD_TEST
    4. INC_C_DIR = ./RTL/my_printf.c
    5. # code coverage command
    6. CM = -cm line+cond+fsm+branch+tgl
    7. CM_NAME = -cm_name $(OUTPUT)
    8. CM_DIR = -cm_dir ./$(OUTPUT).vdb
    9. # vpdfile name
    10. VPD_NAME = $(OUTPUT).vpd
    11. # compile command
    12. VCS = vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed \
    13. -simprofile \
    14. -sverilog +v2k -timescale=1ns/1ns \
    15. -debug_access+r \
    16. -Mupdate \
    17. +notimingcheck \
    18. +nospecify \
    19. +vcs+flush+all \
    20. $(VPD_SW_DEFINE) \
    21. -o $(OUTPUT) \
    22. -l compile.log \
    23. $(CM) \
    24. $(CM_NAME) \
    25. $(CM_DIR) \
    26. -cm_hier ./vcs_cov.cfg
    27. # simulation command
    28. SIM = ./$(OUTPUT) \
    29. -l $(OUTPUT).log \
    30. $(CM) $(CM_NAME) $(CM_DIR) \
    31. $(VPD_NAME) \
    32. # start complie
    33. com:
    34. find -name "*.v" >filelist.f
    35. $(VCS) -f filelist.f
    36. # start simulation
    37. sim:
    38. $(SIM)
    39. #mv vcdplus.vpd $(VPD_NAME)
    40. # show the coverage
    41. cov:
    42. dve -full64 -covdir *.vdb &
    43. debug:
    44. dve -full64 -vpd $(OUTPUT).vpd &
    45. # start clean
    46. clean:
    47. rm -rf ./csrc *.daidir *.log *.vpd *.vdb simv* *.key *race.out* *.so.* *profile* *.f

    仿真执行完毕后,通过下面的命令查看:

    dve -covdir *.vdb &

    打开之后就可以分析覆盖率的各项指标:

     也可以生成 txt 或 html 格式的文件:

    File——>Generate URG Report...——>勾选需要的 Report Format ——>Run

    产生完成后可以通过 下面的 Browse Report 打开,或者直接通过火狐浏炼器打开 。

     

    // VCS coverage off  // VCS coverage on

    比如在设计文件中加入:

    或者:

     // synopsys translate off 表示该部分的电路不会进行综合。

     模块屏蔽/添加

    如果在分析时,也不分析某整个模块的情况。可以通过下面方法实现:

    在工程文件夹里面创建任一个文件,文件名可以随意取;文件里面加入:

     只看某个模块的覆盖率情况,则把上面配置里面的 - 换成 + 即可。

     



  • 相关阅读:
    SpringBoot3.x原生镜像-Native Image尝鲜
    双token三验证和微信登录流程图
    java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署
    基于蜜獾优化的BP神经网络(分类应用) - 附代码
    机器学习实验三:决策树-隐形眼镜分类(判断视力程度)
    Java项目:JSP酒店客房管理系统
    SpringBoot解决LocalDateTime返回数据为数组问题
    题目0155-特异性双端队列
    机器学习之ROC与AUC
    Jmeter post请求传参问题
  • 原文地址:https://blog.csdn.net/qq_43045275/article/details/127817862
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号