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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [tools/] [yp/] [lib.pm] - Blame information for rev 119

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

Line No. Rev Author Line
1 117 jt_eaton
#/**********************************************************************/
2
#/*                                                                    */
3
#/*             -------                                                */
4
#/*            /   SOC  \                                              */
5
#/*           /    GEN   \                                             */
6
#/*          /    TOOL    \                                            */
7
#/*          ==============                                            */
8
#/*          |            |                                            */
9
#/*          |____________|                                            */
10
#/*                                                                    */
11
#/*                                                                    */
12
#/*                                                                    */
13
#/*  Author(s):                                                        */
14
#/*      - John Eaton, jt_eaton@opencores.org                          */
15
#/*                                                                    */
16
#/**********************************************************************/
17
#/*                                                                    */
18
#/*    Copyright (C) <2010-2011>  <Ouabache Design Works>              */
19
#/*                                                                    */
20
#/*  This source file may be used and distributed without              */
21
#/*  restriction provided that this copyright statement is not         */
22
#/*  removed from the file and that any derivative work contains       */
23
#/*  the original copyright notice and the associated disclaimer.      */
24
#/*                                                                    */
25
#/*  This source file is free software; you can redistribute it        */
26
#/*  and/or modify it under the terms of the GNU Lesser General        */
27
#/*  Public License as published by the Free Software Foundation;      */
28
#/*  either version 2.1 of the License, or (at your option) any        */
29
#/*  later version.                                                    */
30
#/*                                                                    */
31
#/*  This source is distributed in the hope that it will be            */
32
#/*  useful, but WITHOUT ANY WARRANTY; without even the implied        */
33
#/*  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR           */
34
#/*  PURPOSE.  See the GNU Lesser General Public License for more      */
35
#/*  details.                                                          */
36
#/*                                                                    */
37
#/*  You should have received a copy of the GNU Lesser General         */
38
#/*  Public License along with this source; if not, download it        */
39
#/*  from http://www.opencores.org/lgpl.shtml                          */
40
#/*                                                                    */
41
#/**********************************************************************/
42
 
43
 
44
 
45
 
46
 
47
 
48
use strict;
49
 
50
package yp::lib;
51
 
52
 
53 118 jt_eaton
#/***********************************************************************************************/
54
#/  find_ipxact                                                                                 */
55
#/                                                                                              */
56
#/  returns full path name to ip-xact file                                                      */
57
#/                                                                                              */
58
#/  my $spirit_type_file = yp::lib::find_ipxact($type,$vendor,$library,$component,$version);    */
59
#/                                                                                              */
60
#/***********************************************************************************************/
61 117 jt_eaton
 
62 118 jt_eaton
sub find_ipxact
63 117 jt_eaton
   {
64
   my @params     = @_;
65
   my $version    = pop(@params);
66
   my $component  = pop(@params);
67
   my $project    = pop(@params);
68
   my $vendor     = pop(@params);
69
   my $type       = pop(@params);
70
 
71
 
72 118 jt_eaton
   my $card_file_name;
73
   my $card_dir_name;
74
 
75
   my $parser           = XML::LibXML->new();
76
   my $yp_index_file    = $parser->parse_file("./tools/yp/hier_index.xml");
77
 
78
   foreach  my   $i_vendor ($yp_index_file->findnodes("//socgen:file_types/socgen:file_type[socgen:name/text() = '$type']/socgen:vendors/socgen:vendor[socgen:name/text() = '$vendor']/socgen:libraries/socgen:library[socgen:name/text() = '$project']/socgen:components/socgen:component[socgen:name/text() = '$component']/socgen:versions/socgen:version[socgen:name/text() = '$version']"))
79
     {
80
     $card_file_name       = $i_vendor->findnodes('./socgen:file_name/text()')->to_literal ;
81
     $card_dir_name       = $i_vendor->findnodes('./socgen:dir_name/text()')->to_literal ;
82
     return("./${card_dir_name}/${card_file_name}");
83
     }
84
     return("");
85
 
86
   }
87
 
88
 
89
 
90
 
91
 
92
 
93
 
