OpenCores
URL https://opencores.org/ocsvn/sdhc-sc-core/sdhc-sc-core/trunk

Subversion Repositories sdhc-sc-core

[/] [sdhc-sc-core/] [trunk/] [sim/] [sim.tcl] - Diff between revs 170 and 185

Show entire file | Details | Blame | View Log

Rev 170 Rev 185
Line 1... Line 1...
 
# SDHC-SC-Core
 
# Secure Digital High Capacity Self Configuring Core
 
# 
 
# (C) Copyright 2010, Rainer Kastl
 
# All rights reserved.
 
# 
 
# Redistribution and use in source and binary forms, with or without
 
# modification, are permitted provided that the following conditions are met:
 
#     * Redistributions of source code must retain the above copyright
 
#       notice, this list of conditions and the following disclaimer.
 
#     * Redistributions in binary form must reproduce the above copyright
 
#       notice, this list of conditions and the following disclaimer in the
 
#       documentation and/or other materials provided with the distribution.
 
#     * Neither the name of the <organization> nor the
 
#       names of its contributors may be used to endorse or promote products
 
#       derived from this software without specific prior written permission.
 
# 
 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS  "AS IS" AND
 
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
# DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
 
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
# 
 
# File        : sim.tcl
 
# Owner       : Rainer Kastl
 
# Description : Script for simulation
 
# Links       : 
 
# 
 
 
 
 
 
proc compileWithPsl {fname grp en psl} {
 
        upvar $psl mpsl
 
 
 
        if [info exists mpsl($en)] {
 
                set pslfile "../../../grp$grp/unit$en/src/$mpsl($en).psl"
 
                if [file isfile $pslfile] {
 
                        vcom $fname -pslfile $pslfile
 
                } else {
 
                        echo "pslfile $pslfile not found"
 
                        vcom $fname
 
                }
 
        } else {
 
                vcom $fname
 
        }
 
};
 
 
 
proc compileUnit {grp en arch tpsl} {
 
        upvar $tpsl psl
 
        set prefix ../../../grp$grp/unit$en/src
 
        if [file isfile $prefix/$en-e.vhdl] {
 
                compileWithPsl "$prefix/$en-e.vhdl" $grp $en psl
 
                if [file isfile $prefix/$en-$arch-a.vhdl] {
 
                        vcom "$prefix/$en-$arch-a.vhdl"
 
                }
 
        } elseif [file isfile $prefix/$en-$arch-ea.vhdl] {
 
                compileWithPsl "$prefix/$en-$arch-ea.vhdl" $grp $en psl
 
        } else {
 
                echo "Unit $grp $en $arch not found!"
 
        }
 
};
 
 
 
 
 
proc compileTb {grp en arch} {
 
        set prefix ../../../grp$grp/unit$en/src
 
                if [file isfile $prefix/tb$en-e.vhdl] {
 
                        vcom "$prefix/tb$en-e.vhdl"
 
                        if [file isfile $prefix/tb$en-$arch-a.vhdl] {
 
                                vcom "$prefix/tb$en-$arch-a.vhdl"
 
                        }
 
                } elseif [file isfile $prefix/tb$en-$arch-ea.vhdl] {
 
                        vcom "$prefix/tb$en-$arch-ea.vhdl"
 
                } else {
 
                        echo "Testbench $grp $en $arch not found!"
 
                }
 
};
 
 
 
vlib work
 
vmap work work
 
 
 
if [info exists libs] {
 
        foreach {lib} $libs {
 
                vmap $lib ../../../lib$lib/sim/$lib
 
        }
 
}
 
 
 
if [info exists pkgs] {
 
        foreach {grp pkg} $pkgs {
 
                set fname ../../../grp$grp/pkg$pkg/src/$pkg-p.vhdl
 
                        if [file isfile $fname] {
 
                                vcom "$fname"
 
                        } else {
 
                                echo "Pkg $grp $pkg not found!"
 
                        }
 
        }
 
}
 
 
 
if [info exists units] {
 
        foreach {grp en arch} $units {
 
                compileUnit $grp $en $arch psl
 
        }
 
}
 
 
 
 
 
 
 
if [info exists tbunits] {
 
        foreach {grp en arch} $tbunits {
 
                if ![info exists psl] {
 
                        array set psl [list]
 
                }
 
                compileUnit $grp $en $arch psl
 
        }
 
}
 
 
 
if [info exists tb] {
 
        foreach {grp en arch} $tb {
 
                compileTb $grp $en $arch
 
 
 
                set top tb$en
 
        }
 
}
 
 
 
if [info exists svtb] {
 
        foreach {grp unit} $svtb {
 
                set fname ../../../grp$grp/unit$unit/src/tb$unit.sv
 
                if [file isfile $fname] {
 
                        vlog $fname
 
                } else {
 
                        echo "Svunit $grp $unit not found! ($fname)"
 
                }
 
        }
 
}
 
 
 
if [info exists svunits] {
 
        foreach {grp unit} $svunits {
 
                set fname ../../../grp$grp/unit$unit/src/$unit.sv
 
                if [file isfile $fname] {
 
                        if [info exists sysvlogparams] {
 
                                vlog $fname $sysvlogparams
 
                        } else {
 
                                vlog $arg
 
                        }
 
                } else {
 
                        echo "Svunit $grp $unit not found! ($fname)"
 
                }
 
        }
 
}
 
 
 
if ([info exists top]) {
 
        if ([info exists vsimargs]) {
 
                vsim $vsimargs $top
 
        } else {
 
                vsim $top
 
        }
 
 
 
        if [file isfile wave.do] {
 
                do wave.do
 
        }
 
 
 
        if [info exists simtime] {
 
                run $simtime
 
        } else {
 
                run -all
 
        }
 
}
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.