在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3940|回复: 9

[求助] 在只修改验证环境的前提下,如何让VCS只编译一次DUT

[复制链接]
发表于 2016-4-1 09:52:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我目前遇到的问题是当设计很大的时候,VCS每次编译都需要很长时间,而我有时候只是修改了环境,就需要重新编译一次,有没有办法解决呀,跪求群里的大神们!!!!!
发表于 2016-4-3 22:49:32 | 显示全部楼层
1. Incremental compilation
2. Partition compilation. But it is much complex than incremental compilation. Test-bench has to be modified to make sure that DUT and TB can be separated completely.
发表于 2016-4-5 10:39:50 | 显示全部楼层
partition compile, incremental 不能显著提高编译速度。
发表于 2024-8-24 15:34:20 | 显示全部楼层
请问楼主解决了这个问题嘛
发表于 2024-8-28 11:09:35 | 显示全部楼层
用vcs三步法,分别单独把dut和环境放到两个work库中。再改环境只用编环境然后elab生成simv,再执行
发表于 2024-8-28 19:21:57 | 显示全部楼层
三步法正解,就是makefile细化一下就行了。dut代码和testbench代码分开编译。
这样你testbench改动,只需编译testbench部分。
最后elab一下就可以了。
发表于 2024-9-4 16:43:04 | 显示全部楼层
makefile
# 定义顶层模块
TOP_MODULE = top_module

# 定义VCS工具
VCS = vcs

# 定义编译选项
VCS_FLAGS = -full64 -sverilog -debug_all -lca

# 定义仿真选项
SIMV_FLAGS = -l simv.log

# 定义包含DUT和testbench文件的列表
DUT_FILES = $(wildcard dut/*.v)
TB_FILES = $(wildcard tb/*.v)

# 定义仿真可执行文件
SIMV = simv

# 定义仿真波形文件
WAVEFORM = waveform.vpd

# 默认目标
all: compile.elab compile.sim

# 分析DUT
compile.dut: $(DUT_FILES)
        $(VCS) $(VCS_FLAGS) -work work_dut $^ -top $(TOP_MODULE) -f dut_files.f -l dut.log
        touch compile.dut

# 分析testbench
compile.tb: $(TB_FILES)
        $(VCS) $(VCS_FLAGS) -work work_tb $^ -f tb_files.f -l tb.log
        touch compile.tb

# 详细化(Elaboration)
compile.elab: compile.dut compile.tb
        $(VCS) $(VCS_FLAGS) -work work -top $(TOP_MODULE) -l elab.log
        touch compile.elab

# 仿真(Simulation)
compile.sim: compile.elab
        ./$(SIMV) $(SIMV_FLAGS)
        touch compile.sim

# 清理仿真结果
clean:
        rm -rf csrc simv* compile.* *.log *.vpd *.daidir

# 增量编译DUT
incremental.dut:
        $(VCS) $(VCS_FLAGS) -work work_dut -top $(TOP_MODULE) -l incremental_dut.log $(DUT_FILES)

# 增量编译testbench
incremental.tb:
        $(VCS) $(VCS_FLAGS) -work work_tb -l incremental_tb.log $(TB_FILES)

# 仿真波形查看
view_waveform:
        dve -full64 -vpd $(WAVEFORM)

# 伪目标
.PHONY: all compile.dut compile.tb compile.elab compile.sim clean incremental.dut incremental.tb view_waveform
发表于 2024-9-4 17:10:13 | 显示全部楼层
makefile代码供参考:

# 定义顶层模块
TOP_MODULE = top_module

# 定义VCS工具
VCS = vcs

# 定义编译选项
VCS_FLAGS = -full64 -sverilog -debug_all -lca

# 定义仿真选项
SIMV_FLAGS = -l simv.log

# 定义包含DUT和testbench文件的列表
DUT_FILES = $(wildcard dut/*.v)
TB_FILES = $(wildcard tb/*.v)

# 定义仿真可执行文件
SIMV = simv

# 定义仿真波形文件
WAVEFORM = waveform.vpd

# 默认目标
all: compile.elab compile.sim

# 分析DUT
compile.dut: $(DUT_FILES)
        $(VCS) $(VCS_FLAGS) -work work_dut $^ -top $(TOP_MODULE) -f dut_files.f -l dut.log
        touch compile.dut

# 分析testbench
compile.tb: $(TB_FILES)
        $(VCS) $(VCS_FLAGS) -work work_tb $^ -f tb_files.f -l tb.log
        touch compile.tb

# 详细化(Elaboration)
compile.elab: compile.dut compile.tb
        $(VCS) $(VCS_FLAGS) -work work -top $(TOP_MODULE) -l elab.log
        touch compile.elab

# 仿真(Simulation)
compile.sim: compile.elab
        ./$(SIMV) $(SIMV_FLAGS)
        touch compile.sim

# 清理仿真结果
clean:
        rm -rf csrc simv* compile.* *.log *.vpd *.daidir

# 增量编译DUT
incremental.dut:
        $(VCS) $(VCS_FLAGS) -work work_dut -top $(TOP_MODULE) -l incremental_dut.log $(DUT_FILES)

# 增量编译testbench
incremental.tb:
        $(VCS) $(VCS_FLAGS) -work work_tb -l incremental_tb.log $(TB_FILES)

# 仿真波形查看
view_waveform:
        dve -full64 -vpd $(WAVEFORM)

# 伪目标
.PHONY: all compile.dut compile.tb compile.elab compile.sim clean incremental.dut incremental.tb view_waveform
发表于 2024-9-16 18:43:37 来自手机 | 显示全部楼层
学习了
发表于 2024-9-19 13:46:34 | 显示全部楼层


fulic 发表于 2024-9-4 17:10
makefile代码供参考:

# 定义顶层模块


能不能tb中又分开2步进行vlogan?例如如果用vip,那么本质上来说tb里的uvm pkg和xxx vip pkg全都是恒定不变的,能提前vlogan这一部分吗,然后改验证环境后就只单独vlogan toptb文件,然后直接elab?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 11:54 , Processed in 0.023320 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表