码农知识堂 - 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 表示该部分的电路不会进行综合。

     模块屏蔽/添加

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

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

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

     



  • 相关阅读:
    PAT 乙级 1071 小赌怡情 python
    Vue-3.2自定义创建项目
    RK3566添加LED
    基于PHP+MySQL的在线电影观看和交流网站
    Latex 报错:The font cannot be found.
    第四章《类与对象》第3节:方法的重载
    使用vue-cli来搭建vue项目
    2022/8/9 考试总结
    中望CAD 2025 (ZW3D2025) 简体中文修改版
    电容传感器
  • 原文地址:https://blog.csdn.net/qq_43045275/article/details/127817862
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号