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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [tools/] [sys/] [gen_child_filelist] - Blame information for rev 131

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

Line No. Rev Author Line
1 131 jt_eaton
eval 'exec `which perl` -S $0 ${1+"$@"}'
2
   if 0;
3
 
4
#/**********************************************************************/
5
#/*                                                                    */
6
#/*             -------                                                */
7
#/*            /   SOC  \                                              */
8
#/*           /    GEN   \                                             */
9
#/*          /    TOOL    \                                            */
10
#/*          ==============                                            */
11
#/*          |            |                                            */
12
#/*          |____________|                                            */
13
#/*                                                                    */
14
#/*                                                                    */
15
#/*                                                                    */
16
#/*  Author(s):                                                        */
17
#/*      - John Eaton, jt_eaton@opencores.org                          */
18
#/*                                                                    */
19
#/**********************************************************************/
20
#/*                                                                    */
21
#/*    Copyright (C) <2010-2011>                */
22
#/*                                                                    */
23
#/*  This source file may be used and distributed without              */
24
#/*  restriction provided that this copyright statement is not         */
25
#/*  removed from the file and that any derivative work contains       */
26
#/*  the original copyright notice and the associated disclaimer.      */
27
#/*                                                                    */
28
#/*  This source file is free software; you can redistribute it        */
29
#/*  and/or modify it under the terms of the GNU Lesser General        */
30
#/*  Public License as published by the Free Software Foundation;      */
31
#/*  either version 2.1 of the License, or (at your option) any        */
32
#/*  later version.                                                    */
33
#/*                                                                    */
34
#/*  This source is distributed in the hope that it will be            */
35
#/*  useful, but WITHOUT ANY WARRANTY; without even the implied        */
36
#/*  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR           */
37
#/*  PURPOSE.  See the GNU Lesser General Public License for more      */
38
#/*  details.                                                          */
39
#/*                                                                    */
40
#/*  You should have received a copy of the GNU Lesser General         */
41
#/*  Public License along with this source; if not, download it        */
42
#/*  from http://www.opencores.org/lgpl.shtml                          */
43
#/*                                                                    */
44
#/**********************************************************************/
45
 
46
 
47
 
48
 
49
############################################################################
50
# General PERL config
51
############################################################################
52
use Getopt::Long;
53
use English;
54
use File::Basename;
55
use Cwd;
56
use XML::LibXML;
57
use lib './tools';
58
use sys::lib;
59
use yp::lib;
60
 
61
$OUTPUT_AUTOFLUSH = 1; # set autoflush of stdout to TRUE.
62
 
63
 
64
############################################################################
65
### Process the options
66
############################################################################
67
Getopt::Long::config("require_order", "prefix=-");
68
GetOptions("h","help",
69
           "envidentifier=s" => \$envidentifier,
70
           "prefix=s" => \$prefix,
71
           "vendor=s" => \$vendor,
72
           "library=s" => \$library,
73
           "component=s" => \$component,
74
           "version=s" => \$version,
75
           "top_file=s" => \$top_file,
76
           "suffix=s" => \$suffix,
77
           "leader=s" => \$leader,
78
           "overlay_src_ven=s" => \$overlay_src_ven,
79
           "overlay_src_lib=s" => \$overlay_src_lib,
80
           "overlay_des_ven=s" => \$overlay_des_ven,
81
           "overlay_des_lib=s" => \$overlay_des_lib,
82
           "top","top_lib"
83
) || die "(use '$program_name -h' for help)";
84
 
85
 
86
 
87
##############################################################################
88
## Help option
89
##############################################################################
90
if ( $opt_h  or $opt_help)
91
  { print "\n gen_child_filelist -prefix /work -envidentifier *simulation*  -vendor vendor_name  -library library_name  -component component_name -version version_name   ";
92
    print "\n";
93
    exit 1;
94
  }
95
 
96
 
97
##############################################################################
98
##
99
##############################################################################
100
 
101
$home = cwd();
102
my $variant;
103
my $view;
104
my $filesetref_name;
105
 
106
if($version)       {$variant   = "${component}_${version}";}
107
else               {$variant   = "${component}";}
108
 
