OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [perl_gui/] [lib/] [perl/] [mpsoc.pm] - Blame information for rev 16

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

Line No. Rev Author Line
1 16 alirezamon
#! /usr/bin/perl -w
2
use strict;
3
 
4
 
5
package mpsoc;
6
 
7
use ip_gen;
8
 
9
 
10
#use Clone 'clone';
11
 
12
 
13
 
14
sub mpsoc_new {
15
    # be backwards compatible with non-OO call
16
    my $class = ("ARRAY" eq ref $_[0]) ? "mpsoc" : shift;
17
    my $self;
18
 
19
 
20
    $self = {};
21
    $self->{file_name}        = (); # information on each file
22
    $self->{noc_param}=   {};
23
    $self->{noc_indept_param}={};
24
    $self->{parameters_order}=[];
25
    $self->{setting}={};
26
        $self->{socs}={};
27
        mpsoc_initial_setting($self);
28
 
29
 
30
    bless($self,$class);
31
 
32
 
33
    return $self;
34
}
35
 
36
sub mpsoc_initial_setting{
37
        my $self=shift;
38
        $self->{setting}{show_noc_setting}=1;
39
        $self->{setting}{show_adv_setting}=0;
40
        $self->{setting}{show_tile_setting}=1;
41
        $self->{setting}{soc_path}="lib/soc";
42
}
43
 
44
sub mpsoc_set_setting{
45
        my ($self,$name,$value)=@_;
46
        $self->{setting}{$name}=$value;
47
 
48
}
49
 
50
sub mpsoc_get_setting{
51
        my ($self,$name)=@_;
52
        return $self->{setting}{$name};
53
 
54
}
55
 
56
 
57
sub mpsoc_set_mpsoc_name{
58
        my ($self,$name)=@_;
59
        if(defined $name){$self->{mpsoc_name}=$name;}
60
}
61
 
62
sub mpsoc_get_mpsoc_name{
63
        my ($self)=@_;
64
        my $name;
65
        if(exists  $self->{mpsoc_name}){ $name=$self->{mpsoc_name};}
66
        return $name;
67
}
68
 
69
sub mpsoc_get_indept_params{
70
        my $self=shift;
71
        return  $self->{noc_indept_param};
72
}
73
 
74
 
75
sub mpsoc_add_param{
76
        my ($self,$param,$value)=@_;
77
        $self->{noc_param}{$param}=$value;
78
 
79
}
80
 
81
sub mpsoc_get_param{
82
        my ($self,$param)=@_;
83
        return $self->{noc_param}{$param};
84
 
85
}
86
sub mpsoc_add_param_order{
87
        my ($self,@param)=@_;
88
        foreach my $p (@param){
89
                push (@{$self->{parameters_order}},$p);
90
 
91
        }
92
}
93
sub mpsoc_get_param_order{
94
        my $self=shift;
95
        return @{$self->{parameters_order}};
96
}
97
 
98
 
99
 
100
 
101
sub mpsoc_get_instance_info{
102
        my ($self,$ip_num)=@_;
103
        return $self->{ips}{$ip_num}{name}
104
}
105
 
106
sub mpsoc_set_ip_inst_name{
107
        my ($self,$ip_num,$new_instance)=@_;
108
        $self->{ips}{$ip_num}{name}=$new_instance;
109
 
110
}
111
 
112
sub mpsoc_get_soc_list{
113
        my $self=shift;
114
        my @list;
115
        foreach my $p (sort keys %{$self->{socs}}){
116
                push(@list,$p);
117
        }
118
        return @list;
119
}
120
 
121
 
122
 
123
 
124
 
125
sub mpsoc_add_soc{
126
        my ($self,$name,$soc)=@_;
127
        $self->{socs}{$name}{top}=$soc;
128
 
129
}
130
 
131
 
132
 
133
 
134
sub mpsoc_get_soc{
135
        my ($self,$name)=@_;
136
        return $self->{socs}{$name}{top};
137
 
138
}
139
 
140
 
