generated from TinyTapeout/tt05-verilog-demo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
info.yaml
83 lines (70 loc) · 4.82 KB
/
info.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
---
# Tiny Tapeout project information
project:
wokwi_id: 0 # If using wokwi, set this to your project's ID
# If using an HDL, set wokwi_id as 0 and uncomment and list your source files here.
# Source files must be in ./src and you must list each source file separately
source_files:
- tt_um_delta_modulation.v
- delta.v
top_module: "tt_um_jmadden173_delta_modulation" # Put the name of your top module here, must start with "tt_um_". Make it unique by including your github username
# How many tiles your design occupies? A single tile is about 167x108 uM.
tiles: "1x1" # Valid values: 1x1, 1x2, 2x2, 3x2, 4x2 or 8x2
# Keep a track of the submission yaml
yaml_version: 4
# As everyone will have access to all designs, try to make it easy for someone new to your design to know what
# it does and how to operate it. This info will be automatically collected and used to make a datasheet for the chip.
#
# Here is a great example: https://github.com/davidsiaw/tt02-davidsiaw-stackcalc/blob/38c5647f83aad2aec675d566aa3d67b98f0aac81/info.yaml
documentation:
author: "John Madden" # Your name
title: "Delta Modulation Spike Encoding" # Project title
language: "Verilog" # other examples include Verilog, Amaranth, VHDL, etc
description: "Delta Modulation for Spiking Neural Networks (SNN) based on snnTorch's implementation." # Short description of what your project does
# Longer description of how the project works. You can use standard markdown format.
how_it_works: |
A spike is generated if the difference between the current and previous data inputs is greater than a specified input threshold. The design is meant to mimic the implementation of delta modulation in the [snnTorch](https://snntorch.readthedocs.io/en/latest/snntorch.spikegen.html#snntorch.spikegen.delta) python package. Each clock cycle is treated as an input/output, therefore there can be consecutive spikes that appear to be constantly high.
The input parameter, `off_spike`, enables spike generation when negative threshold is exceeded. A negative spike is represented by `spike[1] = 0`. A positive spike is represented by `spike[0] = 1`.
All numerical inputs and outputs are unsigned 4-bit integers. You are able to (1) input the `data` value, the input (2) the `threshold` for a spike to be generated, and (3) a value for the previous register for debugging.
The previous data register is included to be facilitate debugging with the ability to read the current value in the register and force the register to a specific value.
# Instructions on how someone could test your project, include things like what buttons do what and how to set the clock if needed
how_to_test: |
The module is intended to have a digital input, such as an ADC with a parallel output that is directly fed into the `data` input with a shared `clk` signal. The `threshold` is meant to be tied to a constant value. The module outputs through `spikes` net.
For simpler testing, the input does not need to be matched to the `clk`. With the `threshold` set, `data` can be changed and spikes can be viewed on an oscilloscope.
# A description of what the inputs do (e.g. red button, SPI CLK, SPI MOSI, etc).
inputs:
- input threshold bit 0
- input threshold bit 1
- input threshold bit 2
- input threshold bit 3
- input data bit 0
- input data bit 1
- input data bit 2
- input data bit 3
# A description of what the outputs do (e.g. status LED, SPI MISO, etc)
outputs:
- spike bit 0
- spike bit 1
- nc, constant output low
- nc, constant output low
- reg prev bit 0
- reg prev bit 1
- reg prev bit 2
- reg prev bit 3
# A description of what the bidirectional I/O pins do (e.g. I2C SDA, I2C SCL, etc)
bidirectional:
- parameter off_spike
- input load_prev bit
- nc, constant output low
- nc, constant output low
- input force_prev bit 0
- input force_prev bit 1
- input force_prev bit 2
- input force_prev bit 3
# The following fields are optional
tag: "snn, test" # comma separated list of tags: test, encryption, experiment, clock, animation, utility, industrial, pwm, fpga, alu, microprocessor, risc, riscv, sensor, signal generator, fft, filter, music, bcd, sound, serial, timer, random number generator, calculator, decoder, counter, puzzle, multiplier, game, oscillator,
external_hw: "" # Describe any external hardware needed
discord: "" # Your discord handle, used for communication and automatically assigning tapeout role after a submission
doc_link: "" # URL to longer form documentation, eg the README.md in your repository
clock_hz: 10000000 # Clock frequency in Hz (if required)
picture: "" # relative path to a picture in your repository (must be 512kb or less)