- 1. Introduction
- Getting started
- 2. Installation
- 3. Editor Setup
- The Spade language
- 4. Blinky
- 4.1. Blinky (for software people)
- 4.2. Blinky (for hardware people)
- 5. Common Language Constructs
- 5.1. Basic Expressions
- 5.2. Spicy Expressions
- 5.3. Variables
- 5.4. Units
- 6. Types
- 6.1. Enums and Pattern Matching
- 7. Pipelines
- 7.1. Pipelines (for software people)
- 7.2. Pipelines (for hardware people)
- 8. Spade projects and Swim
- 9. Simulation and Testing
- 10. Namespaces
- 11. Ports and Wires
- 12. Interfacing with Verilog
- Example projects
- 13. Sample project: ws2128 RGB LED driver
- 13.1. Creating a Project
- 13.2. Led Protocol Overview
- 13.3. Driver Interface
- 13.4. State Machine
- 13.5. Testing the State Machine
- 13.6. Output generation
- 13.7. Testing in hardware
- Agile Hardware Design Tutorial
- 14. Introduction
- 15. Installing Spade
- 16. Pipelines and Timing Agility
- 17. Fearless Refactoring with Types
- Language & Tool References
- 18. Language Reference
- 18.1. Items
- 18.1.1. Units
- 18.1.2. Type Declarations
- 18.2. Statements
- 18.3. Expressions
- 18.3.1. Blocks
- 18.3.2. If
- 18.3.3. Match
- 18.3.4. Instantiation
- 18.3.5. Indexing
- 18.3.6. Stage References
- 18.4. Patterns
- 18.4.1. Refutability
- 18.5. Type system
- 18.5.1. Primitive Types
- 18.5.2. Generics
- 18.5.3. Ports and Wires
- 18.6. Dynamic Pipelines
- 18.7. Binding
- 18.8. Constructs by syntax
- 19. Swim
- 19.1. Installing Swim
- 19.2. Using Swim
- 19.3. Custom Subcommands
- 19.4. Project Configuration
- 19.5. Plugin Configuration
- 20. Compiler Internals
- 20.1. Naming
- 20.2. Type Representation