Error response for unmapped address or forbidden read/write access (#168)
* feat: add ability to enable error output on the cpuif, when decoding errors occur (generate_cpuif_err in API). * fix: move signal to new place (after automatic vers) * feat: add info about new api (generate_cpuif_err) * fix: repair readback with latency * Adding generate_cpuif_err argument to peakrdl-regblock to generate cpuif error response, when the address is decoded incorrectly * add sw rd or/and wr attribure error response related and add error respone for external mem * add sw rd or/and wr error response test * add sw rd or/and wr error response for external register test and fix generation of rtl logic for external register * add sw rd or/and wr error response for external mem test * add sw rd or/and wr error response for apb3 imterfaces driver * add error response test for APB4, AXI4Lite and Avalon interfaces * rename --generate_cpuif_err to --generate-cpuif-err * style: minor typo fixes and test clean-up * refactor: move expected error check inside write/read functions * feat: add error response check to OBI testbench interface * feat: split generate-cpuif-err option into err-if-bad-addr and err-if-bad-rw options * feat: add err_if_bad_addr/rw to cfg_schema * feat: extend cpuif_err_rsp test to cover all combinations of bad_addr/bad_rw * style: lint fixes * fix: removed redundant if node.external condition to help coverage * Fix dangling hwif_in signals in testcase --------- Co-authored-by: Denis Trifonov <d.trifonov@yadro.com> Co-authored-by: Dominik Tanous <tanous@kandou.com> Co-authored-by: Sebastien Baillou <baillou@kandou.com> Co-authored-by: Alex Mykyta <amykyta3@users.noreply.github.com>
This commit is contained in:
@@ -120,6 +120,13 @@ class RegblockExporter:
|
||||
If overriden to True, default reset is active-low instead of active-high.
|
||||
default_reset_async: bool
|
||||
If overriden to True, default reset is asynchronous instead of synchronous.
|
||||
err_if_bad_addr: bool
|
||||
If overriden to True: If the address is decoded incorrectly, the CPUIF response
|
||||
signal shows an error. For example: APB.PSLVERR = 1'b1, AXI4LITE.*RESP = 2'b10.
|
||||
err_if_bad_rw: bool
|
||||
If overriden to True: If an illegal access is performed to a read-only or write-only
|
||||
register, the CPUIF response signal shows an error. For example: APB.PSLVERR = 1'b1,
|
||||
AXI4LITE.*RESP = 2'b10.
|
||||
"""
|
||||
# If it is the root node, skip to top addrmap
|
||||
if isinstance(node, RootNode):
|
||||
@@ -230,6 +237,10 @@ class DesignState:
|
||||
self.default_reset_activelow = kwargs.pop("default_reset_activelow", False) # type: bool
|
||||
self.default_reset_async = kwargs.pop("default_reset_async", False) # type: bool
|
||||
|
||||
# Generating a cpuif error
|
||||
self.err_if_bad_addr = kwargs.pop("err_if_bad_addr", False) # type: bool
|
||||
self.err_if_bad_rw = kwargs.pop("err_if_bad_rw", False) # type: bool
|
||||
|
||||
#------------------------
|
||||
# Info about the design
|
||||
#------------------------
|
||||
|
||||
Reference in New Issue
Block a user