Seminar: Reconfigurable Hardware
Contents
Hardware
Coupling
Granularity
- For a 3-bit operation
- 3-bit device will be great
- 8-bit device will have overhead
- For an 8-bit operation
- 3-bit device will be inefficient
- 8-bit device will be great
- For a 3-bit operation
Heterogeneous Arrays
- Base versions of multipliers
Routing resources
Segmented pathing with switch boxes to emulate longer wires
Hierarchical pathing
Structured dimensions
- One dimension designs are simpler and faster
- Routing abit harder
- Better for simpler connections
- Two dimension designs are more complex (more placement options?
- Routing easier
- One dimension designs are simpler and faster
Multi-FPGA systems
- Mesh - better computation
- Crossbar / SPLASH 2 - better speed
Software
Manual Systems
Yes just design the FPGA chip yourself.
Better precision, but need advanced knowledge
Automated Systems
Eh
Stages
Circuit Specification Stage
Manual
- Hand mapping of the blocks at gate level
Semi-Automated
- Using structural circuit description language
- Generic components
- Requires knowledge of the target
Automated
- Use a high level language (C, C++, Java)
- Specify the logic rather than the block design
Mapping Stage
Placement Stage
Routing Stage
Circuit Libraries
Circuit Generators
Other Compiler Functionalities
- Partial evaluation
- Memory allocation
- Parallelisation
Design Patterns
We want to balance area cost and latency
- Datapath Serialisation
- Hardware / Software partitioning
- Coarse-grain time multiplexing
Efficient Hardware Reuse
- Pipelining
- Retiming
- C-Slow
C-Slow
Use n
registers and spreading them around, reducing critical path
Hardware Specialisation
Use hardware bitlevel optimisations
- Instance generator
- Constructors
- Template
Value Added Memory
- Read-Modify-Write cycle
- Scan-Select-Reorganise
- Content-Addressable memory (index is equal to the value?)