- Notifications
You must be signed in to change notification settings - Fork35
Standard Cell Library based Memory Compiler using FF/Latch cells
License
AUCOHL/DFFRAM
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Standard Cell Library based Memory Compiler using DFF/Latch cells.
Seethis document.
| Configured Platform | Signoff-clean | Silicon-proven* |
|---|---|---|
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.
There may be design-specific complications that may render DFFRAM (and indeedthe entire chip) unusable. Proceed with caution.
The objective of this project is to develop a DFF/Latch-based RAM, Register Fileand Cache custom compilation flow that utilizes standard cell librariesfollowing a standard ASIC (Application Specific Integrated Circuit)implementation approach. Different views (HDL netlist, HDL functional models,LEF, GDS, Timing, …) are all generated for a given size configuration.
The layout targets highly compact designs (85%+) as the cells are placed on thefloor plan using a custom placer. Moreover, the custom placer ensures that therouting will be relatively simple. Currently, the compiler uses OpenROAD routersto route the macros with great success.
The Compiler relies on basic building blocks to construct the layout ofdifferent RAM/RF/Cache configurations. Checkthe compiler documentation for more info. The following shows how a32x32 memory (DFF based) is constructed.
The generated layouts by the DFFRAM compilers for RAM32 as well as its buildingblocks are as follows:
Put four of those side by side, and you get a 32-bit word...

We can keep going, but these images aren't getting any smaller. As a bonusthough, here is 64 kilobits:

That stuff you see on the right of each image? It's clock gates, decoders andthe like. Don't worry about it.
Currently, the can compiler generate the layout of the following configurations:
We currently do not recommend the use of 1RW1R. See this discussion for moreinfo:
- RAM
- 32 words with byte write enable (1RW and 1RW1R).
- 128 words with byte write enable (1RW and 1RW1R).
- 256 words with byte write enable (1RW and 1RW1R).
- 512 words with byte write enable (1RW and 1RW1R).
- 1024 words with byte write enable (1RW and 1RW1R).
- 2048 words with byte write enable (1RW and 1RW1R).
- Register File
- 32 x 32-bit words (2R1W)
TheOpenLane/ folder will contain good known OpenLaneconfigurations to build DFFRAM different macros.
.githubcontains files for GitHub actions.docs/contains documentation (😮)rtl/contains RTL RAM file generators for benchmarking and comparisonpurposes.platforms/contains PDK-specific files:<pdk-name>/<scl-name>/_building_blocks/contains a hierarchy of building blocks supported bythe compiler.
placeram/is the custom placer Python module.scripts/has assisting scripts used by the flow.dffram.pyis the compilation flow going from building blocks to LVS.
The following table compares the areas and bit densities of RAM macros generatedusing different means.
| Size1 | OpenRAM2 | DFFRAM Compiler | DFFRAM Netlist + OpenROAD Placer | Memory RTL with OpenLane | ||||
|---|---|---|---|---|---|---|---|---|
| Dim WxH (μm) | Bit Density (bits/mm2) | Dim WxH (μm) | Bit Density (bits/mm2) | Dim WxH (μm) | Bit Density (bits/mm2) | Dim WxH (μm) | Bit Density (bits/mm2) | |
| 512 bytes | N/A | N/A | 396.52 x 388.96 | 26,557 | 527.46 x 527.46 | 14,722 | 680.25 x 690.97 | 8,714 |
| 1 kbytes | 386 x 456 | 46,541 | 792.58 x 397.12 | 26,027 | 975.01 x 985.73 | 8,523 | 1,050 x 1,060 | 7,360 |
| 2 kbytes | 659.98 x 398.18 | 62,372 | 792.58 x 786.08 | 26,297 | 1374.46 x 1385.18 | 8,605 | 1,439.615 x 1,450.335 | 7,847 |
| 4 kbytes | 670.86 x 651.14 | 75,014 | 1,584.24 x 788.8 | 26,196 | 1940.45 x 1951.17 | 8,654 | 2,074 x 2,085 | 7,578 |
| 8 kbytes | N/A | N/A | 1,589 x 1,572 | 26,229 | TBD | TBD | 2,686.610 x 2,697.330 | 9,043 |
1 All support 32-bit word reads and 1, 2, and 4 byteswrites.
2 Values are based on the original layout produced by thecompiler. OpenRAM macros are typically wrapped to be useful w/ automated PnRASIC flows.
Copyright ©2020-2023 The American University in Cairo
Licensed under the Apache License, Version 2.0 (the "Open Source License"); youmay not use this file except in compliance with the Open Source License. You mayobtain a copy of the Open Source License at the root of this repository (see thefile 'License') or at
Unless required by applicable law or agreed to in writing, software distributedunder the Open Source License is distributed on an "AS IS" BASIS, WITHOUTWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the OpenSource License for the specific language governing permissions and limitationsunder the Open Source License.
About
Standard Cell Library based Memory Compiler using FF/Latch cells
Topics
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors14
Uh oh!
There was an error while loading.Please reload this page.



