OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [perl_gui/] [lib/] [perl/] [ip_gen.pl] - Diff between revs 34 and 38

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

Rev 34 Rev 38
Line 16... Line 16...
 
 
 
 
require "widget.pl";
require "widget.pl";
require "readme_gen.pl";
require "readme_gen.pl";
 
 
use String::Similarity;
 
 
 
 
 
sub find_the_most_similar_position{
 
        my ($item ,@list)=@_;
 
        my $most_similar_pos=0;
 
        my $lastsim=0;
 
        my $i=0;
 
        # convert item to lowercase
 
        $item = lc $item;
 
        foreach my $p(@list){
 
                my $similarity= similarity $item, $p;
 
                if ($similarity > $lastsim){
 
                        $lastsim=$similarity;
 
                        $most_similar_pos=$i;
 
                }
 
                $i++;
 
        }
 
        return $most_similar_pos;
 
}
 
 
 
 
 
use constant DISPLY_COLUMN    => 0;
use constant DISPLY_COLUMN    => 0;
use constant CATGR_COLUMN    => 1;
use constant CATGR_COLUMN    => 1;
use constant INTFC_COLUMN     => 2;
use constant INTFC_COLUMN     => 2;
use constant ITAL_COLUMN   => 3;
use constant ITAL_COLUMN   => 3;
Line 79... Line 60...
 
 
 
 
 
 
                $ipgen->ipgen_add("module_name",$modules[0]);
                $ipgen->ipgen_add("module_name",$modules[0]);
                $ipgen->ipgen_set_module_list(@modules);
                $ipgen->ipgen_set_module_list(@modules);
                load_deafult_setting($ipgen,$modules[0]);
                load_default_setting($ipgen,$modules[0]);
 
 
 
 
                set_gui_status($ipgen,"file_selected",1);
                set_gui_status($ipgen,"file_selected",1);
                show_info(\$info,"Select the module which contain the interface ports\n ");
                show_info(\$info,"Select the module which contain the interface ports\n ");
 
 
Line 350... Line 331...
 
 
 
 
        $combo->signal_connect("changed"=> sub{
        $combo->signal_connect("changed"=> sub{
 
 
                my $module= $combo->get_active_text();
                my $module= $combo->get_active_text();
                load_deafult_setting($ipgen,$module);
                load_default_setting($ipgen,$module);
                set_gui_status($ipgen,'intfc_changed',0);
                set_gui_status($ipgen,'intfc_changed',0);
 
 
 
 
        });
        });
 
 
