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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [tools/] [yp/] [lib.pm] - Diff between revs 130 and 131

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 130 Rev 131
Line 49... Line 49...
 
 
package yp::lib;
package yp::lib;
 
 
 
 
############################################################################
############################################################################
### Set up Databases
# General PERL config
############################################################################
############################################################################
 
use Getopt::Long;
 
use English;
 
use File::Basename;
 
use Cwd;
 
use XML::LibXML;
 
use lib './tools';
 
use sys::lib;
use BerkeleyDB;
use BerkeleyDB;
 
 
 
 
my $repo_db      = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/repo.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
$OUTPUT_AUTOFLUSH = 1; # set autoflush of stdout to TRUE.
my $component_db = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/component.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $design_db    = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/design.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $abstractionDefinition_db    = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/abstractionDefinition.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $busDefinition_db    = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/busDefinition.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $libraryConfiguration_db    = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/libraryConfiguration.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $componentConfiguration_db    = new BerkeleyDB::Hash( -Filename => 'tools/yp/Berkeley/componentConfiguration.dbm', -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
 
my $home         = cwd();
 
 
 
 
 
my $parser = XML::LibXML->new();
 
 
 
 
 
 
 
my    $workspace_xml    = $parser->parse_file("${home}/workspace.xml");
 
my @repos =();
 
my $repo;
 
 
 
 
 
foreach my $repo ($workspace_xml->findnodes('//socgen:workspace/socgen:repos/socgen:repo'))
 
                  {
 
                  my $repo_name  = $repo->findnodes('./socgen:name/text()')->to_literal ;
 
                  push  @repos,$repo_name;
 
                  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
my $number_of_cpus;
 
my $workspace;
 
my $yellow_pages;
 
my $io_ports;
 
my $doc_dir;
 
 
 
 
 
foreach my $repo ($workspace_xml->findnodes('//socgen:workspace'))
 
                  {
 
                  $number_of_cpus  = $repo->findnodes('./socgen:number_of_cpus/text()')->to_literal ;
 
                  $workspace       = $repo->findnodes('./socgen:build_dir/text()')->to_literal ;
 
                  $yellow_pages    = $repo->findnodes('./socgen:yp_dir/text()')->to_literal ;
 
                  $io_ports        = $repo->findnodes('./socgen:ports_dir/text()')->to_literal ;
 
                  $doc_dir         = $repo->findnodes('./socgen:doc_dir/text()')->to_literal ;
 
 
 
                  }
 
 
 
 
 
 
 
#print "number_of_cpus  $number_of_cpus  \n";
 
#print "workspace       $workspace  \n";
 
#print "yellow_pages    $yellow_pages  \n";
 
#print "io_ports        $io_ports  \n";
 
 
 
 
 
 
 
 
 
my $path  = "${home}/${yellow_pages}";
 
 
 
unless( -e $path )
 
{
 
print "$path does not exist \n";
 
my $cmd = "./tools/yp/create_yp $path \n";
 
if(system($cmd)){};
 
 
 
}
 
 
 
 
 
 
 
my $repo_db                     = new BerkeleyDB::Hash( -Filename => "${yellow_pages}/repo.dbm", -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $component_db                = new BerkeleyDB::Hash( -Filename => "${yellow_pages}/component.dbm", -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $design_db                   = new BerkeleyDB::Hash( -Filename => "${yellow_pages}/design.dbm", -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $abstractionDefinition_db    = new BerkeleyDB::Hash( -Filename => "${yellow_pages}/abstractionDefinition.dbm", -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $busDefinition_db            = new BerkeleyDB::Hash( -Filename => "${yellow_pages}/busDefinition.dbm", -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $libraryConfiguration_db     = new BerkeleyDB::Hash( -Filename => "${yellow_pages}/libraryConfiguration.dbm", -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
my $componentConfiguration_db   = new BerkeleyDB::Hash( -Filename => "${yellow_pages}/componentConfiguration.dbm", -Flags => DB_CREATE ) or die "Cannot open file: $!";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#/***********************************************************************************************/
 
#/  get_workspace                                                                               */
 
#/                                                                                              */
 
#/  returns name for the workspace subdirectory under ${home}                                   */
 
#/                                                                                              */
 
#/  my $workspace = yp::lib::get_workspace();                                                   */
 
#/                                                                                              */
 
#/***********************************************************************************************/
 
 
 
sub get_workspace
 
   {
 
   return("${workspace}");
 
   }
 
 
 
 
 
 
 
#/***********************************************************************************************/
 
#/  get_yp                                                                                      */
 
#/                                                                                              */
 
#/  returns name for the yellow_pages subdirectory under ${home}                                */
 
#/                                                                                              */
 
#/  my $workspace = yp::lib::get_yp();                                                          */
 
#/                                                                                              */
 
#/***********************************************************************************************/
 
 
 
sub get_yp
 
   {
 
   return("${yellow_pages}");
 
   }
 
 
 
 
 
 
 
 
 
 
 
#/***********************************************************************************************/
 
#/  get_io_ports                                                                                */
 
#/                                                                                              */
 
#/  returns name for the io_ports subdirectory under ${home}                                    */
 
#/                                                                                              */
 
#/  my $workspace = yp::lib::get_io_ports();                                                    */
 
#/                                                                                              */
 
#/***********************************************************************************************/
 
 
 
sub get_io_ports
 
   {
 
   return("${io_ports}");
 
   }
 
 
 
#/***********************************************************************************************/
 
#/  get_doc_dir                                                                                 */
 
#/                                                                                              */
 
#/  returns name for the documentation  subdirectory under ${home}                              */
 
#/                                                                                              */
 
#/  my $workspace = yp::lib::get_doc_dir ();                                                    */
 
#/                                                                                              */
 
#/***********************************************************************************************/
 
 
 
sub get_doc_dir
 
   {
 
   return("${doc_dir}");
 
   }
 
 
 
 
 
 
 
 
 
#/***************************************************************************************************/
 
#/  get_io_ports_db_filename                                                                        */
 
#/                                                                                                  */
 
#/  returns full path name to io_ports database filename                                            */
 
#/                                                                                                  */
 
#/  my $io_ports_filename = yp::lib::get_io_ports_db_filename($vendor,$library,$component,$version);*/
 
#/                                                                                                  */
 
#/***************************************************************************************************/
 
 
 
sub get_io_ports_db_filename
 
   {
 
   my @params     = @_;
 
   my $version    = pop(@params);
 
   my $component  = pop(@params);
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
   my $main_module_name = yp::lib::get_module_name($vendor,$library,$component,$version) ;
 
   my $io_ports_db_filename = "${home}/${io_ports}/${vendor}__${library}/${component}/${main_module_name}_PORTS.dbm";
 
 
 
   if(-e ${io_ports_db_filename } )
 
     {
 
     return("${io_ports_db_filename}");
 
     }
 
   my $cmd = "./tools/verilog/gen_ports    -vendor $vendor -library  $library  -component $component  -version $version   ";
 
   if (system($cmd)) {}
 
   return("${io_ports_db_filename}");
 
   }
 
 
 
 
 
 
 
 
 
 
 
#/***************************************************************************************************/
 
#/  get_io_busses_db_filename                                                                        */
 
#/                                                                                                  */
 
#/  returns full path name to io_busses database filename                                            */
 
#/                                                                                                  */
 
#/  my $io_ports_filename = yp::lib::get_io_busses_db_filename($vendor,$library,$component,$version);*/
 
#/                                                                                                  */
 
#/***************************************************************************************************/
 
 
 
sub get_io_busses_db_filename
 
   {
 
   my @params     = @_;
 
   my $version    = pop(@params);
 
   my $component  = pop(@params);
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
   my $main_module_name = yp::lib::get_module_name($vendor,$library,$component,$version) ;
 
   my $io_busses_db_filename = "${home}/${io_ports}/${vendor}__${library}/${component}/${main_module_name}_BUSSES.dbm";
 
 
 
   if(-e ${io_busses_db_filename } )
 
     {
 
     return("${io_busses_db_filename}");
 
     }
 
   my $cmd = "./tools/verilog/gen_ports    -vendor $vendor -library  $library  -component $component  -version $version   ";
 
   if (system($cmd)) {}
 
   return("${io_busses_db_filename}");
 
   }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#/***************************************************************************************************/
 
#/  get_signals                                                                                     */
 
#/                                                                                                  */
 
#/  returns array of all signals in a component                                                     */
 
#/                                                                                                  */
 
#/  my @signals  = yp::lib::get_signals($vendor,$library,$component,$version);                      */
 
#/                                                                                                  */
 
#/***************************************************************************************************/
 
 
 
sub get_signals
 
   {
 
   my @params     = @_;
 
   my $version    = pop(@params);
 
   my $component  = pop(@params);
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
   my $main_module_name = yp::lib::get_module_name($vendor,$library,$component,$version) ;
 
   my $io_ports_db_filename = "${home}/${io_ports}/${vendor}__${library}/${component}/${main_module_name}_PORTS.dbm";
 
 
 
 
 
   unless (-e ${io_ports_db_filename } )
 
      {
 
 
 
      my $cmd = "./tools/verilog/gen_ports    -vendor $vendor -library  $library  -component $component  -version $version   ";
 
      if (system($cmd)) {}
 
         $cmd = "./tools/verilog/gen_signals  -vendor $vendor -library  $library  -component $component  -version $version   ";
 
      if (system($cmd)) {}
 
      }
 
 
 
 
 
 
 
   my  $ports_db   = new BerkeleyDB::Hash( -Filename => $io_ports_db_filename, -Flags => DB_CREATE ) or die "Cannot open ${io_ports_db_filename}: $!";
 
   my  @signals  = ();
 
   my  $key;
 
   my  $value;
 
   my  $port_cursor = $ports_db->db_cursor() ;
 
       while ($port_cursor->c_get($key, $value, DB_NEXT) == 0)
 
          {
 
 
 
          push (@signals, $value);
 
          }
 
   my  $status = $port_cursor->c_close() ;
 
 
 
       @signals      = sys::lib::trim_sort(@signals);
 
   return(@signals);
 
   }
 
 
 
 
 
 
 
 
 
 
 
#/***************************************************************************************************/
 
#/  get_busses                                                                                     */
 
#/                                                                                                  */
 
#/  returns array of all busses in a component                                                     */
 
#/                                                                                                  */
 
#/  my @signals  = yp::lib::get_busses($vendor,$library,$component,$version);                      */
 
#/                                                                                                  */
 
#/***************************************************************************************************/
 
 
 
sub get_busses
 
   {
 
   my @params     = @_;
 
   my $version    = pop(@params);
 
   my $component  = pop(@params);
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
   my $main_module_name = yp::lib::get_module_name($vendor,$library,$component,$version) ;
 
   my $io_busses_db_filename = "${home}/${io_ports}/${vendor}__${library}/${component}/${main_module_name}_BUSSES.dbm";
 
 
 
 
 
   unless (-e ${io_busses_db_filename } )
 
      {
 
 
 
      my $cmd = "./tools/verilog/gen_ports    -vendor $vendor -library  $library  -component $component  -version $version   ";
 
      if (system($cmd)) {}
 
      }
 
 
 
   my  $ports_db   = new BerkeleyDB::Hash( -Filename => $io_busses_db_filename, -Flags => DB_CREATE ) or die "Cannot open ${io_busses_db_filename}: $!";
 
   my  @busses  = ();
 
   my  $key;
 
   my  $value;
 
   my  ${key_type};
 
   my  ${busref};
 
   my  ${conn};
 
   my  ${log_name};
 
   my  ${direction};
 
   my  ${type};
 
   my  ${vector};
 
   my  ${left};
 
   my  ${right};
 
   my  ${phy_name};
 
   my  $port_cursor = $ports_db->db_cursor() ;
 
       while ($port_cursor->c_get($key, $value, DB_NEXT) == 0)
 
          {
 
          ( ${key_type},${busref},${conn}) = split( /\./ , $key);
 
          ( ${log_name},${direction},${type},${vector},${left},${right},${phy_name}) = split ':', $value;
 
 
 
           if(($key_type eq "BusRef"))
 
              {
 
              push (@busses,  "${busref}:::${conn}:::${phy_name}:::${log_name}:::${direction}:::${type}:::${vector}:::${left}:::${right}");
 
              }
 
          }
 
   my  $status = $port_cursor->c_close() ;
 
 
 
   @busses      = sys::lib::trim_sort(@busses);
 
   return(@busses);
 
   }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#/***************************************************************************************************/
 
#/  get_absDef_db_filename                                                                          */
 
#/                                                                                                  */
 
#/  returns full path name to abstractionDefinition database filename                               */
 
#/                                                                                                  */
 
#/  my $absDef_filename = yp::lib::get_absDef_db_filename($vendor,$library,$component,$version);    */
 
#/                                                                                                  */
 
#/***************************************************************************************************/
 
 
 
sub get_absDef_db_filename
 
   {
 
   my @params     = @_;
 
   my $version    = pop(@params);
 
   my $component  = pop(@params);
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
   my $absDef_db_filename = "${io_ports}/${vendor}__${library}/${component}/${component}_${version}_ABSDEF.dbm";
 
 
 
   if(-e ${absDef_db_filename } )
 
     {
 
     return("${absDef_db_filename}");
 
     }
 
   my $cmd = "./tools/busdefs/gen_busdef    -vendor $vendor -library $library  -component $component  -version $version   ";
 
   if (system($cmd)) {}
 
 
 
   return("${absDef_db_filename}");
 
   }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#/***********************************************************************************************/
#/***********************************************************************************************/
Line 145... Line 525...
 
 
   my $data;
   my $data;
   my $design_xml_sep ;
   my $design_xml_sep ;
   my $design_xml_file ;
   my $design_xml_file ;
   my $design_version;
   my $design_version;
 
   my $design_name;
 
   my $design_library;
 
   my $design_vendor;
 
 
 
 
      $abstractionDefinition_db->db_get("${vendor}__${library}_${component}_${version}", $data );
      $abstractionDefinition_db->db_get("${vendor}__${library}_${component}_${version}", $data );
      ( $design_xml_file, $design_xml_sep,$design_version ) = split ':', $data;
      ( $design_xml_file, $design_xml_sep,$design_version,$design_name,$design_library,$design_vendor ) = split ':', $data;
 
 
      return("$design_xml_file");
      return("$design_xml_file");
 
 
   }
   }
 
 
Line 232... Line 616...
 
 
 
 
 
 
 
 
#/**************************************************************************************************************/
#/**************************************************************************************************************/
 
#/  find_component_repo                                                                                        */
 
#/                                                                                                             */
 
#/  returns repository that containing component                                                               */
 
#/                                                                                                             */
 
#/  my $repo_name = yp::lib::find_component_repo($vendor,$library,$component);                                 */
 
#/                                                                                                             */
 
#/**************************************************************************************************************/
 
 
 
sub find_component_repo   {
 
   my @params     = @_;
 
   my $component  = pop(@params);
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
 
 
   my $type;
 
   my $name;
 
   my $lib_comp_sep;
 
   my $repo_dir;
 
   my $repo_data;
 
 
 
      $repo_db->db_get("${vendor}__${library}_${component}", $repo_data );
 
   ( $type,$name, $lib_comp_sep, $repo_dir ) = split ':', $repo_data;
 
   return("${repo_dir}");
 
   }
 
 
 
 
 
 
 
 
 
#/**************************************************************************************************************/
 
#/  find_library_repo                                                                                          */
 
#/                                                                                                             */
 
#/  returns repository containing library                                                                      */
 
#/                                                                                                             */
 
#/  my $repo_name = yp::lib::find_library_repo($vendor,$library);                                              */
 
#/                                                                                                             */
 
#/**************************************************************************************************************/
 
 
 
sub find_library_repo   {
 
   my @params     = @_;
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
 
 
   my $type;
 
   my $name;
 
   my $status;
 
   my $library_path;
 
   my $repo_dir;
 
   my $repo_data;
 
 
 
      $repo_db->db_get("${vendor}__${library}", $repo_data );
 
   ( $type,$name, $library_path,$status, $repo_dir ) = split ':', $repo_data;
 
   return("${repo_dir}");
 
   }
 
 
 
 
 
 
 
 
 
#/**************************************************************************************************************/
#/  find_lib_comp_sep                                                                                          */
#/  find_lib_comp_sep                                                                                          */
#/                                                                                                             */
#/                                                                                                             */
#/  returns libraries path to components                                                                       */
#/  returns libraries path to components                                                                       */
#/                                                                                                             */
#/                                                                                                             */
#/  my $lib_comp_sep = yp::lib::find_lib_comp_sep($vendor,$library,$component);                                */
#/  my $lib_comp_sep = yp::lib::find_lib_comp_sep($vendor,$library,$component);                                */
Line 250... Line 692...
   my $vendor     = pop(@params);
   my $vendor     = pop(@params);
 
 
   my $type;
   my $type;
   my $name;
   my $name;
   my $lib_comp_sep;
   my $lib_comp_sep;
 
   my $repo_dir;
   my $repo_data;
   my $repo_data;
 
 
      $repo_db->db_get("${vendor}__${library}_${component}", $repo_data );
      $repo_db->db_get("${vendor}__${library}_${component}", $repo_data );
   ( $type,$name, $lib_comp_sep ) = split ':', $repo_data;
   ( $type,$name, $lib_comp_sep, $repo_dir ) = split ':', $repo_data;
   return("${lib_comp_sep}");
   return("${lib_comp_sep}");
   }
   }
 
 
 
 
 
 
Line 319... Line 762...
   }
   }
 
 
 
 
 
 
 
 
 
 
 
 
 
#/**************************************************************************************************************/
 
#/  get_vendor_status                                                                                          */
 
#/                                                                                                             */
 
#/  returns vendor status                                                                                      */
 
#/                                                                                                             */
 
#/  my $vendor_status = yp::lib::get_vendor_status($vendor);                                                   */
 
#/                                                                                                             */
 
#/**************************************************************************************************************/
 
 
 
sub get_vendor_status   {
 
   my @params     = @_;
 
   my $vendor     = pop(@params);
 
 
 
   my $type;
 
   my $name;
 
   my $status;
 
   my $repo_dir;
 
   my $repo_data;
 
 
 
      $repo_db->db_get("${vendor}", $repo_data );
 
   ( $type,$name, $status, $repo_dir ) = split ':', $repo_data;
 
   return("${status}");
 
   }
 
 
 
 
 
 
 
 
 
#/**************************************************************************************************************/
 
#/  set_vendor_status                                                                                          */
 
#/                                                                                                             */
 
#/  sets vendor status                                                                                         */
 
#/                                                                                                             */
 
#/  my $vendor_status = yp::lib::set_vendor_status($vendor,$status);                                           */
 
#/                                                                                                             */
 
#/**************************************************************************************************************/
 
 
 
sub set_vendor_status   {
 
   my @params     = @_;
 
   my $status     = pop(@params);
 
   my $vendor     = pop(@params);
 
 
 
   my $type;
 
   my $name;
 
   my $old_status;
 
   my $repo_dir;
 
   my $repo_data;
 
   my @repo_info;
 
 
 
      $repo_db->db_get("${vendor}", $repo_data );
 
   ( $type,$name, $old_status, $repo_dir ) = split ':', $repo_data;
 
 
 
   my @repo_info  = ("vendor","$vendor","$status","$repo_dir" );
 
   $repo_db->db_put( $vendor, join(':', @repo_info) );
 
 
 
   return("${status}");
 
   }
 
 
 
 
 
 
 
 
 
#/**************************************************************************************************************/
 
#/  get_library_status                                                                                         */
 
#/                                                                                                             */
 
#/  returns library status                                                                                     */
 
#/                                                                                                             */
 
#/  my $library_status = yp::lib::get_library_status($vendor);                                                 */
 
#/                                                                                                             */
 
#/**************************************************************************************************************/
 
 
 
sub get_library_status   {
 
   my @params     = @_;
 
   my $library     = pop(@params);
 
   my $vendor     = pop(@params);
 
 
 
   my $type;
 
   my $name;
 
   my $library_path;
 
   my $status;
 
   my $repo_dir;
 
   my $repo_data;
 
 
 
      $repo_db->db_get("${vendor}_${library}", $repo_data );
 
   ( $type,$name,$library_path, $status, $repo_dir ) = split ':', $repo_data;
 
   return("${status}");
 
   }
 
 
 
 
 
 
 
 
 
#/**************************************************************************************************************/
 
#/  set_library_status                                                                                         */
 
#/                                                                                                             */
 
#/  sets library status                                                                                        */
 
#/                                                                                                             */
 
#/  my $library_status = yp::lib::set_library_status($vendor,$library,$status);                                */
 
#/                                                                                                             */
 
#/**************************************************************************************************************/
 
 
 
sub set_library_status   {
 
   my @params     = @_;
 
   my $status     = pop(@params);
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
 
 
   my $type;
 
   my $name;
 
   my $old_status;
 
   my $library_path;
 
   my $repo_dir;
 
   my $repo_data;
 
   my @repo_info;
 
 
 
      $repo_db->db_get("${vendor}_${library}", $repo_data );
 
   ( $type,$name,$library_path, $old_status, $repo_dir ) = split ':', $repo_data;
 
 
 
   my @repo_info  = ("library","$library","$library_path","$status","$repo_dir" );
 
   $repo_db->db_put( "${vendor}_${library}", join(':', @repo_info) );
 
 
 
   return("${status}");
 
   }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#/*********************************************************************************************/
#/*********************************************************************************************/
#/  find_vendors                                                                              */
#/  find_vendors                                                                              */
#/                                                                                            */
#/                                                                                            */
#/  returns  array of all vendors                                                             */
#/  returns  array of all vendors                                                             */
#/                                                                                            */
#/                                                                                            */
Line 335... Line 913...
   my $key;
   my $key;
   my $value;
   my $value;
   my $type;
   my $type;
   my $name;
   my $name;
   my $path;
   my $path;
 
   my $repo_dir;
   my @vendors = ();
   my @vendors = ();
 
 
   my $cursor = $repo_db->db_cursor() ;
   my $cursor = $repo_db->db_cursor() ;
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
   {
   {
   ( $type,$name, $path ) = split ':', $value;
   ( $type,$name, $path,$repo_dir ) = split ':', $value;
   if($type  eq "vendor")
   if($type  eq "vendor")
     {
     {
      push (@vendors,$name );
      push (@vendors,$name );
      }
      }
   }
   }
Line 369... Line 948...
   my $vendor    = pop(@params);
   my $vendor    = pop(@params);
   my $type;
   my $type;
   my $key;
   my $key;
   my $value;
   my $value;
   my $name;
   my $name;
 
   my $status;
   my $path;
   my $path;
 
   my $repo_dir;
   my @libraries = ();
   my @libraries = ();
 
 
   my $cursor = $repo_db->db_cursor() ;
   my $cursor = $repo_db->db_cursor() ;
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
   {
   {
   ( $type,$name, $path ) = split ':', $value;
   ( $type,$name, $path,$status, $repo_dir) = split ':', $value;
 
 
 
 
   if(($type  eq "library")&& ($key eq "${vendor}__${name}")          )
   if(($type  eq "library")&& ($key eq "${vendor}__${name}")          )
     {
     {
      push (@libraries,$name );
      push (@libraries,$name );
Line 407... Line 988...
   my $type;
   my $type;
   my $key;
   my $key;
   my $value;
   my $value;
   my $name;
   my $name;
   my $path;
   my $path;
 
   my $repo_dir;
   my @components = ();
   my @components = ();
   my $cursor = $repo_db->db_cursor() ;
   my $cursor = $repo_db->db_cursor() ;
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
      {
      {
      ( $type,$name, $path ) = split ':', $value;
      ( $type,$name, $path,$repo_dir ) = split ':', $value;
      if(($type  eq "component")&& ($key eq "${vendor}__${library}_${name}"))
      if(($type  eq "component")&& ($key eq "${vendor}__${library}_${name}"))
         { push (@components,$name );}
         { push (@components,$name );}
      }
      }
   @components = trim_sort(@components);
   @components = trim_sort(@components);
   return (@components);
   return (@components);
Line 482... Line 1064...
 
 
   my $xml_file;
   my $xml_file;
   my $key;
   my $key;
   my $value;
   my $value;
   my $comp_xml_sep;
   my $comp_xml_sep;
   my $version;
   my $design_vendor;
 
   my $design_library;
 
   my $design_name;
 
   my $design_version;
 
 
   my @versions = ();
   my @versions = ();
   my $cursor = $abstractionDefinition_db->db_cursor() ;
   my $cursor = $abstractionDefinition_db->db_cursor() ;
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
      {
      {
      ( $xml_file,$comp_xml_sep, $version ) = split ':', $value;
      ( $xml_file,$comp_xml_sep, $design_version,$design_name,$design_library,$design_vendor ) = split ':', $value;
      if(($key eq "${vendor}__${library}_${abstractionDefinition}_${version}"))
      if(($key eq "${vendor}__${library}_${abstractionDefinition}_${design_version}"))
         {
         {
         push (@versions,$version );
         push (@versions,$design_version );
         }
         }
      }
      }
   @versions = trim_sort(@versions);
   @versions = trim_sort(@versions);
   return (@versions);
   return (@versions);
   }
   }
 
 
 
 
 
#/*********************************************************************************************/
 
#/  find_abstractionDefinitions                                                                */
 
#/                                                                                            */
 
#/  returns  array of all         abstractionDefinitions   vendor__library_abstractionDefinition_version      */
 
#/                                                                                            */
 
#/   my @abstractionDefinitions = yp::lib::find_abstractionDefinitions();                     */
 
#/                                                                                            */
 
#/*********************************************************************************************/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
sub find_abstractionDefinitions
 
   {
 
   my $key;
 
   my $value;
 
   my $type;
 
   my $name;
 
   my $path;
 
 
 
   my $design_xml_file;
 
   my $design_xml_sep;
 
 
 
   my $design_version;
 
   my $design_name;
 
   my $design_library;
 
   my $design_vendor;
 
 
 
 
 
   my @abstractionDefinitions = ();
 
 
 
   my $cursor = $abstractionDefinition_db->db_cursor() ;
 
   while ($cursor->c_get($key, $value, DB_NEXT) == 0)
 
         {
 
 
 
         ( $design_xml_file, $design_xml_sep,$design_version,$design_name,$design_library,$design_vendor ) = split ':', $value;
 
         push (@abstractionDefinitions,"${design_vendor}:${design_library}:${design_name}:${design_version}" );
 
         @abstractionDefinitions = trim_sort(@abstractionDefinitions);
 
         }
 
         return (@abstractionDefinitions);
 
   }
 
 
 
 
#/************************************************************************************************************************/
#/************************************************************************************************************************/
#/  find_busDefinition_versions                                                                                  */
#/  find_busDefinition_versions                                                                                  */
#/                                                                                                                       */
#/                                                                                                                       */
#/  returns  array of all versions os a busDefinition                                                            */
#/  returns  array of all versions os a busDefinition                                                            */
#/                                                                                                                       */
#/                                                                                                                       */
Line 560... Line 1190...
 
 
   my $name_depth =2;
   my $name_depth =2;
 
 
   my $parser     = XML::LibXML->new();
   my $parser     = XML::LibXML->new();
 
 
   my $socgen_component_file  = $parser->parse_file(yp::lib::find_componentConfiguration($vendor,$library,$component));
   my $socgen_component_filename  = yp::lib::find_componentConfiguration($vendor,$library,$component);
 
   unless($socgen_component_filename)
 
      {
 
          return("");
 
      }
 
   my $socgen_component_file  = $parser->parse_file($socgen_component_filename);
 
 
   foreach my $new_comp ($socgen_component_file->findnodes("//socgen:componentConfiguration"))
   foreach my $new_comp ($socgen_component_file->findnodes("//socgen:componentConfiguration"))
     {
     {
     $name_depth        = $new_comp->findnodes('./socgen:ip_name_depth/text()')->to_literal ;
     $name_depth        = $new_comp->findnodes('./socgen:ip_name_depth/text()')->to_literal ;
     }
     }
Line 575... Line 1210...
  if($name_depth eq "4"){   return("${vendor}_${library}_${component}_${version}");}
  if($name_depth eq "4"){   return("${vendor}_${library}_${component}_${version}");}
 
 
   }
   }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#/*********************************************************************************************/
 
#/  find_versions                                                                             */
 
#/                                                                                            */
 
#/  returns  array of all versions from a vendors library component                           */
 
#/                                                                                            */
 
#/   my @versions = yp::lib::find_versions($type,$vendor,$library,component);                 */
 
#/                                                                                            */
 
#/*********************************************************************************************/
 
 
 
sub find_versions
 
   {
 
   my @params     = @_;
 
   my $component  = pop(@params);
 
   my $library    = pop(@params);
 
   my $vendor     = pop(@params);
 
   my $type       = pop(@params);
 
   my $card_type;
 
   my $card_vendor;
 
   my $card_library;
 
   my $card_component;
 
   my $card_version;
 
 
 
   my $parser           = XML::LibXML->new();
 
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
 
   my @versions = ();
 
 
 
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
 
     {
 
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
 
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
 
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
 
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
 
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
 
     if(($card_type eq $type) & ($card_vendor eq $vendor) & ($card_library eq $library) & ($card_component  eq $component))
 
 
 
     {
 
     push (@versions,$card_version);}
 
#     print "XXXXXG   ${vendor}__${library}_${component}   $card_version   \n";
 
 
 
     }
 
   @versions = trim_sort(@versions);
 
#         print "XXXXXG   ++++++++++++++++++++ Old \n";
 
   return (@versions);
 
   }
 
 
 
 
 
#/*********************************************************************************************/
#/*********************************************************************************************/
#/  parse_component_file                                                                      */
#/  parse_component_file                                                                      */
#/                                                                                            */
#/                                                                                            */
#/  returns design names for component                                                        */
#/  returns design names for component                                                        */
#/                                                                                            */
#/                                                                                            */

powered by: WebSVN 2.1.0

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