You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The AXI-Lite code as part of PeakRDL-regblock is unable to handle the case where a new data/address write occurs before a bresp is generated for the previous data-address pair. However the wready/awready signal is asserted and is expecting new writes. This is highlighted in the waveform below where the 2nd wdata is input before the first bresp is generated:
As per the AXI-Lite documentation (https://developer.arm.com/documentation/ihi0022/hc?lang=en): "AXI4-Lite supports multiple outstanding transactions, but a Subordinate can restrict this by the appropriate use of the handshake signals" [Section B1.1.4]
The text was updated successfully, but these errors were encountered:
The AXI4-Lite implementation is intentionally designed be lightweight and have minimal buffering storage space. In your example, wready is deasserted because it only has buffer space for one data word and is unable to process it until it has the corresponding address information for the write operation. This results in a stall cycle.
As soon as the awvalid arrives, the internal request buffer is available to accept the next transfer which appears to arrive soon after.
The delay of bvalid has nothing to do with the 2nd wvalid. Instead, this is due to the internal write processing latency of the register block - each transaction takes two clock cycles from the moment both parts arrive (wvalid and awvalid). I hope to make that latency even shorter in a future release (See #47). Your example's second transaction request just happened to finish being issued late enough that the first one was able to complete.
The register block does indeed support multiple outstanding transactions according to the AMBA spec, however there are some edge cases that prevent it from being able to effectively pipeline them. One option would be to add numerous independent FIFOs on each AXI channel to fully decouple them, but that would be quite costly for what is intended to be a lightweight implementation.
The AXI-Lite code as part of PeakRDL-regblock is unable to handle the case where a new data/address write occurs before a bresp is generated for the previous data-address pair. However the wready/awready signal is asserted and is expecting new writes. This is highlighted in the waveform below where the 2nd wdata is input before the first bresp is generated:
![image](https://private-user-images.githubusercontent.com/91882479/249112701-7e3691d6-c924-4a4e-9bd9-04fb20b93402.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5Njk1ODIsIm5iZiI6MTczODk2OTI4MiwicGF0aCI6Ii85MTg4MjQ3OS8yNDkxMTI3MDEtN2UzNjkxZDYtYzkyNC00YTRlLTliZDktMDRmYjIwYjkzNDAyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDIzMDEyMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJmMzRkMmQ4MzFiNmU0YTc3YzA0YjIwYzU1ZTNmYmY3ODA4NGUzZGVlYTY1MDhkOWY5M2FkZTE2N2E2MDM3YzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.eVwkIk2jMyiN9dqY7UrWGbdNyL1BSHl4EkMLU0WCZmI)
As per the AXI-Lite documentation (https://developer.arm.com/documentation/ihi0022/hc?lang=en): "AXI4-Lite supports multiple outstanding transactions, but a Subordinate can restrict this by the appropriate use of the handshake signals" [Section B1.1.4]
The text was updated successfully, but these errors were encountered: