Sinelabore Homepage

Missing features#

SysML v2 is a very rich modeling language, and the backend covers the part of it that can be turned into running code. The features listed on the overview page and on the sub-pages are supported for both code targets unless a page says otherwise. What follows is the other side of that line: constructs that are limited, ignored on purpose, or not there yet. The list is not exhaustive — take a look at the GitHub examples to see what is used in practice.

Limited or not supported#

  • Absolute-time transitions (accept at …) — timed transitions use accept after only
  • Timed transitions are evaluated in seconds; other time units are not converted (use 0.001[SI::second] for 1 ms)
  • Inner transitions (not supported by SysML)
  • Unit conversion and dimensional analysis — units are normalized so that different spellings of the same unit compare equal, but values are never rescaled. A unit is carried into the generated code as a comment and takes no part in arithmetic: 1000 [SI::watt] and 1 [SI::kilowatt] both generate the number as written, so a model has to stay consistent about the unit it works in (see Attributes)
  • The OMG standard library — name-compatible stubs for ScalarValues and ISQ are bundled so that subsets ISQ::length binds and editors stay quiet, but they are a small subset and are not emitted into the generated code
  • Keywords qualifying an attribute, such as ordered or unique, are accepted and then ignored
  • An enumeration typed by an attribute definition, whose entries bind a value per feature; entries with a plain value (enum def Level {LOW = 1; HIGH = 2;}) are supported
  • Filter conditions on an import (import P::**[@Approval];) are read and dropped
  • The select and collect expressions xs.?{…} and xs.{…}; a message on the console says where one was left out
  • send … to <part> is resolved only on a transition of a state machine. Inside the body of an action, write send … via <port>, which works in both places
  • Inter-part communication beyond ports and connections
  • Many other SysML features not shown in the examples

Language areas outside the executable subset#

Whole language areas describe intent rather than behavior and are therefore not generated — among them use case, requirement, constraint, assert, analysis, allocation, metadata and view / viewpoint.

These are parsed and reported, not silently dropped. A model containing them still generates everything else, and each one is named on the console so you can see what was left out:

model.sysml:3:4: W3170: 'requirement def MassLimit' is parsed and not generated.
                 There is no C++ mapping for this SysML construct.
W3170: 1 construct(s) were parsed and not generated.

That way a model can keep its requirements beside the parts they constrain without the generator pretending to implement them. calc is the exception in this group: it is not accepted by the parser and stops the run with a syntax error.

See also the Modeling Guide supported-features summary and the Diagnostics reference.