Spatial, aka Specify Parameterized Accelerators Through Inordinately Abstract Language, is an open source programming language created in 2018 by David Koeplinger.
#670on PLDB | 6Years Old |
git clone https://github.com/stanford-ppl/spatial
Spatial: A High Level Programming Language for FPGAs
import spatial.dsl._
@spatial object HelloSpatial extends SpatialApp {
def main(args: Array[String]): Void = {
// Create ArgIn
val x = ArgIn[Int]
// Set `x` to the value of the first command line argument
setArg(x, args(0).to[Int])
Accel {
// Create 16x32 SRAM and a Register
val s = SRAM[Int](16,32)
val r = Reg[Int]
// Loop over each element in SRAM
Foreach(16 by 1, 32 by 1){(i,j) =>
s(i,j) = i + j
}
// Store element into the register, based on the input arg
r := s(x,x)
// Print value of register (only shows in Scala simulation)
println(r"Value of SRAM at (${x.value},${x.value}) is ${r.value}")
}
}
}
Feature | Supported | Example | Token |
---|---|---|---|
Comments | ✓ | // A comment | |
Line Comments | ✓ | // A comment | // |
Semantic Indentation | X |