109
my $parser = XML::LibXML->new();
110
my $spirit_component_file  = $parser->parse_file(yp::lib::find_ipxact_component($vendor,$library,$component,$version));
111
my $comp_xml_sep           = yp::lib::find_comp_xml_sep($vendor,$library,$component,$version);
112
my $lib_comp_sep           = yp::lib::find_lib_comp_sep($vendor,$library,$component);
113
 
114
 
115
#print "XXXXXS   $vendor,$library,$component,$version \n";
116
 
117
foreach my $X_view ($spirit_component_file->findnodes('//spirit:component/spirit:model/spirit:views/spirit:view'))
118
         {
119
         my($Xview_name)            = $X_view->findnodes('./spirit:name/text()')->to_literal ;
120
         my($Xview_envidentifier)   = $X_view->findnodes('./spirit:envIdentifier/text()')->to_literal ;
121
         my($Xview_filesetref_name)  = $X_view->findnodes('./spirit:fileSetRef/spirit:localName/text()')->to_literal ;
122
 
123
#print  "XXXXX   $Xview_name || $Xview_envidentifier || $Xview_filesetref_name  \n";
124
 
125
         if($envidentifier eq $Xview_envidentifier )
126
              {
127
              $view = $Xview_name;
128
              $filesetref_name = $Xview_filesetref_name;
129
              }
130
         }
131
 
132
#print  "XXXXZ   $view || view_filesetref_name  \n";
133
 
134
 
135
 
136
 
137
unless($suffix) { $suffix = $view };
138
 
139
 
140
 
141
if($suffix)
142
{
143
 
144
$path ="${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/../filelists";
145
mkdir $path,0755          unless( -e $path );
146
my $outfile ="${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/../filelists/${variant}.${suffix}\n";
147
open SIMFILE,">$outfile" or die "unable to open $outfile";
148
#print "OUT  $outfile  \n";
149
if($top_file) {print SIMFILE  "$top_file  \n";}
150
 
151
#/*********************************************************************************************/
152
#/                                                                                            */
153
#/  Create filelists for simulation, synthesis and linting                                    */
154
#/                                                                                            */
155
#/                                                                                            */
156
#/*********************************************************************************************/
157
 
158
@filelist_sim = (  );
159
 
160
my  @filelist =       yp::lib::parse_component_file("$vendor","$library","$component","$version");
161
 
162
 
163
 
164
 
165
foreach $line (@filelist)
166
   {
167
   $_ = $line;
168
   if(/::(\S+)::(\S+)::(\S+)::(\S+)::/)
169
     {
170
     $new_proj      = $2;
171
     $new_comp      = $3;
172
     $new_vendor    = $1;
173
     $new_version   = $4;
174
     }
175
     #############################################################################
176
     ## Read destination from source xml file
177
     ##
178
     #############################################################################
179
 
180
     my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact_component($new_vendor,$new_proj,$new_comp,$new_version));
181
 
182
     if($new_version){$new_variant   = "${new_comp}_${new_version}"}
183
     else             {$new_variant   = $new_comp}
184
 
185
       if($opt_top_lib)
186
     {
187
            my $fileXX =       find_filename($filesetref_name  ,$new_vendor,$new_proj,$new_comp,$new_version);
188
            if($fileXX){push(@filelist_sim,"${home}${prefix}/${fileXX}\n")};
189
     }
190
     else
191
     {
192
     if(($new_vendor eq $vendor ) &&  ($new_proj eq $library ) &&  ($new_comp eq $component )  &&  ($new_version eq $version )        )
193
       {
194
       if($opt_top)
195
            {
196
            my $fileXX =       find_filename($filesetref_name  ,$new_vendor,$new_proj,$new_comp,$new_version);
197
            if($fileXX){push(@filelist_sim,"${home}${prefix}/${fileXX}\n")};
198
            }
199
        }
200
     else
201
        {
202
        if(($new_proj eq $overlay_src_lib ) & ($new_vendor eq $overlay_src_ven))
203
                   {
204
                       if(yp::lib::find_ipxact_component($overlay_des_ven,$overlay_des_lib,$new_comp,$new_version  ) )
205
                         {
206
                         $new_vendor = $overlay_des_ven;
207
                         $new_proj   = $overlay_des_lib;
208
 
209
                         }
210
                    }
211
 
212
 
213
           my $fileXX =       find_filename($filesetref_name  ,$new_vendor,$new_proj,$new_comp,$new_version);
214
           if($fileXX){push(@filelist_sim,"${home}${prefix}/${vendor}__${library}/children/${fileXX}\n");}
215
        }
216
       }
217
 
218
 
219
 
220
 
221
 
222
 
223
 
224
 
225
 
226
 
227
 
228
 
229
     }
