| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- #!/bin/bash -f
- #*********************************************************************************************************
- # Vivado (TM) v2020.2 (64-bit)
- #
- # Filename : MeasDataFifo.sh
- # Simulator : Xilinx Vivado Simulator
- # Description : Simulation script for compiling, elaborating and verifying the project source files.
- # The script will automatically create the design libraries sub-directories in the run
- # directory, add the library logical mappings in the simulator setup file, create default
- # 'do/prj' file, execute compilation, elaboration and simulation steps.
- #
- # Generated by Vivado on Wed May 03 12:25:18 +0700 2023
- # SW Build 3064766 on Wed Nov 18 09:12:45 MST 2020
- #
- # Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.
- #
- # usage: MeasDataFifo.sh [-help]
- # usage: MeasDataFifo.sh [-lib_map_path]
- # usage: MeasDataFifo.sh [-noclean_files]
- # usage: MeasDataFifo.sh [-reset_run]
- #
- #*********************************************************************************************************
- # Command line options
- xv_boost_lib_path=C:/Xilinx/Vivado/2020.2/tps/boost_1_64_0
- xvlog_opts="--relax"
- # Script info
- echo -e "MeasDataFifo.sh - Script generated by export_simulation (Vivado v2020.2 (64-bit)-id)\n"
- # Main steps
- run()
- {
- check_args $# $1
- setup $1 $2
- compile
- elaborate
- simulate
- }
- # RUN_STEP: <compile>
- compile()
- {
- # Compile design files
- xvlog $xvlog_opts -prj vlog.prj 2>&1 | tee compile.log
- }
- # RUN_STEP: <elaborate>
- elaborate()
- {
- xelab --relax --debug typical --mt auto -L xil_defaultlib -L unisims_ver -L unimacro_ver -L secureip -L xpm --snapshot MeasDataFifo xil_defaultlib.MeasDataFifo xil_defaultlib.glbl -log elaborate.log
- }
- # RUN_STEP: <simulate>
- simulate()
- {
- xsim MeasDataFifo -key {Behavioral:sim_1:Functional:MeasDataFifo} -tclbatch cmd.tcl -log simulate.log
- }
- # STEP: setup
- setup()
- {
- case $1 in
- "-lib_map_path" )
- if [[ ($2 == "") ]]; then
- echo -e "ERROR: Simulation library directory path not specified (type \"./MeasDataFifo.sh -help\" for more information)\n"
- exit 1
- fi
- copy_setup_file $2
- ;;
- "-reset_run" )
- reset_run
- echo -e "INFO: Simulation run files deleted.\n"
- exit 0
- ;;
- "-noclean_files" )
- # do not remove previous data
- ;;
- * )
- copy_setup_file $2
- esac
- # Add any setup/initialization commands here:-
- # <user specific commands>
- }
- # Copy xsim.ini file
- copy_setup_file()
- {
- file="xsim.ini"
- lib_map_path="C:/Xilinx/Vivado/2020.2/data/xsim"
- if [[ ($1 != "") ]]; then
- lib_map_path="$1"
- fi
- if [[ ($lib_map_path != "") ]]; then
- src_file="$lib_map_path/$file"
- if [[ -e $src_file ]]; then
- cp $src_file .
- fi
- # Map local design libraries to xsim.ini
- map_local_libs
- fi
- }
- # Map local design libraries
- map_local_libs()
- {
- updated_mappings=()
- local_mappings=()
- # Local design libraries
- local_libs=()
- if [[ 0 == ${#local_libs[@]} ]]; then
- return
- fi
- file="xsim.ini"
- file_backup="xsim.ini.bak"
- if [[ -e $file ]]; then
- rm -f $file_backup
- # Create a backup copy of the xsim.ini file
- cp $file $file_backup
- # Read libraries from backup file and search in local library collection
- while read -r line
- do
- IN=$line
- # Split mapping entry with '=' delimiter to fetch library name and mapping
- read lib_name mapping <<<$(IFS="="; echo $IN)
- # If local library found, then construct the local mapping and add to local mapping collection
- if `echo ${local_libs[@]} | grep -wq $lib_name` ; then
- line="$lib_name=xsim.dir/$lib_name"
- local_mappings+=("$lib_name")
- fi
- # Add to updated library mapping collection
- updated_mappings+=("$line")
- done < "$file_backup"
- # Append local libraries not found originally from xsim.ini
- for (( i=0; i<${#local_libs[*]}; i++ )); do
- lib_name="${local_libs[i]}"
- if `echo ${local_mappings[@]} | grep -wvq $lib_name` ; then
- line="$lib_name=xsim.dir/$lib_name"
- updated_mappings+=("$line")
- fi
- done
- # Write updated mappings in xsim.ini
- rm -f $file
- for (( i=0; i<${#updated_mappings[*]}; i++ )); do
- lib_name="${updated_mappings[i]}"
- echo $lib_name >> $file
- done
- else
- for (( i=0; i<${#local_libs[*]}; i++ )); do
- lib_name="${local_libs[i]}"
- mapping="$lib_name=xsim.dir/$lib_name"
- echo $mapping >> $file
- done
- fi
- }
- # Delete generated data from the previous run
- reset_run()
- {
- files_to_remove=(xelab.pb xsim.jou xvhdl.log xvlog.log compile.log elaborate.log simulate.log xelab.log xsim.log run.log xvhdl.pb xvlog.pb MeasDataFifo.wdb xsim.dir)
- for (( i=0; i<${#files_to_remove[*]}; i++ )); do
- file="${files_to_remove[i]}"
- if [[ -e $file ]]; then
- rm -rf $file
- fi
- done
- }
- # Check command line arguments
- check_args()
- {
- if [[ ($1 == 1 ) && ($2 != "-lib_map_path" && $2 != "-noclean_files" && $2 != "-reset_run" && $2 != "-help" && $2 != "-h") ]]; then
- echo -e "ERROR: Unknown option specified '$2' (type \"./MeasDataFifo.sh -help\" for more information)\n"
- exit 1
- fi
- if [[ ($2 == "-help" || $2 == "-h") ]]; then
- usage
- fi
- }
- # Script usage
- usage()
- {
- msg="Usage: MeasDataFifo.sh [-help]\n\
- Usage: MeasDataFifo.sh [-lib_map_path]\n\
- Usage: MeasDataFifo.sh [-reset_run]\n\
- Usage: MeasDataFifo.sh [-noclean_files]\n\n\
- [-help] -- Print help information for this script\n\n\
- [-lib_map_path <path>] -- Compiled simulation library directory path. The simulation library is compiled\n\
- using the compile_simlib tcl command. Please see 'compile_simlib -help' for more information.\n\n\
- [-reset_run] -- Recreate simulator setup files and library mappings for a clean run. The generated files\n\
- from the previous run will be removed. If you don't want to remove the simulator generated files, use the\n\
- -noclean_files switch.\n\n\
- [-noclean_files] -- Reset previous run, but do not remove simulator generated files from the previous run.\n\n"
- echo -e $msg
- exit 1
- }
- # Launch script
- run $1 $2
|