feat(docs): update for tt05 (WiP)

This commit is contained in:
Uri Shaked
2023-11-09 17:00:59 +02:00
parent 98e7cb27ac
commit a31ae37296
5 changed files with 63 additions and 102 deletions
+1
View File
@@ -353,4 +353,5 @@ if __name__ == "__main__":
docs.dump_markdown()
if args.build_hugo_content:
shuttle.configure_mux()
docs.build_hugo_content()
+11 -73
View File
@@ -1,84 +1,22 @@
---
title: "Tiny Tapeout 03"
weight: 20
description: 249 designs, closed 24th April 2023
title: "Tiny Tapeout 05"
weight: 50
description: 174 designs, closed 4th November 2023
---
{{% toc %}}
# Design details
* [Github repository](https://github.com/TinyTapeout/tinytapeout-03)
* [PDF datasheet](https://github.com/TinyTapeout/tinytapeout-03/raw/main/datasheet.pdf)
* [Verification](https://github.com/TinyTapeout/tinytapeout-03/blob/main/VERIFICATION.md)
* [Efabless MPW submission](https://platform.efabless.com/projects/1971)
* [Github repository](https://github.com/TinyTapeout/tinytapeout-05)
* [PDF datasheet](https://tinytapeout.github.io/tinytapeout-05/datasheet.pdf)
* [Efabless MPW submission](https://repositories.efabless.com/urish/tinytapeout-05)
* [Shuttle index (JSON)](https://tinytapeout.github.io/tinytapeout-05/shuttle_index.json)
# Launch stats
* Launched: 1 March 2023
* Submission closed: 24 April 2023
* Submitted to Efabless 2304C chipIgnite shuttle using Skywater 130nm open source PDK
# Project statistics
* 100 projects submitted, 149 projects added from [TT02](/runs/tt02)
* build time for all projects 22.68 hours
* total cells 79674
* max cells 1287 for [project 072](./072)
* max utilisation 59.95% for [project 044](./044)
* total wire length 4079 mm
* 94 used Wokwi, 135 Verilog, 1 myhdl, 7 Amaranth, spade 1, xls 2, migen 1, systemverilog 3, mixed radix circuit synthesis (mrcs) 1, chisel 1.
* top 10 tags:
- test : 21
- experiment: 6
- cpu : 6
- timer : 5
- risc : 5
- game : 4
- pwm : 4
- music : 4
- counter : 4
# Whole die render
![whole die](images/tinytapeout-03.png)
# Project Showcase
* [12 bit PDP8](./019)
* [Prime detector](./031)
* [Pulse density modulators](./033)
* [Most of the Sky130 cells](./045)
* [Synthesizable Digital Temperature Sensor](./047)
* [Neptune guitar tuner](./052)
* [MSF clock](./066)
* [Ring oscillator temperature sensor](./058)
* [Locked QTCore-A1](./072)
# Testimonials / Endorsements
Awesome! Sent my design to #TinyTapeout ! Emotion! Thanks
@matthewvenn , @marunmagesh and crew, for making it possible!
---
#tinytapeout 3 submission is in! I'm very thankful to be a part of such an amazing project, even if my project is small.
---
Just to take moment, thank you! I didn't think I would ever get to do something like this, especially with so little cost or pressure.
For context, at work, I was testing an ASIC a supplier designed for us, and that was quite the opposite of both of these.
---
Hurray, also made a last minute submission, haven't felt that rush since my last university homework submission deadline... Great that a chip design can be done on a weekend, looking forward to getting all the other designs, and thanks everybody who contributed to the platform, it is really easy to use!
---
I just submitted a last minute project to tt03, wanted to drop by and say kudos for all the resources and the project in general!
I've never done any hardware before (just software), but after reading the updated Code by Petzold earlier in the year and listening to an interview with Jim Keller I had my interest peeked to look at whats going on in the layers I usually take for granted. Really cool to find something like tiny tapeout, nice motivating to actually install some of the tools and give it a try.
---
More on [Twitter](https://twitter.com/search?q=tinytapeout).
* Launched: 11 September 2023
* Submission closed: 4 November 2023
* Submitted to Efabless [2311C chipIgnite](https://efabless.com/shuttle-status) shuttle using Skywater 130nm open source PDK
* Chips expected April 2024, PCBs expected June 2024
+13 -13
View File
@@ -1,15 +1,15 @@
---
hidden: true
title: "{index} {title}"
title: "{mux_address} {title}"
weight: {weight}
---
## {index} : {title}
## {mux_address} : {title}
* Author: {author}
* Description: {description}
* [GitHub repository]({git_url})
* [Most recent GDS build]({git_action})
* [GDS submitted]({git_action})
* {project_type} project
* [Extra docs]({doc_link})
* Clock: {clock_hz} Hz
@@ -27,13 +27,13 @@ weight: {weight}
### IO
| # | Input | Output |
|---|--------------|--------------|
| 0 | {inputs[0]} | {outputs[0]} |
| 1 | {inputs[1]} | {outputs[1]} |
| 2 | {inputs[2]} | {outputs[2]} |
| 3 | {inputs[3]} | {outputs[3]} |
| 4 | {inputs[4]} | {outputs[4]} |
| 5 | {inputs[5]} | {outputs[5]} |
| 6 | {inputs[6]} | {outputs[6]} |
| 7 | {inputs[7]} | {outputs[7]} |
| # | Input | Output | Bidirectional |
|---|--------------|--------------| -------------------|
| 0 | {inputs[0]} | {outputs[0]} | {bidirectional[0]} |
| 1 | {inputs[1]} | {outputs[1]} | {bidirectional[1]} |
| 2 | {inputs[2]} | {outputs[2]} | {bidirectional[2]} |
| 3 | {inputs[3]} | {outputs[3]} | {bidirectional[3]} |
| 4 | {inputs[4]} | {outputs[4]} | {bidirectional[4]} |
| 5 | {inputs[5]} | {outputs[5]} | {bidirectional[5]} |
| 6 | {inputs[6]} | {outputs[6]} | {bidirectional[6]} |
| 7 | {inputs[7]} | {outputs[7]} | {bidirectional[7]} |
+30 -14
View File
@@ -155,7 +155,7 @@ class Docs:
if p.returncode != 0:
logging.error("pdf command failed")
def build_hugo_content(self):
def build_hugo_content(self) -> None:
hugo_root = self.args.build_hugo_content
hugo_images = os.path.join(hugo_root, "images")
shutil.rmtree(hugo_root)
@@ -171,46 +171,62 @@ class Docs:
index_template = fh.read()
# copy image
shutil.copyfile(
"pics/tinytapeout_numbered.png",
os.path.join(hugo_images, "tinytapeout-03.png"),
) # TODO fix hardcoded run
# TODO, need to get image from somewhere
# shutil.copyfile(
# "tt/docs/pics/tinytapeout_numbered.png",
# os.path.join(hugo_images, f'tinytapeout-{self.config["id"]}.png'),
# )
# index page
logging.info(
"building pages - can take a minute as fetching latest GDS action URLs for all projects"
)
logging.info("building pages")
with open(os.path.join(hugo_root, "_index.md"), "w") as fh:
fh.write(index_template)
fh.write("# All projects\n")
fh.write("| Index | Title | Author |\n")
fh.write("| ----- | ----- | -------|\n")
self.projects.sort(key=lambda x: x.mux_address)
for project in self.projects:
logging.info(project)
fh.write(project.get_hugo_row())
project_dir = os.path.join(hugo_root, f"{project.get_index() :03}")
project_dir = os.path.join(hugo_root, f"{project.mux_address :03}")
project_image_dir = os.path.join(project_dir, "images")
os.makedirs(project_dir)
os.makedirs(project_image_dir)
yaml_data = project.get_project_doc_yaml()
yaml_data["mux_address"] = project.mux_address
if '""' in yaml_data["title"]:
yaml_data["title"] = yaml_data["title"].replace('""', "")
yaml_data["index"] = project.index
yaml_data["weight"] = project.index + 1
yaml_data["git_action"] = project.get_latest_action_url()
yaml_data["git_action"] = project.get_workflow_url_when_submitted()
for key in "external_hw", "clock_hz":
if key not in yaml_data:
yaml_data[key] = ""
# many people remove unused pins in input / output / bidirectional
for key in ["inputs", "outputs", "bidirectional"]:
yaml_data[key].extend((8 - len(yaml_data[key])) * ["n/a"])
yaml_data["picture_link"] = ""
if yaml_data["picture"]:
picture_name = yaml_data["picture"]
picture_filename = os.path.join(project.local_dir, picture_name)
picture_basename = os.path.basename(picture_filename)
extension = os.path.splitext(yaml_data["picture"])[1]
picture_path = os.path.join(
project.local_dir, f"picture{extension}"
)
picture_basename = os.path.basename(picture_path)
try:
shutil.copyfile(
picture_filename,
picture_path,
os.path.join(project_image_dir, picture_basename),
)
yaml_data[
"picture_link"
] = f"![picture](images/{picture_basename})"
logging.warning(f"picture found {picture_path}")
except FileNotFoundError:
logging.warning(f"picture not found {picture_path}")
yaml_data["picture_link"] = "Image path is broken"
doc = doc_template.format(**yaml_data)
with open(os.path.join(project_dir, "_index.md"), "w") as pfh:
+8 -2
View File
@@ -215,8 +215,8 @@ class Project:
def get_yaml(self):
return self.yaml
def get_hugo_row(self):
return f'| {self.index} | [{self.yaml["documentation"]["title"]}]({self.index :03}) | {self.yaml["documentation"]["author"]}|\n'
def get_hugo_row(self) -> str:
return f'| {self.mux_address} | [{self.yaml["documentation"]["title"]}]({self.mux_address :03}) | {self.yaml["documentation"]["author"]}|\n'
# docs stuff for index on README.md
def get_index_row(self):
@@ -275,6 +275,12 @@ class Project:
repo = Repo(os.path.join(self.local_dir, "tt"))
return f"{repo.active_branch.name} {repo.commit().hexsha[:8]}"
def get_workflow_url_when_submitted(self):
json_file = os.path.join(self.local_dir, "commit_id.json")
with open(json_file) as fh:
commit_info = json.load(fh)
return commit_info["workflow_url"]
def get_workflow_url(self):
GITHUB_SERVER_URL = os.getenv("GITHUB_SERVER_URL")
GITHUB_REPOSITORY = os.getenv("GITHUB_REPOSITORY")