-
Notifications
You must be signed in to change notification settings - Fork 21
Setting up Chisel
The Learning Journey has a curated environment created inside a Virtual Machine, which avoids all tool issues: Chisel Environment. Once the VM is setup, then run setup script (below), which installs all the tools needed, and clones the tutorial examples into the environment.
This is the step that encounters the most issues. Here is a page that lists issues seen so far and the solutions.
This page has some examples of helpful Chisel development tools that increase coding efficiency. (For some coding styles, for example the style used in Rocket Chip, tools like these make a dramatic difference. But if learning them is a barrier, it is no problem to wait until later, and make rapid progress now with simple text editor and command line).
We provide a script that installs the tools needed for the Journey, setting up everything you need for the rest of the journey.
The script has been tested within the suggested Chisel Environment and it should work on any other Ubuntu-like OS. (It is provided without a warranty with no responsibility by the author nor the provider for any harm caused. The VM environment provides isolated environment.)
Please clone the following repositorium:
git clone https://github.com/apaj/learning-journey.git
Enter the downloaded directory and run the script as follows:
cd learning-journey
sudo ./set-learning-journey.sh
It will ask at each step before it performs an action.
Note: The script is still in development, so please do report back any bugs to the e-mail given in the header of the script.
Now we see the first running example of Chisel :-)
inside the directory learning-journey
:
$ sbt run
It first downloads the appropriate versions of Chisel3 and Scala and caches them (usually in ~/.ivy2)
. Then it generates (Hello)
that always outputs the number 42 (its value in hexadecimal being 0x2a). You should see [success]
on the last line of output (from sbt
) and PASSED
on the line before indicating the block passed the testcase, as follows:
[info] Running hello.Hello
[info] [0.011] Elaborating design...
[info] [0.270] Done elaborating.
Total FIRRTL Compile Time: 2238.9 ms
Total FIRRTL Compile Time: 27.6 ms
End of dependency graph
Circuit state created
[info] [0.010] SEED 1514026331022
test Hello Success: 1 tests passed in 6 cycles taking 0.036811 seconds
[info] [0.017] RAN 1 CYCLES PASSED
[success] Total time: 90 s, completed Dec 23, 2017 11:52:15 AM
What this did was first run the Chisel program "Hello", which generated a circuit in Chisel's intermediate format, which is called FIRRTL (the Chisel code also printed "Hello" to let us know it ran). Then this compiled the FIRRTL representation into Verilog format. Then it ran the Verilator tool to compile the Verilog format into C++ format. Then it ran the C++ code, which simulated a simple circuit, inside of a test harness, which verified that the output of the circuit was, indeed, 42, then the test harness indicated success.
Congratulations, you've successfully run your first Chisel program, which generated Verilog code and simulated it with Verilator.
It is certainly possible to to follow the Chisel Learning Journey within a different environment. However, you will be on your own for any issues encountered. If you would like to try on your own, without support, instructions to install Chisel3 are provided at the the original repo1.
1) Don't get confused because those instructions mention Firrtl - as you will be building from the release branch of Chisel3, the required jar
is taken care of by sbt
, so just ignore that part for now.