irun增量编译
来源:互联网 发布:用相对坐标编程图例 编辑:程序博客网 时间:2024/05/16 10:54
irun支持MSIE编译,MSIE的全称是 multi-snapshot incremental elaboration。将多个编译好的snapshot,组合成一个最终的snapshot,去仿真。
利用这个技术,我们就可以使用irun来进行增量编译,从而节约编译时间。
为了实现增量编译,我们将snapshot分为primary snapshot和incremental snapshot,primary snapshot指环境中不经常变化的代码,编译成的snapshot,incremental snapshot指环境中经常变化的代码,编译成的snapshot,最后再将这两个snapshot进行组合,得到最终的snapshot,去仿真。
一、编译流程
下图是单个primary snapshot的编译流程:
将DUT,编译成primary snapshot,TB载入primary snapshot后,和tb一起进行编译,得到仿真的snapshot,再去仿真。
下图是多个primary snapshot的编译流程:
将SOC编译成primary snapshot,将IP编译成primary snapshot,将2个primary snapshot,和tb一起编译,得到最终的仿真snapshot,再进行仿真。
二、实现方法
一般情况下,我们是将DUT和TB进行分开编译,以实现增量编译。对于验证人员来说,DUT是不会变化的,因此我们可以将DUT,编译成primary snapshot,TB部分载入DUT的primary snapshot,和自己的TB代码一起编译,成最终的incremental snapshot,去仿真。这样,当环境修改之后,不需要重新编译RTL,这样,就节省了编译时间。特别是RTL的设计规模很大之后,这节约的时间,就更明显了。
三、测试
测试环境,组织结构如下:
- flist.rtl : 编译rtl的flist
- flist.tb : 编译tb的flist
- Makefile
- top_tb.sv : testbench顶层
- source: 存放rtl code的目录
- uvm_code:存放tb code的目录
1、makefile解析
Makefile内容如下:
tc:= base_test_0
irun_prim:
irun -sv -64bit -f flist.rtl -mkprimsnap -top uart_tx -l irun_rtl.log
irun_inca:
irun -c -sv -64bit -f flist.tb -uvm -uvmhome CDNS-1.2 -primtop uart_tx -l irun_tb.log
irun_run:
irun -R +UVM_TESTNAME=$(tc) -l irun_run.log
clean:
rm -rf INCA_libs
rm -f *.log
对于 irun_prim 目标,根据RTL代码生成primary snapshot。
- -sv: 启动sv编译
- -64bit: 启动64位的irun
- -f flist.rtl : 指定编译RTL的flist
- -mkprimsnap: 生成primary snapshot
- -top: 指定RTL的顶层
- -l: 指定log文件
对于 irun_inca 目标,载入RTL编译得到的primary snapshot,根据TB代码生成incremental snapshot,
- -c: 只编译,不仿真
- -f flist.tb: 指定编译TB的flist
- -uvm: 启动uvm编译
- -uvmhome CDNS-1.2: 指定uvm的home目录为irun工具目录下的UVM-1.2目录
- -primtop uart_tx: 指定需要载入primary snapshot的顶层。
对于 irun_run 目标,仿真。
- -R : 不编译,直接仿真
- +UVM_TESTNAME: uvm指定testcase的选项
2、第一次执行
make irun_prim; 生成primary snapshot
make irun_inca: 载入primary snapshot,和tb一起编译生成incremantal snapshot。
载入primary snapshot:
生成incremantal snapshot。
3、第二次执行
此时,修改top_tb.sv的代码,增加一行打印。
因为RTL没有编译,因此可以跳过编译RTL,直接make irun_inca。
载入 primary snapshot,跳过了代码生成。
生成incremantal snapshot。
仿真,打印出hello。
测试的RTL,规模比较小,感受不到增量编译的好处,但是当RTL的规模一旦变得很大,编译RTL就要花费数十分钟,此时,就可以体会到增量编译的好处了。
在服务器,测试我们的环境,使用增量编译后,将编译时间,从5分钟,缩减到了20秒。
- irun增量编译
- 如何提高vcs以及irun的编译与仿真速度
- FLEX增量编译
- VS2008增量编译
- Xilinx 增量编译
- 增量编译php
- VS设置增量编译
- Dll编译增量发布
- 转载 关于增量编译
- latex 编译加速 增量编译
- Tcl Script for Irun
- vc的增量编译问题
- Keil增量编译build异常
- makefile增量编译的笔记
- vs2010 增量编译,解决编译缓慢
- VS2015增量编译,加快编译速度
- ncverilog和irun的区别
- android 增量更新 bsdiff\bspatch库编译
- C语言常见错误
- 关于$_SERVER中的PHP_SELF、REQUEST_URI以及SCRIPT_NAME的区别
- apache和tomcat有什么不同,为什么要整合apache 和tomcat?
- 最大公约数-辗转相除法
- android后台通过View生成分享图片
- irun增量编译
- 在Gson中传递uri对象
- mysql 追加update_time、create_time、id三字段
- 数据库事务特性、并发、隔离级别、锁种类、锁粒度
- Django使用自定义验证
- C语言回调函数
- 自顶向下,逐步求精
- 机器学习的数学基础(1)——常见的函数与分布
- 解决Eclipse打开后无项目问题