Metropolis: Design Environment for
Heterogeneous Systems

Tool Support

The meta model serves as input for all the tools built in Metropolis.
The meta model files are parsed and turned into an Abstract Syntax Tree
(AST) by the metropolis frontend. Tools are written as back-ends that
operate on the AST, and either output results or modified meta model
code.

One
tool of particular importance is a metamodel simulator. A simulator is
developed for
an executable language. It first parses the meta model and provides an
implementation of each construct of our model using primitives of the
language
so that the result is semantically compatible. This is then simulated
by a
simulator of the language. As an example, we have developed a
based on System C 2.0 that is semantically compatible with the
metamodel semantics. It synthesizes SystemC code from the model's AST,
which is then compiled and executed. We are also currently developing a
simulator written directly in C++. As with VCC, the meta model can be
annotated
with performance information generated from the architecture
specification, so
that the same simulator can be used to conduct performance simulation
for
mapped functions.

The Toolset

We break the tools into three categories: Simulation, Synthesis, and
Analysis and Verification. All tools take the form of a Metropolis
backend that interprets designs specified in the metamodel language and
parsed by the front-end into an abstract syntax tree.