Closed Peter-Herrmann closed 8 months ago
Another interesting symptom: These commits got different results during detailed routing, despite theoretically using the exact same files. Instead of using a relative path (dir::../../../../pdk/
), I use the environment variable pdk_dir::
, and I omitted the VERILOG_INCLUDE_DIRS
config.
By doing this, I somehow ended up with different detailed routing results, which seems to indicate an actual difference in what is being put on the die, or at least the actions taken during optimization.
EDIT Similarly, 8705297 changed nothing but re-adding the VERILOG_INCLUDE_DIRS
and it ended up with yet another violation count.
I'm basically stuck between two options:
To move forward, I need to do one of the following:
This was found to be a bug with the MPW precheck itself, described in issue #247. Currently awaiting a fix to be merged into the MPW precheck in PR #248
Found that the Makefile target make pdk-with-volare
was using an old, hard-coded version of the PDK:
ifeq ($(PDK),sky130A)
SKYWATER_COMMIT=f70d8ca46961ff92719d8870a18a076370b85f6c
export OPEN_PDKS_COMMIT?=78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc
export OPENLANE_TAG?=2023.07.19
MPW_TAG ?= mpw-9e
This vesion of the PDK (78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc
) was missing .maglef
files for the SRAM we are using, and the DRC script is not set up to handle that in the MPW precheck. After setting the PDK version to 559a117b163cef2f920f33f30f6f690aa0b47e4c
(latest), the DRC check completed.
After updating the OPENLANE_TAG
, I recieved the following warning:
Warning: : OpenLane may not function properly: open_pdks 559a117b163cef2f920f33f30f6f690aa0b47e4c
The version of open_pdks used in building the PDK does not match the version OpenLane was tested on (installed: 559a117b163cef2f920f33f30f6f690aa0b47e4c, tested: dd7771c384ed36b91a25e9f8b314355fc26561be)
Simply updating the version in the Makefile was not sufficient. In order to get the tested version, I needed to explicitly enable the tested version with volare in the ci.yml:
- name: Build PDK
run: |
make pdk-with-volare
python3 -m pip install --upgrade --no-cache-dir volare
volare enable --pdk sky130 dd7771c384ed36b91a25e9f8b314355fc26561be
volare ls --pdk sky130
When reaching the MPW precheck, the check is successful up to the Magic DRC check. While this step does not fail, it seems to enter a faulted state.The process will consume as high as 311GB of RAM (filling physical RAM and the entire swapfile), and run a single core at 100% (or as high as it can limited by page faults). It will run in this state seemingly forever, longer than 8 hours.
Per this document and this thread, it is possible that there is an issue with the SRAM macros during the DRC check. In both these cases, it is recommended to use the latest version of the macro directly from the PDK provided by efabless.
If I use the PDK version of the SRAM, using the following in
config.json
:Then I recieve linter errors (which can be ignored), and STA errors (which cannot be ignored):
Examples:
If I provide a modified version of the verilog blackbox file, with![image](https://github.com/Cal-Poly-RAMP/tapeout-ci-2311/assets/114958111/cd15c18c-8f90-415c-8058-38aefa023b3f)
/// sta-blackbox
as recommended, then I can avoid all linter and STA errors, but when reaching the Magic DRC check it will hang in a seemingly infinite loop and consume all of the system resources.Examples: