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/script
- from Rev 28 to Rev 32
- ↔ Reverse comparison
Rev 28 → Rev 32
/parameter.sh
1,7 → 1,7
#!/bin/sh |
|
CORE_NUM(){ |
# local variable x and y with passed args |
# local variable x and y with passed args |
local x=$1 |
local y=$2 |
|
10,14 → 10,14
|
|
# NoC parameters: |
V=2 # number of VC per port |
TOPOLOGY="MESH" #"MESH" or "TORUS" |
V=2 # number of VC per port |
TOPOLOGY="MESH" #"MESH" or "TORUS" |
P="(TOPOLOGY==\"RING\")? 3 : 5" # number of port per router |
B=4 # buffer space :flit per VC |
NX=8 # number of node in x axis |
NY=8 # number of node in y axis |
C=1 # number of flit class |
Fpay=32 #flit payload width |
Fpay=32 #flit payload width |
MUX_TYPE="ONE_HOT" #crossbar multiplexer type : "ONE_HOT" or "BINARY" |
VC_REALLOCATION_TYPE="NONATOMIC" # "ATOMIC" or "NONATOMIC" |
COMBINATION_TYPE="COMB_NONSPEC" # "BASELINE" or "COMB_SPEC1" or "COMB_SPEC2" or "COMB_NONSPEC" |
24,17 → 24,17
FIRST_ARBITER_EXT_P_EN=0 |
|
ROUTE_NAME="XY" # Routing algorithm |
# mesh : "XY" , "WEST_FIRST" , "NORTH_LAST" , "NEGETIVE_FIRST" , "DUATO" |
# mesh : "XY" , "WEST_FIRST" , "NORTH_LAST" , "NEGETIVE_FIRST" , "DUATO" |
# torus: "TRANC_XY" , "TRANC_WEST_FIRST", "TRANC_NORTH_LAST", "TRANC_NEGETIVE_FIRST", "TRANC_DUATO" |
|
|
CLASS_SETTING="{CVw{1'b1}}" |
|
SSA_EN="NO" |
|
CLASS_SETTING="{CVw{1'b1}}" |
|
SSA_EN="NO" |
|
|
ADD_PIPREG_AFTER_CROSSBAR=0 |
|
|
ADD_PIPREG_AFTER_CROSSBAR=0 |
|
#simulation parameters: |
C0_p=100 # the percentage of injected packets with class 0 |
C1_p=0 |
44,13 → 44,13
|
|
# Simulation parameters: |
AVG_LATENCY_METRIC="HEAD_2_TAIL" |
# HEAD_2_TAIL : The average latency is calculated based on the time when the head flit is injected until the tail flit is received |
# HEAD_2_HEAD : The average latency is calculated based on the time when the head flit is injected until it reachs the destination |
AVG_LATENCY_METRIC="HEAD_2_TAIL" |
# HEAD_2_TAIL : The average latency is calculated based on the time when the head flit is injected until the tail flit is received |
# HEAD_2_HEAD : The average latency is calculated based on the time when the head flit is injected until it reachs the destination |
TRAFFIC="TRANSPOSE2" # "RANDOM", "TRANSPOSE1","TRANSPOSE2", "HOTSPOT"; |
#Hotspot Traffic setting |
HOTSPOT_PERCENTAGE=3 #maximum 20 |
HOTSOPT_NUM=4 #maximum 5 |
HOTSPOT_PERCENTAGE=3 #maximum 20 |
HOTSOPT_NUM=4 #maximum 5 |
HOTSPOT_CORE_1=$(CORE_NUM 1 1) |
HOTSPOT_CORE_2=$(CORE_NUM 1 3) |
HOTSPOT_CORE_3=$(CORE_NUM 3 1) |
60,124 → 60,124
|
|
|
MAX_PCK_NUM=128000 |
MAX_PCK_NUM=128000 |
MAX_SIM_CLKs=100000 |
MAX_PCK_SIZ=10 # maximum flit number in a single packet |
MAX_PCK_SIZ=10 # maximum flit number in a single packet |
TIMSTMP_FIFO_NUM=64 |
|
|
|
ESCAP_VC_MASK="1" # mask escape vc |
DEBUG_EN=1 |
|
CONGESTION_INDEX=3 # 0: packets are routed to the ports with more available VCs |
# 1: packets are routed to the ports with more available credits |
# 2: packets are routed to the ports connected to the routers with less active ivc requests |
# 3: packets are routed to the ports connected to the routers with less active ivc requests that are not granted |
ESCAP_VC_MASK="1" # mask escape vc |
DEBUG_EN=1 |
|
CONGESTION_INDEX=3 # 0: packets are routed to the ports with more available VCs |
# 1: packets are routed to the ports with more available credits |
# 2: packets are routed to the ports connected to the routers with less active ivc requests |
# 3: packets are routed to the ports connected to the routers with less active ivc requests that are not granted |
|
|
|
|
|
# Simulation C file constant: |
PACKET_SIZE=2 # packet size in flit. Minimum is 2 |
PACKET_SIZE=2 # packet size in flit. Minimum is 2 |
|
|
# |
ROUTE_SUBFUNC="NORTH_LAST" # "NORTH_LAST" ,"XY" |
AVC_ATOMIC_EN=0 |
STND_DEV_EN=0 # 1: generate standard devision |
|
ROUTE_SUBFUNC="NORTH_LAST" # "NORTH_LAST" ,"XY" |
AVC_ATOMIC_EN=0 |
STND_DEV_EN=0 # 1: generate standard devision |
|
generate_parameter_v (){ |
printf " \`ifdef INCLUDE_PARAM \n\n" >> parameter.v |
printf " parameter V=$V;\n" >> parameter.v |
printf " parameter TOPOLOGY=\"$TOPOLOGY\";\n" >> parameter.v |
printf " parameter P=$P;\n" >> parameter.v |
printf " parameter B=$B;\n" >> parameter.v |
printf " parameter NX=$NX;\n" >> parameter.v |
printf " parameter NY=$NY;\n" >> parameter.v |
printf " parameter C=$C;\n" >> parameter.v |
printf " parameter Fpay=$Fpay;\n" >> parameter.v |
printf " parameter MUX_TYPE=\"$MUX_TYPE\";\n" >> parameter.v |
printf " parameter VC_REALLOCATION_TYPE=\"$VC_REALLOCATION_TYPE\";\n" >> parameter.v |
printf " parameter COMBINATION_TYPE=\"$COMBINATION_TYPE\";\n" >> parameter.v |
printf " parameter FIRST_ARBITER_EXT_P_EN=$FIRST_ARBITER_EXT_P_EN;\n" >> parameter.v |
|
printf " parameter ROUTE_NAME=\"$ROUTE_NAME\";\n" >> parameter.v |
printf " parameter CONGESTION_INDEX=$CONGESTION_INDEX;\n" >> parameter.v |
printf " parameter C0_p=$C0_p;\n" >> parameter.v |
printf " \`ifdef INCLUDE_PARAM \n\n" >> parameter.v |
printf " parameter V=$V;\n" >> parameter.v |
printf " parameter TOPOLOGY=\"$TOPOLOGY\";\n" >> parameter.v |
printf " parameter P=$P;\n" >> parameter.v |
printf " parameter B=$B;\n" >> parameter.v |
printf " parameter NX=$NX;\n" >> parameter.v |
printf " parameter NY=$NY;\n" >> parameter.v |
printf " parameter C=$C;\n" >> parameter.v |
printf " parameter Fpay=$Fpay;\n" >> parameter.v |
printf " parameter MUX_TYPE=\"$MUX_TYPE\";\n" >> parameter.v |
printf " parameter VC_REALLOCATION_TYPE=\"$VC_REALLOCATION_TYPE\";\n" >> parameter.v |
printf " parameter COMBINATION_TYPE=\"$COMBINATION_TYPE\";\n" >> parameter.v |
printf " parameter FIRST_ARBITER_EXT_P_EN=$FIRST_ARBITER_EXT_P_EN;\n" >> parameter.v |
|
printf " parameter ROUTE_NAME=\"$ROUTE_NAME\";\n" >> parameter.v |
printf " parameter CONGESTION_INDEX=$CONGESTION_INDEX;\n" >> parameter.v |
printf " parameter C0_p=$C0_p;\n" >> parameter.v |
printf " parameter C1_p=$C1_p;\n" >> parameter.v |
printf " parameter C2_p=$C2_p;\n" >> parameter.v |
printf " parameter C3_p=$C3_p;\n" >> parameter.v |
printf " parameter TRAFFIC=\"$TRAFFIC\";\n" >> parameter.v |
printf " parameter HOTSPOT_PERCENTAGE=$HOTSPOT_PERCENTAGE;\n" >> parameter.v |
printf " parameter HOTSOPT_NUM=$HOTSOPT_NUM;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_1=$HOTSPOT_CORE_1;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_2=$HOTSPOT_CORE_2;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_3=$HOTSPOT_CORE_3;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_4=$HOTSPOT_CORE_4;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_5=$HOTSPOT_CORE_5;\n" >> parameter.v |
printf " parameter MAX_PCK_NUM=$MAX_PCK_NUM;\n" >> parameter.v |
printf " parameter MAX_SIM_CLKs=$MAX_SIM_CLKs;\n" >> parameter.v |
printf " parameter MAX_PCK_SIZ=$MAX_PCK_SIZ;\n" >> parameter.v |
printf " parameter TIMSTMP_FIFO_NUM=$TIMSTMP_FIFO_NUM;\n" >> parameter.v |
printf " parameter ROUTE_TYPE = (ROUTE_NAME == \"XY\" || ROUTE_NAME == \"TRANC_XY\" )? \"DETERMINISTIC\" : \n" >> parameter.v |
printf " (ROUTE_NAME == \"DUATO\" || ROUTE_NAME == \"TRANC_DUATO\" )? \"FULL_ADAPTIVE\": \"PAR_ADAPTIVE\"; \n" >> parameter.v |
printf " parameter DEBUG_EN=$DEBUG_EN;\n" >> parameter.v |
printf " parameter ROUTE_SUBFUNC= \"$ROUTE_SUBFUNC\";\n">> parameter.v |
printf " parameter AVC_ATOMIC_EN= $AVC_ATOMIC_EN;\n">> parameter.v |
printf " parameter AVG_LATENCY_METRIC= \"$AVG_LATENCY_METRIC\";\n">> parameter.v |
printf " parameter ADD_PIPREG_AFTER_CROSSBAR= $ADD_PIPREG_AFTER_CROSSBAR;\n" >> parameter.v |
printf " parameter CVw=(C==0)? V : C * V;\n" >> parameter.v |
printf " parameter [CVw-1: 0] CLASS_SETTING = $CLASS_SETTING;\n">> parameter.v |
printf " parameter [V-1 : 0] ESCAP_VC_MASK=$ESCAP_VC_MASK;\n" >> parameter.v |
printf " parameter SSA_EN= \"$SSA_EN\";\n">> parameter.v |
printf " \n\n \`endif " >> parameter.v |
|
|
printf " parameter TRAFFIC=\"$TRAFFIC\";\n" >> parameter.v |
printf " parameter HOTSPOT_PERCENTAGE=$HOTSPOT_PERCENTAGE;\n" >> parameter.v |
printf " parameter HOTSOPT_NUM=$HOTSOPT_NUM;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_1=$HOTSPOT_CORE_1;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_2=$HOTSPOT_CORE_2;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_3=$HOTSPOT_CORE_3;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_4=$HOTSPOT_CORE_4;\n" >> parameter.v |
printf " parameter HOTSPOT_CORE_5=$HOTSPOT_CORE_5;\n" >> parameter.v |
printf " parameter MAX_PCK_NUM=$MAX_PCK_NUM;\n" >> parameter.v |
printf " parameter MAX_SIM_CLKs=$MAX_SIM_CLKs;\n" >> parameter.v |
printf " parameter MAX_PCK_SIZ=$MAX_PCK_SIZ;\n" >> parameter.v |
printf " parameter TIMSTMP_FIFO_NUM=$TIMSTMP_FIFO_NUM;\n" >> parameter.v |
printf " parameter ROUTE_TYPE = (ROUTE_NAME == \"XY\" || ROUTE_NAME == \"TRANC_XY\" )? \"DETERMINISTIC\" : \n" >> parameter.v |
printf " (ROUTE_NAME == \"DUATO\" || ROUTE_NAME == \"TRANC_DUATO\" )? \"FULL_ADAPTIVE\": \"PAR_ADAPTIVE\"; \n" >> parameter.v |
printf " parameter DEBUG_EN=$DEBUG_EN;\n" >> parameter.v |
printf " parameter ROUTE_SUBFUNC= \"$ROUTE_SUBFUNC\";\n">> parameter.v |
printf " parameter AVC_ATOMIC_EN= $AVC_ATOMIC_EN;\n">> parameter.v |
printf " parameter AVG_LATENCY_METRIC= \"$AVG_LATENCY_METRIC\";\n">> parameter.v |
printf " parameter ADD_PIPREG_AFTER_CROSSBAR= $ADD_PIPREG_AFTER_CROSSBAR;\n" >> parameter.v |
printf " parameter CVw=(C==0)? V : C * V;\n" >> parameter.v |
printf " parameter [CVw-1: 0] CLASS_SETTING = $CLASS_SETTING;\n">> parameter.v |
printf " parameter [V-1 : 0] ESCAP_VC_MASK=$ESCAP_VC_MASK;\n" >> parameter.v |
printf " parameter SSA_EN= \"$SSA_EN\";\n">> parameter.v |
printf " \n\n \`endif " >> parameter.v |
|
|
} |
|
generate_parameter_h (){ |
printf " #ifndef INCLUDE_PARAM\n " >> parameter.h |
printf " #define INCLUDE_PARAM\n\n" >> parameter.h |
printf "\t #define V $V\n" >> parameter.h |
printf "\t #define B $B\n" >> parameter.h |
printf "\t #define NX $NX\n" >> parameter.h |
printf "\t #define NY $NY\n" >> parameter.h |
printf "\t #define C $C\n" >> parameter.h |
printf "\t #define Fpay $Fpay\n" >> parameter.h |
printf "\t #define MUX_TYPE \"$MUX_TYPE\"\n" >> parameter.h |
printf "\t #define VC_REALLOCATION_TYPE \"$VC_REALLOCATION_TYPE\"\n" >> parameter.h |
printf "\t #define COMBINATION_TYPE \"$COMBINATION_TYPE\"\n" >> parameter.h |
printf "\t #define FIRST_ARBITER_EXT_P_EN $FIRST_ARBITER_EXT_P_EN\n" >> parameter.h |
printf "\t #define TOPOLOGY \"$TOPOLOGY\"\n" >> parameter.h |
printf "\t #define ROUTE_NAME \"$ROUTE_NAME\"\n" >> parameter.h |
printf "\t #define C0_p $C0_p\n" >> parameter.h |
printf "\t #define C1_p $C1_p\n" >> parameter.h |
printf "\t #define C2_p $C2_p\n" >> parameter.h |
printf "\t #define C3_p $C3_p\n" >> parameter.h |
printf "\t #define TRAFFIC \"$TRAFFIC\"\n" >> parameter.h |
printf "\t #define HOTSPOT_PERCENTAGE $HOTSPOT_PERCENTAGE\n" >> parameter.h |
printf "\t #define HOTSOPT_NUM $HOTSOPT_NUM\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_1 $HOTSPOT_CORE_1\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_2 $HOTSPOT_CORE_2\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_3 $HOTSPOT_CORE_3\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_4 $HOTSPOT_CORE_4\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_5 $HOTSPOT_CORE_5\n" >> parameter.h |
printf "\t #define MAX_PCK_NUM $MAX_PCK_NUM\n" >> parameter.h |
printf "\t #define MAX_SIM_CLKs $MAX_SIM_CLKs\n" >> parameter.h |
printf "\t #define MAX_PCK_SIZ $MAX_PCK_SIZ\n" >> parameter.h |
printf "\t #define TIMSTMP_FIFO_NUM $TIMSTMP_FIFO_NUM\n" >> parameter.h |
printf "\t #define PACKET_SIZE $PACKET_SIZE\n" >> parameter.h |
printf "\t #define DEBUG_EN $DEBUG_EN\n" >> parameter.h |
printf "\t #define ROUTE_SUBFUNC \"$ROUTE_SUBFUNC\"\n" >> parameter.h |
printf "\t #define AVC_ATOMIC_EN $AVC_ATOMIC_EN\n" >> parameter.h |
printf "\t #define CONGESTION_INDEX $CONGESTION_INDEX\n">>parameter.h |
printf "\t #define STND_DEV_EN $STND_DEV_EN\n">> parameter.h |
printf "\t #define AVG_LATENCY_METRIC \"$AVG_LATENCY_METRIC\"\n">> parameter.h |
printf "\t #define ADD_PIPREG_AFTER_CROSSBAR $ADD_PIPREG_AFTER_CROSSBAR\n" >> parameter.h |
printf "\t #define CVw (C==0)? V : C * V\n" >> parameter.h |
printf "\t #define CLASS_SETTING \"$CLASS_SETTING\"\n">> parameter.h |
printf "\t #define ESCAP_VC_MASK $ESCAP_VC_MASK\n">> parameter.h |
printf "\t #define SSA_EN \"$SSA_EN\"\n" >> parameter.h |
printf " \n\n #endif " >> parameter.h |
|
printf " #ifndef INCLUDE_PARAM\n " >> parameter.h |
printf " #define INCLUDE_PARAM\n\n" >> parameter.h |
printf "\t #define V $V\n" >> parameter.h |
printf "\t #define B $B\n" >> parameter.h |
printf "\t #define NX $NX\n" >> parameter.h |
printf "\t #define NY $NY\n" >> parameter.h |
printf "\t #define C $C\n" >> parameter.h |
printf "\t #define Fpay $Fpay\n" >> parameter.h |
printf "\t #define MUX_TYPE \"$MUX_TYPE\"\n" >> parameter.h |
printf "\t #define VC_REALLOCATION_TYPE \"$VC_REALLOCATION_TYPE\"\n" >> parameter.h |
printf "\t #define COMBINATION_TYPE \"$COMBINATION_TYPE\"\n" >> parameter.h |
printf "\t #define FIRST_ARBITER_EXT_P_EN $FIRST_ARBITER_EXT_P_EN\n" >> parameter.h |
printf "\t #define TOPOLOGY \"$TOPOLOGY\"\n" >> parameter.h |
printf "\t #define ROUTE_NAME \"$ROUTE_NAME\"\n" >> parameter.h |
printf "\t #define C0_p $C0_p\n" >> parameter.h |
printf "\t #define C1_p $C1_p\n" >> parameter.h |
printf "\t #define C2_p $C2_p\n" >> parameter.h |
printf "\t #define C3_p $C3_p\n" >> parameter.h |
printf "\t #define TRAFFIC \"$TRAFFIC\"\n" >> parameter.h |
printf "\t #define HOTSPOT_PERCENTAGE $HOTSPOT_PERCENTAGE\n" >> parameter.h |
printf "\t #define HOTSOPT_NUM $HOTSOPT_NUM\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_1 $HOTSPOT_CORE_1\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_2 $HOTSPOT_CORE_2\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_3 $HOTSPOT_CORE_3\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_4 $HOTSPOT_CORE_4\n" >> parameter.h |
printf "\t #define HOTSPOT_CORE_5 $HOTSPOT_CORE_5\n" >> parameter.h |
printf "\t #define MAX_PCK_NUM $MAX_PCK_NUM\n" >> parameter.h |
printf "\t #define MAX_SIM_CLKs $MAX_SIM_CLKs\n" >> parameter.h |
printf "\t #define MAX_PCK_SIZ $MAX_PCK_SIZ\n" >> parameter.h |
printf "\t #define TIMSTMP_FIFO_NUM $TIMSTMP_FIFO_NUM\n" >> parameter.h |
printf "\t #define PACKET_SIZE $PACKET_SIZE\n" >> parameter.h |
printf "\t #define DEBUG_EN $DEBUG_EN\n" >> parameter.h |
printf "\t #define ROUTE_SUBFUNC \"$ROUTE_SUBFUNC\"\n" >> parameter.h |
printf "\t #define AVC_ATOMIC_EN $AVC_ATOMIC_EN\n" >> parameter.h |
printf "\t #define CONGESTION_INDEX $CONGESTION_INDEX\n">>parameter.h |
printf "\t #define STND_DEV_EN $STND_DEV_EN\n">> parameter.h |
printf "\t #define AVG_LATENCY_METRIC \"$AVG_LATENCY_METRIC\"\n">> parameter.h |
printf "\t #define ADD_PIPREG_AFTER_CROSSBAR $ADD_PIPREG_AFTER_CROSSBAR\n" >> parameter.h |
printf "\t #define CVw (C==0)? V : C * V\n" >> parameter.h |
printf "\t #define CLASS_SETTING \"$CLASS_SETTING\"\n">> parameter.h |
printf "\t #define ESCAP_VC_MASK $ESCAP_VC_MASK\n">> parameter.h |
printf "\t #define SSA_EN \"$SSA_EN\"\n" >> parameter.h |
printf " \n\n #endif " >> parameter.h |
|
} |
/verilator_compile_simulator.sh
0,0 → 1,26
#!/bin/sh |
|
set -e |
# Any subsequent commands which fail will cause the shell script to exit immediately |
|
script_path=$(pwd) |
path=$script_path/.. |
src_noc_path=$path/src_noc |
src_modelsim_path=$path/src_modelsim |
src_verilator_path=$path/src_verilator |
comp_path=$path/../mpsoc_work/verilator |
work_path=$comp_path/work |
obj_dir_path=$work_path/processed_rtl/obj_dir/ |
|
mkdir -p $work_path/bin |
rm -rf $work_path/bin/testbench |
|
cp Makefile $obj_dir_path |
cp $src_verilator_path/simulator.cpp $obj_dir_path/testbench.cpp |
cp $src_verilator_path/parameter.h $obj_dir_path |
cd $obj_dir_path |
make sim |
cp testbench $work_path/bin |
echo done! |
|
|
verilator_compile_simulator.sh
Property changes :
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property