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/] [interface_gen.pl] - Diff between revs 43 and 48

Show entire file | Details | Blame | View Log

Rev 43 Rev 48
Line 1... Line 1...
#! /usr/bin/perl -w
#! /usr/bin/perl -w
use Glib qw/TRUE FALSE/;
use constant::boolean;
use strict;
use strict;
use warnings;
use warnings;
 
 
 
use FindBin;
 
use lib $FindBin::Bin;
 
 
use Data::Dumper;
use Data::Dumper;
use intfc_gen;
use intfc_gen;
use rvp;
use rvp;
use Gtk2;
 
 
 
 
 
 
 
require "widget.pl";
require "widget.pl";
 
 
 
 
sub read_file_modules{
sub read_file_modules{
        my ($file,$intfc_gen,$info)=@_;
        my ($file,$intfc_gen,$info)=@_;
 
 
        if (!defined $file) {return; }
        if (!defined $file) {
        if (-e $file) {
                add_colored_info($info,"No input file is given. Please set an input Verilog fle first.\n", 'red');
                my $vdb =  read_verilog_file($file);
                return;
                my @modules=sort $vdb->get_modules($file);
         }
 
 
 
        my $f=add_project_dir_to_addr($file);
 
        if (-e $f) {
 
                my $vdb =  read_verilog_file($f);
 
                my @modules=sort $vdb->get_modules($f);
                #foreach my $p(@module_list) {print "$p\n"}
                #foreach my $p(@module_list) {print "$p\n"}
                $intfc_gen->intfc_set_interface_file($file);
                $intfc_gen->intfc_set_interface_file($file);
                $intfc_gen->intfc_set_module_name($modules[0]);
                $intfc_gen->intfc_set_module_name($modules[0]);
                $intfc_gen->intfc_add_module_list(@modules);
                $intfc_gen->intfc_add_module_list(@modules);
 
 
                set_gui_status($intfc_gen,"file_selected",1);
                set_gui_status($intfc_gen,"file_selected",1);
                show_info(\$info,"Select the module which contain the interface ports\n ");
                add_info($info,"$f is loaded\n");
 
 
        }
        }
        else {
        else {
                show_info(\$info,"File $file doese not exsit!\n ");
                add_colored_info($info,"File $file does not exist!\n", 'red');
 
 
        }
        }
}
}
 
 
 
 
Line 56... Line 65...
}
}
 
 
sub file_box {
sub file_box {
        my ($intfc_gen,$info)=@_;
        my ($intfc_gen,$info)=@_;
        my $label = gen_label_in_left("Select file:");
        my $label = gen_label_in_left("Select file:");
        my $entry = Gtk2::Entry->new;
        my $entry = gen_entry();
        my $open= def_image_button("icons/select.png","Open");
        my $open= def_image_button("icons/select.png","Open");
        my $browse= def_image_button("icons/browse.png","Browse");
        my $browse= def_image_button("icons/browse.png","Browse");
        my $file= $intfc_gen->intfc_get_interface_file();
        my $file= $intfc_gen->intfc_get_interface_file();
        my $intfc_info= def_image_button("icons/add_info.png","Description");
        my $intfc_info= def_image_button("icons/add_info.png","Description");
        my $table = def_table(1,10,TRUE);
        my $table = def_table(1,10,FALSE);
        $intfc_info->signal_connect("clicked"=> sub{
        $intfc_info->signal_connect("clicked"=> sub{
                get_intfc_description($intfc_gen,$info);
                get_intfc_description($intfc_gen,$info);
 
 
 
 
        });
        });
 
 
        if(defined $file){$entry->set_text($file);}
        if(defined $file){$entry->set_text($file);}
        show_info(\$info,"Please select the verilog file containig the interface\n");
        else {show_info($info,"Please select the Verilog file containing the interface\n");}
 
 
 
 
        $browse->signal_connect("clicked"=> sub{
        $browse->signal_connect("clicked"=> sub{
                my $entry_ref=$_[1];
                my $entry_ref=$_[1];
                my $file;
                my $file;
        my $dialog = Gtk2::FileChooserDialog->new(
        my $dialog = gen_file_dialog (undef, 'v','ITC');
                'Select a File', undef,
 
                'open',
 
                'gtk-cancel' => 'cancel',
 
                'gtk-ok'     => 'ok',
 
                );
 
 
 
                        my $filter = Gtk2::FileFilter->new();
 
                        $filter->set_name("Verilog");
 
                        $filter->add_pattern("*.v");
 
                        my $filter2 = Gtk2::FileFilter->new();
 
                        $filter2->set_name("Interface");
 
                        $filter2->add_pattern("*.ITC");
 
                        $dialog->add_filter ($filter);
 
                        $dialog->add_filter ($filter2);
 
 
 
 
 
                if ( "ok" eq $dialog->run ) {
                if ( "ok" eq $dialog->run ) {
                        $file = $dialog->get_filename;
                        $file = $dialog->get_filename;
                                        $$entry_ref->set_text($file);
                                        $$entry_ref->set_text($file);
                                        check_input_intfc_file($file,$intfc_gen,$info);
                                        check_input_intfc_file($file,$intfc_gen,$info);
                                        #read_file_modules($file,$intfc_gen,$info);
 
                        #print "file = $file\n";
 
                 }
                 }
                $dialog->destroy;
                $dialog->destroy;
 
 
 
 
 
 
        } , \$entry);
        } , \$entry);
 
 
        $open->signal_connect("clicked"=> sub{
        $open->signal_connect("clicked"=> sub{
                my $file_name=$entry->get_text();
                my $file_name=$entry->get_text();
                check_input_intfc_file($file,$intfc_gen,$info);
                check_input_intfc_file($file,$intfc_gen,$info);
Line 115... Line 105...
                my $file_name=$entry->get_text();
                my $file_name=$entry->get_text();
                read_file_modules($file_name,$intfc_gen,$info);
                read_file_modules($file_name,$intfc_gen,$info);
        });
        });
 
 
        $entry->signal_connect("changed"=>sub{
        $entry->signal_connect("changed"=>sub{
                show_info(\$info,"Please select the verilog file containig the interface\n");
                #show_info($info,"Please select the verilog file containing the interface\n");
        });
        });
 
 
        my $row=0;
        my $row=0;
        $table->attach_defaults ($label, 0, 1 , $row, $row+1);
        $table->attach_defaults ($label, 0, 1 , $row, $row+1);
        $table->attach_defaults ($entry, 1, 7 , $row, $row+1);
        $table->attach_defaults ($entry, 1, 7 , $row, $row+1);
Line 132... Line 122...
 
 
}
}
 
 
 
 
 
 
sub get_ports_type{
 
        my ($vdb,$top_module)=@_;
 
        my %ports;
 
 
 
        foreach my $sig (sort $vdb->get_modules_signals($top_module)) {
 
        my ($line,$a_line,$i_line,$type,$file,$posedge,$negedge,
 
         $type2,$s_file,$s_line,$range,$a_file,$i_file,$dims) =
 
           $vdb->get_module_signal($top_module,$sig);
 
 
 
                if($type eq "input" or $type eq "inout" or $type eq "output" ){
 
                        $ports{$sig}=$type;
 
 
 
                }
 
        }
 
        return %ports;
 
}
 
 
 
 
 
 
 
