From 333542bd42d265df1ab04d4a2a1a9a77703ceaf4 Mon Sep 17 00:00:00 2001 From: stnolting <22944758+stnolting@users.noreply.github.com> Date: Wed, 3 Jul 2024 21:14:10 +0200 Subject: [PATCH 1/7] :warning: [top] remove AMO_RVS_GRANULARITY generic --- rtl/core/neorv32_package.vhd | 4 +--- rtl/core/neorv32_top.vhd | 16 ++++------------ rtl/system_integration/neorv32_vivado_ip.vhd | 2 -- sim/neorv32_tb.vhd | 2 -- sim/simple/neorv32_tb.simple.vhd | 2 -- 5 files changed, 5 insertions(+), 21 deletions(-) diff --git a/rtl/core/neorv32_package.vhd b/rtl/core/neorv32_package.vhd index 7f4db6a15..a954295aa 100644 --- a/rtl/core/neorv32_package.vhd +++ b/rtl/core/neorv32_package.vhd @@ -29,7 +29,7 @@ package neorv32_package is -- Architecture Constants ----------------------------------------------------------------- -- ------------------------------------------------------------------------------------------- - constant hw_version_c : std_ulogic_vector(31 downto 0) := x"01100008"; -- hardware version + constant hw_version_c : std_ulogic_vector(31 downto 0) := x"01100009"; -- hardware version constant archid_c : natural := 19; -- official RISC-V architecture ID constant XLEN : natural := 32; -- native data path width @@ -742,8 +742,6 @@ package neorv32_package is -- Hardware Performance Monitors (HPM) -- HPM_NUM_CNTS : natural range 0 to 13 := 0; HPM_CNT_WIDTH : natural range 0 to 64 := 40; - -- Atomic Memory Access - Reservation Set Granularity -- - AMO_RVS_GRANULARITY : natural range 4 to 2**30 := 4; -- Internal Instruction memory (IMEM) -- MEM_INT_IMEM_EN : boolean := false; MEM_INT_IMEM_SIZE : natural := 16*1024; diff --git a/rtl/core/neorv32_top.vhd b/rtl/core/neorv32_top.vhd index 20d34786c..43b0244d5 100644 --- a/rtl/core/neorv32_top.vhd +++ b/rtl/core/neorv32_top.vhd @@ -1,11 +1,10 @@ -- ================================================================================ -- -- NEORV32 SoC - Processor Top Entity -- -- -------------------------------------------------------------------------------- -- --- Check out the processor's online documentation for more information: -- --- > HQ: https://github.com/stnolting/neorv32 -- --- > Data Sheet: https://stnolting.github.io/neorv32 -- --- > User Guide: https://stnolting.github.io/neorv32/ug -- --- > Software Ref: https://stnolting.github.io/neorv32/sw/files.html -- +-- HQ: https://github.com/stnolting/neorv32 -- +-- Data Sheet: https://stnolting.github.io/neorv32 -- +-- User Guide: https://stnolting.github.io/neorv32/ug -- +-- Software Ref: https://stnolting.github.io/neorv32/sw/files.html -- -- -------------------------------------------------------------------------------- -- -- The NEORV32 RISC-V Processor - https://github.com/stnolting/neorv32 -- -- Copyright (c) NEORV32 contributors. -- @@ -63,9 +62,6 @@ entity neorv32_top is HPM_NUM_CNTS : natural range 0 to 13 := 0; -- number of implemented HPM counters (0..13) HPM_CNT_WIDTH : natural range 0 to 64 := 40; -- total size of HPM counters (0..64) - -- Atomic Memory Access - Reservation Set Granularity -- - AMO_RVS_GRANULARITY : natural range 4 to 2**30 := 4; -- size in bytes, has to be a power of 2, min 4 - -- Internal Instruction memory (IMEM) -- MEM_INT_IMEM_EN : boolean := false; -- implement processor-internal instruction memory MEM_INT_IMEM_SIZE : natural := 16*1024; -- size of processor-internal instruction memory in bytes (use a power of 2) @@ -713,9 +709,6 @@ begin neorv32_bus_reservation_set_true: if CPU_EXTENSION_RISCV_A generate neorv32_bus_reservation_set_inst: entity neorv32.neorv32_bus_reservation_set - generic map ( - GRANULARITY => AMO_RVS_GRANULARITY - ) port map ( clk_i => clk_i, rstn_i => rstn_sys, @@ -1604,7 +1597,6 @@ begin MEM_INT_IMEM_SIZE => imem_size_c, MEM_INT_DMEM_EN => MEM_INT_DMEM_EN, MEM_INT_DMEM_SIZE => dmem_size_c, - AMO_RVS_GRANULARITY => AMO_RVS_GRANULARITY, ICACHE_EN => ICACHE_EN, ICACHE_NUM_BLOCKS => ICACHE_NUM_BLOCKS, ICACHE_BLOCK_SIZE => ICACHE_BLOCK_SIZE, diff --git a/rtl/system_integration/neorv32_vivado_ip.vhd b/rtl/system_integration/neorv32_vivado_ip.vhd index ebc496835..5fce95959 100644 --- a/rtl/system_integration/neorv32_vivado_ip.vhd +++ b/rtl/system_integration/neorv32_vivado_ip.vhd @@ -59,8 +59,6 @@ entity neorv32_vivado_ip is -- Hardware Performance Monitors (HPM) -- HPM_NUM_CNTS : natural range 0 to 13 := 0; HPM_CNT_WIDTH : natural range 0 to 64 := 40; - -- Atomic Memory Access - Reservation Set Granularity -- - AMO_RVS_GRANULARITY : natural range 4 to 2**30 := 4; -- Internal Instruction memory -- MEM_INT_IMEM_EN : boolean := false; MEM_INT_IMEM_SIZE : natural := 16*1024; diff --git a/sim/neorv32_tb.vhd b/sim/neorv32_tb.vhd index d8ed216d6..1d98bc3f8 100644 --- a/sim/neorv32_tb.vhd +++ b/sim/neorv32_tb.vhd @@ -224,8 +224,6 @@ begin -- Hardware Performance Monitors (HPM) -- HPM_NUM_CNTS => 12, -- number of implemented HPM counters (0..29) HPM_CNT_WIDTH => 40, -- total size of HPM counters (0..64) - -- Atomic Memory Access - Reservation Set Granularity -- - AMO_RVS_GRANULARITY => 4, -- size in bytes, has to be a power of 2, min 4 -- Internal Instruction memory -- MEM_INT_IMEM_EN => int_imem_c , -- implement processor-internal instruction memory MEM_INT_IMEM_SIZE => imem_size_c, -- size of processor-internal instruction memory in bytes diff --git a/sim/simple/neorv32_tb.simple.vhd b/sim/simple/neorv32_tb.simple.vhd index f4ce0b5f7..7a2f2a07e 100644 --- a/sim/simple/neorv32_tb.simple.vhd +++ b/sim/simple/neorv32_tb.simple.vhd @@ -196,8 +196,6 @@ begin -- Hardware Performance Monitors (HPM) -- HPM_NUM_CNTS => 12, -- number of implemented HPM counters (0..29) HPM_CNT_WIDTH => 40, -- total size of HPM counters (0..64) - -- Atomic Memory Access - Reservation Set Granularity -- - AMO_RVS_GRANULARITY => 4, -- size in bytes, has to be a power of 2, min 4 -- Internal Instruction memory -- MEM_INT_IMEM_EN => int_imem_c , -- implement processor-internal instruction memory MEM_INT_IMEM_SIZE => performance_options_c.imem_size_c(PERFORMANCE_OPTION), -- size of processor-internal instruction memory in bytes From f820d58c898ad0e02da12a4789cda1b54994b82f Mon Sep 17 00:00:00 2001 From: stnolting <22944758+stnolting@users.noreply.github.com> Date: Wed, 3 Jul 2024 21:15:01 +0200 Subject: [PATCH 2/7] [sysinfo] remove reservation set grnaularity --- docs/datasheet/soc_sysinfo.adoc | 2 +- rtl/core/neorv32_sysinfo.vhd | 3 +-- sw/lib/include/neorv32_sysinfo.h | 6 ++---- sw/lib/source/neorv32_rte.c | 9 --------- sw/svd/neorv32.svd | 2 +- 5 files changed, 5 insertions(+), 17 deletions(-) diff --git a/docs/datasheet/soc_sysinfo.adoc b/docs/datasheet/soc_sysinfo.adoc index b257e53d8..a3b60fcac 100644 --- a/docs/datasheet/soc_sysinfo.adoc +++ b/docs/datasheet/soc_sysinfo.adoc @@ -49,7 +49,7 @@ Bit fields in this register are set to all-zero if the according cache is not im | `0` | `SYSINFO_MEM_IMEM` | _log2_(internal IMEM size in bytes), via top's `MEM_INT_IMEM_SIZE` generic | `1` | `SYSINFO_MEM_DMEM` | _log2_(internal DMEM size in bytes), via top's `MEM_INT_DMEM_SIZE` generic | `2` | - | _reserved_, read as zero -| `3` | `SYSINFO_MEM_RVSG` | _log2_(reservation set size granularity in bytes), via top's `AMO_RVS_GRANULARITY` generic +| `3` | - | _reserved_, read as zero |======================= diff --git a/rtl/core/neorv32_sysinfo.vhd b/rtl/core/neorv32_sysinfo.vhd index 663c8adb2..cc1836819 100644 --- a/rtl/core/neorv32_sysinfo.vhd +++ b/rtl/core/neorv32_sysinfo.vhd @@ -24,7 +24,6 @@ entity neorv32_sysinfo is MEM_INT_IMEM_SIZE : natural; -- size of processor-internal instruction memory in bytes MEM_INT_DMEM_EN : boolean; -- implement processor-internal data memory MEM_INT_DMEM_SIZE : natural; -- size of processor-internal data memory in bytes - AMO_RVS_GRANULARITY : natural; -- size in bytes, has to be a power of 2, min 4 ICACHE_EN : boolean; -- implement instruction cache ICACHE_NUM_BLOCKS : natural; -- i-cache: number of blocks (min 2), has to be a power of 2 ICACHE_BLOCK_SIZE : natural; -- i-cache: block size in bytes (min 4), has to be a power of 2 @@ -90,7 +89,7 @@ begin sysinfo(1)(7 downto 0) <= std_ulogic_vector(to_unsigned(index_size_f(MEM_INT_IMEM_SIZE), 8)); -- log2(IMEM size) sysinfo(1)(15 downto 8) <= std_ulogic_vector(to_unsigned(index_size_f(MEM_INT_DMEM_SIZE), 8)); -- log2(DMEM size) sysinfo(1)(23 downto 16) <= (others => '0'); -- reserved - sysinfo(1)(31 downto 24) <= std_ulogic_vector(to_unsigned(index_size_f(AMO_RVS_GRANULARITY), 8)); -- log2(reservation set granularity) + sysinfo(1)(31 downto 24) <= (others => '0'); -- reserved -- SYSINFO(2): SoC Configuration -- sysinfo(2)(0) <= '1' when INT_BOOTLOADER_EN else '0'; -- processor-internal bootloader implemented? diff --git a/sw/lib/include/neorv32_sysinfo.h b/sw/lib/include/neorv32_sysinfo.h index 5a8f87b75..533a02e52 100644 --- a/sw/lib/include/neorv32_sysinfo.h +++ b/sw/lib/include/neorv32_sysinfo.h @@ -36,10 +36,8 @@ typedef volatile struct __attribute__((packed,aligned(4))) { /** NEORV32_SYSINFO->MEM (r/-): Memory configuration (sizes) */ enum NEORV32_SYSINFO_MEM_enum { - SYSINFO_MEM_IMEM = 0, /**< SYSINFO_MEM byte 0 (r/-): log2(internal IMEM size in bytes) (via MEM_INT_IMEM_SIZE generic) */ - SYSINFO_MEM_DMEM = 1, /**< SYSINFO_MEM byte 1 (r/-): log2(internal DMEM size in bytes) (via MEM_INT_DMEM_SIZE generic) */ - - SYSINFO_MEM_RVSG = 3 /**< SYSINFO_MEM byte 3 (r/-): log2(reservation set granularity in bytes) (via AMO_RVS_GRANULARITY generic) */ + SYSINFO_MEM_IMEM = 0, /**< SYSINFO_MEM byte 0 (r/-): log2(internal IMEM size in bytes) (via MEM_INT_IMEM_SIZE generic) */ + SYSINFO_MEM_DMEM = 1 /**< SYSINFO_MEM byte 1 (r/-): log2(internal DMEM size in bytes) (via MEM_INT_DMEM_SIZE generic) */ }; /** NEORV32_SYSINFO->SOC (r/-): Implemented processor devices/features */ diff --git a/sw/lib/source/neorv32_rte.c b/sw/lib/source/neorv32_rte.c index 9074f3a4f..503669e34 100644 --- a/sw/lib/source/neorv32_rte.c +++ b/sw/lib/source/neorv32_rte.c @@ -590,15 +590,6 @@ void neorv32_rte_print_hw_config(void) { neorv32_uart0_printf("none\n"); } - // reservation set granularity - neorv32_uart0_printf("Reservation set: "); - if (neorv32_cpu_csr_read(CSR_MISA) & (1 << 0)) { - neorv32_uart0_printf("%u bytes granularity\n", (uint32_t)(1 << NEORV32_SYSINFO->MEM[SYSINFO_MEM_RVSG]) & 0xFFFFFFFCUL); - } - else { - neorv32_uart0_printf("none\n"); - } - // external bus interface neorv32_uart0_printf("Ext. bus interface: "); tmp = NEORV32_SYSINFO->SOC; diff --git a/sw/svd/neorv32.svd b/sw/svd/neorv32.svd index cb80f627b..7b7a2bf49 100644 --- a/sw/svd/neorv32.svd +++ b/sw/svd/neorv32.svd @@ -1615,7 +1615,7 @@ SYSINFO_MEM_0[7:0]log2(IMEM size in bytes) SYSINFO_MEM_1[15:8]log2(DMEM size in bytes) SYSINFO_MEM_2[23:16]yet unused - SYSINFO_MEM_3[31:24]log2(reservation set granularity in bytes) + SYSINFO_MEM_3[31:24]yet unused From d50638746f705b9432e51d0a1d3717265106b1c6 Mon Sep 17 00:00:00 2001 From: stnolting <22944758+stnolting@users.noreply.github.com> Date: Wed, 3 Jul 2024 21:15:38 +0200 Subject: [PATCH 3/7] [rtl] intercon: fixed-size reservation set granule --- rtl/core/neorv32_intercon.vhd | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/rtl/core/neorv32_intercon.vhd b/rtl/core/neorv32_intercon.vhd index 7072308a0..5017a3a5b 100644 --- a/rtl/core/neorv32_intercon.vhd +++ b/rtl/core/neorv32_intercon.vhd @@ -575,8 +575,7 @@ end neorv32_bus_io_switch_rtl; -- -------------------------------------------------------------------------------- -- -- Reservation set controller for the A (atomic) ISA extension's LR.W -- -- (load-reservate) and SC.W (store-conditional) instructions. Only a single -- --- reservation set is supported. The reservation set's granularity can be -- --- configured via the GRANULARITY generic. -- +-- reservation set (granularity = 4 bytes) is supported. T -- -- -------------------------------------------------------------------------------- -- -- The NEORV32 RISC-V Processor - https://github.com/stnolting/neorv32 -- -- Copyright (c) NEORV32 contributors. -- @@ -593,9 +592,6 @@ library neorv32; use neorv32.neorv32_package.all; entity neorv32_bus_reservation_set is - generic ( - GRANULARITY : natural range 4 to natural'high -- reservation set granularity in bytes; has to be power of 2, min 4 - ); port ( -- global control -- clk_i : in std_ulogic; -- global clock, rising edge @@ -615,17 +611,10 @@ end neorv32_bus_reservation_set; architecture neorv32_bus_reservation_set_rtl of neorv32_bus_reservation_set is - -- auto-configuration -- - constant granularity_valid_c : boolean := is_power_of_two_f(GRANULARITY); - constant granularity_c : natural := cond_sel_natural_f(granularity_valid_c, GRANULARITY, 2**index_size_f(GRANULARITY)); - - -- reservation set granularity address boundary bit -- - constant abb_c : natural := index_size_f(granularity_c); - -- reservation set -- type rsvs_t is record - state : std_ulogic_vector(01 downto 0); - addr : std_ulogic_vector(31 downto abb_c); + state : std_ulogic_vector(1 downto 0); + addr : std_ulogic_vector(31 downto 2); -- reservated address; 4-byte granularity valid : std_ulogic; match : std_ulogic; end record; @@ -636,12 +625,6 @@ architecture neorv32_bus_reservation_set_rtl of neorv32_bus_reservation_set is begin - -- Sanity Checks -------------------------------------------------------------------------- - -- ------------------------------------------------------------------------------------------- - assert not (granularity_valid_c = false) report - "[NEORV32] Auto-adjusting invalid reservation set granularity configuration." severity warning; - - -- Reservation Set Control ---------------------------------------------------------------- -- ------------------------------------------------------------------------------------------- rvs_control: process(rstn_i, clk_i) @@ -655,7 +638,7 @@ begin when "10" => -- active reservation: wait for condition to invalidate reservation -- -------------------------------------------------------------------- if (core_req_i.stb = '1') and (core_req_i.rw = '0') and (core_req_i.rvso = '1') then -- another LR instruction overriding the current reservation - rsvs.addr <= core_req_i.addr(31 downto abb_c); + rsvs.addr <= core_req_i.addr(31 downto 2); end if; -- if (rvs_clear_i = '1') then -- external clear request (highest priority) @@ -684,7 +667,7 @@ begin when others => -- "0-" no active reservation: wait for new registration request -- -------------------------------------------------------------------- if (core_req_i.stb = '1') and (core_req_i.rw = '0') and (core_req_i.rvso = '1') then -- load-reservate instruction - rsvs.addr <= core_req_i.addr(31 downto abb_c); + rsvs.addr <= core_req_i.addr(31 downto 2); rsvs.state <= "10"; end if; @@ -693,15 +676,14 @@ begin end process rvs_control; -- address match? -- - rsvs.match <= '1' when (core_req_i.addr(31 downto abb_c) = rsvs.addr) else '0'; + rsvs.match <= '1' when (core_req_i.addr(31 downto 2) = rsvs.addr) else '0'; -- reservation valid? -- rsvs.valid <= rsvs.state(1); -- status for external system -- - rvs_valid_o <= rsvs.valid; - rvs_addr_o(31 downto abb_c) <= rsvs.addr; - rvs_addr_o(abb_c-1 downto 0) <= (others => '0'); + rvs_valid_o <= rsvs.valid; + rvs_addr_o <= rsvs.addr & "00"; -- System Bus Interface ------------------------------------------------------------------- From 54a15727a9af78d348768fcd99aed0f38a822c67 Mon Sep 17 00:00:00 2001 From: stnolting <22944758+stnolting@users.noreply.github.com> Date: Wed, 3 Jul 2024 21:17:40 +0200 Subject: [PATCH 4/7] [docs] soc: remove AMO_RVS_GRANULARITY generic --- docs/datasheet/soc.adoc | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/datasheet/soc.adoc b/docs/datasheet/soc.adoc index 792d74826..01a039d47 100644 --- a/docs/datasheet/soc.adoc +++ b/docs/datasheet/soc.adoc @@ -231,8 +231,6 @@ The generic type "`suv(x:y)`" is an abbreviation for "`std_ulogic_vector(x downt 4+^| **Hardware Performance Monitors (<<_zihpm_isa_extension>>)** | `HPM_NUM_CNTS` | natural | 0 | Number of implemented hardware performance monitor counters (0..13). | `HPM_CNT_WIDTH` | natural | 40 | Total LSB-aligned size of each HPM counter. Min 0, max 64. -4+^| **Atomic Memory Access Reservation Set Granularity (<<_a_isa_extension>>)** -| `AMO_RVS_GRANULARITY` | natural | 4 | Size in bytes, has to be a power of 2, min 4. 4+^| **Internal <<_instruction_memory_imem>>** | `MEM_INT_IMEM_EN` | boolean | false | Implement the processor-internal instruction memory. | `MEM_INT_IMEM_SIZE` | natural | 16*1024 | Size in bytes of the processor internal instruction memory (use a power of 2). @@ -567,6 +565,10 @@ the reservation is still valid the write access triggered by the SC instruction return a "success" state (`rd` = 0). If the reservation has been invalidated the SC instruction will not write to memory and will return a "failed" state (`rd` = 1). +.Reservation Set(s) and Granule +[NOTE] +The reservation set controller supports only **a single** global reservation set with a **word-aligned 4-byte granule**. + The reservation is invalidated if... * an SC instruction is executed that accesses an address **outside** of the reservation set of the previous LR instruction. @@ -593,12 +595,6 @@ The LR/SC mechanism follows the _strong semantic_ approach: the LR/SC instructio access to the referenced memory location between the LR and SC instructions (by the CPU itself or by the DMA). Context changes, interrupts, traps, etc. do not effect nor invalidate the reservation state at all. -The controller supports only a single global reservation set. By default this reservation set "monitors" a word-aligned -4-byte granule. However, the granularity can be customized via the `AMO_RVS_GRANULARITY` top entity generic (see -<<_processor_top_entity_generics>>) to cover an arbitrarily large naturally aligned address region. The only constraint is -that the size of the address region has to be a power of two. The configured granularity can be determined by software via -the <<_system_configuration_information_memory_sysinfo>> module. - .Physical Memory Attributes [NOTE] The reservation set can be set for _any_ address (only constrained by the configured granularity). This also From 2a081164883f6fdec1c35c74a288ee705c560d01 Mon Sep 17 00:00:00 2001 From: stnolting <22944758+stnolting@users.noreply.github.com> Date: Wed, 3 Jul 2024 21:18:01 +0200 Subject: [PATCH 5/7] [rtl] update Vivado IP script remove AMO_RVS_GRANULARITY generic --- rtl/system_integration/neorv32_vivado_ip.tcl | 43 +++++++++----------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/rtl/system_integration/neorv32_vivado_ip.tcl b/rtl/system_integration/neorv32_vivado_ip.tcl index f175a17fc..f145ea588 100644 --- a/rtl/system_integration/neorv32_vivado_ip.tcl +++ b/rtl/system_integration/neorv32_vivado_ip.tcl @@ -131,8 +131,6 @@ ipgui::move_param -component [ipx::current_core] -order 10 [ipgui::get_guiparams # ************************************************************** set_property display_name {RISC-V A ISA extension} [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_A" -component [ipx::current_core]] set_property tooltip {Atomic memory operations} [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_A" -component [ipx::current_core]] -set_property display_name {Reservation set minimal granularity} [ipgui::get_guiparamspec -name "AMO_RVS_GRANULARITY" -component [ipx::current_core]] -set_property tooltip {In bytes} [ipgui::get_guiparamspec -name "AMO_RVS_GRANULARITY" -component [ipx::current_core]] set_property display_name {RISC-V B ISA extension} [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_B" -component [ipx::current_core]] set_property tooltip {Bit-manipulation operations} [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_B" -component [ipx::current_core]] set_property display_name {RISC-V C ISA extension} [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_C" -component [ipx::current_core]] @@ -174,27 +172,26 @@ set_property tooltip {Naturally-aligned-power-of-two} ipgui::add_group -name {CPU Configuration} -component [ipx::current_core] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core]] -display_name {CPU Configuration} ipgui::move_group -component [ipx::current_core] -order 1 [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -parent [ipgui::get_pagespec -name "Page 0" -component [ipx::current_core]] ipgui::move_param -component [ipx::current_core] -order 0 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_A" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 1 [ipgui::get_guiparamspec -name "AMO_RVS_GRANULARITY" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 2 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_B" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 3 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_C" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 4 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_E" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 5 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_M" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 6 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_U" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 7 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zfinx" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 8 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zihpm" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 9 [ipgui::get_guiparamspec -name "HPM_NUM_CNTS" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 10 [ipgui::get_guiparamspec -name "HPM_CNT_WIDTH" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 11 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zicntr" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 12 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zicond" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 13 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zmmul" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 14 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zxcfu" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 15 [ipgui::get_guiparamspec -name "FAST_MUL_EN" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 16 [ipgui::get_guiparamspec -name "FAST_SHIFT_EN" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 17 [ipgui::get_guiparamspec -name "REGFILE_HW_RST" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 18 [ipgui::get_guiparamspec -name "PMP_NUM_REGIONS" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 19 [ipgui::get_guiparamspec -name "PMP_MIN_GRANULARITY" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 20 [ipgui::get_guiparamspec -name "PMP_TOR_MODE_EN" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] -ipgui::move_param -component [ipx::current_core] -order 21 [ipgui::get_guiparamspec -name "PMP_NAP_MODE_EN" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 1 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_B" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 2 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_C" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 3 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_E" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 4 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_M" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 5 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_U" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 6 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zfinx" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 7 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zihpm" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 8 [ipgui::get_guiparamspec -name "HPM_NUM_CNTS" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 9 [ipgui::get_guiparamspec -name "HPM_CNT_WIDTH" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 10 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zicntr" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 11 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zicond" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 12 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zmmul" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 13 [ipgui::get_guiparamspec -name "CPU_EXTENSION_RISCV_Zxcfu" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 14 [ipgui::get_guiparamspec -name "FAST_MUL_EN" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 15 [ipgui::get_guiparamspec -name "FAST_SHIFT_EN" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 16 [ipgui::get_guiparamspec -name "REGFILE_HW_RST" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 17 [ipgui::get_guiparamspec -name "PMP_NUM_REGIONS" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 18 [ipgui::get_guiparamspec -name "PMP_MIN_GRANULARITY" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 19 [ipgui::get_guiparamspec -name "PMP_TOR_MODE_EN" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] +ipgui::move_param -component [ipx::current_core] -order 20 [ipgui::get_guiparamspec -name "PMP_NAP_MODE_EN" -component [ipx::current_core]] -parent [ipgui::get_groupspec -name "CPU Configuration" -component [ipx::current_core]] # ************************************************************** From e18364e778b48a10a6ce4b8e1ce29440f397575f Mon Sep 17 00:00:00 2001 From: stnolting <22944758+stnolting@users.noreply.github.com> Date: Wed, 3 Jul 2024 21:18:58 +0200 Subject: [PATCH 6/7] [changelog] add v1.10.0.9 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3c410f26..11fa53dcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ mimpid = 0x01040312 -> Version 01.04.03.12 -> v1.4.3.12 | Date | Version | Comment | Ticket | |:----:|:-------:|:--------|:------:| +| 03.07.2024 | 1.10.0.9 | :warning: remove `AMO_RVS_GRANULARITY` generic, reservation set granularity is now fixed to 4 bytes | [#938](https://github.com/stnolting/neorv32/pull/938) | | 03.07.2024 | 1.10.0.8 | :test_tube: add XBUS to AHB3-lite bridge | [#937](https://github.com/stnolting/neorv32/pull/937) | | 02.07.2024 | 1.10.0.7 | minor rtl and software edits and cleanups | [#936](https://github.com/stnolting/neorv32/pull/936) | | 30.06.2024 | 1.10.0.6 | minor rtl edits and cleanups | [#935](https://github.com/stnolting/neorv32/pull/935) | From ef5017f30947af3d3ef926a47eb95f260ee6345d Mon Sep 17 00:00:00 2001 From: stnolting <22944758+stnolting@users.noreply.github.com> Date: Wed, 3 Jul 2024 21:23:02 +0200 Subject: [PATCH 7/7] [rtl] fix Vivado IP generic list --- rtl/system_integration/neorv32_vivado_ip.vhd | 2 -- 1 file changed, 2 deletions(-) diff --git a/rtl/system_integration/neorv32_vivado_ip.vhd b/rtl/system_integration/neorv32_vivado_ip.vhd index 5fce95959..c7559571e 100644 --- a/rtl/system_integration/neorv32_vivado_ip.vhd +++ b/rtl/system_integration/neorv32_vivado_ip.vhd @@ -305,8 +305,6 @@ begin -- Hardware Performance Monitors -- HPM_NUM_CNTS => HPM_NUM_CNTS, HPM_CNT_WIDTH => HPM_CNT_WIDTH, - -- Atomic Memory Access - Reservation Set Granularity -- - AMO_RVS_GRANULARITY => AMO_RVS_GRANULARITY, -- Internal Instruction memory -- MEM_INT_IMEM_EN => MEM_INT_IMEM_EN, MEM_INT_IMEM_SIZE => MEM_INT_IMEM_SIZE,