-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
cf5f5b0
commit d7f97c1
Showing
6 changed files
with
61 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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). |