Line 87... |
Line 87... |
exit 1;
|
exit 1;
|
}
|
}
|
|
|
print "\n GEN_verilog $view $prefix $vendor $project $component $version $dest_dir $destination \n";
|
print "\n GEN_verilog $view $prefix $vendor $project $component $version $dest_dir $destination \n";
|
|
|
|
my $main_module_name = yp::lib::get_module_name($vendor,$project,$component,$version) ;
|
|
|
#############################################################################
|
#############################################################################
|
##
|
##
|
##
|
##
|
#############################################################################
|
#############################################################################
|
Line 123... |
Line 123... |
open TB_COMP_FILE,">$outfile" or die "unable to open $outfile";
|
open TB_COMP_FILE,">$outfile" or die "unable to open $outfile";
|
|
|
$outfile ="${home}/projects/${vendor}/${project}/ip/${component}/sim/xml/${variant}_dutg.design.xml";
|
$outfile ="${home}/projects/${vendor}/${project}/ip/${component}/sim/xml/${variant}_dutg.design.xml";
|
open TB_DESIGN_FILE,">$outfile" or die "unable to open $outfile";
|
open TB_DESIGN_FILE,">$outfile" or die "unable to open $outfile";
|
|
|
|
|
print TB_COMP_FILE "\n";
|
print TB_COMP_FILE "\n";
|
|
print TB_COMP_FILE " \n";
|
print TB_COMP_FILE "
|
print TB_COMP_FILE "
|
print TB_COMP_FILE "xmlns:spirit=\"http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009\"\n";
|
print TB_COMP_FILE "xmlns:spirit=\"http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009\"\n";
|
print TB_COMP_FILE "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
|
print TB_COMP_FILE "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
|
print TB_COMP_FILE "xsi:schemaLocation=\"http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009\n";
|
print TB_COMP_FILE "xsi:schemaLocation=\"http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009\n";
|
print TB_COMP_FILE "http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009/index.xsd\">\n";
|
print TB_COMP_FILE "http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009/index.xsd\">\n";
|
Line 136... |
Line 144... |
print TB_COMP_FILE "${component}\n";
|
print TB_COMP_FILE "${component}\n";
|
print TB_COMP_FILE "${version}_dut.params\n";
|
print TB_COMP_FILE "${version}_dut.params\n";
|
|
|
|
|
print TB_DESIGN_FILE "\n";
|
print TB_DESIGN_FILE "\n";
|
|
print TB_DESIGN_FILE " \n";
|
print TB_DESIGN_FILE "
|
print TB_DESIGN_FILE "
|
print TB_DESIGN_FILE "xmlns:spirit=\"http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009\"\n";
|
print TB_DESIGN_FILE "xmlns:spirit=\"http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009\"\n";
|
print TB_DESIGN_FILE "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
|
print TB_DESIGN_FILE "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
|
print TB_DESIGN_FILE "xsi:schemaLocation=\"http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009\n";
|
print TB_DESIGN_FILE "xsi:schemaLocation=\"http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009\n";
|
print TB_DESIGN_FILE "http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009/index.xsd\">\n";
|
print TB_DESIGN_FILE "http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009/index.xsd\">\n";
|
Line 221... |
Line 236... |
foreach my $comp_view ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:name[text() = '$view']" ))
|
foreach my $comp_view ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:name[text() = '$view']" ))
|
{
|
{
|
my($view_fileset_name) = $comp_view->findnodes('../spirit:fileSetRef/spirit:localName/text()')->to_literal ;
|
my($view_fileset_name) = $comp_view->findnodes('../spirit:fileSetRef/spirit:localName/text()')->to_literal ;
|
$outfile ="${home}${prefix}/${vendor}__${project}${lib_comp_sep}/${component}${comp_xml_sep}/${dest_dir}/${view}/${destination}";
|
$outfile ="${home}${prefix}/${vendor}__${project}${lib_comp_sep}/${component}${comp_xml_sep}/${dest_dir}/${view}/${destination}";
|
open DEST_FILE,">$outfile" or die "unable to open $outfile";
|
open DEST_FILE,">$outfile" or die "unable to open $outfile";
|
unless ($opt_fragment){ print DEST_FILE "\n module \n\n $variant \n ";}
|
unless ($opt_fragment){ print DEST_FILE "\n module \n\n $main_module_name \n ";}
|
|
|
#/*****************************************************************************/
|
#/*****************************************************************************/
|
#/* wire_decs array holds all port and signal declarations */
|
#/* wire_decs array holds all port and signal declarations */
|
#/* :::name:::node_input_output:::wire_reg:::scaler_vector:::left:::right::: */
|
#/* :::name:::node_input_output:::wire_reg:::scaler_vector:::left:::right::: */
|
#/*****************************************************************************/
|
#/*****************************************************************************/
|
Line 730... |
Line 745... |
my($fff_cname) = $bus_iface->findnodes('../spirit:name/text()')->to_literal ;
|
my($fff_cname) = $bus_iface->findnodes('../spirit:name/text()')->to_literal ;
|
my($fff_vendor) = $bus_iface->findnodes('../spirit:abstractionType/@spirit:vendor')->to_literal ;
|
my($fff_vendor) = $bus_iface->findnodes('../spirit:abstractionType/@spirit:vendor')->to_literal ;
|
my($fff_library) = $bus_iface->findnodes('../spirit:abstractionType/@spirit:library')->to_literal ;
|
my($fff_library) = $bus_iface->findnodes('../spirit:abstractionType/@spirit:library')->to_literal ;
|
my($fff_name) = $bus_iface->findnodes('../spirit:abstractionType/@spirit:name')->to_literal ;
|
my($fff_name) = $bus_iface->findnodes('../spirit:abstractionType/@spirit:name')->to_literal ;
|
my($fff_version) = $bus_iface->findnodes('../spirit:abstractionType/@spirit:version')->to_literal ;
|
my($fff_version) = $bus_iface->findnodes('../spirit:abstractionType/@spirit:version')->to_literal ;
|
my $fff_variant_name = "";
|
|
if($fff_version) {$fff_variant_name = "${fff_name}_${fff_version}";}
|
|
else {$fff_variant_name = "${fff_name}";}
|
|
|
|
|
|
|
|
|
|
foreach my $port_face ($spirit_component_file->findnodes('//spirit:component/spirit:busInterfaces/spirit:busInterface/spirit:portMaps/spirit:portMap/spirit:logicalPort'))
|
foreach my $port_face ($spirit_component_file->findnodes('//spirit:component/spirit:busInterfaces/spirit:busInterface/spirit:portMaps/spirit:portMap/spirit:logicalPort'))
|
{
|
{
|
|
|
Line 756... |
Line 766... |
|
|
if( ( $fff_xxx_name eq $busref) && ( $busref eq $fff_cname ) )
|
if( ( $fff_xxx_name eq $busref) && ( $busref eq $fff_cname ) )
|
{
|
{
|
$busInterfaceTest = 1;
|
$busInterfaceTest = 1;
|
my $busdef_parser = XML::LibXML->new();
|
my $busdef_parser = XML::LibXML->new();
|
|
#print "XXX $fff_vendor $fff_library $fff_name $fff_version \n";
|
|
my $spirit_abstractor_file = ($parser->parse_file(yp::lib::find_ipxact("spirit:abstractionDefinition",$fff_vendor,$fff_library,$fff_name,$fff_version))
|
|
|
my $spirit_abstractor_file = $parser->parse_file(yp::lib::find_ipxact("spirit:abstractionDefinition",$fff_vendor,$fff_library,$fff_name,$fff_version));
|
|
|
|
|
) || die "(OOPs $fff_vendor $fff_library $fff_name $fff_version )";
|
|
|
|
|
|
|
foreach my $abstr_view ($spirit_abstractor_file->findnodes("//spirit:abstractionDefinition/spirit:ports/spirit:port/spirit:logicalName[text() = '$fff_log_name']"))
|
foreach my $abstr_view ($spirit_abstractor_file->findnodes("//spirit:abstractionDefinition/spirit:ports/spirit:port/spirit:logicalName[text() = '$fff_log_name']"))
|
{
|
{
|
Line 785... |
Line 797... |
my $fff_dir = "";
|
my $fff_dir = "";
|
if ($fff_direction eq "in" ) {$fff_dir = "input" ;}
|
if ($fff_direction eq "in" ) {$fff_dir = "input" ;}
|
elsif($fff_direction eq "out" ) {$fff_dir = "output" ;}
|
elsif($fff_direction eq "out" ) {$fff_dir = "output" ;}
|
else {$fff_dir = $fff_direction; }
|
else {$fff_dir = $fff_direction; }
|
|
|
if($fff_left_value) { push @out_stack, ":::${depth}:::${fff_log_name}:::${fff_phy_name}:::${fff_dir}:::${fff_type_name}:::vector:::${fff_left_value}:::${$fff_right_value}:::"; }
|
if($fff_left_value ne "") { push @out_stack, ":::${depth}:::${fff_log_name}:::${fff_phy_name}:::${fff_dir}:::${fff_type_name}:::vector:::${fff_left_value}:::${$fff_right_value}:::"; }
|
else { push @out_stack, ":::${depth}:::${fff_log_name}:::${fff_phy_name}:::${fff_dir}:::${fff_type_name}:::scaler:::none:::none:::"; }
|
else { push @out_stack, ":::${depth}:::${fff_log_name}:::${fff_phy_name}:::${fff_dir}:::${fff_type_name}:::scaler:::none:::none:::"; }
|
|
|
|
|
}
|
}
|
}
|
}
|
Line 1145... |
Line 1157... |
my($component_name) = $x_name ->findnodes('../spirit:componentRef/@spirit:name')->to_literal ;
|
my($component_name) = $x_name ->findnodes('../spirit:componentRef/@spirit:name')->to_literal ;
|
my($version_name) = $x_name ->findnodes('../spirit:componentRef/@spirit:version')->to_literal ;
|
my($version_name) = $x_name ->findnodes('../spirit:componentRef/@spirit:version')->to_literal ;
|
|
|
|
|
|
|
my $variant_name = "";
|
|
if($version_name) {$variant_name = "${component_name}_${version_name}";}
|
|
else {$variant_name = "${component_name}";}
|
|
|
|
if( "$instance_name" eq "$hierConn_comref_name" )
|
if( "$instance_name" eq "$hierConn_comref_name" )
|
{
|
{
|
|
|
|
|
|
|
Line 1274... |
Line 1282... |
#/**********************************************************************/
|
#/**********************************************************************/
|
|
|
foreach my $i_name ($spirit_design_file->findnodes("//spirit:design/nodes/node/spirit:name"))
|
foreach my $i_name ($spirit_design_file->findnodes("//spirit:design/nodes/node/spirit:name"))
|
{
|
{
|
my($node_name) = $i_name ->findnodes('./text()')->to_literal ;
|
my($node_name) = $i_name ->findnodes('./text()')->to_literal ;
|
my($left) = $i_name ->findnodes('../spirit:wire/spirit:vector/spirit:left/text()')->to_literal ;
|
my($node_left) = $i_name ->findnodes('../spirit:wire/spirit:vector/spirit:left/text()')->to_literal ;
|
my($right) = $i_name ->findnodes('../spirit:wire/spirit:vector/spirit:right/text()')->to_literal ;
|
my($node_right) = $i_name ->findnodes('../spirit:wire/spirit:vector/spirit:right/text()')->to_literal ;
|
my($type) = $i_name ->findnodes('../spirit:wireTypeDefs/spirit:wireTypeDef/spirit:typeName/text()')->to_literal ;
|
my($node_type) = $i_name ->findnodes('../spirit:wireTypeDefs/spirit:wireTypeDef/spirit:typeName/text()')->to_literal ;
|
|
|
if($left) { push @wire_decs , ":::${node_name}:::${node_name}:::node:::${type}:::vector:::${left}:::${$right}:::none:::0:::${node_name}:::XXX:::${node_name}:::"; }
|
if( $node_left ne "" ) { push @wire_decs , ":::${node_name}:::${node_name}:::node:::${node_type}:::vector:::${node_left}:::${$node_right}:::none:::0:::${node_name}:::XXX:::${node_name}:::"; }
|
else { push @wire_decs , ":::${node_name}:::${node_name}:::node:::${type}:::scaler:::none:::none:::none:::0:::${node_name}:::XXX:::${node_name}:::"; }
|
else { push @wire_decs , ":::${node_name}:::${node_name}:::node:::${node_type}:::scaler:::none:::none:::none:::0:::${node_name}:::XXX:::${node_name}:::"; }
|
|
|
}
|
}
|
|
|
|
|
|
|
Line 1468... |
Line 1476... |
push @instantiations , "////////////////////////////////////////////////////////////////\n";
|
push @instantiations , "////////////////////////////////////////////////////////////////\n";
|
|
|
foreach my $i_name ($spirit_design_file->findnodes("//spirit:design/spirit:componentInstances/spirit:componentInstance/spirit:instanceName"))
|
foreach my $i_name ($spirit_design_file->findnodes("//spirit:design/spirit:componentInstances/spirit:componentInstance/spirit:instanceName"))
|
{
|
{
|
my($instance_name) = $i_name ->findnodes('./text()')->to_literal ;
|
my($instance_name) = $i_name ->findnodes('./text()')->to_literal ;
|
|
my($vendor_name) = $i_name ->findnodes('../spirit:componentRef/@spirit:vendor')->to_literal ;
|
|
my($library_name) = $i_name ->findnodes('../spirit:componentRef/@spirit:library')->to_literal ;
|
my($component_name) = $i_name ->findnodes('../spirit:componentRef/@spirit:name')->to_literal ;
|
my($component_name) = $i_name ->findnodes('../spirit:componentRef/@spirit:name')->to_literal ;
|
my($version_name) = $i_name ->findnodes('../spirit:componentRef/@spirit:version')->to_literal ;
|
my($version_name) = $i_name ->findnodes('../spirit:componentRef/@spirit:version')->to_literal ;
|
my $variant_name = "";
|
|
if($version_name) {$variant_name = "${component_name}_${version_name}";}
|
|
else {$variant_name = "${component_name}";}
|
|
|
|
if($instance_name)
|
my $module_name = yp::lib::get_module_name($vendor_name,$library_name,$component_name,$version_name) ;
|
{
|
|
push @instantiations , "$variant_name\n";
|
|
|
|
# print "$instance_name \n";
|
|
|
|
|
if($instance_name)
|
|
{
|
|
push @instantiations , "$module_name\n";
|
$first = 1;
|
$first = 1;
|
|
|
foreach my $i_parameter ($spirit_design_file->findnodes("//spirit:componentInstance[spirit:instanceName/text() = '$instance_name']/spirit:configurableElementValues/spirit:configurableElementValue/\@spirit:referenceId"))
|
foreach my $i_parameter ($spirit_design_file->findnodes("//spirit:componentInstance[spirit:instanceName/text() = '$instance_name']/spirit:configurableElementValues/spirit:configurableElementValue/\@spirit:referenceId"))
|
{
|
{
|
my($foo_name) = $i_parameter ->to_literal ;
|
my($foo_name) = $i_parameter ->to_literal ;
|
Line 1682... |
Line 1689... |
|
|
if( $mmm_cname eq $rrr_int_name )
|
if( $mmm_cname eq $rrr_int_name )
|
{
|
{
|
|
|
my $busdef_parser = XML::LibXML->new();
|
my $busdef_parser = XML::LibXML->new();
|
my $spirit_abstractor_file = $parser->parse_file(yp::lib::find_ipxact("spirit:abstractionDefinition",$mmm_vendor,$mmm_library,$mmm_name,$mmm_version));
|
print "XXXXXX $mmm_vendor $mmm_library $mmm_name $mmm_version \n";
|
|
my $spirit_abstractor_file = ($parser->parse_file(yp::lib::find_ipxact("spirit:abstractionDefinition",$mmm_vendor,$mmm_library,$mmm_name,$mmm_version))
|
|
|
|
) || die "(OOPs $mmm_vendor $mmm_library $mmm_name $mmm_version )";
|
|
|
|
|
|
|
foreach my $abstr_view ($spirit_abstractor_file->findnodes("//spirit:abstractionDefinition/spirit:ports/spirit:port/spirit:logicalName[text() = '$rrr_log_name']"))
|
foreach my $abstr_view ($spirit_abstractor_file->findnodes("//spirit:abstractionDefinition/spirit:ports/spirit:port/spirit:logicalName[text() = '$rrr_log_name']"))
|
{
|
{
|
my($sss_m_dir) = $abstr_view->findnodes('../spirit:wire/spirit:onMaster/spirit:direction/text()')->to_literal ;
|
my($sss_m_dir) = $abstr_view->findnodes('../spirit:wire/spirit:onMaster/spirit:direction/text()')->to_literal ;
|
my($sss_s_dir) = $abstr_view->findnodes('../spirit:wire/spirit:onSlave/spirit:direction/text()')->to_literal ;
|
my($sss_s_dir) = $abstr_view->findnodes('../spirit:wire/spirit:onSlave/spirit:direction/text()')->to_literal ;
|
Line 1705... |
Line 1717... |
my $rrr_dir = "";
|
my $rrr_dir = "";
|
if ($rrr_direction eq "in" ) {$rrr_dir = "input" ;}
|
if ($rrr_direction eq "in" ) {$rrr_dir = "input" ;}
|
elsif($rrr_direction eq "out" ) {$rrr_dir = "output" ;}
|
elsif($rrr_direction eq "out" ) {$rrr_dir = "output" ;}
|
else {$rrr_dir = $rrr_direction; }
|
else {$rrr_dir = $rrr_direction; }
|
|
|
if($rrr_left_value)
|
if($rrr_left_value ne "")
|
{
|
{
|
push @wire_decs , ":::${mmm_cname}_${rrr_log_name}:::${rrr_phy_name}:::${rrr_dir}:::${rrr_type_name}:::vector:::${rrr_left_value}:::${$rrr_right_value}:::none:::0:::${rrr_phy_name}:::XXX:::${rrr_log_name}:::";
|
push @wire_decs , ":::${mmm_cname}_${rrr_log_name}:::${rrr_phy_name}:::${rrr_dir}:::${rrr_type_name}:::vector:::${rrr_left_value}:::${$rrr_right_value}:::none:::0:::${rrr_phy_name}:::XXX:::${rrr_log_name}:::";
|
}
|
}
|
else
|
else
|
{
|
{
|
Line 1741... |
Line 1753... |
|
|
if ($direction eq "in") { $direction = "input";}
|
if ($direction eq "in") { $direction = "input";}
|
elsif ($direction eq "out") { $direction = "output";}
|
elsif ($direction eq "out") { $direction = "output";}
|
|
|
|
|
if($left) { push @wire_decs , ":::${port_name}:::${port_name}:::${direction}:::${type}:::vector:::${left}:::${right}:::none:::0:::${port_name}:::XXX:::${port_name}:::"; }
|
if($left ne "") { push @wire_decs , ":::${port_name}:::${port_name}:::${direction}:::${type}:::vector:::${left}:::${right}:::none:::0:::${port_name}:::XXX:::${port_name}:::"; }
|
else { push @wire_decs , ":::${port_name}:::${port_name}:::${direction}:::${type}:::scaler:::none:::none:::none:::0:::${port_name}:::XXX:::${port_name}:::"; }
|
else { push @wire_decs , ":::${port_name}:::${port_name}:::${direction}:::${type}:::scaler:::none:::none:::none:::0:::${port_name}:::XXX:::${port_name}:::"; }
|
}
|
}
|
|
|
|
|
|
|