Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
e505969
Initial Flattening of . Break out module.
dan-fritchman Jan 17, 2022
d98db80
Initial `rules` schema
dan-fritchman Jan 17, 2022
ad737b7
Move `enumstr` macro and associated trait to `layout21utils`
dan-fritchman Jan 26, 2022
40cb6cc
Break out `lef21::data` module
dan-fritchman Jan 26, 2022
50d1e79
`BoundBox` and `BoundBoxTrait` added to `raw::bbox`
dan-fritchman Jan 28, 2022
bd7b0bd
Break out `layout21raw::data`, `layout21raw::error` modules. Tweaks t…
dan-fritchman Feb 1, 2022
7c01cf3
Affixing net labels to GDS-borne `Polygon`s. Shape variants `Polygon`…
dan-fritchman Feb 1, 2022
d3e2e73
Unit tests and debug of `Polygon::contains`
dan-fritchman Feb 1, 2022
248e49d
Speed up `gds21::scan` test, some
dan-fritchman Feb 1, 2022
b96c062
Verify and update new golden data for `gds_to_proto1` test. Add YAML-…
dan-fritchman Feb 1, 2022
29ed743
Raw -> GDS export adds `PlaceLabels`, particularly its implementation…
dan-fritchman Feb 2, 2022
213fdfb
WIP Device Extraction
dan-fritchman Feb 14, 2022
ec55ff0
Merge branch 'main' into rules
dan-fritchman Feb 19, 2022
92a506b
Merge branch 'rules' into dev
dan-fritchman Mar 12, 2022
724257c
Merge branch 'main' into dev
dan-fritchman Apr 2, 2022
97d0601
Demo/ tutorial-style layout21raw inverter
dan-fritchman Apr 7, 2022
ddc034a
Create Tetris python package
dan-fritchman May 11, 2022
58356ed
WIP Tetris Python porting
dan-fritchman May 11, 2022
520b7a5
WIP, Near Complete Tetris Porting
dan-fritchman May 12, 2022
981e476
WIP, Near Complete Tetris Porting
dan-fritchman Jul 1, 2022
ead832f
Add utils post-fix Unwrapper trait, and a single use-case thereof
dan-fritchman Jul 1, 2022
64956ab
Merge Main
dan-fritchman Jan 12, 2023
adabe61
More python porting. Basic relative-placer tests passing(!)
dan-fritchman Jan 25, 2023
43faae0
Another Placer Test
dan-fritchman Jan 25, 2023
a076b5a
Merge branch 'main' into dev
dan-fritchman Jan 25, 2023
812ee2d
Partial #33 Gds to TOML. Upgrade to TOML v0.6.
dan-fritchman Jan 25, 2023
4e67090
Add layout21wgpu crate
dan-fritchman Jan 31, 2023
e2989e7
WIP layout -> wgpu
dan-fritchman Feb 4, 2023
e4cf153
Initial WGPU rendering rects & paths
dan-fritchman Feb 8, 2023
ad293f9
Initial polygon tessellation
dan-fritchman Feb 9, 2023
e0914f2
Module-ize
dan-fritchman Feb 9, 2023
c95405b
Scaling, separate tessellation
dan-fritchman Feb 9, 2023
26f498f
Merge branch 'wgpu' into dev
dan-fritchman Feb 10, 2023
15abd1c
Merge tetris python
dan-fritchman Feb 10, 2023
5ef8f4e
Merge post-fix error handlers
dan-fritchman Feb 10, 2023
a1b16d6
Initial Python RO Tests
dan-fritchman Feb 10, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"python.testing.pytestArgs": [
"Tetris"
],
"python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true
}
5 changes: 4 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,18 @@

[workspace]
members = [
# "rules21",
"gds21",
"layout21",
"layout21converters",
"layout21protos",
"layout21raw",
"layout21tetris",
# "layout21tetris",
"layout21utils",
"layout21wgpu",
"lef21",
]
resolver = "2"

# Inherited Package Attributes
# Thanks https://doc.rust-lang.org/cargo/reference/workspaces.html#the-package-table!
Expand Down
152 changes: 152 additions & 0 deletions Tetris/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
29 changes: 29 additions & 0 deletions Tetris/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
BSD 3-Clause License

Copyright (c) 2021, Dan Fritchman
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5 changes: 5 additions & 0 deletions Tetris/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

# Tetris

Gridded Semi-Custom Integrated Circuit Layout

34 changes: 34 additions & 0 deletions Tetris/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""
# Setup Script

Derived from the setuptools sample project at
https://github.com/pypa/sampleproject/blob/main/setup.py

"""

# Always prefer setuptools over distutils
from setuptools import setup, find_packages
import pathlib

here = pathlib.Path(__file__).parent.resolve()

# Get the long description from the README file
long_description = (here / "readme.md").read_text(encoding="utf-8")

_VLSIR_VERSION = "1.0.0.dev0"

setup(
name="tetris",
version=_VLSIR_VERSION,
description="Gridded Semi-Custom Integrated Circuit Layout",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/dan-fritchman/Layout21",
author="Dan Fritchman",
packages=find_packages(),
python_requires=">=3.7, <4",
install_requires=[f"vlsir=={_VLSIR_VERSION}", "numpy==1.21.5"],
extras_require={
"dev": ["pytest==5.2", "coverage", "pytest-cov", "black==19.10b0", "twine"]
},
)
Empty file added Tetris/tests/__init__.py
Empty file.
13 changes: 13 additions & 0 deletions Tetris/tests/empty.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
domain: demolib
cells:
- name: democell
layout:
name: democell
outline:
x: [ 100 ]
y: [ 10 ]
metals: 0
instances: []
assignments: []
cuts: []
32 changes: 32 additions & 0 deletions Tetris/tests/insts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
domain: demoinst
cells:
- name: unit
layout:
name: unit
outline:
x: [5]
y: [1]
metals: 2
instances: []
assignments: []
cuts: []
- name: democell
layout:
name: democell
outline:
x: [100]
y: [10]
metals: 5
instances:
- name: unit1
cell:
to:
Local: unit
loc:
place:
Abs: { x: 10, y: 1 }
reflect_horiz: false
reflect_vert: false
assignments: []
cuts: []
Loading