Skip to content

Commit

Permalink
Add variable-sized ports to Vivado IP block (#913)
Browse files Browse the repository at this point in the history
  • Loading branch information
stnolting committed May 30, 2024
2 parents 549b0b9 + c7ca33f commit 12715a3
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 63 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ mimpid = 0x01040312 -> Version 01.04.03.12 -> v1.4.3.12

| Date | Version | Comment | Ticket |
|:----:|:-------:|:--------|:------:|
| 29.05.2024 | 1.9.9.4 | Vivado IP block: add resizing ports for GPIOs, XIRQs and PWM; split size configuration for GPIO inputs and outputs | [#913](https://github.com/stnolting/neorv32/pull/913) |
| 27.05.2024 | 1.9.9.3 | removed `XIRQ_TRIGGER_*` generics; XIRQ trigger type is now _programmable_ by dedicated configuration registers | [#911](https://github.com/stnolting/neorv32/pull/911) |
| 21.05.2024 | 1.9.9.2 | :sparkles: add SLINK routing information ports (compatible to AXI-stream's `TID` and `TDEST` signals) | [#908](https://github.com/stnolting/neorv32/pull/908) |
| 04.05.2024 | 1.9.9.1 | :sparkles: add NEORV32 as Vivado IP block | [#894](https://github.com/stnolting/neorv32/pull/894) |
Expand Down
Binary file modified docs/figures/vivado_ip_soc.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/userguide/packaging_vivado.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ the generated IP block into the Vivado IP repository.
. In GUI mode select either "Tools -> Run TCL Script" to directly execute the script or open the TCL
shell ("Window -> Tcl Console") to manually invoke the script.
. Use `cd` in the TCL console to navigate to the project's `neorv32/rtl/system_integration` folder.
. Execute `source source neorv32_vivado_ip.tcl` in the TCL console.
. Execute `source neorv32_vivado_ip.tcl` in the TCL console.
. A second Vivado instance will open automatically packaging the IP module. After this process is completed,
the second Vivado instance will automatically close again.
. A new folder `neorv32_vivado_ip_work` is created in `neorv32/rtl/system_integration` which contains the IP-packaging
Expand Down
26 changes: 25 additions & 1 deletion rtl/core/neorv32_package.vhd
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ package neorv32_package is

-- Architecture Constants -----------------------------------------------------------------
-- -------------------------------------------------------------------------------------------
constant hw_version_c : std_ulogic_vector(31 downto 0) := x"01090903"; -- hardware version
constant hw_version_c : std_ulogic_vector(31 downto 0) := x"01090904"; -- hardware version
constant archid_c : natural := 19; -- official RISC-V architecture ID
constant XLEN : natural := 32; -- native data path width

Expand Down Expand Up @@ -683,6 +683,8 @@ package neorv32_package is
function cond_sel_natural_f(cond : boolean; val_t : natural; val_f : natural) return natural;
function cond_sel_suv_f(cond : boolean; val_t : std_ulogic_vector; val_f : std_ulogic_vector) return std_ulogic_vector;
function cond_sel_string_f(cond : boolean; val_t : string; val_f : string) return string;
function max_natural_f(a : natural; b : natural) return natural;
function min_natural_f(a : natural; b : natural) return natural;
function bool_to_ulogic_f(cond : boolean) return std_ulogic;
function bin_to_gray_f(input : std_ulogic_vector) return std_ulogic_vector;
function gray_to_bin_f(input : std_ulogic_vector) return std_ulogic_vector;
Expand Down Expand Up @@ -953,6 +955,28 @@ package body neorv32_package is
end if;
end function cond_sel_string_f;

-- Select minimal natural value -----------------------------------------------------------
-- -------------------------------------------------------------------------------------------
function max_natural_f(a : natural; b : natural) return natural is
begin
if a < b then
return b;
else
return a;
end if;
end function max_natural_f;

-- Select maximal natural value -----------------------------------------------------------
-- -------------------------------------------------------------------------------------------
function min_natural_f(a : natural; b : natural) return natural is
begin
if a < b then
return a;
else
return b;
end if;
end function min_natural_f;

-- Convert boolean to std_ulogic ----------------------------------------------------------
-- -------------------------------------------------------------------------------------------
function bool_to_ulogic_f(cond : boolean) return std_ulogic is
Expand Down
Loading

0 comments on commit 12715a3

Please sign in to comment.