COMPENTITY - Compound Entity

Synopsis

The COMPENTITY declaration enables the creation of higher level architecture components. This is used to group together entities and/or other higher level entities (the COMPENTITY's descendants) along with their interconnections into one entity, allowing the operation of the lower level components to be abstracted out.

When a project is first opened, a compound entity is displayed on screen by its own icon. Left clicking on this icon changes the display to show the next level of detail (i.e. a descendant may itself be a compound entity.

Syntax

COMPENTITY [OBJECT] entity_type_name (
    DESCENDANTS ( descendant, ... )
    DESCRIPTION ("description")
    [PARAMS ( reference_parameter, ... )]
    [PORTS ( port, ... )]
)

Example

COMPENTITY Computer (
DESCENDANTS (
CHILD ( Mem, main_mem )
CHILD ( CPU, processor )
CLINK ( CPU.processor[to_mem]->Mem.main_mem[from_proc], 3)
)
DESCRIPTION ( "A basic computer" )
PARAMS (
RARRAY ( Memory, cache_contents )
RINT ( access_time, 2 )
RENUM ( Associativity, cache_assoc, 0 )
)
PORTS (
PORT ( to_cpu, LinkData, SOURCE )
PORT ( from_cpu, LinkData, DESTINATION )
PORT ( to_main_mem, LinkData, SOURCE )
PORT ( from_main_mem, LinkData, DESTINATION )
)
)

CHILD - Compound Entity Component

Synopsis

The CHILD construct provides a mechanism for defining lower level entities in a COMPENTITY definition. Ports that are left unconnected on lower level entities are inherited by the higher level entity. These two ports then behave as one, so if the top level port is then linked to another port then the lower level port is automatically linked too. This inheritance can be performed at multiple levels resulting in three or four or more ports all behaving as one.

Syntax

CHILD ( entity_type_name, instance_name )