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/] [script/] [parameter.sh] - Blame information for rev 45

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 45 alirezamon
#!/bin/bash
2 16 alirezamon
 
3
CORE_NUM(){
4 32 alirezamon
  # local variable x and y with passed args
5 16 alirezamon
  local x=$1
6
  local y=$2
7
 
8
  echo $(( $x + ($y*$NX) ))
9
}
10
 
11
 
12
# NoC parameters:
13 32 alirezamon
    V=2   # number of VC per port
14
    TOPOLOGY="MESH" #"MESH" or "TORUS"
15 38 alirezamon
    P="localparam P=  (TOPOLOGY==\"RING\" || TOPOLOGY==\"LINE\")? 3 : 5"    # number of port per router
16 16 alirezamon
    B=4   # buffer space :flit per VC
17
    NX=8  # number of node in x axis
18
    NY=8  # number of node in y axis
19
    C=1   #  number of flit class
20 32 alirezamon
    Fpay=32    #flit payload width
21 16 alirezamon
    MUX_TYPE="ONE_HOT"  #crossbar multiplexer type : "ONE_HOT" or "BINARY"
22
    VC_REALLOCATION_TYPE="NONATOMIC" # "ATOMIC" or "NONATOMIC"
23
    COMBINATION_TYPE="COMB_NONSPEC" # "BASELINE" or "COMB_SPEC1" or "COMB_SPEC2" or "COMB_NONSPEC"
24
    FIRST_ARBITER_EXT_P_EN=0
25 28 alirezamon
 
26 16 alirezamon
    ROUTE_NAME="XY" # Routing algorithm
27 32 alirezamon
    #    mesh :  "XY"        , "WEST_FIRST"      , "NORTH_LAST"      , "NEGETIVE_FIRST"      , "DUATO"
28 16 alirezamon
    #   torus:  "TRANC_XY"  , "TRANC_WEST_FIRST", "TRANC_NORTH_LAST", "TRANC_NEGETIVE_FIRST", "TRANC_DUATO"
29
 
30 32 alirezamon
 
31
    CLASS_SETTING="{CVw{1'b1}}"
32
 
33 38 alirezamon
    SSA_EN="NO"  # "YES","NO"
34
    SWA_ARBITER_TYPE="RRA" # "RRA"  ,"WRRA"
35
    WEIGHTw=4
36 32 alirezamon
 
37
    ADD_PIPREG_AFTER_CROSSBAR=0
38
 
39 16 alirezamon
#simulation parameters:
40
    C0_p=100    #  the percentage of injected packets with class 0
41
    C1_p=0
42
    C2_p=0
43
    C3_p=0
44
 
45
 
46
 
47
 # Simulation parameters:
48 32 alirezamon
    AVG_LATENCY_METRIC="HEAD_2_TAIL"
49
    # HEAD_2_TAIL : The average latency is calculated based on the time when the head flit is injected until the tail flit is received
50
    # HEAD_2_HEAD : The average latency is calculated based on the time when the head flit is injected until it reachs the destination
51 16 alirezamon
    TRAFFIC="TRANSPOSE2"     # "RANDOM", "TRANSPOSE1","TRANSPOSE2", "HOTSPOT";
52
    #Hotspot Traffic setting
53 32 alirezamon
    HOTSPOT_PERCENTAGE=3               #maximum 20
54
    HOTSOPT_NUM=4                    #maximum 5
55 16 alirezamon
    HOTSPOT_CORE_1=$(CORE_NUM 1 1)
56
    HOTSPOT_CORE_2=$(CORE_NUM 1 3)
57
    HOTSPOT_CORE_3=$(CORE_NUM 3 1)
58
    HOTSPOT_CORE_4=$(CORE_NUM 3 3)
59
    HOTSPOT_CORE_5=$(CORE_NUM 2 2)
60
 
61
 
62
 
63
 
