1 |
7 |
fafa1971 |
#!/bin/bash
|
2 |
|
|
|
3 |
49 |
fafa1971 |
# Check command line parameter
|
4 |
|
|
if ( (test $# != 1) || ((test $1 != "-me") && (test $1 != "-se") && (test $1 != "-ee")) ) then
|
5 |
|
|
echo "update_sparccore - Script to update SPARC Core sources from a fresh OpenSPARC installation";
|
6 |
|
|
echo "(C) 2007 by Simply RISC";
|
7 |
|
|
echo "Usage:";
|
8 |
|
|
echo " update_sparccore {-me|-se|-ee}";
|
9 |
|
|
echo "where parameter refers to the S1 Core version you want to obtain in your environment:";
|
10 |
|
|
echo " -me : S1 Core Memory-less Edition (single-thread, no L1 caches)";
|
11 |
|
|
echo " -se : S1 Core Single-thread Edition (single-thread, normal 16K+8K caches)";
|
12 |
|
|
echo " -ee : S1 Core Elite Edition (four threads support, normal 16K+8K caches)";
|
13 |
|
|
echo "NOTE: To run this script you MUST have the OpenSPARC T1 environment unpacked";
|
14 |
|
|
echo " and the T1_ROOT variable properly set in your S1_ROOT/sourceme file.";
|
15 |
|
|
exit 1;
|
16 |
|
|
fi
|
17 |
|
|
|
18 |
7 |
fafa1971 |
# Set source and destination directories
|
19 |
|
|
SRC_DIR=$T1_ROOT/design/sys/iop
|
20 |
|
|
DST_DIR=$S1_ROOT/hdl/rtl/sparc_core
|
21 |
|
|
|
22 |
|
|
# Clean destination directory
|
23 |
15 |
fafa1971 |
rm -f $DST_DIR/*.*
|
24 |
|
|
rm -f $DST_DIR/include/*.*
|
25 |
7 |
fafa1971 |
|
26 |
|
|
# Copy all the Verilog files of the SPARC Core into destination directory
|
27 |
|
|
cp $SRC_DIR/include/*.h $DST_DIR/include
|
28 |
|
|
cp $SRC_DIR/srams/rtl/*.v $DST_DIR
|
29 |
|
|
cp $SRC_DIR/analog/bw_clk/rtl/*.v $DST_DIR
|
30 |
|
|
cp $SRC_DIR/analog/bw_rng/rtl/*.v $DST_DIR
|
31 |
|
|
find $SRC_DIR/common -name "*.v" -exec cp {} $DST_DIR \;
|
32 |
|
|
find $SRC_DIR/pr_macro -name "*.v" -exec cp {} $DST_DIR \;
|
33 |
|
|
find $SRC_DIR/sparc -name "*.v" -exec cp {} $DST_DIR \;
|
34 |
|
|
|
35 |
|
|
# Remove synthetized files -- if any
|
36 |
|
|
find $DST_DIR -name "*_flat.v" -exec rm -f {} \;
|
37 |
|
|
find $DST_DIR -name "*_flat_nc.v" -exec rm -f {} \;
|
38 |
|
|
find $DST_DIR -name "*_hier.v" -exec rm -f {} \;
|
39 |
|
|
|
40 |
47 |
fafa1971 |
# Remove unused files (according to liuyadong)
|
41 |
|
|
cd $DST_DIR
|
42 |
|
|
rm bw_r_l2t.v bw_r_cm16x40.v bw_r_cm16x40b.v bw_r_dcm.v bw_r_efa.v bw_r_l2d.v bw_r_l2d_32k.v \
|
43 |
|
|
bw_r_l2d_rep_bot.v bw_r_l2d_rep_top.v bw_r_rf16x128d.v bw_r_rf32x108.v bw_rf_16x65.v bw_rf_16x81.v \
|
44 |
|
|
bw_clk_cclk_hdr_48x.v bw_clk_cclk_hdr_64x.v bw_clk_cclk_inv_128x.v bw_clk_cclk_inv_48x.v \
|
45 |
|
|
bw_clk_cclk_inv_64x.v bw_clk_cclk_inv_96x.v bw_clk_cclk_scanlasr_2x.v bw_clk_cclk_sync.v \
|
46 |
|
|
bw_clk_gclk_center_3inv.v bw_clk_gclk_inv_192x.v bw_clk_gclk_inv_224x.v bw_clk_gclk_inv_288x.v \
|
47 |
|
|
bw_clk_gclk_inv_r90_192x.v bw_clk_gclk_inv_r90_224x.v bw_clk_gclk_inv_r90_256x.v bw_clk_gclk_sctag_3inv.v \
|
48 |
|
|
bw_clk_gl.v bw_clk_gl_fdbk.v bw_clk_gl_hz.v bw_clk_gl_rstce_rtl.v bw_clk_gl_vrt_all.v flop_rptrs_xa0.v \
|
49 |
|
|
flop_rptrs_xa1.v flop_rptrs_xb0.v flop_rptrs_xb1.v flop_rptrs_xb2.v flop_rptrs_xb3.v flop_rptrs_xc0.v \
|
50 |
|
|
flop_rptrs_xc1.v flop_rptrs_xc2.v flop_rptrs_xc3.v flop_rptrs_xc4.v flop_rptrs_xc5.v flop_rptrs_xc6.v \
|
51 |
|
|
flop_rptrs_xc7.v bw_rng.v cluster_header_ctu.v cluster_header_dup.v cluster_header_sync.v dbl_buf.v \
|
52 |
|
|
sync_pulse_synchronizer.v synchronizer_asr_dup.v ucb_bus_in.v ucb_bus_out.v ucb_flow_2buf.v \
|
53 |
|
|
ucb_flow_jbi.v ucb_flow_spi.v ucb_noflow.v spc_pcx_buf.v
|
54 |
|
|
|
55 |
|
|
# Clean the files by substituting the $error System Task and applying defines with Icarus preprocessor
|
56 |
7 |
fafa1971 |
for file in $DST_DIR/*.v ; do
|
57 |
|
|
sed -e 's/\$error/\$display/g' $file | sed -e 's/negedge rclk or rst_l/negedge rclk/g' > $DST_DIR/temp.v
|
58 |
49 |
fafa1971 |
if(test $1 == "-me" || test $1 == "-se") then
|
59 |
61 |
fafa1971 |
iverilog -E -D CMP_CLK_PERIOD=1 -D FPGA_SYN -D FPGA_SYN_1THREAD -D FPGA_SYN_NO_SPU -I $DST_DIR/include -o$file $DST_DIR/temp.v
|
60 |
49 |
fafa1971 |
else
|
61 |
61 |
fafa1971 |
iverilog -E -D CMP_CLK_PERIOD=1 -D FPGA_SYN -D FPGA_SYN_NO_SPU -I $DST_DIR/include -o$file $DST_DIR/temp.v
|
62 |
49 |
fafa1971 |
fi
|
63 |
61 |
fafa1971 |
# These steps are required because Icarus does not allow this kind of comments
|
64 |
|
|
sed -e 's/\* ========== Copyright Header Begin/\/\* ========== Copyright Header Begin/g' $file > $DST_DIR/temp.v
|
65 |
7 |
fafa1971 |
mv -f $DST_DIR/temp.v $file
|
66 |
|
|
done
|
67 |
|
|
|
68 |
61 |
fafa1971 |
# Correct some strange strings
|
69 |
|
|
sed -e 's/sparc_exu_alulogic logic/sparc_exu_alulogic logic_MAYBEARESERVEDWORD/g' $DST_DIR/sparc_exu_alu.v > $DST_DIR/temp.v
|
70 |
|
|
mv $DST_DIR/temp.v $DST_DIR/sparc_exu_alu.v
|
71 |
|
|
sed -e 's/logic/logic_MAYBEARESERVEDWORD/g' $DST_DIR/sparc_ffu_ctl_visctl.v > $DST_DIR/temp.v
|
72 |
|
|
mv $DST_DIR/temp.v $DST_DIR/sparc_ffu_ctl_visctl.v
|
73 |
|
|
sed -e 's/$display(\"ILLEGAL_THR_STATE\"/\/\/$display(\"ILLEGAL_THR_STATE\"/g' sparc_ifu_thrfsm.v > $DST_DIR/temp.v
|
74 |
|
|
mv $DST_DIR/temp.v $DST_DIR/sparc_ifu_thrfsm.v
|
75 |
73 |
fafa1971 |
sed -e 's/(\* keep = "yes" \*)//g' $DST_DIR/bw_r_frf.v > $DST_DIR/temp.v
|
76 |
|
|
mv $DST_DIR/temp.v $DST_DIR/bw_r_frf.v
|
77 |
|
|
sed -e 's/synthesis translate_/synopsys translate_/g' $DST_DIR/bw_r_irf.v > $DST_DIR/temp.v
|
78 |
|
|
mv $DST_DIR/temp.v $DST_DIR/bw_r_irf.v
|
79 |
|
|
sed -e 's/initial onereg/\/\/initial onereg/g' $DST_DIR/bw_r_irf_register.v > $DST_DIR/temp.v
|
80 |
|
|
mv $DST_DIR/temp.v $DST_DIR/bw_r_irf_register.v
|
81 |
61 |
fafa1971 |
|
82 |
|
|
# After preprocessing we can safely delete the include directory
|
83 |
|
|
rm -f $DST_DIR/include/*.*
|
84 |
|
|
|
85 |
|
|
# Disable L1 Instruction and Data Caches if required
|
86 |
49 |
fafa1971 |
if(test $1 == "-me") then
|
87 |
|
|
cp -f $S1_ROOT/tools/src/bw_r_dcd.v $DST_DIR
|
88 |
|
|
cp -f $S1_ROOT/tools/src/bw_r_icd.v $DST_DIR
|
89 |
|
|
cp -f $S1_ROOT/tools/src/bw_r_idct.v $DST_DIR
|
90 |
|
|
fi
|
91 |
41 |
fafa1971 |
|
92 |
7 |
fafa1971 |
# Hack the SPARC Core to add the external stall input from the bridge
|
93 |
|
|
sed -e 's/pcx_spc_grant_px,/pcx_spc_grant_px, wbm_spc_stallreq,/g' $DST_DIR/sparc.v |
|
94 |
|
|
sed -e 's/pcx_spc_grant_px;/pcx_spc_grant_px; input wbm_spc_stallreq;/g' |
|
95 |
|
|
sed -e 's/sparc_ifu ifu(/sparc_ifu ifu( .wbm_spc_stallreq(wbm_spc_stallreq),/g' > $DST_DIR/sparc_TMP.v
|
96 |
|
|
mv -f $DST_DIR/sparc_TMP.v $DST_DIR/sparc.v
|
97 |
|
|
sed -e 's/ffu_ifu_stallreq,/ffu_ifu_stallreq, wbm_spc_stallreq,/g' $DST_DIR/sparc_ifu.v |
|
98 |
|
|
sed -e 's/ffu_ifu_stallreq;/ffu_ifu_stallreq; input wbm_spc_stallreq;/g' |
|
99 |
|
|
sed -e 's/sparc_ifu_fcl fcl(/sparc_ifu_fcl fcl( .wbm_spc_stallreq(wbm_spc_stallreq),/g' > $DST_DIR/sparc_ifu_TMP.v
|
100 |
|
|
mv -f $DST_DIR/sparc_ifu_TMP.v $DST_DIR/sparc_ifu.v
|
101 |
|
|
sed -e 's/ffu_ifu_stallreq,/ffu_ifu_stallreq, wbm_spc_stallreq,/g' $DST_DIR/sparc_ifu_fcl.v |
|
102 |
|
|
sed -e 's/assign all_stallreq = ifq_fcl_stallreq/assign all_stallreq = ifq_fcl_stallreq | wbm_spc_stallreq/g' > $DST_DIR/sparc_ifu_fcl_TMP.v
|
103 |
|
|
mv -f $DST_DIR/sparc_ifu_fcl_TMP.v $DST_DIR/sparc_ifu_fcl.v
|
104 |
|
|
|
105 |
|
|
# Copy also behavioral libraries used for RTL simulations
|
106 |
|
|
DST_DIR=$S1_ROOT/hdl/behav/sparc_libs
|
107 |
15 |
fafa1971 |
rm -f $DST_DIR/*.*
|
108 |
7 |
fafa1971 |
cp $SRC_DIR/../../../lib/m1/m1.behV $DST_DIR/m1_lib.v
|
109 |
|
|
cp $SRC_DIR/../../../lib/u1/u1.behV $DST_DIR/u1_lib.v
|
110 |
|
|
|