94
#/*****************************************************************************************************/
95
#/  find_ipxact_design_file                                                                           */
96
#/                                                                                                    */
97
#/  returns parser token  to ip-xact design file referred to by component file vlnv                   */
98
#/                                                                                                    */
99
#/  my $spirit_design_file = yp::lib::find_ipxact_design_file($vendor,$library,$component,$version);  */
100
#/                                                                                                    */
101
#/*****************************************************************************************************/
102
 
103
sub find_ipxact_design_file
104
   {
105
   my @params     = @_;
106
   my $version    = pop(@params);
107
   my $component  = pop(@params);
108
   my $project    = pop(@params);
109
   my $vendor     = pop(@params);
110
 
111
 
112 117 jt_eaton
   my $card_type;
113
   my $card_file_name;
114
   my $card_dir_name;
115
   my $card_vendor;
116
   my $card_library;
117
   my $card_component;
118
   my $card_version;
119
 
120
   my $parser           = XML::LibXML->new();
121 118 jt_eaton
   my $yp_index_file    = $parser->parse_file("./tools/yp/hier_index.xml");
122 117 jt_eaton
 
123 118 jt_eaton
   unless (yp::lib::find_ipxact("spirit:component",$vendor,$project,$component,$version)){print "Missing Component  $vendor, $project, $component, $version \n";  }
124 117 jt_eaton
 
125 118 jt_eaton
   my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$project,$component,$version));
126 117 jt_eaton
 
127 118 jt_eaton
   foreach my $comp_view ($spirit_component_file->findnodes('//spirit:component/spirit:model/spirit:views/spirit:view'))
128
      {
129
      my($view_name)          = $comp_view->findnodes('./spirit:name/text()')->to_literal ;
130
      if($view_name eq "Hierarchical")
131
        {
132
        my($hier_ref_vendor)         = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:vendor')->to_literal ;
133
        my($hier_ref_library)        = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:library')->to_literal ;
134
        my($hier_ref_component)      = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:name')->to_literal ;
135
        my($hier_ref_version)        = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:version')->to_literal ;
136 117 jt_eaton
 
137 118 jt_eaton
        my $spirit_designCfg_file
138
         = $parser->parse_file(yp::lib::find_ipxact("spirit:designConfiguration",$hier_ref_vendor,$hier_ref_library,$hier_ref_component,$hier_ref_version ));
139
 
140
        foreach my $design_ref_view ($spirit_designCfg_file->findnodes('//spirit:designConfiguration'))
141
           {
142
           my($hier_xref_vendor)         = $design_ref_view->findnodes('./spirit:designRef/@spirit:vendor')->to_literal ;
143
           my($hier_xref_library)        = $design_ref_view->findnodes('./spirit:designRef/@spirit:library')->to_literal ;
144
           my($hier_xref_component)      = $design_ref_view->findnodes('./spirit:designRef/@spirit:name')->to_literal ;
145
           my($hier_xref_version)        = $design_ref_view->findnodes('./spirit:designRef/@spirit:version')->to_literal ;
146
 
147
           foreach  my   $index_card ($yp_index_file->findnodes("//socgen:file_types/socgen:file_type[socgen:name/text() = 'spirit:design']/socgen:vendors/socgen:vendor[socgen:name/text() = '$hier_xref_vendor']/socgen:libraries/socgen:library[socgen:name/text() = '$hier_xref_library']/socgen:components/socgen:component[socgen:name/text() = '$hier_xref_component']/socgen:versions/socgen:version[socgen:name/text() = '$hier_xref_version']"))
148
             {
149
             return($parser->parse_file(yp::lib::find_ipxact("spirit:design",$hier_xref_vendor,$hier_xref_library,$hier_xref_component,$hier_xref_version )));
150
             };
151
           }
152
        }
153
      }
154
     return("");
155 117 jt_eaton
   }
156
 
157
 
158 118 jt_eaton
 
159 117 jt_eaton
 
160 118 jt_eaton
#/*****************************************************************************************************/
161
#/  find_ipxact_padring_file                                                                         */
162
#/                                                                                                    */
163
#/  returns parser token  to ip-xact padring component file referred to by component file vlnv        */
164
#/                                                                                                    */
165
#/  my $spirit_padring_file = yp::lib::find_ipxact_padring_file($vendor,$library,$component,$version);*/
166
#/                                                                                                    */
167
#/*****************************************************************************************************/
168
 
