modelsim编译脚本

自己写了一份,主要功能是新建work库,然后编译RTL_BASE_DIR下所有的.v文件,然后开始仿真
脚本放在modelsim目录下。
需要设置代码参数包括 RTL_ROOT_DIR,可以设置多个,自动包含子目录,检索所有.v文件;
顶层模块名。
假设脚本命名为run.bat,没有参数只编译,参数为all 编译+仿真;参数为clean,清除仿真目录。

@echo off
rem params:clean,all
rem run 编译
rem run all 编译+仿真
rem run clean 清除目录

clear
setlocal enabledelayedexpansion
cd /d %~dp0
rem 设置代码目录
set RTL_ROOT_DIR=..\RTL
rem 设置顶层模块名
set tb_module=tb_framing
rem 设置仿真器目录,如果在环境变量可注释
rem set SIMULATOR_PATH=E:\QuestaSim\questa_fse\win64\;
rem set PATH=%SIMULATOR_PATH%%PATH%

goto main

rem 定义函数
:FILE_LIST
set RTL_SUB_DIR_=%1
for /r %RTL_SUB_DIR_% %%i in (*.v) do (
	echo file: %%i ok
	set compile_file=!compile_file! "%%i"
)
goto:eof

:COMPILE
if not exist work (
	rem vdel -lib work -all
	vlib work
)
vmap work work
vlog -incr -work work %compile_file%
IF %errorlevel% NEQ 0 (echo ERROR:vlog & exit)
vlog -work work -refresh -force_refresh
echo compile finished.
goto:eof

:FILE_LIST_0
set compile_file=
for %%a in (%RTL_ROOT_DIR%) do (
	set RTL_SUB_DIR=%%a
	echo LIST_SUB_DIR = !RTL_SUB_DIR!
	call:FILE_LIST !RTL_SUB_DIR!
)
goto:eof

:SIM
vsim -debugdb -t 1ps -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L cycloneive_ver -L rtl_work -L work -voptargs="+acc"  %tb_module%
IF %errorlevel% NEQ 0 echo ERROR:vlog else
echo simulation started.
goto:eof

:CLEAN
IF EXIST work (
	vdel -lib work -all
	IF %errorlevel% NEQ 0 echo ERROR:VDEL
)
IF EXIST modelsim.ini (
	del /F modelsim.ini
)
echo clean lib finished.
goto:eof

:main
if /i "%1x" == "cleanx" (
	call:CLEAN
	goto END
)
call:FILE_LIST_0
call:COMPILE
if /i "%1x" == "allx" (
	call:SIM
)
:END


我的目录如下:
image
其中的compile.bat是脚本
代码里每次会删除所有编译结果,如果不需要删除,可以注释掉

posted @ 2024-06-22 00:42  蕉太羊  阅读(55)  评论(0)    收藏  举报