mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Fixed logic to work with FLEN < XLEN
This commit is contained in:
parent
a4ca024025
commit
1c62c5e433
@ -21,7 +21,7 @@ if [ "$1" == "-nightly" ]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
configs=(rv32e rv64gc rv32gc rv32imc rv32i rv64i div_2_1i_rv64gc fdqh_rv64gc)
|
configs=(rv32e rv64gc rv32gc rv32imc rv32i rv64i div_2_1i_rv64gc ) # add fdqh_rv64gc when working
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for config in ${configs[@]}; do
|
for config in ${configs[@]}; do
|
||||||
@ -29,7 +29,7 @@ for config in ${configs[@]}; do
|
|||||||
if !($verilator --no-timing --lint-only --top-module wallywrapper "-I$basepath/config/shared" "-I$basepath/config/$config" "-I$basepath/config/deriv/$config" $basepath/src/cvw.sv $basepath/testbench/wallywrapper.sv $basepath/src/*/*.sv $basepath/src/*/*/*.sv --relative-includes ); then
|
if !($verilator --no-timing --lint-only --top-module wallywrapper "-I$basepath/config/shared" "-I$basepath/config/$config" "-I$basepath/config/deriv/$config" $basepath/src/cvw.sv $basepath/testbench/wallywrapper.sv $basepath/src/*/*.sv $basepath/src/*/*/*.sv --relative-includes ); then
|
||||||
if [ "$1" == "-nightly" ]; then
|
if [ "$1" == "-nightly" ]; then
|
||||||
echo -e "${RED}$config failed lint${NC}"
|
echo -e "${RED}$config failed lint${NC}"
|
||||||
fails=$fails+1
|
fails=$((fails+1))
|
||||||
else
|
else
|
||||||
echo -e "${RED}$config fails with lint errors or warnings"
|
echo -e "${RED}$config fails with lint errors or warnings"
|
||||||
exit 1
|
exit 1
|
||||||
@ -38,11 +38,11 @@ for config in ${configs[@]}; do
|
|||||||
echo -e "${GREEN}$config passed lint${NC}"
|
echo -e "${GREEN}$config passed lint${NC}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if ( $fails > 0 ); then
|
if [ $fails > 0 ]; then
|
||||||
echo -e "${RED}Linting failed for $fails configurations"
|
echo -e "${RED}Linting failed for $fails of ${#configs[@]} configurations"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo -e "${GREEN}All lints run with no errors or warnings"
|
echo -e "${GREEN}All ${#configs[@]} lints run with no errors or warnings"
|
||||||
|
|
||||||
# --lint-only just runs lint rather than trying to compile and simulate
|
# --lint-only just runs lint rather than trying to compile and simulate
|
||||||
# -I points to the include directory where files such as `include config.vh are found
|
# -I points to the include directory where files such as `include config.vh are found
|
||||||
|
@ -278,9 +278,14 @@ module fpu import cvw::*; #(parameter cvw_t P) (
|
|||||||
end else assign FliResE = '0;
|
end else assign FliResE = '0;
|
||||||
|
|
||||||
// fmv.*.x: NaN Box SrcA to extend integer to requested FP size
|
// fmv.*.x: NaN Box SrcA to extend integer to requested FP size
|
||||||
if(P.FPSIZES == 1) assign PreIntSrcE = {{P.FLEN-P.XLEN{1'b1}}, ForwardedSrcAE};
|
if(P.FPSIZES == 1)
|
||||||
|
if (P.FLEN >= P.XLEN) assign PreIntSrcE = {{P.FLEN-P.XLEN{1'b1}}, ForwardedSrcAE};
|
||||||
|
else assign PreIntSrcE = ForwardedSrcAE[P.FLEN-1:0];
|
||||||
else if(P.FPSIZES == 2)
|
else if(P.FPSIZES == 2)
|
||||||
mux2 #(P.FLEN) SrcAMux ({{P.FLEN-P.LEN1{1'b1}}, ForwardedSrcAE[P.LEN1-1:0]}, {{P.FLEN-P.XLEN{1'b1}}, ForwardedSrcAE}, FmtE, PreIntSrcE);
|
if (P.FLEN >= P.XLEN)
|
||||||
|
mux2 #(P.FLEN) SrcAMux ({{P.FLEN-P.LEN1{1'b1}}, ForwardedSrcAE[P.LEN1-1:0]}, {{P.FLEN-P.XLEN{1'b1}}, ForwardedSrcAE}, FmtE, PreIntSrcE);
|
||||||
|
else
|
||||||
|
mux2 #(P.FLEN) SrcAMux ({{P.FLEN-P.LEN1{1'b1}}, ForwardedSrcAE[P.LEN1-1:0]}, ForwardedSrcAE[P.FLEN-1:0], FmtE, PreIntSrcE);
|
||||||
else if(P.FPSIZES == 3 | P.FPSIZES == 4) begin
|
else if(P.FPSIZES == 3 | P.FPSIZES == 4) begin
|
||||||
localparam XD_LEN = P.D_LEN < P.XLEN ? P.D_LEN : P.XLEN; // shorter of D_LEN and XLEN
|
localparam XD_LEN = P.D_LEN < P.XLEN ? P.D_LEN : P.XLEN; // shorter of D_LEN and XLEN
|
||||||
mux3 #(P.FLEN) SrcAMux ({{P.FLEN-P.S_LEN{1'b1}}, ForwardedSrcAE[P.S_LEN-1:0]},
|
mux3 #(P.FLEN) SrcAMux ({{P.FLEN-P.S_LEN{1'b1}}, ForwardedSrcAE[P.S_LEN-1:0]},
|
||||||
|
@ -406,7 +406,11 @@ module lsu import cvw::*; #(parameter cvw_t P) (
|
|||||||
end
|
end
|
||||||
|
|
||||||
if (P.F_SUPPORTED)
|
if (P.F_SUPPORTED)
|
||||||
mux2 #(P.LLEN) datamux({{{P.LLEN-P.XLEN}{1'b0}}, IMAWriteDataM}, FWriteDataM, FpLoadStoreM, IMAFWriteDataM);
|
if (P.FLEN >= P.XLEN)
|
||||||
|
mux2 #(P.LLEN) datamux({{{P.LLEN-P.XLEN}{1'b0}}, IMAWriteDataM}, FWriteDataM, FpLoadStoreM, IMAFWriteDataM);
|
||||||
|
else
|
||||||
|
mux2 #(P.LLEN) datamux(IMAWriteDataM, {{{P.XLEN-P.FLEN}{1'b0}}, FWriteDataM}, FpLoadStoreM, IMAFWriteDataM);
|
||||||
|
|
||||||
else assign IMAFWriteDataM = IMAWriteDataM;
|
else assign IMAFWriteDataM = IMAWriteDataM;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user