169
sub find_ipxact_padring_file
170
   {
171
   my @params     = @_;
172
   my $version    = pop(@params);
173
   my $component  = pop(@params);
174
   my $project    = pop(@params);
175
   my $vendor     = pop(@params);
176
 
177
 
178
   my $card_type;
179
   my $card_file_name;
180
   my $card_dir_name;
181
   my $card_vendor;
182
   my $card_library;
183
   my $card_component;
184
   my $card_version;
185
 
186
   my $parser           = XML::LibXML->new();
187
   my $yp_index_file    = $parser->parse_file("./tools/yp/hier_index.xml");
188
 
189
   my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$project,$component,$version));
190
 
191
   foreach my $comp_view ($spirit_component_file->findnodes('//spirit:component/spirit:model/spirit:views/spirit:view'))
192
      {
193
      my($view_name)          = $comp_view->findnodes('./spirit:name/text()')->to_literal ;
194
      if($view_name eq "Pad_Ring")
195
        {
196
        my($hier_ref_vendor)         = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:vendor')->to_literal ;
197
        my($hier_ref_library)        = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:library')->to_literal ;
198
        my($hier_ref_component)      = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:name')->to_literal ;
199
        my($hier_ref_version)        = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:version')->to_literal ;
200
 
201
        return($parser->parse_file(yp::lib::find_ipxact("spirit:component",$hier_ref_vendor,$hier_ref_library,$hier_ref_component,$hier_ref_version )));
202
 
203
 
204
        }
205
      }
206
     return("");
207
   }
208
 
209
 
210
 
211
 
212
#/*****************************************************************************************************/
213
#/  find_ipxact_padring_design_file                                                                         */
214
#/                                                                                                    */
215
#/  returns parser token  to ip-xact padring component file referred to by component file vlnv        */
216
#/                                                                                                    */
217
#/  my $spirit_padring_design_file = yp::lib::find_ipxact_padring_file($vendor,$library,$component,$version);*/
218
#/                                                                                                    */
219
#/*****************************************************************************************************/
220
 
221
sub find_ipxact_padring_design_file
222
   {
223
   my @params     = @_;
224
   my $version    = pop(@params);
225
   my $component  = pop(@params);
226
   my $project    = pop(@params);
227
   my $vendor     = pop(@params);
228
 
229
 
230
   my $card_type;
231
   my $card_file_name;
232
   my $card_dir_name;
233
   my $card_vendor;
234
   my $card_library;
235
   my $card_component;
236
   my $card_version;
237
   my $w;
238
   my $parser           = XML::LibXML->new();
239
   my $yp_index_file    = $parser->parse_file("./tools/yp/hier_index.xml");
240
 
241
   my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$project,$component,$version));
242
 
243
 
244
 
245
 
246
   foreach my $comp_view ($spirit_component_file->findnodes('//spirit:component/spirit:model/spirit:views/spirit:view'))
247
      {
248
      my($view_name)          = $comp_view->findnodes('./spirit:name/text()')->to_literal ;
249
 
250
 
251
      if($view_name eq "Pad_Ring")
252
        {
253
        my($hier_ref_vendor)         = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:vendor')->to_literal ;
254
        my($hier_ref_library)        = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:library')->to_literal ;
255
        my($hier_ref_component)      = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:name')->to_literal ;
256
        my($hier_ref_version)        = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:version')->to_literal ;
257
 
258
 
259
 
260
        return(find_ipxact_design_file($hier_ref_vendor,$hier_ref_library,$hier_ref_component,$hier_ref_version ));
261
 
262
 
263
        }
264
      }
265
     return("");
266
   }
267
 
268
 
269
 
270
 
271
 
272
 
273
 
274
 
275 117 jt_eaton
#/*********************************************************************************************/
276
#/  find_ipxact_file                                                                          */
277
#/                                                                                            */
278
#/  returns local name of the ip-xact file                                                    */
279
#/                                                                                            */
280 118 jt_eaton
#/   my $file_name = yp::lib::find_ipxact_file($type,$vendor,$library,$component,$version);   */
281 117 jt_eaton
#/                                                                                            */
282
#/*********************************************************************************************/
283
 
