Mitch Bailey
08/11/2023, 1:49 PMSubcircuit pins:
Circuit 1: bitfour_EESPFAL |Circuit 2: bitfour_EESPFAL
-------------------------------------------|-------------------------------------------
GND |GND
k[0] |k[0]
k[1] |k[1]
k[2] |k[2]
k[3] |k[3]
k_bar[0] |k_bar[0]
k_bar[1] |k_bar[1]
k_bar[2] |k_bar[2]
k_bar[3] |k_bar[3]
x[0] |x[0]
x[1] |x[1]
x[2] |x[2]
x[3] |x[3]
x_bar[0] |x_bar[0]
x_bar[1] |x_bar[1]
x_bar[2] |x_bar[2]
x_bar[3] |x_bar[3]
VDD |VDD
Dis0 |(no matching pin)
CLK0 |(no matching pin)
CLK1 |(no matching pin)
Dis1 |(no matching pin)
CLK3 |(no matching pin)
Dis2 |(no matching pin)
CLK2 |(no matching pin)
Dis3 |(no matching pin)
The verilog is probably defined as
input wire [BIT_SIZE-1:0] CLK,
input wire [BIT_SIZE-1:0] Dis,
which I believe expands to CLK[3], CLK[2], …, Dis[3], …
etc.
How are you creating the LEF file? It seems to have much more information than say this file for a larger macro.JC
08/11/2023, 2:22 PMlef write bitfour_EEPFAL -tech
. I also had magic write the GDS file, which is used as part of the macro. When you say each hierarchy, do I have to go down to the most basic cell(EESPFAL_NAND_V3, etc.), or just the top cell(bitfour_EESPFAL) pins wrapping them together in the layout?Mitch Bailey
08/11/2023, 2:42 PMno matching pins
error was bitfour_EESPFAL
.
@Tim Edwards is there a way to create a more succinct LEF file with magic? Something like the lef created by open lane for macros?JC
08/11/2023, 2:48 PMMitch Bailey
08/11/2023, 3:22 PMTim Edwards
08/11/2023, 3:47 PMlef
command for additional options. Usually there should be some set of options that gets the result you want for a useful abstract view.JC
08/11/2023, 7:19 PMJC
08/11/2023, 8:06 PMDRT-0073 error No access point for lane0/CLK[2]
when using just lef write filename -hide
. When I specify the distance it doesn't hide and I can reach all the way down to the lvs error on openlane.Tim Edwards
08/11/2023, 8:54 PMJC
08/11/2023, 9:07 PMJC
08/11/2023, 10:24 PMstep 24 detailed routing
violations I'm not sure how to fix those aside from moving the macro around the defined die area until it passes.Tim Edwards
08/12/2023, 12:14 AMJC
08/12/2023, 12:22 AMMitch Bailey
08/12/2023, 12:30 AMSubcircuit pins:
Circuit 1: EESPFAL_s3 |Circuit 2: EESPFAL_s3
-------------------------------------------|-------------------------------------------
EESPFAL_3in_NOR_v2_0/OUT |s3 **Mismatch**
EESPFAL_3in_NOR_v2_0/OUT_bar |s3_bar **Mismatch**
My personal preference is to make sure LVS is clean (if possible) at every level.
Your openroad gui shows what appears to be one red power rail running vertically through the macro. There should be 2, one for VSS and one for (dummy) VDD. If you zoom in, are there actually 2 and do they connect to all your macro m3 power rails? As @Tim Edwards mentioned, routing on boundaries, tends to be in the direction on into the chip. If the macros are placed close together, you may get a congestion error. Either separate you macros by a few tracks, or arrange your LEF so that routing can be done by dropping vias.JC
08/12/2023, 12:48 AMJC
08/12/2023, 9:17 PM300 300
and position of 155 150 N
the lvs error gets reduced back to VDD mismatched. I increased the distance between all the pins, moved the them to inside the boundary, and set lef to -hide 550
. The gds file and pictures is with die area 300 300
.JC
08/13/2023, 4:20 AMMitch Bailey
08/13/2023, 8:40 AMJC
08/13/2023, 2:20 PM./env.py issue -survey
in the readme.txt just in case.Mitch Bailey
08/14/2023, 6:22 AMlef write -tech -hide 100 -toplayer -pinonly 100
, I got 20 violations and shorts.
Looks like there’s not enough room to place met1 contacts to li1 on the left side. See attached diagram.
Also attaching the gds file and lef file that I used.
I copied the Makefile
from caravel_user_project/openlane
to caravel_user_project_analog/openlane
Moved the files around a bit and ran make blackbox_test_2
. All the changes should be in the attached tarball.
The results are in openlane/blackbox_test_2/runs/<timestamp>/results/routing/blackbox_test_2.odb
which you can view in openroad.
export UPRJ_ROOT=$PWD
cd $OPENROAD_ROOT
make mount
openroad -gui
The data will be located under user_project
.
You can load the drc database which is located at user_project/openlane/blackbox_test_2/runs/<timestamp>/reports/routing/drt.rpt
Mitch Bailey
08/14/2023, 6:32 AMJC
08/14/2023, 3:55 PMMitch Bailey
08/14/2023, 4:05 PMmake blackbox_test_2
from caravel_user_project_analog
not caravel_user_project_analog/openlane
.
That should set PDK_ROOT
, CARAVEL_ROOT
, OPENLANE_ROOT
and PDK
.JC
08/14/2023, 4:28 PMcaravel_user_project_analog
but looks like docker is having issues. Should I replace the makefile that's in ~/caravel_user_project_analog
with the make file thats in ~/caravel_user_project_analog/openlane
? The attached makefile belongs to ~/caravel_user_project_analog
edit: I have done similar setup to ~/OpenLane
and caravel_user_project
. Do I have to repeat the setup for the dependencies (caravel, volare, etc.), for caravel_user_project_analog?Mitch Bailey
08/14/2023, 4:52 PMcaravel_user_project_analog/Makefile
and caravel_user_project_analog/openlane/Makefile
are different files. Both are needed. If caravel_user_project_analog/openlane/Makefile
is missing, copy from caravel_user_project/openlane/Makefile
.
If you have CARAVEL_ROOT
, PDK_ROOT
, PDK
, OPENLANE_ROOT
and UPRJ_ROOT
defined, I don’t think you need to run make setup
again.JC
08/14/2023, 5:19 PMmake install
on the caravel_user_project_analog but stopped and uninstalled it. I've checked the caravel_user_project
's caravel folder is not empty but it looks like it's caravel lite that's installed. Is that the where I should point the CARAVEL_ROOT
to?Mitch Bailey
08/14/2023, 6:35 PMJC
08/14/2023, 6:47 PMmake blackbox_test_2
in the following image. The errors that comes with it I think has to do with the tools not up to dateJC
08/14/2023, 8:58 PMJC
08/14/2023, 9:50 PMMitch Bailey
08/14/2023, 11:09 PMmake openlane
in the caravel_user_project_analog
directory. This may delete and reinstall the OPENLANE_ROOT
directory, so be sure to backup any files that you may have modified there.JC
08/15/2023, 1:07 AMmake openlane
in caravel_user_project_analog and it seems to have pulled a pretty old version of it. The tested pdk doesn't look like to be listed on volare
WARNING]: OpenLane may not function properly: The version of open_pdks used in building the PDK does not match the version OpenLane was tested on (installed: 933e5f2b8e42c5ec25b83c6d242455ada6f3e926, tested: a56526bfe45971322526978132b059d43ddd3a02)
This may introduce some issues. You may want to re-install the PDK by invoking `make pdk`.
Mitch Bailey
08/15/2023, 2:13 AMcaravel_user_project/Makefile
. Just set these before make openlane
or `make pdk-with-volare`; there’s no need to modify the Makefile.
export OPEN_PDKS_COMMIT=78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc
export OPENLANE_TAG=2023.07.19
JC
08/15/2023, 3:34 AMmake blackbox_test_2
on caravel_user_project_analog got past the error by having done export OPENLANE_TAG=2023.07.19
. But the step 40 lvs reports the same issue. Would you mind checking it on your end? I have included the files in the attachment. I have a version that uses vccd1 and vssd1 pin names but that didn't make a difference.
edit: Does the width of the VDD and GND rails have to be same as the rails used for the decap6 ~ decap12?Mitch Bailey
08/15/2023, 7:11 AMMitch Bailey
08/15/2023, 8:35 AMlef write -tech -hide 200 -toplayer -pinonly 200
JC
08/15/2023, 11:36 AMlef write -tech -hide 100 -toplayer -pinonly 100
. As for the M3 pins, I drew the pins exactly the same size, length and place it on top of the M3 line.
My question for grid placement is, this is 1/16 of the sbox and the goal of doing blackbox_test
was to get familiarize with openlane's handling of macros. Would introducing 1 or 3 more, placing it in a 1x4 pattern or 2x2 pattern, be wise to try changing up the grid placement? Another thing I'm curious is, would the VDD line be better placed away from the circuit such as below the last row of GND?Tim Edwards
08/15/2023, 12:54 PM-hide <distance> -pinonly <distance>
options in all possible combinations. Generally, the lef write
options were created to solve specific problems and different options might interact in unexpected ways if nobody has tried that combination before. I'll take a look at it later today.JC
08/15/2023, 10:04 PMMitch Bailey
08/16/2023, 1:09 AMJC
08/16/2023, 1:57 AMJC
08/16/2023, 2:42 AMMitch Bailey
08/16/2023, 3:37 AM70/10
.JC
08/16/2023, 4:03 AMcaravel_user_project_analog
?
add_pdn_connect \
-grid macro \
-layers "Metal3 Metal4"
Mitch Bailey
08/16/2023, 4:25 AMKareem Farid
08/16/2023, 10:06 AMJC
08/16/2023, 11:46 AM"RT_MAX_LAYER":4
but I don't think that's the command. I got the following error [ERROR GRT-0056] In argument -clock_layers, min routing layer is greater than max routing layer.
as shown in the image. Under pdn_cfg.tcl thats
located in ~/OpenLane/scripts/openroad/common
is it possible to change the FP_PDN_VERTICAL_LAYER
and `FP_PDN_HORIZONTAL_LAYER`in line 128 using the config file? I don't see these 2 variables listed in the Flow Configuration Variables and PDK Configuration Variables of openlane documentation.Kareem Farid
08/16/2023, 11:48 AMpdn_cfg.tcl
and provide your own config file using FP_PDN_CFG
and add the necessary changes to itJC
08/16/2023, 12:18 PM-layers "Metal3 Metal4"
and also renamed a copy of pdn_cfg.tcl. The flow is complaining it can't find Metal3. The FP_PDN_CFG
seems to be successful in telling openlane where to go?JC
08/16/2023, 1:46 PMJC
08/16/2023, 6:50 PMif { $::env(DESIGN_IS_CORE) == 1 }
but I'm still getting the following error as shown in the image. Where is Metal3 and in extension Metal4 supposed to be defined?
add_pdn_connect \
-grid macro \
-layers "Metal3 Metal4"
Kareem Farid
08/16/2023, 7:08 PMJC
08/16/2023, 8:32 PMKareem Farid
08/17/2023, 10:04 AMJC
08/17/2023, 2:04 PMJC
08/20/2023, 7:50 PMPDN_VPITCH
. Openlane is able to connect the power rails now. Moving onto the next step, I want to connect the macro's ground to a GPIO pin while having floating VDD and GND. Openlane is able to connect the pins and the power rails but lvs error points to circuit 1 being the issue; not matching net. May I ask what configuration governs circuit 1 side of things?Mitch Bailey
08/20/2023, 9:18 PMsubcut
(81/53 in klayout, isosubstrate
in magic [2nd row, 1st column]).
The whole point of the dummy VDD pin was to allow the power grid router to connect to GND. If you don’t need to connect to VDD or GND, you may be able to skip FP_PDN_MACRO_HOOKS
. You’d need to define you’re rtl so that the macros do not connect to normal GND/VSS and probably need to modify (widen) the layout connections manually after post-processing.JC
08/20/2023, 10:14 PMMitch Bailey
08/21/2023, 12:19 AMsubcut
layer may be sufficient.JC
08/21/2023, 1:15 AMMitch Bailey
08/21/2023, 2:03 AMJC
08/21/2023, 2:39 AMMitch Bailey
08/21/2023, 3:11 AMWhat does it mean by physically separate the macro from other psub taps?The standard cell rows outside your macro have GND psub taps. If these are too close to your macro, they might affect your measurements. I don’t know what good having a grid of guard rings inside your macro will do.
JC
08/21/2023, 3:39 AMMitch Bailey
08/21/2023, 3:54 AMJC
08/21/2023, 4:06 AMMitch Bailey
08/21/2023, 4:13 AM42/20
tap 65/44
nsdm 93/44
just like your current nwells.JC
08/21/2023, 7:14 PMMitch Bailey
08/21/2023, 9:34 PMJC
08/21/2023, 10:06 PMTim Edwards
08/21/2023, 10:09 PMJC
08/21/2023, 10:13 PMMitch Bailey
08/21/2023, 10:30 PMJC
08/21/2023, 11:21 PMMitch Bailey
08/21/2023, 11:25 PMMitch Bailey
08/21/2023, 11:30 PMJC
08/22/2023, 3:55 AMJC
08/22/2023, 5:15 AMMitch Bailey
08/22/2023, 1:20 PMJC
08/22/2023, 1:34 PMMitch Bailey
08/22/2023, 1:35 PMIf I connect the CLK0 layers to its own dnwell, CLK1s to their own dnwell, that would avoid shorting them together, right?That is correct.
JC
08/24/2023, 8:24 PMMitch Bailey
08/24/2023, 11:02 PMJC
08/24/2023, 11:32 PMJC
08/24/2023, 11:56 PMMitch Bailey
08/25/2023, 12:46 AMWhen you say no holes for deep nwell, this means the dnwell go under the pmos, then make a ring of nwell + (nsdm + tap + li). Deep nwell is the bottom of a bucket, Nwell guard ring is the wall where 0.4um from inner dnwell, extend 1.03um from exterior dnwell. Using the single block level as a model, I can connect the first pmos guard ring to VDD, and then also the outer ntap + nwell guard ring to VDD.
So the strategy is: The pwell layer from klayout is redundant, so I can treat the layout process for the block levels as if it is a dual well process. On the macro level, I can put down deep nwell blanket across the whole macro, surround macro with ntap+nwell guard ring. VDD is dropped down to the pmos’s guard ring and also the nwell guard ring.That is correct.
Looking with magic, the nwell guard ring should be spaced out properly avoiding the psdm, correct? For the N-well overlap of Dnwell error, nwell should be 1.03 into dnwell, and 0.4um out of dnwell?Right, in the current layout, it looks like ptap overlaps the nwell guard ring surrounding the deep nwell. Also, your pmos gates might have better performance if you connected them at the bottom close to the contact instead on on the top so it looks like a
u
instead of an n
.JC
08/30/2023, 10:58 PMMitch Bailey
08/31/2023, 12:49 AMJC
08/31/2023, 2:10 AMMitch Bailey
08/31/2023, 3:15 AMJC
08/31/2023, 3:03 PMprboundary
layer, should I bring the other pins to the edge of that layer for OpenLane to discover the pins and route to it?Mitch Bailey
08/31/2023, 3:30 PMFP_PDN_MACRO_HOOK
does not require the power/ground voltages to be paired (ie, vdda1 with vssa1). Your macro needs GND_GPIO
, right? I don’t see the need for a dummy vssa1 in you macro.
I’m not sure about how independent vssa1 and vssa2 are.
I think the prboundary
is necessary for automatically creating lef and maybe placement. moving the pins to the boundary is one way to simplify, but it may not be necessary. standard cells route over and connect internally.JC
09/01/2023, 2:08 AMexport OPENLANE_TAG=2023.07.19
to the version you suggested. While running make pdk-with-volare
i'm getting permission error (image 2) but when I sudo it (image3), it fails as well. Would it be recommended to uninstall caravel or even reinstall caravel_user_project_analog?Mitch Bailey
09/01/2023, 3:28 AMmake pdk-with-volare
be sure to set PDK_ROOT
and PDK
.
My suggestion is to install everything with caravel_user_project
using make setup
(set OPENLANE_ROOT
and PDK_ROOT
to a directory outside the project).
Then you can clone caravel_user_project_analog
and work from there without rerunning make setup
. You may want to set some of the environment variables from the caravel_user_project/Makefile
instead of the current defaults of caravel_user_project_analog/Makefile
.JC
09/01/2023, 1:38 PMcaravel_user_project
deletes ~/OpenLane
... That's normal, correct? Also for the environment variables in caravel_user_project_analog/Makefile
, what am I supposed to target for change? For PDK_ROOT am I supposed to point it to ~/.volare
or the /usr/locals/share/pdk
?Mitch Bailey
09/01/2023, 3:19 PMmake setup
deletes $OPENLANE_ROOT
and $PDK_ROOT
.
You probably don’t have write permission to /usr/locals/share
so I wouldn’t use that.
If you have a ~/sky130 directory, maybe
export OPENLANE_ROOT=$HOME/sky130/Openlane
export PDK_ROOT=$HOME/sky130/pdks
export SKYWATER_COMMIT=f70d8ca46961ff92719d8870a18a076370b85f6c
export OPEN_PDKS_COMMIT=78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc
export OPENLANE_TAG=2023.07.19
would work well.JC
09/01/2023, 3:46 PMmake install
in caravel_user_project_analog
with caravel_lite=0
. The PDK_ROOT
and OPENLANE_ROOT
is pointed towards ~/.volare
and ~/Openlane
respectively. I have root access to /usr/
since this is my personal machine. For ~sky130 directory I don't have it made. I have obtained and installed the pdk via Open_PDK steps from opencircuitsdesign.com. Should I make a copy of /usr/locals/share/pdks/sky130A
into the home directory and set the OPENLANE_ROOT
and PDK_ROOT
to that copy? Or just make a folder named sky130 and have OPENLANE_ROOT
and PDK_ROOT
be linked there?
Edit: After make install
in caravel_user_project_analog
, and also replacing the makefile in ~/caravel_user_project_analog/openlane/
with makefile in /caravel_user_project/openlane/
, it got past step 1 yosys error.
Edit2: Currently stuck on step 24 where openlane can't find GND_gpio. Probably due to lef generation -hide covered too much. Will attempt a bigger -hide.JC
09/01/2023, 7:44 PMerror DRT-218 Guide not connected to design
. I've browsed the following page, https://github.com/The-OpenROAD-Project/OpenLane/issues/1958. I don't think I follow the what needs to be done at the moment. I'm currently using OPENLANE_TAG=2023.07.19
, and the project file is ran in caravel_user_project_analog
plus relevant files are included in the .zip file.
Edit: I tried moving all the pins to the macro boundary as drawn using prBoundary
but error persists.Mitch Bailey
09/01/2023, 11:09 PM~/.volare
. volare
is a system to download prebuilt versions of the pdk and may not be compatible with manual installation.
I suggest
mv ~/.volare ~/pdks.bak
mkdir $HOME/pdks
export PDK_ROOT=$HOME/pdks
export PDK=sky130A
make pdk-with-volare
Should only take a few minutes. If everything works, you can delete ~/pdks.bak
.
You’re OPENLANE_ROOT
is probably fine.
What commands are you using to create the lef from the gds? I see a GND_GPIO
pin on a pwel layer, which is not necessary.JC
09/01/2023, 11:15 PMlef write -tech -hide 400 -toplayer -pinonly 400
I will go ahead and try the pdk building... I do not have a $HOME/pdks
directory, but i have ~/open_pdks
downloaded. Do I point PDK_ROOT
to the sky130 folder that's in ~/open_pdks
?
Edit: Oh... I'm not reading the instructions correctly. I will go ahead and try the exports.JC
09/01/2023, 11:28 PMpdk-with-volare
brought the error to step one
(base) jchin2@short-simple:~/caravel_user_project_analog$ make blackbox_test_3
cd openlane && make blackbox_test_3
make[1]: Entering directory '/home/jchin2/caravel_user_project_analog/openlane'
# blackbox_test_3
mkdir -p ./blackbox_test_3/runs/23_09_01_19_24
rm -rf ./blackbox_test_3/runs/blackbox_test_3
ln -s $(realpath ./blackbox_test_3/runs/23_09_01_19_24) ./blackbox_test_3/runs/blackbox_test_3
docker run -it -u $(id -u $USER):$(id -g $USER) -v $(realpath /home/jchin2/caravel_user_project_analog/openlane/..):$(realpath /home/jchin2/caravel_user_project_analog/openlane/..) -v /home/jchin2/pdks:/home/jchin2/pdks -v /home/jchin2/caravel_user_project_analog/caravel:/home/jchin2/caravel_user_project_analog/caravel -v /home/jchin2/OpenLane:/openlane -e PDK_ROOT=/home/jchin2/pdks -e PDK=sky130A -e MISMATCHES_OK=1 -e CARAVEL_ROOT=/home/jchin2/caravel_user_project_analog/caravel -e OPENLANE_RUN_TAG=23_09_01_19_24 \
efabless/openlane:2023.07.19 sh -c "flow.tcl -design $(realpath ./blackbox_test_3) -save_path $(realpath ..) -save -tag 23_09_01_19_24 -overwrite -ignore_mismatches"
OpenLane d054702b2cce04761cc2bc598f6b95c9d8ca7c6c
All rights reserved. (c) 2020-2022 Efabless Corporation and contributors.
Available under the Apache License, version 2.0. See the LICENSE file for more details.
[WARNING]: OpenLane may not function properly: The version of open_pdks used in building the PDK does not match the version OpenLane was tested on (installed: e6f9c8876da77220403014b116761b0b2d79aab4, tested: 78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc)
This may introduce some issues. You may want to re-install the PDK by invoking `make pdk`.
[INFO]: Using configuration in '../home/jchin2/caravel_user_project_analog/openlane/blackbox_test_3/config.json'...
[INFO]: PDK Root: /home/jchin2/pdks
[INFO]: Process Design Kit: sky130A
[INFO]: Standard Cell Library: sky130_fd_sc_hd
[INFO]: Optimization Standard Cell Library: sky130_fd_sc_hd
[WARNING]: SYNTH_CAP_LOAD is now deprecated; use OUTPUT_CAP_LOAD instead.
[WARNING]: FP_PDN_RAILS_LAYER is now deprecated; use FP_PDN_RAIL_LAYER instead.
[WARNING]: FP_PDN_UPPER_LAYER is now deprecated; use FP_PDN_HORIZONTAL_LAYER instead.
[WARNING]: FP_PDN_LOWER_LAYER is now deprecated; use FP_PDN_VERTICAL_LAYER instead.
[INFO]: Run Directory: /home/jchin2/caravel_user_project_analog/openlane/blackbox_test_3/runs/23_09_01_19_24
[INFO]: Saving runtime environment...
[INFO]: Preparing LEF files for the nom corner...
[INFO]: Preparing LEF files for the min corner...
[INFO]: Preparing LEF files for the max corner...
[INFO]: Running linter (Verilator) (log: ../home/jchin2/caravel_user_project_analog/openlane/blackbox_test_3/runs/23_09_01_19_24/logs/synthesis/linter.log)...
[INFO]: 0 errors found by linter
[WARNING]: 9 warnings found by linter
[STEP 1]
[INFO]: Running Synthesis (log: ../home/jchin2/caravel_user_project_analog/openlane/blackbox_test_3/runs/23_09_01_19_24/logs/synthesis/1-synthesis.log)...
[ERROR]: during executing yosys script /openlane/scripts/yosys/synth.tcl
[ERROR]: Log: ../home/jchin2/caravel_user_project_analog/openlane/blackbox_test_3/runs/23_09_01_19_24/logs/synthesis/1-synthesis.log
[ERROR]: Last 10 lines:
Successfully finished Verilog frontend.
2. Executing Verilog-2005 frontend: /home/jchin2/caravel_user_project_analog/openlane/blackbox_test_3/../../verilog/bb/bitfour_EESPFAL.bb.v
Parsing SystemVerilog input from `/home/jchin2/caravel_user_project_analog/openlane/blackbox_test_3/../../verilog/bb/bitfour_EESPFAL.bb.v' to AST representation.
Generating RTLIL representation for module `\bitfour_EESPFAL'.
Successfully finished Verilog frontend.
3. Executing Verilog-2005 frontend: /home/jchin2/caravel_user_project_analog/openlane/blackbox_test_3/../../verilog/bb/bitfour_EESPFAL_switch.bb.v
ERROR: TCL interpreter returned an error: can't read "::env(MAX_FANOUT_CONSTRAINT)": no such variable
child process exited abnormally
[ERROR]: Creating issue reproducible...
[INFO]: Saving runtime environment...
OpenLane TCL Issue Packager
Mitch Bailey
09/02/2023, 12:03 AMMAX_FANOUT_CONSTRAINT
is present in my gf180mcu pdks but not the skywater ones (which may be old).
Just to be sure, what version of the pdk are you using?
echo $PDK_ROOT/$PDK
cat $PDK_ROOT/$PDK/SOURCES
JC
09/02/2023, 12:07 AM(base) jchin2@short-simple:~/caravel_user_project_analog$ echo $PDK_ROOT/$PDK
/home/jchin2/pdks/sky130A
(base) jchin2@short-simple:~/caravel_user_project_analog$ cat $PDK_ROOT/$PDK/SOURCES
open_pdks e6f9c8876da77220403014b116761b0b2d79aab4
(base) jchin2@short-simple:~/caravel_user_project_analog$
I think that's the default pdk version that's in the makefile ~/caravel_user_project_analog/Makefile
Mitch Bailey
09/02/2023, 1:00 AMcaravel_user_project_analog/Makefile
is out of date, but we can work around that.
We’ll use caravel_user_project/Makefile
to build the environment and then switch to caravel_user_project_analog
.
In a directory where you want to install everything (eg. $HOME/sky130
)
export OPENLANE_ROOT=$PWD/openlane_src
export PDK_ROOT=$PWD/pdks
export CARAVEL_ROOT=$PWD/caravel
git clone -b mpw-9d <https://github.com/efabless/caravel_user_project>
cd caravel_user_project
make setup
I forgot to mention the tag in the past. This should create everything in the OPENLANE_ROOT
, PDK_ROOT
, and CARAVEL_ROOT
directories.
cd ..
git clone -b mpw-9d <https://github.com/efabless/caravel_user_project_analog>
cd caravel_user_project_analog
rm openlane/Makefile
cp ../caravel_user_project/openlane/Makefile openlane/Makefile
You can either add these lines to your caravel_user_project_analog/Makefile
SKYWATER_COMMIT=f70d8ca46961ff92719d8870a18a076370b85f6c
export OPEN_PDKS_COMMIT?=78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc
export OPENLANE_TAG?=2023.07.19
or set these in any shell you use.
export SKYWATER_COMMIT=f70d8ca46961ff92719d8870a18a076370b85f6c
export OPEN_PDKS_COMMIT=78b7bc32ddb4b6f14f76883c2e2dc5b5de9d1cbc
export OPENLANE_TAG=2023.07.19
JC
09/02/2023, 1:09 AMJC
09/02/2023, 1:57 PM~/sky130/caravel_user_project_analog
, do I run make openlane
and make pdk-with-volare
in that sequence within caravel_user_project_analog directory? Or I just need to run make openlane
only?Mitch Bailey
09/02/2023, 2:49 PMmake setup
in the caravel_user_project
directory, there should be no need to run make openlane
or make pdk-with-volare
.
You can try
ls $OPENLANE_ROOT
ls $PDK_ROOT/$PDK
ls $CARAVEL_ROOT
to make sure everything is installed.Mitch Bailey
09/02/2023, 2:51 PMcaravel_user_project_analog/openlane/Makefile
and not caravel_user_project_analog/Makefile
.JC
09/02/2023, 3:06 PMcaravel_user_project_analog/openlane/Makefile
. Make blackbox_test_3
doesn't run.Mitch Bailey
09/02/2023, 3:25 PMls openlane/blackblox_test_3
maybe you meant blackbox_test_3
? 😉Mitch Bailey
09/02/2023, 3:29 PM-toplayer
when creating the lef file seems to create pins on the uppermost layers, ignoring the explicit pins on the lower layers. Maybe try creating the lef without this option.JC
09/02/2023, 3:35 PMlef write bitfour_EESPFAL_switch -tech -hide 400 -pinonly 400
and the error persists. I tried moving GND_GPIO in and out of prboundary but still have the same error.JC
09/02/2023, 3:39 PMFP_PDN_MACRO_HOOKS
, VDD_NETS
, and GND_NETS
from the config file?
"VDD_NETS":"vdda1",
"GND_NETS":"vssa1",
"SYNTH_USE_PG_PINS_DEFINES": "USE_POWER_PINS",
"ROUTING_CORES": 4,
"FP_PDN_AUTO_ADJUST": 1,
"FP_PDN_MACRO_HOOKS": "lane0 vdda1 vssa1 vdda1 vssa1",
"FP_PDN_CHECK_NODES": 1,
Mitch Bailey
09/02/2023, 4:22 PMFP_PDN_MACRO_HOOKS
at all and connect everything manually. You might need to set QUIT_ON_LVS_ERROR
to 0
.
I was assuming you’d use
"FP_PDN_MACRO_HOOKS": "lane0 vdda1 vssa1 vdda1 GND_GPIO",
Going afk for awhile.JC
09/02/2023, 4:43 PMJC
09/02/2023, 10:32 PMMitch Bailey
09/03/2023, 11:21 AMFP_PDN_CORE_RING
to 0
, do you complete without errors?JC
09/03/2023, 12:26 PMJC
09/03/2023, 1:20 PMMitch Bailey
09/03/2023, 4:21 PMexample
)
git clone <https://github.com/RTimothyEdwards/netgen>
cd netgen
./configure --prefix=$HOME/local
make
make install
This will install in $HOME/local/bin
so you may need to modify your path.
To change the version within docker, if OPENLANE_ROOT
is set
cd $OPENLANE_ROOT
export OPENLANE_IMAGE_NAME=efabless/current-local
vi dependencies/tool_metadata.yml
(change the commits of the programs you want to update)
cd docker
make openlane
You’ll need to set OPENLANE_IMAGE_NAME
in every new shell window.JC
09/03/2023, 11:15 PMMitch Bailey
09/04/2023, 1:47 AMdocker images | grep local
return? Looks like the image name is slightly different than what is expected. It’s been a while since I had to update the docker, so something may have changed.JC
09/04/2023, 1:49 AMMitch Bailey
09/04/2023, 1:56 AMexport OPENLANE_IMAGE_NAME=efabless/current-local-amd64
would work now. (Don’t rebuild the docker image. Just try to run openlane. Sorry, I’m not more help.)JC
09/04/2023, 2:00 AMmake blackbox_test_3
is running again! But the error DRT-0218: Guide not connected to design
still continues... Would you know of who I can bounce this issue off to?Mitch Bailey
09/04/2023, 2:28 AMbitfour_EESPFAL_switch lane0 (
`ifdef USE_POWER_PINS
.vdda1(vdda1),
.vssa1(GND_GPIO_top), //Floating GND pin to trick OpenLane
`endif
but module bitfour_EESPFAL_switch
has no vssa1
port.
module bitfour_EESPFAL_switch (
`ifdef USE_POWER_PINS
inout wire vdda1,
inout wire GND_GPIO,
`endif
JC
09/04/2023, 2:40 AMMitch Bailey
09/04/2023, 2:42 AMJC
09/04/2023, 3:10 AMJC
09/04/2023, 3:36 AMMitch Bailey
09/04/2023, 5:21 AMJC
09/04/2023, 10:26 AMJC
09/04/2023, 11:22 AMMitch Bailey
09/04/2023, 11:59 AMCLK[0]
or is it some other pin? The metal2 Dis_Phase
looks really small and may miss the guide.JC
09/04/2023, 12:06 PMMitch Bailey
09/04/2023, 1:28 PMclk_top[0]
pin is clear on the top right with a lot of other pins between it and the CLK[0]
macro port. export UPRJ_ROOT=$PWD
cd $OPENLANE_ROOT
make mount
openroad -gui
and then choose File
-> Open DB
and choose user_project/openlane/blackbox_test_3/runs/<time_stamp>/tmp/routing/17-fill.odb
(edit)
The above requires a patch to $OPENLANE_ROOT/Makefile
ENV_START = docker run --rm\
-v $(OPENLANE_DIR):/openlane\
-v $(OPENLANE_DIR)/designs:/openlane/install\
+ -v $(UPRJ_ROOT):/openlane/user_project\
$(PDK_OPTS)\
$(STD_CELL_OPTS)\
$(DOCKER_OPTIONS)
JC
09/04/2023, 1:47 PMmake mount
from openlane_src, and docker is not happy. I accessed openroad -gui from the original OpenLane directory and the image is as shown.JC
09/04/2023, 1:55 PMJC
09/04/2023, 2:16 PMFP_IO_MODE=0
but no luckJC
09/04/2023, 7:40 PMFP_PDN_MACRO_HOOKS
to have vdda1 and GND_GPIO pin as power pins for this flow to work.
Leaving steps here for adjusting origins: In klayout I set the top cell origin via Edit > Cell > Adjust Origin. As for the subcells, they are set by show as new top > highlight all the cells > Edit > Selection > Make Cell > choose origin and name to replace.
The next thing that is of concern is assignment of vdda1 and GND_GPIO. Since I want to tie GND_GPIO to its own GPIO pin and vdda1 target is at 1.8V, I can potentially lose FP_PDN_MACRO_HOOKS
and have them exist as pins and not power rails?Mitch Bailey
09/05/2023, 1:55 PMFP_PFN_MACRO_HOOKS
and connect the power rails later manually. I don’t know if it will complain about unconnected signals or not.JC
09/05/2023, 3:21 PMifdef USE_POWER_PINS
from the top verilog and blackboxed verilog and omit FP_PDN_MACRO_HOOKS
.
edit: Ah, nevermind. I don't have to remove the ifdef endif
block nor the VDD_NETS and GND_NETS
. Just the FP_PDN_MACRO_HOOKS
.JC
09/05/2023, 5:27 PM"QUIT_ON_LVS_ERROR": 0,
in the config file.
Edit: Figured out why. One of the Dis{] pin layer got "squished"JC
09/05/2023, 8:24 PMRUN_TAP_DECAP_INSERTION
and RUN_FILL_INSERTION
. The flow fails at step 22. Where in the log should I look for errors like this?Mitch Bailey
09/05/2023, 11:06 PMresults/routing/blackbox_test_4.odb
?JC
09/05/2023, 11:13 PMMitch Bailey
09/06/2023, 12:04 AMWindows
-> DRC viewer
in the gui? The right hand pane should have a new DRC Viewer
tab. Open that tab to see where the violations are.JC
09/06/2023, 2:21 AMRUN_TAP_DECAP_INSERTION
and RUN_FILL_INSERTION
doesn't need to be there and its using up space.Mitch Bailey
09/06/2023, 2:48 AMreports/routing/drt.drc
Mitch Bailey
09/06/2023, 2:53 AMJC
09/06/2023, 3:28 AMMitch Bailey
09/06/2023, 3:34 AMJC
09/06/2023, 4:39 AMRUN_TAP_DECAP_INSERTION
and RUN_FILL_INSERTION
enabled and then reduce the size accordinglyMitch Bailey
09/06/2023, 4:54 AMJC
09/06/2023, 2:12 PM