ForSyDe tutorial

Alfonso Acosta

Royal Institute of Technology (KTH) System, Architecture and Methodology (SAM) group

StockholmSweden

2008-09-20

Revision History
Revision 0.22008-09-20
Complete draft.
Revision 0.12008-08-15
First version.

Table of Contents

1. Disclaimer and Prerequisites
2. Installing ForSyDe
3. Introduction to ForSyDe
3.1. Signals
3.2. Processes
3.3. Process Constructors
3.4. Models of Computation and Domain Interfaces
4. Deep-embedded vs Shallow-embedded signals
5. Using deep-embedded Signals
5.1. Combinational Systems
5.2. Sequential Systems
5.3. Using components
5.4. VHDL Backend
5.5. GraphML Backend
6. Shallow-embedded signals
A. FSVecs: Vectors parameterized in size
1. Goal
2. How?
3. Type-level decimal numerals
4. Fixed Sized Vectors themselves
5. FSVec issues

1. Disclaimer and Prerequisites

This document has been devised as a practical hands-on introduction to the use of ForSyDe's implementation. Thus, it is intentionally informal and non-exhaustive. If you are interested in ForSyDe's theoretical foundations please refer to the Documentation section in our website.

In order to take full advantage of this tutorial, it is essential to have a good background in the Haskell programming language. Familiarity with some Haskell extensions (Template Haskell, Multiparameter Type Classes with Functional Dependencies, Undecidable and Overlapping Instances) might help but is not vital.