284
sub find_ipxact_file
285
   {
286
   my @params     = @_;
287
   my $version    = pop(@params);
288
   my $component  = pop(@params);
289
   my $project    = pop(@params);
290
   my $vendor     = pop(@params);
291
   my $type       = pop(@params);
292
 
293
 
294
   my $card_type;
295
   my $card_file_name;
296
   my $card_dir_name;
297
   my $card_vendor;
298
   my $card_library;
299
   my $card_component;
300
   my $card_version;
301
 
302
   my $parser           = XML::LibXML->new();
303
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
304
 
305
 
306
 
307
 
308
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
309
     {
310
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
311
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
312
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
313
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
314
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
315
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
316
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
317
     if(( $card_type      eq "${type}"      ) &
318
        ( $card_vendor    eq "${vendor}"    ) &
319
        ( $card_library   eq "${project}"   ) &
320
        ( $card_component eq "${component}" ) &
321
        ( $card_version   eq "${version}"   )
322
       )  {return("${card_file_name}");  }
323
     }
324
   }
325
 
326
 
327
 
328
#/*********************************************************************************************/
329 118 jt_eaton
#/  find_ipxact_dir_name                                                                      */
330 117 jt_eaton
#/                                                                                            */
331
#/  returns  path to ip-xact directory from top level                                         */
332 118 jt_eaton
#/   my $dir_name = yp::lib::find_ipxact_dir_name($type,$vendor,$library,$component,$version);                 */
333 117 jt_eaton
#/                                                                                            */
334
#/*********************************************************************************************/
335
 
336 118 jt_eaton
sub find_ipxact_dir_name
337 117 jt_eaton
   {
338
   my @params     = @_;
339
   my $version    = pop(@params);
340
   my $component  = pop(@params);
341
   my $project    = pop(@params);
342
   my $vendor     = pop(@params);
343
   my $type       = pop(@params);
344
 
345
 
346
   my $card_type;
347
   my $card_file_name;
348
   my $card_dir_name;
349
   my $card_vendor_path;
350
   my $card_library_path;
351
   my $card_component_path;
352
   my $card_vendor;
353
   my $card_library;
354
   my $card_component;
355
   my $card_version;
356
 
357
   my $parser           = XML::LibXML->new();
358
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
359
 
360
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
361
     {
362
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
363
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
364
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
365
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
366
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
367
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
368
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
369
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
370
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
371
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
372
     if(( $card_type      eq "${type}"      ) &
373
        ( $card_vendor    eq "${vendor}"    ) &
374
        ( $card_library   eq "${project}"   ) &
375
        ( $card_component eq "${component}" ) &
376
        ( $card_version   eq "${version}"   )
377
       )
378
 
379
       {return("${card_dir_name}");  }
380
     }
381
   }
382
 
383
 
384
 
385
 
386
 
387
 
388
 
389
 
390
#/*********************************************************************************************/
391
#/  find_ipxact_vendor_path                                                                   */
392
#/                                                                                            */
393
#/  returns  path to ip-xact directory from vendor level                                      */
394
#/  The ip-xact file MUST be stored under a subdirectory that matches the vendor name         */
395 118 jt_eaton
#/   my $vendor_path = yp::lib::find_ipxact_vendor_path($type,$vendor,$library,$component,$version);                 */
396 117 jt_eaton
#/                                                                                            */
397
#/*********************************************************************************************/
398
 
399
sub find_ipxact_vendor_path
400
   {
401
   my @params     = @_;
402
   my $version    = pop(@params);
403
   my $component  = pop(@params);
404
   my $project    = pop(@params);
405
   my $vendor     = pop(@params);
406
   my $type       = pop(@params);
407
 
408
 
409
   my $card_type;
410
   my $card_file_name;
411
   my $card_dir_name;
412
   my $card_vendor_path;
413
   my $card_library_path;
414
   my $card_component_path;
415
   my $card_vendor;
416
   my $card_library;
417
   my $card_component;
418
   my $card_version;
419
 
420
   my $parser           = XML::LibXML->new();
421
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
422
 
423
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
424
     {
425
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
426
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
427
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
428
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
429
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
430
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
431
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
432
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
433
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
434
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
435
     if(( $card_type      eq "${type}"      ) &
436
        ( $card_vendor    eq "${vendor}"    ) &
437
        ( $card_library   eq "${project}"   ) &
438
        ( $card_component eq "${component}" ) &
439
        ( $card_version   eq "${version}"   )
440
       )
441
 
442
       {return("/${card_vendor_path}");  }
443
     }
444
   }
