Throughput-Oriented Accelerator Generator
- Linux OS (tested on Ubuntu 20.04/22.04)
- Chisel3
- cmake
- ninja
sudo apt-get update
sudo apt-get -y install ninja-buildNOTE: For some Linux distros, including CentOS, openSUSE, RHEL, Arch, macOS X, and Fedora, the default package manager is yum, not apt-get. To view your distro, run cat /etc/*-release
git submodule update --init --recursivecd <primate home>/primate-arch-gen
mkdir build
cd build
cmake -G Ninja -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_PROJECTS=clang -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_LINK_LLVM_DYLIB=true ../llvm/
ninjaNOTE: If you run into an error that reads
CMake 3.13.4 or higher is required. You are running version 2.8.12.2run
cmake -G Ninja -DLLVM_TARGETS_TO_BUILD=host -DLLVM_ENABLE_PROJECTS=clang -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_LINK_LLVM_DYLIB=true ../llvm/
NOTE:
If you are getting a GCC version error that reads
Host GCC version must be at least 5.1, your version is 4.8.5.
simply remove the CMakeCache.txt file in the build directory:
rm CMakeCache.txt
Primate application must be put in <primate home>/primate-uarch/apps/<app name>.
Our example project, packet reassembler, is located at <primate home>/primate-uarch/apps/pktReassembly. It has 2 subdirectories, sw and hw, and a build script, build.sh.
sw contains primate applications written in annotated C++, and a file containing input data, input.txt. The structure of input/output data, input_t/output_t must be defined in the source code. Each line in input.txt is one piece of input data packed.
hw contains the hardware implementations of blue function units written in Chisel or Verilog, and a file listing out the module names and port names of each blue function unit, bfu_list.txt. The format is shown below,
<module 0>
{
<port 0>
<port 1>
...
}
<module 1>
{
<port 0>
...
}
...
cd <primate home>/primate-uarch/apps/pktReassembly
./build.shcd <primate home>/primate-uarch/chisel/Gorilla++/emulator
make verilatorA waveform file, Top.vcd, will be generated at <project home>/primate-uarch/chisel/Gorilla++/test_run_dir/TopMainxxxx>/.
cd <primate home>/primate-uarch/chisel/Gorilla++/emulator
make verilogTop.v will be generated at <project home>/primate-uarch/chisel/Gorilla++/Top.v
A list of previously encountered errors exist at https://docs.google.com/document/d/1rzh7maXhUuWKWdk794fxJSPc8xqUHz6EzxZO6W1V9TQ/edit?usp=sharing