diff --git a/scripts/example_configs/00_all_features_enabled.sv b/scripts/example_configs/00_all_features_enabled.sv index 950366ef..4454a12d 100644 --- a/scripts/example_configs/00_all_features_enabled.sv +++ b/scripts/example_configs/00_all_features_enabled.sv @@ -62,6 +62,10 @@ // will enable clip, min and max operations support. `define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // CONFIG: LSU_ADDER_SUPPORT // will enable an additional adder in the LSU for better timings. `define LSU_ADDER_SUPPORT diff --git a/scripts/example_configs/01_no_mul.sv b/scripts/example_configs/01_no_mul.sv index 69b99729..e00eaadc 100644 --- a/scripts/example_configs/01_no_mul.sv +++ b/scripts/example_configs/01_no_mul.sv @@ -58,10 +58,6 @@ // will enable bit manipulation and counting support. `define BIT_SUPPORT -// CONFIG: MATH_SPECIAL_SUPPORT -// will enable clip, min and max operations support. -`define MATH_SPECIAL_SUPPORT - // CONFIG: LSU_ADDER_SUPPORT // will enable an additional adder in the LSU for better timings. `define LSU_ADDER_SUPPORT @@ -74,6 +70,14 @@ `endif // LSU_ADDER_SUPPORT +// CONFIG: MATH_SPECIAL_SUPPORT +// will enable clip, min and max operations support. +`define MATH_SPECIAL_SUPPORT + +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/02_no_mul_no_vec.sv b/scripts/example_configs/02_no_mul_no_vec.sv index 56fec624..a1d7bfd3 100644 --- a/scripts/example_configs/02_no_mul_no_vec.sv +++ b/scripts/example_configs/02_no_mul_no_vec.sv @@ -58,10 +58,6 @@ // will enable bit manipulation and counting support. `define BIT_SUPPORT -// CONFIG: MATH_SPECIAL_SUPPORT -// will enable clip, min and max operations support. -`define MATH_SPECIAL_SUPPORT - // CONFIG: JUMP_IN_ID_SUPPORT // will enable jump capability in ID stage. `define JUMP_IN_ID_SUPPORT @@ -78,6 +74,14 @@ `endif // LSU_ADDER_SUPPORT +// CONFIG: MATH_SPECIAL_SUPPORT +// will enable clip, min and max operations support. +`define MATH_SPECIAL_SUPPORT + +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/03_no_mul_no_vec_no_hwlp.sv b/scripts/example_configs/03_no_mul_no_vec_no_hwlp.sv index 2b3e7331..4f6511be 100644 --- a/scripts/example_configs/03_no_mul_no_vec_no_hwlp.sv +++ b/scripts/example_configs/03_no_mul_no_vec_no_hwlp.sv @@ -74,6 +74,10 @@ // will enable clip, min and max operations support. `define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/04_no_mul_no_vec_no_hwlp_no_bit.sv b/scripts/example_configs/04_no_mul_no_vec_no_hwlp_no_bit.sv index 1f031b79..caa41f25 100644 --- a/scripts/example_configs/04_no_mul_no_vec_no_hwlp_no_bit.sv +++ b/scripts/example_configs/04_no_mul_no_vec_no_hwlp_no_bit.sv @@ -74,6 +74,10 @@ // will enable clip, min and max operations support. `define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/05_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost.sv b/scripts/example_configs/05_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost.sv index ac3df07e..f4868d81 100644 --- a/scripts/example_configs/05_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost.sv +++ b/scripts/example_configs/05_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost.sv @@ -74,6 +74,10 @@ // will enable clip, min and max operations support. `define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/06_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special.sv b/scripts/example_configs/06_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special.sv index 60b51992..629f2be7 100644 --- a/scripts/example_configs/06_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special.sv +++ b/scripts/example_configs/06_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special.sv @@ -74,6 +74,10 @@ // will enable clip, min and max operations support. //`define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/07_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs.sv b/scripts/example_configs/07_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs.sv index 1f9007e3..0fd46199 100644 --- a/scripts/example_configs/07_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs.sv +++ b/scripts/example_configs/07_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs.sv @@ -74,6 +74,10 @@ // will enable clip, min and max operations support. //`define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/08_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu.sv b/scripts/example_configs/08_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu.sv index 52fa46ef..fd481e8e 100644 --- a/scripts/example_configs/08_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu.sv +++ b/scripts/example_configs/08_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu.sv @@ -74,6 +74,10 @@ // will enable clip, min and max operations support. //`define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/09_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif.sv b/scripts/example_configs/09_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif.sv index b3eb886d..8ad9f26c 100644 --- a/scripts/example_configs/09_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif.sv +++ b/scripts/example_configs/09_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif.sv @@ -75,6 +75,11 @@ //`define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +`define JUMP_IN_ID + + // Dependent definitions // CONFIG: THREE_PORT_REG_FILE diff --git a/scripts/example_configs/10_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_rv32e.sv b/scripts/example_configs/10_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_no_jumpinid.sv similarity index 96% rename from scripts/example_configs/10_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_rv32e.sv rename to scripts/example_configs/10_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_no_jumpinid.sv index 1ca84c08..bda5cd91 100644 --- a/scripts/example_configs/10_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_rv32e.sv +++ b/scripts/example_configs/10_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_no_jumpinid.sv @@ -74,6 +74,10 @@ // will enable clip, min and max operations support. //`define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +//`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/example_configs/11_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_no_jumpinid_rv32e.sv b/scripts/example_configs/11_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_no_jumpinid_rv32e.sv new file mode 100644 index 00000000..099080b9 --- /dev/null +++ b/scripts/example_configs/11_no_mul_no_vec_no_hwlp_no_bit_no_lsuadder_no_prepost_no_special_no_3r2wregs_with_simplealu_with_smallif_no_jumpinid_rv32e.sv @@ -0,0 +1,114 @@ +// Copyright 2015 ETH Zurich and University of Bologna. +// Copyright and related rights are licensed under the Solderpad Hardware +// License, Version 0.51 (the “License”); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law +// or agreed to in writing, software, hardware and materials distributed under +// this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR +// CONDITIONS OF ANY KIND, either express or implied. See the License for the +// specific language governing permissions and limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// Engineer: Michael Gautschi - gautschi@iis.ee.ethz.ch // +// // +// Additional contributions by: // +// // +// Markus Wegmann - markus.wegmann@technokrat.ch // +// // +// Design Name: RISC-V config file // +// Project Name: RI5CY // +// Language: SystemVerilog // +// // +// Description: Configure optional simulation modules // +// // +//////////////////////////////////////////////////////////////////////////////// + +// no traces for synthesis, they are not synthesizable +`ifndef SYNTHESIS +`ifndef PULP_FPGA_EMUL +`define TRACE_EXECUTION +`endif +//`define SIMCHECKER +`endif + + +// littleRISCV configuration. + +// Decomment to enable. + +// The format should be strictly followed so the ri5cly-manage tool can parse the configuration +// A CONFIG section declares a config definition, a CONFIG_REGION enables the tool to remove disabled code +// for export. See the ri5cly-manage.py tool help and source code in the /scripts folder for more information. + + + +// CONFIG: MUL_SUPPORT +// will enable RISCV32M support for multiplication, division, MAC operations. Uses a lot of multiplications +//`define MUL_SUPPORT + +// CONFIG: VEC_SUPPORT +// will enable RISCV32V support for vector operations. +//`define VEC_SUPPORT + +// CONFIG: HWLP_SUPPORT +// will enable hardware loop support. +//`define HWLP_SUPPORT + +// CONFIG: BIT_SUPPORT +// will enable bit manipulation and counting support. +//`define BIT_SUPPORT + +// CONFIG: LSU_ADDER_SUPPORT +// will enable an additional adder in the LSU for better timings. +//`define LSU_ADDER_SUPPORT + +`ifdef LSU_ADDER_SUPPORT + +// CONFIG: PREPOST_SUPPORT +// will enable pre/post increment load/store support support. +//`define PREPOST_SUPPORT + +`endif // LSU_ADDER_SUPPORT + +// CONFIG: MATH_SPECIAL_SUPPORT +// will enable clip, min and max operations support. +//`define MATH_SPECIAL_SUPPORT + + +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +//`define JUMP_IN_ID + + +// Dependent definitions + +// CONFIG: THREE_PORT_REG_FILE +// enables 3r2w reg file (rather than 2r1w) +//`define THREE_PORT_REG_FILE + + +`ifndef MUL_SUPPORT +`ifndef VEC_SUPPORT +`ifndef BIT_SUPPORT +`ifndef LSU_ADDER_SUPPORT +`ifndef PREPOST_SUPPORT +`ifndef MATH_SPECIAL_SUPPORT + +// CONFIG: SIMPLE_ALU +// will enable simplified ALU for less gates. It does not support vectors, shuffling, nor bit operations. +`define SIMPLE_ALU + +// CONFIG: SMALL_IF +// will disable large FIFO in IF stage and use a more simple one. +`define SMALL_IF + +// CONFIG: RV32E +// will reduce the register file to 16 words +`define RV32E + +`endif +`endif +`endif +`endif +`endif +`endif diff --git a/scripts/example_configs/11_very_small_only_aligned.sv b/scripts/example_configs/12_very_small_only_aligned.sv similarity index 96% rename from scripts/example_configs/11_very_small_only_aligned.sv rename to scripts/example_configs/12_very_small_only_aligned.sv index 42ae1bca..a296d9f2 100644 --- a/scripts/example_configs/11_very_small_only_aligned.sv +++ b/scripts/example_configs/12_very_small_only_aligned.sv @@ -74,6 +74,10 @@ // will enable clip, min and max operations support. //`define MATH_SPECIAL_SUPPORT +// CONFIG: JUMP_IN_ID +// will enable direct jump in ID. Might increase critical path of jump target. +//`define JUMP_IN_ID + // Dependent definitions diff --git a/scripts/synopsys_setup_scripts/setup_10.tcl b/scripts/synopsys_setup_scripts/setup_10.tcl index cfa8615f..8be458d0 100644 --- a/scripts/synopsys_setup_scripts/setup_10.tcl +++ b/scripts/synopsys_setup_scripts/setup_10.tcl @@ -1,3 +1,4 @@ +set NUM_CORES 16; set CLOCK_SLOW 10; # 100 MHz set DESIGN_NAME imperio_${CLOCK_SLOW} diff --git a/scripts/synopsys_setup_scripts/setup_3.tcl b/scripts/synopsys_setup_scripts/setup_3.tcl index 57132f60..1fef9489 100644 --- a/scripts/synopsys_setup_scripts/setup_3.tcl +++ b/scripts/synopsys_setup_scripts/setup_3.tcl @@ -1,3 +1,4 @@ +set NUM_CORES 16; set CLOCK_SLOW 3; # 333 MHz set DESIGN_NAME imperio_${CLOCK_SLOW} diff --git a/scripts/synopsys_setup_scripts/setup_5.tcl b/scripts/synopsys_setup_scripts/setup_5.tcl index 6b55ced7..ea787ba6 100644 --- a/scripts/synopsys_setup_scripts/setup_5.tcl +++ b/scripts/synopsys_setup_scripts/setup_5.tcl @@ -1,3 +1,4 @@ +set NUM_CORES 16; set CLOCK_SLOW 5; # 200 MHz set DESIGN_NAME imperio_${CLOCK_SLOW}