comp.lang.ada
 help / color / mirror / Atom feed
* Ann. of the annual release of Cheddar, a free real time scheduling analyzer
@ 2007-03-08 15:24 Frank Singhoff
  0 siblings, 0 replies; only message in thread
From: Frank Singhoff @ 2007-03-08 15:24 UTC (permalink / raw)



We're pleased to announce a new release of Cheddar.
Cheddar is a free real time scheduling tool. Cheddar is designed for
checking task temporal constraints and buffer sizes of a real time
application/system.
It can also help you for quick prototyping of real time schedulers.
Finally,
it can be used for educational purposes.
Cheddar is developed and maintened by the LISYC Team,
University of Brest.
Cheddar is written in Ada and should run on Solaris, Linux and
win32 boxes.

Thanks to A. Plantec, P. Dissaux, G. Laurens, J. Hugues, T. Vergnaud, S.
Edzang,
M. Strauss, M. Baert, V. Hugel, C. Valle, F. R. Rocha
and M. Zanconi for their help on this new release (tests, bug reports or new
features)

The current release is now 2.0. A part of the source code of this
new release is now automatically generated by platypus (see
http://cassoulet.univ-brest.fr/mme/).
If you are a regular Cheddar's user, we strongly advice you to switch
to the 2.0 release due to the fixed bugs.
The files "ChangesLog.txt" and "FIXED_BUGS.txt" described the new features
and the
fixed bugs.


Cheddar is distributed under the GNU GPL license.
It's a free software, and you are welcome to  redistribute it under
certain conditions;
See the GNU General Public License for  details.

Source code, binaries and documentations can be freely downloaded from
http://beru.univ-brest.fr/~singhoff/cheddar




1) Summary of features :
------------------------

Cheddar is composed of two independent parts : an editor used to
describe a real time application/system, and a framework.
The editor allows you to describe systems composed of several processors
which own tasks, shared resources, buffers and which exchange messages.
Such a systems specification can be expressed with AADL, the architecture
and design language from the SAE.
The framework includes many feasibility tests and simulation tools.
Feasibility tests
can be applied to check that task response times are met and that
buffers have bounded size.
When feasibility tests can not be applied, the studied application can
be analyzed with scheduling and buffer simulations.
Cheddar provides a way to quickly define "user-defined schedulers" to
model scheduling of ad-hoc applications/systems (ex : ARINC 653).
The most important analysis tools are the following :

- Do scheduling simulations with classical real time schedulers
         (Rate Monotonic, Deadline Monotonic,
         Least Laxity First, Earliest Deadline
         First, POSIX queueing policies : SCHED_OTHERS,
         SCHED_FIFO and SCHED_RR) with
         different type of tasks (aperiodic, periodic, task
         activated with a poisson process law, ...)
- Extract information from scheduling simulation.
         (buffer utilization factor, task response times, task missed
           deadlines,
         number of preemption, ...)
- Apply feasibility tests on tasks and buffers (without scheduling
         simulation) :
         - Compute task response time bounds.
         - Apply processor utilization tests.
         - Compute bound on buffer size (when buffers are shared by periodic
tasks)
- Shared resources support (scheduling and
         blocking time analysis).  Supported protocols : PIP, PCP.
- Tools to express and do simulations/feasibility tests with task
         precedencies :
         - Schedule tasks according to task precedencies
         - Compute Tindell end to end response time.
         - Apply Chetto and Blazewicz algorithms.
- Tools to run scheduling simulation in the case of
         multiprocessors systems
- Do simulation when tasks are randomly activated.
- Can run scheduling simulation on user-defined scheduler
         and task arrival patterns.
- Run user-defined analysis on scheduling simulation.
- ...


2) Bugs fixed by the 2.0 Cheddar release :
---------------------------------------------------



------------------------------------------------------------------
B5!30/12/06  ! reported by : singhoff@univ-brest.fr ! very high  !
  !          ! fixed by : singhoff                  !            !
------------------------------------------------------------------
Worst case task response time with non preemptive Rate Monotonic
scheduler was wrong.


------------------------------------------------------------------------
B23!10/17/06  ! reported by : C. Valle (Deimos space)        !high     !
   !          ! fixed by : singhoff                          !         !
------------------------------------------------------------------------
The worst case blocking time of a task on a shared resource
(feasibility test) was wrong for PCP. It
considered all tasks sharing the resource and not only the lower
priority tasks. See test_pcp1.xml
------------------------------------------------------------------------


