System Level Design with Rosetta


  • Perry Alexander, University of Kansas and Developer of Rosetta system design language

The steady and unabated increase in the capacity of silicon has brought the semiconductor industry to a watershed challenge. Now a single chip can integrate a radio transceiver, a network interface, multimedia functions, all the "glue" needed to hold it together as well as a design that allows the hardware and software to be reconfigured for future applications. Such complex heterogeneous systems demand a different design methodology. A consortium of industrial and government labs have created a new language and a new design methodology to support this effort. Rosetta permits designers to specify requirements and constraints independent of their low level implementation and to integrate the designs of domains as distinct as digital and analog electronics, and the mechanical, optical, fluidic and thermal subsystems with which they interact.In this book, Perry Alexander, one of the developers of Rosetta, provides a tutorial introduction to the language and the system-level design methodology it was designed to support.
View full description


system designers, verification engineers, EDA & CAD tool developers, graduate students


Book information

  • Published: November 2006
  • ISBN: 978-1-55860-771-2


“In his forward to Perry Alexander's System Level Design with Rosetta, Grant Martin observes that “every new language seems to require at least one book be written to promote understanding and further interest and use, so [for Rosetta] this milestone has now been achieved.” Alexander, one of the fathers of the Rosetta language, has produced what may prove to be the seminal text on Rosetta, and one that helps it move from an academic exercise to a real-world language. The book is packed with clear code examples that explain all the language’s elements, both individually and in combination. Inasmuch as Rosetta represents more than a simple language but also a methodology, that methodology is also clearly detailed. Anyone who’s curious about Rosetta and, indeed, interested in a holistic approach to system-level design, should find this volume highly useful.” — David Maliniak, Electronic Design Online, December 18, 2006

Table of Contents

Part I: Introduction Chapter 1: Introduction 1.1 What is System-Level Specification? 1.2 Rosetta’s Design Goals 1.3 Anatomy of a Specification 1.4 Learning Rosetta Part II: The Expression Language Chapter 2: Items, Values, Types and Declarations 2.1 Labels, Values, and Types 2.2 Item Declarations and Type Assertions2.3 Universal OperationsChapter 3: Expressions3.1 Atomic Expressions 3.2 Function Application 3.3 Operator Application 3.4 If Expressions 3.5 Case Expressions 3.6 Let Expressions3.7 Compound Expressions Chapter 4: Elemental Types 4.1 The Boolean Type 4.2 The Number Types4.3 The Character Type 4.4 The Element Type 4.5 The Top and Bottom Types 4.6 Element Literals 4.7 Operator Result TypesChapter 5: Composite Types 5.1 Type Formers 5.2 Set Types5.3 Multiset Types 5.4 Sequence TypesChapter 6: Functions6.1 Direct Function Definition6.2 Function Values and Function Types6.3 Evaluating Functions6.4 Universally Quantified ParametersChapter 7: Higher-Order Functions 7.1 Domain, Range and Return Functions 7.2 Alternate Higher-Order Function Notation 7.3 Minimum and Maximum7.4 Quantifiers and Comprehension 7.5 Sequences and Higher-Order Functions 7.6 Function Inclusion and CompositionChapter 8: User Defined Types 8.1 Defining New Types8.2 Defining Types By Extension8.3 Defining Types By Comprehension8.4 Defining Constructed Types 8.5 Functions as Type Definition ToolsPart III: The Facet LanguageChapter 9: Facet Basics 9.1 A First Model - An AM Modulator 9.2 Composing Models - Adding Constraints 9.3 Combinational Circuits - A Simple Adder9.4 Defining State - A 2-bit Counter9.5 Defining Structure - A 2-bit Adder 9.6 Specification Reuse - Using Packages 9.7 Abstract Specification - Architecture DefinitionChapter 10: Defining Facets 10.1 Direct Facet Definition10.2 Separable Definitions 10.3 Facets and Hardware Description Languages 10.4 Facet Styles10.5 Scoping Rules 10.6 Basics of Facet SemanticsChapter 11: Packages, Libraries and Components11.1 Packages11.2 Libraries11.3 ComponentsPart IV: Domains and InteractionsChapter 12: Domains 12.1 Elements of a Domain12.2 The Standard Domains12.3 Domains and Facet TypesChapter 13: Reflection 13.1 Template Expressions and AST Structures 13.2 Interpreting AST Structures13.3 Defining Domains 13.4 Domain Declarations 13.5 Defining Engineering Domains 13.6 Defining New Model-of-Computation Domains13.7 Defining New Unit-of-Semantics Domains13.8 Defining Ticked and Dereferencing Expressions13.9 Consistent Domain ExtensionChapter 14: The Facet Algebra14.1 Facet Products and Sums14.2 Facet Homomorphism and Isomorphism 14.3 Conditional Expressions 14.4 Let Expressions 14.5 Higher-Order FacetsChapter 15: Domain Interactions15.1 Projection Functions, Functors and Combinators15.2 Defining Interactions15.3 Including and Using Interactions15.4 Existing Rosetta InteractionsPart V: Case StudiesChapter 16: Case Studies 16.1 Methodology16.2 Before ProceedingChapter 17: RTL Design 17.1 Requirements Level Design 17.2 Basic Components17.3 Structural Design 17.4 Design Specification 17.5 Wrap UpChapter 18: Power Aware Design 18.1 The Basic Models18.2 Composing System Models18.3 Constructing the Simulations18.4 Wrap UpChapter 19: Power Aware Modeling Revisited 19.1 Technology Specific Functional Models19.2 Configurable Components 19.3 Decomposition 19.4 Mixed Technology Systems 19.5 Wrap UpChapter 20: System-Level Networking 20.1 The Basic Models20.2 Composing System Models20.3 Constructing the Analysis Models 20.4 Wrap Up