Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
54 changes: 29 additions & 25 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ name: CI
jobs:
lint_models:
name: Lint All Models
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
- name: Get IcarusVerilog
run: |
sudo apt-get install -y iverilog
Expand All @@ -24,15 +24,15 @@ jobs:
done
lint_python:
name: Lint Python Code
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Lint
run: make lint
verify_models:
name: Verify (${{ matrix.count }}x${{ matrix.width }}_${{ matrix.variant }})
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
needs: [lint_models]
strategy:
matrix:
Expand All @@ -53,7 +53,7 @@ jobs:
- { count: "2048", width: "32", variant: "1RW1R" }
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
- name: Get IcarusVerilog
run: |
sudo apt-get install -y iverilog
Expand All @@ -68,7 +68,7 @@ jobs:
/bin/bash -c "! make | grep -c FATAL"
harden:
name: Harden (${{ matrix.count }}x${{ matrix.width }}_${{ matrix.variant }})
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
needs: [lint_models, lint_python]
strategy:
fail-fast: false
Expand All @@ -90,28 +90,28 @@ jobs:
#- { count: "256", width: "32", variant: "1RW1R" } # Timeout
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Nix
uses: cachix/install-nix-action@v22
with:
nix_path: nixpkgs=channel:nixos-23.05
- name: Setup Cachix
uses: cachix/cachix-action@v12
with:
name: openlane
uses: actions/checkout@v5
- name: Install Lix
run: |
curl --proto '=https' --tlsv1.2 -sSf -L https://install.lix.systems/lix | sh -s -- install --no-confirm --extra-conf "
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
experimental-features = nix-command flakes
"
echo "extra-substituters = https://nix-cache.fossi-foundation.org" | sudo tee -a /etc/nix/nix.conf
echo "extra-trusted-public-keys = nix-cache.fossi-foundation.org:3+K59iFwXqKsL7BNu6Guy0v+uTlwsxYQxjspXzqLYQs=" | sudo tee -a /etc/nix/nix.conf
- name: Run
run: |
building_blocks=ram
if [ "${{ matrix.variant }}" == "2R1W" ]; then
building_blocks=rf
fi

nix-shell --pure --run "\
nix develop --command bash -c "\
./dffram.py ${{ matrix.count }}x${{ matrix.width }}\
-p sky130A\
-s sky130_fd_sc_hd\
-v ${{ matrix.variant }}\
-b $building_blocks\
-p sky130A\
-s sky130_fd_sc_hd\
-v ${{ matrix.variant }}\
-b $building_blocks\
"