sub get_ports_rang{
 
        my ($vdb,$top_module)=@_;
 
        my %ports;
 
 
 
        foreach my $sig (sort $vdb->get_modules_signals($top_module)) {
 
        my ($line,$a_line,$i_line,$type,$file,$posedge,$negedge,
 
         $type2,$s_file,$s_line,$range,$a_file,$i_file,$dims) =
 
           $vdb->get_module_signal($top_module,$sig);
 
 
 
                if($type eq "input" or $type eq "inout" or $type eq "output" ){
 
 
 
 
 
 
 
                        $ports{$sig}=remove_all_white_spaces($range);
 
 
 
                }
 
        }
 
        return %ports;
 
}
 
 
 
 
 
 
 
sub get_interface_ports {
sub get_interface_ports {
        my ($intfc_gen,$info)=@_;
        my ($intfc_gen,$info)=@_;
        my $window=def_popwin_size(60,60,"Import Ports",'percent');
        my $window=def_popwin_size(60,60,"Import Ports",'percent');
 
 
        my $file=$intfc_gen->intfc_get_interface_file();
        my $file=$intfc_gen->intfc_get_interface_file();
        if (!defined $file){show_info(\$info,"File name has not been defined yet!");  return;}
        if (!defined $file){show_info($info,"File name has not been defined yet!");  return;}
        my $module=$intfc_gen->intfc_get_module_name();
        my $module=$intfc_gen->intfc_get_module_name();
        if (!defined $module){  show_info(\$info,"Module name has not been selected yet!");  return;}
        if (!defined $module){  show_info($info,"Module name has not been selected yet!");  return;}
        my $vdb=read_verilog_file($file);
        my $f=add_project_dir_to_addr($file);
 
        my $vdb=read_verilog_file($f);
        my %port_type=get_ports_type($vdb,$module);
        my %port_type=get_ports_type($vdb,$module);
        my %port_range=get_ports_rang($vdb,$module);
        my %port_range=get_ports_rang($vdb,$module);
 
 
        my $table=def_table(8,8,TRUE);
        my $table=def_table(8,8,TRUE);
        my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
        my $scrolled_win = add_widget_to_scrolled_win($table);
        $scrolled_win->set_policy( "automatic", "automatic" );
 
        $scrolled_win->add_with_viewport($table);
 
 
 
 
 
 
 
        my $title=gen_label_in_center("Select the ports included in the interface");
        my $title=gen_label_in_center("Select the ports included in the interface");
        my $title1=gen_label_in_center("Type");
        my $title1=gen_label_in_center("Type");
        my $title2=gen_label_in_center("Range");
        my $title2=gen_label_in_center("Range");
Line 205... Line 154...
        $row++;
        $row++;
        $table->attach_defaults($title1, 0,1, $row, $row+1);
        $table->attach_defaults($title1, 0,1, $row, $row+1);
        $table->attach_defaults($title2, 1,4, $row, $row+1);
        $table->attach_defaults($title2, 1,4, $row, $row+1);
        $table->attach_defaults($title3, 4,7, $row, $row+1);
        $table->attach_defaults($title3, 4,7, $row, $row+1);
        $table->attach_defaults($title4, 7,8, $row, $row+1);
        $table->attach_defaults($title4, 7,8, $row, $row+1);
 
 
        my $separator = Gtk2::HSeparator->new;
 
        $row++;
        $row++;
 
 
        $table->attach_defaults($separator, 0,8, $row, $row+1);
        add_Hsep_to_table($table, 0, 8 , $row);  $row++;
 
 
        $row++;
 
        $intfc_gen->intfc_remove_ports();
        $intfc_gen->intfc_remove_ports();
        foreach my $p (sort keys %port_type){
        foreach my $p (sort keys %port_type){
                my $port_id= $p;
                my $port_id= $p;
                my $porttype=$port_type{$p};
                my $porttype=$port_type{$p};
                my $label1= gen_label_in_center("$porttype");
                my $label1= gen_label_in_center("$porttype");
Line 228... Line 174...
                }
                }
 
 
                my $label3= gen_label_in_center($p);
                my $label3= gen_label_in_center($p);
                $table->attach_defaults($label3, 4,7, $row, $row+1);
                $table->attach_defaults($label3, 4,7, $row, $row+1);
 
 
                my $check= Gtk2::CheckButton->new;
                my $check= gen_checkbutton();
                $table->attach_defaults($check, 7,8, $row, $row+1);
                $table->attach_defaults($check, 7,8, $row, $row+1);
 
 
                $row++;
                $row++;
                if($row>8){$table->resize ($row, 8);}
                if($row>8){$table->resize ($row, 8);}
                #print "$p\:$port_type{$p}\n";
                #print "$p\:$port_type{$p}\n";
Line 280... Line 226...
 
 
 
 
 
 
sub module_select{
sub module_select{
        my ($intfc_gen,$info)=@_;
        my ($intfc_gen,$info)=@_;
        my $file= $intfc_gen->intfc_get_interface_file();
        #my $file= $intfc_gen->intfc_get_interface_file();
 
 
        my $table = def_table(1,10,TRUE);
        my $table = def_table(1,10,FALSE);
 
 
 
 
 
 
        my @modules= $intfc_gen->intfc_get_module_list();
        my @modules= $intfc_gen->intfc_get_module_list();
        my $combo=gen_combobox_object($intfc_gen,'module_name',undef,join(',', @modules),undef,'refresh',1);
        my $combo=gen_combobox_object($intfc_gen,'module_name',undef,join(',', @modules),undef,'refresh',1);
        my $modul_name=labele_widget_info(" Select module:",$combo);
        my $modul_name=gen_label_info(" Select module:",$combo);
 
 
 
 
        my $port= def_image_button("icons/import.png","Import Ports");
        my $port= def_image_button("icons/import.png","Import Ports");
        my $category_entry=gen_entry_object($intfc_gen,'category',undef,undef,undef,undef);
        my $category_entry=gen_entry_object($intfc_gen,'category',undef,undef,undef,undef);
        my $category=labele_widget_info(" Select Category:",$category_entry,'Define the Interface category:e.g RAM, wishbone,...');
        my $category=gen_label_info(" Select Category:",$category_entry,'Define the Interface category:e.g RAM, wishbone,...');
 
 
 
 
 
 
 
 
        my $row=0;
        my $row=0;
Line 324... Line 270...
 
 
sub interface_type_select {
sub interface_type_select {
        my ($intfc_gen,$info,$table,$row)=@_;
        my ($intfc_gen,$info,$table,$row)=@_;
 
 
        my $entry=gen_entry_object($intfc_gen,'name',undef,undef,"refresh",50);
        my $entry=gen_entry_object($intfc_gen,'name',undef,undef,"refresh",50);
        my $entrybox=labele_widget_info(" Interface name:",$entry);
        my $entrybox=gen_label_info(" Interface name:",$entry);
 
 
        my $combo=gen_combobox_object($intfc_gen,'connection_num',undef,"single connection,multi connection","single connection",'refresh',1);
        my $combo=gen_combobox_object($intfc_gen,'connection_num',undef,"single connection,multi connection","single connection",'refresh',1);
        my $combo_box=labele_widget_info(" Select soket type:",$combo,'Define the soket as multi connection if only if all interfaces ports are output oprts and they can feed more than one plug interface. E.g. clk is defined as multi connection');
        my $combo_box=gen_label_info(" Select socket type:",$combo,'Define the socket as multi connection if only if all interfaces ports are output oprts and they can feed more than one plug interface. E.g. clk is defined as multi connection');
 
 
        $table->attach ($entrybox, 0, 2 , $row, $row+1,'expand','shrink',2,2);
        $table->attach ($entrybox, 0, 2 , $row, $row+1,'expand','shrink',2,2);
        $table->attach ($combo_box, 3, 6 , $row, $row+1,'expand','shrink',2,2);
        $table->attach ($combo_box, 3, 6 , $row, $row+1,'expand','shrink',2,2);
 
 
}
}
Line 346... Line 292...
        my(%types,%ranges,%names,%connect_types,%connect_ranges,%connect_names,%outport_types,%default_outs);
        my(%types,%ranges,%names,%connect_types,%connect_ranges,%connect_names,%outport_types,%default_outs);
        $intfc_gen->intfc_get_ports(\%types,\%ranges,\%names,\%connect_types,\%connect_ranges,\%connect_names,\%outport_types,\%default_outs);
        $intfc_gen->intfc_get_ports(\%types,\%ranges,\%names,\%connect_types,\%connect_ranges,\%connect_names,\%outport_types,\%default_outs);
 
 
        my $size = keys %types;
        my $size = keys %types;
        if($size >0){
        if($size >0){
                my $sep = Gtk2::HSeparator->new;
 
                $table->attach ($sep, 0, 10 , $row, $row+1,'fill','fill',2,2);   $row++;
 
 
 
 
                add_Hsep_to_table($table, 0, 10 , $row); $row++;
 
 
                my $swap= def_image_button("icons/swap.png","swap");
                my $swap= def_image_button("icons/swap.png","swap");
 
 
                $swap->signal_connect('clicked'=>sub{
                $swap->signal_connect('clicked'=>sub{
                        my $type=$intfc_gen->intfc_get_interface_type();
                        my $type=$intfc_gen->intfc_get_interface_type();
Line 383... Line 328...
                        $lab2=def_image_label('icons/plug.png','plug');
                        $lab2=def_image_label('icons/plug.png','plug');
                        $lab1=def_image_label('icons/socket.png','socket');
                        $lab1=def_image_label('icons/socket.png','socket');
 
 
                }
                }
 
 
                my $sep2 = Gtk2::HSeparator->new;
 
 
 
 
 
                $table->attach ($lab1, 1, 2 , $row, $row+1,'expand','shrink',2,2);
                $table->attach ($lab1, 1, 2 , $row, $row+1,'expand','shrink',2,2);
                $table->attach ($swap, 3, 4 , $row, $row+1,'expand','shrink',2,2);
                $table->attach ($swap, 3, 4 , $row, $row+1,'expand','shrink',2,2);
                $table->attach ($lab2, 5, 6 , $row, $row+1,'expand','shrink',2,2);      $row++;
                $table->attach ($lab2, 5, 6 , $row, $row+1,'expand','shrink',2,2);      $row++;
                $table->attach ($sep2, 0, 9 , $row, $row+1,'fill','fill',2,2);   $row++;
 
 
 
 
                add_Hsep_to_table($table, 0, 9 , $row);  $row++;
 
 
 
 
                my $lab3= gen_label_in_center("Type");
                my $lab3= gen_label_in_center("Type");
                my $lab4= gen_label_in_center("Range");
                my $lab4= gen_label_in_center("Range");
                my $lab5= gen_label_in_center("Name");
                my $lab5= gen_label_in_center("Name");
Line 430... Line 377...
                        my @ports_type=("input","output","inout");
                        my @ports_type=("input","output","inout");
                        my $pos=get_scolar_pos($type,@ports_type);
                        my $pos=get_scolar_pos($type,@ports_type);
                        my $combo1=gen_combo(\@ports_type,$pos);
                        my $combo1=gen_combo(\@ports_type,$pos);
                        my $entry2=gen_entry($range);
                        my $entry2=gen_entry($range);
                        my $entry3=gen_entry($name);
                        my $entry3=gen_entry($name);
                        my $separator = Gtk2::VSeparator->new;
 
                        my $connect_type_lable= gen_label_in_center($connect_type);
                        my $connect_type_lable= gen_label_in_center($connect_type);
                        my $entry4=gen_entry($connect_range);
                        my $entry4=gen_entry($connect_range);
                        my $entry5=gen_entry($connect_name);
                        my $entry5=gen_entry($connect_name);
                        my @outport_types=("shared","concatenate");
                        my @outport_types=("shared","concatenate");
                        my $pos2=get_scolar_pos($outport_type,@outport_types);
                        my $pos2=get_scolar_pos($outport_type,@outport_types);
Line 443... Line 390...
 
 
                        #my @list=(port_width_repeat($range,"1\'b0"),port_width_repeat($range,"1\'b1"),port_width_repeat($range,"1\'bx"));
                        #my @list=(port_width_repeat($range,"1\'b0"),port_width_repeat($range,"1\'b1"),port_width_repeat($range,"1\'bx"));
                        my @list=("Active low","Active high","Don't care");
                        my @list=("Active low","Active high","Don't care");
 
 
                        my $combentry=gen_combo_entry(\@list);
                        my $combentry=gen_combo_entry(\@list);
 
                        my $combochiled = combo_entry_get_chiled($combentry);
                        $pos2=get_scolar_pos($default_out,@list);
                        $pos2=get_scolar_pos($default_out,@list);
                        if( defined $pos2){
                        if( defined $pos2){
                                $combentry->set_active($pos2);
                                $combentry->set_active($pos2);
                        } else {
                        } else {
                                ($combentry->child)->set_text($default_out);
 
 
                                $combochiled->set_text($default_out);
                        }
                        }
 
 
 
 
                        #$box->pack_start($entry3,TRUE,FALSE,3);
                        #$box->pack_start($entry3,TRUE,FALSE,3);
                        #$box->pack_start($separator,TRUE,FALSE,3);
                        #$box->pack_start($separator,TRUE,FALSE,3);
Line 502... Line 451...
                                my $new_outport_type=$combo2->get_active_text();
                                my $new_outport_type=$combo2->get_active_text();
                                $intfc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$new_outport_type,$default_out);
                                $intfc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$new_outport_type,$default_out);
                                set_gui_status($intfc_gen,"refresh",1);
                                set_gui_status($intfc_gen,"refresh",1);
 
 
                        });
                        });
                        ($combentry->child)->signal_connect('changed' => sub {
                        $combochiled->signal_connect('changed' => sub {
                                my ($entry) = @_;
                                my ($entry) = @_;
                                $default_out=$entry->get_text();
                                $default_out=$entry->get_text();
                                $intfc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type,$default_out);
                                $intfc_gen->intfc_add_port($id,$type,$range,$name,$connect_type,$connect_range,$connect_name,$outport_type,$default_out);
 
 
 
 
Line 546... Line 495...
        my $row=port_select($intfc_gen,$info,$table,1);
        my $row=port_select($intfc_gen,$info,$table,1);
        for (my $i=$row; $i<20; $i++){
        for (my $i=$row; $i<20; $i++){
                my $temp=gen_label_in_center(" ");
                my $temp=gen_label_in_center(" ");
                #$table->attach_defaults ($temp, 0, 1 , $i, $i+1);
                #$table->attach_defaults ($temp, 0, 1 , $i, $i+1);
        }
        }
        my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
 
        $scrolled_win->set_policy( "automatic", "automatic" );
 
        $scrolled_win->add_with_viewport($table);
 
 
 
 
 
 
 
 
 
 
        my $scrolled_win = add_widget_to_scrolled_win($table);
 
 
        return $scrolled_win;
        return $scrolled_win;
 
 
}
}
 
 
Line 572... Line 517...
        $result=$intfc_gen->intfc_ckeck_ports_available();
        $result=$intfc_gen->intfc_ckeck_ports_available();
        if(!defined $result){$message="No port connection has been selected for this interface!";}
        if(!defined $result){$message="No port connection has been selected for this interface!";}
        $result=$intfc_gen->intfc_get_interface_name();
        $result=$intfc_gen->intfc_get_interface_name();
        if(!defined $result){$message="The interface name is empty!";}
        if(!defined $result){$message="The interface name is empty!";}
        $result=$intfc_gen->intfc_get_interface_file();
        $result=$intfc_gen->intfc_get_interface_file();
        if(!defined $result){$message="The verilog file containig the interface has not been selected!";}
        if(!defined $result){$message="The Verilog file containing the interface has not been selected!";}
 
 
        if(!defined $message){return 1;}
        if(!defined $message){return 1;}
        else {message_dialog($message); return 0;}
        else {message_dialog($message); return 0;}
 
 
 
 
Line 596... Line 541...
                close(FILE) || die "Error closing file: $!";
                close(FILE) || die "Error closing file: $!";
                #store \%$intfc_gen, "lib/$name.ITC";
                #store \%$intfc_gen, "lib/$name.ITC";
 
 
                my $message="Interface $name has been generated successfully. In order to see this interface in IP generator you need to reset the ProNoC. Do you want to reset the ProNoC now?" ;
                my $message="Interface $name has been generated successfully. In order to see this interface in IP generator you need to reset the ProNoC. Do you want to reset the ProNoC now?" ;
 
 
                my $dialog = Gtk2::MessageDialog->new (my $window,
                my $response =  yes_no_dialog($message);
                        'destroy-with-parent',
 
                        'question', # message type
 
                        'yes-no', # which set of buttons?
 
                        "$message");
 
                my $response = $dialog->run;
 
                if ($response eq 'yes') {
                if ($response eq 'yes') {
                        exec($^X, $0, @ARGV);# reset ProNoC to apply changes    
                        exec($^X, $0, @ARGV);# reset ProNoC to apply changes    
                }
                }
                $dialog->destroy;
 
 
 
 
 
        }else{
        }else{
                my $message="Category must be defined!";
                my $message="Category must be defined!";
                message_dialog($message);
                message_dialog($message);
Line 627... Line 567...
#########
#########
 
 
sub get_intfc_description{
sub get_intfc_description{
        my ($intfc_gen,$info)=@_;
        my ($intfc_gen,$info)=@_;
        my $description = $intfc_gen->intfc_get_description();
        my $description = $intfc_gen->intfc_get_description();
        my $table = Gtk2::Table->new (15, 15, TRUE);
        my $table = def_table(15,15,TRUE);
        my $window=def_popwin_size(50,50,"Add description",'percent');
        my $window=def_popwin_size(50,50,"Add description",'percent');
        my ($scrwin,$text_view)=create_text();
        my ($scrwin,$text_view)=create_txview();
        #my $buffer = $textbox->get_buffer();
        #my $buffer = $textbox->get_buffer();
        my $ok=def_image_button("icons/select.png",' Ok ');
        my $ok=def_image_button("icons/select.png",' Ok ');
 
 
        $table->attach_defaults($scrwin,0,15,0,14);
        $table->attach_defaults($scrwin,0,15,0,14);
        $table->attach_defaults($ok,6,9,14,15);
        $table->attach_defaults($ok,6,9,14,15);
Line 657... Line 597...
 
 
 
 
sub load_interface{
sub load_interface{
        my ($intfc_gen)=@_;
        my ($intfc_gen)=@_;
        my $file;
        my $file;
        my $dialog = Gtk2::FileChooserDialog->new(
        my $dialog =  gen_file_dialog (undef, 'ITC');
                'Select a File', undef,
 
                'open',
 
                'gtk-cancel' => 'cancel',
 
                'gtk-ok'     => 'ok',
 
                );
 
 
 
        my $filter = Gtk2::FileFilter->new();
 
        $filter->set_name("ITC");
 
        $filter->add_pattern("*.ITC");
 
        $dialog->add_filter ($filter);
 
        my $dir = Cwd::getcwd();
        my $dir = Cwd::getcwd();
        $dialog->set_current_folder ("$dir/lib/interface")      ;
        $dialog->set_current_folder ("$dir/lib/interface")      ;
 
 
 
 
        if ( "ok" eq $dialog->run ) {
        if ( "ok" eq $dialog->run ) {
Line 681... Line 611...
                        $intfc_gen->intfc_set_interface_file($file);
                        $intfc_gen->intfc_set_interface_file($file);
                        set_gui_status($intfc_gen,"load_file",0);
                        set_gui_status($intfc_gen,"load_file",0);
                }
                }
     }
     }
     $dialog->destroy;
     $dialog->destroy;
 
 
 
 
 
 
}
}
 
 
 
 
 
 
############
############
Line 695... Line 622...
############
############
sub intfc_main{
sub intfc_main{
 
 
        my $intfc_gen= intfc_gen->interface_generator();
        my $intfc_gen= intfc_gen->interface_generator();
        set_gui_status($intfc_gen,"ideal",0);
        set_gui_status($intfc_gen,"ideal",0);
        my $main_table = Gtk2::Table->new (15, 12, FALSE);
        my $main_table =def_table(15, 12, FALSE);
 
 
        $main_table->set_row_spacings (4);
        $main_table->set_row_spacings (4);
        $main_table->set_col_spacings (1);
        $main_table->set_col_spacings (1);
        # The box which holds the info, warning, error ...  mesages
        # The box which holds the info, warning, error ...  mesages
        my ($infobox,$info)= create_text();
        my ($infobox,$info)= create_txview();
 
 
 
 
        my $refresh = Gtk2::Button->new_from_stock('ref');
 
        my $generate = def_image_button('icons/gen.png','Generate');
        my $generate = def_image_button('icons/gen.png','Generate');
 
 
 
 
 
 
        my $fbox=file_box($intfc_gen,$info);
        my $fbox=file_box($intfc_gen,$info);
Line 717... Line 644...
 
 
        #$main_table->attach_defaults ($fbox , 0, 12, 0,1);
        #$main_table->attach_defaults ($fbox , 0, 12, 0,1);
        #$main_table->attach_defaults ($sbox , 0, 12, 1,2);
        #$main_table->attach_defaults ($sbox , 0, 12, 1,2);
        #$main_table->attach_defaults ($devbox , 0, 12, 2,12);
        #$main_table->attach_defaults ($devbox , 0, 12, 2,12);
        #$main_table->attach_defaults ($infobox  , 0, 12, 12,14);
        #$main_table->attach_defaults ($infobox  , 0, 12, 12,14);
 
    my $table=def_table(2,11,FALSE);
 
    $table->attach($fbox,0,11,0,1,'fill','shrink',2,2);
 
        $table->attach($sbox,0,11,1,2,'fill','shrink',2,2);
 
 
        my $v1=def_pack_vbox(TRUE,0,$fbox,$sbox);
        #my $v1=def_pack_vbox(TRUE,0,$fbox,$sbox);
        my $v2=gen_vpaned($v1,.1,$devbox);
        my $v2=gen_vpaned($table,.12,$devbox);
        my $v3=gen_vpaned($v2,.6,$infobox);
        my $v3=gen_vpaned($v2,.6,$infobox);
        $main_table->attach_defaults ($v3  , 0, 12, 0,14);
        $main_table->attach_defaults ($v3  , 0, 12, 0,14);
 
 
 
 
        $main_table->attach ($generate  , 6, 8, 14,15,'shrink','shrink',2,2);
        $main_table->attach ($generate  , 6, 8, 14,15,'shrink','shrink',2,2);
Line 732... Line 662...
        my $open = def_image_button('icons/browse.png','Load Interface');
        my $open = def_image_button('icons/browse.png','Load Interface');
        my $openbox=def_hbox(TRUE,0);
        my $openbox=def_hbox(TRUE,0);
        $openbox->pack_start($open,   FALSE, FALSE,0);
        $openbox->pack_start($open,   FALSE, FALSE,0);
        $main_table->attach ($openbox,0, 2, 14,15,'shrink','shrink',2,2);
        $main_table->attach ($openbox,0, 2, 14,15,'shrink','shrink',2,2);
 
 
        #referesh the mpsoc generator 
 
        $refresh-> signal_connect("clicked" => sub{
 
                $devbox->destroy();
 
                $fbox->destroy();
 
                $sbox->destroy();
 
                $v1->destroy();
 
                select(undef, undef, undef, 0.1); #wait 10 ms
 
                $devbox=dev_box_show($intfc_gen,$info);
 
                $fbox=file_box($intfc_gen,$info);
 
                $sbox=module_select($intfc_gen,$info);
 
                $v1=def_pack_vbox(TRUE,0,$fbox,$sbox);
 
                $v2->pack1($v1,TRUE, TRUE);
 
                $v2->pack2($devbox,TRUE, TRUE);
 
                $v3-> pack1($v2, TRUE, TRUE);
 
                #$main_table->attach_defaults ($v3  , 0, 12, 0,14);
 
 
 
                $v3->show_all();
 
 
 
        });
 
 
 
 
 
 
 
 
 
        #check soc status every 0.5 second. referesh gui if there is any changes 
        #check soc status every 0.5 second. referesh gui if there is any changes 
Line 767... Line 679...
                }
                }
                elsif($state eq "load_file"){
                elsif($state eq "load_file"){
                        my $file=$intfc_gen->intfc_get_interface_file();
                        my $file=$intfc_gen->intfc_get_interface_file();
                        my ($pp,$r,$err) = regen_object($file);
                        my ($pp,$r,$err) = regen_object($file);
                        if ($r){
                        if ($r){
                                add_info(\$info,"**Error reading  $file file: $err\n");
                                add_info($info,"**Error reading  $file file: $err\n");
                                return;
                                return;
                        }
                        }
                        clone_obj($intfc_gen,$pp);
                        clone_obj($intfc_gen,$pp);
 
                        show_info($info,"$file is loaded!\n ");
                        set_gui_status($intfc_gen,"ref",1);
                        set_gui_status($intfc_gen,"ref",1);
 
 
 
 
                }
                }
                elsif( $state ne "ideal" ){
                elsif( $state ne "ideal" ){
                        $refresh->clicked;
                        $devbox->destroy();
 
                        $fbox->destroy();
 
                        $sbox->destroy();
 
 
 
                        select(undef, undef, undef, 0.1); #wait 10 ms
 
                        $devbox=dev_box_show($intfc_gen,$info);
 
                        $fbox=file_box($intfc_gen,$info);
 
                        $sbox=module_select($intfc_gen,$info);
 
                        $table->attach($fbox,0,11,0,1,'fill','shrink',2,2);
 
                        $table->attach($sbox,0,11,1,2,'fill','shrink',2,2);
 
 
 
                        $v2->pack2($devbox,TRUE, TRUE);
 
                        $v3-> pack1($v2, TRUE, TRUE);
 
                        #$main_table->attach_defaults ($v3  , 0, 12, 0,14);                             
 
                        $v3->show_all();
                        set_gui_status($intfc_gen,"ideal",0);
                        set_gui_status($intfc_gen,"ideal",0);
 
 
                }
                }
                return TRUE;
                return TRUE;
 
 
Line 794... Line 721...
        $generate-> signal_connect("clicked" => sub{
        $generate-> signal_connect("clicked" => sub{
                if( check_intfc($intfc_gen)) {
                if( check_intfc($intfc_gen)) {
                        generate_lib($intfc_gen);
                        generate_lib($intfc_gen);
 
 
                }
                }
 
                set_gui_status($intfc_gen,"ref",1);
 
 
                $refresh->clicked;
 
 
 
});
});
 
 
        #show_selected_dev($info,\@active_dev,\$dev_list_refresh,\$dev_table);
        #show_selected_dev($info,\@active_dev,\$dev_list_refresh,\$dev_table);
 
 
Line 808... Line 735...
#$box->show;
#$box->show;
        #$window->add ($main_table);
        #$window->add ($main_table);
        #$window->show_all;
        #$window->show_all;
        #return $main_table;
        #return $main_table;
 
 
        my $sc_win = new Gtk2::ScrolledWindow (undef, undef);
 
                $sc_win->set_policy( "automatic", "automatic" );
 
                $sc_win->add_with_viewport($main_table);
 
 
 
        return $sc_win;
 
 
 
 
        return  add_widget_to_scrolled_win($main_table);
 
 
}
}
 
 
 
 
 
 

powered by: WebSVN 2.1.0

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