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#
accept attakes the instant as a number of seconds since the epoch, compared against the system clock; calendar dates and times (ISO 8601) and time scales are not supported- A prefixed duration unit such as
mshas to be declared in the model beforeaccept after 500 [ms]can use it; the bundledSIdeclaress,min,handdonly. An undeclared unit is reported withE3250— see State Machines - Completion transitions — a transition without a trigger out of a composite state (
transition first operating then idle;) is taken on the next cycle, not when the composite state has reached its final state - Inner transitions (not supported by SysML)
- Specializing more than one definition (
part def C :> A, B;) is not accepted by the parser; a definition can specialize one other - 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]and1 [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
ScalarValuesandISQare bundled so thatsubsets ISQ::lengthbinds and editors stay quiet, but they are a small subset and are not emitted into the generated code orderedandnonuniqueafter a multiplicity (attribute xs : Integer[*] ordered;) are accepted and then ignored- An enumeration typed by an attribute definition, whose entries bind a value per feature — the entries are generated, but their values are dropped without a warning; 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 expression
xs.?{…}is parsed and not generated; a message on the console says where it was left out. The collect expressionxs.{…}is not accepted by the parser and stops the run with a syntax error send … to <part>from the body of an action does not yet reach a part of an enclosing part (a part the sender is written inside); a state machine’s send does. Name a part the action’s own part contains, or writesend … via <port>- A directed
itemthat redefines an inherited one (in item fuelCmd : FuelCmd redefines pwrCmd;) is not accepted by the parser; the same declaration withoutitemis - In a port definition, a member that redefines an inherited one under a new name (
out ref other redefines anout;) is generated as a member of its own, andW3150says so: a port definition is a payload that is copied, where a second name cannot stay bound to the inherited member - A calculation whose result type is not declared — the type is not inferred, see Calculations
- 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.
The generator has no 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 not in this group: a calc def is generated
as a function that expressions can call — see Calculations.
See also the Modeling Guide supported-features summary and the Diagnostics reference.