141
sub mpsoc_remove_soc{
142
        my ($self,$name)=@_;
143
        delete $self->{socs}{$name};
144
}
145
 
146
sub mpsoc_remove_all_soc{
147
        my ($self)=@_;
148
        delete $self->{socs};
149
}
150
 
151
 
152
 
153
sub mpsoc_add_soc_tiles_num{
154
        my ($self,$name,$nums) =@_;
155
        if(defined $nums){
156
                my @f=sort { $a <=> $b } @{$nums};
157
                if( exists $self->{socs}{$name}){
158
                        $self->{socs}{$name}{tile_nums}=\@f;
159
 
160
                }
161
        }else {
162
                $self->{socs}{$name}{tile_nums}=undef;
163
 
164
        }
165
}
166
 
167
sub mpsoc_get_soc_tiles_num{
168
        my ($self,$name) =@_;
169
        my @nums;
170
        if( defined $self->{socs}{$name}{tile_nums}){
171
                @nums = @{$self->{socs}{$name}{tile_nums}};
172
 
173
        }
174
        return @ nums;
175
}
176
 
177
sub mpsoc_get_scolar_pos{
178
        my ($item,@list)=@_;
179
        my $pos;
180
        my $i=0;
181
        foreach my $c (@list)
182
        {
183
                if(  $c eq $item) {$pos=$i}
184
                $i++;
185
        }
186
        return $pos;
187
}
188
 
189
sub mpsoc_get_tile_soc_name{
190
        my ($self,$tile)=@_;
191
        my @all_socs=mpsoc_get_soc_list($self);
192
        my $soc_num=0;
193
        my $p;
194
        foreach $p( @all_socs){
195
                my @tiles=mpsoc_get_soc_tiles_num ($self,$p);
196
                if ( grep( /^$tile$/, @tiles ) ){
197
                            my $num =mpsoc_get_scolar_pos($tile,@tiles);
198
 
199
                                return ($p,$soc_num,$num);
200
                }
201
                $soc_num++;
202
 
203
        }
204
        return ($p,$soc_num,undef);
205
 
206
}
207
 
208
sub mpsoc_remove_scolar_from_array{
209
        my ($array_ref,$item)=@_;
210
        my @array=@{$array_ref};
211
        my @new;
212
        foreach my $p (@array){
213
                if($p ne $item ){
214
                        push(@new,$p);
215
                }
216
        }
217
        return @new;
218
}
219
 
220
sub mpsoc_set_tile_free{
221
        my ($self,$tile)=@_;
222
        #
223
        mpsoc_set_tile_param_setting($self, $tile, 'Default');
224
        my @all_socs=mpsoc_get_soc_list($self);
225
        my $soc_num=0;
226
        my $p;
227
        foreach $p( @all_socs){
228
                my @tiles=mpsoc_get_soc_tiles_num ($self,$p);
229
                my @n=mpsoc_remove_scolar_from_array(\@tiles,$tile);
230
                mpsoc_add_soc_tiles_num($self,$p,\@n);
231
 
232
        }
233
 
234
}
235
 
236
sub mpsoc_set_tile_soc_name{
237
        my ($self,$tile,$new_soc)=@_;
238
        mpsoc_set_tile_free($self,$tile);
239
        my @tiles=mpsoc_get_soc_tiles_num ($self,$new_soc);
240
        push(@tiles,$tile);
241
        mpsoc_add_soc_tiles_num($self,$new_soc,\@tiles);
242
 
243
 
244
}
245
 
246
sub mpsoc_set_tile_param_setting{
247
        my ($self,$tile,$setting)=@_;
248
        $self->{tile}{$tile}{param_setting}=$setting;
249
 
250
}
251
 
252
sub mpsoc_get_tile_param_setting{
253
        my ($self,$tile)=@_;
254
        my $setting='Default';
255
        if(exists $self->{tile}{$tile}{param_setting}){
256
                $setting=$self->{tile}{$tile}{param_setting};
257
 
258
        }
259
        return $setting;
260
}
261
 
262
 
263
1
264
 

powered by: WebSVN 2.1.0

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