Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mattvenn/efabless_project_tool
Tool to fetch and parse data about Efabless MPW projects
https://github.com/mattvenn/efabless_project_tool
asic mpw open-source silicon
Last synced: 9 days ago
JSON representation
Tool to fetch and parse data about Efabless MPW projects
- Host: GitHub
- URL: https://github.com/mattvenn/efabless_project_tool
- Owner: mattvenn
- License: apache-2.0
- Created: 2022-07-28T10:22:38.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-10T10:24:20.000Z (almost 2 years ago)
- Last Synced: 2023-03-16T20:15:44.727Z (over 1 year ago)
- Topics: asic, mpw, open-source, silicon
- Language: Python
- Homepage: https://zerotoasiccourse.com
- Size: 1.3 MB
- Stars: 19
- Watchers: 6
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Project is out of date and doesn't work anymore.
The website changes too much for me to keep the scraping up to date.
# Efabless Project Tool
Efabless don't yet have an API, so I've written this as a quick hack to get bulk project data from the Google sponsored MPW projects.
Also, while there are around 700 public projects (As of September 2022), only 240ish have been selected to be made. The selected status isn't
a secret but it's also not easily available, so I have put a list of (most of) the ids in the [selected](selected) file, which is merged
into the data from the website. I'll manually update this after every shuttle selection.# Watch the demo!
https://youtu.be/laAQLVO7aQo
# Example use
List all projects along with tapeout and precheck status:
./efabless_tool.py --list
Show only mpw and process for all projects:
./efabless_tool.py --list --fields mpw,process
Show all fields for project 1000:
./efabless_tool.py --id 1000 --show
Update the cache - requires the selenium setup, takes about 3 minutes.
./efabless_tool.py --update
Get max number of pins in a user project's macros (needs GitHub token)./efabless_tool.py --get-pin
How many public projects are there?
./efabless_tool.py --list | wc -l
How many successful tapeouts by me on Sky130B process?
./efabless_tool.py --list --fields owner,tapeout,process | grep Matt | grep Succeeded | grep 130B
How many reram projects were selected to be manufactured?
./efabless_tool.py --list --field summary,selected | grep -i reram | grep yes
Use the built in search:
./efabless_tool.py --ip op-amp
Print the macro.cfg for all projects on MPW7 that have passed tapeout (requires github token, see below)
./efabless_tool.py --list | egrep MPW-7.*Succeeded | ./efabless_tool.py --get-file openlane/user_project_wrapper/macro.cfg
## Get PinFor each project:
* fetch the def file of user_project_wrapper from the git repo,
* use [def_parser](/blob/sel_set/def/user_project_wrapper.def) to get macros,
* count occurences of PIN in each macro lef,
* return biggest count.Only works if user_project_wrapper.def and all macro.lefs are commited to the repo.
# To refresh the cache
The [GitHub Action](.github/workflows/efabless_tool.yaml) runs every night to rebuild the cache. So you just need to do a `git pull` in your cloned repo to update.
## Manually refresh the cache
pip3 install -r requirements.txt
./efabless_tool.py --update-cache # takes a few minutes## GitHub token
If you want to use the GitHub functionality (currently only used for the get-pin option), you'll also need a git_token and git_username added to tokens.py. Get yours from https://github.com/settings/tokens/new . You don't need to tick any boxes in the form, the default is fine.
git_token = "token"
git_username = "username"This gives you 5000 requests per hour.
# Credits
* async URL fetch code from https://gist.github.com/wfng92/2d2ae4385badd0f78612e447444c195f
* lef/def parser from TrimCao https://github.com/trimcao/lef-parser# License
[Apache 2](LICENSE)