Cheddar 2.x FAQ
F. Singhoff, LISYC technical report number singhoff-02-2007.
- Launching Cheddar and XML project I/O
- You get "Can not open file" when loading a XML file into Cheddar : check that the file that you're trying to read contains a number of task/message/processor/resource/buffer less than the number of task/processor/message/buffer/resource the Cheddar's binary you're using can manage. To do this check, have a look on the constants defined in the file config/config.ads of the Cheddar source code.
- You get "Simulation error : Parametric file error, File : foo, Can not open file, Status error". If you want to study an XML project file composed
of an User-defined scheduler, task activation rule or event analyzer,
Cheddar has to be launched from the directory where XML and SC files
are stored.
- Basic Cheddar's services
- You run a scheduling on a processor hosting a Rate Monotonic or a Deadline Monotonic scheduler, but the resulting scheduling does not match task priority that you gave when you defined tasks. With this schedulers, the task priority field is ignored.
The scheduling is computed according to the task period (with Rate Monotonic)
and the task deadline (with Deadline Monotonic). If you want to schedule tasks
according to the task priority, choose instead the "Highest Priority First/POSIX 4" scheduler.
- You get "Task must be periodic : can not apply the selected scheduler with this task set". Some schedulers such as "Rate Monotonic"
or "Deadline Monotonic" require that ALL tasks are periodic.
If you want to study a system composed of non periodic task (poisson task,
aperiodic task, ...) with a fixed priority scheduler, you have to select
the "Hight Priority First/POSIX.4" scheduler when you define your processors.
- I'm using Cheddar to analyze a very big scenario. When I try to run
the simulation the program only let me to simulate less than 1499 time
units. Can I increase this value?
First, you can not display more than 1500 units of times.
If you want to run simulaiton on large period of time,
you can ... but without displaying all the time lines
(read carefully the widget lanched by the tool when it proposes you
to compute and display the scheduling).
Second, to increase simulation time, you may need to change constant
into the package config.ads
Finally, with huge simulation, it is sometimes required
to use Cheddar WITHOUT the machine man interface in order
to decrease memory footprint (see framework_examples/scheduling_simulation.adb)
- Can i use float/double data ith Cheddar ?
No, you can not and it is not necessary since
you can always work with
integer values. Double scheduling analysis tool is
difficult to implement. Futhermore, Double data in a computer are always an
approximation
and most of analysis algorithms simply do not work
with double.
Finally, any scheduler or task double data can be simply express in integer without
loose of accurancy (but with.
- User-defined scheduler, task activation rules or event analyzer
- May i define several variables on the same ligne ? No, you can not : each
variable has to be defined on a given ligne of code.
- Why the variable used in a for statement is said to be undeclared ?
Because all variables used in a user-defined piece of code have to be defined, even if the
variable is a part of a for statement.
- You get "Type error : Uncompatible types". The type of a constant
or a variable is not compatible with an other one. Check if elements of
your expressions use compatible types.
- You get "Type error : Table index error". The index on a table
type has a wrong type (not integer).
- You get "Type error : Task activation rule, Uncompatible types".
An expression referenced in a set statement (which defines a task
activation rule) have to be an integer type or integer table type.
- You get "Type error : for expression have to be an integer variable".
In a for, the variable used to scan the TCB table has to be an
integer one.
- You get "Type error : Variables should have the size array size".
In some cases, an expression has to be build with variables which has the same number of item if the variables are arrays. You also can not mix in some cases scalar variables with array variables .
- You get "Type error : invalid return value from return statement".
A return can only return an integer value.
- You get "Parsing error : Integer conversion error". An integer
was expected in a expression but give something else.
- You get "Parsing error : Boolean conversion error". A boolean
was expected in a expression but give something else.
- You get "Parsing error : Double conversion error". A double
was expected in a expression but give something else.
- You get "Parsing error : undeclared identifier". You forgot
to declare something.
- You get "Parsing error : identifier already declared". You
can not use the same identifier (string constant) for 2 variables or activation
rules.
- You get "Parsing error : Random operators can not be used in complex
expressions". Random operators such as exponential or uniform can only
be used to define task activation rule. When they are used, they can not
be in conjonction with others operators.
- You get "Syntax error : " or "Parsing error : ". The
syntax of your parametric scheduler is not correct. Take a look on the
BNF syntax given above.
- You get "Variable error : undeclared identifier". A referenced
variable can not be found : do not forget to declared your variable.
- You get "Variable error : operation not permitted". You try
to apply an operator on a variable and the two are not compatible.
- You get "Statement error : Parametric task only permitted with
parametric scheduler". You can not define a parametric task on a processor
which is not a parametric one.
- You get "Statement error : return statement expected". An
election section must be ended by a return statement.
- You get "Statement error : invalid expression type referenced
in a return statement". A return statement has to use an integer
constant or variable.
- You get "Statement error : invalid min_to_index/max_to_index expression
in return statement ". The variable type in a max_to_index/min_to_index
operator have to be an array of integer type.
- You get "Statement error : invalid range type referenced in
a return statement". The value given in your return statement
is outside the TCB table index range.
- You get "Statement error : ". The statement is forbidden here
(ex : a return statement in a start section).
- You get "Affectation statement : Uncompatible types". The type of
the left operand is not compatible with the type of the right operand.
- You get "syntax error : Variable Declaration Have To Be Done In Start Section. Do not
try to declare variable outside the start section.
- Task dependencies and related services
- Other issues
-
When Cheddar crashs, a file named "cheddar_bug.xml" is created. What it is ? This file contains the project you are editing when the crash occurs.
You can restore your work with this file since it contains all tasks, processors, messages, ... of your project just before the Cheddar bug.
Contact : Frank Singhoff mailto:singhoff@univ-brest.fr
Last update : february the 12th, 2007