This is SIGARCH’s RTL project template. In essence, this provides a skeleton environment inside which you can write your code, then simulate and synthesize it using UIUC’s Synopsys licenses, available to you via EWS.
unix>
refers to any UNIX-y prompt. These instructions should work on
Linux, macOS, and WSL.
First, make sure you can SSH into EWS.
unix> ssh netid@linux.ews.illinois.edu
This will ask for the password associated with your NetID, then log you into a remote EWS machine. Log out of EWS. Let’s set it up so that you don’t need to enter your password every time:
unix> ssh-keygen -t rsa
unix> ssh-copy-id netid@linux.ews.illinois.edu
If your system doesn’t have ssh-copy-id
, you can instead do:
# If ssh-copy-id didn't work.
unix> cat ~/.ssh/id_rsa.pub | ssh netid@linux.ews.illinois.edu "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Now, try:
unix> ssh netid@linux.ews.illinois.edu
You should get logged in without needing to enter your password. Now, logout with Ctrl-D. The rest of these commands should all be run on your local machine.
unix> git clone https://github.com/uiuc-sigarch/sigarch-rtl-project-template
unix> cd sigarch-rtl-project-template
This repository provides a file that needs to reside in your EWS home folder. Copy it over with:
unix> scp setup_synopsys_toolchain.sh netid@linux.ews.illinois.edu:/home/netid
You may need to make the script executable:
unix> ssh netid@linux.ews.illinois.edu "chmod +x ~/setup_synopsys_toolchain.sh"
Open run_on_ews.sh
in your favorite editor, and change netid
on
line 11 to your NetID.
Running a sim is now easy:
unix> ./run_on_ews.sh # rsync's the source, runs the sim, rsync's the artifacts
The artifacts (compile log, simulation log, VCD waveform) are put in
ews_run_artifacts
. See if you can find a UVM info message saying
“Hello world”. Feel free to edit run_on_ews.sh
to get more of the
artifacts locally.
To view the waveform, you can use GTKWave:
unix> gtkwave ews_run_artifacts/dump.vcd &
You can alternately add the -fsdb
option to VCS (using the
Makefile), then view the FSDB using Verdi, but VNC connections are
slow especially if you aren’t in Urbana-Champaign (as is the case for
me when I’m writing this).
See the Makefile to get an idea of the feature set supported:
- Simulation using Synopsys VCS, with support for UVM, for which you’ll need to have $UVM_HOME on your $PATH.
- Synthesis is done using the generic FreePDK45 using Synopsys DC, which you’ll need to have on your $PATH as $STD_CELL_LIB.
Run with “make run“. The synthesis target is “make synth“.