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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [tools/] [verilog/] [gen_verilogLib] - Diff between revs 131 and 134

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

Rev 131 Rev 134
Line 80... Line 80...
##############################################################################
##############################################################################
## Help option
## Help option
##############################################################################
##############################################################################
if ( $opt_h  or ($opt_help) )
if ( $opt_h  or ($opt_help) )
   {
   {
   print "\n gen_verilogLib -envidentifier *simulation* -prefix /work  -vendor vendor_name -library  library_name  -component component_name -version version_name -dest_dir dest_dir";
   print "\n gen_verilogLib -envidentifier *simulation* -prefix /work  -vendor vendor_name -library  library_name  -component component_name -version version_name -dest_dir dest_dir -viem  view";
   print "\n";
   print "\n";
   exit 1;
   exit 1;
   }
   }
 
 
 
 
##############################################################################
##############################################################################
##
##
##############################################################################
##############################################################################
 
 
my $parser = XML::LibXML->new();
 
 
 
my $socgen_file               = $parser->parse_file(yp::lib::find_componentConfiguration($vendor,$library,$component));
 
my $ip_name_base_macro       = $socgen_file->findnodes("//socgen:componentConfiguration/socgen:ip_name_base_macro/text()")->to_literal;
 
 
 
 
 
 
 
 
 
$home = cwd();
$home = cwd();
my @search_paths = ();
 
my $variant;
 
 
 
 
 
 if($version)       {$variant   = "${component}_${version}";}
 
 else               {$variant   = "${component}";}
 
 
 
my $lib_comp_sep    = yp::lib::find_lib_comp_sep($vendor,$library,$component);
 
my $comp_xml_sep    = yp::lib::find_comp_xml_sep($vendor,$library,$component,$version);
 
my $module_name     = yp::lib::get_module_name($vendor,$library,$component,$version);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
my $parser = XML::LibXML->new();
 
my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact_component($vendor,$library,$component,$version));
 
 
 
 
 
 
 
 
 
print "\n  Building $view  Verilog Lib RTL for  $prefix $library  $component $verison  $variant  $dest_dir  \n" ;
 
 
 
my $path  = "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}";
 
mkdir $path,0755             unless( -e $path );
 
 
 
 
 
my $path  = "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/../defines";
 
mkdir $path,0755             unless( -e $path );
 
 
 
my $path  = "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/../filelists";
 
mkdir $path,0755             unless( -e $path );
 
 
 
 
 
my $path  = "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/${view}";
 
mkdir $path,0755             unless( -e $path );
 
 
 
 
 
 
 
    #/**********************************************************************/
 
    #/*                                                                    */
 
    #/* build a `define file for module names                              */
 
    #/*                                                                    */
 
    #/*                                                                    */
 
    #/*                                                                    */
 
    #/*                                                                    */
 
    #/**********************************************************************/
 
 
 
    my $outfile ="${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/../defines/${variant}.v";
 
    open DEFLIST,">$outfile" or die "unable to open $outfile";
 
    print  DEFLIST "   \`define $ip_name_base_macro     ${module_name}  \n";
 
 
 
    my $outfile ="${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/../filelists/${variant}.MOD";
 
    open FILELIST,">$outfile" or die "unable to open $outfile";
 
 
 
    my $outfile ="${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/../filelists/${variant}.INC";
 
    open INCLIST,">$outfile" or die "unable to open $outfile";
 
 
 
    print INCLIST  "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/../defines/${variant}.v\n";
 
 
 
 
 
 
 
 
 
 
 
#print " FFFFFFFFFFFFFFFF  $envidentifier  $view  \n" ;
 
 
 
 
 
my  @filelist =       yp::lib::parse_component_brothers("$vendor","$library","$component","$version");
 
 
 
foreach $line (@filelist)
 
   {
 
   $_ = $line;
 
   if(/::(\S+)::(\S+)::(\S+)::(\S+)::/)
 
     {
 
     $new_library        = $2;
 
     $new_component      = $3;
 
     $new_vendor         = $1;
 
     $new_version        = $4;
 
 
 
#     print " FFFFFFFFFFFFFFFF  Brother      $new_vendor  $new_library  $new_component $new_version \n" ;
 
 
 
    my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact_component($new_vendor,$new_library,$new_component,$new_version));
 
 
 
    foreach my $comp_view ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:envIdentifier[./text() = '$envidentifier']"))
 
      {
 
      my($view_name)     = $comp_view->findnodes('../spirit:name/text()')->to_literal ;
 
      my($view_fileset)  = $comp_view->findnodes('../spirit:fileSetRef/spirit:localName/text()')->to_literal ;
 
 #     print " FFFFFFFFFFFFFFFF  Found  $view_name  $view_fileset    \n" ;
 
 
 
 
 
 
 
 
 
 
 
    #/**********************************************************************/
 
    #/*                                                                    */
 
    #/* build a fileset in the following order                             */
 
    #/*                                                                    */
 
    #/* deflist for module names                                           */
 
    #/* all include files                                                  */
 
    #/* all module files                                                   */
 
    #/*                                                                    */
 
    #/*                                                                    */
 
    #/**********************************************************************/
 
 
 
 
 
 
 
    foreach  my   $i_name ($spirit_component_file->findnodes("//spirit:fileSets/spirit:fileSet/spirit:file/spirit:name"))
 
       {
 
       my($file_name)          = $i_name ->findnodes('./text()')->to_literal ;
 
       my($file_logicalname)   = $i_name ->findnodes('../spirit:logicalName/text()')->to_literal ;
 
       my($file_type)          = $i_name ->findnodes('../spirit:fileType/text()')->to_literal ;
 
       my($file_usertype)      = $i_name ->findnodes('../spirit:userFileType/text()')->to_literal ;
 
       my($view_file)          = $i_name ->findnodes('../../spirit:name/text()')->to_literal ;
 
 
 
#      print " FFFFFFFFFFFFFFFX     $file_name  $file_logicalname $file_type  $file_usertype  $view_file  \n" ;
 
 
 
 
 
       if(($file_usertype eq "include")&& ($view_file eq $view_fileset)  &&   ($file_type eq "verilogSource")        )
 
         {
 
         print INCLIST  "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${file_name}\n";
 
         };
 
 
 
 
 
       if(($file_usertype eq "libraryDir")&& ($view_file eq $view_fileset)  &&   ($file_type eq "verilogSource")        )
 
         {
 
         push @search_paths,  "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${file_name}";
 
         };
 
 
 
 
 
       if(($file_usertype eq "module") && ($view_file eq $view_fileset) &&   ($file_type eq "verilogSource")                     )
 
         {
 
         print FILELIST  "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${file_name}\n";
 
         if($file_logicalname )
 
            {
 
            print  DEFLIST   sprintf( "\`define %s   _%s\n",   uc($file_logicalname) ,  $file_logicalname );
 
            }
 
         };
 
 
 
 
 
       }
 
 
 
 
 
 
 
 
 
 
 
      }
 
     }
 
   }
 
 
 
 
 
      #/**********************************************************************/
 
      #/*                                                                    */
 
      #/* Every leaf cell is processed through a the verilog preprocessor    */
 
      #/* to customize the module names,remove all verilog tic(`) statements */
 
      #/* and to create seperate versions for simulation and synthesys       */
 
      #/*                                                                    */
 
      #/*                                                                    */
 
      #/**********************************************************************/
 
 
 
 
unless (defined $dest_dir && length $dest_dir > 0){$dest_dir ="../views";}
 
 
        my $file_out  = "${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/${view}/${variant}.v";
my $cmd ="./tools/verilog/gen_elab_verilogLib -envidentifier $envidentifier -prefix $prefix  -vendor $vendor -library  $library  -component $component -version $version -dest_dir $dest_dir -view  $view  \n";
 
 
        if( -e $file_out )
 
        {
 
        $cmd ="rm  $file_out \n";
 
        if (system($cmd)) {}
        if (system($cmd)) {}
        };
 
 
 
        my $cmd_path;
my @configs  = yp::lib::get_component_configs($vendor,$library,$component,$version);
 
 
        foreach $search_path (@search_paths)
foreach my $config (@configs)
              {
              {
               $cmd_path = " $cmd_path -I${search_path} " ;
 
              }
 
 
 
 
 
 
print "\n ---GEN_verilogLib -envidentifier $envidentifier -prefix $prefix  -vendor $vendor -library  $library  -component $component -version $version -dest_dir $dest_dir -viem  $view \n";
 
 
        $cmd ="vppreproc --noline --noblank  $cmd_path  -f  ${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/../filelists/${variant}.INC  -f  ${home}${prefix}/${vendor}__${library}${lib_comp_sep}${component}${comp_xml_sep}/${dest_dir}/../filelists/${variant}.MOD    >>  $file_out \n";
$cmd ="./tools/verilog/gen_elab_verilogLib -envidentifier $envidentifier -prefix $prefix  -vendor $vendor -library  $library  -component $component -version $version -dest_dir $dest_dir -view  $view -configuration $config \n";
 
 
        if (system($cmd)) {}
        if (system($cmd)) {}
 
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
1

powered by: WebSVN 2.1.0

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