64 32 alirezamon
    MAX_PCK_NUM=128000
65 16 alirezamon
    MAX_SIM_CLKs=100000
66 32 alirezamon
    MAX_PCK_SIZ=10  # maximum flit number in a single packet
67 16 alirezamon
    TIMSTMP_FIFO_NUM=64
68
 
69
 
70
 
71 32 alirezamon
    ESCAP_VC_MASK="1"  # mask escape vc
72
    DEBUG_EN=1
73
 
74
    CONGESTION_INDEX=3    # 0: packets are routed to the ports with more available VCs
75
                        # 1: packets are routed to the ports with more available credits
76
                            # 2: packets are routed to the ports connected to the routers with less active ivc requests
77
                        # 3: packets are routed to the ports connected to the routers with less active ivc requests that are not granted
78 16 alirezamon
 
79 32 alirezamon
 
80
 
81 16 alirezamon
# Simulation C file constant:
82 32 alirezamon
    PACKET_SIZE=2    # packet size in flit. Minimum is 2
83 16 alirezamon
 
84
 
85
#
86 32 alirezamon
    ROUTE_SUBFUNC="NORTH_LAST"  # "NORTH_LAST" ,"XY"
87
    AVC_ATOMIC_EN=0
88
    STND_DEV_EN=0 # 1: generate standard devision
89
 
