Rosetta - the SLDL constraints language
David L. Barton, Perry Alexander · 2005
During the past three years, the SLDL committee has produced a requirements document, a set of representative examples, and done a survey of tools and languages available in the industry to determine what additional mechanisms and standards are necessary to address the Systems on Chip (SoC) problem. The committee has decided that there are two large lacks in present capability: a language for expressing constraints on an entire system, independent of the technique or engineering discipline that will be used to address the constraint (hardware, software, etc.); and a complete specification of different Mechanisms of Computation (MoCs) which may be used to model large systems made up of interconnecting, communicating subsystems. This workshop will address the first of these, the constraint language Rosetta.The workshop will consist of two parts: > A presentation of the Rosetta syntax and semantics, as it currently exists. > A summary of the anticipated application areas for Rosetta, and plans for proofs of concept for the language. We will summarize the basic features of the language here in anticipation of a more thorough presentation during the workshop itself.The primary unit in Rosetta is the facet. A fact is a collection of definitions and statements about a specific part of the system being described. The definitions consist of variables, which model the observable, measurable phenomena of the system, and types, which specify the values which the variables can assume. The statements, or terms, gradually constrain the values that the variables can assume (and we therefore call Rosetta a constraint language, as opposed to a programming language such as C or a simulation language such as Verilog or VHDL).A particular facet assumes a specific view, or domain, in describing the features of the system. Different domains might include an electrical domain, a thermal domain, a simulation domain, among others; the user has the ability to define his own domains, as well as using a set of predefined domains. The meaning of the terms in the facet is dependent upon the domain; the domain defines the functions and predicates that the terms may use. Each facet is ideally very focused, and can be understood in isolation from the rest of the system description.Rosetta has an extensive set of operations for combining facets into a complete system description. Facets may be anded, or conjuncted, together; this means that any system must be described by the terms in both facets. An electrical and a thermal facet may be combined into a more complete description. Facets may also be disjuncted. This means that two different versions --- for example, a high power and a low power version --- may be included in the system description, and the correct one chosen based upon the system conditions. Other boolean conditions are provided. The result is a complete algebra for facets, that allows them to be combined in a large number of combinations to describe a system in a number of different ways.Facets also describe system components. Facets may have an interface that contains port declarations. Facets may be included in other facets, as VHDL allows components (architectures) to instantiate other components. Systems may thus be described as a system of sub-components, as with any hardware description language.Rosetta is intended to cover a wide range of application areas. The primary business driver of the SLDL committee is the SoC problem, and this is the area of primary interest; however, Rosetta is also being used in mechanical design projects, to lessen the impact of obsolete parts on an entire system, to study the use of commercial parts in military systems, and in the generation of test vectors. We anticipate many other uses for Rosetta as we gain more experience with the language.