Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
surveys:synthesis [2011/04/19 16:29] jobstman |
surveys:synthesis [2011/04/19 17:07] (current) jobstman |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Program synthesis ====== | + | ====== Program synthesis (SURVEY UNDER CONSTRUCTION) ====== |
- | In computer science, program synthesis refers to the development of a program or a digital design from a set of desired properties. | + | We use the term **program synthesis** to refer to the development of a program or a digital design from a set of desired properties. |
These properties can be described in various ways, e.g., by a set of logical formulas or a mathematical model, by another program that is | These properties can be described in various ways, e.g., by a set of logical formulas or a mathematical model, by another program that is | ||
written in a more abstract programming language. Synthesis is the counterpart to program analysis, which tries to extract a set of properties or a model from a given program or digital design, or program verification, which tries to establish a relationship between a set of properties and the given program or circuit. | written in a more abstract programming language. Synthesis is the counterpart to program analysis, which tries to extract a set of properties or a model from a given program or digital design, or program verification, which tries to establish a relationship between a set of properties and the given program or circuit. | ||
- | The set of desired properties are usually called the //specification of the system// and the constructed system is referred as the | + | The set of desired properties are usually called the **specification of the system** and the constructed system is referred as the |
- | //implementation of the specification.// | + | **implementation of the specification.** |
Line 14: | Line 14: | ||
* Logic synthesis (RTL to gate level, net list to layout,...) | * Logic synthesis (RTL to gate level, net list to layout,...) | ||
* Synthesis from logical specifications | * Synthesis from logical specifications | ||
- | * Domain specific synthesizer: | + | * Model-based design and other domain specific synthesizer: |
* parser generators (YACC) | * parser generators (YACC) | ||
* generator for statistical analyzers (AutoBayes Synthesis System, Johann M. Schumann, NASA - Moffett Field) | * generator for statistical analyzers (AutoBayes Synthesis System, Johann M. Schumann, NASA - Moffett Field) | ||
- | * ... | + | * Matlab Simulink from MathWorks (based on a synchronous dataflow language, generates C/C++ code) |
+ | * SCADE Suite from Esterel Technologies (Systems are described using a synchronous language, generates C/C++ code) | ||
+ | * Bluespec compiler (HDL based on rules, each rule is executed automatically, designs have no explicit clock, generates Verilog code) | ||
+ | * BIP compiler (Systems are describe using extended automata and synchronization constructs, generates C/C++ code) | ||
+ | * ... | ||
+ | |||
+ | In the following we will focus on synthesis from logical specifications. | ||
====== Program synthesis from logical specification ====== | ====== Program synthesis from logical specification ====== | ||
Line 23: | Line 29: | ||
**Motivation.** | **Motivation.** | ||
- | A solution to this problem would allow augmenting the current programming style, which is mostly imperative, with a declarative, logical style. This is particularly beneficial for systems in which concurrency plays an important role..... | + | A solution to this problem would allow augmenting the current programming style, which is mostly imperative, with a declarative, logical style. This is particularly beneficial for systems in which concurrency plays an important role. |
In this area approaches can be split into three groups: | In this area approaches can be split into three groups: |