-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinfo.yaml
96 lines (84 loc) · 4.59 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
84
85
86
87
88
89
90
91
92
93
94
95
96
---
# TinyTapeout 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:
- fifo.v
- tt_um_fifo_stevej.v
top_module: "tt_um_fifo_stevej" # 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, 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: "Steve Jenson" # Your name
title: "8-bit FIFO with depth 16." # Project title
language: "Verilog" # other examples include Verilog, Amaranth, VHDL, etc
description: "8-bit FIFO with depth 16 and FWFT read operation" # Short description of what your project does
# Longer description of how the project works. You can use standard markdown format.
how_it_works: |
A FIFO queue is a first-in, first-out digital device that allows two parties to communicate with a channel of limited size by following specific rules: one party writes, the other reads. The first thing written will be the first thing read. Reading an empty queue is disallowed and writing to a full queue is disallowed. Empty and full status can be checked via the proper status pin before use.
In psuedo-code, two parties can communicate with this FIFO as follows:
Party A
```
while !full:
write_entry(item)
```
Party B
```
while !empty:
item = read_entry()
```
The queue works in First-Word Fall-Through mode meaning that the top item is always available on the read bus even
if you haven't set `read_request` high. If you want to see the next item in the queue on your next read, be sure
to set `read_request` high.
`almost_full` and `almost_empty` signals exist so you can batch reads and writes. Instead of checking for
`full` or `empty` on each read or write you can instead check `almost_full` or `almost_empty` and batch read or writes
based on how many slots are available. For this design taped out in TinyTapeout 4, almost_full means 12 of 16 slots
have been used and almost_empty means that 12 of 16 slots are free.
# 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: |
Write an item, read an item. Check the status bits. See the unit tests for more ideas!
# A description of what the inputs do (e.g. red button, SPI CLK, SPI MOSI, etc).
inputs:
- item[0]
- item[1]
- item[2]
- item[3]
- item[4]
- item[5]
- item[6]
- item[7]
# A description of what the outputs do (e.g. status LED, SPI MISO, etc)
outputs:
- item[0]
- item[1]
- item[2]
- item[3]
- item[4]
- item[5]
- item[6]
- item[7]
# A description of what the bidirectional I/O pins do (e.g. I2C SDA, I2C SCL, etc)
bidirectional:
- empty (read-only)
- full (read-only)
- underflow (read-only)
- overflow (read-only)
- almost_empty (read-only)
- almost_full (read-only)
- write_enable (set this high to write a value)
- read_enable (set this high to read the latest entry from the FIFO)
# The following fields are optional
tag: "fifo" # 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: "shorts_weather" # Your discord handle, used for communication and automatically assigning tapeout role after a submission
doc_link: "README.md" # URL to longer form documentation, eg the README.md in your repository
clock_hz: 0 # Clock frequency in Hz (if required)
picture: "" # relative path to a picture in your repository (must be 512kb or less)