Skip to content

cbalint13/OLIMP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)

About

Open Library for Integer Machine Processing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages