4.3. Transaction Level Modeling

Transaction Level Modeling is a process of implementing a system specification on a platform consisting of PEs and memories interconnected with busses and CEs (bridges, transducers), in order to generate a respective transaction level model (TLM) of the design. During TL Modeling, the designers allocate PEs and memories, busses and CEs and connect them into an intergral system platform. During mapping, the designers map computation processes to the PEs and end-to-end communication channels to the network of PEs, CEs and busses. Processes are units of computation in the specification. The end-to-end channels connect processes to enable interprocess data exchange, or connect a process with the memory for data storing. Specifically, Transaction Level Modeling consists of the following tasks:

  1. PE Allocation to allocate and select PEs/memories from the PE database in order to assemble the system's computing architecture (see Section 4.3.1).

  2. PE Mapping to map the design's computation entities (or processes) to the selected PEs (see Section 4.3.2).

  3. Network Allocation to allocate, select and define the communication network topology (see Section 4.3.3).

  4. Channel Mapping to map the design's global, system-level channels to the selected network of PEs, busses and CEs (see Section 4.3.4).

  5. TLM synthesis to automatically generate an Transaction Level Model from the given specification based on the decision made during the allocation of components and application-to-platform mapping (see Section 4.4).

In order to perform TL Modeling, not all the tasks described in previous sections need to be done. However, some tasks must be executed and must be executed in a certain order. These mandatory tasks and their execution sequence are:

  1. Design Creation or Design Opening.

  2. Preferences Editing and Design Settings Editing.

  3. PE Allocation.

  4. PE Mapping.

  5. Network Allocation.

  6. Channel Mapping.

  7. TLM Synthesis.

  8. Design Saving and/or ESE Exiting.

Note that steps 3 through 7 can be performed repeatedly in a loop in order to generate multiple candidate TL models in one design modeling session.

4.3.1. PE Allocation

Figure 4-9. PE Allocation result.

Users can select PEs/memories out of the PE database in order to allocate and assemble the system architecture. PE allocation information is stored in the design itself (*.eds) as an annotated Data Structure component.

Figure 4-10. PE Parameters dialog.

Operation: In order to do PE allocation, users first select Processing tab in the Database Window. The Processing tab contains the PE category table, with each row representing one category of PEs in the database. For example, row SW Processors contains all the general-purpose processors in the database. The supported EDS categories are Hardware IPs, Custom Hardware or SW Processor. The users add the PE to the design's platform by dragging the desired EDS component from its category and dropping it into the Design Canvas. This creates a PE in the Design Canvas with the default PE_name. The result of a PE Allocation action is shown in Figure 4-9.

In the PE Window, list of tabs with currently allocated PEs will be shown (Figure 4-9). Each tab lists the names of Processes, Memories and Channels belonging to that PE.

PEs can be parametrized after instantiation by right-clicking on the component in the Design Canvas. The Component Parameter dialog will be popped up (see Figure 4-10). In this dialog, the users can enter and confirm all parameters for the given component instance to be allocated. Users can enter any value for any parameter (within the value range allowed by the component) by clicking into each parameter's value field in the dialog. Clicking the Ok button of the dialog will generate a new customized component type with the selected parameters and will then allocate a new instance of this parametrized type. Clicking the Cancel button aborts component parametrization.

In order to remove a PE from the design's platform, users can right-click on the target PE to be removed in the Design Canvas and select the Remove PE option. Clicking on the Remove PE will remove the selected PE from the list of allocated PEs.

Error/Information Messages: During PE editing, if users try to give PEs a name which is already used as the name of another PE in the design, an Error dialog will be popped up with a corresponding error message and a query to continue without saving changes. Answering 'no' will close the Error dialog. Answering 'yes' will abort and cancel the PE Parameters editing operation.

During PE adding, when adding a PE, the selected PE type is read from the database. In case of errors during database opening (e.g. file errors or wrong file format), an Error dialog will be popped up and the PE adding operation will be aborted.

4.3.2. PE Mapping

In order to implement the computation in the design model on the allocated computation architecture consisting of PEs and memories, users have to be able to map the processes, variables (memory) and channels in the specification onto the allocated PEs. Hence, mapping consists of separate process mapping, memory mapping, and channel mapping tasks.

4.3.2.1. Process Mapping

Process mapping allows for mapping of process types/classes in the design onto allocated PEs, i.e. process mapping information is stored as annotations at the process classes in the design. A process is mapped to the PE by right-clicking on the corresponding PE tab in the PE Window and selecting Add Process option. This creates a process listing in the PE tab with the default process name. Process mapping information consists of proces name, source files and process ports and it can be accessed for editing with right-clicking on the process listing.