445
 
446
 
447
 
448
 
449
#/*********************************************************************************************/
450
#/  find_ipxact_library_path                                                                  */
451
#/                                                                                            */
452
#/  returns  path to ip-xact directory from library level                                     */
453
#/  The ip-xact file MUST be stored under a subdirectory that matches the library name        */
454 118 jt_eaton
#/   my $library_path = yp::lib::find_ipxact_library_path($type,$vendor,$library,$component,$version);                 */
455 117 jt_eaton
#/                                                                                            */
456
#/*********************************************************************************************/
457
 
458
sub find_ipxact_library_path
459
   {
460
   my @params     = @_;
461
   my $version    = pop(@params);
462
   my $component  = pop(@params);
463
   my $project    = pop(@params);
464
   my $vendor     = pop(@params);
465
   my $type       = pop(@params);
466
 
467
 
468
   my $card_type;
469
   my $card_file_name;
470
   my $card_dir_name;
471
   my $card_vendor_path;
472
   my $card_library_path;
473
   my $card_component_path;
474
   my $card_vendor;
475
   my $card_library;
476
   my $card_component;
477
   my $card_version;
478
 
479
   my $parser           = XML::LibXML->new();
480
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
481
 
482
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
483
     {
484
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
485
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
486
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
487
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
488
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
489
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
490
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
491
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
492
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
493
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
494
     if(( $card_type      eq "${type}"      ) &
495
        ( $card_vendor    eq "${vendor}"    ) &
496
        ( $card_library   eq "${project}"   ) &
497
        ( $card_component eq "${component}" ) &
498
        ( $card_version   eq "${version}"   )
499
       )
500
 
501
       {return("/${card_library_path}");  }
502
     }
503
   }
504
 
505
 
506
#/*********************************************************************************************/
507
#/  find_ipxact_component_path                                                                */
508
#/                                                                                            */
509
#/  returns  path to ip-xact directory from component level                                   */
510
#/  The ip-xact file MUST be stored under a subdirectory that matches the component name      */
511 118 jt_eaton
#/   my $component_path = yp::lib::find_ipxact_component_path($type,$vendor,$library,$component,$version);                 */
512 117 jt_eaton
#/                                                                                            */
513
#/*********************************************************************************************/
514
 
515
sub find_ipxact_component_path
516
   {
517
   my @params     = @_;
518
   my $version    = pop(@params);
519
   my $component  = pop(@params);
520
   my $project    = pop(@params);
521
   my $vendor     = pop(@params);
522
   my $type       = pop(@params);
523
 
524
 
525
   my $card_type;
526
   my $card_file_name;
527
   my $card_dir_name;
528
   my $card_vendor_path;
529
   my $card_library_path;
530
   my $card_component_path;
531
   my $card_vendor;
532
   my $card_library;
533
   my $card_component;
534
   my $card_version;
535
 
536
   my $parser           = XML::LibXML->new();
537
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
538
 
539
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
540
     {
541
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
542
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
543
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
544
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
545
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
546
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
547
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
548
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
549
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
550
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
551
     if(( $card_type      eq "${type}"      ) &
552
        ( $card_vendor    eq "${vendor}"    ) &
553
        ( $card_library   eq "${project}"   ) &
554
        ( $card_component eq "${component}" ) &
555
        ( $card_version   eq "${version}"   )
556
       )
557
 
558
       {return("/${card_component_path}");  }
559
     }
560
   }
561
 
562
 
563
 
564
 
565
#/*********************************************************************************************/
566
#/  find_lib_comp_sep                                                                         */
567
#/                                                                                            */
568
#/  returns  path to the component from library level                                         */
569
#/  The file MUST be stored under a subdirectory that matches the component name              */
570 118 jt_eaton
#/   my $lib_comp_sep = yp::lib::find_lib_comp_sep($vendor,$library);                                     */
571 117 jt_eaton
#/                                                                                            */
572
#/*********************************************************************************************/
573
 
