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吧。供参考~~

.PHONY: com cov clean debug

OUTPUT = simv_FSM_EXP

VPD_SW_DEFINE = +define+VPD_TEST
INC_C_DIR   = ./RTL/my_printf.c

# code coverage command
CM = -cm line+cond+fsm+branch+tgl
CM_NAME = -cm_name $(OUTPUT)
CM_DIR = -cm_dir ./$(OUTPUT).vdb

# vpdfile name
VPD_NAME = $(OUTPUT).vpd


# compile command
VCS = vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed   \
	  -simprofile 							 \
	  -sverilog +v2k -timescale=1ns/1ns      \
      -debug_access+r 	             		 \
      -Mupdate								 \
      +notimingcheck			     		 \
      +nospecify			                 \
      +vcs+flush+all			             \
      $(VPD_SW_DEFINE)						 \
      -o $(OUTPUT)							 \
      -l compile.log						 \
      $(CM)				                 	 \
      $(CM_NAME)							 \
      $(CM_DIR)								 \
      -cm_hier ./vcs_cov.cfg
      							 
      

# simulation command
SIM = ./$(OUTPUT)							 \
      -l $(OUTPUT).log						 \
	  $(CM) $(CM_NAME) $(CM_DIR)	         \
	  $(VPD_NAME)							 \
	  

# start complie
com:	
	find -name "*.v" >filelist.f 
	$(VCS) -f filelist.f


# start simulation
sim:
	$(SIM)
	#mv vcdplus.vpd $(VPD_NAME)

# show the coverage
cov:
	dve -full64 -covdir *.vdb &
debug:
	dve -full64 -vpd $(OUTPUT).vpd &

# start clean
clean:
	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 表示该部分的电路不会进行综合。

 模块屏蔽/添加

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

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

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

 



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在路上-正出发

哈哈,多少是个心意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值