Process Renaming

Figure 4-11. Process Renaming dialog.

Process renaming is accessed by right-clicking on the process listing and selecting Rename Process option. The process name line box can be edited until key Enter is pressed. Process renaming is shown in Figure 4-11.

Adding Source File(s) to the Process

Figure 4-12. Adding Sources to a Process (C File) dialog.

The users can add source files (*.c and *.h) to the process by right-clicking on the process listing and selecting Add .C File(s) and Add .H File(s) options, respectively. An Open dialog will be popped up (see Figure 4-12). In this dialog, users should first specify the file(s) directory in Look-in box. The content of the directory will be automatically displayed in the display box in the center. The file(s) type in the File Type box defaults to C source files (*.c) or C header files (*.h), depending on the selected option. All the source/header files with the specified type will be displayed in the display box. Users further type in the file name(s) in File Type box. Finally, by clicking Open button, the file(s) with the specified name(s) will be selected. If users click Cancel button, then the action of database selection will be cancelled. Either clicking Open or Cancel button will close the Open dialog.

Viewing Source File(s) of the Process

Figure 4-13. Adding Sources to a Process (C File) dialog.

The users can view the source file(*.c and *.h) of the process by right-clicking on the process listing and selecting View Source. An ESE Design Viewer dialog will be popped up (see Figure 4-13). In this dialog, users can view the source file textually and search for keywords. Choosing Main::File->Close will close the ESE Design Viewer dialog.

Adding Process Port(s) to the Process

Figure 4-14. Adding a Process Port to a Process dialog.

The users add process ports to the process by right-clicking on the process listing and selecting Add Process Port option. An Add Process Port dialog will be popped up, as shown in Figure 4-14. The users can name the process port in Name line box, and define its type by selecting one option in the Type drop box. Upon selection, the API box will automatically display the selected type(s) of API(s). The users can then name the API(s) belonging to that port by double-clicking and writing the API functions in the appropriate lines of the display box. Finally, by clicking Add button, the process port with the specified API(s) will be selected. If users click Cancel button, then the action of creating a process port will be cancelled. Either clicking Open or Cancel button will close the Add Process Port dialog.

4.3.2.2. Local Memory Mapping

Memory mapping allows for mapping of variable instances in the design into exposed memories of allocated regular PEs. An exposed memory is added to the PE by right-clicking on the corresponding PE tab in the PE Window and selecting Add Exposed Memory option. This creates a memory listing in the PE tab with the default memory name. Memory mapping information consists of memory name and size and it can be accessed for editing with right-clicking on the memory listing.

4.3.2.3. Local Channel Mapping

Channel mapping attributes an end-to-end channel to a pair of processes. Depending on the selected route, a channel can be either local (i.e. belonging to a single PE), or global (i.e. connecting processes of different PEs), mapped to the network of busses and CEs. Local and global channel mapping is uniformly described in Section 4.3.4.

4.3.3. Network Allocation

Network allocation and connection information is stored in the design itself (*.eds) as an annotated Data Structure allocation and connection tables.

Network topology includes an interconnection of communication busses and communication elements (CEs). The end-to-end channels that implement communication between processes are then mapped to the routes of busses and CEs connecting those processes. Hence, network allocation consists of separate bus allocation, CE allocation, network connecting and channel mapping tasks.

4.3.3.1. Bus Allocation

Figure 4-15. Bus Allocation result.

Operation: In order to allocate a bus, users first select Communication tab in the Database Window. The Communication tab contains the communication category table, with each row representing one category of communication media in the database. For example, category Bus includes all busses supported with the database. The EDS communication categories are Network, Bus and Link. The user adds the communication component to the design's platform by dragging the desired EDS component from its category and dropping it into the Design Canvas. This creates a bus in the Design Canvas with the default Bus_name. The result of a Network Allocation (adding a bus) action is shown in Figure 4-15.

In the Channel Window, list of tabs with currently allocated busses will be shown (Figure 4-15). Each tab lists the names of Process Channels, Memory channels and FIFO channels belonging to that bus.

Figure 4-16. Bus Parameters dialog.

Busses can be parametrized after instantiation by right-clicking on the bus component in the Design Canvas. The Component Parameter dialog will be popped up (see Figure 4-16). In this dialog, the user has to enter and confirm all parameters (within categories of Arbitration, Addressing and Synch/Transfer) for the given bus component instance. For example, addressing the components connected to the bus is done within the tab Addressing (see Figure 4-17). Users can enter values for Low and High Address for any component (a Channel, CE port or a Memory) by clicking into each parameter's value field in the dialog. To set the synchronization type for each channel, the user has to click on the Sync/Transfer tab (see Figure 4-18). Here, synchronization and packetization options are set per channel.

Figure 4-17. Bus Addressing dialog.

Figure 4-18. Bus Synchronization dialog.

Clicking the Ok button of the dialog will generate a new customized component type with the selected parameters and will then allocate a new instance of this parametrized type. Clicking the Cancel button aborts component parametrization.

In order to remove a bus from the design's platform, users can right-click on the target bus to be removed in the Design Canvas and select the Remove Bus option. Clicking on the Remove Bus will remove the selected Bus and all its connections from the platform.

Error/Information Messages: During bus editing, if users try to give busses a name which is already used as the name of another bus in the design, an Error dialog will be popped up with a corresponding error message and a query to continue without saving changes. Answering 'no' will close the Error dialog. Answering 'yes' will abort and cancel the Bus Parameters editing operation.

When adding a bus, the selected bus type is read from the database. In case of errors during database opening (e.g. file errors or wrong file format), an Error dialog will be popped up and the PE adding operation will be aborted.

4.3.3.2. CE Allocation

Figure 4-19. CE Allocation result.

Operation: In order to allocate a CE, users first select CE tab in the Database Window. The CE tab contains the CE category table, with each row representing one category of CEs in the database. For example, category Bridge includes all bridges supported with the database. The EDS communication categories are Router, Transducer and Bridge. The user adds the CE component to the design's platform by dragging the desired EDS component from its category and dropping it into the Design Canvas. This creates a CE in the Design Canvas with the default CE_name. The Network Allocation (adding a CE) is shown in Figure 4-19.

In the Channel Window, list of tabs with currently allocated CEs will be shown (Figure 4-19). Each tab lists the names of Process Channels, Memory channels and FIFO channels belonging to that CE.

Figure 4-20. CE Parameters dialog.

Figure 4-21. CE Scheduling dialog.

CEs can be parametrized after instantiation by right-clicking on the CE component in the Design Canvas. The Component Parameter dialog will be popped up (see Figure 4-20). In this dialog, the user has to enter and confirm all parameters (within categories of FIFO and Scheduling) for the given bus component instance. Users can enter any value for any parameter (within the value range allowed by the component) by clicking into each parameter's value field in the dialog. There are two tabs = Fifo and Scheduling. In the Fifo tabe, the size and partition types are set. In the Scheduling tab (see Figure 4-21), the transducer scheduling policy is set. Clicking the Ok button of the dialog will generate a new customized component type with the selected parameters and will then allocate a new instance of this parametrized type. Clicking the Cancel button aborts component parametrization.

In order to remove a CE from the design's platform, users can right-click on the target component to be removed in the Design Canvas and select the Remove CE option. Clicking on the Remove CE will remove the selected CE and all its connections from the platform.

Error/Information Messages: During CE editing, if users try to give CEs a name which is already used as the name of another CE in the design, an Error dialog will be popped up with a corresponding error message and a query to continue without saving changes. Answering 'no' will close the Error dialog. Answering 'yes' will abort and cancel the CE Parameters editing operation.

When adding a CE, the selected CE type is read from the database. In case of errors during database opening (e.g. file errors or wrong file format), an Error dialog will be popped up and the PE adding operation will be aborted.

4.3.3.3. Connecting the network

The network is constructed by connecting PEs and CEs to the busses. This process is done with the following operations:

Port Adding

Figure 4-22. Port Adding dialog.

By right-clicking onto a PE or CE in the Design Canvas and selecting Add Port option, the user attributed the communication port to that PE/CE. The Port Adding is shown in Figure 4-22.

Remove Port

Right-clicking onto a PE's or CE's port and selecting the Remove Port from the context menu will remove that port from the corresponding PE or CE.

Connecting to the Bus

Figure 4-23. Connecting to the bus dialog.

Users can connect the PE/CE to the bus (named Bus_name) by right-clicking on the created PE/CE's port and selecting Connect toBus_name option. Generally, PE/CE ports can connected to busses either as bus master (M), bus slave (S) or as combined bus master/slave (MS). as shown in Figure 4-23.

4.3.4. Channel Mapping

Figure 4-24. Add Channel context menu.

Channel mapping attributes an end-to-end channel to a pair of processes. Creating a channel begins by right-clicking onto a Channel Window and selecting Add Channel option. This action is shown on in Figure 4-24. The Channel Type dropbox allows the users to select among the following types of channels: Process-to-Process Channel, Memory Channel and FIFO Channel.

Process-to-Process Channel

Figure 4-25. Process-to-Process Channel dialog.

Process-to-Process Channel is defined with the inputting the values of the following parameters, as shown in Figure 4-25:

  1. Name line box defines a unique name identifier for the channel.

  2. Dropbox Direction provides options of Unidirectional and Bidirectional channel. Unidirectional channels only transfer data from Process 1 to Process 2.

  3. If the channel is defines as Unidirectional, dropbox Process 1 allows the users to select the sending process. Otherwise, it defines the first process in the communicating process pair.

  4. Dropbox Process Port provides the users with the list of available ports of the selected process. Available ports have no previously assigned channels to them and are, if the channel is Unidirectional, defined as sending or writing ports.

  5. Similarly to Process 1, dropbox Process 2 defines either process receiver, or the second process in the communicating process pair.

  6. Process Port lists previously unassigned ports of the selected process. If the channel is Unidirectional, the listed ports are defined as receiving or reading ports.

  7. Finally, two dropboxes for routing give the users the list of available routes between processes. If the channel is Unidirectional, only one of the dropboxes is active.

Memory Channel

Figure 4-26. Memory Channel dialog.

Memory Channel is a channel that connects a process with the Memory element. The channel is defined with the following parameters, as shown in Figure 4-26:

  1. Name line box defines a unique name identifier for the channel.

  2. Dropbox Direction allows users to define a channel as: Read only, Write only or Read/write channel.

  3. Users can select the process that accesses the Memory from the list of processes presented in the dropbox Process.

  4. Dropbox Process Port provides the users with the list of available ports of the selected process. Available ports have no previously assigned channels to them and are defined as reading and/or writing ports (depending on the selection in channel Direction).

  5. Users can define the Memory that Process reads from and/or writes into by selecting from the dropbox Memory. Only memories accessable (i.e. exposed) to the channel are listed here.

  6. Low Address and High Address line boxes allow the user to define the address range of the Memory that is accessable to the Process via this channel.

  7. Finally, two dropboxes for routing give the users the list of available routes between a Process and a Memory. If the channel is Read only, the dropbox Memory->Process is the only one active for selection. If the channel is Write only, the active dropbox is Process->Memory.

FIFO Channel

Figure 4-27. FIFO Channel dialog.

FIFO Channel is defined with the following parameters, as shown in Figure 4-27.

  1. Name line box defines a unique name identifier for the channel.

  2. Next, the line box Size defines the storage capacity of the FIFO channel. (i.e. the depth of the FIFO queue).

  3. The sending process is defined with selection from the dropbox Writer, and the corresponding (i.e. writing) process port can be selected from the dropbox Port.

  4. Similarly, the reading process is defined by selecting from the dropbox Reader, with the dropbox Port defining its (reading) port.

  5. Mapping line box allows the user to define whether the FIFO will be mapped to the WRITER PE or READER PE.

  6. Finally, the dropbox Route gives the users the list of available routes between two processes. Since FIFO channel is by definition unidirectional, only one dropbox defines the route.

Reviewing Channel Properties

After creating a channel, users can access channel properties by right-clicking on the listing of the channel whose properties they wish to review and selecting Properties option. Channel listings Process Channels, Memory Channels and FIFO Channels for are located in the Channel Window.

Removing a Channel

Users can remove created channels by right-clicking on the channel listing in the Channel Window and selecting Remove Channel option. This action releases all the ports that were assigned to the removed channel.

In order to add a defined channel to the design, users can edit the listed channel parameters and click the Add button. If users click Cancel button, then all unsaved user selections will be cancelled. Either clicking the Add or Cancel button will close the Add Channel dialog.

Every channel connected to a system bus must be assigned an address range. Base addresses and address masks define the address space occupied by the channel on the bus, i.e. they define the address decoding to be performed for that channel. Note that address ranges will later be used for automatic address selection during bus parameter assignment. The addresses of channels mapped to the same bus must not overlap.

Error/Information Messages: There are several errors that can happen during bus or CE allocation:

  1. When adding a bus or CE to the allocation via the Bus or CE Selection dialog, the selected bus/CE type is read from the database. In case of database read errors (file errors, database format errors) during this operation, an Error dialog will be popped up and the Bus/CE Adding operation aborted.

  2. In addition, if during port name editing users try to give ports a name which is already used as the name of another port of the same PE/CE, a corresponding Error dialog will be shown and the renaming operation is cancelled.