Skip to content

Error messages

Christoph Grimm edited this page Apr 17, 2025 · 9 revisions

Error messages and its classification

Fatal error

Cause

A fatal error means that something inside SysMD went really wrong. It it not necessary a bug o the tool, but often the result of other syntactic or semantic errors that, in consequence, corrupt internal structures, and lead to a fatal error.

What to do

First, check for other errors and fix them. It is strongly recommended to reset the model.

Lexical error

A character or symbol (e.g., §) was in the input that is not supported. The cell and the line number should be given. SysMD will try to continue, but expect a number of error that just follow this error. Also, following elements that are in the model might not be generated by SysMD.

Syntax error

Cause

A token was in the input stream that is not expected. The cell and the line number should be given. SysMD will try to continue, but expect a number of error that just follow this error. Also, following elements that are in the model might not be generated by SysMD.

Example

  partt x; // Should be part. 

The compiler expects some usages or definitions that start with prefixes and a keyword like part. Howver, parttis not a correct keyword that starts any usage or definition. Hence, a syntax error is reported.

What to do

The line is indicated. Check it for correct syntax.

Semantic error

Unresolved owner

Cause

An unresolved owner is reported if there is a cell with an owner declared in its first line that SysMD cannot resolve.

Example

nonexistingPackage hasA // 1st line of cell 
------------------------
part x; 

SysMD tries to find the package nonexistingPackage and to add part x to it. If it cannot find it, this error is reported.

Unresolved name

Unresolved type

Static semantic error

Cyclic dependency

Incompatible type

Inconsistency

Cause

An inconsistency is reported if the solver cannot find a valuation for variables that is without contradiction.

  attribute a: ScalarValues::Real = oneOf(1 .. 2); 
  assert { a > 2.0 }

In the above case the contradiction is that a is bound to a value that is non-deterministically chosen from the range 1..2. And, at the same time, it is asserted that a>2.0

Information

Trace