230
 
231
#############################################################################
232
##
233
##
234
#############################################################################
235
 
236
print "Building ALL filelists for  $prefix  $vendor $library   $component $version $variant \n" ;
237
     @filelist_sim  =       sys::lib::trim_sort(@filelist_sim);
238
     foreach  my   $i_line (@filelist_sim)
239
         {
240
#print "$i_line  \n";
241
 
242
 
243
         if($leader)
244
           {
245
           print SIMFILE  "${leader}${i_line}";
246
           }
247
         else
248
           {
249
           print SIMFILE  "$i_line";
250
           }
251
 
252
 
253
 
254
         }
255
}
256
 
257
 
258
 
259
#/*********************************************************************************************/
260
#/  find filename                                                                             */
261
#/                                                                                            */
262
#/  returns gloabal  name of the file                                                         */
263
#/                                                                                            */
264
#/                                                                                            */
265
#/*********************************************************************************************/
266
 
267
sub find_filename
268
   {
269
   my @params             = @_;
270
   my $version            = pop(@params);
271
   my $component          = pop(@params);
272
   my $library            = pop(@params);
273
   my $vendor             = pop(@params);
274
   my $filesetref_name    = pop(@params);
275
 
276
#print "find_filename  $vendor  $library  $component  $version  \n";
277
     my $variant;
278
     if($version)       {$variant   = "${component}_${version}";}
279
     else               {$variant   = "${component}";}
280
 
281
my  @filelist =       yp::lib::parse_component_brothers("$vendor","$library","$component","$version");
282
 
283
 
284
 
285
 
286
 
287
 
288
 
289
my $comp_xml_sep    = yp::lib::find_comp_xml_sep($vendor,$library,$component,$version);
290
my $lib_comp_sep    = yp::lib::find_lib_comp_sep($vendor,$library,$component);
291
my $library_path    = "${lib_comp_sep}${component}${comp_xml_sep}";
292
 
293
 
294
 
295
foreach $line (@filelist)
296
   {
297
   $_ = $line;
298
   if(/::(\S+)::(\S+)::(\S+)::(\S+)::/)
299
     {
300
     $new_library        = $2;
301
     $new_component      = $3;
302
     $new_vendor         = $1;
303
     $new_version        = $4;
304
 
305
     my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact_component($new_vendor,$new_library,$new_component,$new_version));
306
 
307
 
308
           foreach  my   $i_name ($spirit_component_file->findnodes("//spirit:fileSets/spirit:fileSet/spirit:file/spirit:name"))
309
              {
310
              my($file_name)      = $i_name ->findnodes('./text()')->to_literal ;
311
              my($file_type)      = $i_name ->findnodes('../spirit:userFileType/text()')->to_literal ;
312
              my($logical_name)   = $i_name ->findnodes('../spirit:logicalName/text()')->to_literal ;
313
              my($view_file)      = $i_name ->findnodes('../../spirit:name/text()')->to_literal ;
314
              if(($file_type eq "libraryDir") &&  ($logical_name eq "dest_dir")  )
315
                 {
316
#print "222 |  $view_file  |     $filesetref_name  |     \n";
317
                 if( $view_file eq  $filesetref_name )
318
                   {
319
                   return ("${vendor}__${library}${library_path}/${file_name}${variant}.v");
320
                   };
321
                 }
322
              }
323
    }
324
}
325
}
326
 
327
 
328
1
329
 

powered by: WebSVN 2.1.0

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