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 */
|
#/ */
|
#/ */
|