ebe444ba7e6169c3d86545e1d218bf71c58bcea6
[matthijs/master-project/report.git] / Outline
1 Introduction
2 *       Goals
3 *       Outline
4
5 *Context
6 *       Other FHDLs (short, Christiaan has details)
7 *       Advantages of clash / why clash?
8
9 Haskell as hardware
10 *       Simple function -> component interpretation (Model: Structure)
11 *       Choice / Case
12 *       Types
13 *       Partial application
14 *       Model: State
15 *         Explicit vs implicit passing of state (e.g, delay)
16 *         Explicit vs implicit marking
17 *       Interpret: Polymorphism
18 *       Interpret: Higher order
19 *       Recursion
20
21 Prototype
22 *       Choice of Haskell
23 *       VHDL / Verilog / EDIF etc. Why VHDL?
24 *       Stages (-> Core, Normalization, -> VHDL)
25 .       Core - description of the language
26 *         Expressions
27           Typing
28         Implementation issues -- Which?
29         State annotations
30
31 Normalization
32 *       Normal form
33 *       Rules used
34 .       Properties / Proofs (termination, soundness, completeness, determinism)
35
36 Future work
37 *       Boilerplate reduction (State distribution & pipelining)
38 *       Recursion
39 *       Multiple time domains (Events) -- Also, clock line optimization /
40                                        -- write enable
41 *       Multiple cycle descriptions
42 *       Higher order state
43 *       New language
44 *       Don't care
45
46 TODO: Define user / developer
47 TODO: Hardware description / model vs program
48 TODO: Separate compilation / Prelude
49 TODO: Add case binder removal transformation
50 TODO: User-defined type classes (future work?)
51 TODO: Entity / Architecture / Component vs Function?
52 TODO: Expand on "representable"
53 TODO: Register
54 TODO: Variable vs binder
55 TODO: simplification -> Normalisation?
56 TODO: Use saturated (application) instead of complete (application)?
57 TODO: core => Core
58 TODO: Make interaction links not bold
59 TODO: Say something about implementation differences with transformation specs
60 TODO: Say something about the builtin functions somewhere (ref: christiaan)
61 TODO: Future work: Use Cλash
62 TODO: Abstract
63 TODO: Preface
64 TODO: Footnote font has not lambda
65 TODO: eta-abstraction -> expansion
66 TODO: Top level function -> top level binder