Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
zhizhenzhong committed Oct 6, 2023
1 parent cf5f5b0 commit d7f97c1
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 2 deletions.
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
[![DOI:10.1145/3603269.3604821](http://img.shields.io/badge/DOI-10.1145/3603269.3604821-69B7DB.svg)](https://doi.org/10.1145/3603269.3604821)
[![DNN build](https://github.com/hipersys-team/lightning/actions/workflows/dnn_single_core.yml/badge.svg)](https://github.com/hipersys-team/lightning/actions/workflows/dnn_single_core.yml)

Welcome to the Lightning, a reconfigurable photonic-electronic neural network inference system integrated with the a 100 Gbps smartNIC.
<p align="center">
<img src="graphics/logo.png" alt="Lightning logo" width=50% height=auto>
</p>

Welcome to the Lightning, the first reconfigurable photonic-electronic neural network inference system integrated with the a 100 Gbps smartNIC.

## 1. Overview

Expand Down Expand Up @@ -34,7 +38,7 @@ This part of artifact contains Lightning's RTL-based datapath design and impleme

| Source Files | Description |
| ----- | ----- |
| `rtl/datapath/` | This folder contains the code of Lightning's datapath modules (packet I.O, memory controller, count-action logic, etc.) |
| `rtl/datapath/` | This folder contains the code of Lightning's datapath modules (packet I/O, memory controller, count-action logic, etc.) |
| `rtl/emulate/` | This folder contains the code of emulated photonic multiplier modules |
| `rtl/sram/` | This folder contains the code of SRAM modules |
| `rtl/tb/` | This folder contains the code of Verilator-based testbench modules |
Expand Down
File renamed without changes
Binary file added graphics/devkitV2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added graphics/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions kit/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Building your own Lightning Developer Kit



The Lightning developer kit contains the minimum-viable photonic devices to perform a single multiplication operation in the photonic domain. The current version of Lightning developer kit takes in two input signals (in analog voltages, represented by $A$ and $B$), and returns an output signal (in analog voltages, represented by $R$). For each operation, $R=A*B$ is performed in photonic domain inside the Lightning developer kit. For more details, please refer to the Appendix of our [paper](https://doi.org/10.1145/3603269.3604821).

<p align="center">
<img src="graphics/devkitV2.png" alt="kit" width=70% height=auto>
</p>

## Shopping list

To build your own Lightning developer kit as shown in the figure, you need to purchase the following devices:
- Modulator: [Thorlabs 10 GHz Intensity Modulator](https://www.thorlabs.com/thorproduct.cfm?partnumber=LN81S-FC)
- Photodetector: [Thorlabs DC - 9.5 GHz InGaAs Detector](https://www.thorlabs.com/thorproduct.cfm?partnumber=PDA8GS)
- Fiber polarization controller: [Thorlabs 3 Ø27 mm Paddles](https://www.thorlabs.com/thorproduct.cfm?partnumber=FPC031)
- Acrylic sheets: [Clear Static-Dissipative Cast Acrylic, Scratch and UV Resistant, 12" x 24" x 3/16"](https://www.mcmaster.com/sheets/clear-static-dissipative-scratch-and-uv-resistant-cast-acrylic/)
- Fiber storage reels:[Thorlabs Storage Reel for Patch Cables with Ø900 µm Jackets](https://www.thorlabs.com/thorproduct.cfm?partnumber=FSR1)
- Fiber mating sleeves: [Thorlabs Single L-Bracket Mating Sleeve](https://www.thorlabs.com/thorproduct.cfm?partnumber=ADAFCPMB1), [Thorlabs Dual L-Bracket Mating Sleeve](https://www.thorlabs.com/thorproduct.cfm?partnumber=ADAFCPMB3)

## Fabrications
The Lightning developer kit's case is made by transparent acrylic sheets cutted by laser cutting machines. You can find the laser cutting source files in ```laser_cutting/```.

To secure the position of photonic devices inside the Lightning developer kit, we designed customized device support and fabricated them using 3D printers. You can find the 3D printing source files in ```3D_printing/```.


## Supporting equipment
To facilitates the Lightning developer kit and use it to test out your ideas on photonic computing, you will need the following equipment to build a minimum-viable testbed. Note that these equipment are not mandatory and can be replaced if you find other alternatives.

- Laser source: [Santec TSL-770 Tunable Laser](https://inst.santec.com/products/tunablelaser/tsl-770)
- DAC/ADC (on RFSoC FPGA): [AMD Xilinx ZCU111](https://www.xilinx.com/products/boards-and-kits/zcu111.html)
- RF amplifier: [Texas Instruments LMH5401 Evaluation Module
](https://www.ti.com/tool/LMH5401EVM)

21 changes: 21 additions & 0 deletions rtl/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Lightning Register Transfer Level (RTL) Code
The Lightning RTL code implements the fast datapath
The code in this folder reproduces results reported in Lightning paper Section 6.

## Reproduce the testbench results

### 1. Install [Verilator](https://verilator.org/guide/latest/install.html) and dependencies
Run ```python tb/create_venv.py``` to create the environments and dependencies<br>
Run ```sudo apt install -y verilator python3 python3-pip python3-venv``` to install verilator<br>
Run ```verilator --version``` to check if the install version is ```Verilator 4.038 2020-07-11 rev v4.036-114-g0cd4a57ad```. Other Verilator versions may or may not be compatible due to frequent Verilator codebase changes.

### 2. Build the verilator testbench
Run ```make build-sw-lenet-single-core``` <br>
If build is successful, the compiled Verilator testbench will appear in the ```obj_dir/``` folder.

### 3. Run the verilator testbench (e.g., LeNet-300-100 DNN)
Run ```make run-sw-lenet-single-core``` <br>
After running the testbench, results will appear in the ```tb/``` folder:
- ```tb_lenet_sim.vcd```: the generated waveform file containing all registers values over the simulation period.
- ```tb_lenet_sim_reg_values```: the register values at each cycle in .csv format recorded by the Verilator [Direct Programming Interface (DPI)
](https://verilator.org/guide/latest/connecting.html#direct-programming-interface-dpi).

0 comments on commit d7f97c1

Please sign in to comment.