A.5     Predeclared Memory Properties

(1)   The predeclared property set named Memory_Properties defines properties related to memory as storage, memory and device access.

Property set Memory_Properties is 
Size: type aadlinteger 0 Bytes .. Max_Memory_Size units Size_Units;

Memory size as integers with predefined size units.

 

Size_Range: type range of Size;

The Size_Range property specifies a closed range of memory size values, i.e., a memory size range including the lower and upper bound.

 

 

(2)   These properties record information related to memory and access of data.

Access_Right : Access_Rights => read_write  
   applies to (Data, Bus, Data Access, Bus Access);

The Access_Right property specifies the form of access that is permitted for a component.  If associated with a requires access clause it specifies the intended access to the component being accessed.  If associated with a provides access clause it specifies the type of access that is permitted to the component for which access is provided.  This access may be direct through read and write access or indirect through subprograms provided with the data type.  The provided access Access_Right must not exceed the access right specified for the component itself.  The required access Access_Right must not exceed the access right specified by the provides access or the component itself.

 
Access_Rights : type enumeration (read_only, write_only, read_write, 
                                      by_method);

The Access_Rights property type specifies the literals used to indicate the form of access that is permitted for a component.

 
Access_Time: record (
    First:  IO_Time_Spec ;
    Last: IO_Time_Spec ; )
    => [ First =>[Time => Start; Offset => 0.0 ns .. 0.0 ns;];
      Last => [Time => Completion; Offset => 0.0 ns .. 0.0 ns;]; ]
   applies to (data access);

The Access_Time property specifies the range of execution time during which the data component is being accessed.

 
Allowed_Message_Size: Size_Range
   applies to (bus);

The Allowed_Message_Size property specifies the allowed range of sizes for a block of data that can be transmitted by the bus hardware in a single transmission (in the absence of packetization).

The expression defines the range of data message sizes, excluding any header or packetization overheads added due to bus protocols, that can be sent in a single transmission over a bus.  Messages whose sizes fall below this range will be padded. Messages whose sizes fall above this range must be broken into two or more separately transmitted packets.

 
Assign_Time: record (
    Fixed: Time_Range;
    PerByte: Time_Range; )
   applies to (processor);

The Assign_Time property specifies a time unit value used in a linear estimation of the execution time required to move a block of bytes on a particular processor. The time required is (Number_of_Bytes * PerByte) + Fixed

 

 
Base_Address: aadlinteger 0 .. Max_Base_Address
   applies to (memory, data, data access, port);

The Base_Address property specifies the address of the first word in the memory.  The addresses used to access successive words of memory are Base_Address, Base_Address + Word_Space, …Base_Address + (Word_Count-1) * Word_Space.

In the case of a memory component it indicates what its starting address is.  In the case of a data component, data access, or port it indicates what its starting address is in the memory it is bound to. 

 
Device_Register_Address: aadlinteger
   applies to (port, feature group);

The Device_Register_Address property specifies the address of a device register that is represented by a port associated with a device.  This property is optional.  Device ports may be represented by a source text variable as part of the device driver software.

 
Read_Time: record (
    Fixed: Time_Range;
    PerByte: Time_Range; )
   applies to (memory);

The Read_Time property specifies a time unit value used in a linear estimation of the execution time required to read a block of bytes from memory. The time required is (Number_of_Bytes * PerByte) + Fixed

 
Source_Code_Size: Size
   applies to (data, thread, thread group, process, system, subprogram, processor, device);

The Source_Code_Size property specifies the size of the static code and read-only data that results when the associated source text is compiled, linked, bound and loaded in the final system. 

The property type is Size.  The standard units are bits, Bytes (bytes), KByte (kilobytes), MByte (megabytes) and GByte (gigabytes). 

 
Source_Data_Size: Size
   applies to (data, subprogram, thread, thread group, process, system, processor, device);

The Source_Data_Size property specifies the size of the readable and writeable data that results when the associated source text is compiled, linked, bound and loaded in the final system.  In the case of data types, it specifies the maximum size required to hold a value of an instance of the data type.

The property type is Size.  The standard units are bits, Bytes (bytes), KByte (kilobytes), MByte (megabytes) and GByte (gigabytes).

 
Source_Heap_Size: Size 
   applies to (thread, subprogram);

The Source_Heap_Size property specifies the minimum and maximum heap size requirements of a thread or subprogram.

The property type is Size.  The standard units are bits, Bytes (bytes), KByte (kilobytes), MByte (megabytes) and GByte (gigabytes).

 
Source_Stack_Size: Size
   applies to (thread, subprogram, processor, device);

The Source_Stack_Size property specifies the maximum size of the stack used by a processor executive, a device driver, a thread or a subprogram during execution.

The property type is Size.  The standard units are bits, Bytes (bytes), KByte (kilobytes), MByte (megabytes) and GByte (gigabytes).

 
Byte_Count: aadlinteger 0 .. Max_Byte_Count
   applies to (memory);

The Byte_Count property specifies the number of bytes in the memory.

 
Word_Size: Size => 8 bits 
   applies to (memory);

The Word_Size property specifies the size of the smallest independently readable and writeable unit of storage in the memory.

The property type is Size.  The standard units are bits, Bytes (bytes), KByte (kilobyte), MByte (megabyte) and GByte (gigabyte).

 
Word_Space: aadlinteger 1 .. Max_Word_Space => 1 
   applies to (memory);

The Word_Space specifies the interval between successive addresses used for successive words of memory.  A value greater than 1 means the addresses used to access words are not contiguous integers. 

The default value is 1.

 
Write_Time: record (
    Fixed: Time_Range;
    PerByte: Time_Range; )
   applies to (memory);

The Write_Time property specifies a time unit value used in a linear estimation of the execution time required to write a block of bytes to memory. The time required is (Number_of_Bytes * PerByte) + Fixed

 

 
 
end Memory_Properties;