OpenCores
URL https://opencores.org/ocsvn/theia_gpu/theia_gpu/trunk

Subversion Repositories theia_gpu

[/] [theia_gpu/] [branches/] [icarus_version/] [scripts/] [configure_gpu.pl] - Blame information for rev 177

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 169 diegovalve
#!/usr/bin/perl
2
################################################################
3
#Theia, Ray Cast Programable graphic Processing Unit.
4
#Copyright (C) 2010  Diego Valverde (diego.valverde.g@gmail.com)
5
#
6
#This program is free software; you can redistribute it and/or
7
#modify it under the terms of the GNU General Public License
8
#as published by the Free Software Foundation; either version 2
9
#of the License, or (at your option) any later version.
10
#
11
#This program is distributed in the hope that it will be useful,
12
#but WITHOUT ANY WARRANTY; without even the implied warranty of
13
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
#GNU General Public License for more details.
15
#
16
#You should have received a copy of the GNU General Public #License
17
#along with this program; if not, write to the Free Software
18
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  #02110-1301, USA.
19
################################################################
20
 
21
use Tie::File;
22
$NumberOfCores = $ARGV[0];
23 177 diegovalve
$NumberOfBanks = $ARGV[1];
24 169 diegovalve
 
25 177 diegovalve
 
26
 
27 169 diegovalve
die "\nusage:\nconfigure_gpu.pl number_of_cores width height\n\n" if (not defined $NumberOfCores );
28 177 diegovalve
 
29
 
30
if (not defined $NumberOfBanks)
31
{
32
  $NumberOfBanks = $NumberOfCores;
33
  print "Number of TMEM banks not specified, making default to Number of execution cores ($NumberOfCores)\n";
34
}
35
 
36 169 diegovalve
$DefsPath = "../rtl/aDefinitions.v";
37
$TopPath = "../rtl/Theia.v";
38
$TestBenchPath = "../rtl/TestBench_THEIA.v";
39
$RCOMMIT_O = "assign RCOMMIT_O = wRCommited[0]";
40
$HDL_O = "assign HDL_O = wHostDataLatched[0]";
41
$DONE_O = "assign DONE_O = wDone[0]";
42
$index=$NumberOfCores-1;
43
$BankRequest = "iRequest( {wBankReadRequest[$index][Bank]";
44
$SELECT_ALL_CORES = "define SELECT_ALL_CORES `MAX_CORES'b1";
45
 
46
$Scale = 17;
47
 
48
print
49
"
50 177 diegovalve
Applying configuration for:
51
    $NumberOfCores execution cores
52
        $NumberOfBanks TMEM banks
53 169 diegovalve
";
54
 
55
#------------------------------------------------------------------
56
for ($i = 1; $i < $NumberOfCores; $i++)
57
{
58
        $RCOMMIT_O .= " & wRCommited[$i]";
59
        $HDL_O .= " &  wHostDataLatched[$i]";
60
        $DONE_O .= " & wDone[$i]";
61
        $index=$NumberOfCores-$i-1;
62
        #print "$NumberOfCores $i: $index\n";
63
        $BankRequest .= ",wBankReadRequest[$index][Bank]";
64
        $SELECT_ALL_CORES .= "1";
65
}
66
 
67
 
68
tie my @array, 'Tie::File', $DefsPath or die "Can't open $DefsPath: $!";
69
foreach (@array)
70
{
71
    s/define MAX_CORES .*(\/\/.*)/define MAX_CORES $NumberOfCores \t\t$1/;
72 177 diegovalve
        s/define MAX_TMEM_BANKS .*(\/\/.*)/define MAX_TMEM_BANKS $NumberOfBanks \t\t$1/;
73
        $MaxCoreBits = log( $NumberOfCores ) / log(2);
74
        $MaxBankBits = log( $NumberOfBanks ) / log(2);
75
        s/define MAX_CORE_BITS .*(\/\/.*)/define MAX_CORE_BITS $MaxCoreBits \t\t$1/;
76 169 diegovalve
        s/define SELECT_ALL_CORES .*(\/\/.*)/$SELECT_ALL_CORES \t\t$1/;
77 177 diegovalve
        s/define MAX_TMEM_BITS .*(\/\/.*)/define MAX_TMEM_BITS $MaxBankBits \t\t$1/;
78 169 diegovalve
 
79
}
80
untie @array;
81
 
82
 
83
 
84
tie my @array, 'Tie::File', $TopPath or die "Can't open $TopPath: $!";
85
foreach (@array)
86
{
87
    s/assign RCOMMIT_O =.*/$RCOMMIT_O;/;
88
        s/assign HDL_O =.*/$HDL_O;/;
89
        s/assign DONE_O =.*/$DONE_O;/;
90
        s/iRequest\(\s*{wBankReadRequest.*/$BankRequest}\),/;
91
 
92
}
93
untie @array;
94
 
95
$MaxFileLines = 96 + 3*2*$NumberOfCores;
96
tie my @array, 'Tie::File', $TestBenchPath or die "Can't open $TestBenchPath: $!";
97
foreach (@array)
98
{
99
    s/reg\s+\[31\:0\]\s+rSceneParameters.*/reg [31:0] rSceneParameters[$MaxFileLines:0];/;
100
}
101
untie @array;
102
 

powered by: WebSVN 2.1.0

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