90 16 alirezamon
generate_parameter_v (){
91 32 alirezamon
    printf " \`ifdef     INCLUDE_PARAM \n\n" >> parameter.v
92
    printf " parameter V=$V;\n" >> parameter.v
93
    printf " parameter TOPOLOGY=\"$TOPOLOGY\";\n" >> parameter.v
94
    printf " parameter P=$P;\n" >> parameter.v
95
    printf " parameter B=$B;\n" >> parameter.v
96
    printf " parameter NX=$NX;\n" >> parameter.v
97
    printf " parameter NY=$NY;\n" >> parameter.v
98
    printf " parameter C=$C;\n" >> parameter.v
99
    printf " parameter Fpay=$Fpay;\n" >> parameter.v
100
    printf " parameter MUX_TYPE=\"$MUX_TYPE\";\n" >> parameter.v
101
    printf " parameter VC_REALLOCATION_TYPE=\"$VC_REALLOCATION_TYPE\";\n" >> parameter.v
102
    printf " parameter COMBINATION_TYPE=\"$COMBINATION_TYPE\";\n" >> parameter.v
103
    printf " parameter FIRST_ARBITER_EXT_P_EN=$FIRST_ARBITER_EXT_P_EN;\n" >> parameter.v
104
 
105
    printf " parameter ROUTE_NAME=\"$ROUTE_NAME\";\n" >> parameter.v
106
    printf " parameter CONGESTION_INDEX=$CONGESTION_INDEX;\n" >> parameter.v
107
    printf " parameter C0_p=$C0_p;\n" >> parameter.v
108 16 alirezamon
    printf " parameter C1_p=$C1_p;\n" >> parameter.v
109
    printf " parameter C2_p=$C2_p;\n" >> parameter.v
110
    printf " parameter C3_p=$C3_p;\n" >> parameter.v
111 32 alirezamon
    printf " parameter TRAFFIC=\"$TRAFFIC\";\n" >> parameter.v
112
    printf " parameter HOTSPOT_PERCENTAGE=$HOTSPOT_PERCENTAGE;\n" >> parameter.v
113
    printf " parameter HOTSOPT_NUM=$HOTSOPT_NUM;\n" >> parameter.v
114
    printf " parameter HOTSPOT_CORE_1=$HOTSPOT_CORE_1;\n" >> parameter.v
115
    printf " parameter HOTSPOT_CORE_2=$HOTSPOT_CORE_2;\n" >> parameter.v
116
    printf " parameter HOTSPOT_CORE_3=$HOTSPOT_CORE_3;\n" >> parameter.v
117
    printf " parameter HOTSPOT_CORE_4=$HOTSPOT_CORE_4;\n" >> parameter.v
118
    printf " parameter HOTSPOT_CORE_5=$HOTSPOT_CORE_5;\n" >> parameter.v
119
    printf " parameter MAX_PCK_NUM=$MAX_PCK_NUM;\n" >> parameter.v
120
    printf " parameter MAX_SIM_CLKs=$MAX_SIM_CLKs;\n" >> parameter.v
121
    printf " parameter MAX_PCK_SIZ=$MAX_PCK_SIZ;\n" >> parameter.v
122
    printf " parameter TIMSTMP_FIFO_NUM=$TIMSTMP_FIFO_NUM;\n" >> parameter.v
123
    printf " parameter ROUTE_TYPE = (ROUTE_NAME == \"XY\" || ROUTE_NAME == \"TRANC_XY\" )?    \"DETERMINISTIC\" : \n" >> parameter.v
124
    printf "                        (ROUTE_NAME == \"DUATO\" || ROUTE_NAME == \"TRANC_DUATO\" )?   \"FULL_ADAPTIVE\": \"PAR_ADAPTIVE\"; \n" >> parameter.v
125
    printf " parameter DEBUG_EN=$DEBUG_EN;\n" >> parameter.v
126
    printf " parameter ROUTE_SUBFUNC= \"$ROUTE_SUBFUNC\";\n">> parameter.v
127
    printf " parameter AVC_ATOMIC_EN= $AVC_ATOMIC_EN;\n">> parameter.v
128
    printf " parameter AVG_LATENCY_METRIC= \"$AVG_LATENCY_METRIC\";\n">> parameter.v
129
    printf " parameter ADD_PIPREG_AFTER_CROSSBAR= $ADD_PIPREG_AFTER_CROSSBAR;\n" >>  parameter.v
130
    printf " parameter CVw=(C==0)? V : C * V;\n" >>  parameter.v
131
    printf " parameter [CVw-1:   0] CLASS_SETTING = $CLASS_SETTING;\n">>  parameter.v
132
    printf " parameter [V-1    :    0] ESCAP_VC_MASK=$ESCAP_VC_MASK;\n" >> parameter.v
133 38 alirezamon
    printf " parameter SSA_EN= \"$SSA_EN\";\n">> parameter.v
134
    printf " parameter SWA_ARBITER_TYPE=\"$SWA_ARBITER_TYPE\";\n">> parameter.v
135
    printf " parameter WEIGHTw=$WEIGHTw;\n">> parameter.v
136 32 alirezamon
    printf " \n\n \`endif " >> parameter.v
137
 
138
 
139 16 alirezamon
}
140
 
