Skip to content

Latest commit

 

History

History
54 lines (34 loc) · 1.93 KB

README.md

File metadata and controls

54 lines (34 loc) · 1.93 KB

OLIMP

Open Library for Integer Machine Processing

OLIMP

OLIMP is a collection of configurable hardware elements that operates on vectors and ultimately tensors.

Q: What OLIMP can do ?
A: Hardware for numerical operators.

Q: What OLIMP means for a design ?
A: Designing numerical elements in the vast combinatoric space.

Q: What is the key for any OLIMP operator ?
A: Scheduling is **the key** booth in hardware and software.

Q: What OLIMP can be used to ?
A: Build hardware that computes on any budget, from tiny FPGA to large ASIC.

OLIMP use TVM for compute scheduling closing the gap between hardware and software end-to-end design.


OLIMP targets operators having various precision:

  • integers of 2,4,8,16,32 bit length with fixed or mixed precision
  • bitwise ordered bitplanes on atomic boolean logic: AND, XOR, POPCNT

Demo SoC

Checkout Demo SoC:

  • OLIMP vector element as RISC-V extension on tiny icebreaker.
  • OLIMP elements for dedicated e-verest usb stick on the budget.

ChangeLog:

  • 01-Jun-2021 early release

ToDo (WiP):

  • finish icebreaker demo
  • publish RTL generators with documentation
  • publish TVM TOPI schedules for each RTL module
  • validate RTL modules via TVM verilate
  • constrainted end-to-end arhitecture search & optimisation
  • showcase advanced OLIMP blocks on e-verest (ECP5-85k)