| 1 | 157 | olivier.gi | #!/bin/bash
 | 
      
         | 2 |  |  | #------------------------------------------------------------------------------
 | 
      
         | 3 |  |  | # Copyright (C) 2001 Authors
 | 
      
         | 4 |  |  | #
 | 
      
         | 5 |  |  | # This source file may be used and distributed without restriction provided
 | 
      
         | 6 |  |  | # that this copyright statement is not removed from the file and that any
 | 
      
         | 7 |  |  | # derivative work contains the original copyright notice and the associated
 | 
      
         | 8 |  |  | # disclaimer.
 | 
      
         | 9 |  |  | #
 | 
      
         | 10 |  |  | # This source file is free software; you can redistribute it and/or modify
 | 
      
         | 11 |  |  | # it under the terms of the GNU Lesser General Public License as published
 | 
      
         | 12 |  |  | # by the Free Software Foundation; either version 2.1 of the License, or
 | 
      
         | 13 |  |  | # (at your option) any later version.
 | 
      
         | 14 |  |  | #
 | 
      
         | 15 |  |  | # This source is distributed in the hope that it will be useful, but WITHOUT
 | 
      
         | 16 |  |  | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 | 
      
         | 17 |  |  | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
 | 
      
         | 18 |  |  | # License for more details.
 | 
      
         | 19 |  |  | #
 | 
      
         | 20 |  |  | # You should have received a copy of the GNU Lesser General Public License
 | 
      
         | 21 |  |  | # along with this source; if not, write to the Free Software Foundation,
 | 
      
         | 22 |  |  | # Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 | 
      
         | 23 |  |  | #
 | 
      
         | 24 |  |  | #------------------------------------------------------------------------------
 | 
      
         | 25 |  |  | #
 | 
      
         | 26 |  |  | # File Name: rtlsim.sh
 | 
      
         | 27 |  |  | #
 | 
      
         | 28 |  |  | # Author(s):
 | 
      
         | 29 |  |  | #             - Olivier Girard,    olgirard@gmail.com
 | 
      
         | 30 |  |  | #             - Mihai M.,          mmihai@delajii.net
 | 
      
         | 31 |  |  | #
 | 
      
         | 32 |  |  | #------------------------------------------------------------------------------
 | 
      
         | 33 |  |  | # $Rev: 138 $
 | 
      
         | 34 |  |  | # $LastChangedBy: olivier.girard $
 | 
      
         | 35 |  |  | # $LastChangedDate: 2012-04-23 13:10:00 +0200 (Mon, 23 Apr 2012) $
 | 
      
         | 36 |  |  | #------------------------------------------------------------------------------
 | 
      
         | 37 |  |  |  
 | 
      
         | 38 |  |  | ###############################################################################
 | 
      
         | 39 |  |  | #                            Parameter Check                                  #
 | 
      
         | 40 |  |  | ###############################################################################
 | 
      
         | 41 |  |  | EXPECTED_ARGS=3
 | 
      
         | 42 |  |  | if [ $# -ne $EXPECTED_ARGS ]; then
 | 
      
         | 43 |  |  |   echo "ERROR    : wrong number of arguments"
 | 
      
         | 44 |  |  |   echo "USAGE    : rtlsim.sh <verilog stimulus file> <memory file> <submit file>"
 | 
      
         | 45 |  |  |   echo "Example  : rtlsim.sh ./stimulus.v            pmem.mem      ../src/submit.f"
 | 
      
         | 46 |  |  |   echo "OMSP_SIMULATOR env keeps simulator name iverilog/cver/verilog/ncverilog/vsim/vcs"
 | 
      
         | 47 |  |  |   exit 1
 | 
      
         | 48 |  |  | fi
 | 
      
         | 49 |  |  |  
 | 
      
         | 50 |  |  |  
 | 
      
         | 51 |  |  | ###############################################################################
 | 
      
         | 52 |  |  | #                     Check if the required files exist                       #
 | 
      
         | 53 |  |  | ###############################################################################
 | 
      
         | 54 |  |  |  
 | 
      
         | 55 |  |  | if [ ! -e $1 ]; then
 | 
      
         | 56 |  |  |     echo "Verilog stimulus file $1 doesn't exist"
 | 
      
         | 57 |  |  |     exit 1
 | 
      
         | 58 |  |  | fi
 | 
      
         | 59 |  |  | if [ ! -e $2 ]; then
 | 
      
         | 60 |  |  |     echo "Memory file $2 doesn't exist"
 | 
      
         | 61 |  |  |     exit 1
 | 
      
         | 62 |  |  | fi
 | 
      
         | 63 |  |  | if [ ! -e $3 ]; then
 | 
      
         | 64 |  |  |     echo "Verilog submit file $3 doesn't exist"
 | 
      
         | 65 |  |  |     exit 1
 | 
      
         | 66 |  |  | fi
 | 
      
         | 67 |  |  |  
 | 
      
         | 68 |  |  |  
 | 
      
         | 69 |  |  | ###############################################################################
 | 
      
         | 70 |  |  | #                         Start verilog simulation                            #
 | 
      
         | 71 |  |  | ###############################################################################
 | 
      
         | 72 |  |  |  
 | 
      
         | 73 |  |  | if [ "${OMSP_SIMULATOR:-iverilog}" = iverilog ]; then
 | 
      
         | 74 |  |  |  
 | 
      
         | 75 |  |  |     rm -rf simv
 | 
      
         | 76 |  |  |  
 | 
      
         | 77 |  |  |     NODUMP=${OMSP_NODUMP-0}
 | 
      
         | 78 |  |  |     if [ $NODUMP -eq 1 ]
 | 
      
         | 79 |  |  |       then
 | 
      
         | 80 |  |  |         iverilog -o simv -c $3 -D NODUMP
 | 
      
         | 81 |  |  |       else
 | 
      
         | 82 |  |  |         iverilog -o simv -c $3
 | 
      
         | 83 |  |  |     fi
 | 
      
         | 84 |  |  |  
 | 
      
         | 85 |  |  |     if [ `uname -o` = "Cygwin" ]
 | 
      
         | 86 |  |  |       then
 | 
      
         | 87 |  |  |             vvp.exe ./simv
 | 
      
         | 88 |  |  |       else
 | 
      
         | 89 |  |  |         ./simv
 | 
      
         | 90 |  |  |     fi
 | 
      
         | 91 |  |  |  
 | 
      
         | 92 |  |  | else
 | 
      
         | 93 |  |  |  
 | 
      
         | 94 |  |  |     NODUMP=${OMSP_NODUMP-0}
 | 
      
         | 95 |  |  |     if [ $NODUMP -eq 1 ] ; then
 | 
      
         | 96 |  |  |        vargs="+define+NODUMP"
 | 
      
         | 97 |  |  |     else
 | 
      
         | 98 |  |  |        vargs=""
 | 
      
         | 99 |  |  |     fi
 | 
      
         | 100 |  |  |  
 | 
      
         | 101 |  |  |    case $OMSP_SIMULATOR in
 | 
      
         | 102 |  |  |     cver* )
 | 
      
         | 103 |  |  |        vargs="$vargs +define+VXL +define+CVER" ;;
 | 
      
         | 104 |  |  |     verilog* )
 | 
      
         | 105 |  |  |        vargs="$vargs +define+VXL" ;;
 | 
      
         | 106 |  |  |     ncverilog* )
 | 
      
         | 107 |  |  |        rm -rf INCA_libs
 | 
      
         | 108 |  |  |        vargs="$vargs +access+r +nclicq +ncinput+../bin/cov_ncverilog.tcl -covdut openMSP430 -covfile ../bin/cov_ncverilog.ccf -coverage all +define+TRN_FILE" ;;
 | 
      
         | 109 |  |  |     vcs* )
 | 
      
         | 110 |  |  |        rm -rf csrc simv*
 | 
      
         | 111 |  |  |        vargs="$vargs -R -debug_pp +vcs+lic+wait +v2k +define+VPD_FILE" ;;
 | 
      
         | 112 |  |  |     vsim* )
 | 
      
         | 113 |  |  |        # Modelsim
 | 
      
         | 114 |  |  |        if [ -d work ]; then  vdel -all; fi
 | 
      
         | 115 |  |  |        vlib work
 | 
      
         | 116 |  |  |        exec vlog +acc=prn -f $3 $vargs -R -c -do "run -all" ;;
 | 
      
         | 117 |  |  |     isim )
 | 
      
         | 118 |  |  |        # Xilinx simulator
 | 
      
         | 119 |  |  |        rm -rf fuse* isim*
 | 
      
         | 120 |  |  |        fuse tb_openMSP430_fpga glbl -mt off -v 1 -prj $3 -o isim.exe -i ../../../bench/verilog/ -i ../../../rtl/verilog/openmsp430/ -i ../../../rtl/verilog/openmsp430/periph/
 | 
      
         | 121 |  |  |        echo "run all" > isim.tcl
 | 
      
         | 122 |  |  |        ./isim.exe -tclbatch isim.tcl
 | 
      
         | 123 |  |  |        exit
 | 
      
         | 124 |  |  |    esac
 | 
      
         | 125 |  |  |  
 | 
      
         | 126 |  |  |    echo "Running: $OMSP_SIMULATOR -f $3 $vargs"
 | 
      
         | 127 |  |  |    exec $OMSP_SIMULATOR -f $3 $vargs
 | 
      
         | 128 |  |  | fi
 |