VEST 4.0 User Guide
VEST 4.0 User Guide
Version 4.0
Released January 2004
VEST Group
Department of Computer Science
University of Virginia
Contact: John A. Stankovic
[email protected]
http://www.cs.virginia.edu/brochure/profs/stankovic.html
1 WHAT’S NEW IN RELEASE 4.0.......................................................................................................4
1.1 VEST TOOL....................................................................................................................................4
1.2 NEW FEATURES...............................................................................................................................4
1.3 UPDATES TO USER’S MANUAL........................................................................................................4
2 INTRODUCTION.................................................................................................................................5
2.1 OVERVIEW OF VEST.......................................................................................................................5
2.2 OVERVIEW OF GME........................................................................................................................6
3 INSTALLATION...................................................................................................................................7
3.1 INSTALLING GME...........................................................................................................................7
3.2 INSTALLING VEST..........................................................................................................................7
3.2.1 Loading the VEST metamodel in GME......................................................................................7
3.2.2 Registering the VEST metamodel.............................................................................................10
3.2.3 Loading and Running a VEST project......................................................................................11
3.2.4 Manually Adding Interpreters to VEST....................................................................................12
4 THE VEST TOOL...............................................................................................................................15
4.1 COMPOSITION ENVIRONMENT.......................................................................................................15
4.1.1 Model Editing Window.............................................................................................................15
4.1.2 Project Browser........................................................................................................................16
4.1.3 Component Browser.................................................................................................................18
4.1.4 Attribute Window......................................................................................................................19
4.1.5 Menu Bar..................................................................................................................................20
4.1.6 Tool Bar....................................................................................................................................21
4.1.7 Mode Bar..................................................................................................................................21
4.1.8 Status Bar.................................................................................................................................22
4.1.9 Title Bar....................................................................................................................................23
4.2 ASPECT CHECKS............................................................................................................................23
4.2.1 Buffer-Size Check.....................................................................................................................23
4.2.2 Memory Check..........................................................................................................................23
4.2.3 RT Scheduling...........................................................................................................................24
4.3 PRESCRIPTIVE ASPECTS.................................................................................................................25
5 USING VEST.......................................................................................................................................27
5.1 BUILDING A SYSTEM DESIGN........................................................................................................27
Exercise (Time Required: 1-2 hours)....................................................................................................27
5.1.1 Creating a new VEST project...................................................................................................28
5.1.2 Creating a Model Layer...........................................................................................................29
5.1.3 Creating Components...............................................................................................................30
5.1.4 Creating Relationships between Components..........................................................................31
5.1.5 Setting Component Attribute Values........................................................................................33
5.1.6 Creating Sub-Components........................................................................................................34
5.1.7 Creating References.................................................................................................................34
5.1.8 Creating Event Channels..........................................................................................................35
5.2 USING ASPECT CHECKS.................................................................................................................37
5.2.1 Memory Check..........................................................................................................................37
5.2.2 Buffer-size Check......................................................................................................................38
5.2.3 RT Scheduling Check................................................................................................................40
5.3 USING PRESCRIPTIVE ASPECTS.....................................................................................................42
6 REFERENCES....................................................................................................................................47
4 Component Libraries
Prescriptive Aspects Library
Aspect Checks
Composition Environment
A brief description of each of these follows. For more detailed information, please refer
to [1].
VEST 3.0 has been implemented using GME (Generic Modeling Environment). GME [2]
is a meta-modeling environment with an extensible collection of model editing tools
supporting a Model-Based Development approach to system/software engineering. More
detailed information on GME is provided in the following subsection.
The Generic Modeling Environment (GME) developed at the Institute for Software
Integrated Systems at Vanderbilt University is a configurable toolkit for creating domain-
specific modeling and program synthesis environments. The configuration is
accomplished through metamodels specifying the modeling paradigm (modeling
language) of the application domain. The modeling paradigm contains all the syntactic,
semantic, and presentation information regarding the domain – which concepts will be
used to construct models, what relationships may exist among those concepts, how the
concepts may be organized and viewed by the modeler, and rules governing the
construction of models. The modeling paradigm defines the family of models that can be
created using the resultant modeling environment.
The metamodels specifying the modeling paradigm are used to automatically generate the
target domain-specific environment. The generated domain-specific environment is then
used to build domains. These models are used to automatically generate the applications
or to synthesize input to different COTS analysis tools. This process is called model
interpretation.
The relationship between VEST and GME can be described as follows. The component
libraries of VEST are implemented as meta-models in GME. When designing a system
using the VEST metamodel, GME provides the underlying support for the graphics and
modeling support. The system design developed in VEST can be exported as XML files,
which make it possible to import the design to other related tools. However, all
dependency checks and the prescriptive aspect interpreters are VEST specific and are
implemented as interpreters that can be invoked through the buttons on the VEST GUI.
All interpreters are implemented in C++ and can access the internal data structures that
represent the component-based embedded system design.
To use VEST, GME first needs to be installed on your system. GME is available at
http://www.isis.vanderbilt.edu/Projects/gme/. Instructions on how to install and run GME
can be found on this website. VEST users should first become familiar with GME and the
basic GME GUI commands and interfaces. All GUI capabilities in VEST are similar to
GME.
Once GME is installed on your system, the VEST metamodel needs to be downloaded
and loaded into GME. The VEST metamodel is included in your download in the
following file: [Install Directory]/VEST/vest.xml. Although distributed in XML format, it
can be available in either XML format and as a GME project file.
In order to create any VEST design, the VEST metamodel first needs to be registered
with your system. There are two major steps involved here:
Loading the VEST metamodel in GME
Registering the VEST metamodel
There are two ways to load the VEST metamodel in GME. The first way is using an
XML file and the other is using a GME project file. Follow the steps outlined below
depending on the type of file that you have.
Step 1:
Launch GME
Step 2:
Select “Import XML…” under the File menu as shown in Figure 3 -1
Step 3:
This brings up a file selector dialog box as shown in Figure 3 -2
Select the VEST metamodel XML file that you downloaded earlier
Click “Open”
Figure 3-2
Step 4:
GME reads the XML data and brings up the dialog box shown in Figure 3 -3
We will create a GME project file from our VEST metamodel data and so click
“Next”
Step 5:
GME then will ask you to name the project file. Name this file “Vest”
Click “Open”
Step 6:
GME creates a GME project file from the XML data and then displays the success
box shown in Figure 3 -4
Click “OK”
The VEST metamodel has been successfully loaded in GME at this point
Now the VEST metamodel needs to be registered with the system. Skip to Section
3.2.2 to perform this step
Figure 3-4
Step 1:
Launch GME
Step 2:
Open the GME project (mga file extension) containing the VEST metamodel
using the “Open Project…” option under the File menu
Step 3:
GME brings up the dialog box shown in Figure 3 -5
Since our GME project is stored in a file, we leave the default setting and click
“Next”
We need to interpret and register the Vest metamodel with the system so that we can
create VEST projects in GME. Follow these steps to register the VEST metamodel:
Step 1:
Click the MGA Interpreter button (icon ) located on the GME toolbar
This brings up the Aspect Mapping dialog box shown in Figure 3 -6
1
Click “OK”
Step 2:
GME interprets the VEST metamodel. GME may display some warnings. Ignore
these and continue
Once the model is successfully interpreted, GME shows the dialog box shown in
Figure 3 -7 and asks if you would like to register the VEST paradigm
Click “Yes”
If no error messages are displayed, the VEST paradigm is successfully registered
with your system
1
The concept of Aspect in GME is really a particular view that a user sees. This aspect has nothing at all to
do with the use of the term aspect in VEST itself. In VEST, aspects refer to the main principle underlying
aspect-oriented programming
Figure 3-7
Once your VEST metamodel is registered with the system, you can then load and run
VEST projects. Follow these steps to load and run a VEST project included with your
download:
Step 1:
Step 3:
Choose a name and location to store the project file
Click “Open”
o GME will read the XML data, convert it to a VEST project and load it
Step 1:
Click “Open Project…” under the File menu
o The dialog box in Figure 3 -5 will appear
Step 2:
Leave the default selection and click “Next”
o An File Selector dialog box like Figure 3 -2 will appear
Step 3:
Select “Scenario32MultiProcessor.mga” from [Installation Directory]/VEST
Click “Open”
o GME will open the VEST project and load it
After the project had loaded, you should observe several things. Refer to Figure 4 -10
The Project name “Scenario32MultiProcessor” should appear as the root tree item
in the Project Browser window
There should be 4 icons in the interpreters section as shown in Figure 3 -8
If any of these interpreters are missing from your toolbar, continue with Section
3.2.4
If all of the icons listed are there, your VEST project has loaded correctly. Each of
these checks will be described in detail in later sections
Figure 3-8
To manually add registered interpreters to the VEST toolbar, follow these steps:
Figure 3-9
Step 3:
If the interpreter is not listed in the Components dialog
o Click “Install New”
o This will bring up a file selector dialog box
o Select the DLL from the sub-directory of the missing interpreter under
[Installation Directory]/VEST
o Click “Open”
Title Bar
Restore-down
Menu Bar button
Tool Bar Interpreters
Mode Bar
Model Project
Editing Browser
Window
Component
Browser Attribute
Window
Status
Bar
Figure 4-10
It is the main canvas of the tool and contains the product under development. For
example, Figure 4 -10 shows a product with four actual components
(PILOT_CONTROL, WAYPOINT_PROXY, WAYPOINT and FLT_PLAN_DISPLAY)
in the Model Editing Window.
Models in VEST can be hierarchical. This means that a certain component can be
composed of sub-components. Components displayed on the same canvas are on the
same hierarchical level of the design. The sub-components of a component can be viewed
by double-clicking on the higher-level component. This opens up a new canvas
Figure 4-11
By default, all canvases open up maximized. By clicking on the restore-down button
shown in Figure 4 -10, all the current canvases that have been opened appear in the
Model Editing Window as shown in Figure 4 -11. Each sub-window has the name of the
parent component in its title bar.
The Project Browser has three different views as shown by the tabs in Figure 4 -12. The
Aggregate view displays the hierarchical structure of the product under development
from the highest level of the project. For example, it can be seen in the figure that the
Software layer has four components (PILOT_CONTROL, WAYPOINT_PROXY,
WAYPOINT and FLT_PLAN_DISPLAY) and that the PILOT_CONTROL component
has six sub-components - 2 references (discussed later) and 4 software components.
The Inheritance view is used to visualize the type inheritance hierarchy of the model
currently selected in the Model Editing Window. Our example above doesn’t have any
inheritance. The Meta view shows the VEST modeling language at a glance. It displays
the legally available array of Folders and objects that can be added to some level within
the aggregate hierarchy. In VEST, as shown in Figure 4 -12, at the highest level also
known as the “RootFolder” level, we can add “Aspect”, “Hardware”, “Middleware”,
“OS” and “Software” Folders to a VEST project. Within each of these folders, we can
add models. For example, in the Software folder, we can add a Software model. Within
this model more parts can be added. For example, we can add Software Components and
Software Timers to a Software model.
The Component Browser displays all the components available in a particular component
library. In VEST, there are four component libraries: application, middleware, OS and
hardware.
Figure 4-13
The Component Browser has three different views as indicated by the tabs in the lower
portion of the window. The AbstractComponents view displays all the abstract
components available in the library. For example, the left portion of Figure 4 -13 shows
all the abstract components available in the Hardware component library. In this case,
Memory, Processor, Cache, Memory and so on are all the available abstract hardware
components that can be inserted into our design. The ActualComponents view displays all
the actual components available in the library. The right portion of Figure 4 -13 shows
all the actual components available in the Hardware component library. PIII and
PowerPC are the available actual components in this case. The References views displays
all the reference components available in the library. Simply put, a reference in VEST
refers or points to other components. References are discussed in greater detail in Section
5.1.7. The Hardware library in Figure 4 -13 has no reference components.
There are two privilege levels with respect to library access. The first level is for users
with only read access to the libraries. A system designer is an example of such a user. A
system designer can use the predefined components in a library to build a system design
but cannot modify the library in any way. The second level is for users with both read and
write access to the libraries. A VEST library administrator is an example of such a user.
A VEST library administrator can add components to the library.
The Attribute Window displays all the attributes (reflective information) of a particular
component when that component is highlighted. For example, the PILOT_CONTROL
component of Figure 4 -10 is highlighted and its attributed are displayed in the Attribute
Window. The component’s name (which is also an attribute of the component) appears in
a separate text box at the top of the attributes window. The name of the component can be
changed here.
The Attributes Window has three tabs (see Figure 4 -10) – one for the component’s
attributes, one for the component’s preferences and another for the component’s
properties. The attributes tab allows a user to set VEST specific attribute values for a
component. The preference tab allows the user to define general preferences for a
component such as color, icon name, etc. The properties tab lists constant properties of a
component as defined by the VEST paradigm such as component type, kind, etc.
This list is illustrative and not comprehensive. It should give the reader a feel for the type
of reflective information VEST stores for each component.
Whenever a component is added to a design, attributes that were designed with default
values get initialized with those values. The other attributes have no values assigned to
them. Default values appear grayed out in the Attribute Window. User-specified attribute
values appear in black. Attributes (default and user-specified) can be modified in the
Attribute Window. These values can come as single or multi-line text boxes, toggle
buttons, combo boxes or color pickers. Values can be assigned to them using the standard
Windows procedures for editing such data entry fields. Changes made to an attribute’s
value are immediate.
It contains commands for certain operations on the model. The menu bar in the VEST
GUI environment contains the same options as the GME tool. Here is a brief overview of
the commands available on the menu. For more information on any of these commands,
please refer to the GME documentation.
File:
Contains the following project- and model-related commands:
Create a new project
Open, close, save or abort an existing project
Import, export or update a project in XML format
Print contents of active window
Register paradigms and components
Check or display model constraints
Set GME-specific parameters
Run model interpreters or plug-ins (paradigm-independent
interpreters)
Exit GME
Edit:
Contains the following editing commands
Undo, redo up to last 10 operations
Clear undo queue
View/Edit current project properties
Show parent, basetype or type of a model if applicable
Copy, paste, delete, select all
Cancel pending operation
View/Edit current model preferences
View/Edit current object’s registry
View/Edit synch aspects
View:
Allows the toggling on and off of the
Toolbar, Status Bar
Component Browser (called Part Browser in GME)
Attribute Window (called Attribute Browser in GME)
Project Browser (called Browser in GME)
Window:
Cascade, Tile, Arrange Icons – standard Windows functions
Help:
Contents – Shows online help contents GME
Help – Shows context sensitive, user-specified help
Figure 4-14
VEST interpreters
The toolbar contains icon shortcuts for certain editing functions that are available on the
menu. VEST specific functionality appears in the Components section of the tool bar as
shown in Figure 4 -14. Located here are icons that implement interpreters. In our case,
we have icons for aspect checks and prescriptive aspects. A developer can invoke an
aspect check by clicking on a corresponding icon on the tool bar. For example, by
clicking the icon with an “S” in it in Figure 4 -14, the user can invoke the real-time
schedulability analysis aspect check. He can also apply a prescriptive aspect by invoking
an aspect interpreter from an icon on the tool bar. More details about the checks available
in VEST are in Section 4.2.
Normal
Add Connection
Delete
Set Mode Connection
Zoom
Visualization
Figure 4-15
Contains buttons for selecting the editing mode. Each of the modes is described here
briefly. Refer to the GME documentation for more detailed information.
Figure 4 -15 indicates the buttons used to select the different editing modes. The editing
modes are Normal, Add Connection, Delete Connection, Set Mode, Zoom Mode and
Visualization.
Normal Mode - This mode is used to add, delete, move or copy parts within
editing windows
A component can be added by left-click-dragging the component onto a
canvas from the component browser
A component can be moved by left-click-dragging the component
o This can be done across canvases also as long as the VEST modeling
paradigm is not violated
A component can be deleted or copied by right-clicking the component and
choosing the appropriate option
Set Mode – Can define sets and set members in this mode
The line at the bottom which shows status and error messages, current edit mode (e.g.
EDIT, CONNECT, etc.), zoom factor, paradigm name (e.g. VEST), and current time.
This check browses through a system and for each buffer, adds up its total buffer
consumption based on the rate of execution of its consumers. Then it browses through the
system, for each buffer, adds the total buffer production based on its rate of execution of
its suppliers. The aspect check then compares each buffer's total production with its total
consumption. If its total production is larger than total consumption, messages might be
lost. The developer is informed. An illustration of the how to invoke and use the buffer-
size check in VEST is given in Section 5.2.1.
A memory footprint check is available in VEST. There are two parts to this check. The
first part of the memory footprint check is concerned with main memory. It sums the
memory needed by all the components in the system (including buffers since they are
allocated from main memory), and all the available physical memory (RAM) provided by
the hardware, and checks if there is enough physical memory in the system.
The second part of the memory check deals with NVRAM (e.g., EEPROM). For systems
to function correctly, sufficient NVRAM for persistent components should be provided.
Our check assures the developer that there is enough non-volatile memory to meet the
system’s requirement, or gives warning when not enough NVRAM is provided. An
illustration of the memory footprint checks in VEST is given in Section 5.2.1.
reflective schedulability
information assessment
collector
Figure 4-16
An important check for real-time embedded systems is the schedulability analysis that
validates whether all tasks can make their deadlines. Note that while designing and
implementing a system that most changes made will affect the real-time properties of the
system. This makes real-time scheduling a global cross cutting dependency. While many
different schedulability analysis techniques exist, they differ in their assumptions on the
task set and none of the existing analysis is applicable to all real-time embedded systems.
The compatibility between schedulability analyses and the characteristics of the designed
system is a typical crosscutting dependency that is “hidden” from the designer. Using an
incompatible analysis on a system can lead to timing violations even when the
schedulability analysis itself is correct. To handle different types of embedded systems,
VEST provides a flexible and extensible scheduling tool that provides aspect checks on
the compatibility between existing schedulability analyses and the system. This tool
(shown in Figure 4 -16) is composed of a set of schedulability analysis routines, an
assumption table, and a reflective information collector. The assumption table lists the
assumptions of each schedulability analysis routine. The current list of assumptions
includes:
Periodic: are all the tasks periodic?
Distributed: are any of the tasks distributed on multiple processors?
Importance: are important tasks protected in overload conditions?
Blocking: can low priority tasks block high priority tasks?
Precedence: are there precedence constraints among tasks?
For example, the assumptions of the Rate Monotonic analysis are that all tasks are
periodic. The Rate Monotonic with Priority Ceiling protocol’s assumptions are (periodic,
blocking). The VEST scheduling tool is extensible and new scheduling techniques can be
added to the tool together with their assumptions. The current version of VEST can
support the following schedulability analysis algorithms:
Single Processor:
Rate Monotonic Analysis
From the VEST GUI, a system developer can compose a distributed embedded system in
the following way:
We present a simple tutorial that will take you through the steps outlined above in
creating a simple system design. Following subsections will describe the various types of
checks that we can perform on our design using VEST once it has been created. The
system that we will design in this tutorial will be based on Boeing’s Boldstroke
middleware OEP. We will use Product Scenario 3.1 as the example. Please refer to [3] for
more detailed information about the OEP platform and the product scenario. Note that the
exercise may seem a little time-consuming and tedious at times. However if done
properly, it will give the reader an excellent overview of the VEST tool and its
capabilities.
1. SetData()
3. SetData()
2. SetData() 5. ExternalizeState()
waypointProxy : infrastructure
waypoint :
BM__OpenEDComponent
BM__OpenEDComponent
DATA_AVAILABLE
6. InternalizeState()
7. SetStateUpdated()
4. Push()
9. GetData() DATA_AVAILABLE
8. Push()
fl tPlanDispl ay :
BM__Di splayComponent
Basic Multi-Processor Scenario
Figure 5-17
You may find it useful to read Appendix 5 which describes how to construct Prism
systems in VEST before proceeding. This exercise will take you through the steps
required to model this scenario in VEST. After the system design is completed, we will
perform checks on the design for robustness and schedulability.
Required parts of the exercise that are left to the reader to perform are indicated by the
following symbol
Launch GME
Select “New Project” under the File menu
A “Select Paradigm” dialog box should appear
o The Vest paradigm should be one of the options listed
o If the Vest paradigm is not in the list, you did not successfully register the
paradigm
o Go back to the Installation section of this document and install the Vest
paradigm into your system
Select the Vest paradigm
Click on the “Create New…” button
o We are creating a new project
Figure 5-18
To design the software components of the system, we need to create a software model
layer in VEST as follows:
Right-click the project name (Scenario3.1) in the Project Browser window and
select “Insert Folder -> Software Folder”.
o VEST will create a new software layer folder and name it
“NewSoftwareFolder” by default
Using this procedure, insert a Hardware model named “Hardware” into this
project
Follow Appendix 1 to attach the ACL library to your project. This will involve
the following steps
o Convert the Boeing ACL library into a VEST ACL library
o Attach the library to your project in GME format
This will add a new entry for the library under the project name in
the project browser
Expand this tree all the way down to the software level and you
will eventually see the common components defined in the ACL in
the Project Browser
Next, we will create the software and hardware components for the system. We will first
create the software components of the system. Recall from the scenario description that
the 4 software components are Pilot Control, Waypoint Proxy, Waypoint and Flight Plan
Display. We will use predefined components from the ACL library to create the software
components in our design. To add software components to this project, perform the
following steps:
Following the above steps, create the following components with the
corresponding names
o Processor OCP_P2
o Memory MEM_P1 and MEM_P2
o NVM (Non-volatile Memory) NVM_P1 and NVM_P2
Next, we will define high-level relationships between the software and hardware
component just created. From the scenario description, we can deduce the following
relationships between our components:
PILOT_CONTROL contains WAYPOINT_PROXY in its receptacle
FLT_PLAN_DISPLAY contains WAYPOINT_PROXY in its receptacle
WAYPOINT_PROXY is invoked by FLT_PLAN_DISPLAY
WAYPOINT_PROXY is a proxy of WAYPOINT
We can also define the following relationships in our HW layer
OCP_P1 has memory MEM_P1 and NV-memory NVM_P1
OCP_P2 has memory MEM_P2 and NV-memory NVM_P2
We can define these relationships in our model as follows:
Figure 5-19
Next, we will set the attribute values of these components so that we can perform
analyses on the system design. Follow these steps to define the Pilot Control software
component:
WAYPOINT_PROXY
o EventSupplied → idWPProxyPublishPort1
o EventConsumable → idWPProxySubscribePort1
WAYPOINT
In the next sub-section, we will create event channels but before we can do that, we need
to learn how to create references in VEST.
References allow a system designer to reference a component that is not on the current
canvas. References are needed for the following reasons:
Modeling large systems in a single canvas is sometimes infeasible and difficult to
work with. References allow us to break up the system into smaller parts making
the design easier to work with
Making connections between sub-components of distributed components is only
possible with references
We use references in this design for the second reason. To instantiate a reference in
VEST in simple. Follow these steps to instantiate processor mappings for the software
components:
We will now define event channels in our design as specified in the product scenario by
following these steps.
Our event channel starts in the PILOT_CONTROL component so open up that
component
Add the following components in the PILOT_CONTROL component with the
names and attributes indicated:
o PilotTimer of type SWTimer
o EventEventReference
Set the following attribute values
o PilotTimer
Frequency (this actually means period) -> 1000
o idPilotPublishPort1
WCET → 200
Next, connect the PilotTimer to idPilotPublishPort1 and this to the
EventEventReference
Redirect this reference to the idWPProxySubscribePort1 component in the
WAYPOINT_PROXY component
Simply stated, we have created a trigger for the SetData() call that is pushed from
the PILOT_CONTROL to the WAYPOINT_PROXY component as described in
this Product Scenario
Using the procedures described above, continue building this event channel following
these steps:
WAYPOINT_PROXY
o Create the following components
idWPProxyPublishPort2 of type EventSupplied
EventEventReference1 of type EventEventReference
EventEventReference2 of type EventEventReference
o Set the following attribute values
idWPProxyPublishPort1
WCET → 10
idWPProxyPublishPort2 of type EventSupplied
Tag → 2
Size of Msg in bytes → 5
WAYPOINT
o Create the following components
SetData of type Method
o Set the following attribute values
idWPPublishPort1
WCET → 46
SetData
WCET → 35
o Make the following connections
idWPPublishPort1 → SetData
FLT_PLAN_DISPLAY
o Create the following components
idDisplaySubscribePort2 of type EventConsumable
o Set the following attribute values
idDisplaySubscribePort2
Tag → 2
WAYPOINT_PROXY:
EventEventReference1 to idWPSubscribePort1 in WAYPOINT
EventEventReference2 to idDisplaySubscribePort1 in FLT_PLAN_DISPLAY
Figure 5-21
Figure 5 -21 shows the icons for each of the checks on the VEST toolbar. The first
check we will perform on our system design is the memory footprint check.
To run the memory footprint, click on the Memory Check aspect icon
o Based on the information we have entered, we need
320 MB of memory and 275 MB of NV-memory for Processor 1
160 MB of memory and 100 MB of NV-memory for Processor 2
You should see the error messages shown in Figure 5 -22 and Figure 5 -23
because of the insufficient memory on processor OCP_P1 and insufficient NVM
on Processor OCP_P2
Figure 5-22
Figure 5-23
For the buffer check, first verify that you have entered the following values for the
attributes of the components listed below:
Software Component BufferSize UpdateRate
PILOT_CONTROL 10 0
WAYPOINT_PROXY 20 200
WAYPOINT 10 0
FLT_PLAN_DISPLAY 10 50
Based on the scenario description, there is data flow between all components but for the
sake of simplicity, we only define the data flow between WAYPOINT_PROXY and
FLT_PLAN_DISPLAY. The Waypoint Proxy component sends messages of size 5 bytes
200 times/sec. The Flight Plan Display component reads messages 50 times/sec. Between
every read period of the Flight Plan Display component, the Waypoint Proxy has sends 4
messages. Therefore, the Flight Plan Display component needs a 20 byte buffer but it
only has 10 bytes.
To run the buffer-size check, click on the Buffer-Size aspect icon
You will see some warnings that state that the UpdateRate attribute is not
specified on the Pilot Control and Waypoint components
o Ignore these and continue by clicking on “OK”
The buffer-size check will fail and show the error message in Figure 5 -24
o This is for the reason specified above
When both the memory and buffer-size checks pass, you have the confidence that the
system that you have designed has sufficient memory for its software components and
that there will be no buffer overflows. This should illustrate to you the power and utility
of the VEST tool.
In the exercise that we perform, keep these attributes in mind. Follow these steps to
schedulability analysis on your system design:
Figure 5-25
Based on the Assumptions List, VEST will present the list of available scheduling
algorithms that can be performed on your design. Since you have a multi-
processor design, you should see the dialog in Figure 5 -26
If you had selected “Multi-processor” in your assumptions list, you would have
gotten the available schedulers for multi-processor scenarios as shown in Figure
5 -27
Figure 5-26
Select “End-to-End Robust Scheduling” in the Available Schedulers list and click
“OK”
Based on the attribute values entered for the tasks in the system, our system
design should pass the test and show the success dialog box in Figure 5 -28.
Click “OK”
Figure 5-28
We will now change an attribute in the system design so that this same test fails
Select the “idPilotPublishPort1” component in PILOT_CONTROL
o Change its WCET from 200 to 400
Figure 5-29
You as the designer can try to change something in the design (eg. adding another
processor) to make your test pass
Figure 5-30
Simple Prescriptive Aspects
Suppose that as the designer, you decided to change the DoubleBuffered requirement of
all software components in the system to true. Remember from the memory check
exercise, we set this to false for all components. One solution would be to make the
changes. Another method is to invoke a prescriptive aspect to do the work for you. We
will create such a simple prescriptive aspect here to do precisely that.
Select the first option in Figure 5 -31 and click “OK”
o This brings up the Aspect Editor shown in Figure 5 -31
The Aspect Editor is where you type in your prescriptive aspect commands
There are several things you can do with the Aspect Editor outlined below
o Enter Prescriptive Aspect input
Manually by simply typing in input box
From a file by selecting “Load…”
o Check the syntax of the entered or loaded prescriptive aspect without
executing the prescriptive aspect by selecting “Check Syntax”
o Save the prescriptive aspect
to a new file with “Save As”
to the currently loaded file with “Save”
o Clear the editor and start over with “Clear”
o Execute the prescriptive aspect with “Execute”
The “Show Output” checkbox (if checked) shows the contents of
all sets defined in your prescriptive aspect when executed
o Exit with “Done”
Any unsaved work is lost!
We will create a simple prescriptive aspect to change the double buffered
assignment of all software components to true. Type in the following prescriptive
aspect into the editor. Keep in mind that the prescriptive aspect parser is case-
sensitive. You can find the complete BNF specification of the new VPAL
language in Appendix 4
Figure 5-32
Check the DoubleBuffered property of all the software components in your design
o They should all be set to 1 now
Using the procedure described above, create two more simple prescriptive aspects shown
below and save them to the files listed. We will use these in create our compound
prescriptive aspect in the next step.
my_pa2.vpal
GET SWComp = (CT == SoftwareComponent);
GET DispComp = SWComp.(PN == componentType, PV == BM__DISPLAY_COMPONENT);
SET DispComp.(PN = MemoryNeeded, PV = PV + 50);
my_pa3.vpal
GET SWComp = (CT == SoftwareComponent);
GET DispComp = SWComp.(PN == componentType, PV == BM__DISPLAY_COMPONENT);
SET DispComp.(PN = MemoryNeeded, PV = PV * 2);
Compound prescriptive aspects are defined in the Aspect folder of a project. Each model
layer within this folder represents one compound prescriptive. A component prescriptive
aspect is composed of one or more simple prescriptive aspects called sub-aspects. Each
sub-aspect is associated with a file that contains the code for that simple prescriptive
aspect. We will create a compound prescriptive aspect with the 2 sub-aspects that we
created in the last exercise.
Figure 5-33
Figure 5-34
When you produce the output VEST library XML file, it can be used by inserting it into a
VEST project. There are two ways to doing this
Attaching the library in GME format
Importing the library in XML format
You can convert the XML library file outputted from the mapper into GME project
format. The steps required to create a GME-format library are the same as those required
to create a VEST project from XML format described in Section 3.2.3.1.
Figure 7-35
If you know the location of the GME library, then type it in and click “OK”
If not, you can browse for it by clicking the button with “…”
To attach a XML format library to your VEST project, follow these steps:
To add the library components to your VEST project, use the standard GME click-and-
drag operations.
A task is defined as an execution unit. It has properties of period, execution time, start
time (offset) and deadline. A collection of tasks is called a task set. The reason for using
task sets is that there could be multiple starting tasks and ending tasks. Also, it is possible
for a parent task to have multiple children and for a child task to have multiple parents.
Vest_taskset get_calling_graph()
Get the set of starting tasks
The initial construction of the calling graph takes place as follows. In the VEST/Boeing
model, every thread is triggered by a timer. The calling graph is constructed by following
the path of the timer. The callinggraph class contains a task set which includes references
to all the timers in the system.
A task is represented by a task class in VEST. A task set is represented by a STL set
called taskset. The task class includes, in addition to the above mentioned properties of
period, execution time, start time and deadline, two task sets called children and parents.
These task sets reflect the precedence of execution among the tasks in the system. The
task class provides the following interface:
void set_period(period)
set the period of the task
int get_period()
get the period of the task
void set_wcet(wcet)
set the wcet of the task
int get_wcet()
get the wcet of the task
When the developer wants to design a new scheduling algorithm using VEST, he can first
initiate the calling graph, which collects the necessary scheduling information from the
model. Then, the developer uses the methods provided by the task class to visit the
calling graph.
<statement> = <get_statement>
| <set_statement>
| <create_statemnt>
| <delete_statement>
<create_sub_ref_expression> = <Variable>
| <ObjectType> “==” STRING
<delete_expression> = <Variable>
| <Variable> “.” <Relation>
<Value> = INTEGER
| STRING
| “*” // For wildcard specification
| <scalar_exp>
The hardware layer has only one level of abstraction. Designing the hardware layer is
fairly simple. Each of the components in this layer represents an actual hardware
component. Connections between components represent a concrete relationship. For
example, Figure 11 -36 represents a hardware design in VEST with three components –
Processor, Memory and Non-volatile Memory (NVM). The connections here imply that
components M1 and NVM 1 are associated with Processor P1.
Figure 11-36
The software layer, on the other hand, has two levels of abstraction. The highest level
(called Level 1 henceforth) of abstraction is for representing functional software
components. The second level (Level 2) of abstraction defines the real functionality of
the components in Level 1 such as event channels, whether the component is triggered by
a timer, etc. Connections between components in Level 1 represent relationships between
functional software components. Connections between components in Level 2 define the
internal operation and characteristics of the component in Level 1. For example, Figure
11 -37 shows a Level 1 software design that represents Product Scenario 3.1 [3]. The
dashed line between WAYPOINT_PROXY and WAYPOINT represents a ProxyOf
relationship. Figure 11 -38 shows a Level 2 design of the subcomponents of the
PILOT_CONTROL component of Level 1. This design specifies for PILOT_CONTROL
its processor assignment, event channels and that it is timer triggered. A detailed
Figure 11-37
Figure 11-38
11.2.2 Recepticles/Facets
Specifying a timeout interval for some event channel in a Prism design involves defining
only one SWTimer component. The SWTimer component is defined in Level 2 of the
software component that is triggered by a timer. The timer should be connected to an
event supplier component that is the start of an event channel. For example, in Figure 11
-38, timer PilotTimer is connected to event supplier idPublishPort1 which is the start of
an event channel in Product Scenario 3.1. The frequency attribute of the SWTimer
determines the timeout interval for the event channel.