From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=BAYES_00,FREEMAIL_FROM, TO_NO_BRKTS_PCNT,XPRIO autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,5eecbaddbda4a21e,start X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news4.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!feeder.news-service.com!proxad.net!cleanfeed2-a.proxad.net!nnrp12-1.free.fr!not-for-mail From: "Frank Singhoff" Newsgroups: comp.lang.ada Subject: Ann. of the annual release of Cheddar, a free real time scheduling analyzer Date: Thu, 8 Mar 2007 16:24:25 +0100 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.3028 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028 X-RFC2646: Format=Flowed; Original Message-ID: <45f02aa6$0$32003$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 08 Mar 2007 16:24:25 MET NNTP-Posting-Host: 193.52.16.181 X-Trace: 1173367465 news-2.free.fr 32003 193.52.16.181:1557 X-Complaints-To: abuse@proxad.net Xref: g2news1.google.com comp.lang.ada:14424 Date: 2007-03-08T16:24:25+01:00 List-Id: 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