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

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [build/] [scanconfig.pl] - Blame information for rev 5

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

Line No. Rev Author Line
1 2 tarookumic
#!/usr/bin/perl
2
 
3
if ($#ARGV != 0) {
4
    die("Call: scanconfig.pl <configfile>\n");
5
}
6
 
7
%cfg = ();
8
$fn = $ARGV[0];
9
if (open(FILEH, "$fn")) {
10
    while (<FILEH>) {
11
        s/[\r\n]$//gi;
12
        @a = split("=",$_);
13
        if ($#a == 1) {
14
            #print STDERR ($a[0]."=".$a[1]."\n");
15
            $k = $a[0];
16
            $v = $a[1];
17
            $k =~ s/[^[:print:]]//gi;
18
            $v =~ s/[^[:print:]]//gi;
19
            $cfg{$k} = $v;
20
        }
21
    }
22
    close(FILEH);
23
} else {
24
    print "opening \"$fn\": $!\n";
25
}
26
 
27
require ("vhdl/sparc/config.pl");
28
$sparc_cfg = createconfig(\%sparc_cfg,\%sparc_map,\%cfg);
29
%sparc_cfg = %{$sparc_cfg};
30
sparc_config_file (\%sparc_cfg);
31
 
32
require ("vhdl/peripherals/mem/config.pl");
33
$peri_mem_cfg = createconfig(\%peri_mem_cfg,\%peri_mem_map,\%cfg);
34
%peri_mem_cfg = %{$peri_mem_cfg};
35
peri_mem_config_file (\%peri_mem_cfg);
36
 
37
require ("vhdl/core/config.pl");
38
$core_cfg = createconfig(\%core_cfg,\%core_map,\%cfg);
39
%core_cfg = %{$core_cfg};
40
core_config_file (\%core_cfg);
41
 
42
require ("vhdl/mem/cache/config.pl");
43
$cache_cfg = createconfig(\%cache_cfg,\%cache_map,\%cfg);
44
%cache_cfg = %{$cache_cfg};
45
cache_config_file (\%cache_cfg);
46
 
47
require ("vhdl/core/ctrl/config.pl");
48
$ctrl_cfg = createconfig(\%ctrl_cfg,\%ctrl_map,\%cfg);
49
%ctrl_cfg = %{$ctrl_cfg};
50
ctrl_config_file (\%ctrl_cfg);
51
 
52
 
53
 
54
 
55
 
56
 
57
 
58
 
59
sub createconfig {
60
 
61
    my ($defcfg,$map,$cfg) = @_;
62
    my $rkey,my $rval,my $rfound;
63
    my $k,my $v,my $rv;
64
    my %defcfg = %{$defcfg};
65
    my %map = %{$map};
66
    my %cfg = %{$cfg};
67
 
68
    foreach $k (keys %cfg) {
69
        $v = $cfg{$k};
70
        ($rkey,$rval,$rfound) = resolve(\%map,$k,$v);
71
 
72
        if ($rfound == 1 && exists($defcfg{$rkey})) {
73
            #print STDERR ("set $rkey:$rval\n");
74
            $defcfg{$rkey} = $rval;
75
        } else {
76
            #print STDERR ("!!!! Warning: Could not set cfiguration $k resolved to $rkey:$rval:$rfound\n");
77
        }
78
    }
79
    #printout_cfg(\%defcfg);
80
    return \%defcfg;
81
}
82
 
83
sub printout_cfg {
84
    my ($defcfg) = @_;
85
    my %defcfg = %{$defcfg};
86
    my $k;
87
    foreach $k (keys %defcfg) {
88
        print ("$k:".$defcfg{$k}."\n");
89
    }
90
}
91
 
92
sub resolve
93
{
94
    my ($map,$entry,$value) = @_;
95
    my %tmp = (),my $e,my $k,my $v;
96
    my $key, my $val;
97
    my %map = %{$map};
98
    my $found = 0;
99
Found:
100
    foreach $k (keys %map) {
101
        $key = $k;
102
        %tmp = @{$map{$k}};
103
        foreach $e (keys %tmp) {
104
            $val = $tmp{$e};
105
            if (lc($entry) eq lc($e)) {
106
                $v = $tmp{$e};
107
                $found = 1;
108
                last Found;
109
            }
110
        }
111
    }
112
    if (ref($val)) {
113
        $val = &$val($value);
114
    }
115
    return ($key,$val,$found);
116
}
117
 
118
sub cfg_replace {
119
    my ($k,$v,$l) = @_;
120
    my $type;
121
    if ($l =~ /%$k%\[(.)\]/) {
122
        $type = $1;
123
        if ($type eq "b") {
124
            if ($v == 0) {
125
                $v = "false";
126
            } else {
127
                $v = "true";
128
            }
129
            $l =~ s/%($k)%\[(.)\]/$v/gi;
130
        } else {
131
            print STDERR ("Warning cound not resolve [$1] typedef\n");
132
        }
133
    }
134
    else {
135
        $l =~ s/%$k%/$v/gi;
136
    }
137
    return $l;
138
}
139
 
140
 
141
 
142
 
143
 
144
 
145
 
146
 
147
 
148
 
149
 
150
 
151
 
152
 
153
 
154
 

powered by: WebSVN 2.1.0

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