------------------------------------------------------------------------
B6!07/01/06  ! reported by : singhoff                        !very high!
  !          ! fixed by : singhoff                           !         !
------------------------------------------------------------------------
With RM and with harmonic task set, the processor utilization factor
feasibility test should
take into account a cpu utilization factor of 100 %.
------------------------------------------------------------------------


-------------------------------------------------------------------------
B20!11/08/06  ! reported by : F. R. Rocha                       ! medium!
   !          ! fixed by : singhoff                             !       !
-------------------------------------------------------------------------
The base-period is wrong when start times are not equal
to zero (for periodic/sporadic/poisson process tasks, with any scheduler)
-------------------------------------------------------------------------


----------------------------------------------------------
B21!19/08/06  ! reported by : singhoff           ! high  !
   !          ! fixed by : singhoff              !       !
----------------------------------------------------------
- Bug in the AADL import feature when the XML project
  does not include a scheduler in
  its address space (process)
- Do not export in AADL the process scheduling
  properties when
  the scheduler is "No_Scheduling_Protocol"
----------------------------------------------------------


----------------------------------------------------------
B19!10/08/06  ! reported by : singhoff           ! high  !
   !          ! fixed by : singhoff              !       !
----------------------------------------------------------
Each update widget of the graphical editor maintains
an "undo set" in the case the user push the Cancel
button, in order to restore the previous set.
How ever, such way doest not work correctly when
the update of the set implies the update of an other
set ... Then the "update set" should store the entire system
description to be sure that the undo statement is done
correctly
----------------------------------------------------------


----------------------------------------------------------
B18!09/08/06  ! reported by : singhoff           ! high  !
   !          ! fixed by : singhoff              !       !
----------------------------------------------------------
Deleting a processor does not remove the address space
placed on the deleted processor ....
----------------------------------------------------------


--------------------------------------------------------------------
B16!05/08/06  ! reported by : guillaume.laurens@airbus.com  ! high !
   !          ! fixed by : singhoff                         !      !
--------------------------------------------------------------------
Deleting a processor also removes the tasks on the processor
but not the task dependencies .... the XML project can not
be loaded anymore into cheddar
--------------------------------------------------------------------


--------------------------------------------------------------------
B12!20/07/06  ! reported by : guillaume.laurens@airbus.com  ! high !
   !          ! fixed by : singhoff                         !      !
--------------------------------------------------------------------
In .sc files, uniform() can work better :
uniform(var, 1, 3) give 1, 2 or 3 ok
uniform(var, 1, 2) give always 1 !
uniform(var, 0, 2) give always 1 !
uniform(var, 2, 3) give 1, 2, 3 !
When using bad code, no check :
uniform(var, -2, 3) -> raised STORAGE_ERROR : heap exhausted


To fix this bug, a new implementation of the uniform
random generator is provided.  Do not forget that
the accurancy of the value distribution (which should
be uniform !) depends of :

- the number of random generation (the more you fire
   random values, the more you get an accurate distribution)
- the range of the expected values (uniform distribution
   will be better if the range is large !). By range, we
   mean the value "b-a" in the case of the statement
   "uniform(var,a,b);"
-------------------------------------------------------------------


----------------------------------------------------------
B17!07/08/06  ! reported by : singhoff           ! medium!
   !          ! fixed by : singhoff              !       !
----------------------------------------------------------
Remove several memory leaks in order to
decrease the cheddar memory footprint when
user defined/parametric schedulers are used
----------------------------------------------------------


----------------------------------------------------------------------
B15!03/08/06  ! reported by : guillaume.laurens@airbus.com    ! low  !
              ! fixed by : singhoff                           !      !
----------------------------------------------------------------------
When export AADL file, Cheddar forget " " in string user's
defined parameters.
Example :
        User_Defined_Cheddar_Properties::model => entethPMG;
But it must be :
        User_Defined_Cheddar_Properties::model => "entethPMG";
----------------------------------------------------------------------


---------------------------------------------------------------------
B14!01/08/06  ! reported by : guillaume.laurens@airbus.com  ! medium!
              ! fixed by : singhoff                         !       !
---------------------------------------------------------------------
Cheddar crashed when a parametric scheduler contains
expressions with the "not" operator
---------------------------------------------------------------------


------------------------------------------------------------------------
B10!20/07/06  ! reported by : guillaume.laurens@airbus.com  ! very low !
              ! fixed by : singhoff                         !          !