574
sub find_lib_comp_sep
575
   {
576
   my @params     = @_;
577
   my $project    = pop(@params);
578
   my $vendor     = pop(@params);
579
 
580
 
581
 
582
   my $card_type;
583
   my $card_file_name;
584
   my $card_dir_name;
585
   my $card_vendor_path;
586
   my $card_library_path;
587
   my $card_component_path;
588
   my $card_lib_comp_sep;
589
   my $card_vendor;
590
   my $card_library;
591
   my $card_component;
592
   my $card_version;
593
 
594
   my $parser           = XML::LibXML->new();
595
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
596
 
597
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
598
     {
599
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
600
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
601
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
602
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
603
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
604
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
605
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
606
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
607
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
608
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
609
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
610
     if(( $card_vendor    eq "${vendor}"    ) &
611
        ( $card_library   eq "${project}"   )
612
       )
613
       {
614
       if($card_lib_comp_sep)   {return("/${card_lib_comp_sep}");}
615
       else                     {return("");}
616
 
617
       }
618
 
619
 
620
 
621
 
622
     }
623
   }
624
 
625
 
626
 
627
 
628
 
629 118 jt_eaton
 
630 117 jt_eaton
#/*********************************************************************************************/
631
#/  find_vendors                                                                              */
632
#/                                                                                            */
633
#/  returns  array of all vendors                                                             */
634
#/                                                                                            */
635 118 jt_eaton
#/   my @vendors = yp::lib::find_vendors($type);                                                       */
636 117 jt_eaton
#/                                                                                            */
637
#/*********************************************************************************************/
638
 
639
sub find_vendors
640
   {
641
   my @params     = @_;
642
   my $type       = pop(@params);
643
   my $card_type;
644
   my $card_file_name;
645
   my $card_dir_name;
646
   my $card_vendor_path;
647
   my $card_library_path;
648
   my $card_component_path;
649
   my $card_lib_comp_sep;
650
   my $card_vendor;
651
   my $card_library;
652
   my $card_component;
653
   my $card_version;
654
 
655
   my $parser           = XML::LibXML->new();
656
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
657
   my @vendors = ();
658
 
659
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
660
     {
661
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
662
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
663
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
664
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
665
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
666
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
667
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
668
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
669
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
670
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
671
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
672
 
673
     if($card_type eq $type){
674
     push (@vendors,$card_vendor );
675
     }
676
 
677
     }
678
   @vendors = trim_sort(@vendors);
679
   return (@vendors);
680
   }
681
 
682
 
683
 
684
#/*********************************************************************************************/
685
#/  find_libraries                                                                            */
686
#/                                                                                            */
687
#/  returns  array of all libraries from a vendor                                             */
688
#/                                                                                            */
689 118 jt_eaton
#/   my @libraries = yp::lib::find_libraries($type,$vendor);                                                 */
690 117 jt_eaton
#/                                                                                            */
691
#/*********************************************************************************************/
692
 
693
sub find_libraries
694
   {
695
   my @params     = @_;
696
   my $vendor    = pop(@params);
697
   my $type      = pop(@params);
698
   my $card_type;
699
   my $card_file_name;
700
   my $card_dir_name;
701
   my $card_vendor_path;
702
   my $card_library_path;
703
   my $card_component_path;
704
   my $card_lib_comp_sep;
705
   my $card_vendor;
706
   my $card_library;
707
   my $card_component;
708
   my $card_version;
709
 
710
   my $parser           = XML::LibXML->new();
711
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
712
   my @libraries = ();
713
 
714
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
715
     {
716
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
717
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
718
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
719
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
720
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
721
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
722
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
723
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
724
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
725
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
726
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
727
     if(($card_type eq $type)& ($card_vendor eq $vendor))  {
728
     push (@libraries,$card_library );}
729
     }
730
   @libraries = trim_sort(@libraries);
731
   return (@libraries);
732
   }
733
 
734
 
735
#/*********************************************************************************************/
736
#/  find_components                                                                           */
737
#/                                                                                            */
738
#/  returns  array of all components from a vendors library                                   */
739
#/                                                                                            */
740 118 jt_eaton
#/   my @components = yp::lib::find_components($type,$vendor,$library);                                      */
741 117 jt_eaton
#/                                                                                            */
742
#/*********************************************************************************************/
743
 
