Skip to content

Commit

Permalink
feat(configure): support for brotli-compressed GDS files
Browse files Browse the repository at this point in the history
Recently, we started compressing GDS files larger than 25 MB due to GitHub REST API blob size limitations.
  • Loading branch information
urish committed Nov 5, 2024
1 parent b176ed7 commit a48b1c7
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name = "tt-support-tools"
requires-python = ">=3.11"
dynamic = ["version"]
dependencies = [
"brotli",
"CairoSVG",
"chevron",
"cocotb",
Expand Down
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
#
anyio==4.4.0
# via httpx
brotli==1.1.0
# via tt-support-tools (pyproject.toml)
cairocffi==1.7.0
# via cairosvg
cairosvg==2.7.1
Expand Down
16 changes: 16 additions & 0 deletions shuttle.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import shutil
from typing import List, Set

import brotli # type: ignore
import git
import yaml

Expand All @@ -19,6 +20,15 @@ def copy_print(src: str, dest: str):
shutil.copy2(src, dest)


def copy_print_decompress(src: str, dest: str):
os.makedirs(os.path.dirname(dest), exist_ok=True)
with open(src, "rb") as f:
data = f.read()
with open(dest, "wb") as f:
f.write(brotli.decompress(data))
logging.info(f" -> {dest} (decompressed)")


def copy_print_glob(pattern: str, dest_dir: str):
for file in glob.glob(pattern):
copy_print(file, os.path.join(dest_dir, os.path.basename(file)))
Expand Down Expand Up @@ -187,6 +197,12 @@ def copy_mux_macro(self, source_dir: str, name: str):
def copy_macros(self):
logging.info("copying macros to tt_top:")
copy_print_glob("projects/*/*.gds", "tt-multiplexer/ol2/tt_top/gds")
# Find all the ".gds.br" files, decompress them and copy them to the destination
for file in glob.glob("projects/*/*.gds.br"):
decompressed_name = os.path.splitext(os.path.basename(file))[0]
copy_print_decompress(
file, os.path.join("tt-multiplexer/ol2/tt_top/gds", decompressed_name)
)
copy_print_glob("projects/*/*.lef", "tt-multiplexer/ol2/tt_top/lef")
copy_print_glob("projects/*/*.v", "tt-multiplexer/ol2/tt_top/verilog")
macros = ["tt_um_chip_rom", "tt_ctrl", "tt_mux"]
Expand Down

0 comments on commit a48b1c7

Please sign in to comment.