⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 run_sim.scr

📁 uart16550 IP核 HDL源代码
💻 SCR
字号:
#!/bin/csh -f# GLOBAL VARIABLES###################set sim_top  = testbench;set arg_tool = "NCSim";        # By default NCSim is used as simulation tool set arg_wave = 0;              # By default waveform is not recorded set arg_verb = 0;              # By default basic display on monitor (no verbose)set arg_test = 0;              # By default all testcases are simulated # GETTING PARAMETERS FROM COMMAND LINE#######################################set cur_arg = 1;if ($#argv < 1) then    echo ""    echo "    Verification without any argument:"else    while ($cur_arg <= $#argv)        switch ("$argv[$cur_arg]")        # HELP ARGUMENT        case "-h":            goto help            breaksw        case "help":            goto help            breaksw        # TOOL ARGUMENT        case "-m":            set arg_tool = "ModelSim";            echo "      $argv[$cur_arg] - ModelSim tool"            breaksw        case "modelsim"            set arg_tool = "ModelSim";            echo "      $argv[$cur_arg] - ModelSim tool"            breaksw        # WAVEFORM ARGUMENT        case "-w":            @ arg_wave = 1;            echo "      $argv[$cur_arg] - Waveform"            breaksw        case "waveform":            @ arg_wave = 1;            echo "      $argv[$cur_arg] - Waveform"            breaksw        # VERBOSE ARGUMENT        case "-v":            @ arg_verb = 1;            echo "      $argv[$cur_arg] - Verbose"            breaksw        case "verbose":            @ arg_verb = 1;            echo "      $argv[$cur_arg] - Verbose"            breaksw        # TESTCASE ARGUMENT        default:            if (-e ../../../bench/verilog/testcases/$argv[$cur_arg].v) then                set arg_test = $argv[$cur_arg];                echo "      $argv[$cur_arg] - Testcase"        # INVALID ARGUMENT            else                echo ""                echo "    Invalid verification argument: $argv[$cur_arg]"                goto help            endif            breaksw        endsw        @ cur_arg++    endendif# SIMULATION LOOP##################set cur_test_num = 0;simulate:    # DELETING FILES    #################        # Prepared files    if (-e ./file_list.lst) then        rm -rf ./file_list.lst    endif    if (-e ../bin/cds.lib) then        rm -rf ../bin/cds.lib    endif    if (-e ../bin/hdl.var) then        rm -rf ../bin/hdl.var    endif    if (-e ./compile.args) then        rm -rf ./compile.args    endif    if (-e ./elab.args) then        rm -rf ./elab.args    endif    if (-e ./sim.args) then        rm -rf ./sim.args    endif    if (-e ./sim.tcl) then        rm -rf ./sim.tcl    endif    if (-e ./sim.do) then        rm -rf ./sim.do    endif        # Projects, Libraries and Logs    if (-e ./uart.mpf) then        rm -rf ./uart.mpf    endif    if (-e ./work) then        rm -rf ./work    endif    if (-e ./INCA_libs/worklib) then        rm -rf ./INCA_libs/worklib    endif    # PREPARING FILE LIST    ######################        # Design files    echo "../../../rtl/verilog/uart_top.v"                    >> ./file_list.lst    echo "../../../rtl/verilog/uart_wb.v"                     >> ./file_list.lst    echo "../../../rtl/verilog/uart_transmitter.v"            >> ./file_list.lst    echo "../../../rtl/verilog/uart_receiver.v"               >> ./file_list.lst    echo "../../../rtl/verilog/uart_tfifo.v"                  >> ./file_list.lst    echo "../../../rtl/verilog/uart_rfifo.v"                  >> ./file_list.lst    echo "../../../rtl/verilog/uart_regs.v"                   >> ./file_list.lst    echo "../../../rtl/verilog/uart_debug_if.v"               >> ./file_list.lst    # Testcase file    if ($arg_test == 0) then        set i = 0;        foreach testcase (../../../bench/verilog/testcases/uart*.v)            if ($i == $cur_test_num) then                set testcase_i = $testcase:t:r            endif            @ i++        end        set max_test_num = $i;    else        set testcase_i   = $arg_test;        set max_test_num = 1;    endif    echo "//////////////////////////////////////////////////" >  ./file_list.lst    echo "// File created within script ${0}"                 >> ./file_list.lst    echo "//     path: $cwd"                                  >> ./file_list.lst    echo "//     user: $user"                                 >> ./file_list.lst    echo "//////////////////////////////////////////////////" >> ./file_list.lst    echo "../../../bench/verilog/testcases/$testcase_i.v"     >> ./file_list.lst    # Delete vawe out file for this testcase, if it already exists    if (-e ../out/$testcase_i.wlf) then        rm -rf ../out/$testcase_i.wlf    endif    # Delete log out file for this testcase, if it already exists    if (-e ../log/$testcase_i.log) then        rm -rf ../log/$testcase_i.log    endif    # Testbench files    echo "../../../bench/verilog/uart_testbench.v"            >> ./file_list.lst    echo "../../../bench/verilog/wb_master_model.v"           >> ./file_list.lst    echo "../../../bench/verilog/uart_device.v"               >> ./file_list.lst    echo "../../../bench/verilog/uart_testbench_utilities.v"  >> ./file_list.lst    echo "../../../bench/verilog/uart_wb_utilities.v"         >> ./file_list.lst    echo "../../../bench/verilog/uart_device_utilities.v"     >> ./file_list.lst    # COMPILING & ELABORATING    ##########################        if ("$arg_tool" == "NCSim") then        # cds.lib library file        echo "//////////////////////////////////////////////////" >  ../bin/cds.lib        echo "// File created within script ${0}"                 >> ../bin/cds.lib        echo "//     path: $cwd"                                  >> ../bin/cds.lib        echo "//     user: $0"                                    >> ../bin/cds.lib        echo "//////////////////////////////////////////////////" >> ../bin/cds.lib        echo "DEFINE worklib ./INCA_libs/worklib"                 >> ../bin/cds.lib                # hdl.var variable file        echo "//////////////////////////////////////////////////" >  ../bin/hdl.var        echo "// File created within script ${0}"                 >> ../bin/hdl.var        echo "//     path: $cwd"                                  >> ../bin/hdl.var        echo "//     user: $0"                                    >> ../bin/hdl.var        echo "//////////////////////////////////////////////////" >> ../bin/hdl.var        echo "INCLUDE \$CDS_INST_DIR/tools/inca/files/hdl.var"    >> ../bin/hdl.var        echo "DEFINE WORK worklib"                                >> ../bin/hdl.var                # compile.args argument file        echo "//////////////////////////////////////////////////" >  ./compile.args        echo "// File created within script ${0}"                 >> ./compile.args        echo "//     path: $cwd"                                  >> ./compile.args        echo "//     user: $0"                                    >> ./compile.args        echo "//////////////////////////////////////////////////" >> ./compile.args        echo "-CDSLIB ../bin/cds.lib"                             >> ./compile.args        echo "-HDLVAR ../bin/hdl.var"                             >> ./compile.args        echo "-MESSAGES"                                          >> ./compile.args        echo "-NOCOPYRIGHT"                                       >> ./compile.args        echo "-INCDIR ../../../rtl/verilog"                       >> ./compile.args        echo "-INCDIR ../../../bench/verilog"                     >> ./compile.args        echo "-INCDIR ../../../bench/verilog/testcases"           >> ./compile.args        if ($arg_verb == 1) then          echo "-DEFINE VERBOSE"                                  >> ./compile.args        endif        cat ./file_list.lst                                       >> ./compile.args        # compiling        ncvlog -LOGFILE ../log/$testcase_i.compile.log -f ./compile.args #> /dev/null                # elab.args argument file        echo "//////////////////////////////////////////////////" >  ./elab.args        echo "// File created within script ${0}"                 >> ./elab.args        echo "//     path: $cwd"                                  >> ./elab.args        echo "//     user: $0"                                    >> ./elab.args        echo "//////////////////////////////////////////////////" >> ./elab.args        echo "-CDSLIB ../bin/cds.lib"                             >> ./elab.args        echo "-HDLVAR ../bin/hdl.var"                             >> ./elab.args        echo "-MESSAGES"                                          >> ./elab.args        echo "-NOCOPYRIGHT"                                       >> ./elab.args        echo "-NOTIMINGCHECKS"                                    >> ./elab.args        echo "-SNAPSHOT worklib.testbench:rtl"                    >> ./elab.args        echo "-NO_TCHK_MSG"                                       >> ./elab.args        echo "-ACCESS +RWC"                                       >> ./elab.args        echo "worklib.$sim_top"                                   >> ./elab.args        # elaborating        ncelab -LOGFILE ../log/$testcase_i.elab.log -f ./elab.args #> /dev/null    else            # compile.args argument file        echo "+libext+.v"                               >> ./compile.args        echo "-y ../../../rtl/verilog"                  >> ./compile.args        echo "-y ../../../bench/verilog"                >> ./compile.args        echo "-y ../../../bench/verilog/testcases"      >> ./compile.args        echo "-work ./work"                             >> ./compile.args        echo "+incdir+../../../rtl/verilog"             >> ./compile.args        echo "+incdir+../../../bench/verilog"           >> ./compile.args        echo '+define+LOG_DIR=\"../log/$testcase_i\"'   >> ./compile.args        if ($arg_verb == 1) then          echo "+define+VERBOSE"                        >> ./compile.args        endif        cat ./file_list.lst                             >> ./compile.args                # open project#        echo "project new ./ testbench ./work"           >> ./sim.do        vlib -dos ./work                # compiling #       echo "vlog -f ./compile.args"                   >> ./sim.do        vlog -f ./compile.args    endif    # SIMULATING    #############    if ("$arg_tool" == "NCSim") then        # sim.args argument file        echo "//////////////////////////////////////////////////" >  ./sim.args        echo "// File created within script ${0}"                 >> ./sim.args        echo "//     path: $cwd"                                  >> ./sim.args        echo "//     user: $0"                                    >> ./sim.args        echo "//////////////////////////////////////////////////" >> ./sim.args        echo "-CDSLIB ../bin/cds.lib"                             >> ./sim.args        echo "-HDLVAR ../bin/hdl.var"                             >> ./sim.args        echo "-MESSAGES"                                          >> ./sim.args        echo "-NOCOPYRIGHT"                                       >> ./sim.args        echo "-INPUT ./sim.tcl"                                   >> ./sim.args        echo "worklib.testbench:rtl"                              >> ./sim.args        # sim.tcl file        echo "//////////////////////////////////////////////////"              >  ./sim.tcl        echo "// File created within script ${0}"                              >> ./sim.tcl        echo "//     path: $cwd"                                               >> ./sim.tcl        echo "//     user: $0"                                                 >> ./sim.tcl        echo "//////////////////////////////////////////////////"              >> ./sim.tcl        if ($arg_wave) then            echo "database -open waves -shm -into ../out/waves.shm"            >> ./sim.tcl            echo "probe -create -database waves $sim_top -shm -all -depth all" >> ./sim.tcl            echo "run"                                                         >> ./sim.tcl        else            echo "run"                                                         >> ./sim.tcl        endif        echo     "quit"                                                        >> ./sim.tcl        # simulating        ncsim -LICQUEUE -LOGFILE ../log/$testcase_i.sim.log -f ./sim.args    else            # sim.do do file        echo "vsim work.testbench work.testbench_utilities work.uart_wb_utilities work.uart_device_utilities work.testcase -wlf ../out/$testcase_i.wlf" >> ./sim.do        if ($arg_wave) then          echo "log -r -internal -ports /testbench/*"                          >> ./sim.do        endif        echo "run -all"                                                        >> ./sim.do        vsim -c -do ./sim.do                 endif    @ cur_test_num++        if ($cur_test_num < $max_test_num) then        goto simulate    endifexit# HELP DISPLAY###############help:    echo ""    echo "    Valid verification arguments:"    echo "      'help'     / '-h' : This help is displayed"    echo "      'modelsim' / '-m' : ModelSim simulation tool is used, otherwise"    echo "                          NCSim is used (default)"    echo "      'waveform' / '-w' : Waveform output is recorded, otherwise"    echo "                          NO waveform is recorded (default)"    echo "      'verbose'  / '-v' : Verbose display on monitor, otherwise"    echo "                          basic display on monitor (default)"    echo "      '\042testcase\042'      : Testcase which is going to be simulated, otherwise"    echo "                          ALL testcases are simulated - regression (default);"    echo "                          Available testcases:"    foreach testcase (../../../bench/verilog/testcases/uart*.v)        echo "                            "$testcase:t:r    end    echo ""exit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -