mirror of
https://github.com/TinyTapeout/tt-support-tools.git
synced 2026-11-03 04:36:09 +01:00
feat(docs): update for tt05 (WiP)
This commit is contained in:
@@ -353,4 +353,5 @@ if __name__ == "__main__":
|
||||
docs.dump_markdown()
|
||||
|
||||
if args.build_hugo_content:
|
||||
shuttle.configure_mux()
|
||||
docs.build_hugo_content()
|
||||
|
||||
+11
-73
@@ -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
|
||||
|
||||

|
||||
|
||||
# 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
@@ -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
@@ -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""
|
||||
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
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user