diff --git a/README.md b/README.md index e919c42..9cc4cc4 100644 --- a/README.md +++ b/README.md @@ -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. +

+ Lightning logo +

+ +Welcome to the Lightning, the first reconfigurable photonic-electronic neural network inference system integrated with the a 100 Gbps smartNIC. ## 1. Overview @@ -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 | diff --git a/kit/lightning_devkit_v2.jpg b/graphics/devkitV2.jpg similarity index 100% rename from kit/lightning_devkit_v2.jpg rename to graphics/devkitV2.jpg diff --git a/graphics/devkitV2.png b/graphics/devkitV2.png new file mode 100644 index 0000000..b5bcc26 Binary files /dev/null and b/graphics/devkitV2.png differ diff --git a/graphics/logo.png b/graphics/logo.png new file mode 100644 index 0000000..09f0103 Binary files /dev/null and b/graphics/logo.png differ diff --git a/kit/README.md b/kit/README.md new file mode 100644 index 0000000..49bf2a1 --- /dev/null +++ b/kit/README.md @@ -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). + +

+ kit +

+ +## 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) + diff --git a/rtl/README.md b/rtl/README.md new file mode 100644 index 0000000..8f32323 --- /dev/null +++ b/rtl/README.md @@ -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
+Run ```sudo apt install -y verilator python3 python3-pip python3-venv``` to install verilator
+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```
+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```
+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). \ No newline at end of file