Quartus® Prime Pro Edition User Guide: Platform Designer

ID 683609
Date 4/01/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

4.6.1.1. Using the Maximum Pending Reads Parameter

If you create a custom component with an agent interface supporting variable-latency reads, you must specify the Maximum Pending Reads parameter in the Component Editor. Platform Designer uses this parameter to generate the appropriate interconnect and represent the maximum number of read transfers that your pipelined agent component can process. If the number of reads presented to the agent interface exceeds the Maximum Pending Reads parameter, then the agent interface must assert waitrequest.

Optimizing the value of the Maximum Pending Reads parameter requires an understanding of the latencies of your custom components. This parameter should be based on the component’s highest read latency for the various logic paths inside the component. For example, if your pipelined component has two modes, one requiring two clock cycles and the other five, set the Maximum Pending Reads parameter to 5 to allow your component to pipeline five transfers, and eliminating dead cycles after the initial five-cycle latency.

You can also determine the correct value for the Maximum Pending Reads parameter by monitoring the number of reads that are pending during system simulation or while running the hardware. To use this method, set the parameter to a high value and use a host that issues read requests on every clock. You can use a DMA for this task if the data is written to a location that does not frequently assert waitrequest. If you implement this method, you can observe your component with a logic analyzer or built-in monitoring hardware.

Choosing the correct value for the Maximum Pending Reads parameter of your custom pipelined read component is important. If you underestimate the parameter value, you may cause a host interface to stall with a waitrequest until the agent responds to an earlier read request and frees a FIFO position.

The Maximum Pending Reads parameter controls the depth of the response FIFO inserted into the interconnect for each host connected to the agent. This FIFO does not use significant hardware resources. Overestimating the Maximum Pending Reads parameter results in a slight increase in hardware utilization. For these reasons, if you are not sure of the optimal value, you should overestimate this value.

If your system includes a bridge, you must set the Maximum Pending Reads parameter on the bridge as well. To allow maximum throughput, this value should be equal to or greater than the Maximum Pending Reads value for the connected agent that has the highest value. You can limit the maximum pending reads of an agent and reduce the buffer depth by reducing the parameter value on the bridge if the high throughput is not required. If you do not know the Maximum Pending Reads value for all the agent components, you can monitor the number of reads that are pending during system simulation while running the hardware. To use this method, set the Maximum Pending Reads parameter to a high value and use a host that issues read requests on every clock, such as a DMA. Then, reduce the number of maximum pending reads of the bridge until the bridge reduces the performance of any hosts accessing the bridge.