09.03.2013 Views

Processor Local Bus Functional Model Toolkit User's Manual

Processor Local Bus Functional Model Toolkit User's Manual

Processor Local Bus Functional Model Toolkit User's Manual

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

may be used with test environments to check that bus commands are executed and master memory<br />

is updated in addition to data miscompares.<br />

For each byte that is written to the slave memory array during simulation of PLB write cycles to the<br />

slave, the PLB_slave_dirty_array is updated to indicate that the corresponding byte has been<br />

updated. This feature can be used in simulation environments which need to detect or count exactly<br />

which bytes were written to in the slave so that a more comprehensive checking algorithm may be<br />

implemented. In addition, there are two integer variables within the slave memory process which<br />

accumulate the total number of bytes which have been read from the slave memory array and also<br />

the total number of bytes which have been written to the array. These two variables are called:<br />

– slave_mem/total_bytes_written<br />

– slave_mem/total_bytes_read<br />

The default size of the slave memory array is 64k bytes. This may be increased or decreased by<br />

updating the PLB_slave_mem_array_size parameter in the PLB_DCL declaration HDL file of the<br />

toolkit.<br />

The PLB slave model supports two different memory look-up algorithms used to access the internal<br />

memory arrays: fully associative and direct mapped. Each of these is described below:<br />

• Fully associative, linear search look-up mode<br />

The default mode for the PLB slave model is linear search mode. This algorithm provides the<br />

flexibility to initialize the slave model with many non-contiguous data patterns within an entire 64-bit<br />

address range. In the linear look-up mode, each array element status is maintained by the slave.<br />

Initialization with mem_init commands causes the valid bit to be set. Any bus cycles which have an<br />

address that matches a valid entry in the memory array will use the memory array for the bus<br />

functional command operation. For write cycles, the internal master data memory will be updated<br />

when Sl_wrDAck is asserted. For read cycles, data from the internal slave memory is loaded into a<br />

buffer one clock before Sl_rdDAck assertion.<br />

• Direct mapped mode<br />

When the PLB slave model is programmed in direct mapped mode, a subfield of the address<br />

(PLB_Abus) is used to directly reference the PLB slave internal memory. The direct mapped mode is<br />

useful when simulations contain many contiguous slave address, as the lookup algorithm is more<br />

efficient than the linear search mode.<br />

Note: The internal slave address subfield is automatically calculated by the model as the slave<br />

memory configuration parameters are set in the plb_dcl.vhd file. The user is not required to<br />

configure these indices within the toolkit.<br />

5.3.5 Ordered Write Cycles (PLB_ordered)<br />

When the slave model acknowledges a write cycle when PLB_TAttribute[8] signal is active, the PLB<br />

slave model will delay all subsequent internal data accesses until the previous write cycle is internally<br />

complete. The PLB slave model, however, may acknowledge additional cycles (assert Sl_addrAck)<br />

during ordered writes.<br />

Version 4.9.2 PLB <strong>Bus</strong> <strong>Model</strong>s 25

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!