Line 69... |
Line 69... |
|
|
Getopt::Long::config("require_order", "prefix=-");
|
Getopt::Long::config("require_order", "prefix=-");
|
GetOptions("h","help",
|
GetOptions("h","help",
|
"vendor=s" => \$vendor,
|
"vendor=s" => \$vendor,
|
"project=s" => \$project,
|
"project=s" => \$project,
|
"lib_comp_sep=s" => \$lib_comp_sep,
|
|
"component=s" => \$component,
|
"component=s" => \$component,
|
"version=s" => \$version
|
"version=s" => \$version
|
) || die "(use '$program_name -h' for help)";
|
) || die "(use '$program_name -h' for help)";
|
|
|
|
|
##############################################################################
|
##############################################################################
|
## Help option
|
## Help option
|
##############################################################################
|
##############################################################################
|
if ( $opt_h or $opt_help )
|
if ( $opt_h or $opt_help )
|
{
|
{
|
print "\n type soc_link_child -vendor vendor_name -project project_name -lib_comp_sep /ip/ -component component_name -comp_xml_sep /rtl/xml/ ";
|
print "\n type soc_link_child -vendor vendor_name -project project_name -component component_name -version version_name ";
|
print "\n";
|
print "\n";
|
exit 1;
|
exit 1;
|
}
|
}
|
|
|
|
|
Line 94... |
Line 93... |
|
|
$home = cwd();
|
$home = cwd();
|
|
|
|
|
my $parser = XML::LibXML->new();
|
my $parser = XML::LibXML->new();
|
|
my $lib_comp_sep = yp::lib::find_lib_comp_sep($vendor,$project);
|
|
|
|
|
|
my $variant;
|
|
|
|
if($version) {$variant = "${component}_${version}";}
|
|
else {$variant = "${component}";}
|
|
|
|
|
|
|
|
#/*********************************************************************************************/
|
|
#/ */
|
|
#/ link overlay projects */
|
|
#/ */
|
|
#/*********************************************************************************************/
|
|
|
|
|
|
|
|
|
|
my $socgen_ip_file = $parser->parse_file(yp::lib::find_socgen("socgen:ip",$vendor,$project,$component));
|
|
|
|
|
|
|
|
foreach my $i_name ($socgen_ip_file->findnodes("//chips/chip[variant/text() = '$variant']"))
|
|
{
|
|
my($chip) = $i_name ->findnodes('name/text()')->to_literal ;
|
|
my($replace_vendor) = $i_name ->findnodes('socgen:target/socgen:vendor/text()')->to_literal ;
|
|
my($replace_library) = $i_name ->findnodes('socgen:target/socgen:library/text()')->to_literal ;
|
|
|
|
my @replace_components = yp::lib::find_components("spirit:component",$replace_vendor,$replace_library);
|
|
foreach my $replace_component (@replace_components)
|
|
{
|
|
# print " VVVVVV $replace_vendor $replace_library $replace_component \n" ;
|
|
&link_child( $project,$replace_component, $replace_library );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
Line 257... |
Line 292... |
my $project = pop(@params);
|
my $project = pop(@params);
|
my $vendor = pop(@params);
|
my $vendor = pop(@params);
|
|
|
$home = cwd();
|
$home = cwd();
|
|
|
my $spirit_component_file = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$project,$component,$version));
|
|
push(@filelist_hier,"::${project}::${component}::");
|
push(@filelist_hier,"::${project}::${component}::");
|
|
|
|
my $spirit_design_file = yp::lib::find_ipxact_design_file($vendor,$project,$component,$version );
|
|
my $spirit_padring_design_file = yp::lib::find_ipxact_padring_design_file($vendor,$project,$component,$version );
|
|
|
|
|
foreach my $comp_view ($spirit_component_file->findnodes('//spirit:component/spirit:model/spirit:views/spirit:view'))
|
|
{
|
|
my($view_name) = $comp_view->findnodes('./spirit:name/text()')->to_literal ;
|
|
if($view_name eq "Hierarchical")
|
|
{
|
|
my($hier_ref_vendor) = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:vendor')->to_literal ;
|
|
my($hier_ref_library) = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:library')->to_literal ;
|
|
my($hier_ref_component) = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:name')->to_literal ;
|
|
my($hier_ref_version) = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:version')->to_literal ;
|
|
my $spirit_designCfg_file
|
|
= $parser->parse_file(yp::lib::find_ipxact("spirit:designConfiguration",$hier_ref_vendor,$hier_ref_library,$hier_ref_component,$hier_ref_version ));
|
|
|
|
foreach my $design_ref_view ($spirit_designCfg_file->findnodes('//spirit:designConfiguration'))
|
|
{
|
|
my($hier_xref_vendor) = $design_ref_view->findnodes('./spirit:designRef/@spirit:vendor')->to_literal ;
|
|
my($hier_xref_library) = $design_ref_view->findnodes('./spirit:designRef/@spirit:library')->to_literal ;
|
|
my($hier_xref_component) = $design_ref_view->findnodes('./spirit:designRef/@spirit:name')->to_literal ;
|
|
my($hier_xref_version) = $design_ref_view->findnodes('./spirit:designRef/@spirit:version')->to_literal ;
|
|
my $spirit_design_file
|
|
= $parser->parse_file(yp::lib::find_ipxact("spirit:design",$hier_xref_vendor,$hier_xref_library,$hier_xref_component,$hier_xref_version ));
|
|
|
|
#/*********************************************************************************************/
|
#/*********************************************************************************************/
|
#/ */
|
#/ */
|
#/ Create filelists for simulation, code coverage, linting and synthesis */
|
#/ Create filelists for simulation, code coverage, linting and synthesis */
|
#/ */
|
#/ */
|
#/ */
|
#/ */
|
#/*********************************************************************************************/
|
#/*********************************************************************************************/
|
|
|
|
if($spirit_design_file)
|
|
{
|
foreach my $i_name ($spirit_design_file->findnodes("//spirit:design/spirit:componentInstances/spirit:componentInstance/spirit:componentRef/\@spirit:vendor"))
|
foreach my $i_name ($spirit_design_file->findnodes("//spirit:design/spirit:componentInstances/spirit:componentInstance/spirit:componentRef/\@spirit:vendor"))
|
{
|
{
|
my($vendor_name) = $i_name ->to_literal ;
|
my($vendor_name) = $i_name ->to_literal ;
|
my($library_name) = $i_name ->findnodes('../@spirit:library')->to_literal ;
|
my($library_name) = $i_name ->findnodes('../@spirit:library')->to_literal ;
|
my($component_name) = $i_name ->findnodes('../@spirit:name')->to_literal ;
|
my($component_name) = $i_name ->findnodes('../@spirit:name')->to_literal ;
|
my($version_name) = $i_name ->findnodes('../@spirit:version')->to_literal ;
|
my($version_name) = $i_name ->findnodes('../@spirit:version')->to_literal ;
|
|
|
|
|
my @filelist_sub = parse_hier("$vendor_name","$library_name","$component_name","$version_name");
|
my @filelist_sub = parse_hier("$vendor_name","$library_name","$component_name","$version_name");
|
foreach $line (@filelist_sub) { push(@filelist_hier,"$line"); }
|
foreach $line (@filelist_sub) { push(@filelist_hier,"$line"); }
|
|
}
|
}
|
}
|
|
|
|
if($spirit_padring_design_file)
|
|
{
|
|
foreach my $i_name ($spirit_padring_design_file->findnodes("//spirit:design/spirit:componentInstances/spirit:componentInstance/spirit:componentRef/\@spirit:vendor"))
|
|
{
|
|
my($vendor_name) = $i_name ->to_literal ;
|
|
my($library_name) = $i_name ->findnodes('../@spirit:library')->to_literal ;
|
|
my($component_name) = $i_name ->findnodes('../@spirit:name')->to_literal ;
|
|
my($version_name) = $i_name ->findnodes('../@spirit:version')->to_literal ;
|
|
|
|
my @filelist_sub = parse_hier("$vendor_name","$library_name","$component_name","$version_name");
|
}
|
foreach $line (@filelist_sub) { push(@filelist_hier,"$line"); }
|
}
|
}
|
}
|
}
|
|
|
|
|
|
|