744
sub find_components
745
   {
746
   my @params     = @_;
747
   my $library    = pop(@params);
748
   my $vendor    = pop(@params);
749
   my $type      = pop(@params);
750
 
751
   my $card_type;
752
   my $card_file_name;
753
   my $card_dir_name;
754
   my $card_vendor_path;
755
   my $card_library_path;
756
   my $card_component_path;
757
   my $card_lib_comp_sep;
758
   my $card_vendor;
759
   my $card_library;
760
   my $card_component;
761
   my $card_version;
762
 
763
   my $parser           = XML::LibXML->new();
764
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
765
   my @components = ();
766
 
767
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
768
     {
769
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
770
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
771
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
772
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
773
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
774
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
775
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
776
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
777
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
778
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
779
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
780
     if(($card_type eq $type) & ($card_vendor eq $vendor) & ($card_library eq $library))
781
 
782
     {
783
     push (@components,$card_component);}
784
     }
785
   @components = trim_sort(@components);
786
   return (@components);
787
   }
788
 
789
 
790
 
791
 
792
#/*********************************************************************************************/
793
#/  find_versions                                                                             */
794
#/                                                                                            */
795
#/  returns  array of all versions from a vendors library component                           */
796
#/                                                                                            */
797 118 jt_eaton
#/   my @versions = yp::lib::find_versions($type,$vendor,$library,component);                               */
798 117 jt_eaton
#/                                                                                            */
799
#/*********************************************************************************************/
800
 
801
sub find_versions
802
   {
803
   my @params     = @_;
804
   my $component    = pop(@params);
805
   my $library    = pop(@params);
806
   my $vendor    = pop(@params);
807
   my $type     = pop(@params);
808
 
809
   my $card_type;
810
   my $card_file_name;
811
   my $card_dir_name;
812
   my $card_vendor_path;
813
   my $card_library_path;
814
   my $card_component_path;
815
   my $card_lib_comp_sep;
816
   my $card_vendor;
817
   my $card_library;
818
   my $card_component;
819
   my $card_version;
820
 
821
   my $parser           = XML::LibXML->new();
822
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
823
   my @versions = ();
824
 
825
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
826
     {
827
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
828
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
829
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
830
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
831
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
832
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
833
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
834
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
835
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
836
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
837
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
838
     if(($card_type eq $type) & ($card_vendor eq $vendor) & ($card_library eq $library) & ($card_component  eq $component))
839
 
840
     {
841
     push (@versions,$card_version);}
842
     }
843
   @versions = trim_sort(@versions);
844
   return (@versions);
845
   }
846
 
847
 
848
 
849
 
850
 
851
 
852
 
853
 
854
#/*********************************************************************************************/
855
#/  find_socgen                                                                               */
856
#/                                                                                            */
857
#/  returns full path name to socgen file                                                     */
858
#/                                                                                            */
859 118 jt_eaton
#/   my $socgen_ip_file = yp::lib::find_socgen($type,$vendor,$library,$component);                          */
860 117 jt_eaton
#/                                                                                            */
861
#/*********************************************************************************************/
862
 
863
sub find_socgen
864
   {
865
   my @params     = @_;
866
   my $component  = pop(@params);
867
   my $project    = pop(@params);
868
   my $vendor     = pop(@params);
869
   my $type       = pop(@params);
870
 
871
 
872
   my $card_type;
873
   my $card_file_name;
874
   my $card_dir_name;
875
   my $card_vendor;
876
   my $card_library;
877
   my $card_component;
878
 
879
   my $parser           = XML::LibXML->new();
880
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
881
 
882
 
883
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
884
     {
885
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
886
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
887
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
888
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
889
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
890
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
891
     if(( $card_type      eq "${type}"      ) &
892
        ( $card_vendor    eq "${vendor}"    ) &
893
        ( $card_library   eq "${project}"   ) &
894
        ( $card_component eq "${component}" )
895
       )  {return("./${card_dir_name}/${card_file_name}");  }
896
     }
897
   }
898
 
899
 
900
 
901
 
902
sub trim_sort {
903
   my @output_files  = @_;
904
   my %trim = ();
905
   foreach my $descriptor (@output_files) { $trim{$descriptor}  = 1; }
906
   my @k = keys %trim;
907
   @output_files =  sort(sort @k);
908
   return(@output_files);
909
   }
910
 
911
 
912
 
913
 
914
 
915
 
916
 
917
 
918
 
919
1;

powered by: WebSVN 2.1.0

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