Line 375... Line 356...
 
 
        });
        });
        $header_h->signal_connect("clicked"=> sub{
        $header_h->signal_connect("clicked"=> sub{
                my %page_info;
                my %page_info;
                my $help1="The files and folder that selected here will be copied in genertated processing tile SW folder.";
                my $help1="The files and folder that selected here will be copied in genertated processing tile SW folder.";
                my $help2="The file listed here can contain some variable with \${var_name} format. The file genertor will replace them with their values during file generation. The variable can be selected from above listed global vairable";
                my $help2="The file listed here can contain some variable with \${var_name} format. The file genertor will replace them with their values during file generation. The variable can be selected from above listed global vairables";
                my $help3='Define the header file for this peripheral device. You can use global vriables listed at the top.
                my $help3='Define the header file for this peripheral device. You can use global vriables listed at the top.
 
 
header file example
header file example
 
 
 #define ${IP}_REG_0   (*((volatile unsigned int *) ($BASE)))
 #define ${IP}_REG_0   (*((volatile unsigned int *) ($BASE)))
Line 395... Line 376...
                $page_info{0}{filed_type}= "exsiting_file/folder";
                $page_info{0}{filed_type}= "exsiting_file/folder";
                $page_info{0}{rename_file}=undef;
                $page_info{0}{rename_file}=undef;
                $page_info{0}{folder_en}=1;
                $page_info{0}{folder_en}=1;
                $page_info{0}{help}=$help1;
                $page_info{0}{help}=$help1;
 
 
                $page_info{1}{page_name} = "_Add file generator(s)";
                $page_info{1}{page_name} = "_Add files contain variables";
                $page_info{1}{filed_name}= "gen_sw_files";
                $page_info{1}{filed_name}= "gen_sw_files";
                $page_info{1}{filed_type}= "file_generators";
                $page_info{1}{filed_type}= "file_with_variables";
                $page_info{1}{rename_file}=1;
                $page_info{1}{rename_file}=1;
                $page_info{1}{folder_en}=0;
                $page_info{1}{folder_en}=0;
                $page_info{1}{help}=$help2;
                $page_info{1}{help}=$help2;
 
 
                $page_info{2}{page_name} = "_Add to system.h";
                $page_info{2}{page_name} = "_Add to tile.h";
                $page_info{2}{filed_name}= "system_h";
                $page_info{2}{filed_name}= "system_h";
                $page_info{2}{filed_type}= "file_content";
                $page_info{2}{filed_type}= "file_content";
                $page_info{2}{rename_file}=undef;
                $page_info{2}{rename_file}=undef;
                $page_info{2}{folder_en}=0;
                $page_info{2}{folder_en}=0;
                $page_info{2}{help}=$help3;
                $page_info{2}{help}=$help3;
Line 416... Line 397...
                #get_software_file($ipgen,$info,0);             
                #get_software_file($ipgen,$info,0);             
 
 
        });
        });
        $lib_hdl->signal_connect("clicked"=> sub{
        $lib_hdl->signal_connect("clicked"=> sub{
                my $help1="The files and folder that selected here will be copied in genertated processing tile RTL  folder.";
                my $help1="The files and folder that selected here will be copied in genertated processing tile RTL  folder.";
 
                my $help2="The file listed here can contain some variable with \${var_name} format. The file genertor will replace them with their values during file generation. The variable can be selected from above listed global vairables";
                my %page_info;
                my %page_info;
                $page_info{0}{page_name} = "_Add exsiting HDL file/folder";
                $page_info{0}{page_name} = "_Add exsiting HDL file/folder";
                $page_info{0}{filed_name}= "hdl_files";
                $page_info{0}{filed_name}= "hdl_files";
                $page_info{0}{filed_type}= "exsiting_file/folder";
                $page_info{0}{filed_type}= "exsiting_file/folder";
                $page_info{0}{rename_file}=undef;
                $page_info{0}{rename_file}=undef;
                $page_info{0}{folder_en}=1;
                $page_info{0}{folder_en}=1;
                $page_info{0}{help}=$help1;
                $page_info{0}{help}=$help1;
 
 
 
                $page_info{1}{page_name} = "_Add files contain variables";
 
                $page_info{1}{filed_name}= "gen_hw_files";
 
                $page_info{1}{filed_type}= "file_with_variables";
 
                $page_info{1}{rename_file}=1;
 
                $page_info{1}{folder_en}=0;
 
                $page_info{1}{help}=$help2;
 
 
                get_source_file($ipgen,$info,0,"Add HDL file(s)", "hw",\%page_info);
                get_source_file($ipgen,$info,0,"Add HDL file(s)", "hw",\%page_info);
 
 
                #get_hdl_file($ipgen,$info);
                #get_hdl_file($ipgen,$info);
 
 
 
 
        });
        });
}
}
 
 
sub load_deafult_setting{
sub load_default_setting{
        my ($ipgen,$module)=@_;
        my ($ipgen,$module)=@_;
        my $file= $ipgen->ipgen_get("file_name");
        my $file= $ipgen->ipgen_get("file_name");
        $ipgen->ipgen_add("module_name",$module);
        $ipgen->ipgen_add("module_name",$module);
        my $vdb =read_verilog_file($file);
        my $vdb =read_verilog_file($file);
        my %parameters = $vdb->get_modules_parameters_not_local($module);
        my %parameters = $vdb->get_modules_parameters_not_local($module);
        my @parameters_order= $vdb->get_modules_parameters_not_local_order($module);
        my @parameters_order= $vdb->get_modules_parameters_not_local_order($module);
        my @ports_order=$vdb->get_module_ports_order($module);
        my @ports_order=$vdb->get_module_ports_order($module);
        #print "@port_order\n";
        #print "@port_order\n";
 
 
        #add deafult parameter setting
        #add default parameter setting
        $ipgen->ipgen_remove_all_parameters();
        $ipgen->ipgen_remove_all_parameters();
        foreach my $p (keys %parameters){
        foreach my $p (keys %parameters){
                        #print "$p\n";
                        #print "$p\n";
                        my $v = $parameters{$p};
                        my $v = $parameters{$p};
                        $v =~s/[\n]//gs;
                        $v =~s/[\n]//gs;
Line 617... Line 606...
        my @positions=(0,1,2,3,4,5,6,7,8);
        my @positions=(0,1,2,3,4,5,6,7,8);
        my $col=0;
        my $col=0;
        #title
        #title
        my @title;
        my @title;
        $title[0]=gen_label_in_center("Parameter name");
        $title[0]=gen_label_in_center("Parameter name");
        $title[1]=gen_label_in_center("Deafult value");
        $title[1]=gen_label_in_center("Default value");
        $title[2]=gen_label_help($type_info,"Widget type");
        $title[2]=gen_label_help($type_info,"Widget type");
        $title[3]=gen_label_help($content_info,"Widget content");
        $title[3]=gen_label_help($content_info,"Widget content");
        $title[4]=gen_label_help($param_info);
        $title[4]=gen_label_help($param_info,"Type");
        $title[5]=gen_label_help($redefine_info);
        $title[5]=gen_label_help($redefine_info,"");
        $title[6]=gen_label_help("You can add aditional information about this parameter.","info");
        $title[6]=gen_label_help("You can add aditional information about this parameter.","info");
        $title[7]=gen_label_in_center("add/remove");
        $title[7]=gen_label_in_center("add/remove");
 
 
 
 
        foreach my $t (@title){
        foreach my $t (@title){
Line 657... Line 646...
 
 
        my $row=1;
        my $row=1;
        my $error;
        my $error;
        push(@parameters,"#new#");
        push(@parameters,"#new#");
        foreach my $p (@parameters) {
        foreach my $p (@parameters) {
                my ($saved_deafult,$saved_widget_type,$saved_content,$saved_info,$vfile_param_type,$redefine_param)=  $ipgen->ipgen_get_parameter_detail($p);
                my ($saved_default,$saved_widget_type,$saved_content,$saved_info,$vfile_param_type,$redefine_param)=  $ipgen->ipgen_get_parameter_detail($p);
                #print  "($saved_deafult,$saved_type,$saved_content)\n";
                #print  "($saved_default,$saved_type,$saved_content)\n";
                my $parameter_box = def_hbox(TRUE,5);
                my $parameter_box = def_hbox(TRUE,5);
                my $param_name;
                my $param_name;
                my $add_remove;
                my $add_remove;
                if($p ne "#new#"){
                if($p ne "#new#"){
                        $param_name= def_label($p);
                        $param_name= def_label($p);
Line 670... Line 659...
                } else {
                } else {
                        $param_name= gen_entry();
                        $param_name= gen_entry();
                        $add_remove=def_image_button("icons/plus.png","add");
                        $add_remove=def_image_button("icons/plus.png","add");
                }
                }
 
 
                my $deafult_entry= gen_entry($saved_deafult);
                my $default_entry= gen_entry($saved_default);
                my $pos=(defined $saved_widget_type ) ? get_scolar_pos( $saved_widget_type,@widget_type_list) : 0;
                my $pos=(defined $saved_widget_type ) ? get_scolar_pos( $saved_widget_type,@widget_type_list) : 0;
                my $widget_type_combo=gen_combo(\@widget_type_list, $pos);
                my $widget_type_combo=gen_combo(\@widget_type_list, $pos);
                my $content_entry= gen_entry($saved_content);
                my $content_entry= gen_entry($saved_content);
 
 
 
 
Line 701... Line 690...
 
 
                my $info=def_image_button("icons/add_info.png");
                my $info=def_image_button("icons/add_info.png");
                #print "\$vfile_param_type =$vfile_param_type\n";
                #print "\$vfile_param_type =$vfile_param_type\n";
 
 
                $col=0;
                $col=0;
                my @all_widget=($param_name,$deafult_entry,$widget_type_combo,$content_entry,$check_param,$check_redefine,$info,$add_remove);
                my @all_widget=($param_name,$default_entry,$widget_type_combo,$content_entry,$check_param,$check_redefine,$info,$add_remove);
                foreach my $t (@all_widget){
                foreach my $t (@all_widget){
                        $table->attach ($t, $positions[$col], $positions[$col+1], $row, $row+1,'expand','shrink',2,2);$col++;
                        $table->attach ($t, $positions[$col], $positions[$col+1], $row, $row+1,'expand','shrink',2,2);$col++;
 
 
                }
                }
 
 
Line 716... Line 705...
                });
                });
 
 
 
 
                $ok->signal_connect (clicked => sub{
                $ok->signal_connect (clicked => sub{
                        if($p ne "#new#"){
                        if($p ne "#new#"){
                                my $deafult=$deafult_entry->get_text();
                                my $default=$default_entry->get_text();
                                my $type= $widget_type_combo->get_active_text();
                                my $type= $widget_type_combo->get_active_text();
                                my $content=$content_entry->get_text();
                                my $content=$content_entry->get_text();
                                my $vfile_param_type=$check_param->get_active_text();
                                my $vfile_param_type=$check_param->get_active_text();
                                my $check_result=$check_redefine->get_active();
                                my $check_result=$check_redefine->get_active();
                                my $redefine_param=($check_result eq 1)? 1:0;
                                my $redefine_param=($check_result eq 1)? 1:0;
                                $ipgen->ipgen_add_parameter($p,$deafult,$type,$content,$saved_info,$vfile_param_type,$redefine_param);
                                $ipgen->ipgen_add_parameter($p,$default,$type,$content,$saved_info,$vfile_param_type,$redefine_param);
 
 
                                if      ($type eq "Spin-button"){
                                if      ($type eq "Spin-button"){
                                        my @d=split(",",$content);
                                        my @d=split(",",$content);
                                         if( scalar @d != 3){
                                         if( scalar @d != 3){
                                                $error=$error."wrong content setting for parameter $p\n" ;
                                                $error=$error."wrong content setting for parameter $p\n" ;
Line 741... Line 730...
                        if($p eq "#new#"){ #add new parameter
                        if($p eq "#new#"){ #add new parameter
                                my $param= $param_name->get_text();
                                my $param= $param_name->get_text();
                                $param=remove_all_white_spaces($param);
                                $param=remove_all_white_spaces($param);
 
 
                                if( length($param) ){
                                if( length($param) ){
                                        my $deafult=$deafult_entry->get_text();
                                        my $default=$default_entry->get_text();
                                        my $type=$widget_type_combo->get_active_text();
                                        my $type=$widget_type_combo->get_active_text();
                                        my $content=$content_entry->get_text();
                                        my $content=$content_entry->get_text();
                                        my $vfile_param_type=$check_param->get_active_text();
                                        my $vfile_param_type=$check_param->get_active_text();
                                        my $check_result=$check_redefine->get_active();
                                        my $check_result=$check_redefine->get_active();
                                        my $redefine_param=($check_result eq 1)? 1:0;
                                        my $redefine_param=($check_result eq 1)? 1:0;
                                        $ipgen->ipgen_add_parameter($param,$deafult,$type,$content,$saved_info,$vfile_param_type,$redefine_param);
                                        $ipgen->ipgen_add_parameter($param,$default,$type,$content,$saved_info,$vfile_param_type,$redefine_param);
                                        $ipgen->ipgen_push_parameters_order($param);
                                        $ipgen->ipgen_push_parameters_order($param);
                                        set_gui_status($ipgen,"change_parameter",0);
                                        set_gui_status($ipgen,"change_parameter",0);
                                        $ok->clicked;
                                        $ok->clicked;
                                        #$window->destroy();
                                        #$window->destroy();
                                }
                                }
Line 1598... Line 1587...
 
 
        # Write
        # Write
        mkpath("$dir/lib/ip/$category/",1,01777);
        mkpath("$dir/lib/ip/$category/",1,01777);
        open(FILE,  ">lib/ip/$category/$ip_name.IP") || die "Can not open: $!";
        open(FILE,  ">lib/ip/$category/$ip_name.IP") || die "Can not open: $!";
        print FILE perl_file_header("$ip_name.IP");
        print FILE perl_file_header("$ip_name.IP");
        print FILE Data::Dumper->Dump([\%$ipgen],[$name]);
        print FILE Data::Dumper->Dump([\%$ipgen],["ipgen"]);
        close(FILE) || die "Error closing file: $!";
        close(FILE) || die "Error closing file: $!";
        my $message="IP $ip_name has been generated successfully. In order to see the generated IP in processing tile generator you need to reset the ProNoC. Do you want to reset the ProNoC now?" ;
        my $message="IP $ip_name has been generated successfully. In order to see the generated IP in processing tile generator you need to reset the ProNoC. Do you want to reset the ProNoC now?" ;
 
 
        my $dialog = Gtk2::MessageDialog->new (my $window,
        my $dialog = Gtk2::MessageDialog->new (my $window,
                     'destroy-with-parent',
                     'destroy-with-parent',
Line 1769... Line 1758...
        my $notebook = Gtk2::Notebook->new;
        my $notebook = Gtk2::Notebook->new;
        my %page_info=%{$page_info_ref};
        my %page_info=%{$page_info_ref};
        foreach my $p (sort keys %page_info){
        foreach my $p (sort keys %page_info){
                my $page_ref;
                my $page_ref;
                $page_ref=get_file_folder($ipgen,$info,$window,$p,$page_info_ref) if($page_info{$p}{filed_type} eq "exsiting_file/folder");
                $page_ref=get_file_folder($ipgen,$info,$window,$p,$page_info_ref) if($page_info{$p}{filed_type} eq "exsiting_file/folder");
                $page_ref=get_file_folder($ipgen,$info,$window,$p,$page_info_ref) if($page_info{$p}{filed_type} eq "file_generators");
                $page_ref=get_file_folder($ipgen,$info,$window,$p,$page_info_ref) if($page_info{$p}{filed_type} eq "file_with_variables");
                $page_ref=get_file_content($ipgen,$info,$window,$page_info{$p},$page_info_ref) if($page_info{$p}{filed_type} eq "file_content");
                $page_ref=get_file_content($ipgen,$info,$window,$page_info{$p},$page_info_ref) if($page_info{$p}{filed_type} eq "file_content");
                $notebook->append_page ($page_ref,Gtk2::Label->new_with_mnemonic ($page_info{$p}{page_name}));
                $notebook->append_page ($page_ref,Gtk2::Label->new_with_mnemonic ($page_info{$p}{page_name}));
 
 
        }
        }
        $notebook->show_all;
        $notebook->show_all;

powered by: WebSVN 2.1.0

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