[virtual-platform-users:58] Software Centric System Level Assertions

3 views
Skip to first unread message

AchimNohl

unread,
May 3, 2010, 8:44:35 AM5/3/10
to Virtual Platform-Users
Hi all,

I have modularized the example assertions that I have posted last week
to ease software testing on the system level. I have described the
assertion API in the document that you can accesss via the following
link:

http://groups.google.com/group/virtual-platform-users/web/software-centric-system-level-assertions?hl=en

The objective of the above mentioned document is to describe a Virtual
Prototype based assertion technique. This technique takes software
assertions to the system level. The advantage is that assertions can
be triggered by either software program or system events such as
hardware register/signal changes. Moreover, the assertion can inspect
the entire system and is not limited to the view of the executing
processor as it is the case for typical software assertions. In the
future the primitives will be extended to easily address higher level
triggers and conditions such as "When a call comes in", or "A browser
is launched" etc.

Assertions can be positive or negative. Thus, we can assert that
certain events happen and we can assert that certain events do not
happen. Events can be e.g. function calls, register/signal access/
change or time-outs for asserting real-time constraints. Also, we can
define a life-time of an assertion so that assertions expire at a
defined event such as a time or function call. The trigger of an
assertions should be conditional on a property in the system state.
E.g. an assertion should only be triggered when the timer is enabled
and the interrupt controller mask register is set. Assertions can be
cascaded so that one assertion will enable another one.

The API that I have posted is not specific for the VP in the cloud and
can be used with any other core or platform.

Please have a look at the document and let me know what you think.

Best regards,
Achim

--
You received this message because you are subscribed to the Google
Groups "Virtual Platform-Users" group.
To unsubscribe from this group, send email to
virtual-platform-...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/virtual-platform-users?hl=en

AchimNohl

unread,
May 20, 2010, 7:07:01 AM5/20/10
to Virtual Platform-Users
Hi all,

in my previous examples I have made a wrong assumption with regard to
the assertion of data and pre-fetch aborts. I have assumed that I only
need to assert them before the user-space is enabled. Once the user
space is working, data and pre-fetch aborts are just an artifact of
the MMU as a new data or program page has be loaded. Thus, instead of
an expire event that is triggered when the user space is enabled (call
of rest_init) it would be more correct to have a condition on the
process type. Thus for kernel processes the assertion should be
triggered, and for user space processes it should not.

Thus I changed from:

assert at [ address_event 0xffff0010 ] always [ address_event
rest_init ] assert_failed "Boot data abort"

to:

assert at [ address_event 0xffff0010 ] [condition context
i_ARM926EJS_0 == kernel ] forever assert_failed "Kernel data abort"

Here, the condition will check the current context currently running
on the CPU against a process name. For convenience, I have added this
to the condition statement. Thus, the condition statement can be used
to create conditions on resource as well as context. Of course, any
user defined condition statement can be used as well.

I will update the assertion document
http://groups.google.com/group/virtual-platform-users/web/software-centric-system-level-assertions
and examples accordingly.

In order to use context in a condition, the OS aware software analysis
need to be enabled.
Reply all
Reply to author
Forward
0 new messages