Skip to content

Commit

Permalink
dont clone repos
Browse files Browse the repository at this point in the history
  • Loading branch information
rachitnigam committed Mar 7, 2023
1 parent 649a142 commit 0ed7740
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
42 changes: 23 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
# Filament Evaluation

Evaluation artifact for Filament HDL presented in the paper "Modular Hardware Design with Timeline Types". To clone:

```
git clone https://github.com/cucapra/filament-evaluation.git
cd filament-evaluation
git submodule init
git submodule update
```
Evaluation artifact for Filament HDL presented in the paper "Modular Hardware Design with Timeline Types".

**NOTE**: Before starting, ensure that you have 105 GB of storage space. Unfortunately, the Vivado tools can take up quite a lot of space during installation. To the best of our knowledge, Vivado tools are only supported for x86 architectures and do not work on the ARM-based processors.

Expand Down Expand Up @@ -40,22 +33,21 @@ ssh -p 3022 [email protected]
> **NOTE**: If you're using the VM, skip to the next section.
**Prerequisites**:
- Clone this repository
- Initialize submodules: `git submodule init && git submodule update`
- Install [Rust][rust-install]
- Install the test runner `runt`: `cargo install runt`
- Install [z3][]
- Install [Icarus Verilog][iverilog] (version >= 11.0)
- Ensure your python version is >= 3.9 and insall dependencies:
- Ensure your python version is >= 3.9 and install dependencies:
```
python3 -m pip install numpy
```

Run the following command from the root of the repository to build and configure tools:
Run the following command from the root of the repository to build and configure tools.
**NOTE**: Make sure you're in the root of this repository before running the command! Otherwise, the installation **will fail** completely and misconfigure the tools.
```
cd <replace-with-location-to-filament-evaluation> && ./scripts/configure-fud.sh
```
**NOTE**: Make sure you're in the root of this repository before running the command! Otherwise, the installation **will fail** completely and misconfigure the tools.

The final line should say exactly this:
```
Expand Down Expand Up @@ -110,13 +102,13 @@ The following instructions assume you're using the VM. These instructions **requ
- Open the terminal and run `cd ~/Desktop && ./Xilinx_Unified_2020.2_1118_1232_Lin64.bin`
- If a box pops up asking you for a new version, ignore it and click `Continue`.
- Enter your Xilinx credentials. If you don't have them, [create a Xilinx account][xilinx-account].
- **Note** When you create an account, you need to fill out all the required information on [your profile][xilinx-profile]. Otherwise the Xilinx installer will reject your login.
- **Note** When you create an account, you need to fill out all the required information on [your profile][xilinx-profile]. Otherwise, the Xilinx installer will reject your login.
- The "User ID" is the email address of the Xilinx account you created.
- Agree to the contract and press `Next`.
- Choose `Vivado` and click `Next`.
- Choose `Vivado HL WebPACK` and click `Next`.
- Leave the defaults for selecting devices and click `Next`.
- **Important!** Change the install path from `/tools/Xilinx` to `/home/filament/Xilinx`.
- **Important!** Change the installation path from `/tools/Xilinx` to `/home/filament/Xilinx`.
- Confirm that you want to create the directory.
- Click Install. Depending on the speed of your connection, the whole process should take about 2-4 hrs.
- To ensure that the tool was installed correctly, do the following:
Expand All @@ -134,7 +126,7 @@ Use the following script to ensure that your `vivado` installation work correctl
cd <replace-with-location-to-filament-evaluation> && ./scripts/synth.sh
```

## Step-by-step Instructions
## Step-by-step Instructions (30-45 minutes)

The artifact reproduces the following claims:
1. Latency information generated by Aetherling (Table 1)
Expand Down Expand Up @@ -188,7 +180,7 @@ runt -j 1 -d -i table-1/
<details>
<summary><b>Regenerating Aetherling Latency Data</b> [click to expand]</summary>

Our harness files hardcode the latencies information.
Our harness files hard code the latency information.
Generating latency information requires the [Aetherling artifact][aeth-artifact].
Our provided instructions work when using the Aetherling artifact VM:

Expand All @@ -200,7 +192,7 @@ Our provided instructions work when using the Aetherling artifact VM:
map compute_latency conv_2d_ppar
map compute_latency sharpen_ppar
```
- The above commands will cause the run the Aetherling compiler on all the `conv_2d` and `sharpen` designs and report the results in the form of a 7-element array which tracks the latencies for designs with the following throughputs: `[16, 8, 4, 2, 1, 1/3, 1/9]`.
- The above commands will cause the run the Aetherling compiler on all the `conv_2d` and `sharpen` designs and report the results in the form of a 7-element array which tracks the latencies for designs with the following throughput: `[16, 8, 4, 2, 1, 1/3, 1/9]`.

</details>

Expand All @@ -224,7 +216,7 @@ Hold times for the two harnesses can be extracted by running the command:
### Table 2: Quantitative Comparison

Table 2 reports the resource usage of designs generated by Filament to ones generated by Aetherling and Reticle.
This evaluation **requires** Vivado synthesis toolchains to be installed.
This evaluation **requires** Vivado synthesis toolchain to be installed.
As a sanity check, run `fud check` and ensure that the `synth-verilog` stage is correctly installed and the `vivado` binary is available.

**TLDR**: Run the following command to generate synthesis results for each design mentioned in table 2:
Expand All @@ -244,6 +236,17 @@ Each folder, except `filament-base` contains a `device.xdc` which defines the ta
Our script uses `fud` to orchestrate the execution.
For Filament files, `fud` compiles them to Verilog and runs the synthesis toolchain while for the Aetherling benchmark, it just runs the synthesis toolchain directly.

## (Optional) User Experience (10-15 minutes)

Filament's core contribution is a type checker and a compiler that enables users to write safe and performant hardware designs.
However, Filament's type is complex and, [following in the footsteps][rust-errs] of the Rust programming language, we believe it to be important that Filament generates good error messages.
To this end, we invite reviewers to follow Filament's tutorial and play with the compiler to get a sense of the language tools.
* Make sure `mdbook` is installed: `cargo install mdbook`
* From the `filament-evaluation` repository, run `cd filament && mdbook serve` to start the documentation server
* Open the documentation in a browser at `http://localhost:3000` and follow the tutorial
* If you're using the VM, we've setup a port forwarding rule to forward port 3000 to port 3000 on the host machine so you can read the documentation on your machine.


[virtualbox]: https://www.virtualbox.org/
[aeth-artifact]: https://dl.acm.org/do/10.1145/3395633/full/
[xilinx-account]: https://login.xilinx.com
Expand All @@ -256,4 +259,5 @@ For Filament files, `fud` compiles them to Verilog and runs the synthesis toolch
[verismith]: https://yannherklotz.com/docs/fpga2020/verismith_paper.pdf
[appliance-import]: https://docs.oracle.com/en/virtualization/virtualbox/6.0/user/ovf.html
[reticle]: https://dl.acm.org/doi/abs/10.1145/3453483.3454075
[aetherling]: https://aetherling.org/
[aetherling]: https://aetherling.org/
[rust-errs]: https://rustc-dev-guide.rust-lang.org/diagnostics.html?highlight=diagnostics#diagnostic-output-style-guide
4 changes: 0 additions & 4 deletions scripts/configure-fud.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@

set -euf -o pipefail

# Update the submodules
git reset --hard origin/main && git pull
git submodule update --init --recursive

# Install fud
## Check if flit is installed
if ! command -v flit &> /dev/null
Expand Down

0 comments on commit 0ed7740

Please sign in to comment.