#! /usr/bin/perl -w
############################################################
## Copyright: 2011 Integrated Sytems Laboratory, ETH Zurich
## http://www.iis.ee.ethz.ch/~sha3
############################################################
use strict;
# v0.3 - kgf@ee.ethz.ch - Fri Sep 2 10:45:07 CEST 2011
# - small backtick corrections
# v0.2 - muheim@ee.ethz.ch - Fri Sep 2 10:29:50 CEST 2011
# - fix the vcom for simulstuff and _tb.
# v0.1 - muheim@ee.ethz.ch - Thu Aug 25 09:44:43 CEST 2011
# - Script for compiling RTL sourcecode taking the list from source.list
# in sourcecode.
my $VER = "10.0b";
my $LIB = "rtl";
# determine the name of the library
my $name = `pwd`;
chomp($name);
$name =~ s/\/[^\/]+$//;
$name =~ s/^.*\///;
my $ALG= $name;
my $LOG= ${ALG}."_compile.log";
open (LOG, "> $LOG") or die "Failed to open log file: $!\n";
if (-e $LIB) {
print "- Deleting old library [$LIB]\n\n";
`rm -rf $LIB`;
}
`vlib-${VER} $LIB`;
my $date = `date`;
print LOG "** Compilation of ${ALG} from: $date\n";
open (SCR_LIST, "< ../sourcecode/source.list") or die "Failed to open file: $!\n";
while (SCR_LIST){
if (/(\S+)/){
print "- Compile : $1\n";
print LOG `vcom-${VER} -work $LIB -check_synthesis ../sourcecode/$1`;
}
}
print "- Compile : simulstuff.vhd\n";
print "- Compile : ${ALG}_tb.vhd\n";
print LOG `vcom-${VER} -work $LIB ../sourcecode/simulstuff.vhd`;
print LOG `vcom-${VER} -work $LIB ../sourcecode/${ALG}_tb.vhd`;
close (SCR_LIST);
close (LOG);
my $WarningsC = `grep -c "** Warn" ${LOG}`;
my $ErrorsC = `grep -c "** Err" ${LOG}`;
chomp($WarningsC);
chomp($ErrorsC);
my $Warnings = `grep -i "** Warn" ${LOG}`;
my $Errors = `grep -i "** Err" ${LOG} | grep -v "Compiler exiting"`;
print "\n";
print "- Reporting Warnings: $WarningsC\n";
print "$Warnings";
print "- Reporting Errors: $ErrorsC\n";
print "$Errors";
print "* Done\n";
print "\n vsim-${VER} -c -lib ${LIB} ${ALG}_tb -do \"run -all; quit\" | tee ../simvectors/${ALG}_sim.rpt\n\n";