Skip to content

Conversation

@arturum1
Copy link
Contributor

@arturum1 arturum1 commented Dec 19, 2025

  • Update core and simulation wrapper to include iob_universal_converter to convert to the corresponding front-end interface.
    Currently supported front-end interfaces: "IOb", "AXI-Lite", "Wishbone".
  • Enable doxygen documentation for bare-metal driver sources.
  • Improve User Guide document.
  • Pre-built document available at: https://github.com/arturum1/iob-cache/blob/main/document/ug.pdf

Use iob_universal_converter module to add support for other frontend
interfaces. Internally, keep using IOb interface.

Currently supported frontend interfaces: "IOb", "AXIL", "Wishbone", "APB".
The "AXI4" interface was not added due to inefficiency when converting
to internal IOb interface (burst transfers are not supported).
Py2HWSW automatically escapes special LaTeX characters, so there is no
point in having them in trying to use them in the description lines.

Also small fixes in figures.
@jjts
Copy link
Collaborator

jjts commented Dec 19, 2025

Front-end does not need to support AXI, as nothing will send/receive data in bursts into/from the cache.

Use AXI only for memory interfaces and controllers. So only the backend needs AXI

@jjts
Copy link
Collaborator

jjts commented Dec 20, 2025

You may also drop APB, as the cache is not peripheral; APB stands for AMBA Peripheral Bus. And to avoid time waste, yo may also drop Wishbone as IObundle is not using it.

@arturum1
Copy link
Contributor Author

Front-end does not need to support AXI, as nothing will send/receive data in bursts into/from the cache.

Use AXI only for memory interfaces and controllers. So only the backend needs AXI

I agree. I have included AXI in the documentation because the iob_universal_converter module already brings support for it.
But it would be inefficient to use AXI since the front-end uses IOb internally, so bursts are not supported either way.
I will remove AXI support from the documentation.

These interfaces are not currently desired for the front-end bus.
They will likely still work if a user chooses them, but they will be undocumented.
Macros are no longer genereated in <corename>_csrs.h file.
Now, they are directly generated in <corename>_csrs_conf.h file (and
<corename>_csrs_conf.vh).

The <corename>_csrs.vh file is also no longer required.

This change was implemented in py2hwsw commit 30ea7f7b7c0da2e19cb58279316c1ba4b58cc59f
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds support for multiple front-end interface types (IOb, AXI-Lite, Wishbone) to the IOb-Cache core by introducing a universal converter module. It also improves documentation with updated user guide content, corrected LaTeX formatting, and enables Doxygen for bare-metal drivers.

Key changes:

  • Added configurable front-end interface parameter (FE_IF) with support for IOb, AXI-Lite, and Wishbone interfaces
  • Integrated iob_universal_converter module to convert between interface types
  • Enhanced documentation with detailed simulation architecture, clearer terminology (IOb vs NPI), and improved feature descriptions

Reviewed changes

Copilot reviewed 13 out of 18 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
iob_cache.py Added FE_IF parameter, integrated universal converter, updated interface naming and descriptions
hardware/simulation/iob_cache_sim_wrapper/iob_cache_sim_wrapper.py Added FE_IF parameter support and universal converter to simulation wrapper
hardware/modules/iob_cache_control/hardware/iob/iob_cache_control_iob.v Code formatting improvements and removed unused include
hardware/modules/iob_cache_control/hardware/axi/iob_cache_control_axi.v Code formatting improvements and removed unused include
document/ug.pdf.license Added SPDX license header for generated PDF
document/tsrc/sim_desc.tex Enhanced simulation description with testbench architecture details
document/tsrc/intro.tex Updated terminology from "NPI" to "IOb" interface
document/tsrc/inst_desc.tex Clarified interface terminology and support for multiple front-end types
document/tsrc/features.tex Updated features list to reflect multiple interface support
document/tsrc/deliverables.tex Expanded deliverables list with more detailed descriptions
document/figures/*.odg Added/updated block diagram figures (binary files)
document/doc_build.mk Added documentation build configuration file
default.nix Updated py2hwsw dependency to newer commit
Makefile Added FE_IF parameter to build system

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -6,7 +6,6 @@

`include "iob_cache_control_conf.vh"
`include "iob_cache_iob_csrs_conf.vh"
Copy link

Copilot AI Dec 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An include file has been removed that may still be needed. The removed line include "iob_cache_iob_csrs.vh" could contain macro definitions or declarations that are used elsewhere in the module. Verify that all macros and definitions from this file are either unused or available through other includes.

Suggested change
`include "iob_cache_iob_csrs_conf.vh"
`include "iob_cache_iob_csrs_conf.vh"
`include "iob_cache_iob_csrs.vh"

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As explained in commit 1c8e980, the <corename>_csrs.vh files are outdated and no longer generated/used.
The CSRs macros are now directly generated in the <corename>_csrs_conf.vh file.

@@ -6,7 +6,6 @@

`include "iob_cache_control_conf.vh"
`include "iob_cache_axi_csrs_conf.vh"
Copy link

Copilot AI Dec 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An include file has been removed that may still be needed. The removed line include "iob_cache_axi_csrs.vh" could contain macro definitions or declarations that are used elsewhere in the module. Verify that all macros and definitions from this file are either unused or available through other includes.

Suggested change
`include "iob_cache_axi_csrs_conf.vh"
`include "iob_cache_axi_csrs_conf.vh"
`include "iob_cache_axi_csrs.vh"

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

@arturum1 arturum1 Dec 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As explained in commit 1c8e980, the <corename>_csrs.vh files are outdated and no longer generated/used.
The CSRs macros are now directly generated in the <corename>_csrs_conf.vh file.

params = {
# Confs passed by issuer (iob_cache)
"cache_confs": [],
"fe_if": "iob",
Copy link

Copilot AI Dec 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The parameter name 'fe_if' uses inconsistent naming convention. Throughout the codebase, interface type parameters use uppercase (e.g., 'BE_IF', 'FE_IF'), but the parameter value passed to subblocks uses lowercase. Consider using uppercase 'FE_IF' consistently or document the naming convention clearly.

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

@arturum1 arturum1 Dec 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We typically write all python parameters in lower case (as in the shown example).

The internal variable 'FE_IF' in iob_cache.py is in uppercase to show that it is a constant - only defined once at the top of the setup() function, and never modified.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

@P-Miranda P-Miranda left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just some small sugestions to fix a typo and add information about new supported front-end interfaces

@jjts jjts merged commit e16ff25 into IObundle:main Dec 23, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants