Line 8... |
Line 8... |
use ip_gen;
|
use ip_gen;
|
use rvp;
|
use rvp;
|
use Cwd 'abs_path';
|
use Cwd 'abs_path';
|
|
|
use File::Basename;
|
use File::Basename;
|
|
use File::Path qw/make_path/;
|
|
|
use Gtk2;
|
use Gtk2;
|
|
|
|
|
require "widget.pl";
|
require "widget.pl";
|
|
require "readme_gen.pl";
|
|
|
use String::Similarity;
|
use String::Similarity;
|
|
|
|
|
sub find_the_most_similar_position{
|
sub find_the_most_similar_position{
|
Line 48... |
Line 49... |
################
|
################
|
# check_input_file
|
# check_input_file
|
################
|
################
|
|
|
sub check_input_file{
|
sub check_input_file{
|
my ($file,$ipgen,$soc_state,$info)=@_;
|
my ($file,$ipgen,$info)=@_;
|
my ($name,$path,$suffix) = fileparse("$file",qr"\..[^.]*$");
|
my ($name,$path,$suffix) = fileparse("$file",qr"\..[^.]*$");
|
if($suffix eq '.IP'){
|
if($suffix eq '.IP'){
|
$ipgen->ipgen_add("file_name",$file);
|
$ipgen->ipgen_add("file_name",$file);
|
set_state($soc_state,"load_file",0);
|
set_gui_status($ipgen,"load_file",0);
|
|
|
|
|
}else{
|
}else{
|
read_all_module ($file,$ipgen,$soc_state,$info);
|
read_all_module ($file,$ipgen,$info);
|
|
|
}
|
}
|
|
|
|
|
}
|
}
|
|
|
|
|
sub read_all_module{
|
sub read_all_module{
|
my ($file,$ipgen,$soc_state,$info)=@_;
|
my ($file,$ipgen,$info)=@_;
|
|
|
if (!defined $file) {return; }
|
if (!defined $file) {return; }
|
if (-e $file) {
|
if (-e $file) {
|
my $vdb = read_file($file);
|
my $vdb = read_file($file);
|
my @modules=sort $vdb->get_modules($file);
|
my @modules=sort $vdb->get_modules($file);
|
Line 81... |
Line 82... |
$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_deafult_setting($ipgen,$modules[0]);
|
|
|
|
|
set_state($soc_state,"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 ");
|
|
|
}
|
}
|
else {
|
else {
|
show_info(\$info,"File $file doese not exsit!\n ");
|
show_info(\$info,"File $file doese not exsit!\n ");
|
Line 96... |
Line 97... |
|
|
##############
|
##############
|
# create_interface_tree
|
# create_interface_tree
|
##############
|
##############
|
sub create_interface_tree {
|
sub create_interface_tree {
|
my ($info,$intfc,$ipgen,$soc_state)=@_;
|
my ($info,$intfc,$ipgen)=@_;
|
my $model = Gtk2::TreeStore->new ('Glib::String', 'Glib::String', 'Glib::Scalar', 'Glib::Boolean');
|
my $model = Gtk2::TreeStore->new ('Glib::String', 'Glib::String', 'Glib::Scalar', 'Glib::Boolean');
|
my $tree_view = Gtk2::TreeView->new;
|
my $tree_view = Gtk2::TreeView->new;
|
$tree_view->set_model ($model);
|
$tree_view->set_model ($model);
|
my $selection = $tree_view->get_selection;
|
my $selection = $tree_view->get_selection;
|
|
|
$selection->set_mode ('browse');
|
$selection->set_mode ('browse');
|
$tree_view->set_size_request (200, -1);
|
# $tree_view->set_size_request (200, -1);
|
|
|
|
|
# my @interface= $intfc->get_interfaces();
|
# my @interface= $intfc->get_interfaces();
|
my @categories= $intfc->get_categories();
|
my @categories= $intfc->get_categories();
|
|
|
Line 142... |
Line 143... |
}
|
}
|
|
|
my $cell = Gtk2::CellRendererText->new;
|
my $cell = Gtk2::CellRendererText->new;
|
$cell->set ('style' => 'italic');
|
$cell->set ('style' => 'italic');
|
my $column = Gtk2::TreeViewColumn->new_with_attributes
|
my $column = Gtk2::TreeViewColumn->new_with_attributes
|
("Double click to add the interface",
|
("Interfaces list",
|
$cell,
|
$cell,
|
'text' => DISPLY_COLUMN,
|
'text' => DISPLY_COLUMN,
|
'style_set' => ITAL_COLUMN);
|
'style_set' => ITAL_COLUMN);
|
|
|
$tree_view->append_column ($column);
|
$tree_view->append_column ($column);
|
Line 183... |
Line 184... |
|
|
|
|
|
|
if($name){
|
if($name){
|
#print "$infc_name-$infc_type is selected via row activaton!\n";
|
#print "$infc_name-$infc_type is selected via row activaton!\n";
|
add_intfc_to_ip($intfc,$ipgen,$name,'plug',\$info,$soc_state);
|
add_intfc_to_ip($intfc,$ipgen,$name,'plug',\$info);
|
|
|
}
|
}
|
|
|
}, \@ll);
|
}, \@ll);
|
|
|
Line 196... |
Line 197... |
my $scrolled_window = Gtk2::ScrolledWindow->new;
|
my $scrolled_window = Gtk2::ScrolledWindow->new;
|
$scrolled_window->set_policy ('automatic', 'automatic');
|
$scrolled_window->set_policy ('automatic', 'automatic');
|
$scrolled_window->set_shadow_type ('in');
|
$scrolled_window->set_shadow_type ('in');
|
$scrolled_window->add($tree_view);
|
$scrolled_window->add($tree_view);
|
|
|
my $hbox = Gtk2::HBox->new (TRUE, 0);
|
my $hbox = Gtk2::HBox->new (FALSE, 0);
|
$hbox->pack_start ( $scrolled_window, TRUE, TRUE, 0);
|
$hbox->pack_start ( $scrolled_window, TRUE, TRUE, 0);
|
|
|
|
|
|
|
return $hbox;
|
return $hbox;
|
Line 231... |
Line 232... |
############
|
############
|
# file_info
|
# file_info
|
#############
|
#############
|
|
|
sub ip_file_box {
|
sub ip_file_box {
|
my ($ipgen,$soc_state,$info,$table,$row)=@_;
|
my ($ipgen,$info,$table,$row)=@_;
|
my $label = gen_label_in_left(" Select file:");
|
my $label = gen_label_in_left(" Select file:");
|
my $entry = Gtk2::Entry->new;
|
my $entry = Gtk2::Entry->new;
|
#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 $label2= gen_label_in_left(" IP name:");
|
|
my $entry2= gen_entry();
|
|
my $file= $ipgen->ipgen_get("file_name");
|
my $file= $ipgen->ipgen_get("file_name");
|
if(defined $file){$entry->set_text($file);}
|
if(defined $file){$entry->set_text($file);}
|
my $ip_name= $ipgen->ipgen_get("ip_name");
|
|
if(defined $ip_name){$entry2->set_text($ip_name);}
|
|
|
|
|
my $entry2=labele_widget_info(" IP name:",gen_entry_object($ipgen,'ip_name',undef,undef,undef,undef));
|
|
|
|
|
|
|
show_info(\$info,"Please select the verilog file containig the ip module\n");
|
show_info(\$info,"Please select the verilog file containig the ip module\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 = Gtk2::FileChooserDialog->new(
|
Line 265... |
Line 269... |
$dialog->add_filter ($filter2);
|
$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_file($file,$ipgen,$soc_state,$info);
|
check_input_file($file,$ipgen,$info);
|
#print "file = $file\n";
|
#print "file = $file\n";
|
}
|
}
|
$dialog->destroy;
|
$dialog->destroy;
|
|
|
|
|
|
|
} , \$entry);
|
} , \$entry);
|
|
|
|
|
|
|
#$open->signal_connect("clicked"=> sub{
|
|
#my $file_name=$entry->get_text();
|
|
#check_input_file($file_name,$ipgen,$soc_state,$info);
|
|
|
|
#});
|
|
$entry->signal_connect("activate"=>sub{
|
$entry->signal_connect("activate"=>sub{
|
my $file_name=$entry->get_text();
|
my $file_name=$entry->get_text();
|
check_input_file($file_name,$ipgen,$soc_state,$info);
|
check_input_file($file_name,$ipgen,$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 containig the interface\n");
|
});
|
});
|
$entry2->signal_connect("changed"=>sub{
|
|
my $name=$entry2->get_text();
|
|
$ipgen->ipgen_add("ip_name",$name);
|
|
|
|
});
|
|
$table->attach_defaults ($label, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($label, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($entry, 1, 8 , $row, $row+1);
|
$table->attach_defaults ($entry, 1, 8 , $row, $row+1);
|
$table->attach_defaults ($browse, 8, 9, $row, $row+1);
|
$table->attach ($browse, 8, 9, $row, $row+1,,'expand','shrink',2,2);
|
$table->attach_defaults ($label2, 9, 10, $row, $row+1);
|
$table->attach_defaults ($entry2, 9, 11, $row, $row+1);
|
$table->attach_defaults ($entry2, 10, 11, $row, $row+1);
|
|
#$table->attach_defaults ($open, 7, 8, $row, $row+1);
|
|
#$table->attach_defaults ($entry, $col, $col+1, $row, $row+1);
|
|
#return $table;
|
|
|
|
|
|
}
|
}
|
|
|
|
|
|
|
|
|
sub select_module{
|
sub select_module{
|
my ($ipgen,$soc_state,$info,$table,$row)=@_;
|
my ($ipgen,$info,$table,$row)=@_;
|
my $label= gen_label_in_left(" Select\n module:");
|
|
|
|
my @modules= $ipgen->ipgen_get_module_list();
|
my @modules= $ipgen->ipgen_get_module_list();
|
my $saved_module=$ipgen->ipgen_get("module_name");
|
my $saved_module=$ipgen->ipgen_get("module_name");
|
my $pos=(defined $saved_module ) ? get_scolar_pos( $saved_module,@modules) : 0;
|
my $pos=(defined $saved_module ) ? get_scolar_pos( $saved_module,@modules) : 0;
|
my $combo = gen_combo(\@modules, $pos);
|
my $combo = gen_combo(\@modules, $pos);
|
|
my $top_module=labele_widget_info(" Select\n module:",$combo);
|
|
|
|
|
|
|
|
|
my $param= def_image_button("icons/setting.png","Parameter\n setting");
|
my $param= def_image_button("icons/setting.png","Parameter\n setting");
|
my $def= def_image_button("icons/setting.png","Definition\n file setting");
|
my $def= def_image_button("icons/setting.png","Definition\n file setting");
|
my $label2= gen_label_in_left(" Select\n Category:");
|
|
my ($category,$category_entry)=gen_entry_help('Define the IP category:e.g RAM, GPIO,...');
|
|
|
|
|
#Category
|
|
my $ip = ip->lib_new ();
|
|
my @categories= $ip->ip_get_categories();
|
|
$ip =undef;
|
my $saved_category=$ipgen->ipgen_get("category");
|
my $saved_category=$ipgen->ipgen_get("category");
|
if(defined $saved_category){$category_entry->set_text($saved_category);}
|
if(defined $saved_category ){ push(@categories,$saved_category) if(!( grep /^$saved_category$/, @categories ));}
|
my $ipinfo= def_image_button("icons/info.png"," IP\n Description");
|
my $content=join( ',', @categories);
|
|
my $combentry=gen_comboentry_object ($ipgen,'category',undef,$content,$saved_category,undef,undef);
|
|
my $category=labele_widget_info(" Select\n Category:",$combentry,"Select the IP category form the given list or you can add a new category.");
|
|
|
|
|
|
|
|
my $ipinfo= def_image_button("icons/add_info.png"," IP\n Description");
|
my $header_h= def_image_button("icons/h_file.png","Add Software\n files");
|
my $header_h= def_image_button("icons/h_file.png","Add Software\n files");
|
my $lib_hdl= def_image_button("icons/add-notes.png","Add HDL\n files");
|
my $lib_hdl= def_image_button("icons/add-notes.png","Add HDL\n files");
|
|
|
$table->attach_defaults ($label, 0, 1 , $row, $row+1);
|
|
$table->attach_defaults ($combo, 1, 4 , $row,$row+1);
|
#$table->attach_defaults ($top_module, 0, 1 , $row, $row+1);
|
$table->attach_defaults ($param, 4, 6 , $row, $row+1);
|
$table->attach ($top_module, 0, 4 , $row,$row+1,'fill','shrink',2,2);
|
#$table->attach_defaults ($def, 5, 6 , $row, $row+1);
|
$table->attach ($param, 4, 6 , $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($label2, 6, 7 , $row, $row+1);
|
|
$table->attach_defaults ($category, 7, 8 , $row, $row+1);
|
$table->attach ($category, 6, 8 , $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($ipinfo, 8, 9 , $row, $row+1);
|
$table->attach ($ipinfo, 8, 9 , $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($header_h, 9, 10 , $row, $row+1);
|
$table->attach ($header_h, 9, 10 , $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($lib_hdl, 10, 11 , $row, $row+1);
|
$table->attach ($lib_hdl, 10, 11 , $row, $row+1,'expand','shrink',2,2);
|
|
|
|
|
$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_deafult_setting($ipgen,$module);
|
set_state($soc_state,'intfc_changed',0);
|
set_gui_status($ipgen,'intfc_changed',0);
|
|
|
|
|
});
|
});
|
|
|
$param->signal_connect("clicked"=> sub{
|
$param->signal_connect("clicked"=> sub{
|
get_parameter_setting($ipgen,$soc_state,$info);
|
get_parameter_setting($ipgen,$info);
|
|
|
|
|
});
|
});
|
|
|
$def->signal_connect("clicked"=> sub{
|
$def->signal_connect("clicked"=> sub{
|
get_def_setting($ipgen,$soc_state,$info);
|
get_def_setting($ipgen,$info);
|
|
|
|
|
});
|
});
|
$category_entry->signal_connect("changed"=> sub{
|
|
my $name=$category_entry->get_text();
|
|
$ipgen->ipgen_add("category",$name);
|
|
|
|
});
|
|
$ipinfo->signal_connect("clicked"=> sub{
|
$ipinfo->signal_connect("clicked"=> sub{
|
get_Description($ipgen,$soc_state,$info);
|
get_Description($ipgen,$info);
|
|
|
});
|
});
|
$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.";
|
Line 404... |
Line 410... |
$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;
|
|
|
|
|
get_source_file($ipgen,$soc_state,$info,0,"Add software file(s)","SW",\%page_info);
|
get_source_file($ipgen,$info,0,"Add software file(s)","SW",\%page_info);
|
#get_software_file($ipgen,$soc_state,$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 %page_info;
|
my %page_info;
|
Line 418... |
Line 424... |
$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;
|
|
|
get_source_file($ipgen,$soc_state,$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,$soc_state,$info);
|
#get_hdl_file($ipgen,$info);
|
|
|
|
|
});
|
});
|
}
|
}
|
|
|
Line 442... |
Line 448... |
$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;
|
$ipgen->ipgen_add_parameter($p,$v,'Fixed','');
|
$ipgen->ipgen_add_parameter($p,$v,'Fixed','','Parameter',1);
|
|
|
}
|
}
|
#add parameter order.
|
#add parameter order.
|
$ipgen->ipgen_add("parameters_order",\@parameters_order);
|
$ipgen->ipgen_add("parameters_order",\@parameters_order);
|
#add port order.
|
#add port order.
|
Line 458... |
Line 464... |
|
|
|
|
}
|
}
|
|
|
sub file_info_box {
|
sub file_info_box {
|
my($ipgen,$soc_state,$info)=@_;
|
my($ipgen,$info)=@_;
|
my $table=def_table(2,11,FALSE);
|
my $table=def_table(2,11,FALSE);
|
my $table1=def_table(1,11,FALSE);
|
my $table1=def_table(1,11,FALSE);
|
my $table2=def_table(1,11,FALSE);
|
my $table2=def_table(1,11,FALSE);
|
ip_file_box ($ipgen,$soc_state,$info,$table1,0);
|
ip_file_box ($ipgen,$info,$table1,0);
|
select_module($ipgen,$soc_state,$info,$table2,0);
|
select_module($ipgen,$info,$table2,0);
|
$table->attach_defaults($table1,0,11,0,1);
|
$table->attach_defaults($table1,0,11,0,1);
|
$table->attach_defaults($table2,0,11,1,2);
|
$table->attach_defaults($table2,0,11,1,2);
|
return $table;
|
return $table;
|
|
|
|
|
Line 475... |
Line 481... |
|
|
|
|
|
|
|
|
sub show_file_info{
|
sub show_file_info{
|
my($ipgen,$soc_state,$info,$refresh_ref)=@_;
|
my($ipgen,$info,$refresh_ref)=@_;
|
my $table = file_info_box($ipgen,$soc_state,$info,$info);
|
my $table = file_info_box($ipgen,$info,$info);
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
$scrolled_win->set_policy( "automatic", "never" );
|
$scrolled_win->set_policy( "automatic", "never" );
|
$scrolled_win->add_with_viewport($table);
|
$scrolled_win->add_with_viewport($table);
|
|
|
|
|
|
|
$$refresh_ref-> signal_connect("clicked" => sub{
|
$$refresh_ref-> signal_connect("clicked" => sub{
|
$table->destroy;
|
$table->destroy;
|
$table = file_info_box($ipgen,$soc_state,$info,$info);
|
$table = file_info_box($ipgen,$info,$info);
|
|
|
$scrolled_win->add_with_viewport($table);
|
$scrolled_win->add_with_viewport($table);
|
$table->show;
|
$table->show;
|
$scrolled_win->show_all;
|
$scrolled_win->show_all;
|
|
|
Line 503... |
Line 509... |
|
|
}
|
}
|
|
|
|
|
sub show_port_info{
|
sub show_port_info{
|
my($intfc,$ipgen,$soc_state,$info,$refresh_ref)=@_;
|
my($intfc,$ipgen,$info,$refresh_ref)=@_;
|
my $table = port_info_box($intfc,$ipgen,$soc_state,$info,$info);
|
my $table = port_info_box($intfc,$ipgen,$info,$info);
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
$scrolled_win->add_with_viewport($table);
|
$scrolled_win->add_with_viewport($table);
|
|
|
|
|
|
|
$$refresh_ref-> signal_connect("clicked" => sub{
|
$$refresh_ref-> signal_connect("clicked" => sub{
|
$table->destroy;
|
$table->destroy;
|
$table = port_info_box($intfc,$ipgen,$soc_state,$info,$info);
|
$table = port_info_box($intfc,$ipgen,$info,$info);
|
|
|
$scrolled_win->add_with_viewport($table);
|
$scrolled_win->add_with_viewport($table);
|
$table->show;
|
$table->show;
|
$scrolled_win->show_all;
|
$scrolled_win->show_all;
|
|
|
Line 530... |
Line 536... |
|
|
}
|
}
|
|
|
|
|
sub show_interface_info{
|
sub show_interface_info{
|
my($intfc,$ipgen,$soc_state,$info,$refresh_ref)=@_;
|
my($intfc,$ipgen,$info,$refresh_ref)=@_;
|
my $table = interface_info_box($intfc,$ipgen,$soc_state,$info,$info);
|
my $table = interface_info_box($intfc,$ipgen,$info,$info);
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
$scrolled_win->add_with_viewport($table);
|
$scrolled_win->add_with_viewport($table);
|
|
|
|
|
|
|
$$refresh_ref-> signal_connect("clicked" => sub{
|
$$refresh_ref-> signal_connect("clicked" => sub{
|
$table->destroy;
|
$table->destroy;
|
select(undef, undef, undef, 0.1); #wait 10 ms
|
select(undef, undef, undef, 0.1); #wait 10 ms
|
$table = interface_info_box($intfc,$ipgen,$soc_state,$info,$info);
|
$table = interface_info_box($intfc,$ipgen,$info,$info);
|
|
|
$scrolled_win->add_with_viewport($table);
|
$scrolled_win->add_with_viewport($table);
|
$table->show;
|
$table->show;
|
$scrolled_win->show_all;
|
$scrolled_win->show_all;
|
|
|
Line 567... |
Line 573... |
|
|
############
|
############
|
# get_parameter_setting
|
# get_parameter_setting
|
##########
|
##########
|
sub get_parameter_setting {
|
sub get_parameter_setting {
|
my ($ipgen,$soc_state,$info)=@_;
|
my ($ipgen,$info)=@_;
|
|
|
|
|
my $module = $ipgen->ipgen_get("module_name");
|
|
my $file= $ipgen->ipgen_get("file_name");
|
my $file= $ipgen->ipgen_get("file_name");
|
if (!defined $file) {
|
if (!defined $file) {
|
message_dialog("The input verilog file is empty");
|
message_dialog("The input verilog file is empty");
|
return;
|
return;
|
|
|
}
|
}
|
|
my $module = $ipgen->ipgen_get("module_name");
|
|
|
#my $titelbox=def_title_box(TRUE,5,("Parameter name","Deafult value","Widget type","Widget content","Global param Optional info",));
|
my($width,$hight)=max_win_size();
|
|
my $window = def_popwin_size(.85*$width,.5*$hight,"Define parameters detail");
|
|
|
|
|
|
|
|
|
my @widget_type_list=("Fixed","Entry","Combo-box","Spin-button");
|
my @widget_type_list=("Fixed","Entry","Combo-box","Spin-button");
|
my @param_type_list=("localparam-pass", "parameter-pass", "localparam-notpass","parameter-notpass");
|
my @param_type_list=("Parameter","Localparam","Don't include");
|
my $type_info="Define the parameter type:
|
my $type_info="Define the parameter type:
|
|
|
Fixed: The parameter is fixed and get the default value. Users can not see or change the parameter value.
|
Fixed: The parameter is fixed and get the default value. Users can not see or change the parameter value.
|
|
|
Entry: The parameter value is received via entry. The user can type anything.
|
Entry: The parameter value is received via entry. The user can type anything.
|
Line 598... |
Line 605... |
Spin-button: The parameter is numeric and will be obtained using spin button.";
|
Spin-button: The parameter is numeric and will be obtained using spin button.";
|
my $content_info='
|
my $content_info='
|
For Fixed and Entry leave it empty.
|
For Fixed and Entry leave it empty.
|
For Combo box define the parameters which must be shown in combo box as: "PAEAMETER1","PARAMETER2"...,"PARAMETERn".
|
For Combo box define the parameters which must be shown in combo box as: "PAEAMETER1","PARAMETER2"...,"PARAMETERn".
|
For Spin button define it as "minimum, maximum, step" e.g 0,10,1.';
|
For Spin button define it as "minimum, maximum, step" e.g 0,10,1.';
|
my $param_info='
|
my $param_info='Define how parameter is included in the top module containig this IP core.';
|
If checked, the parameter will be defined as parameter in SoC file too, otherwise it will be defined as localparam.';
|
|
|
|
my $redefine_info='
|
my $redefine_info='
|
If checked, the defined parameter/localparam in SoC will be passed to the IP core';
|
If checked, the defined parameter/localparam in SoC will be passed to the IP core';
|
|
|
#TABLE
|
#TABLE
|
Line 621... |
Line 627... |
$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){
|
$table->attach_defaults ($title[$col], $positions[$col], $positions[$col+1], 0, 1);$col++;
|
$table->attach ($title[$col], $positions[$col], $positions[$col+1], 0, 1,'expand','shrink',2,2); $col++;
|
|
|
}
|
}
|
|
|
|
|
|
|
my ($box,$window)=def_scrolled_window_box(1200,500,"Define parameters detail");
|
|
|
|
|
|
|
|
|
|
my @parameters=$ipgen->ipgen_get_all_parameters_list();
|
my @parameters=$ipgen->ipgen_get_all_parameters_list();
|
my @params_order= $ipgen->ipgen_get_list("parameters_order");
|
my @params_order= $ipgen->ipgen_get_list("parameters_order");
|
if((@params_order)) {@parameters=@params_order;}
|
if((@params_order)) {@parameters=@params_order;}
|
|
|
my $ok = def_image_button('icons/select.png','OK');
|
my $ok = def_image_button('icons/select.png','OK');
|
my $okbox=def_hbox(TRUE,0);
|
|
$okbox->pack_start($ok, FALSE, FALSE,0);
|
|
|
|
my ($b,$new_param)= def_h_labeled_entry("Add new parameter name:");
|
my ($b,$new_param)= def_h_labeled_entry("Add new parameter name:");
|
my $add = def_image_button('icons/plus.png','Add parameter');
|
my $add = def_image_button('icons/plus.png','Add parameter');
|
my $addbox=def_hbox(FALSE,0);
|
my $addbox=def_hbox(FALSE,0);
|
$addbox->pack_start($b,FALSE, FALSE,0);
|
$addbox->pack_start($b,FALSE, FALSE,0);
|
Line 652... |
Line 657... |
|
|
my $row=1;
|
my $row=1;
|
|
|
push(@parameters,"#new#");
|
push(@parameters,"#new#");
|
foreach my $p (@parameters) {
|
foreach my $p (@parameters) {
|
my ($saved_deafult,$saved_widget_type,$saved_content,$saved_info,$global_param,$redefine_param)= $ipgen->ipgen_get_parameter_detail($p);
|
my ($saved_deafult,$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_deafult,$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#"){
|
Line 669... |
Line 674... |
|
|
my $deafult_entry= gen_entry($saved_deafult);
|
my $deafult_entry= gen_entry($saved_deafult);
|
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);
|
my $check_param= Gtk2::CheckButton->new('Parameter');
|
|
$check_param->set_active($global_param) if(defined $global_param );
|
|
|
|
|
$vfile_param_type= "Don't include" if (!defined $vfile_param_type );
|
|
$vfile_param_type= "Parameter" if ($vfile_param_type eq 1);
|
|
$vfile_param_type= "Localparam" if ($vfile_param_type eq 0);
|
|
$pos=get_scolar_pos($vfile_param_type,@param_type_list);
|
|
my $check_param= gen_combo(\@param_type_list, $pos);
|
|
|
|
|
|
#$check_param->set_active($vfile_param_type) if(defined $vfile_param_type );
|
my $check_redefine= Gtk2::CheckButton->new('Redefine');
|
my $check_redefine= Gtk2::CheckButton->new('Redefine');
|
$check_redefine->set_active(1) ;
|
$check_redefine->set_active(1) ;
|
$check_redefine->set_active($redefine_param) if(defined $redefine_param );
|
$check_redefine->set_active($redefine_param) if(defined $redefine_param );
|
|
|
|
|
|
|
|
|
|
|
#my $check= Gtk2::CheckButton->new;
|
#my $check= Gtk2::CheckButton->new;
|
#$check->set_active($global_param) if(defined $global_param );
|
#$check->set_active($vfile_param_type) if(defined $vfile_param_type );
|
|
|
|
|
my $info=def_image_button("icons/addinfo.png");
|
my $info=def_image_button("icons/add_info.png");
|
#print "\$global_param =$global_param\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,$deafult_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_defaults ($t, $positions[$col], $positions[$col+1], $row, $row+1);$col++;
|
$table->attach ($t, $positions[$col], $positions[$col+1], $row, $row+1,'expand','shrink',2,2);$col++;
|
|
|
}
|
}
|
|
|
|
|
$info->signal_connect (clicked => sub{
|
$info->signal_connect (clicked => sub{
|
Line 705... |
Line 719... |
$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 $deafult=$deafult_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 $check_result=$check_param->get_active();
|
my $vfile_param_type=$check_param->get_active_text();
|
my $global_param=($check_result eq 1)? 1:0;
|
my $check_result=$check_redefine->get_active();
|
$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,$global_param,$redefine_param);
|
$ipgen->ipgen_add_parameter($p,$deafult,$type,$content,$saved_info,$vfile_param_type,$redefine_param);
|
}
|
}
|
});
|
});
|
$add_remove->signal_connect (clicked => sub{
|
$add_remove->signal_connect (clicked => sub{
|
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();
|
Line 721... |
Line 734... |
|
|
if( length($param) ){
|
if( length($param) ){
|
my $deafult=$deafult_entry->get_text();
|
my $deafult=$deafult_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 $check_result=$check_param->get_active();
|
my $vfile_param_type=$check_param->get_active_text();
|
my $global_param=($check_result eq 1)? 1:0;
|
my $check_result=$check_redefine->get_active();
|
$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,$global_param,$redefine_param);
|
$ipgen->ipgen_add_parameter($param,$deafult,$type,$content,$saved_info,$vfile_param_type,$redefine_param);
|
$ipgen->ipgen_push_parameters_order($param);
|
$ipgen->ipgen_push_parameters_order($param);
|
set_state($soc_state,"change_parameter",0);
|
set_gui_status($ipgen,"change_parameter",0);
|
$ok->clicked;
|
$ok->clicked;
|
#$window->destroy();
|
#$window->destroy();
|
}
|
}
|
|
|
} else { #remove the parameter
|
} else { #remove the parameter
|
$ipgen->ipgen_remove_parameter($p);
|
$ipgen->ipgen_remove_parameter($p);
|
$ipgen->ipgen_remove_parameters_order($p);
|
$ipgen->ipgen_remove_parameters_order($p);
|
set_state($soc_state,"change_parameter",0);
|
set_gui_status($ipgen,"change_parameter",0);
|
$ok->clicked;
|
$ok->clicked;
|
#$window->destroy();
|
#$window->destroy();
|
|
|
}
|
}
|
#my $param_name=$new_param->get_text();
|
#my $param_name=$new_param->get_text();
|
# if( length($param_name) ){
|
# if( length($param_name) ){
|
# print "$param_name\n";
|
# print "$param_name\n";
|
# $ipgen->ipgen_add_parameter($param_name,undef);
|
# $ipgen->ipgen_add_parameter($param_name,undef);
|
# set_state($soc_state,"change_parameter",0);
|
# set_gui_status($ipgen,"change_parameter",0);
|
# $window->destroy();
|
# $window->destroy();
|
|
|
});
|
});
|
|
|
|
|
|
|
$row++;
|
$row++;
|
}
|
}
|
$box->pack_start( $table, FALSE, FALSE, 3);
|
|
|
|
for (my $i=$row; $i<7;$i++){
|
|
my $temp=gen_label_in_center(' ');
|
|
$box->pack_start($temp, TRUE, FALSE,3);
|
|
}
|
|
|
|
$box->pack_start($okbox, TRUE, FALSE,3);
|
|
|
|
|
|
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
|
$scrolled_win->add_with_viewport($table);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$add->signal_connect (clicked => sub{
|
$add->signal_connect (clicked => sub{
|
my $param_name=$new_param->get_text();
|
my $param_name=$new_param->get_text();
|
if( length($param_name) ){
|
if( length($param_name) ){
|
#print "$param_name\n";
|
#print "$param_name\n";
|
$ipgen->ipgen_add_parameter($param_name,undef);
|
$ipgen->ipgen_add_parameter($param_name,undef);
|
set_state($soc_state,"change_parameter",0);
|
set_gui_status($ipgen,"change_parameter",0);
|
$window->destroy();
|
$window->destroy();
|
}
|
}
|
|
|
#/*******************************************************************************************************************************/
|
#/*******************************************************************************************************************************/
|
|
|
Line 781... |
Line 800... |
|
|
$window->destroy();
|
$window->destroy();
|
|
|
});
|
});
|
|
|
|
my $mtable = def_table(10, 1, FALSE);
|
|
$mtable->attach_defaults($scrolled_win,0,1,0,9);
|
|
$mtable->attach($ok,0,1,9,10,'expand','shrink',2,2);
|
|
|
|
$window->add ($mtable);
|
|
$window->show_all();
|
|
|
|
|
|
|
$window->show_all;
|
|
}
|
}
|
|
|
|
|
|
|
|
|
############
|
############
|
# get_def_setting
|
# get_def_setting
|
##########
|
##########
|
sub get_def_setting {
|
sub get_def_setting {
|
my ($ipgen,$soc_state,$info)=@_;
|
my ($ipgen,$info)=@_;
|
my $table = Gtk2::Table->new (15, 15, TRUE);
|
my $table = Gtk2::Table->new (15, 15, TRUE);
|
my $table2 = Gtk2::Table->new (15, 15, TRUE);
|
my $table2 = Gtk2::Table->new (15, 15, TRUE);
|
my $window=def_popwin_size(600,600,"Add definition file");
|
my($width,$hight)=max_win_size();
|
|
my $window = def_popwin_size(.7*$width,.7*$hight,"Add definition file");
|
my $ok=def_image_button("icons/select.png",' Ok ');
|
my $ok=def_image_button("icons/select.png",' Ok ');
|
my $scrwin= new Gtk2::ScrolledWindow (undef, undef);
|
my $scrwin= new Gtk2::ScrolledWindow (undef, undef);
|
$scrwin->set_policy( "automatic", "automatic" );
|
$scrwin->set_policy( "automatic", "automatic" );
|
$scrwin->add_with_viewport($table2);
|
$scrwin->add_with_viewport($table2);
|
|
|
my $label=gen_label_help("You ","Selecet the Verilog file containig the definitions.");
|
my $label=gen_label_help("You ","Selecet the Verilog file containig the definitions.");
|
my $brows=def_image_button("icons/browse.png",' Browse');
|
my $brows=def_image_button("icons/browse.png",' Browse');
|
$table->attach_defaults($label,0,10,0,1);
|
$table->attach_defaults($label,0,10,0,1);
|
$table->attach_defaults($brows,10,12,1,2);
|
$table->attach($brows,10,12,1,2,'expand','shrink',2,2);
|
$table->attach_defaults($scrwin,0,15,2,14);
|
$table->attach_defaults($scrwin,0,15,2,14);
|
$table->attach_defaults($ok,6,9,14,15);
|
$table->attach($ok,6,9,14,15,'expand','shrink',2,2);
|
|
|
$window->add($table);
|
$window->add($table);
|
$window->show_all;
|
$window->show_all;
|
|
|
|
|
Line 823... |
Line 847... |
###########
|
###########
|
# get description
|
# get description
|
#########
|
#########
|
|
|
sub get_Description{
|
sub get_Description{
|
my ($ipgen,$soc_state,$info)=@_;
|
my ($ipgen,$info)=@_;
|
my $description = $ipgen->ipgen_get("description");
|
my $description = $ipgen->ipgen_get("description");
|
my $table = Gtk2::Table->new (15, 15, TRUE);
|
my $table = Gtk2::Table->new (15, 15, FALSE);
|
my $window=def_popwin_size(500,500,"Add description");
|
my($width,$hight)=max_win_size();
|
|
my $window = def_popwin_size(.4*$width,.4*$hight, "Add description");
|
my ($scrwin,$text_view)=create_text();
|
my ($scrwin,$text_view)=create_text();
|
#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($ok,6,9,14,15,'expand','shrink',2,2);
|
my $text_buffer = $text_view->get_buffer;
|
my $text_buffer = $text_view->get_buffer;
|
if(defined $description) {$text_buffer->set_text($description)};
|
if(defined $description) {$text_buffer->set_text($description)};
|
|
|
$ok->signal_connect("clicked"=> sub {
|
$ok->signal_connect("clicked"=> sub {
|
$window->destroy;
|
$window->destroy;
|
Line 863... |
Line 888... |
|
|
sub gen_file_list{
|
sub gen_file_list{
|
my ($ipgen,$list_name,$window,$rename_file_en)=@_;
|
my ($ipgen,$list_name,$window,$rename_file_en)=@_;
|
|
|
|
|
my $table=def_table(10,10,TRUE);# my ($row,$col,$homogeneous)=@_;
|
my $table=def_table(10,10,FALSE);# my ($row,$col,$homogeneous)=@_;
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
my $ok=def_image_button("icons/select.png",' Ok ');
|
my $ok=def_image_button("icons/select.png",' Ok ');
|
|
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
$scrolled_win->add_with_viewport($table);
|
$scrolled_win->add_with_viewport($table);
|
$table->attach_defaults (gen_label_in_center("File path"), 0, 5 , 0, 1);
|
$table->attach (gen_label_in_center("File path"), 0, 5 , 0, 1,'expand','shrink',2,2);
|
$table->attach_defaults (gen_label_help("The target name can contain any of Global variables e.g \$IP\$.h","Copy as"), 5, 9 , 0, 1) if(defined $rename_file_en);
|
$table->attach (gen_label_help("The target name can contain any of Global variables e.g \$IP\$.h","Copy as"), 5, 9 , 0, 1,'expand','shrink',2,2) if(defined $rename_file_en);
|
my $col=0;
|
my $col=0;
|
my $row=1;
|
my $row=1;
|
my @files= $ipgen->ipgen_get_list($list_name); #@{$ref};
|
my @files= $ipgen->ipgen_get_list($list_name); #@{$ref};
|
my $file_num= scalar @files;
|
my $file_num= scalar @files;
|
foreach my $p(@files){
|
foreach my $p(@files){
|
my ($path,$rename)=split('frename_sep_t',$p);
|
my ($path,$rename)=split('frename_sep_t',$p);
|
my $entry=gen_entry($path);
|
my $entry=gen_entry($path);
|
my $entry2=gen_entry($rename) ;
|
my $entry2=gen_entry($rename) ;
|
my $remove=def_image_button("icons/cancel.png");
|
my $remove=def_image_button("icons/cancel.png");
|
$table->attach_defaults ($entry, 0, 5 , $row, $row+1);
|
$table->attach ($entry, 0, 5 , $row, $row+1,'fill','shrink',2,2);
|
$table->attach_defaults ($entry2, 5, 9 , $row, $row+1) if(defined $rename_file_en);
|
$table->attach ($entry2, 5, 9 , $row, $row+1,'fill','shrink',2,2) if(defined $rename_file_en);
|
$table->attach_defaults ($remove, 9,10 , $row, $row+1);
|
$table->attach ($remove, 9,10 , $row, $row+1,'expand','shrink',2,2);
|
$row++;
|
$row++;
|
$remove->signal_connect("clicked"=> sub {
|
$remove->signal_connect("clicked"=> sub {
|
my @saved_files=$ipgen->ipgen_get_list($list_name);
|
my @saved_files=$ipgen->ipgen_get_list($list_name);
|
@saved_files=remove_scolar_from_array(\@saved_files,$p);
|
@saved_files=remove_scolar_from_array(\@saved_files,$p);
|
$ipgen->ipgen_add($list_name,\@saved_files);
|
$ipgen->ipgen_add($list_name,\@saved_files);
|
Line 936... |
Line 961... |
|
|
|
|
|
|
sub get_param_info{
|
sub get_param_info{
|
my ($ipgen,$saved_info)=@_;
|
my ($ipgen,$saved_info)=@_;
|
my $table = Gtk2::Table->new (15, 15, TRUE);
|
my $table = Gtk2::Table->new (15, 15, FALSE);
|
my $window=def_popwin_size(500,500,"Add description");
|
my($width,$hight)=max_win_size();
|
|
my $window = def_popwin_size(.5*$width,.5*$hight,"Add description");
|
my ($scrwin,$text_view)=create_text();
|
my ($scrwin,$text_view)=create_text();
|
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($ok,6,9,14,15,'expand','shrink',2,2);
|
my $text_buffer = $text_view->get_buffer;
|
my $text_buffer = $text_view->get_buffer;
|
if(defined $$saved_info) {$text_buffer->set_text($$saved_info)};
|
if(defined $$saved_info) {$text_buffer->set_text($$saved_info)};
|
|
|
$ok->signal_connect("clicked"=> sub {
|
$ok->signal_connect("clicked"=> sub {
|
$window->destroy;
|
$window->destroy;
|
Line 963... |
Line 989... |
}
|
}
|
|
|
|
|
|
|
sub interface_info_box {
|
sub interface_info_box {
|
my($intfc,$ipgen,$soc_state,$info)=@_;
|
my($intfc,$ipgen,$info)=@_;
|
my $table=def_table(7,7,TRUE);
|
my $table=def_table(7,7,FALSE);
|
my @sokets=$ipgen->ipgen_list_sokets;
|
my @sokets=$ipgen->ipgen_list_sokets;
|
my @plugs=$ipgen->ipgen_list_plugs;
|
my @plugs=$ipgen->ipgen_list_plugs;
|
|
|
my @positions=(0,1,2,4,5,6,7);
|
my @positions=(0,1,2,4,5,6,7);
|
|
|
|
|
my $row=0;
|
my $row=0;
|
my $col=0;
|
my $col=0;
|
$table->attach_defaults (gen_label_in_center(" Interface name"), $positions[0], $positions[1], $row, $row+1);
|
$table->attach (gen_label_in_center(" Interface name"), $positions[0], $positions[1], $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults (gen_label_in_center("Type"), $positions[1], $positions[2], $row, $row+1);
|
$table->attach (gen_label_in_center("Type"), $positions[1], $positions[2], $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults (gen_label_in_left("Interface Num"), $positions[2], $positions[3], $row, $row+1);
|
$table->attach (gen_label_in_left("Interface Num"), $positions[2], $positions[3], $row, $row+1,'expand','shrink',2,2);
|
|
|
$row++;
|
$row++;
|
my @type_list=('plug','socket');
|
my @type_list=('plug','socket');
|
|
|
foreach my $p( @sokets){
|
foreach my $p( @sokets){
|
Line 989... |
Line 1015... |
my $combo_type=gen_combo(\@type_list,1);
|
my $combo_type=gen_combo(\@type_list,1);
|
my $remove= def_image_button('icons/cancel.png','Remove');
|
my $remove= def_image_button('icons/cancel.png','Remove');
|
my $name_setting=def_image_button('icons/setting.png');
|
my $name_setting=def_image_button('icons/setting.png');
|
$remove->signal_connect ('clicked'=> sub{
|
$remove->signal_connect ('clicked'=> sub{
|
$ipgen->ipgen_remove_socket($p);
|
$ipgen->ipgen_remove_socket($p);
|
set_state($soc_state,'intfc_changed',0);
|
set_gui_status($ipgen,'intfc_changed',0);
|
|
|
} );
|
} );
|
$name_setting->signal_connect ('clicked'=> sub{
|
$name_setting->signal_connect ('clicked'=> sub{
|
get_intfc_setting($ipgen,$soc_state,$p,'socket');
|
get_intfc_setting($ipgen,$p,'socket');
|
|
|
|
|
});
|
});
|
$combo_type ->signal_connect ('changed'=> sub{
|
$combo_type ->signal_connect ('changed'=> sub{
|
$ipgen->ipgen_remove_socket($p);
|
$ipgen->ipgen_remove_socket($p);
|
add_intfc_to_ip($intfc,$ipgen,$p,'plug',$info,$soc_state);
|
add_intfc_to_ip($intfc,$ipgen,$p,'plug',$info);
|
|
|
} );
|
} );
|
$table->attach_defaults ($remove, $positions[4], $positions[5], $row, $row+1);
|
$table->attach ($remove, $positions[4], $positions[5], $row, $row+1,'expand','shrink',2,2);
|
|
|
|
|
if ($type eq 'num'){
|
if ($type eq 'num'){
|
my ($type_box,$type_spin)=gen_spin_help ('Define the number of this interface in module', 1,1024,1);
|
my ($type_box,$type_spin)=gen_spin_help ('Define the number of this interface in module', 1,1024,1);
|
$type_box->pack_start($name_setting,FALSE,FALSE,0);
|
$type_box->pack_start($name_setting,FALSE,FALSE,0);
|
$type_spin->set_value($value);
|
$type_spin->set_value($value);
|
my $advance_button=def_image_button('icons/advance.png','separate');
|
my $advance_button=def_image_button('icons/advance.png','separate');
|
$table->attach_defaults ($type_box, $positions[2], $positions[3], $row, $row+1);
|
$table->attach ($type_box, $positions[2], $positions[3], $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($advance_button, $positions[3], $positions[4], $row, $row+1);
|
$table->attach ($advance_button, $positions[3], $positions[4], $row, $row+1,'expand','shrink',2,2);
|
$type_spin->signal_connect("value_changed"=>sub{
|
$type_spin->signal_connect("value_changed"=>sub{
|
my $wiget=shift;
|
my $wiget=shift;
|
my $num=$wiget->get_value_as_int();
|
my $num=$wiget->get_value_as_int();
|
$ipgen->ipgen_add_soket($p,'num',$num);
|
$ipgen->ipgen_add_soket($p,'num',$num);
|
set_state($soc_state,'intfc_changed',0);
|
set_gui_status($ipgen,'intfc_changed',0);
|
|
|
});
|
});
|
$advance_button->signal_connect("clicked"=>sub{
|
$advance_button->signal_connect("clicked"=>sub{
|
$ipgen->ipgen_add_soket($p,'param');
|
$ipgen->ipgen_add_soket($p,'param');
|
set_state($soc_state,'intfc_changed',0);
|
set_gui_status($ipgen,'intfc_changed',0);
|
|
|
});
|
});
|
|
|
}
|
}
|
else {
|
else {
|
Line 1034... |
Line 1062... |
$ipgen->ipgen_add_soket($p,'param',$parameters[0]);
|
$ipgen->ipgen_add_soket($p,'param',$parameters[0]);
|
}
|
}
|
my ($type_box,$type_combo)=gen_combo_help ('Define the parameter which determine the number of this interface in module',\@parameters,$pos);
|
my ($type_box,$type_combo)=gen_combo_help ('Define the parameter which determine the number of this interface in module',\@parameters,$pos);
|
$type_box->pack_start($name_setting,FALSE,FALSE,0);
|
$type_box->pack_start($name_setting,FALSE,FALSE,0);
|
my $advance_button=def_image_button('icons/advance.png','concatenate');
|
my $advance_button=def_image_button('icons/advance.png','concatenate');
|
$table->attach_defaults ($type_box, $positions[2], $positions[3], $row, $row+1);
|
$table->attach ($type_box, $positions[2], $positions[3], $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($advance_button, $positions[3], $positions[4], $row, $row+1);
|
$table->attach ($advance_button, $positions[3], $positions[4], $row, $row+1,'expand','shrink',2,2);
|
$type_combo->signal_connect("changed"=>sub{
|
$type_combo->signal_connect("changed"=>sub{
|
my $wiget=shift;
|
my $wiget=shift;
|
my $value=$wiget->get_active_text();
|
my $value=$wiget->get_active_text();
|
$ipgen->ipgen_add_soket($p,'param',$value);
|
$ipgen->ipgen_add_soket($p,'param',$value);
|
set_state($soc_state,'intfc_changed',0);
|
set_gui_status($ipgen,'intfc_changed',0);
|
|
|
});
|
});
|
$advance_button->signal_connect("clicked"=>sub{
|
$advance_button->signal_connect("clicked"=>sub{
|
$ipgen->ipgen_add_soket($p,'num',0);
|
$ipgen->ipgen_add_soket($p,'num',0);
|
set_state($soc_state,'intfc_changed',0);
|
set_gui_status($ipgen,'intfc_changed',0);
|
|
|
});
|
});
|
|
|
}
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
$table->attach_defaults ($label_name, $positions[0], $positions[1], $row, $row+1);
|
$table->attach ($label_name, $positions[0], $positions[1], $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($combo_type, $positions[1], $positions[2], $row, $row+1);
|
$table->attach ($combo_type, $positions[1], $positions[2], $row, $row+1,'expand','shrink',2,2);
|
|
|
|
|
|
|
|
|
$row++;
|
$row++;
|
Line 1072... |
Line 1100... |
my $label_name=gen_label_in_center($q);
|
my $label_name=gen_label_in_center($q);
|
my $combo_type=gen_combo(\@type_list,0);
|
my $combo_type=gen_combo(\@type_list,0);
|
my $remove= def_image_button('icons/cancel.png','Remove');
|
my $remove= def_image_button('icons/cancel.png','Remove');
|
my $name_setting=def_image_button('icons/setting.png');
|
my $name_setting=def_image_button('icons/setting.png');
|
|
|
$table->attach_defaults ($remove, $positions[4], $positions[5], $row, $row+1);
|
$table->attach ($remove, $positions[4], $positions[5], $row, $row+1,'expand','shrink',2,2);
|
$remove->signal_connect ('clicked'=> sub{
|
$remove->signal_connect ('clicked'=> sub{
|
$ipgen->ipgen_remove_plug($q);
|
$ipgen->ipgen_remove_plug($q);
|
set_state($soc_state,'intfc_changed',0);
|
set_gui_status($ipgen,'intfc_changed',0);
|
|
|
} );
|
} );
|
$name_setting->signal_connect ('clicked'=> sub{
|
$name_setting->signal_connect ('clicked'=> sub{
|
get_intfc_setting($ipgen,$soc_state,$q,'plug');
|
get_intfc_setting($ipgen,$q,'plug');
|
|
|
|
|
} );
|
} );
|
$combo_type ->signal_connect ('changed'=> sub{
|
$combo_type ->signal_connect ('changed'=> sub{
|
$ipgen->ipgen_remove_plug($q);
|
$ipgen->ipgen_remove_plug($q);
|
add_intfc_to_ip($intfc,$ipgen,$q,'socket',$info,$soc_state);
|
add_intfc_to_ip($intfc,$ipgen,$q,'socket',$info);
|
|
|
} );
|
} );
|
#my $range_entry=gen_entry($range);
|
#my $range_entry=gen_entry($range);
|
if ($type eq 'num'){
|
if ($type eq 'num'){
|
my ($type_box,$type_spin)=gen_spin_help ('Define the number of this interface in module', 1,1024,1);
|
my ($type_box,$type_spin)=gen_spin_help ('Define the number of this interface in module', 1,1024,1);
|
$type_box->pack_start($name_setting,FALSE,FALSE,0);
|
$type_box->pack_start($name_setting,FALSE,FALSE,0);
|
$type_spin->set_value($value);
|
$type_spin->set_value($value);
|
$table->attach_defaults ($type_box, $positions[2], $positions[3], $row, $row+1);
|
$table->attach ($type_box, $positions[2], $positions[3], $row, $row+1,'expand','shrink',2,2);
|
$type_spin->signal_connect("value_changed"=>sub{
|
$type_spin->signal_connect("value_changed"=>sub{
|
my $wiget=shift;
|
my $wiget=shift;
|
my $num=$wiget->get_value_as_int();
|
my $num=$wiget->get_value_as_int();
|
$ipgen->ipgen_add_plug($q,'num',$num);
|
$ipgen->ipgen_add_plug($q,'num',$num);
|
set_state($soc_state,'intfc_changed',0);
|
set_gui_status($ipgen,'intfc_changed',0);
|
|
|
});
|
});
|
|
|
}
|
}
|
$table->attach_defaults ($label_name, $positions[0], $positions[1], $row, $row+1);
|
$table->attach ($label_name, $positions[0], $positions[1], $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($combo_type, $positions[1], $positions[2], $row, $row+1);
|
$table->attach ($combo_type, $positions[1], $positions[2], $row, $row+1,'expand','shrink',2,2);
|
#$table->attach_defaults ($range_entry, 2, 4, $row, $row+1);
|
#$table->attach_defaults ($range_entry, 2, 4, $row, $row+1);
|
|
|
#wishbone address seting
|
#wishbone address seting
|
#print "$q eq 'wb_slave'\n";
|
#print "$q eq 'wb_slave'\n";
|
if($q eq 'wb_slave'){
|
if($q eq 'wb_slave'){
|
Line 1122... |
Line 1150... |
} );
|
} );
|
}else{
|
}else{
|
$addr= def_image_button('icons/select.png');
|
$addr= def_image_button('icons/select.png');
|
|
|
}
|
}
|
$table->attach_defaults ($addr, $positions[5], $positions[6], $row, $row+1);
|
$table->attach ($addr, $positions[5], $positions[6], $row, $row+1,'expand','shrink',2,2);
|
|
|
|
|
}
|
}
|
|
|
|
|
Line 1144... |
Line 1172... |
# get_intfc_setting
|
# get_intfc_setting
|
########
|
########
|
|
|
sub get_intfc_setting{
|
sub get_intfc_setting{
|
|
|
my ($ipgen,$soc_state,$intfc_name, $intfc_type)=@_;
|
my ($ipgen,$intfc_name, $intfc_type)=@_;
|
|
|
|
|
my $window = def_popwin_size(1000,500);
|
my($width,$hight)=max_win_size();
|
|
my $window = def_popwin_size(.7*$width,.7*$hight,"Interface parameter setting");
|
my $table=def_table(7,6,FALSE);
|
my $table=def_table(7,6,FALSE);
|
my $ok = def_image_button('icons/select.png','OK');
|
my $ok = def_image_button('icons/select.png','OK');
|
my $okbox=def_hbox(TRUE,0);
|
|
$okbox->pack_start($ok, FALSE, FALSE,0);
|
|
|
|
|
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
$scrolled_win->set_policy( "automatic", "automatic" );
|
$scrolled_win->add_with_viewport($table);
|
$scrolled_win->add_with_viewport($table);
|
|
|
#title
|
#title
|
my $lable1=gen_label_in_left("interface name");
|
my $lable1=gen_label_in_left("interface name");
|
$table->attach_defaults( $lable1,0,2,0,1);
|
$table->attach ( $lable1,0,2,0,1,'expand','shrink',2,2);
|
|
|
|
|
|
|
|
|
my ($type,$value);
|
my ($type,$value);
|
Line 1182... |
Line 1209... |
my $number=$i;
|
my $number=$i;
|
if($intfc_type eq 'plug') {$saved_name= $ipgen->ipgen_get_plug_name($intfc_name,$number);}
|
if($intfc_type eq 'plug') {$saved_name= $ipgen->ipgen_get_plug_name($intfc_name,$number);}
|
else {$saved_name= $ipgen->ipgen_get_socket_name($intfc_name,$number);}
|
else {$saved_name= $ipgen->ipgen_get_socket_name($intfc_name,$number);}
|
my $entry_name=gen_entry($saved_name);
|
my $entry_name=gen_entry($saved_name);
|
|
|
$table->attach_defaults($entry_name,0,2,$i+1,$i+2);
|
$table->attach($entry_name,0,2,$i+1,$i+2,'expand','shrink',2,2);
|
$ok->signal_connect('clicked'=>sub{
|
$ok->signal_connect('clicked'=>sub{
|
my $new_name=$entry_name->get_text();
|
my $new_name=$entry_name->get_text();
|
#print "my new name is: $new_name\n";
|
#print "my new name is: $new_name\n";
|
if($intfc_type eq 'plug'){ $ipgen->ipgen_set_plug_name($intfc_name,$number,$new_name); }
|
if($intfc_type eq 'plug'){ $ipgen->ipgen_set_plug_name($intfc_name,$number,$new_name); }
|
else { $ipgen->ipgen_set_socket_name($intfc_name,$number,$new_name);}
|
else { $ipgen->ipgen_set_socket_name($intfc_name,$number,$new_name);}
|
Line 1198... |
Line 1225... |
|
|
|
|
#wishbone addr
|
#wishbone addr
|
if($intfc_name eq 'wb_slave' && $intfc_type eq 'plug'){
|
if($intfc_name eq 'wb_slave' && $intfc_type eq 'plug'){
|
my $lable2=gen_label_in_center("address range: (start end name)");
|
my $lable2=gen_label_in_center("address range: (start end name)");
|
my $lable3=gen_label_in_center("block address width");
|
my $lable3=gen_label_help("This field defines the total memory_map address which is required by this module in byte. ( =2 ^ block_address_width).
|
|
You can define a fixed value or assign it to any of module parameter","block address width");
|
|
|
$table->attach_defaults( $lable2,2,5,0,1);
|
$table->attach ( $lable2,2,5,0,1,'expand','shrink',2,2);
|
$table->attach_defaults( $lable3,5,6,0,1);
|
$table->attach ( $lable3,5,6,0,1,'expand','shrink',2,2);
|
|
|
my $plug=$intfc_name;
|
my $plug=$intfc_name;
|
my $wb= wb_addr->wb_addr_new();
|
my $wb= wb_addr->wb_addr_new();
|
my @ip_names=$wb->wb_list_names();
|
my @ip_names=$wb->wb_list_names();
|
my @list;
|
my @list;
|
Line 1299... |
Line 1327... |
$size_lab=($in eq "Fixed" )? gen_label_in_left(metric_conversion($d). " Bytes"):gen_label_in_left(" ");
|
$size_lab=($in eq "Fixed" )? gen_label_in_left(metric_conversion($d). " Bytes"):gen_label_in_left(" ");
|
$sbox->pack_end($size_lab,FALSE,FALSE,3);
|
$sbox->pack_end($size_lab,FALSE,FALSE,3);
|
$sbox->show_all();
|
$sbox->show_all();
|
});
|
});
|
|
|
$table->attach_defaults($name_combo,2,5,$i+1,$i+2);
|
$table->attach ($name_combo,2,5,$i+1,$i+2 ,'expand','shrink',2,2);
|
$table->attach_defaults($sbox,5,6,$i+1,$i+2);
|
$table->attach ($sbox,5,6,$i+1,$i+2,'expand','shrink',2,2);
|
$ok->signal_connect('clicked'=>sub{
|
$ok->signal_connect('clicked'=>sub{
|
my $addr=$name_combo->get_active_text();
|
my $addr=$name_combo->get_active_text();
|
my $in=$comb->get_active_text();
|
my $in=$comb->get_active_text();
|
my $width=($in eq "Fixed" )? $widget->get_value_as_int(): $widget->get_active_text() ;
|
my $width=($in eq "Fixed" )? $widget->get_value_as_int(): $widget->get_active_text() ;
|
$ipgen->ipgen_save_wb_addr($plug,$num,$addr,$width);
|
$ipgen->ipgen_save_wb_addr($plug,$num,$addr,$width);
|
Line 1316... |
Line 1344... |
|
|
|
|
|
|
}
|
}
|
|
|
while($i<7){
|
|
$i++;
|
|
my $tmp=gen_label_in_left(' ');
|
|
$table->attach_defaults($tmp,5,6,$i,$i+1);
|
|
|
|
}
|
|
|
|
$i=($i<7)? 7:$i;
|
|
|
|
|
|
my $mtable = def_table(10, 1, TRUE);
|
my $mtable = def_table(10, 1, FALSE);
|
$mtable->attach_defaults($scrolled_win,0,1,0,9);
|
$mtable->attach_defaults($scrolled_win,0,1,0,9);
|
$mtable->attach_defaults($okbox,0,1,9,10);
|
$mtable->attach($ok,0,1,9,10,'expand','shrink',2,2);
|
|
|
$window->add ($mtable);
|
$window->add ($mtable);
|
$window->show_all();
|
$window->show_all();
|
|
|
|
|
|
|
|
|
$ok->signal_connect('clicked'=>sub{
|
$ok->signal_connect('clicked'=>sub{
|
$window->destroy;
|
$window->destroy;
|
set_state($soc_state,"interface_selected",1);
|
set_gui_status($ipgen,"interface_selected",1);
|
|
|
} );
|
} );
|
|
|
|
|
|
|
Line 1360... |
Line 1382... |
# add_intfc_to_ip
|
# add_intfc_to_ip
|
##############
|
##############
|
|
|
|
|
sub add_intfc_to_ip{
|
sub add_intfc_to_ip{
|
my ($intfc,$ipgen,$infc_name,$infc_type,$info,$soc_state)=@_;
|
my ($intfc,$ipgen,$infc_name,$infc_type,$info)=@_;
|
if($infc_type eq 'socket'){
|
if($infc_type eq 'socket'){
|
my ($connection_num,$connect_to)=$intfc->get_socket($infc_name);
|
my ($connection_num,$connect_to)=$intfc->get_socket($infc_name);
|
$ipgen->ipgen_add_soket($infc_name,'num',1,$connection_num);
|
$ipgen->ipgen_add_soket($infc_name,'num',1,$connection_num);
|
}
|
}
|
else { $ipgen->ipgen_add_plug($infc_name,'num',1);}
|
else { $ipgen->ipgen_add_plug($infc_name,'num',1);}
|
set_state($soc_state,"interface_selected",1);
|
set_gui_status($ipgen,"interface_selected",1);
|
|
|
}
|
}
|
|
|
|
|
#################
|
#################
|
Line 1449... |
Line 1471... |
if ($t eq $porttype){ push (@ports,$p);}
|
if ($t eq $porttype){ push (@ports,$p);}
|
}
|
}
|
|
|
}
|
}
|
else {
|
else {
|
@ports=('IO');
|
@ports=('IO','NC');
|
}
|
}
|
my $saved_intfc_port=$ipgen->ipgen_get_port_intfc_port($portname);
|
my $saved_intfc_port=$ipgen->ipgen_get_port_intfc_port($portname);
|
my $pos=(defined $saved_intfc_port ) ? get_scolar_pos( $saved_intfc_port,@ports) : undef;
|
my $pos=(defined $saved_intfc_port ) ? get_scolar_pos( $saved_intfc_port,@ports) : undef;
|
if (!defined $pos){
|
if (!defined $pos){
|
$pos=find_the_most_similar_position( $portname ,@ports);
|
$pos=find_the_most_similar_position( $portname ,@ports);
|
Line 1472... |
Line 1494... |
}
|
}
|
|
|
|
|
|
|
sub port_info_box {
|
sub port_info_box {
|
my($intfc,$ipgen,$soc_state,$info)=@_;
|
my($intfc,$ipgen,$info)=@_;
|
my $table=def_table(8,10,TRUE);
|
my $table=def_table(8,10,FALSE);
|
my @ports=$ipgen->ipgen_list_ports;
|
my @ports=$ipgen->ipgen_list_ports;
|
my $row=0;
|
my $row=0;
|
my ($name_ref,$ref)=get_list_of_all_interfaces($ipgen);
|
my ($name_ref,$ref)=get_list_of_all_interfaces($ipgen);
|
my @interfaces_name=@{$name_ref};
|
my @interfaces_name=@{$name_ref};
|
my @interfaces=@{$ref};
|
my @interfaces=@{$ref};
|
#print "@interfaces_name\n";
|
#print "@interfaces_name\n";
|
|
|
$table->attach_defaults (gen_label_in_left(" Type "), 0, 1, $row, $row+1);
|
$table->attach (gen_label_in_left(" Type "), 0, 1, $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults (gen_label_in_left(" Port name "), 1, 3, $row, $row+1);
|
$table->attach (gen_label_in_left(" Port name "), 1, 3, $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults (gen_label_in_left(" Interface name "), 3, 5, $row, $row+1);
|
$table->attach (gen_label_in_left(" Interface name "), 3, 5, $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults (gen_label_in_center(" Range "), 5, 7, $row, $row+1);
|
$table->attach (gen_label_in_center(" Interface port "), 5, 7, $row, $row+1,'fill','shrink',2,2);
|
$table->attach_defaults (gen_label_in_left(" Interface port "), 7, 9, $row, $row+1);
|
$table->attach (gen_label_in_left(" Port Range "), 7, 9, $row, $row+1,'expand','shrink',2,2);
|
$row++;
|
$row++;
|
#print @interfaces;
|
#print @interfaces;
|
my @ports_order=$ipgen->ipgen_get_ports_order();
|
my @ports_order=$ipgen->ipgen_get_ports_order();
|
if(scalar(@ports_order) >1 ){ @ports= @ports_order}
|
if(scalar(@ports_order) >1 ){ @ports= @ports_order}
|
|
|
Line 1497... |
Line 1519... |
|
|
|
|
foreach my $p( @ports){
|
foreach my $p( @ports){
|
my ($range,$type,$intfc_name,$intfc_port)=$ipgen->ipgen_get_port($p);
|
my ($range,$type,$intfc_name,$intfc_port)=$ipgen->ipgen_get_port($p);
|
#my $label_name=gen_label_in_left(" $p ");
|
#my $label_name=gen_label_in_left(" $p ");
|
my $name_entry=gen_entry($p);
|
my $name_entry=gen_label_in_left($p);
|
my $label_type=gen_label_in_left(" $type ");
|
my $label_type=gen_label_in_left(" $type ");
|
my $range_entry=gen_entry($range);
|
my $range_entry=gen_entry($range);
|
my $pos=(defined $intfc_name ) ? get_scolar_pos( $intfc_name,@interfaces) : 0;
|
my $pos=(defined $intfc_name ) ? get_scolar_pos( $intfc_name,@interfaces) : 0;
|
if (!defined $pos){
|
if (!defined $pos){
|
$pos=0;
|
$pos=0;
|
Line 1509... |
Line 1531... |
};
|
};
|
my $intfc_name_combo=gen_combo(\@interfaces_name,$pos);
|
my $intfc_name_combo=gen_combo(\@interfaces_name,$pos);
|
my $intfc_port_combo=gen_intfc_port_combo($intfc,$ipgen,$intfc_name,$type,$p);
|
my $intfc_port_combo=gen_intfc_port_combo($intfc,$ipgen,$intfc_name,$type,$p);
|
|
|
|
|
$table->attach_defaults ($label_type, 0, 1, $row, $row+1);
|
$table->attach ($label_type, 0, 1, $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($name_entry, 1, 3, $row, $row+1);
|
$table->attach ($name_entry, 1, 3, $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($intfc_name_combo,3, 5, $row, $row+1);
|
$table->attach ($intfc_name_combo,3, 5, $row, $row+1,'expand','shrink',2,2);
|
$table->attach_defaults ($range_entry, 5, 7, $row, $row+1);
|
$table->attach ($intfc_port_combo, 5, 7, $row, $row+1,'fill','shrink',2,2);
|
$table->attach_defaults ($intfc_port_combo,7, 9, $row, $row+1);
|
$table->attach ($range_entry ,7, 9, $row, $row+1,'fill','shrink',2,2);
|
|
|
$intfc_name_combo->signal_connect('changed'=>sub{
|
$intfc_name_combo->signal_connect('changed'=>sub{
|
my $intfc_name=$intfc_name_combo->get_active_text();
|
my $intfc_name=$intfc_name_combo->get_active_text();
|
my $pos= get_scolar_pos( $intfc_name,@interfaces_name);
|
my $pos= get_scolar_pos( $intfc_name,@interfaces_name);
|
#my($type,$name,$num)= split("[:\[ \\]]", $intfc_name);
|
#my($type,$name,$num)= split("[:\[ \\]]", $intfc_name);
|
#print "$type,$name,$num\n";
|
#print "$type,$name,$num\n";
|
$ipgen->ipgen_set_port_intfc_name($p,$interfaces[$pos]);
|
$ipgen->ipgen_set_port_intfc_name($p,$interfaces[$pos]);
|
set_state($soc_state,"interface_selected",1);
|
set_gui_status($ipgen,"interface_selected",1);
|
});
|
});
|
$range_entry->signal_connect('changed'=>sub{
|
$range_entry->signal_connect('changed'=>sub{
|
my $new_range=$range_entry->get_text();
|
my $new_range=$range_entry->get_text();
|
$ipgen->ipgen_add_port($p,$new_range,$type,$intfc_name,$intfc_port);
|
$ipgen->ipgen_add_port($p,$new_range,$type,$intfc_name,$intfc_port);
|
});
|
});
|
Line 1548... |
Line 1571... |
sub generate_ip{
|
sub generate_ip{
|
my $ipgen=shift;
|
my $ipgen=shift;
|
my $name=$ipgen->ipgen_get("module_name");
|
my $name=$ipgen->ipgen_get("module_name");
|
my $category=$ipgen->ipgen_get("category");
|
my $category=$ipgen->ipgen_get("category");
|
my $ip_name= $ipgen->ipgen_get("ip_name");
|
my $ip_name= $ipgen->ipgen_get("ip_name");
|
|
my $dir = Cwd::getcwd();
|
|
|
|
|
#check if name has been set
|
#check if name has been set
|
if(defined ($name) && defined ($category)){
|
if(defined ($name) && defined ($category)){
|
if (!defined $ip_name) {$ip_name= $name}
|
if (!defined $ip_name) {$ip_name= $name}
|
#check if any source file has been added for this ip
|
#check if any source file has been added for this ip
|
my @l=$ipgen->ipgen_get_list("hdl_files");
|
my @l=$ipgen->ipgen_get_list("hdl_files");
|
Line 1563... |
Line 1589... |
'yes-no', # which set of buttons?
|
'yes-no', # which set of buttons?
|
"No hdl library file has been set for this IP. Do you want to generate this IP?");
|
"No hdl library file has been set for this IP. Do you want to generate this IP?");
|
my $response = $dialog->run;
|
my $response = $dialog->run;
|
if ($response eq 'yes') {
|
if ($response eq 'yes') {
|
# Write
|
# Write
|
open(FILE, ">lib/ip/$ip_name.IP") || die "Can not open: $!";
|
mkpath("$dir/lib/ip/$category/",1,01777);
|
|
open(FILE, ">lib/ip/$category/$ip_name.IP") || die "Can not open: \">lib/ip/$category/$ip_name.IP\" $!";
|
|
print FILE perl_file_header("$ip_name.IP");
|
print FILE Data::Dumper->Dump([\%$ipgen],[$name]);
|
print FILE Data::Dumper->Dump([\%$ipgen],[$name]);
|
close(FILE) || die "Error closing file: $!";
|
close(FILE) || die "Error closing file: $!";
|
my $message="IP $ip_name has been generated successfully" ;
|
my $message="IP $ip_name has been generated successfully" ;
|
message_dialog($message);
|
message_dialog($message);
|
exec($^X, $0, @ARGV);# reset ProNoC to apply changes
|
exec($^X, $0, @ARGV);# reset ProNoC to apply changes
|
Line 1577... |
Line 1605... |
|
|
#$dialog->show_all;
|
#$dialog->show_all;
|
|
|
}else{
|
}else{
|
# Write
|
# Write
|
open(FILE, ">lib/ip/$ip_name.IP") || die "Can not open: $!";
|
mkpath("$dir/lib/ip/$category/",1,01777);
|
|
open(FILE, ">lib/ip/$category/$ip_name.IP") || die "Can not open: $!";
|
|
print FILE perl_file_header("$ip_name.IP");
|
print FILE Data::Dumper->Dump([\%$ipgen],[$name]);
|
print FILE Data::Dumper->Dump([\%$ipgen],[$name]);
|
close(FILE) || die "Error closing file: $!";
|
close(FILE) || die "Error closing file: $!";
|
my $message="IP $ip_name has been generated successfully" ;
|
my $message="IP $ip_name has been generated successfully" ;
|
message_dialog($message);
|
message_dialog($message);
|
exec($^X, $0, @ARGV);# reset ProNoC to apply changes
|
exec($^X, $0, @ARGV);# reset ProNoC to apply changes
|
Line 1606... |
Line 1636... |
#########
|
#########
|
# load_ip
|
# load_ip
|
########
|
########
|
|
|
sub load_ip{
|
sub load_ip{
|
my ($ipgen,$soc_state)=@_;
|
my ($ipgen)=@_;
|
my $file;
|
my $file;
|
my $dialog = Gtk2::FileChooserDialog->new(
|
my $dialog = Gtk2::FileChooserDialog->new(
|
'Select a File', undef,
|
'Select a File', undef,
|
'open',
|
'open',
|
'gtk-cancel' => 'cancel',
|
'gtk-cancel' => 'cancel',
|
Line 1628... |
Line 1658... |
if ( "ok" eq $dialog->run ) {
|
if ( "ok" eq $dialog->run ) {
|
$file = $dialog->get_filename;
|
$file = $dialog->get_filename;
|
my ($name,$path,$suffix) = fileparse("$file",qr"\..[^.]*$");
|
my ($name,$path,$suffix) = fileparse("$file",qr"\..[^.]*$");
|
if($suffix eq '.IP'){
|
if($suffix eq '.IP'){
|
$ipgen->ipgen_add("file_name",$file);
|
$ipgen->ipgen_add("file_name",$file);
|
set_state($soc_state,"load_file",0);
|
set_gui_status($ipgen,"load_file",0);
|
}
|
}
|
}
|
}
|
$dialog->destroy;
|
$dialog->destroy;
|
|
|
|
|
Line 1649... |
Line 1679... |
###########
|
###########
|
|
|
|
|
|
|
sub get_source_file{
|
sub get_source_file{
|
my($ipgen,$soc_state,$info,$page,$title,$dest,$page_info_ref)=@_;
|
my($ipgen,$info,$page,$title,$dest,$page_info_ref)=@_;
|
|
|
|
|
my $var_list='${parameter_name}: Verilog module parameter values.
|
my $var_list='${parameter_name}: Verilog module parameter values.
|
|
|
${BASE}: is the wishbone base addresse(s) and will be added during soc generation to system.h. If more than one slave wishbone bus are used define them as ${BASE0}, ${BASE1}... .
|
${CORE_ID} Each wishbone bus based SoC will have a unique CORE_ID that represents its location in NoC topology. CORE_ID=((y * number_of_nodes_in_x_ dimension) + x) where (x,y) are the node location in x and y axises. If the generated tile is used as top level module CORE_ID will take the default value of zero.
|
|
|
${IP}: is the peripheral device instance name.
|
${IP}: is the peripheral device instance name.
|
|
|
${CORE}: is the peripheral device module name.';
|
${CORE}: is the peripheral device module name.
|
|
|
|
${BASE}: is the wishbone base addresse(s) and will be added during soc generation to system.h. If more than one slave wishbone bus are used define them as ${BASE0}, ${BASE1}... .
|
|
'
|
|
;
|
my $var_help=gen_button_message($var_list,"icons/info.png","Global variables");
|
my $var_help=gen_button_message($var_list,"icons/info.png","Global variables");
|
|
|
my($width,$hight)=max_win_size();
|
my($width,$hight)=max_win_size();
|
my $window = def_popwin_size($width*2/3,$hight*2/3,$title);
|
my $window = def_popwin_size($width*2/3,$hight*2/3,$title);
|
|
|
my $notebook=source_notebook($ipgen,$soc_state,$info,$window,$page,$dest,$page_info_ref);
|
my $notebook=source_notebook($ipgen,$info,$window,$page,$dest,$page_info_ref);
|
my $table=def_table (15, 15, TRUE);
|
my $table=def_table (15, 15, FALSE);
|
|
|
|
|
$table->attach_defaults ($var_help, 5, 7, 0, 1);
|
$table->attach ($var_help, 5, 7, 0, 1,'expand','shrink',2,2);
|
$table->attach_defaults ($notebook , 0, 15, 1, 15);
|
$table->attach_defaults ($notebook , 0, 15, 1, 15);
|
|
|
$window->add($table);
|
$window->add($table);
|
$window->show_all;
|
$window->show_all;
|
return $window;
|
return $window;
|
Line 1682... |
Line 1716... |
##########
|
##########
|
# source_notebook
|
# source_notebook
|
##########
|
##########
|
|
|
sub source_notebook{
|
sub source_notebook{
|
my($ipgen,$soc_state,$info,$window,$page,$dest,$page_info_ref)=@_;
|
my($ipgen,$info,$window,$page,$dest,$page_info_ref)=@_;
|
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,$soc_state,$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,$soc_state,$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_generators");
|
$page_ref=get_file_content($ipgen,$soc_state,$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;
|
$notebook->set_current_page($page) if(defined $page);
|
$notebook->set_current_page($page) if(defined $page);
|
Line 1704... |
Line 1738... |
##########
|
##########
|
# get_file_folder
|
# get_file_folder
|
#########
|
#########
|
|
|
sub get_file_folder{
|
sub get_file_folder{
|
my ($ipgen,$soc_state,$info,$window,$page,$page_info_ref)=@_;
|
my ($ipgen,$info,$window,$page,$page_info_ref)=@_;
|
my %page_info=%{$page_info_ref};
|
my %page_info=%{$page_info_ref};
|
my @sw_dir = $ipgen->ipgen_get_list($page_info{$page}{filed_name});
|
my @sw_dir = $ipgen->ipgen_get_list($page_info{$page}{filed_name});
|
my $table = Gtk2::Table->new (15, 15, TRUE);
|
my $table = Gtk2::Table->new (15, 15, FALSE);
|
my $help=gen_label_help($page_info{$page}{help});
|
my $help=gen_label_help($page_info{$page}{help});
|
$table->attach_defaults($help,0,2,0,1);
|
$table->attach ($help,0,2,0,1,'expand','shrink',2,2);
|
my ($scrwin,$ok)=gen_file_list($ipgen,$page_info{$page}{filed_name},$window,$page_info{$page}{rename_file});
|
my ($scrwin,$ok)=gen_file_list($ipgen,$page_info{$page}{filed_name},$window,$page_info{$page}{rename_file});
|
|
|
my $label=gen_label_in_left("Selecet file(s):");
|
my $label=gen_label_in_left("Selecet file(s):");
|
my $brows=def_image_button("icons/browse.png",' Browse');
|
my $brows=def_image_button("icons/browse.png",' Browse');
|
$table->attach_defaults($label,2,4,0,1);
|
$table->attach ($label,2,4,0,1,'expand','shrink',2,2);
|
$table->attach_defaults($brows,4,6,0,1);
|
$table->attach($brows,4,6,0,1,'expand','shrink',2,2);
|
|
|
my $dir = Cwd::getcwd();
|
my $dir = Cwd::getcwd();
|
my $project_dir = abs_path("$dir/../../"); #mpsoc directory address
|
my $project_dir = abs_path("$dir/../../"); #mpsoc directory address
|
|
|
|
|
Line 1748... |
Line 1782... |
$p=$p.'frename_sep_t'.$name.$suffix if (defined $page_info{$page}{rename_file});
|
$p=$p.'frename_sep_t'.$name.$suffix if (defined $page_info{$page}{rename_file});
|
if(! grep (/^$p$/,@sw_dir)){push(@sw_dir,$p)};
|
if(! grep (/^$p$/,@sw_dir)){push(@sw_dir,$p)};
|
|
|
}
|
}
|
$ipgen->ipgen_add($page_info{$page}{filed_name},\@sw_dir);
|
$ipgen->ipgen_add($page_info{$page}{filed_name},\@sw_dir);
|
get_source_file($ipgen,$soc_state,$info,$page,"Add software file(s)","SW",$page_info_ref);
|
get_source_file($ipgen,$info,$page,"Add software file(s)","SW",$page_info_ref);
|
$window->destroy;
|
$window->destroy;
|
|
|
}
|
}
|
$dialog->destroy;
|
$dialog->destroy;
|
} );# # ,\$entry);
|
} );# # ,\$entry);
|
|
|
if($page_info{$page}{folder_en} eq 1){
|
if($page_info{$page}{folder_en} eq 1){
|
my $label2=gen_label_in_left("Selecet folder(s):");
|
my $label2=gen_label_in_left("Selecet folder(s):");
|
my $brows2=def_image_button("icons/browse.png",' Browse');
|
my $brows2=def_image_button("icons/browse.png",' Browse');
|
$table->attach_defaults($label2,7,9,0,1);
|
$table->attach($label2,7,9,0,1,'expand','shrink',2,2);
|
$table->attach_defaults($brows2,9,11,0,1);
|
$table->attach($brows2,9,11,0,1,'expand','shrink',2,2);
|
|
|
$brows2->signal_connect("clicked"=> sub {
|
$brows2->signal_connect("clicked"=> sub {
|
my @files;
|
my @files;
|
|
|
my $dialog = Gtk2::FileChooserDialog->new(
|
my $dialog = Gtk2::FileChooserDialog->new(
|
Line 1789... |
Line 1823... |
if(! grep (/^$p$/,@sw_dir)){push(@sw_dir,$p)};
|
if(! grep (/^$p$/,@sw_dir)){push(@sw_dir,$p)};
|
|
|
}
|
}
|
|
|
$ipgen->ipgen_add($page_info{$page}{filed_name},\@sw_dir);
|
$ipgen->ipgen_add($page_info{$page}{filed_name},\@sw_dir);
|
get_source_file($ipgen,$soc_state,$info,$page,"Add software file(s)","SW",$page_info_ref);
|
get_source_file($ipgen,$info,$page,"Add software file(s)","SW",$page_info_ref);
|
$window->destroy;
|
$window->destroy;
|
|
|
|
|
#$$entry_ref->set_text($file);
|
#$$entry_ref->set_text($file);
|
|
|
Line 1807... |
Line 1841... |
}
|
}
|
|
|
|
|
|
|
$table->attach_defaults($scrwin,0,15,1,14);
|
$table->attach_defaults($scrwin,0,15,1,14);
|
$table->attach_defaults($ok,6,9,14,15);
|
$table->attach($ok,6,9,14,15,'expand','shrink',2,2);
|
|
|
return ($table)
|
return ($table)
|
|
|
|
|
}
|
}
|
Line 1821... |
Line 1855... |
###########
|
###########
|
# get_file_content
|
# get_file_content
|
#########
|
#########
|
|
|
sub get_file_content{
|
sub get_file_content{
|
my ($ipgen,$soc_state,$info,$window,$page_info_ref)=@_;
|
my ($ipgen,$info,$window,$page_info_ref)=@_;
|
my %page_info=%{$page_info_ref};
|
my %page_info=%{$page_info_ref};
|
#my $hdr = $ipgen->ipgen_get_hdr();
|
#my $hdr = $ipgen->ipgen_get_hdr();
|
my $hdr = $ipgen-> ipgen_get($page_info{filed_name});
|
my $hdr = $ipgen-> ipgen_get($page_info{filed_name});
|
my $table = Gtk2::Table->new (14, 15, TRUE);
|
my $table = Gtk2::Table->new (14, 15, FALSE);
|
#my $window=def_popwin_size(600,600,"Add header file");
|
#my $window=def_popwin_size(600,600,"Add header file");
|
my ($scrwin,$text_view)=create_text();
|
my ($scrwin,$text_view)=create_text();
|
|
|
my $help=gen_label_help($page_info{help});
|
my $help=gen_label_help($page_info{help});
|
$table->attach_defaults($help,0,8,0,1);
|
$table->attach ($help,0,8,0,1,'expand','shrink',2,2);
|
$table->attach_defaults($scrwin,0,15,1,14);
|
$table->attach_defaults($scrwin,0,15,1,14);
|
my $text_buffer = $text_view->get_buffer;
|
my $text_buffer = $text_view->get_buffer;
|
if(defined $hdr) {$text_buffer->set_text($hdr)};
|
if(defined $hdr) {$text_buffer->set_text($hdr)};
|
|
|
my $ok=def_image_button("icons/select.png",' Save ');
|
my $ok=def_image_button("icons/select.png",' Save ');
|
Line 1843... |
Line 1877... |
$ipgen->ipgen_add($page_info{filed_name},$text);
|
$ipgen->ipgen_add($page_info{filed_name},$text);
|
$window->destroy;
|
$window->destroy;
|
|
|
});
|
});
|
|
|
$table->attach_defaults($ok,6,9,14,15);
|
$table->attach($ok,6,7,14,15,'expand','shrink',2,2);
|
return ($table);
|
return ($table);
|
|
|
}
|
}
|
|
|
|
|
Line 1868... |
Line 1902... |
############
|
############
|
# get_unused_intfc_ports_list
|
# get_unused_intfc_ports_list
|
###########
|
###########
|
|
|
sub get_unused_intfc_ports_list {
|
sub get_unused_intfc_ports_list {
|
my($intfc,$ipgen,$soc_state,$info)=@_;
|
my($intfc,$ipgen,$info)=@_;
|
my @ports=$ipgen->ipgen_list_ports;
|
my @ports=$ipgen->ipgen_list_ports;
|
my ($name_ref,$ref)=get_list_of_all_interfaces($ipgen);
|
my ($name_ref,$ref)=get_list_of_all_interfaces($ipgen);
|
my @interfaces_name=@{$name_ref};
|
my @interfaces_name=@{$name_ref};
|
my @interfaces=@{$ref};
|
my @interfaces=@{$ref};
|
$ipgen->ipgen_remove("unused");
|
$ipgen->ipgen_remove("unused");
|
Line 1886... |
Line 1920... |
|
|
}elsif($type eq 'plug'){
|
}elsif($type eq 'plug'){
|
@all_ports= $intfc->get_plug_port_list($name);
|
@all_ports= $intfc->get_plug_port_list($name);
|
}
|
}
|
foreach my $p(@all_ports){
|
foreach my $p(@all_ports){
|
my $r= check_intfc_port_exits($intfc,$ipgen,$soc_state,$info,$intfc_name,$p);
|
my $r= check_intfc_port_exits($intfc,$ipgen,$info,$intfc_name,$p);
|
if ($r eq "0"){
|
if ($r eq "0"){
|
$ipgen->ipgen_add_unused_intfc_port( $intfc_name,$p );
|
$ipgen->ipgen_add_unused_intfc_port( $intfc_name,$p );
|
}
|
}
|
|
|
}
|
}
|
|
|
}
|
}
|
}
|
}
|
|
|
sub check_intfc_port_exits{
|
sub check_intfc_port_exits{
|
my($intfc,$ipgen,$soc_state,$info,$intfc_name,$intfc_port)=@_;
|
my($intfc,$ipgen,$info,$intfc_name,$intfc_port)=@_;
|
my @ports=$ipgen->ipgen_list_ports;
|
my @ports=$ipgen->ipgen_list_ports;
|
|
|
|
|
my $result="0";
|
my $result="0";
|
foreach my $p( @ports){
|
foreach my $p( @ports){
|
Line 1941... |
Line 1975... |
############
|
############
|
sub ipgen_main{
|
sub ipgen_main{
|
my $ipgen=shift;
|
my $ipgen=shift;
|
my $intfc=interface->interface_new();
|
my $intfc=interface->interface_new();
|
if(!defined $ipgen) { $ipgen=ip_gen->ip_gen_new();}
|
if(!defined $ipgen) { $ipgen=ip_gen->ip_gen_new();}
|
#my $ipgen = eval { do 'lib/ip/wishbone_bus.IP' };
|
set_gui_status($ipgen,"ideal",0);
|
my $soc_state= def_state("ideal");
|
|
# main window
|
|
#my $window = def_win_size(1000,800,"Top");
|
|
# The main table containg the lib tree, selected modules and info section
|
# The main table containg the lib tree, selected modules and info section
|
my $main_table = def_table (15, 12, FALSE);
|
my $main_table = def_table (15, 12, FALSE);
|
|
|
# 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_text();
|
|
|
|
|
my $refresh_dev_win = Gtk2::Button->new_from_stock('ref');
|
my $refresh_dev_win = 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 $genbox=def_hbox(TRUE,5);
|
|
$genbox->pack_start($generate, FALSE, FALSE,3);
|
|
|
|
# A tree view for holding a library
|
# A tree view for holding a library
|
my $tree_box = create_interface_tree ($info,$intfc,$ipgen,$soc_state);
|
my $tree_box = create_interface_tree ($info,$intfc,$ipgen);
|
|
|
|
|
my $file_info=show_file_info($ipgen,$soc_state,$info,\$refresh_dev_win);
|
my $file_info=show_file_info($ipgen,$info,\$refresh_dev_win);
|
my $port_info=show_port_info($intfc,$ipgen,$soc_state,$info,\$refresh_dev_win);
|
my $port_info=show_port_info($intfc,$ipgen,$info,\$refresh_dev_win);
|
my $intfc_info=show_interface_info($intfc,$ipgen,$soc_state,$info,\$refresh_dev_win);
|
my $intfc_info=show_interface_info($intfc,$ipgen,$info,\$refresh_dev_win);
|
|
|
|
|
my $open = def_image_button('icons/browse.png','Load IP');
|
my $open = def_image_button('icons/browse.png','Load IP');
|
my $openbox=def_hbox(TRUE,0);
|
|
$openbox->pack_start($open, FALSE, FALSE,0);
|
|
|
|
$main_table->set_row_spacings (4);
|
$main_table->set_row_spacings (4);
|
$main_table->set_col_spacings (1);
|
$main_table->set_col_spacings (1);
|
|
|
#my $device_win=show_active_dev($soc,$lib,$infc,$soc_state,\$refresh_dev_win,$info);
|
#my $device_win=show_active_dev($soc,$lib,$infc,\$refresh_dev_win,$info);
|
|
|
|
|
#$table->attach_defaults ($event_box, $col, $col+1, $row, $row+1);
|
#$table->attach_defaults ($event_box, $col, $col+1, $row, $row+1);
|
$main_table->attach_defaults ($tree_box , 0, 2, 0, 13);
|
$main_table->attach_defaults ($tree_box , 0, 2, 0, 13);
|
$main_table->attach_defaults ($file_info , 2, 12, 0, 2);
|
$main_table->attach_defaults ($file_info , 2, 12, 0, 2);
|
$main_table->attach_defaults ($intfc_info , 2, 12, 2, 7);
|
$main_table->attach_defaults ($intfc_info , 2, 12, 2, 6);
|
|
|
$main_table->attach_defaults ($port_info , 2, 12, 7,13);
|
$main_table->attach_defaults ($port_info , 2, 12, 6,13);
|
$main_table->attach_defaults ($infobox , 0, 12, 13,14);
|
$main_table->attach_defaults ($infobox , 0, 12, 13,14);
|
$main_table->attach_defaults ($genbox, 6, 8, 14,15);
|
$main_table->attach ($generate, 6, 8, 14,15,'expand','shrink',2,2);
|
$main_table->attach_defaults ($openbox,0, 1, 14,15);
|
$main_table->attach ($open,0, 1, 14,15,'expand','shrink',2,2);
|
|
|
#check soc status every 0.5 second. referesh device table if there is any changes
|
#check soc status every 0.5 second. referesh device table if there is any changes
|
Glib::Timeout->add (100, sub{
|
Glib::Timeout->add (100, sub{
|
|
|
my ($state,$timeout)= get_state($soc_state);
|
my ($state,$timeout)= get_gui_status($ipgen);
|
if($state eq "load_file"){
|
if($state eq "load_file"){
|
my $file=$ipgen->ipgen_get("file_name");
|
my $file=$ipgen->ipgen_get("file_name");
|
my $pp= eval { do $file };
|
my $pp= eval { do $file };
|
clone_obj($ipgen,$pp);
|
clone_obj($ipgen,$pp);
|
|
|
|
|
set_state($soc_state,"ref",1);
|
set_gui_status($ipgen,"ref",1);
|
|
|
|
|
}elsif ($timeout>0){
|
}elsif ($timeout>0){
|
$timeout--;
|
$timeout--;
|
set_state($soc_state,$state,$timeout);
|
set_gui_status($ipgen,$state,$timeout);
|
}
|
}
|
elsif( $state eq "change_parameter" ){
|
elsif( $state eq "change_parameter" ){
|
get_parameter_setting($ipgen,$soc_state,$info);
|
get_parameter_setting($ipgen,$info);
|
set_state($soc_state,"ideal",0);
|
set_gui_status($ipgen,"ideal",0);
|
|
|
|
|
|
|
}
|
}
|
elsif( $state ne "ideal" ){
|
elsif( $state ne "ideal" ){
|
$refresh_dev_win->clicked;
|
$refresh_dev_win->clicked;
|
set_state($soc_state,"ideal",0);
|
set_gui_status($ipgen,"ideal",0);
|
|
|
|
|
}
|
}
|
return TRUE;
|
return TRUE;
|
|
|
} );
|
} );
|
$open-> signal_connect("clicked" => sub{
|
$open-> signal_connect("clicked" => sub{
|
load_ip($ipgen,$soc_state);
|
load_ip($ipgen);
|
|
|
});
|
});
|
|
|
$generate-> signal_connect("clicked" => sub{
|
$generate-> signal_connect("clicked" => sub{
|
get_unused_intfc_ports_list ($intfc,$ipgen,$soc_state,$info);
|
get_unused_intfc_ports_list ($intfc,$ipgen,$info);
|
generate_ip($ipgen);
|
generate_ip($ipgen);
|
|
|
$refresh_dev_win->clicked;
|
$refresh_dev_win->clicked;
|
|
|
});
|
});
|