20.1.2.5 QoS Parameter
(Ask a Question)The QoS feature allows bandwidth to be shared for the fabric initiators while accessing DDR. To share bandwidth, an AXI initiator (referred as QoS initiator) is connected internally at the AXI switch that performs the DDR access. This AXI initiator, which is hidden from you, performs DDR access controlled through QoS parameters. The QoS is enabled only when DDR is enabled.
You can change the QoS parameter values using vsim
commands while launching the simulation, to do so, see the following table.
Parameter | Description | Default Value |
---|---|---|
QOS_AXI_CLKS | Number of AXI clocks at which QoS initiator performs read/write AXI transactions with DDR. To change the value of this parameter, use
| 5000 |
QOS_START_ADDRESS | Base address for QoS operation. Change this address if the same address region is being used by another application through FIC. To avoid contention between QoS and FIC accessing the same DDR region, shift the QoS access region to an unused address region. To change the value of this parameter, use vsim command as shown below:For 38-bit: For 32-bit: (also need to change DDR_ADDRESS_REGION for 32-bit) | 38'h00_C000_0000 |
NO_OF_QOS_TRANSACTIONS | Number of burst read/write transactions performed by QoS at regular or cyclic interval of QOS_AXI_CLKS. If set to zero, QoS does not perform any AXI transactions to DDR and the entire bandwidth is allocated to FICs. Note: Make sure the QOS_AXI_CLKS value is much greater than the finish time of all QoS AXI transactions. The smallest burst size typically uses:
To change the value of this parameter, use
| 128 when DDR is used. |
The following shows an example of a simulation log where a fabric QoS initiator accesses DDR with number of QoS transactions set to ONE.
#
# QoS Write Transactions 1 Completed
# QoS Read Transactions 1 Completed
# Writing to DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000000, data = 12345678
# Writing to DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000001, data = aabbccdd
# Writing to DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000002, data = 12355577
# Writing to DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000003, data = aabbccdd
# Writing to DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000004, data = 12365476
# Writing to DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000005, data = aabbccdd
# Writing to DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000006, data = 12375375
# Writing to DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000007, data = aabbccdd
# Reading from DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000000, data = 12345678
# Reading from DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000001, data = aabbccdd
# Reading from DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000002, data = 12355577
# Reading from DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000003, data = aabbccdd
# Reading from DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000004, data = 12365476
# Reading from DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000005, data = aabbccdd
# Reading from DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000006, data = 12375375
# Reading from DDR3 Memory @ rank = 0, bank = 00, row = 00000, col = 00000007, data = aabbccdd