AR# 19132

6.2 EDK - PlatGen unable to resolve slave position in system with master-slave devices

Description

Keywords: XPS, master, slave, PLB

Urgency: Standard

General Description:
PlatGen errors out on the MHS snippet shown below with the following error:

"ERROR:MDT - plb_v34 (plb) - C:\working\Gm\system.mhs:106 - 2 SLAVE(s) allowed, but POSITION 3 assigned"

BEGIN plb_gemac
PARAMETER INSTANCE = plb_gemac_0
PARAMETER HW_VER = 1.00.b
PARAMETER C_BASEADDR = 0x10000000
PARAMETER C_HIGHADDR = 0x1000ffff
BUS_INTERFACE MSPLB = plb

NOTE: The suggested fix below impacts all MHS users who use MSPLB.

Solution

This problem occurs when a bus has more masters than slaves and at lease one of the masters has the MASTER_SLAVE bus interface type. Depending on the order in which PlatGen connects the different units to the bus, PlatGen might error out and indicate that the assigned position of a slave unit exceeds the total number of slaves present. To avoid this, you should make sure that PlatGen always connects the master-slave units first. You can control the PlatGen connection order by assigning the POSITION attribute to the MHS bus interface declaration as follows:

BUS_INTERFACE MSPLB=plb, POSITION=1

for a MPD declaration such as:

BUS_INTERFACE BUS=MSPLB, BUS_STD=PLB, BUS_TYPE=MASTER_SLAVE

This ensures that PlatGen can correctly assign all slaves to the bus.

NOTE: This change of POSITION for bus units can result in arbitration priority changes, which if relevant, you must compensate for in the bus arbiter configuration.
AR# 19132
Date 04/09/2007
Status Archive
Type General Article