Skip to content

Chisel implementation of the NVIDIA Deep Learning Accelerator (NVDLA), with self-driving accelerated

License

Unknown, BSD-3-Clause licenses found

Licenses found

Unknown
LICENSE.NVDLA
BSD-3-Clause
LICENSE.soDLA
Notifications You must be signed in to change notification settings

soDLA-publishment/soDLA

Repository files navigation

soDLA

Thanks for HuiX, rgb000000, [CristinaZN], Leway for contribution, and also, chisel creators for help.

In addition to the original chisel-version of NVDLA, we have several additions, testing a neural network in chipyard, formal verifications, more docs to facilitate the specification process, and example customized accelerators under construction.

Lastest: We provide the prebuilt nvdla_vp

Smoke Test Setup

The whole environment is accomplished by chipyard. soDLA integration of latest chipyard(1.10.0) is now successful.

Paste soDLA and sodla-wrapper to chipyard/generators. The file structure should be like

 chipyard--->generators--->soDLA
                        |->sodla-wrapper

In chipyard/build.sbt, add sodla-wrapper

lazy val sodla = (project in file("generators/sodla-wrapper"))
  .dependsOn(rocketchip)
  .settings(libraryDependencies ++= rocketLibDeps.value)
  .settings(commonSettings)

In chipyard/build.sbt, within the definition of chipyard, add sodla

lazy val chipyard = (project in file("generators/chipyard"))
  .sourceDependency(testchipip, testchipipLib)
  .dependsOn(rocketchip, boom, hwacha, sifive_blocks, sifive_cache, utilities, iocell,
    sha3, // On separate line to allow for cleaner tutorial-setup patches
    dsptools, `rocket-dsptools`,
    gemmini, icenet, tracegen, cva6, sodla,nvdla, sodor)
  .settings(libraryDependencies ++= rocketLibDeps.value)
  .settings(commonSettings)

In DigitalTop.scala under chipyard/generators/chipyard/scala, insert

with np.blocks.dla.CanHavePeripherySODLA

within the option of DigitalTop.

In MMIOAcceleratorConfigs.scala under chipyard/generators/chipyard/scala/config, add a configuration of soDLA integrated soc

class SmallSODLARocketConfig extends Config(
  new np.devices.sodla.WithSODLA("small") ++               // add a small NVDLA
  new freechips.rocketchip.subsystem.WithNBigCores(1) ++
  new chipyard.config.AbstractConfig)

Compile software program

In chipyard/generators/soDLA/test, we prepare two testing programs, one is a direct convolution, another is an image convolution. To compile it under riscv

$ make

In chipyard/sims/vcs or chipyard/sims/verilator

$ rm -rf ../../generators/sodla-wrapper/target
$ make debug -j16 CONFIG=SmallSODLARocketConfig

You should see the simulation program generated by vcs/verilator, to run the program:

$ ./simv-chipyard-SmallSODLARocketConfig-debug ../../generators/soDLA/test/dc_1x1x8_1x1x8x1_int8_0/dc_1x1x8_1x1x8x1_int8_0.riscv 

Verification Plan

Since soDLA's main purpose is to design and reuse an industry-level accelerator. We provide the following modules in formal seq verifications between nvdla golden verilog models for the moment, and those modules are commonly used: apb2csb, csb_master, csc(dl only), glb, nocif

Golden cmodels for DPV verifications are under construction.

About

Chisel implementation of the NVIDIA Deep Learning Accelerator (NVDLA), with self-driving accelerated

Resources

License

Unknown, BSD-3-Clause licenses found

Licenses found

Unknown
LICENSE.NVDLA
BSD-3-Clause
LICENSE.soDLA

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published