The Cheddar project : a GPL real-time scheduling analyzer
In few words
Cheddar is a GPL real-time scheduling tool. Cheddar
allows you to model software architectures of real-time systems and to
check its schedulability or others performance criteria.
As many schedulability analysis tools, schedulability can be assessed by
both scheduling simulations or feasibility tests.
With Cheddar, the modeling of the system to verify can be achieved with
or with the Cheddar architecture design language.
Some experiments also exist with MARTE UML.
Finally, Cheddar hosts a domain specific language
inside its scheduling simulator that allows users to design new task models
or scheduling policies.
Cheddar can help you : to perform schedulability analysis,
to be used for educational purpose or to
quickly prototype new real-time scheduling policies or task models.
Cheddar is developed and maintened by a team composed of the
Lab-STICC laboratory UMR CNRS 6285,
the University of Brest
The Cheddar project was started in 2002 by Frank Singhoff,
University of Brest. The full list of the contributors
can be reach there.
Since 2008, Ellidiss Technologies
also contributes to the development of
Cheddar and provides industrial support of
an AADL verification tool embedding the commercial version of Cheddar.
Cheddar is composed of two independent parts : an editor to
model the real-time system to be analyzed, and a framework to perform analysis.
The editor allows you to describe systems composed of several cores, processors
which own tasks, shared resources, buffers and which may communicate by messages or with buffers.
Cheddar includes its own ADL, namely Cheddar ADL.
However, Cheddar is also able to handle AADL models with an embedded AADL V1.0 parser
but also with
a full compliant AADL V2 parser thanks to its commercial version embedded into AADLInspector.
The framework, called "Cheddar Kernel" can be called alone (e.g. by a shell script)
and embedded in a toolset.
The framework includes many feasibility tests and simulation tools.
The framework is embedded in specific tool sets such as
AADLInspector and STOOD (Ellidiss Tech),
The main analysis tools of Cheddar are the following :
- Analysis with scheduling simulations :
- With preemptive and non preemptive scheduling policies.
- With uniprocessor and multiprocessor scheduling policies
- With uniprocessor : Rate Monotonic, Deadline Monotonic,
Least Laxity First, Earliest Deadline
First, POSIX queueing policies (SCHED_OTHERS,
SCHED_FIFO and SCHED_RR), Maximum Urgency First, Round-Robin and
several time sharing scheduling policies.
- With multiprocessor : global version of above uniprocessor scheduling
policies, Proportionate Fair, EDZL, LLREF and a prototype of the RUN policy.
- With instruction cache entities.
- With different type of tasks : aperiodic task, periodic task, sporadic task, task activated
according to a poisson process or a user-defined policy.
- With shared resources (with FIFO, PCP, PIP, IPCP synchronization protocols).
- Several hierarchical schedulers, such as ARINC 653 scheduling, sporadic server, polling server,
- With task jitters and offsets.
- With various task dependency constraints.
- Extract information from scheduling simulations, such as :
- Worst/best/average task response times, task missed deadlines.
- Number of preemption, number of context switch.
- Worst/best/average shared resource blocking time.
- Deadlock and priority inversion.
- Worst/average buffer utilization factor, message worst/average waiting time.
- Apply schedulability/feasibility tests on tasks, buffers and shared resources :
- Compute worst case task response times on periodic tasks set by methods similar
to Joseph and Pandia WCRT (for any deadline/period relationship,
for preemptive and non preemptive fixed priority scheduling, for preemptive and non preemptive
- Several methods to compute worst case response times with linear and
tree transactions : Tindell,
Audsley, WCDOPS+Plus and WCDOPS+_NIMP methods.
- Apply processor utilization feasibility tests.
- Compute bound on buffer size (when buffers are shared by periodic tasks).
- Worst case shared resource blocking time.
- Memory footprint of software entities.
- Shared resources support (both scheduling simulation and
blocking time analysis). Supported protocols : PIP, OPCP, IPCP.
- Cache related preemption delay computation, to be used for worst case response time computation,
scheduling simulation or task priority assignment.
- Several queueing system theory models to be applied on real-time system analysis : classicals
such as MM1 or MD1, but also models with Periodic behaviors such as PP1 and MP1 queueing models.
- Features to automatically generate Cheddar architecture models according to UUNIFAST or
- PAES implementation, both sequential and concurrent, with also an example of use to cluster
tasks of Cheddar ADL models.
- Tools to express and performa analysis with task dependencies :
- Model task transactions (linear or tree) and compute worst case response time.
- Compute Scheduling simulations according to task precedencies.
- Compute Tindell Holistic end to end response time.
- Apply Chetto and Blazewicz algorithms on task deadlines.
- Task and resource priority assignment :
- Classical Rate Monotonic, Deadline Monotonic, Audsley task priority assignments.
- Task priority assignment according to CRPD.
- Shared resource ceiling priority assignement (for PCP like policies).
- Features to allow users to define and handle their own policies :
- User-defined scheduling policies (based on pipeline models or automaton models).
- USer-defined task model policies, to express and handle specific task activation policies.
- User-defined analysis on scheduling simulation, to look for specific properties on
scheduling simulation result.
- Partitionning algorithms for periodic task set :
- Best fit policy
- General Task fit policy
- Fist fit policy
- Small fit policy
- Next fit policy
The picture below is a screenshot of Cheddar : on the top of the picture, scheduling is
drawn according to the scheduling policy of each core and processor. On the bottom,
some task information is computed and displayed (response times, missed deadlines,
processor utilization factor, ...).
- 11/02/2015 : a new Cheddar's binary release is distributed (Release 3.0)
- 08/10/2011 : Announce of Ellidiss Technologies (From Pierre Dissaux).
Ellidiss announces the availability of their new product: AADL Inspector.
AADL Inspector is a light-weight standalone analysis tool for textual AADL specifications
It includes a set of static rules checkers, Cheddar for schedulability analysis and Marzhin
for dynamic simulation.
Additional plug-ins can easily be added to fit corporate or project specific analysis requirements.
Please contact Ellidiss' technical support at email@example.com for further details about these
AADL Inspector is available for download at: http://www.ellidiss.com/downloads.asp
and comes with a temporary evaluation license.
- 07/01/2008 : a new Cheddar's release is distributed (Release 2.1)
- 02/12/2007 : a new Cheddar's release is distributed (Release 2.0)
- 01/12/2007 : create a SVN repository for Cheddar (http://beru.univ-brest.fr/svn/CHEDDAR)
- 12/07/2005 : provides solaris binaries
- 11/17/2005 : fix the install Makefile and the INSTALL file to the
linux distribution. The current linux archive contains these updated
- 11/11/2005 : the gtkada compiled libraries are now include in the linux binaries distribution.
- 11/01/2005 : annual Cheddar's release. Current release is now
- 09/11/2004 : new patch on 1.3 (see Last patch section). Current release is now
- 09/08/2004 : a new Cheddar's release is distributed (1.3p3)
- 09/25/2003 : new version of the User's guide.
- 09/09/2003 : new patch on 1.3 (see Last patch section). Current release is now
- 08/28/2003 : new patch on 1.3 (see Last patch section). Current release is now
- 08/26/2003 : a new Cheddar's release is distributed (1.3p0)
- 07/03/2003 : a remote cvs access is now available. If you plan to write
code with Cheddar, contact us to get an account on this cvs repository.
- 05/31/2003 : create a Cheddar users and developpers mailing list and
provide dayly built cvs snapshot.
- 11/21/2002 : release of a new patch, see FIXED_BUGS.txt file for list of fixed bugs.
Current version is now Cheddar-1.2p1.
- 10/21/2002 : improve installation Makefile and online User's guide.
Download Cheddar binaries (current version is Cheddar-3.0, release date :
the 2nd of November 2015) :
Cheddar is a free software under the GNU General Public License.
You can get
the current stable Cheddar source code
Previous releases can be found
See the ChangesLog.pdf file to have history of modifications.
The file REQUESTED_FEATURES.pdf contains the
new features required by users and that we plan to implement in the next releases.
You can also get access
to the SVN repository of Cheddar.
To easy compile Cheddar on any computer, you can also use VirtualBox. You must download
in this case.
For compilation procedures with VirtualBox, please read
For compilation procedures, please read
Cheddar is written in Ada, with GNAT and GtkAda Adacore products.
Cheddar is known to run on Linux and
windows boxes, but should run on any Adacore supported platforms
see AdaCore web site for details).
For installation procedures, please read
There is no binary patch currently distributed as all fixed bug are
integrated in the current binary release.
file to have the detailed list of fixed bugs.
The list of
the bugs to be fixed can be read there (file BUGS_TO_FIX.pdf).
Current developments on Cheddar are about the following topics:
- Cache analysis support.
- Global multiprocessor scheduling.
- NoC support.
- PAES implementation.
Cheddar users and developers share information with
a mailing list hosted by the University of Brest.
To post to the list, send e-mail to firstname.lastname@example.org.
Warning : this is a private mailing-list (i.e. to post on this mailing-list, you have to subscribe to it).
To subscribe to the list : send a request to email@example.com
with the following text in the body of your e-mail:
SUBSCRIBE cheddar firstname.lastname@example.org
where email@example.com is your email address.
To unsubscribe to the list : send a request to firstname.lastname@example.org
with the following text in the body :
- The first publication of Cheddar :
Cheddar : a Flexible Real Time Scheduling Framework.
F. Singhoff, J. Legrand, L. Nana, L. Marcé.
ACM SIGAda Ada Letters,
volume 24, number 4, pages 1-8.
Edited by ACM Press, New York, USA.
- A tutorial about Cheddar, both in
Frank Singhoff. Lab-STICC technical report. September 2015.
Cheddar Architecture Description Language reference guide.
C. Fotsing, F. Singhoff, A. Plantec, V. Gaudel,
S. Rubini, S. Li, H. Nam Tran, L. Lemarchand, P. Dissaux, J Legrand.
January 2013. Lab-STICC technical.
A FAQ about several issues you may have when using Cheddar
- A text book on Ada and real-time scheduling analysis published
by Cambridge University press : Building Parallel,
and Real-Time Applications with Ada. J. W. McCormick, F. Singhoff, J. Hugues.
Cambridge University Press, UK, 365 pages, April 2011.
ISBN-13: 9780521197168. This book has several exercises on real-time
scheduling analysis with solutions computed by Cheddar. Exercises solutions of this
book are freely available from the Cambridge University Press website.
About how to use Cheddar with AADL :
Scheduling and Memory requirement analysis with AADL.
F. Singhoff, J. Legrand, L. Nana, and L. Marcé.
ACM SIGAda Ada Letters, volume 25, number 4, pages 1-10.
Edited by ACM Press, New York, USA,
You may also be interested by the list of AADL properties to use with Cheddar :
The Cheddar AADL Property sets (Release 2.x).
LISyC technical report number singhoff-03-07.
Cheddar Release 3.x User's Guide.
Christian Fotsing, Frank Singhoff. Lab-STICC technical report. July 2014.
- All the publications related to Cheddar :
can be downloaded here.
We distribute Cheddar with
a set of AADL and XML examples,
section also contains a set of contributions from Cheddar's users :
- The educational section: contains a set of real-time
scheduling courses built with Cheddar.
- The examples of use section:
contains reports on performance
analysis realized with Cheddar and example of tool-chains developed by Cheddar's
Cheddar is developed and maintened by a team composed of members from the
Lab-STICC laboratory UMR CNRS 6285/Université de Bretagne
Occidentale and Ellidiss Technologies.
The current members of this project are
Pierre Dissaux (Ellidiss Technologies),
Jérôme Legrand (Ellidiss Technologies),
Alain Plantec (Lab-STICC/Université de Bretagne Occidentale),
Stéphane Rubini (Lab-STICC/Université de Bretagne Occidentale),
Jalil Boukhobza (Lab-STICC/Université de Bretagne Occidentale),
Laurent Lemarchand (Lab-STICC/Université de Bretagne Occidentale)
and Frank Singhoff (Lab-STICC/Université de Bretagne Occidentale).
Phd Students working on Cheddar: Nam Tran Hai,
Ramha Bouaziz, Mourad Dridi and Blandine Djika.
Former Phd Students :
The project has been funded by Ellidiss Technologies,
Conseil régional de Bretagne, UBO, BMO/Brest Métrople Océance, BPI France,
Conseil général du Finistère, Thales TCS and EGIDE/Campus France PESSOA number 27380SA.
Researches on Cheddar are also performed in collaboration with the following partners:
The following people have also contributed to the project: see
Thanks to people who sent us bug reports and/or advices :
F. Rodrigues de la Rocha,
Su Young Lee,
and M. Zanconi, ...
To do a bug report, to find compilation instructions and developer documentations,
a work space is available for Cheddar software developers
on this wiki.
You can also report bugs and new tested platforms to
email@example.com (Warning : this is a private mailing-list. To post, you have
to subscribe to the mailing-list first).
Contact : Frank Singhoff mailto:firstname.lastname@example.org
Last update : The 8th of June, 2016