29.01.2015 Views

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Exploring SW Per<strong>for</strong>mance 99<br />

of latency, bus loading, memory accesses, arbitration policy, tasks activity.<br />

These parameters allow <strong>for</strong> exploring SW per<strong>for</strong>mance as it can be seen <strong>for</strong><br />

the vi<strong>de</strong>o <strong>de</strong>co<strong>de</strong>r application presented in the next section.<br />

The first step during the <strong>de</strong>sign flow is to create the application tasks in C<br />

language. Next, using VISTA graphical front-end, the applications tasks and<br />

RTOS resources can be allocated on the “black-box”. Preliminary simulation<br />

can now be per<strong>for</strong>med by executing the application co<strong>de</strong> on the virtual<br />

plat<strong>for</strong>m to ensure that the co<strong>de</strong> is functionally correct. Then, the co<strong>de</strong> is crosscompiled<br />

on the target processor. VISTA will process the output from the<br />

cross-compilation phase in or<strong>de</strong>r to create timing in<strong>for</strong>mation, which can be<br />

back annotated on the original application co<strong>de</strong> to reflect in situ execution of<br />

the co<strong>de</strong> on the target plat<strong>for</strong>m. Finally, timed simulation can be per<strong>for</strong>med<br />

to analyze <strong>for</strong> system per<strong>for</strong>mance and power consumption. The in<strong>for</strong>mation<br />

extracted from this phase can enable the SW <strong>de</strong>veloper to further <strong>de</strong>velop<br />

and refine the application co<strong>de</strong>.<br />

VISTA’s simulator is a compiled C++ program that takes advantage of the<br />

SystemC2.0 kernel, modified so as to get proper <strong>de</strong>bugging and tracing in<strong>for</strong>mation.<br />

The simulator is launched either as a stand-alone process or as a<br />

dynamic library loa<strong>de</strong>d into the process of the GUI. I<strong>de</strong>ally both options<br />

should be available as option one is easier to <strong>de</strong>bug and option two is faster.<br />

Several simulation mo<strong>de</strong>s are possible. First, interactive simulation: the user<br />

can set graphical input <strong>de</strong>vices on ports of the diagram, like sli<strong>de</strong>rs, knobs,<br />

etc. Outputs can be monitored similarly by setting wave<strong>for</strong>m viewers like the<br />

one shown in Figure 8-2, which gathers in one single window the functionality<br />

of an oscilloscope (continuous traces) and of a logic analyzer (discrete<br />

traces). Interactive simulation is essential in the prototyping phases of a<br />

software <strong>de</strong>velopment. Secondly, batch simulation will also be possible.<br />

2.1. Abstract communication<br />

The accesses are a mechanism to abstract the communication between the<br />

modules and allow a seamless refinement of the communication into the IP<br />

modules from the functional level to the transactional level. SystemC2.0<br />

already provi<strong>de</strong>s ports and channels <strong>for</strong> this purpose. We have enriched the<br />

channel notion with introducing a pattern of three related modules:<br />

2.1.1. Channels mo<strong>de</strong>ls<br />

1.<br />

The slave access first publishes the operations to the channel. It is notified<br />

the channel transactions corresponding to these operation invocations, and<br />

accepts or rejects them. For example, the amba slave access notifies the<br />

amba bus channel whether a transaction is ok, fails or needs to be split.<br />

Note that the publishing mechanism makes that a slave access doesn’t need<br />

to reproduce the slave module interfaces. A slave access can be shared by<br />

several modules, but can only be bound to a single channel.

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

Saved successfully!

Ooh no, something went wrong!