
1简介
冗长的编译和仿真,对于稍大的工程,编译加上仿真可能需要1个小时以上并且占用大量内存,而跑回归更是消耗大量的时间以及内存资源,本文主要给大家带来VCS使用技巧,DPO,DPO全称是Dynamic Performance Optimizer
,主要用于优化编译和仿真(时间/内存
),减少资源的使用,属于VCS的高级功能。仅需要很少的命令即可引入当前工程,体验来看,优化基本都在30%以上(数据来自亦安自己的测试,具体以实际为准)。
2DPO的特性
接入工程简单,只需要简单的命令
深度优化编译和仿真,包含时间和内存的优化
3该怎么使用DPO
目前该功能可能需要较高版本VCS DPO才比较完善。
使用逻辑非常简单:第一步,学习(learn
)以及合并(merge
)。第二步,应用(apply
)。例如有500个case,我们先在learn
模式跑完case,然后merge
,之后便可以在应用(apply
)模式下跑项目。最终会有比较好的编译和仿真优化,一般情况下,工程没有巨大改变,不需要重新learn
。
我们打开VCS_HOME
目录下,doc/examples/dpo/dpo_use_model
,官方给了一个demo
,Makefile如下(部分),主要涉及参考,学习,合并,获得建议,应用,报告。涉及的命令非常的简单,如果想更深入了解请参阅手册。该目录下执行make
即可跑demo
。
dpo_reference:
vcs-sverilog-full64-ntb_optsuvm-1.2ubus_tb_top-debug_access+all-lca-lcomp_ref.log-dpo-dpo_optsapps=vcsgd+user_tag=reference
./simv+UVM_NO_RELNOTES+UVM_TESTNAME=test_2m_4s-lsimv_ref.log
dpo_learn:
rm-rfsimvsimv.daidircsrcvc_hdrs.h*.keyvcs.cfg
vcs-sverilog-full64-ntb_optsuvm-1.2ubus_tb_top-debug_access+all-lca-lcomp_learn.log-dpo-dpo_optsmode=learn+apps=default,lint,upfopt,pgates+user_tag=learn+dbdir=dpo_learndb-dpo_optscfg=cfg
./simv+UVM_NO_RELNOTES+UVM_TESTNAME=test_2m_4s-lsimv_learn.log
merge_db:
dporgmerge-ddpo_learndb
dump_reco:
dporgdump-ddpo_learndb
echo"#####EnablingallrecommendationsdumpedbyDPOfromdpo_reco.csv#####"
sed-i"s/^N,/Y,/g"dpo_reco.csv
dpo_apply:
rm-rfsimvsimv.daidircsrcvc_hdrs.h*.keyvcs.cfg
vcs-sverilog-full64-ntb_optsuvm-1.2ubus_tb_top-debug_access+all-lca-lcomp_apply.log-dpo-dpo_optsreco_file=dpo_reco.csv+apps=default,fgp,lint,upfopt,pgates+user_tag=apply+learn_dbdir=dpo_learndb+cfg=cfg
./simv+UVM_NO_RELNOTES+UVM_TESTNAME=test_2m_4s-lsimv_apply.log
dpo_report:
dporgreport-ddpo_dbdir
4查看DPO报告
dporgReport
目录下用浏览器打开即可,可以打开相关的报告。可以看到相关的优化比率,CT(Compile Time
),RT(Run Time
),RM(Memory
)。

5DPO设置的权衡
任何事情的选择很难是各个方面都会带来优势,所以需要结合自己的项目去权衡应该优化那些方面,哪里是关键的设计,那么选择优化该方向。相关建议可以在文件dpo_reco.csv
打开查看。

暂无评论哦,快来评论一下吧!
