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

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk/mpsoc/perl_gui
    from Rev 39 to Rev 41
    Reverse comparison

Rev 39 → Rev 41

/ProNoC.pl
26,19 → 26,52
use File::Basename;
 
 
our $VERSION = '1.8.0';
our $VERSION = '1.8.1';
 
sub main{
# check if envirement variables are defined
my $project_dir = get_project_dir(); #mpsoc dir addr
my $paths_file= "$project_dir/mpsoc/perl_gui/lib/Paths";
 
if (-f $paths_file){#} && defined $ENV{PRONOC_WORK} ) {
my $paths= do $paths_file;
main_window();
}
else{
setting(1);
}
}
 
sub set_path_env{
my $project_dir = get_project_dir(); #mpsoc dir addr
my $paths_file= "$project_dir/mpsoc/perl_gui/lib/Paths";
my $paths= do $paths_file;
 
my $pronoc_work = $paths->object_get_attribute("PATH","PRONOC_WORK");
my $quartus = $paths->object_get_attribute("PATH","QUARTUS_BIN");
my $modelsim = $paths->object_get_attribute("PATH","MODELSIM_BIN");
 
my($width,$hight)=max_win_size();
set_defualt_font_size();
$ENV{'PRONOC_WORK'}= $pronoc_work if( defined $pronoc_work);
$ENV{'QUARTUS_BIN'}= $quartus if( defined $quartus);
$ENV{'MODELSIM_BIN'}= $modelsim if( defined $modelsim);
}
 
 
# check if envirement variables are defined
if ( !defined $ENV{PRONOC_WORK} || !defined $ENV{QUARTUS_BIN}) {
 
sub main_window{
set_path_env();
 
 
my($width,$hight)=max_win_size();
set_defualt_font_size();
 
 
 
 
if ( !defined $ENV{PRONOC_WORK} ) {
my $message;
if ( !defined $ENV{PRONOC_WORK}) {
my $dir = Cwd::getcwd();
50,9 → 83,9
 
 
$message= $message."Warning: QUARTUS_BIN environment variable has not been set. It is required only for working with NoC emulator." if(!defined $ENV{QUARTUS_BIN});
#$message= $message."Warning: QUARTUS_BIN environment variable has not been set. It is required only for working with NoC emulator." if(!defined $ENV{QUARTUS_BIN});
$message= $message."\n\nPlease add aformentioned variables to ~\.bashrc file e.g: export PRONOC_WORK=[path_to]/mpsoc_work.";
#$message= $message."\n\nPlease add aformentioned variables to ~\.bashrc file e.g: export PRONOC_WORK=[path_to]/mpsoc_work.";
message_dialog("$message");
}
71,6 → 104,7
 
my @menu_items = (
[ "/_File", undef, undef, 0, "<Branch>" ],
[ "/File/_Setting", "<control>O", sub { setting(0); }, 0, undef ],
[ "/File/_Quit", "<control>Q", sub { Gtk2->main_quit }, 0, "<StockItem>", 'gtk-quit' ],
[ "/_View", undef, undef, 0, "<Branch>" ],
[ "/_View/_ProNoC System Generator", undef, sub{ open_page($notebook,$noteref,$table,'Generator'); } , 0, undef ],
227,8 → 261,92
 
}
 
sub setting{
my $reset=shift;
my $project_dir = get_project_dir(); #mpsoc dir addr
my $paths_file= "$project_dir/mpsoc/perl_gui/lib/Paths";
 
__PACKAGE__->mk_accessors(qw{
PRONOC_WORK
});
my $self;
if (-f $paths_file ){
$self= do $paths_file;
}else{
$self = __PACKAGE__->new();
}
my $table=def_table(10,10,FALSE);
my $set_win=def_popwin_size(40,80,"Configuration setting",'percent');
my $scrolled_win = new Gtk2::ScrolledWindow (undef, undef);
$scrolled_win->set_policy( "automatic", "automatic" );
$scrolled_win->add_with_viewport($table);
my $row=0; my $col=0;
#title
my $title=gen_label_in_center("setting");
$table->attach ($title , 0, 10, $row, $row+1,'expand','shrink',2,2); $row++;
my $separator = Gtk2::HSeparator->new;
$table->attach ($separator , 0, 10 , $row, $row+1,'fill','fill',2,2); $row++;
 
my @paths = (
{ label=>"PRONOC_WORK", param_name=>"PRONOC_WORK", type=>"DIR_path", default_val=>"$project_dir/mpsoc_work", content=>undef, info=>"Define the working directory where the projects' files will be created", param_parent=>'PATH',ref_delay=>undef },
{ label=>"QUARTUS_BIN", param_name=>"QUARTUS_BIN", type=>"DIR_path", default_val=>undef, content=>undef, info=>"Define the path to QuartusII compiler bin directory. Setting of this variable is optional and is needed if you are going to use Altera FPGAs for implementation or emulation", param_parent=>'PATH',ref_delay=>undef },
{ label=>"MODELSIM_BIN", param_name=>"MODELSIM_BIN", type=>"DIR_path", default_val=>undef, content=>undef, info=>"Define the path to Modelsim simulator bin directory. Setting of this variable is optional and is needed if you have installed Modelsim simulator and you want ProNoC to auto-generate the
simulation models using Modelsim software", param_parent=>'PATH',ref_delay=>undef },
);
 
 
foreach my $d (@paths) {
#$mpsoc,$name,$param, $default,$type,$content,$info, $table,$row,$column,$show,$attribut1,$ref_delay,$new_status,$loc
($row,$col)=add_param_widget ($self, $d->{label}, $d->{param_name}, $d->{default_val}, $d->{type}, $d->{content}, $d->{info}, $table,$row,$col,1, $d->{param_parent}, $d->{ref_delay},undef,"vertical");
}
 
 
my $ok = def_image_button('icons/select.png','OK');
my $mtable = def_table(10, 1, TRUE);
 
$mtable->attach_defaults($scrolled_win,0,1,0,9);
$mtable-> attach ($ok , 0, 1, 9, 10,'expand','shrink',2,2);
$set_win->add ($mtable);
$set_win->show_all();
my $old_pronoc_work = $self->object_get_attribute("PATH","PRONOC_WORK");
my $old_quartus = $self->object_get_attribute("PATH","QUARTUS_BIN");
my $old_modelsim = $self->object_get_attribute("PATH","MODELSIM_BIN");
$ok->signal_connect("clicked"=> sub{
#save setting
open(FILE, ">$paths_file") || die "Can not open: $!";
print FILE perl_file_header("Paths");
print FILE Data::Dumper->Dump([\%$self],['setting']);
close(FILE) || die "Error closing file: $!";
my $pronoc_work = $self->object_get_attribute("PATH","PRONOC_WORK");
my $quartus = $self->object_get_attribute("PATH","QUARTUS_BIN");
my $modelsim = $self->object_get_attribute("PATH","MODELSIM_BIN");
make_undef_as_string(\$old_pronoc_work,\$old_quartus,\$old_modelsim,\$pronoc_work,\$quartus,\$modelsim);
append_text_to_file ("$ENV{HOME}/.bashrc", "\nexport PRONOC_WORK=$pronoc_work\n") if(($old_pronoc_work ne $pronoc_work) || !defined $ENV{PRONOC_WORK}) ;
append_text_to_file ("$ENV{HOME}/.bashrc", "export QUARTUS_BIN=$quartus\n") if($old_quartus ne $quartus) ;
append_text_to_file ("$ENV{HOME}/.bashrc", "export MODELSIM_BIN=$modelsim\n") if($old_modelsim ne $modelsim) ;
set_path_env();
if(($old_pronoc_work ne $pronoc_work) || $old_quartus ne $quartus ||$old_modelsim ne $modelsim){
 
}
 
my ($file_path,$text)=@_;
$set_win->destroy;
main_window() if($reset);
 
});
}
 
sub generate_main_notebook {
my $mode =shift;
/lib/perl/emulate_ram_gen.pl
30,8 → 30,8
use constant PROBE_ST => 0x2;
use constant SOURCE_ST => 0x1;
use constant BYPAS_ST => 0x0;
use constant RAM_BIN_FILE => "$ENV{'PRONOC_WORK'}/emulate/emulate_ram.bin";
use constant RAM_SIM_FILE => "$ENV{'PRONOC_WORK'}/emulate/ram";
#use constant RAM_BIN_FILE => "$ENV{'PRONOC_WORK'}/emulate/emulate_ram.bin";
#use constant RAM_SIM_FILE => "$ENV{'PRONOC_WORK'}/emulate/ram";
 
 
230,7 → 230,7
my $ram;
if(SIM_RAM_GEN){
my $ext= sprintf("%02u.txt",$num);
open( $ram, '>', RAM_SIM_FILE.$ext) || die "Can not create: \">lib/emulate/emulate_ram.bin\" $!";
open( $ram, '>', "$ENV{'PRONOC_WORK'}/emulate/ram".$ext) || die "Can not create: \"$ENV{'PRONOC_WORK'}/emulate/ram.$ext\" $!";
}
for ($line_num= 0; $line_num<RAM_SIZE; $line_num++ ) {
my ($value_s,$value_l)=gen_synthetic_traffic_ram_line ($emulate, $x, $y, $sample, $ratio ,$line_num,$rnd);
287,8 → 287,8
if ( $xn <2 || $xn >16 ){ add_info($info,"programe_pck_gens:invalid X value: ($xn). should be between 2 and 16 \n"); help(); return 0;}
if ( $yn <2 || $yn >16 ){ add_info($info,"programe_pck_gens:invalid Y value:($yn). should be between 2 and 16 \n"); help(); return 0;}
#open file pointer
#open(my $file, RAM_BIN_FILE) || die "Can not create: \">lib/emulate/emulate_ram.bin\" $!";
open(my $file, '>', RAM_BIN_FILE) || die "Can not create: \">lib/emulate/emulate_ram.bin\" $!";
#open(my $file, '>', RAM_BIN_FILE) || die "Can not create: \">lib/emulate/emulate_ram.bin\" $!";
open(my $file, '>', "$ENV{'PRONOC_WORK'}/emulate/emulate_ram.bin") || die "Can not create: \"$ENV{'PRONOC_WORK'}/emulate/emulate_ram.bin\" $!";
#generate each node ram data
for (my $y=0; $y<$yn; $y=$y+1){
323,7 → 323,7
 
#programe packet generators rams
my $cmd= "sh $jtag_intfc \"-n ".JTAG_RAM_INDEX." -w 8 -i ".RAM_BIN_FILE." -c\" ";
my $cmd= "sh $jtag_intfc \"-n ".JTAG_RAM_INDEX." -w 8 -i $ENV{'PRONOC_WORK'}/emulate/emulate_ram.bin -c\" ";
#my ($result,$exit) = run_cmd_in_back_ground_get_stdout($cmd);
return 0 if(run_cmd_update_info ($cmd,$info));
/lib/perl/mpsoc_gen.pl
1782,7 → 1782,7
 
$make -> signal_connect("clicked" => sub{
$app->do_save();
apend_to_textview($tview,' ');
append_to_textview($tview,' ');
run_make_file($sw,$tview);
 
});
/lib/perl/temp.pl
3,7 → 3,90
use strict;
use warnings;
use Gtk2;
use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep clock_gettime clock_getres clock_nanosleep clock stat );
use Proc::Background;
use IO::CaptureOutput qw(capture qxx qxy);
 
my $scalar = "a1b.2";
$scalar =~ s/\D//g;
print "\n $scalar \n";
$ENV{TEMP}="ALIREZA";
 
 
my $cmd = "xterm -e sh t.sh";
my ($stdout,$exit)=run_cmd_in_back_ground_get_stdout( $cmd);
 
 
 
##########
# run external commands
##########
 
sub run_cmd_in_back_ground
{
my $command = shift;
#print "\t$command\n";
### Start running the Background Job:
my $proc = Proc::Background->new($command);
my $PID = $proc->pid;
my $start_time = $proc->start_time;
my $alive = $proc->alive;
 
### While $alive is NOT '0', then keep checking till it is...
# *When $alive is '0', it has finished executing.
while($alive ne 0)
{
$alive = $proc->alive;
 
# This while loop will cause Gtk2 to conti processing events, if
# there are events pending... *which there are...
while (Gtk2->events_pending) {
Gtk2->main_iteration;
}
Gtk2::Gdk->flush;
 
usleep(1000);
}
my $end_time = $proc->end_time;
# print "*Command Completed at $end_time, with PID = $PID\n\n";
 
# Since the while loop has exited, the BG job has finished running:
# so close the pop-up window...
# $popup_window->hide;
 
# Get the RETCODE from the Background Job using the 'wait' method
my $retcode = $proc->wait;
$retcode /= 256;
 
print "\t*RETCODE == $retcode\n\n";
Gtk2::Gdk->flush;
### Check if the RETCODE returned with an Error:
if ($retcode ne 0) {
print "Error: The Background Job ($command) returned with an Error...!\n";
return 1;
} else {
#print "Success: The Background Job Completed Successfully...!\n";
return 0;
}
}
 
 
 
sub run_cmd_in_back_ground_get_stdout
{
my $cmd=shift;
my $exit;
my ($stdout, $stderr);
capture { $exit=run_cmd_in_back_ground($cmd) } \$stdout, \$stderr;
return ($stdout,$exit,$stderr);
}
 
 
 
 
 
 
 
#system ("sh t.sh");
/lib/perl/widget.pl
953,7 → 953,7
 
sub append_text_to_file {
my ($file_path,$text)=@_;
open(my $fd, ">>$file_path");
open(my $fd, ">>$file_path") or die "could not open $file_path: $!";
print $fd $text;
close $fd;
}
1264,10 → 1264,16
 
}
 
sub get_project_dir{ #mpsoc directory address
my $dir = Cwd::getcwd();
my $project_dir = abs_path("$dir/../../");
return $project_dir;
}
 
 
sub remove_project_dir_from_addr{
my $file=shift;
my $dir = Cwd::getcwd();
my $project_dir = abs_path("$dir/../../"); #mpsoc directory address
my $file=shift;
my $project_dir = get_project_dir();
$file =~ s/$project_dir//;
return $file;
}
1274,8 → 1280,7
 
sub add_project_dir_to_addr{
my $file=shift;
my $dir = Cwd::getcwd();
my $project_dir = abs_path("$dir/../../"); #mpsoc directory address
my $project_dir = get_project_dir();
return $file if(-f $file );
return "$project_dir/$file";
1914,4 → 1919,12
}
 
 
sub make_undef_as_string {
foreach my $p (@_){
$$p= 'undef' if (! defined $$p);
}
}
 
 
1
/lib/soc/tutorial.SOC
10,112 → 10,161
################################################################################
 
$soc = bless( {
'instance_order' => [
'clk_source0',
'wishbone_bus0',
'gpo0',
'mor1kx0',
'timer0',
'single_port_ram0',
'jtag_uart0'
],
'compile_pin_range_hsb' => {
'led_port_o' => '3'
},
'clk_source0' => {
'version' => 0
},
'compile_pin_pos' => {
'source_clk_in' => [
4,
0
],
'source_reset_in' => [
6,
0
],
'led_port_o' => [
3,
0
],
'cpu_cpu_en' => [
2,
0
],
'led_port_o' => [
3,
0
]
'source_reset_in' => [
6,
0
]
},
'compile_pin_range_lsb' => {
'source_reset_in' => '0',
'led_port_o' => '0'
},
'compile_pin' => {
'cpu_cpu_en' => '*VCC',
'source_reset_in' => 'KEY',
'source_clk_in' => 'FPGA_CLK1_50',
'led_port_o' => 'LED'
},
'global_param' => {
'CORE_ID' => 0
},
'instances' => {
'gpo0' => {
'category' => 'GPIO',
'module_name' => 'gpo',
'instance_name' => 'led',
'parameters_order' => [
'PORT_WIDTH',
'Aw',
'TAGw',
'SELw',
'Dw'
],
'parameters' => {
'Aw' => {
'value' => ' 2'
},
'Dw' => {
'value' => 'PORT_WIDTH'
},
'PORT_WIDTH' => {
'value' => 4
},
'TAGw' => {
'value' => ' 3'
},
'SELw' => {
'value' => ' 4'
}
'mor1kx0' => {
'sockets' => {
'interrupt_peripheral' => {
'type' => 'param',
'nums' => {
'0' => {
'name' => 'interrupt_peripheral'
}
},
'connection_num' => 'single connection',
'value' => 'IRQ_NUM'
}
},
'sockets' => {},
'plugs' => {
'reset' => {
'nums' => {
'0' => {
'connect_id' => 'clk_source0',
'connect_socket' => 'reset',
'connect_socket_num' => '0',
'name' => 'reset'
}
},
'type' => 'num',
'connection_num' => undef,
'value' => 1
},
'clk' => {
'type' => 'num',
'nums' => {
'0' => {
'connect_id' => 'clk_source0',
'connect_socket' => 'clk',
'name' => 'clk',
'connect_socket_num' => '0'
}
},
'value' => 1,
'connection_num' => undef
},
'wb_slave' => {
'type' => 'num',
'category' => 'Processor',
'description_pdf' => undef,
'plugs' => {
'clk' => {
'value' => 1,
'connection_num' => undef,
'type' => 'num',
'nums' => {
'0' => {
'connect_id' => 'clk_source0',
'name' => 'clk',
'connect_socket_num' => '0',
'connect_socket' => 'clk'
}
}
},
'reset' => {
'connection_num' => undef,
'value' => 1,
'nums' => {
'0' => {
'connect_socket_num' => '0',
'name' => 'wb',
'connect_socket' => 'wb_slave',
'connect_id' => 'wishbone_bus0',
'width' => 5,
'end' => 2432696351,
'base' => 2432696320,
'addr' => '0x9100_0000 0x91ff_ffff General-Purpose I/O'
'connect_socket' => 'reset',
'connect_id' => 'clk_source0',
'name' => 'reset'
}
},
'value' => 1,
'connection_num' => undef
}
},
'module' => 'gpo',
'description_pdf' => undef
},
'type' => 'num'
},
'wb_master' => {
'nums' => {
'0' => {
'connect_id' => 'wishbone_bus0',
'name' => 'iwb',
'connect_socket_num' => '0',
'connect_socket' => 'wb_master'
},
'1' => {
'connect_socket' => 'wb_master',
'connect_socket_num' => '1',
'name' => 'dwb',
'connect_id' => 'wishbone_bus0'
}
},
'type' => 'num',
'connection_num' => undef,
'value' => 2
},
'enable' => {
'connection_num' => undef,
'value' => 1,
'type' => 'num',
'nums' => {
'0' => {
'connect_id' => 'IO',
'name' => 'enable',
'connect_socket_num' => undef,
'connect_socket' => undef
}
}
}
},
'module' => 'mor1kx',
'instance_name' => 'cpu',
'parameters' => {
'IRQ_NUM' => {
'value' => '32'
},
'OPTION_OPERAND_WIDTH' => {
'value' => '32'
}
},
'parameters_order' => [
'OPTION_OPERAND_WIDTH',
'IRQ_NUM'
],
'module_name' => 'mor1k'
},
'jtag_uart0' => {
'parameters_order' => [
'FPGA_VENDOR',
'SIM_BUFFER_SIZE',
'SIM_WAIT_COUNT'
],
'module_name' => 'jtag_uart_wb',
'category' => 'Communication',
'instance_name' => 'uart',
'module' => 'jtag_uart',
'plugs' => {
'interrupt_peripheral' => {
'type' => 'num',
'nums' => {
'0' => {
'connect_socket_num' => undef,
'connect_socket' => undef,
'connect_id' => 'NC',
'name' => 'interrupt_peripheral'
}
},
'value' => 1,
'connection_num' => undef
},
'reset' => {
'connection_num' => undef,
'value' => 1,
122,9 → 171,9
'nums' => {
'0' => {
'connect_socket_num' => '0',
'name' => 'reset',
'connect_socket' => 'reset',
'connect_id' => 'clk_source0'
'connect_id' => 'clk_source0',
'name' => 'reset'
}
},
'type' => 'num'
132,145 → 181,207
'clk' => {
'value' => 1,
'connection_num' => undef,
'type' => 'num',
'nums' => {
'0' => {
'connect_id' => 'clk_source0',
'connect_socket' => 'clk',
'connect_socket_num' => '0',
'name' => 'clk',
'connect_socket_num' => '0'
'connect_id' => 'clk_source0'
}
}
},
'type' => 'num'
},
'wb_slave' => {
'type' => 'num',
'nums' => {
'0' => {
'connect_socket_num' => '2',
'name' => 'wb_slave',
'connect_socket' => 'wb_slave',
'width' => 5,
'connect_id' => 'wishbone_bus0',
'end' => 2415919135,
'base' => 2415919104,
'addr' => '0x9000_0000 0x90ff_ffff UART16550 Controller'
'addr' => '0x9000_0000 0x90ff_ffff UART16550 Controller',
'connect_socket' => 'wb_slave',
'name' => 'wb_slave',
'connect_socket_num' => '2',
'width' => 5
}
},
'type' => 'num',
'connection_num' => undef,
'value' => 1
},
'interrupt_peripheral' => {
'value' => 1,
'connection_num' => undef,
'type' => 'num',
'nums' => {
'0' => {
'name' => 'interrupt_peripheral',
'connect_socket_num' => undef,
'connect_id' => 'NC',
'connect_socket' => undef
}
}
}
'value' => 1,
'connection_num' => undef
}
},
'module_name' => 'jtag_uart_wb',
'parameters_order' => [
'FPGA_VENDOR',
'SIM_BUFFER_SIZE',
'SIM_WAIT_COUNT'
],
'parameters' => {
'SIM_WAIT_COUNT' => {
'value' => '1000'
},
'FPGA_VENDOR' => {
'value' => ' "ALTERA"'
},
'SIM_BUFFER_SIZE' => {
'value' => '100'
}
},
'SIM_WAIT_COUNT' => {
'value' => '1000'
}
},
'sockets' => {
'RxD_sim' => {
'connection_num' => 'single connection',
'value' => 1,
'type' => 'num',
'nums' => {
'0' => {
'name' => 'RxD_sim'
}
},
'type' => 'num'
'connection_num' => 'single connection',
'value' => 1
}
},
'module' => 'jtag_uart',
'description_pdf' => undef
'description_pdf' => undef,
'category' => 'Communication'
},
'clk_source0' => {
'plugs' => {
'reset' => {
'value' => 1,
'connection_num' => undef,
'type' => 'num',
'nums' => {
'0' => {
'connect_id' => 'IO',
'name' => 'reset',
'connect_socket_num' => undef,
'connect_socket' => undef
}
}
},
'clk' => {
'nums' => {
'0' => {
'connect_socket_num' => undef,
'connect_socket' => undef,
'connect_id' => 'IO',
'name' => 'clk'
}
},
'type' => 'num',
'value' => 1,
'connection_num' => undef
}
},
'module' => 'clk_source',
'instance_name' => 'source',
'parameters_order' => [],
'parameters' => {},
'module_name' => 'clk_source',
'sockets' => {
'reset' => {
'value' => 1,
'connection_num' => 'multi connection',
'type' => 'num',
'nums' => {
'0' => {
'name' => 'reset'
}
}
},
'clk' => {
'type' => 'num',
'nums' => {
'0' => {
'name' => 'clk'
}
},
'connection_num' => 'multi connection',
'value' => 1
}
},
'category' => 'Source',
'description_pdf' => undef
},
'timer0' => {
'plugs' => {
'interrupt_peripheral' => {
'type' => 'num',
'nums' => {
'0' => {
'connect_socket' => 'interrupt_peripheral',
'connect_id' => 'mor1kx0',
'name' => 'intrp',
'connect_socket_num' => '0'
}
},
'value' => 1,
'connection_num' => undef
},
'wb_slave' => {
'value' => 1,
'connection_num' => undef,
'type' => 'num',
'nums' => {
'0' => {
'connect_socket_num' => '1',
'name' => 'wb',
'width' => 5,
'end' => 2516582431,
'connect_id' => 'wishbone_bus0',
'connect_socket' => 'wb_slave',
'end' => 2516582431,
'addr' => '0x9600_0000 0x96ff_ffff PWM/Timer/Counter Ctrl',
'base' => 2516582400,
'addr' => '0x9600_0000 0x96ff_ffff PWM/Timer/Counter Ctrl'
'name' => 'wb',
'width' => 5,
'connect_socket_num' => '1'
}
}
},
'type' => 'num'
},
'interrupt_peripheral' => {
'connection_num' => undef,
'value' => 1,
'type' => 'num',
'nums' => {
'0' => {
'connect_socket_num' => '0',
'connect_socket' => 'interrupt_peripheral',
'connect_id' => 'mor1kx0',
'name' => 'intrp'
}
}
},
'clk' => {
'connection_num' => undef,
'value' => 1,
'type' => 'num',
'nums' => {
'0' => {
'name' => 'clk',
'connect_id' => 'clk_source0',
'connect_socket' => 'clk',
'connect_id' => 'clk_source0',
'name' => 'clk',
'connect_socket_num' => '0'
}
},
'type' => 'num'
}
},
'reset' => {
'nums' => {
'0' => {
'name' => 'reset',
'connect_id' => 'clk_source0',
'connect_socket' => 'reset',
'name' => 'reset',
'connect_socket_num' => '0'
}
},
'type' => 'num',
'connection_num' => undef,
'value' => 1
'value' => 1,
'connection_num' => undef
}
},
'module' => 'timer',
'instance_name' => 'timer',
'parameters_order' => [
'CNTw',
'Dw',
'Aw',
'TAGw',
'SELw',
'PRESCALER_WIDTH'
],
'parameters' => {
'Dw' => {
'value' => '32'
},
'SELw' => {
'value' => '4'
},
'Aw' => {
'value' => '3'
},
'Dw' => {
'value' => '32'
},
'TAGw' => {
'value' => '3'
},
'SELw' => {
'value' => '4'
},
'PRESCALER_WIDTH' => {
'value' => '8'
},
278,150 → 389,164
'value' => '32 '
}
},
'module_name' => 'timer',
'sockets' => {},
'category' => 'Timer',
'instance_name' => 'timer',
'module_name' => 'timer',
'parameters_order' => [
'CNTw',
'Dw',
'Aw',
'TAGw',
'SELw',
'PRESCALER_WIDTH'
],
'description_pdf' => '/mpsoc/src_peripheral/timer/timer.pdf',
'module' => 'timer'
'description_pdf' => '/mpsoc/src_peripheral/timer/timer.pdf'
},
'mor1kx0' => {
'category' => 'Processor',
'instance_name' => 'cpu',
'module_name' => 'mor1k',
'parameters_order' => [
'OPTION_OPERAND_WIDTH',
'IRQ_NUM'
],
'parameters' => {
'OPTION_OPERAND_WIDTH' => {
'value' => '32'
},
'IRQ_NUM' => {
'value' => '32'
}
},
'sockets' => {
'interrupt_peripheral' => {
'nums' => {
'0' => {
'name' => 'interrupt_peripheral'
}
},
'type' => 'param',
'connection_num' => 'single connection',
'value' => 'IRQ_NUM'
}
'gpo0' => {
'description_pdf' => undef,
'category' => 'GPIO',
'sockets' => {},
'module_name' => 'gpo',
'parameters_order' => [
'PORT_WIDTH',
'Aw',
'TAGw',
'SELw',
'Dw'
],
'parameters' => {
'SELw' => {
'value' => ' 4'
},
'Aw' => {
'value' => ' 2'
},
'Dw' => {
'value' => 'PORT_WIDTH'
},
'PORT_WIDTH' => {
'value' => 4
},
'TAGw' => {
'value' => ' 3'
}
},
'plugs' => {
'clk' => {
'connection_num' => undef,
'value' => 1,
'nums' => {
'0' => {
'name' => 'clk',
'connect_socket_num' => '0',
'connect_socket' => 'clk',
'connect_id' => 'clk_source0'
}
},
'type' => 'num'
},
'reset' => {
'instance_name' => 'led',
'module' => 'gpo',
'plugs' => {
'clk' => {
'nums' => {
'0' => {
'connect_socket_num' => '0',
'connect_socket' => 'clk',
'connect_id' => 'clk_source0',
'name' => 'clk'
}
},
'type' => 'num',
'value' => 1,
'connection_num' => undef
},
'reset' => {
'connection_num' => undef,
'value' => 1,
'nums' => {
'0' => {
'name' => 'reset',
'connect_id' => 'clk_source0',
'connect_socket' => 'reset',
'connect_socket_num' => '0'
}
},
'type' => 'num'
},
'wb_slave' => {
'value' => 1,
'connection_num' => undef,
'type' => 'num',
'nums' => {
'0' => {
'name' => 'reset',
'connect_socket_num' => '0',
'connect_id' => 'clk_source0',
'connect_socket' => 'reset'
'end' => 2449473567,
'connect_id' => 'wishbone_bus0',
'connect_socket' => 'wb_slave',
'addr' => '0x9100_0000 0x91ff_ffff General-Purpose I/O',
'base' => 2449473536,
'name' => 'wb',
'width' => 5,
'connect_socket_num' => '0'
}
}
},
'wb_master' => {
'connection_num' => undef,
'value' => 2,
'nums' => {
'1' => {
'connect_socket_num' => '1',
'name' => 'dwb',
'connect_socket' => 'wb_master',
'connect_id' => 'wishbone_bus0'
},
'0' => {
'name' => 'iwb',
'connect_socket_num' => '0',
'connect_socket' => 'wb_master',
'connect_id' => 'wishbone_bus0'
}
},
'type' => 'num'
},
'enable' => {
'connection_num' => undef,
'value' => 1,
'nums' => {
'0' => {
'connect_socket_num' => undef,
'name' => 'enable',
'connect_id' => 'IO',
'connect_socket' => undef
}
},
'type' => 'num'
}
},
'module' => 'mor1kx',
'description_pdf' => undef
},
},
'type' => 'num'
}
}
},
'wishbone_bus0' => {
'sockets' => {
'wb_master' => {
'value' => 'M',
'connection_num' => 'single connection',
'type' => 'param',
'nums' => {
'0' => {
'name' => 'wb_master'
}
}
},
'wb_addr_map' => {
'nums' => {
'0' => {
'name' => 'wb_addr_map'
}
},
'type' => 'num',
'connection_num' => 'single connection',
'value' => 1
},
'wb_slave' => {
'value' => 'S',
'connection_num' => 'single connection',
'type' => 'param',
'nums' => {
'0' => {
'name' => 'wb_slave'
}
}
}
},
'category' => 'Bus',
'description_pdf' => undef,
'module' => 'wishbone_bus',
'plugs' => {
'reset' => {
'type' => 'num',
'nums' => {
'0' => {
'name' => 'reset',
'connect_id' => 'clk_source0',
'connect_socket' => 'reset',
'connect_id' => 'clk_source0',
'connect_socket_num' => '0',
'name' => 'reset'
'connect_socket_num' => '0'
}
},
'type' => 'num',
'connection_num' => undef,
'value' => 1
},
'clk' => {
'value' => 1,
'connection_num' => undef,
'type' => 'num',
'nums' => {
'0' => {
'connect_id' => 'clk_source0',
'connect_socket' => 'clk',
'name' => 'clk',
'connect_socket_num' => '0'
'connect_socket_num' => '0',
'connect_socket' => 'clk'
}
}
},
'type' => 'num',
'value' => 1,
'connection_num' => undef
}
},
'module' => 'wishbone_bus',
'instance_name' => 'bus',
'parameters_order' => [
'M',
'S',
'Dw',
'Aw',
'SELw',
'TAGw',
'CTIw',
'BTEw'
],
'parameters' => {
'BTEw' => {
'value' => '2 '
},
'TAGw' => {
'value' => '3'
},
'M' => {
'value' => 2
},
428,200 → 553,38
'Dw' => {
'value' => '32'
},
'CTIw' => {
'S' => {
'value' => '4'
},
'TAGw' => {
'value' => '3'
},
'SELw' => {
'value' => 'Dw/8'
'BTEw' => {
'value' => '2 '
},
'Aw' => {
'value' => '32'
},
'S' => {
'value' => '4'
}
'CTIw' => {
'value' => '3'
},
'SELw' => {
'value' => 'Dw/8'
}
},
'sockets' => {
'wb_slave' => {
'type' => 'param',
'nums' => {
'0' => {
'name' => 'wb_slave'
}
},
'value' => 'S',
'connection_num' => 'single connection'
},
'wb_addr_map' => {
'nums' => {
'0' => {
'name' => 'wb_addr_map'
}
},
'type' => 'num',
'connection_num' => 'single connection',
'value' => 1
},
'wb_master' => {
'value' => 'M',
'connection_num' => 'single connection',
'type' => 'param',
'nums' => {
'0' => {
'name' => 'wb_master'
}
}
}
},
'category' => 'Bus',
'module_name' => 'wishbone_bus',
'instance_name' => 'bus',
'parameters_order' => [
'M',
'S',
'Dw',
'Aw',
'SELw',
'TAGw',
'CTIw',
'BTEw'
]
'module_name' => 'wishbone_bus'
},
'clk_source0' => {
'description_pdf' => undef,
'module' => 'clk_source',
'plugs' => {
'reset' => {
'type' => 'num',
'nums' => {
'0' => {
'connect_socket' => undef,
'connect_id' => 'IO',
'connect_socket_num' => undef,
'name' => 'reset'
}
},
'value' => 1,
'connection_num' => undef
},
'clk' => {
'connection_num' => undef,
'value' => 1,
'nums' => {
'0' => {
'connect_socket_num' => undef,
'name' => 'clk',
'connect_socket' => undef,
'connect_id' => 'IO'
}
},
'type' => 'num'
}
},
'sockets' => {
'clk' => {
'connection_num' => 'multi connection',
'value' => 1,
'nums' => {
'0' => {
'name' => 'clk'
}
},
'type' => 'num'
},
'reset' => {
'value' => 1,
'connection_num' => 'multi connection',
'type' => 'num',
'nums' => {
'0' => {
'name' => 'reset'
}
}
}
},
'parameters' => {},
'module_name' => 'clk_source',
'category' => 'Source',
'instance_name' => 'source',
'parameters_order' => []
},
'single_port_ram0' => {
'description_pdf' => '/mpsoc/src_peripheral/ram/RAM.pdf',
'instance_name' => 'ram',
'module' => 'single_port_ram',
'sockets' => {},
'parameters' => {
'INIT_FILE_PATH' => {
'value' => 'SW_LOC'
},
'SELw' => {
'value' => 'Dw/8'
},
'CTIw' => {
'value' => '3'
},
'BYTE_WR_EN' => {
'value' => '"YES"'
},
'WB_Aw' => {
'value' => 'Aw+2'
},
'INITIAL_EN' => {
'value' => '"YES"'
},
'Aw' => {
'value' => 14
},
'JTAG_INDEX' => {
'value' => 'CORE_ID'
},
'JTAG_CONNECT' => {
'value' => ' "JTAG_WB" '
},
'TAGw' => {
'value' => '3'
},
'BTEw' => {
'value' => '2'
},
'FPGA_VENDOR' => {
'value' => '"ALTERA"'
},
'MEM_CONTENT_FILE_NAME' => {
'value' => '"ram0"'
},
'Dw' => {
'value' => '32'
},
'BURST_MODE' => {
'value' => '"ENABLED"'
}
},
'plugs' => {
'wb_slave' => {
'nums' => {
'0' => {
'connect_id' => 'wishbone_bus0',
'width' => 'WB_Aw',
'connect_socket' => 'wb_slave',
'connect_socket_num' => '3',
'name' => 'wb',
'base' => 0,
'addr' => '0x0000_0000 0x3fff_ffff RAM',
'end' => 65535
}
},
'type' => 'num',
'connection_num' => undef,
'value' => 1
},
'clk' => {
'nums' => {
'0' => {
'connect_socket' => 'clk',
'connect_id' => 'clk_source0',
'name' => 'clk',
'connect_socket_num' => '0',
'name' => 'clk'
'connect_socket' => 'clk'
}
},
'type' => 'num',
631,20 → 594,35
'reset' => {
'nums' => {
'0' => {
'connect_id' => 'clk_source0',
'name' => 'reset',
'connect_socket_num' => '0',
'name' => 'reset',
'connect_id' => 'clk_source0',
'connect_socket' => 'reset'
}
},
'type' => 'num',
'connection_num' => undef,
'value' => 1
}
'value' => 1,
'connection_num' => undef
},
'wb_slave' => {
'value' => 1,
'connection_num' => undef,
'nums' => {
'0' => {
'name' => 'wb',
'connect_socket_num' => '3',
'width' => 'WB_Aw',
'connect_id' => 'wishbone_bus0',
'end' => 65535,
'base' => 0,
'connect_socket' => 'wb_slave',
'addr' => '0x0000_0000 0x3fff_ffff RAM'
}
},
'type' => 'num'
}
},
'instance_name' => 'ram',
'module_name' => 'wb_single_port_ram',
'category' => 'RAM',
'parameters_order' => [
'Dw',
'Aw',
661,264 → 639,209
'MEM_CONTENT_FILE_NAME',
'INITIAL_EN',
'INIT_FILE_PATH'
]
],
'parameters' => {
'Aw' => {
'value' => 14
},
'CTIw' => {
'value' => '3'
},
'SELw' => {
'value' => 'Dw/8'
},
'BURST_MODE' => {
'value' => '"ENABLED"'
},
'BTEw' => {
'value' => '2'
},
'BYTE_WR_EN' => {
'value' => '"YES"'
},
'MEM_CONTENT_FILE_NAME' => {
'value' => '"ram0"'
},
'WB_Aw' => {
'value' => 'Aw+2'
},
'INIT_FILE_PATH' => {
'value' => 'SW_LOC'
},
'Dw' => {
'value' => '32'
},
'FPGA_VENDOR' => {
'value' => '"ALTERA"'
},
'JTAG_INDEX' => {
'value' => 'CORE_ID'
},
'TAGw' => {
'value' => '3'
},
'JTAG_CONNECT' => {
'value' => ' "JTAG_WB" '
},
'INITIAL_EN' => {
'value' => '"YES"'
}
},
'sockets' => {},
'description_pdf' => '/mpsoc/src_peripheral/ram/RAM.pdf',
'category' => 'RAM'
}
},
'soc_name' => 'tutorial',
'compile_pin_range_lsb' => {
'source_reset_in' => '0',
'led_port_o' => '0'
},
'timer0' => {
'version' => 9
},
'jtag_uart0' => {
'version' => 14
},
'wishbone_bus0' => {
'version' => 0
},
'single_port_ram0' => {
'version' => 22
},
'hdl_files' => undef,
'compile' => {
'type' => 'Modelsim',
'board' => 'DE10_Nano_VB2',
'quartus_bin' => '/home/alireza/intelFPGA_lite/17.1/quartus/bin',
'modelsim_bin' => '/home/alireza/altera/modeltech/bin',
'compilers' => 'QuartusII,Verilator,Modelsim'
'compilers' => 'QuartusII,Verilator,Modelsim',
'quartus_bin' => '/home/alireza/intelFPGA_lite/17.1/quartus/bin'
},
'compile_assign_type' => {
'source_clk_in' => 'Direct',
'source_reset_in' => 'Negate(~)',
'cpu_cpu_en' => 'Direct'
},
'modules' => {},
'instance_order' => [
'clk_source0',
'wishbone_bus0',
'gpo0',
'mor1kx0',
'timer0',
'single_port_ram0',
'jtag_uart0'
],
'wishbone_bus0' => {
'version' => 0
},
'hdl_files' => undef,
'global_param' => {
'CORE_ID' => 0
},
'mor1kx0' => {
'version' => 13
},
'gui_status' => {
'timeout' => 0,
'status' => 'save_project'
},
'tile_diagram' => {
'show_reset' => 1,
'show_clk' => 1,
'show_unused' => 1
'show_unused' => 1,
'show_reset' => 1
},
'single_port_ram0' => {
'version' => 22
},
'compile_pin_range_hsb' => {
'led_port_o' => '3'
},
'jtag_uart0' => {
'version' => 14
},
'gpo0' => {
'version' => 2
},
'compile_pin' => {
'cpu_cpu_en' => '*VCC',
'led_port_o' => 'LED',
'source_clk_in' => 'FPGA_CLK1_50',
'source_reset_in' => 'KEY'
},
'timer0' => {
'version' => 9
},
'modules' => {},
'top_ip' => bless( {
'ports' => {
'uart_RxD_ready_sim' => {
'range' => '',
'intfc_port' => 'RxD_ready_sim',
'type' => 'output',
'intfc_name' => 'socket:RxD_sim[0]',
'instance_name' => 'jtag_uart0'
},
'uart_RxD_din_sim' => {
'range' => '7:0 ',
'intfc_port' => 'RxD_din_sim',
'type' => 'input',
'intfc_name' => 'socket:RxD_sim[0]',
'instance_name' => 'jtag_uart0'
},
'uart_RxD_wr_sim' => {
'intfc_name' => 'socket:RxD_sim[0]',
'type' => 'input',
'intfc_port' => 'RxD_wr_sim',
'range' => '',
'instance_name' => 'jtag_uart0'
},
'led_port_o' => {
'instance_name' => 'gpo0',
'intfc_port' => 'IO',
'type' => 'output',
'intfc_name' => 'IO',
'range' => 'led_PORT_WIDTH-1 : 0'
},
'cpu_cpu_en' => {
'instance_name' => 'mor1kx0',
'range' => '',
'type' => 'input',
'intfc_port' => 'enable_i',
'intfc_name' => 'plug:enable[0]'
},
'source_reset_in' => {
'intfc_port' => 'reset_i',
'type' => 'input',
'intfc_name' => 'plug:reset[0]',
'range' => '',
'instance_name' => 'clk_source0'
},
'source_clk_in' => {
'range' => '',
'intfc_port' => 'clk_i',
'type' => 'input',
'intfc_name' => 'plug:clk[0]',
'instance_name' => 'clk_source0'
}
},
'instance_ids' => {
'mor1kx0' => {
'ports' => {
'cpu_cpu_en' => {
'intfc_name' => 'plug:enable[0]',
'intfc_port' => 'enable_i',
'type' => 'input',
'range' => ''
'range' => '',
'intfc_name' => 'plug:enable[0]'
}
},
'instance' => 'cpu',
'module' => 'mor1kx',
'parameters' => {
'cpu_OPTION_OPERAND_WIDTH' => {
'global_param' => 'Parameter',
'type' => 'Fixed',
'redefine_param' => 1,
'type' => 'Fixed',
'default' => '32',
'global_param' => 'Parameter',
'info' => 'Parameter',
'content' => ''
'content' => '',
'info' => 'Parameter'
},
'cpu_IRQ_NUM' => {
'redefine_param' => 1,
'global_param' => 'Parameter',
'redefine_param' => 1,
'type' => 'Fixed',
'default' => '32',
'type' => 'Fixed',
'content' => '',
'info' => undef
}
},
'instance' => 'cpu',
'category' => 'Processor',
'module_name' => 'mor1k',
'module' => 'mor1kx'
'module_name' => 'mor1k'
},
'clk_source0' => {
'module' => 'clk_source',
'instance' => 'source',
'module_name' => 'clk_source',
'category' => 'Source',
'ports' => {
'source_clk_in' => {
'intfc_name' => 'plug:clk[0]',
'type' => 'input',
'intfc_port' => 'clk_i',
'range' => ''
},
'source_reset_in' => {
'intfc_name' => 'plug:reset[0]',
'jtag_uart0' => {
'ports' => {
'uart_RxD_din_sim' => {
'intfc_name' => 'socket:RxD_sim[0]',
'range' => '7:0 ',
'type' => 'input',
'intfc_port' => 'reset_i',
'range' => ''
}
}
},
'intfc_port' => 'RxD_din_sim'
},
'uart_RxD_wr_sim' => {
'intfc_port' => 'RxD_wr_sim',
'type' => 'input',
'range' => '',
'intfc_name' => 'socket:RxD_sim[0]'
},
'uart_RxD_ready_sim' => {
'type' => 'output',
'intfc_port' => 'RxD_ready_sim',
'range' => '',
'intfc_name' => 'socket:RxD_sim[0]'
}
},
'instance' => 'uart',
'module' => 'jtag_uart',
'category' => 'Communication',
'module_name' => 'jtag_uart_wb'
},
'wishbone_bus0' => {
'module' => 'wishbone_bus',
'instance' => 'bus',
'module_name' => 'wishbone_bus',
'instance' => 'bus',
'category' => 'Bus'
},
'single_port_ram0' => {
'instance' => 'ram',
'module' => 'single_port_ram',
'module_name' => 'wb_single_port_ram',
'parameters' => {
'ram_Dw' => {
'redefine_param' => 1,
'type' => 'Spin-button',
'global_param' => 'Parameter',
'info' => 'Memory data width in Bits.',
'content' => '8,1024,1',
'global_param' => 'Parameter',
'default' => '32',
'redefine_param' => 1,
'type' => 'Spin-button'
'default' => '32'
},
'ram_Aw' => {
'default' => 14,
'content' => '4,31,1',
'info' => 'Memory address width',
'redefine_param' => 1,
'default' => 14,
'type' => 'Spin-button',
'global_param' => 'Parameter'
'global_param' => 'Parameter',
'type' => 'Spin-button'
}
},
'module' => 'single_port_ram',
'module_name' => 'wb_single_port_ram',
'instance' => 'ram',
'category' => 'RAM'
},
'jtag_uart0' => {
'module_name' => 'jtag_uart_wb',
'instance' => 'uart',
'category' => 'Communication',
'module' => 'jtag_uart',
'ports' => {
'uart_RxD_din_sim' => {
'range' => '7:0 ',
'intfc_name' => 'socket:RxD_sim[0]',
'clk_source0' => {
'ports' => {
'source_clk_in' => {
'type' => 'input',
'intfc_port' => 'clk_i',
'range' => '',
'intfc_name' => 'plug:clk[0]'
},
'source_reset_in' => {
'type' => 'input',
'intfc_port' => 'RxD_din_sim'
},
'uart_RxD_ready_sim' => {
'range' => '',
'intfc_name' => 'socket:RxD_sim[0]',
'intfc_port' => 'RxD_ready_sim',
'type' => 'output'
},
'uart_RxD_wr_sim' => {
'intfc_port' => 'RxD_wr_sim',
'type' => 'input',
'intfc_name' => 'socket:RxD_sim[0]',
'range' => ''
}
}
},
'gpo0' => {
'ports' => {
'led_port_o' => {
'intfc_name' => 'IO',
'type' => 'output',
'intfc_port' => 'IO',
'range' => 'led_PORT_WIDTH-1 : 0'
}
},
'parameters' => {
'led_PORT_WIDTH' => {
'global_param' => 'Parameter',
'type' => 'Spin-button',
'redefine_param' => 1,
'default' => 4,
'info' => 'output port width',
'content' => '1,32,1'
}
},
'module' => 'gpo',
'instance' => 'led',
'category' => 'GPIO',
'module_name' => 'gpo'
},
'intfc_port' => 'reset_i',
'range' => '',
'intfc_name' => 'plug:reset[0]'
}
},
'module' => 'clk_source',
'instance' => 'source',
'module_name' => 'clk_source',
'category' => 'Source'
},
'timer0' => {
'parameters' => {
'timer_PRESCALER_WIDTH' => {
'redefine_param' => 1,
'global_param' => 'Parameter',
'type' => 'Spin-button',
'default' => '8',
'redefine_param' => 1,
'type' => 'Spin-button',
'content' => '1,32,1',
'info' => ' The prescaler timer width. The prescaler takes the basic timer clock frequency and divides it by some value before feeding it to the timer, according to how the prescaler register(s) are configured.
 
926,30 → 849,95
'
}
},
'instance' => 'timer',
'category' => 'Timer',
'module_name' => 'timer',
'category' => 'Timer',
'module' => 'timer'
}
'module' => 'timer',
'instance' => 'timer'
},
'gpo0' => {
'parameters' => {
'led_PORT_WIDTH' => {
'content' => '1,32,1',
'default' => 4,
'info' => 'output port width',
'global_param' => 'Parameter',
'type' => 'Spin-button',
'redefine_param' => 1
}
},
'category' => 'GPIO',
'module_name' => 'gpo',
'module' => 'gpo',
'instance' => 'led',
'ports' => {
'led_port_o' => {
'intfc_port' => 'IO',
'type' => 'output',
'intfc_name' => 'IO',
'range' => 'led_PORT_WIDTH-1 : 0'
}
}
}
},
'ports' => {
'uart_RxD_wr_sim' => {
'range' => '',
'instance_name' => 'jtag_uart0',
'intfc_name' => 'socket:RxD_sim[0]',
'type' => 'input',
'intfc_port' => 'RxD_wr_sim'
},
'source_clk_in' => {
'intfc_name' => 'plug:clk[0]',
'instance_name' => 'clk_source0',
'range' => '',
'type' => 'input',
'intfc_port' => 'clk_i'
},
'uart_RxD_ready_sim' => {
'range' => '',
'intfc_name' => 'socket:RxD_sim[0]',
'instance_name' => 'jtag_uart0',
'type' => 'output',
'intfc_port' => 'RxD_ready_sim'
},
'led_port_o' => {
'range' => 'led_PORT_WIDTH-1 : 0',
'instance_name' => 'gpo0',
'intfc_name' => 'IO',
'intfc_port' => 'IO',
'type' => 'output'
},
'source_reset_in' => {
'intfc_port' => 'reset_i',
'type' => 'input',
'range' => '',
'intfc_name' => 'plug:reset[0]',
'instance_name' => 'clk_source0'
},
'uart_RxD_din_sim' => {
'type' => 'input',
'intfc_port' => 'RxD_din_sim',
'range' => '7:0 ',
'intfc_name' => 'socket:RxD_sim[0]',
'instance_name' => 'jtag_uart0'
},
'cpu_cpu_en' => {
'intfc_port' => 'enable_i',
'type' => 'input',
'range' => '',
'instance_name' => 'mor1kx0',
'intfc_name' => 'plug:enable[0]'
}
},
'interface' => {
'plug:clk[0]' => {
'ports' => {
'source_clk_in' => {
'instance_name' => 'clk_source0',
'type' => 'input',
'intfc_port' => 'clk_i',
'range' => ''
}
}
},
'plug:reset[0]' => {
'ports' => {
'source_reset_in' => {
'range' => '',
'intfc_port' => 'reset_i',
'type' => 'input',
'instance_name' => 'clk_source0'
'instance_name' => 'clk_source0',
'range' => ''
}
}
},
957,31 → 945,31
'ports' => {
'led_port_o' => {
'instance_name' => 'gpo0',
'range' => 'led_PORT_WIDTH-1 : 0',
'intfc_port' => 'IO',
'type' => 'output',
'range' => 'led_PORT_WIDTH-1 : 0'
'type' => 'output'
}
}
},
'socket:RxD_sim[0]' => {
'ports' => {
'uart_RxD_wr_sim' => {
'intfc_port' => 'RxD_wr_sim',
'type' => 'input',
'range' => '',
'instance_name' => 'jtag_uart0'
},
'uart_RxD_din_sim' => {
'instance_name' => 'jtag_uart0',
'type' => 'input',
'intfc_port' => 'RxD_din_sim',
'instance_name' => 'jtag_uart0',
'range' => '7:0 '
},
'uart_RxD_wr_sim' => {
'instance_name' => 'jtag_uart0',
'range' => '',
'type' => 'input',
'intfc_port' => 'RxD_wr_sim'
},
'uart_RxD_ready_sim' => {
'instance_name' => 'jtag_uart0',
'range' => '',
'intfc_port' => 'RxD_ready_sim',
'type' => 'output',
'range' => '',
'instance_name' => 'jtag_uart0'
'type' => 'output'
}
}
},
990,18 → 978,30
'cpu_cpu_en' => {
'instance_name' => 'mor1kx0',
'range' => '',
'type' => 'input',
'intfc_port' => 'enable_i'
'intfc_port' => 'enable_i',
'type' => 'input'
}
}
}
},
'plug:clk[0]' => {
'ports' => {
'source_clk_in' => {
'instance_name' => 'clk_source0',
'range' => '',
'intfc_port' => 'clk_i',
'type' => 'input'
}
}
}
}
}, 'ip_gen' ),
'gui_status' => {
'status' => 'ideal',
'timeout' => 0
},
'clk_source0' => {
'version' => 0
}
'gpo0' => {
'version' => 2
},
'soc_name' => 'tutorial',
'compile_assign_type' => {
'source_reset_in' => 'Negate(~)',
'cpu_cpu_en' => 'Direct',
'source_clk_in' => 'Direct'
}
}, 'soc' );

powered by: WebSVN 2.1.0

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