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