141
generate_parameter_h (){
142 32 alirezamon
    printf " #ifndef     INCLUDE_PARAM\n " >> parameter.h
143
    printf " #define   INCLUDE_PARAM\n\n" >> parameter.h
144
    printf "\t #define    V    $V\n" >> parameter.h
145
    printf "\t #define    B    $B\n" >> parameter.h
146
    printf "\t #define    NX    $NX\n" >> parameter.h
147
    printf "\t #define    NY    $NY\n" >> parameter.h
148
    printf "\t #define    C    $C\n" >> parameter.h
149
    printf "\t #define    Fpay    $Fpay\n" >> parameter.h
150
    printf "\t #define    MUX_TYPE    \"$MUX_TYPE\"\n" >> parameter.h
151
    printf "\t #define    VC_REALLOCATION_TYPE    \"$VC_REALLOCATION_TYPE\"\n" >> parameter.h
152
    printf "\t #define    COMBINATION_TYPE    \"$COMBINATION_TYPE\"\n" >> parameter.h
153
    printf "\t #define    FIRST_ARBITER_EXT_P_EN    $FIRST_ARBITER_EXT_P_EN\n" >> parameter.h
154
    printf "\t #define    TOPOLOGY    \"$TOPOLOGY\"\n" >> parameter.h
155
    printf "\t #define    ROUTE_NAME    \"$ROUTE_NAME\"\n" >> parameter.h
156 38 alirezamon
    printf "\t #define    C0_p    $C0_p\n" >> parameter.h
157
    printf "\t #define    C1_p    $C1_p\n" >> parameter.h
158
    printf "\t #define    C2_p    $C2_p\n" >> parameter.h
159
    printf "\t #define    C3_p    $C3_p\n" >> parameter.h
160 32 alirezamon
    printf "\t #define    TRAFFIC    \"$TRAFFIC\"\n" >> parameter.h
161
    printf "\t #define    HOTSPOT_PERCENTAGE    $HOTSPOT_PERCENTAGE\n" >> parameter.h
162
    printf "\t #define    HOTSOPT_NUM    $HOTSOPT_NUM\n" >> parameter.h
163
    printf "\t #define    HOTSPOT_CORE_1    $HOTSPOT_CORE_1\n" >> parameter.h
164
    printf "\t #define    HOTSPOT_CORE_2    $HOTSPOT_CORE_2\n" >> parameter.h
165
    printf "\t #define    HOTSPOT_CORE_3    $HOTSPOT_CORE_3\n" >> parameter.h
166
    printf "\t #define    HOTSPOT_CORE_4    $HOTSPOT_CORE_4\n" >> parameter.h
167
    printf "\t #define    HOTSPOT_CORE_5    $HOTSPOT_CORE_5\n" >> parameter.h
168
    printf "\t #define    MAX_PCK_NUM            $MAX_PCK_NUM\n" >> parameter.h
169
    printf "\t #define    MAX_SIM_CLKs        $MAX_SIM_CLKs\n" >> parameter.h
170
    printf "\t #define    MAX_PCK_SIZ            $MAX_PCK_SIZ\n" >> parameter.h
171
    printf "\t #define    TIMSTMP_FIFO_NUM    $TIMSTMP_FIFO_NUM\n" >> parameter.h
172
    printf "\t #define    PACKET_SIZE    $PACKET_SIZE\n" >> parameter.h
173
    printf "\t #define    DEBUG_EN    $DEBUG_EN\n" >> parameter.h
174
    printf "\t #define    ROUTE_SUBFUNC \"$ROUTE_SUBFUNC\"\n" >> parameter.h
175
    printf "\t #define    AVC_ATOMIC_EN $AVC_ATOMIC_EN\n" >> parameter.h
176
    printf "\t #define    CONGESTION_INDEX $CONGESTION_INDEX\n">>parameter.h
177
    printf "\t #define    STND_DEV_EN    $STND_DEV_EN\n">> parameter.h
178 38 alirezamon
    printf "\t #define    AVG_LATENCY_METRIC    \"$AVG_LATENCY_METRIC\"\n">> parameter.h
179
    printf "\t #define    ADD_PIPREG_AFTER_CROSSBAR  $ADD_PIPREG_AFTER_CROSSBAR\n" >>   parameter.h
180
    printf "\t #define    CVw    (C==0)? V : C * V\n" >>  parameter.h
181
    printf "\t #define    CLASS_SETTING   \"$CLASS_SETTING\"\n">>  parameter.h
182
    printf "\t #define    ESCAP_VC_MASK    $ESCAP_VC_MASK\n">>  parameter.h
183
    printf "\t #define    SSA_EN \"$SSA_EN\"\n" >> parameter.h
184
    printf "\t #define    SWA_ARBITER_TYPE \"$SWA_ARBITER_TYPE\"\n">> parameter.h
185
    printf "\t #define    WEIGHTw=$WEIGHTw\n">> parameter.h
186 32 alirezamon
    printf " \n\n #endif " >> parameter.h
187
 
188 16 alirezamon
}

powered by: WebSVN 2.1.0

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