------------------------------------------------------------------------
It is not possible to run scheduling simulation
with several processors owning user-defined/parametric schedulers
------------------------------------------------------------------------


---------------------------------------------------------------------
B13!21/07/06  ! reported by : guillaume.laurens@airbus.com  ! low   !
              ! fixed by : singhoff                         !       !
---------------------------------------------------------------------
In .sc files, the predifined variable "nb_processors"
is always equal to 0
---------------------------------------------------------------------


--------------------------------------------------------------------
B0!01/06/06  ! reported by : guillaume.laurens@airbus.com  ! medium!
             !               hugel, strauss                !       !
             ! fixed by : singhoff                         !       !
--------------------------------------------------------------------
- Add a control in the window to select task/resource/buffer
  time lines to be displayed after scheduling simulation :
  the user has to select at least one time line to display
- Add a control to forbid use of min_to_index/max_to_index
   operator in any parametric sections except election_section
- Fix an erronous "Undefined variables" in parametric scheduler
- Fix a bug at event table export with non
  preemptive scheduler and fixed schedulers
- Do not take into account AADL data declared
  into other data components. These subcomponents are
  currently discarded.
- The AADL parser has to check that all
  data/thread/buffers are binded to a cpu
- Fix several bugs in the AADL parser. Add new AADL
  test files (papabech2.aadl and papabench1.aadl).
- Fix a bug related to PCP and PIP shared resources
  and their priority inheritance which was wrong
  in the case of POSIX 1003.1b scheduler
- Add a control to ensure that a task which uses a
  shared resource is on the same processor
- Fix a CONSTRAINT_ERROR on time sharing scheduler
  based on wait time when several processors with dif-
  ferent schedulers were defined in the same project
- Wake up times of poisson process task were badly
  computed.
- Lb_Undeclared_Identifier error message had
  an empty string value
- Add a control on parametric task in order to be
  sure that parametric task always has an activation rule
- Fix the --TRACE sc command which did not work
  since the last release
- Add a control on parametric scheduler : a parametric
  scheduler should at least contain an election_section
- Fix a bug in the processor widget : when the cancel button
  is pressed, in the case of a user-defined scheduler, the .sc
  file name can be lost
- Fix a Bug in The Built-in Muf Scheduler and Add The
  Criticality Field in The task Widgets
- Fix a bug related to the LCM sub-program (GCD sub-program
   of discret_util.adb)
--------------------------------------------------------------------




3) New features provided by the 2.0 Cheddar release :
-----------------------------------------------------


--------------------------------------------------------------------------------
F20!20/01/07  ! requested by : jerome.hugues@enst.fr, singhoff
!medium!
              ! implemented by : jerome.hugues@enst.fr                  !
!
--------------------------------------------------------------------------------
Update aadl_parsers.adb to support the new release of Ocarina
--------------------------------------------------------------------------------


--------------------------------------------------------------------------------
F19!20/01/07  ! requested by : plantec, singhoff                        !
low   !
              ! implemented by : plantec, singhoff                      !
!
---------------------------------------------------------------------------------
Refactoring of the cheddar framework with the meta case tool Platypus.
The "platypus" directory contains the model and the meta-model used for such
a
purpose.
---------------------------------------------------------------------------------


--------------------------------------------------------------------------------
F16!20/08/06  ! requested by : singhoff                                 !
low   !
              ! implemented by : singhoff                               !
!
---------------------------------------------------------------------------------
- Gather all configuration variables into the "config" directory
- Provide a Put subprogram to display the configuration ar the screen.
  This subprogram can be called from the Cheddar's command line
---------------------------------------------------------------------------------



--------------------------------------------------------------------------------
F14!08/08/06  ! requested by : guillaume.laurens@airbus.com, hugues     !
high  !
              ! implemented by : singhoff                               !
!
---------------------------------------------------------------------------------
- Add support for AADL import/export of task dependencies throught event
port and
  cheddar's properties
- Add AADL import/export options widget
---------------------------------------------------------------------------------



--------------------------------------------------------------------
F2!20/07/06  ! requested by : guillaume.laurens@airbus.com ! high  !
             ! implemented by : singhoff                   !       !
--------------------------------------------------------------------
Put(e,a,b). "e","a" and "b" are any expression. "e" is the expression
to be displayed. "a" and "b" give the entries of "e" we want to display
(only if "e" is a table).

Example of use :

   CB_log : array (tasks_range) of integer;
   i : integer;
   minv : integer :=1;
   maxv : integer :=15;

...

   put("hello");   -- displays the string "hello"
   put(maxv-1);    -- displays "14"
   put(minv);      -- displays "1"
   put(CB_log);       -- displays ALL entries of the CB_log table
   put(CB_log, 2, 2); -- displays the third entry of the CB_log table
   put(CB_log, 0, 10); -- displays the entries between 0 and 10 of the
CB_log table
   put(CB_log, minv, maxv-1); -- displays the entries between 1 and 14 of
the CB_log table
--------------------------------------------------------------------


------------------------------------------------------------------------
F6!20/07/06   ! requested ny : guillaume.laurens@airbus.com ! high     !
              ! implemented by : singhoff                   !          !
------------------------------------------------------------------------
Create a predifined variable which gives the total simulation time
(=simulation length)

There is already a predifined range : "time_units_range"
But it is a range, not an integer and its usage is restricted
(can't be used every time ...)
---------------------------------------------------------


------------------------------------------------------------------------
F12!01/08/06  ! requested by : guillaume.laurens@airbus.com ! low      !
              ! implemented by : singhoff                   !          !
------------------------------------------------------------------------
Provide the number of line of a sc file when an Ada exception is
raised by the ada runtime. This number of line is presented with
the name of the raised exception with simulation results
------------------------------------------------------------------------


------------------------------------------------------------------------
F1!20/07/06  ! requested by : guillaume.laurens@airbus.com  ! very low  !
             ! implemented by : singhoff                    !           !
------------------------------------------------------------------------
Change in user guide due to cheddar change :
tasks.rest_of_capacity is now writable.

Error in user guide (or bug in Cheddar ?)
The description of tasks.rest_of_capacity is bad :
The definition is :
"For each task activation, this variable is reset to the capacity each time
the
associated task starts a new activation. If rest_of_capacity is equal to
zero, the
task is over in its current activation and is then blocked."

But in cheddar :
"At the start of the simulation, rest_of_capacity=0. When the task is
activated, the
value is set to tasks.capacity. At the end of the capacity, rest_of_capacity
is immediatly reset to the task capacity."
------------------------------------------------------------------------


------------------------------------------------------------------------------------
F0!01/07/06   ! requested by : guillaume.laurens@airbus.com, singhoff,  !
!
              !               strauss                                   !
medium   !
              ! implemented by : guillaume.laurens@airbus.com,          !
!
              !                  baert, hugel, edzang, stauss, singhoff !
!
------------------------------------------------------------------------------------
      - Allow .sc files to change the value of the
        variable "rest_of_capacity"  (G. Laurens)
      - Provides new Makefiles tools for the win32
        platform (M. Baert)
      - Add Sporadic task support (F. Singhoff).
        The previous Sporadic implementation was provided
        throught an .sc file
      - Add "immediate PCP" protocol for shared resources
         (M. Strauss)
      - The scheduling framework allows now to override
        the sub-program which produces events into XML event table.
        This feature make it possible to add information in the
        event table depending on the scheduler and the produced event
        (F. Singhoff)
      - Update FAQ from the Cheddar's mailing list (F. Singhoff)
      - Re-format and improve the list of publications
        provided with Cheddar (F. Singhoff)
      - Provide a new implementation of the deadlock
        simulation analyzer (S. Edzang).
      - Provide XLST tools and update XML/DTD files
        of Cheddar project and Event table files
        (M. Baert)
      - Improve Cheddar command Line (mainly for
        AADL files)
        (F. Singhoff)
      - Add the date of Cheddar compiling in the "About Cheddar"
        windows
        (F. Singhoff)
      - Update the user's guide
   (V. Hugel)
      - Add Hierarchical Scheduling Support
        (F. Singhoff)
------------------------------------------------------------------------------------





4) Work in progress  :
----------------------


For the next year, we plan to improve the tool with the following
features :


- Improve Hierarchical schedulers support.
- Improve the user-defined schedulers services.
- Update the graphical editor in order to take into
       account GtkAda 2.2
- Improvement of message scheduling with :
- End to end response time with message scheduling.
- Allowing message sending at any time of a task
       capacity
- Providing a way to user-defined message
       delay communication by specification
       of user-defined message scheduling
       (as user-defined scheduler)
- Provide a global memory analysis (task stack, text/data segments ...)



--------------------------------------------------------




Best Regards
Frank Singhoff
















^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-03-08 15:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-03-08 15:24 Ann. of the annual release of Cheddar, a free real time scheduling analyzer Frank Singhoff

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox