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

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

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [perl_gui/] [lib/] [perl/] [hdr_file_gen.pl] - Blame information for rev 17

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 17 alirezamon
use lib 'lib/perl';
2
 
3
use strict;
4
use warnings;
5
use soc;
6
use ip;
7
 
8
 
9
 
10
##################
11
#     header file gen
12
##################
13
 
14
 
15
 
16
 
17
sub generate_header_file{
18
        my ($soc)= @_;
19
        my $soc_name=$soc->soc_get_soc_name();
20
        $soc_name = uc($soc_name);
21
        if(!defined $soc_name){$soc_name='soc'};
22
 
23
        my @instances=$soc->soc_get_all_instances();
24
        my $system_h="#ifndef $soc_name\_SYSTEM_H\n\t#define $soc_name\_SYSTEM_H\n";
25
        #add_text_to_string(\$system_h, "\n #include <stdio.h> \n #include <stdlib.h> \n #include \"aemb/core.hh\"");
26
 
27
 
28
        my $ip = ip->lib_new ();
29
 
30
 
31
        foreach my $id (@instances){
32
                my $module              =$soc->soc_get_module($id);
33
                my $module_name =$soc->soc_get_module_name($id);
34
                my $category    =$soc->soc_get_category($id);
35
                my $inst                =$soc->soc_get_instance_name($id);
36
 
37
                add_text_to_string(\$system_h,"\n \n /*  $inst   */ \n");
38
                $inst=uc($inst);
39
                # print base address
40
                my @plugs= $soc->soc_get_all_plugs_of_an_instance($id);
41
                foreach my $plug (@plugs){
42
                        my @nums=$soc->soc_list_plug_nums($id,$plug);
43
                        foreach my $num (@nums){
44
                                my ($addr,$base,$end,$name,$connect_id,$connect_socket,$connect_socket_num)=$soc->soc_get_plug($id,$plug,$num);
45
                                        #wishbone slave address
46
                                        if((defined $connect_socket) && ($connect_socket eq 'wb_slave')){
47
 
48
                                                #print "$addr,$base,$end,$connect_id,$connect_socket,$connect_socket_num\n";
49
                                                my $base_hex=sprintf("0X%08x", $base);
50
                                                my $end_hex=sprintf("0X%08x", $end);
51
 
52
                                                add_text_to_string(\$system_h,"#define $inst\_BASE_ADDR$num \t\t        $base_hex\n");
53
                                                add_text_to_string(\$system_h,"#define $inst\_BASE_ADDR \t\t    $inst\_BASE_ADDR0\n") if ($num==0);
54
 
55
 
56
                                        }
57
                                        #intrrupt 
58
                                        if((defined $connect_socket) && ($connect_socket eq 'interrupt_peripheral')){
59
                                                add_text_to_string(\$system_h,"//intrrupt flag location\n");
60
                                                add_text_to_string(\$system_h," #define $inst\_INT (1<<$connect_socket_num)\n") if(scalar (@nums)==1);
61
                                                add_text_to_string(\$system_h," #define $inst\_$num\_INT    (1<<$connect_socket_num)\n") if(scalar (@nums)>1);
62
                                        }
63
 
64
                        }
65
                }
66
 
67
 
68
                my $hdr                 =$ip->ip_get_hdr($category,$module);
69
                if(defined $hdr){
70
                        #replace IP name
71
                        my $key='\$IP\\\\';
72
                        ($hdr=$hdr)=~s/$key/$inst/g;
73
 
74
                        $key='\$IP';
75
                        ($hdr=$hdr)=~s/$key/$inst/g;
76
 
77
                        #replace BASE addr
78
                        $key='\$BASE';
79
                        ($hdr=$hdr)=~s/$key/$inst\_BASE_ADDR/g;
80
 
81
                        add_text_to_string(\$system_h,"$hdr\n");
82
                }
83
 
84
        }
85
 
86
        add_text_to_string(\$system_h,"#endif\n");
87
        return $system_h;
88
 
89
}
90
 
91
 
92
1

powered by: WebSVN 2.1.0

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