From 08314b74c444da16843546b903de7aa6e85fb888 Mon Sep 17 00:00:00 2001 From: Jorge Marques Date: Tue, 8 Jul 2025 10:45:58 +0200 Subject: [PATCH 1/3] docs/creating_new_ip: Minor grammar Signed-off-by: Jorge Marques --- docs/user_guide/ip_cores/creating_new_ip.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/user_guide/ip_cores/creating_new_ip.rst b/docs/user_guide/ip_cores/creating_new_ip.rst index 2f999dc39e2..df93e098ed1 100644 --- a/docs/user_guide/ip_cores/creating_new_ip.rst +++ b/docs/user_guide/ip_cores/creating_new_ip.rst @@ -13,7 +13,7 @@ and ``axi_led_control_intel`` for Intel. Verilog File -------------------------------------------------------------------------------- -Lets say you want to make a new IP with the name ````. +Let's say you want to make a new IP with the name ````. You must edit the verilog file so that it has the same name (e.g. ``axi_led_control.v``). After that, feel free to write the verilog code for your purpose. You can also use other instances of modules, but be sure to include them after, @@ -177,9 +177,9 @@ Examples: Importing with Using Method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The ``USING`` method allows to look-up a register map to import register and +The ``USING`` method allows looking up a register map to import register and fields. -A register map can look-up multiple register maps by repeating the method for +A register map can look up multiple register maps by repeating the method for each register map, for example: .. code:: @@ -235,7 +235,7 @@ Some considerations: * Imported registers shall have non-imported fields, for example, when importing a register that is reserved for custom implementation. -* Imported fields must be inside a imported register, since the field name is not +* Imported fields must be inside an imported register, since the field name is not unique. * Multiple fields can be imported from a single ``FIELD`` group. * Multiple register maps can be used for lookup. Add each in a different ``USING`` @@ -813,7 +813,7 @@ trying to simulate most of the available options when creating a new IP. # Generating the IP given as first parameter on the path given as the second # parameter. Without the second parameter the IP will be generated in - # ./ltt directory and in the default IP download directory of + # ./ltt directory and in the default IP download directory of # Lattice Propel Builder (~/PropelIPLocal) if the LATTICE_DEFAULT_PATHS # env variable is exported like: # 'export LATTICE_DEFAULT_PATHS=1' before running the script or running make. From 7cfb1278ec4408fbcd4ce4d4a07e0e6aadc1101a Mon Sep 17 00:00:00 2001 From: Jorge Marques Date: Tue, 8 Jul 2025 10:46:47 +0200 Subject: [PATCH 2/3] docs/creating_new_ip: Add version guidelines To ensure consistency with software, semantic versioning must be used. The first release should have major version at least 1. Signed-off-by: Jorge Marques --- docs/user_guide/ip_cores/creating_new_ip.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/user_guide/ip_cores/creating_new_ip.rst b/docs/user_guide/ip_cores/creating_new_ip.rst index df93e098ed1..ff29c9cd587 100644 --- a/docs/user_guide/ip_cores/creating_new_ip.rst +++ b/docs/user_guide/ip_cores/creating_new_ip.rst @@ -287,6 +287,22 @@ use the generic adc/dac templates that include all available registers: * :git-hdl:`docs/regmap/adi_regmap_axi_adc_template.txt` * :git-hdl:`docs/regmap/adi_regmap_axi_dac_template.txt` +Versioning +-------------------------------------------------------------------------------- + +IP cores versions should follow `Semantic Versioning ` +``v..`` format. +A fix increases the patch number, a feature the minor number, and a breaking +change the major number. The first stable release version should be higher or +equal to v1.0.0. + +Device tree bindings take the major number, for example, for *axi_my_ip* v1.2.3, +the *dt-binding* and *compatible* should be *adi,axi-my-ip-1*. +Per the last paragraph, *adi,axi-my-ip-0* is **never** appropriate. +Software drivers parse the ``VERSION`` register for feature handling across +versions. The patch number shouldn't have to be handled by software drivers, if +it seems necessary to, consider incrementing the minor number instead. + Xilinx -------------------------------------------------------------------------------- From c133807a14346fda6d1228b72402ec910ace1899 Mon Sep 17 00:00:00 2001 From: Jorge Marques Date: Tue, 8 Jul 2025 10:49:54 +0200 Subject: [PATCH 3/3] docs/creating_new_ip: Add lore on 1.00.a Explain how it came to be and how to handle Signed-off-by: Jorge Marques --- docs/user_guide/ip_cores/creating_new_ip.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/user_guide/ip_cores/creating_new_ip.rst b/docs/user_guide/ip_cores/creating_new_ip.rst index ff29c9cd587..2e67e2e8e3a 100644 --- a/docs/user_guide/ip_cores/creating_new_ip.rst +++ b/docs/user_guide/ip_cores/creating_new_ip.rst @@ -303,6 +303,10 @@ Software drivers parse the ``VERSION`` register for feature handling across versions. The patch number shouldn't have to be handled by software drivers, if it seems necessary to, consider incrementing the minor number instead. +Due to AMD Xilinx old default IP core version, many IP cores bindings start at +1.00.a. For compatibility, the patch value is kept, but should be treated as +decimal instead of character. + Xilinx --------------------------------------------------------------------------------