Line 3... |
Line 3... |
|
|
use lib 'lib/perl';
|
use lib 'lib/perl';
|
|
|
use strict;
|
use strict;
|
use warnings;
|
use warnings;
|
|
|
|
|
|
use FindBin;
|
|
use lib $FindBin::Bin;
|
|
|
use soc;
|
use soc;
|
use ip;
|
use ip;
|
use ip_gen;
|
use ip_gen;
|
use Cwd;
|
use Cwd;
|
|
|
Line 33... |
Line 38... |
my $param_as_in_v="\tparameter\tCORE_ID=$core_id,
|
my $param_as_in_v="\tparameter\tCORE_ID=$core_id,
|
\tparameter\tSW_LOC=\"$sw_path\"";
|
\tparameter\tSW_LOC=\"$sw_path\"";
|
|
|
|
|
|
|
|
my $system_v="";
|
my $param_pass_v="\t.CORE_ID(CORE_ID),\n\t.SW_LOC(SW_LOC)";
|
my $param_pass_v="\t.CORE_ID(CORE_ID),\n\t.SW_LOC(SW_LOC)";
|
my $body_v;
|
my $body_v;
|
|
|
my ($param_v_all, $local_param_v_all, $wire_def_v_all, $inst_v_all, $plugs_assign_v_all, $sockets_assign_v_all,$io_full_v_all,$io_top_full_v_all);
|
my ($param_v_all, $local_param_v_all, $wire_def_v_all, $inst_v_all, $plugs_assign_v_all, $sockets_assign_v_all,$io_full_v_all,$io_top_full_v_all);
|
my $wires=soc->new_wires();
|
my $wires=soc->new_wires();
|
my $intfc=interface->interface_new();
|
my $intfc=interface->interface_new();
|
|
|
foreach my $id (@instances){
|
foreach my $id (@instances){
|
my ($param_v, $local_param_v, $wire_def_v, $inst_v, $plugs_assign_v, $sockets_assign_v,$io_full_v,$io_top_full_v)=gen_module_inst($id,$soc,\$io_sim_v,\$io_top_sim_v,\$param_as_in_v,$top_ip,$intfc,$wires,\$param_pass_v);
|
my ($param_v, $local_param_v, $wire_def_v, $inst_v, $plugs_assign_v, $sockets_assign_v,$io_full_v,$io_top_full_v)=gen_module_inst($id,$soc,\$io_sim_v,\$io_top_sim_v,\$param_as_in_v,$top_ip,$intfc,$wires,\$param_pass_v,\$system_v);
|
my $inst = $soc->soc_get_instance_name($id);
|
my $inst = $soc->soc_get_instance_name($id);
|
add_text_to_string(\$body_v,"/*******************\n*\n*\t$inst\n*\n*\n*********************/\n");
|
add_text_to_string(\$body_v,"/*******************\n*\n*\t$inst\n*\n*\n*********************/\n");
|
|
|
add_text_to_string(\$local_param_v_all,"$local_param_v\n") if(defined($local_param_v));
|
add_text_to_string(\$local_param_v_all,"$local_param_v\n") if(defined($local_param_v));
|
add_text_to_string(\$wire_def_v_all,"$wire_def_v\n") if(defined($wire_def_v));
|
add_text_to_string(\$wire_def_v_all,"$wire_def_v\n") if(defined($wire_def_v));
|
Line 54... |
Line 59... |
add_text_to_string(\$plugs_assign_v_all,"$plugs_assign_v\n") if(defined($plugs_assign_v));
|
add_text_to_string(\$plugs_assign_v_all,"$plugs_assign_v\n") if(defined($plugs_assign_v));
|
add_text_to_string(\$sockets_assign_v_all,"$sockets_assign_v\n")if(defined($sockets_assign_v));
|
add_text_to_string(\$sockets_assign_v_all,"$sockets_assign_v\n")if(defined($sockets_assign_v));
|
add_text_to_string(\$io_full_v_all,"$io_full_v\n") if(defined($io_full_v));
|
add_text_to_string(\$io_full_v_all,"$io_full_v\n") if(defined($io_full_v));
|
add_text_to_string(\$io_top_full_v_all,"$io_top_full_v\n") if(defined($io_top_full_v));
|
add_text_to_string(\$io_top_full_v_all,"$io_top_full_v\n") if(defined($io_top_full_v));
|
|
|
|
|
|
|
#print "$param_v $local_param_v $wire_def_v $inst_v $plugs_assign_v $sockets_assign_v $io_full_v";
|
#print "$param_v $local_param_v $wire_def_v $inst_v $plugs_assign_v $sockets_assign_v $io_full_v";
|
|
|
}
|
}
|
my ($addr_map,$addr_localparam,$module_addr_localparam)= generate_address_cmp($soc,$wires);
|
my ($addr_map,$addr_localparam,$module_addr_localparam)= generate_address_cmp($soc,$wires);
|
|
|
Line 70... |
Line 77... |
}
|
}
|
close($file1);
|
close($file1);
|
my $unused_wiers_v=assign_unconnected_wires($wires,$intfc);
|
my $unused_wiers_v=assign_unconnected_wires($wires,$intfc);
|
|
|
|
|
|
|
my $soc_v = (defined $param_as_in_v )? "module $soc_name #(\n $param_as_in_v\n)(\n$io_sim_v\n);\n": "module $soc_name (\n$io_sim_v\n);\n";
|
my $soc_v = (defined $param_as_in_v )? "module $soc_name #(\n $param_as_in_v\n)(\n$io_sim_v\n);\n": "module $soc_name (\n$io_sim_v\n);\n";
|
add_text_to_string(\$soc_v,$functions_all);
|
add_text_to_string(\$soc_v,$functions_all);
|
|
add_text_to_string(\$soc_v,$system_v);
|
add_text_to_string(\$soc_v,$local_param_v_all);
|
add_text_to_string(\$soc_v,$local_param_v_all);
|
add_text_to_string(\$soc_v,$addr_localparam);
|
add_text_to_string(\$soc_v,$addr_localparam);
|
add_text_to_string(\$soc_v,$module_addr_localparam);
|
add_text_to_string(\$soc_v,$module_addr_localparam);
|
add_text_to_string(\$soc_v,$io_full_v_all);
|
add_text_to_string(\$soc_v,$io_full_v_all);
|
add_text_to_string(\$soc_v,$wire_def_v_all);
|
add_text_to_string(\$soc_v,$wire_def_v_all);
|
Line 106... |
Line 115... |
#################
|
#################
|
# gen_module_inst
|
# gen_module_inst
|
###############
|
###############
|
|
|
sub gen_module_inst {
|
sub gen_module_inst {
|
my ($id,$soc,$io_sim_v,$io_top_sim_v,$param_as_in_v,$top_ip, $intfc,$wires,$param_pass_v)=@_;
|
my ($id,$soc,$io_sim_v,$io_top_sim_v,$param_as_in_v,$top_ip, $intfc,$wires,$param_pass_v,$system_v)=@_;
|
my $module =$soc->soc_get_module($id);
|
my $module =$soc->soc_get_module($id);
|
my $module_name =$soc->soc_get_module_name($id);
|
my $module_name =$soc->soc_get_module_name($id);
|
my $category =$soc->soc_get_category($id);
|
my $category =$soc->soc_get_category($id);
|
|
|
my $inst = $soc->soc_get_instance_name($id);
|
my $inst = $soc->soc_get_instance_name($id);
|
Line 133... |
Line 142... |
$top_ip->top_add_def_to_instance($id,'module',$module);
|
$top_ip->top_add_def_to_instance($id,'module',$module);
|
$top_ip->top_add_def_to_instance($id,'module_name',$module_name);
|
$top_ip->top_add_def_to_instance($id,'module_name',$module_name);
|
$top_ip->top_add_def_to_instance($id,'category',$category);
|
$top_ip->top_add_def_to_instance($id,'category',$category);
|
$top_ip->top_add_def_to_instance($id,'instance',$inst);
|
$top_ip->top_add_def_to_instance($id,'instance',$inst);
|
|
|
|
#
|
|
|
|
|
|
|
|
|
#module name
|
#module name
|
$inst_v=( defined $instance_param_v )? "$module_name #(\n": $module_name ;
|
$inst_v=( defined $instance_param_v )? "$module_name #(\n": $module_name ;
|
|
|
|
|
|
|
#module parameters
|
#module parameters
|
$inst_v=( defined $instance_param_v)? "$inst_v $instance_param_v\n\t)": $inst_v;
|
$inst_v=( defined $instance_param_v)? "$inst_v $instance_param_v\n\t)": $inst_v;
|
#module instance name
|
#module instance name
|
$inst_v="$inst_v $inst \t(\n";
|
$inst_v="$inst_v $inst \t(\n";
|
|
|
#module ports
|
#module ports
|
$counter=0;
|
$counter=0;
|
foreach my $port (@ports){
|
foreach my $port (@ports){
|
my ($type,$range,$intfc_name,$i_port)=$ip->ip_get_port($category,$module,$port);
|
my ($type,$range,$intfc_name,$i_port)=$ip->ip_get_port($category,$module,$port);
|
my $assigned_port;
|
my $assigned_port;
|
Line 302... |
Line 305... |
|
|
|
|
}
|
}
|
$inst_v="$inst_v\t);\n";
|
$inst_v="$inst_v\t);\n";
|
|
|
|
my $hdr =$ip->ip_get($category,$module,'system_v');
|
|
if(defined $hdr){
|
|
$hdr=replace_golb_var($hdr,\%params);
|
|
$$system_v= "$$system_v $hdr\n";
|
|
}
|
|
|
|
|
return ($param_v, $local_param_v, $wire_def_v, $inst_v, $plugs_assign_v, $sockets_assign_v,$io_full_v,$io_top_full_v,$param_pass_v);
|
return ($param_v, $local_param_v, $wire_def_v, $inst_v, $plugs_assign_v, $sockets_assign_v,$io_full_v,$io_top_full_v,$param_pass_v);
|
|
|
|
|
Line 926... |
Line 933... |
\tparameter\tSW_LOC=\"$sw_path\"\n,";
|
\tparameter\tSW_LOC=\"$sw_path\"\n,";
|
|
|
my $param_pass_v="\t.CORE_ID(CORE_ID),\n\t.SW_LOC(SW_LOC)";
|
my $param_pass_v="\t.CORE_ID(CORE_ID),\n\t.SW_LOC(SW_LOC)";
|
my $body_v;
|
my $body_v;
|
|
|
my ($param_v_all, $local_param_v_all, $wire_def_v_all, $inst_v_all, $plugs_assign_v_all, $sockets_assign_v_all,$io_full_v_all,$io_top_full_v_all);
|
my ($param_v_all, $local_param_v_all, $wire_def_v_all, $inst_v_all, $plugs_assign_v_all, $sockets_assign_v_all,$io_full_v_all,$io_top_full_v_all,$system_v);
|
my $wires=soc->new_wires();
|
my $wires=soc->new_wires();
|
my $intfc=interface->interface_new();
|
my $intfc=interface->interface_new();
|
|
|
|
|
foreach my $id (@instances){
|
foreach my $id (@instances){
|
my ($param_v, $local_param_v, $wire_def_v, $inst_v, $plugs_assign_v, $sockets_assign_v,$io_full_v,$io_top_full_v)=gen_module_inst($id,$soc,\$io_sim_v,\$io_top_sim_v,\$param_as_in_v,$top_ip,$intfc,$wires,\$param_pass_v);
|
my ($param_v, $local_param_v, $wire_def_v, $inst_v, $plugs_assign_v, $sockets_assign_v,$io_full_v,$io_top_full_v,$system_v)=gen_module_inst($id,$soc,\$io_sim_v,\$io_top_sim_v,\$param_as_in_v,$top_ip,$intfc,$wires,\$param_pass_v,\$system_v);
|
|
|
my $inst = $soc->soc_get_instance_name($id);
|
my $inst = $soc->soc_get_instance_name($id);
|
add_text_to_string(\$body_v,"/*******************\n*\n*\t$inst\n*\n*\n*********************/\n");
|
add_text_to_string(\$body_v,"/*******************\n*\n*\t$inst\n*\n*\n*********************/\n");
|
|
|
add_text_to_string(\$local_param_v_all,"$local_param_v\n") if(defined($local_param_v));
|
add_text_to_string(\$local_param_v_all,"$local_param_v\n") if(defined($local_param_v));
|