echo "PRODUCTS_PATH=$(echo products/*)" >> $GITHUB_ENV
Expand All @@ -122,17 +122,17 @@ jobs:
# name: BUILD_${{ matrix.count }}x${{ matrix.width }}_${{ matrix.variant }}
# path: ./build
- name: Upload Final Views
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.count }}x${{ matrix.width }}_${{ matrix.variant }}
path: ${{ env.PRODUCTS_PATH }}
publish:
name: Publish Release
if: always()
needs: [harden, verify_models]
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Export Repo URL
Expand All @@ -147,8 +147,12 @@ jobs:
if [ "${{ github.event_name }}" != "pull_request" ] && [ "${{ env.BRANCH_NAME }}" = "main" ]; then
python3 ./.github/scripts/generate_tag.py
fi
- name: Download All Artifacts
uses: actions/download-artifact@v3
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
with:
delete-merged: true
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: ./artifacts
- name: Create Release
Expand Down
14 changes: 2 additions & 12 deletions Contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Ensure that your local git clone also has an `upstream` remote. You can add it v
```sh
git remote get-url upstream
> fatal: No such remote 'upstream'
git remote add upstream https://github.com/Cloud-V/DFFRAM`
git remote add upstream https://github.com/AUCOHL/DFFRAM`
```

You can start a rebase by typing:
Expand All @@ -39,17 +39,7 @@ git push -fu origin main
Then, create your pull request. If all went well, the CI should pass.

## Note to maintainers

If the number of commits is low, rebase and merge, but if it is high (5 commits or more), squash and merge.

Squash and merge makes for a cleaner commit history, but will require pretty much everyone to rebase any work they've had off the main branch with a great degree more difficulty.

# Legal
By submitting a pull request, you (the Contributor) hereby grant The American University in Cairo a world-wide, royalty-free, non-exclusive license under intellectual property rights (other than patent or trademark) licensable by such Contributor to:

* use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work;

* under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version.

Copyright notice: above text adapted from the Mozilla Public License, version 2.0.

You are entitled and encouraged to add your name and email to the AUTHORS document at the root of the repository under 'Other Contributors', as well as include your name in any modified or created file.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ venv/manifest.txt: ./requirements_dev.txt
PYTHONPATH= ./venv/bin/python3 -m pip install --upgrade pip
PYTHONPATH= ./venv/bin/python3 -m pip install --upgrade wheel
PYTHONPATH= ./venv/bin/python3 -m pip install --upgrade\
-r ./requirements_dev.txt
-r ./requirements_dev.txt -r ./requirements.txt
PYTHONPATH= ./venv/bin/python3 -m pip freeze > $@
touch venv/manifest.txt

Expand All @@ -30,4 +30,4 @@ clean:
rm -rf build/
rm -rf logs/
rm -rf dist/
rm -rf *.egg-info
rm -rf *.egg-info
30 changes: 14 additions & 16 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
<h1 align="center"> DFFRAM Compiler</h1>
<p align="center">
<a href="https://colab.research.google.com/github/Cloud-V/DFFRAM/blob/main/dffram.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open in Google Colab"/></a>
</p>
<p align="center">
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License: Apache 2.0"/></a>
<img src="https://github.com/Cloud-V/DFFRAM/actions/workflows/main.yml/badge.svg?branch=main" alt="CI Status" />
<a href="https://invite.skywater.tools"><img src="https://img.shields.io/badge/Community-Skywater%20PDK%20Slack-ff69b4?logo=slack" alt="Invite to the Skywater PDK Slack"/></a>
<img src="https://github.com/AUCOHL/DFFRAM/actions/workflows/main.yml/badge.svg?branch=main" alt="CI Status" />
<a href="https://fossi-chat.org"><img src="https://img.shields.io/badge/Community-FOSSi%20Chat-1bb378?logo=element" alt="Invite to FOSSi Chat"/></a>
<a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code Style: Black"/></a>
</p>

Expand All @@ -15,17 +12,14 @@ Standard Cell Library based Memory Compiler using DFF/Latch cells.

See [this document](./docs/Usage.md).

You can try the
[Google Colaboratory](https://colab.research.google.com/github/Cloud-V/DFFRAM/blob/main/dffram.ipynb),
but it is a bit out-of-date at this point.

## Platform Support Status

| Configured Platform | Working | Silicon-proven\* |
| Configured Platform | Signoff-clean | Silicon-proven\* |
| - | - | - |
| `sky130A` | Yes | Yes |
| `sky130B` | Yes | No |
| `gf180mcuD` | No\* (Hold violations in the Netlist) | No |
| `sky130A` (Latches) | Yes | Yes |
| `sky130A` (DFF) | Yes | No |
| `sky130B` (Latches/DFF) | Yes | No |
| `gf180mcuD` (Latches/DFF) | No\* (Hold violations in the Netlist) | No |

> \* Silicon proven does not imply that you should use it without whole-system,
> timing-annotated simulation to make sure that it works for your circuit.
Expand Down Expand Up @@ -76,7 +70,11 @@ blocks are as follows:
Currently, the can compiler generate the layout of the following configurations:

> 1RW1R variants are temporarily disabled due to a bug.
> We currently do not recommend the use of 1RW1R. See this discussion for more
> info:
>
> https://github.com/AUCOHL/DFFRAM/issues/198

* RAM
* 32 words with byte write enable (1RW and 1RW1R).
Expand Down Expand Up @@ -116,8 +114,8 @@ using different means.
<th rowspan="2">Size<sup>1</sup></th>
<th colspan="2">OpenRAM<sup>2</sup></th>
<th colspan="2">DFFRAM Compiler</th>
<th colspan="2">DFFRAM/OpenLane</th>
<th colspan="2">RTL/OpenLane</th>
<th colspan="2">DFFRAM Netlist + OpenROAD Placer</th>
<th colspan="2">Memory RTL with OpenLane</th>
</tr>
<tr style="border-top:4px solid darkblue;">
<td> Dim WxH (μm) </td> <td> Bit Density (bits/mm<sup>2</sup>) </td>
Expand Down
Loading