Getting Started
The tool is written in Scala and uses SBT as a build tool as well as Scalatest for testing. The minimal requirements for creating the cores is
- SBT Scala build tool which will automatically download test configuration
- Scala Scala is also required but might be automatically downloaded through SBT
Optionally an IDE is useful and the distribution contains a project file for IDEA.
- Jetbrains IDEA : Integrated Development Environment for editting
The tool uses the following tools for simulation and data analysis.
- Verilator : Free Verilog simulator
- Python with Numpy and Scipy : Used for analysis and plotting of results
Other simulators should work as well but will probably require a bit of setup, test bench conversion and potentially some generator fixes. The target RTL was used for a production FPGA but new constructs have been added and the cores have not been taken through a synthesis flow.
Running Basic Test
Running tests can be done either on the command line using SBT or inside IDEA. The command line usage is shown below.
- sbt test-only
test-name
A couple of examples are shown below which run basic tests.
- sbt test-only
com.simplifide.generate.neural.Two6x6x6
- sbt test-only
com.simplifide.generate.neural.Four12
An example section of the test code is shown below. There are multiple options for the operation of the test including plotting of the results when complete as well as waveform generation.
class Two6x6x6 extends TwoStageTest {
override def blockName: String = "two6x6"
override lazy val dimensions = Seq((6,6),(6,6))
override def waveformEnable = true
override lazy val inputType:BasicNetworkTest.INPUT_TYPE = BasicNetworkTest.IDENT_TYPE
override val plot:Boolean = true
override val failThreshold = Some(0.1)
}