análisis de script cshell

Nota: los comandos cshell se ejecutan secuencialmente de arriba a abajo; los comandos makefile se ejecutan simultáneamente;
1. ¡Código fuente de script
#! / bin / csh
setenv DUV_DIR… /… / duv
setenv VERDI_LIB_PATH $ NOVAS / share / PLI / VCS / LINUX64
setenv LD_LIBRARY_PATH $ NOVAS / share / PLI / VCS / LINUX64

establecer TESTCASE =
establecer SEED = fecha +% N

if ($ #argv == 3) luego
desarmar TESTCASE
establecer TESTCASE = $ 2
desarmar SEED
establecer SEED = $ 3

de lo contrario, si ($ #argv == 2)
desarma TESTCASE
establece TESTCASE = $ 2
endif

set VERBOSITY = UVM_MEDIUM
set COMPILE = "vcs -full64 + lint = TFIPC-L -sverilog -timescale = 1ns / 1ps -ntb_opts uvm-1.1
-Mupdate -debug_all
+ v2k + nospecify + notimingcheck + profile
+ vcs + lic + wait
+ libext + .v + .vg + .sv
-o simv_ $ SEED
-l… /… / log / $ {TESTCASE} _compile_ $ SEED.log "

set FILELIST = "+ incdir + ... / ... / testbench
+ incdir + ... / ... / testcase
-f $ {DUV_DIR} /filelist.f ... / ... / testcase / $ TESTCASE.sv"

set DUMP = "+ vcsd -load $ {VERDI_LIB_PATH} /libnovas.so:FSDBDumpCmd
-P $ {VERDI_LIB_PATH} /novas.tab
$ {VERDI_LIB_PATH} /pli.a"

set USERDEFINE = "+ define + UVM_REPORT_DISABLE_FILE_LINE"

set RUN = "./simv_$ SEED + UVM_VERBOSITY = $ VERBOSITY + ntb_random_seed = $ SEED + UVM_TESTNAME = $ TESTCASE -l ... / ... / log / $ {TESTCASE} -run- $ SEED.log + UVM_NO_RELNOTES"

if ($ # argv = = 1 && $ 1 == clean) entonces
rm -rf * ~ core csrc simv * vc_hdrs.h ucli.key urg * * .log * .fsdb DVEfiles * .vpd
puede eliminar múltiples rutas diferentes al mismo tiempo Múltiples carpetas y archivos diferentes, todo en un solo lugar.
rm -rf… /…/log/{*.log,*.fsdb,verdiLog}
salida 1
endif

if (-e simv_ $ SEED) entonces
$ COMPILE $ FILELIST $ DUMP $ USERDEFINE
set result = $?
if ($ result! = 0)
echo "¡El resultado de la compilación tiene ERROR!"
echo "Consulte ... / ... / log / $ {TESTCASE} -compile- $ SEED.log para obtener más detalles".
salida 1
endif
endif

if ($ #argv> 1) luego
if ($ 1 = = run) luego
$ RUN + fsdbfile +… /… / wave / $ {TESTCASE} _ $ SEED.fsdb + fsdb + autoflush -ucli -i… /… / scripts / vcs.cmd
else if ($ 1 = = nodump) luego
$ RUN
else if ($ 1 == gui) luego
$ RUN -gui
else if ($ 1 == verdi) luego
verdi $ {FILELIST} $ USERDEFINE -sv -syntaxerrormax 9999 &
#打开 verdi 关联 代码 后台 运行
endif
endif

Segundo, el uso del script
Ejecute el caso de uso inicial y la inicialización inicial
b ... / ... / scripts / run_vcs.csh ejecute
el caso de uso especificado y la inicialización aleatoria
b ... / ... / scripts / run_vcs.csh ejecute testcase_name seed
ejecute el caso de uso inicial y la inicialización y no descargue la forma de onda
b ... / ... / scripts / run_vcs.csh nodump
ejecuta el caso de uso inicial y la inicialización inicial y abre la interfaz gráfica de usuario
b ... / ... / scripts / run_vcs.csh gui
limpia el directorio de trabajo
b ... / ... / scripts / run_vcs.csh clean
abre verdi
b ... / … / Scripts / run_vcs.csh verdi

Tercero, la sintaxis del script
VERDI_LIB_PATH verdi archivo de biblioteca
LD_LIBRARY_PATH permite al sistema Linux encontrar el archivo de biblioteca requerido por verdi
-P $ {VERDI_LIB_PATH} /novas.tab cargar el archivo de tabla
$ {VERDI_LIB_PATH} /pli.a cargar la biblioteca estática

Sintaxis del shell
Operador de comparación de archivos: -e nombre de archivo Verdadero si existe el nombre de archivo.
date +% N La hora actual, convertida a 9 dígitos, la unidad es ns
$ El
shell de uso usa $ para tomar el valor de una variable, el uso común $ VAR o $ {VAR}.
$ # Representa el número de parámetros entrantes
$ @ Representa la lista de parámetros entrantes
$ 0 Representa el script en sí
$ 1 Representa el primer parámetro pasado en
$ * Muestra todos los parámetros entrantes en modo de cadena
$ $ ID de proceso del script en ejecución
$ ? Muestra el estado de salida del último comando, 0 significa que no hay error

salir 0 significa salir normalmente sin ejecutar los siguientes comandos.
salida 1 significa salida anormal, no ejecute los siguientes comandos. Puede configurar el registro antes de cerrar sesión para facilitar la depuración.

Sintaxis relacionada con
Verdi + fsdbfile +… /… / wave / $ {TESTCASE} _ $ SEED.fsdb especifica el directorio de almacenamiento y el nombre del archivo de onda fija, la ruta predeterminada es el directorio de trabajo de simulación actual, el nombre predeterminado es novas.fsdb
+ fsdb + autoflush en simulación Stop o ctrl c genera automáticamente la forma de onda en el búfer cuando se detiene. Sin este parámetro, la forma de onda no se volcará durante la simulación. Debe escribir fsdbDumpflush después de que el comando ucli ejecute 100ns para volcar la forma de onda.
-ucli -i ... / ... / scripts / vcs.cmd archivo de entrada ucli

38 artículos originales publicados · Me gusta 29 · Visitas 10,000+

Supongo que te gusta

Origin blog.csdn.net/weixin_45270982/article/details/104041682
Recomendado
Clasificación