vks
11/04/2023, 8:09 AMMitch Bailey
11/04/2023, 8:45 AMcaravel_user_project/Makefile
.
Something like this might work for just the klayout feol and beol.
run-precheck-drc: check-pdk check-precheck
$(eval INPUT_DIRECTORY := $(shell pwd)) \
cd $(PRECHECK_ROOT) && \
docker run -it -v $(PRECHECK_ROOT):$(PRECHECK_ROOT) \
-v $(INPUT_DIRECTORY):$(INPUT_DIRECTORY) \
-v $(PDK_ROOT):$(PDK_ROOT) \
-e INPUT_DIRECTORY=$(INPUT_DIRECTORY) \
-e PDK_PATH=$(PDK_ROOT)/$(PDK) \
-e PDK_ROOT=$(PDK_ROOT) \
-e PDKPATH=$(PDKPATH) \
-u $(shell id -u $(USER)):$(shell id -g $(USER)) \
efabless/mpw_precheck:latest bash -c "cd $(PRECHECK_ROOT) ; python3 mpw_precheck.py --input_directory $(INPUT_DIRECTORY) --pdk_path $(PDK_ROOT)/$(PDK) klayout_feol klayout_beol";
vks
11/04/2023, 8:50 AMMitch Bailey
11/04/2023, 9:28 AMvks
11/04/2023, 9:38 AMuser_project_analog_wrapper
layout and schematic is matching uniquely with only propoerty errors (which is fine with my design). But during local precheck getting LVS error. Please suggest what could be the issue.Mitch Bailey
11/04/2023, 10:39 AMprecheck_results/<tag>/tmp/ext.log
file?Mitch Bailey
11/04/2023, 10:52 AMOpen PDKs: fa9f29b3e054560cb0e5d7c94dc258dd56f413ce
but I can’t find that anywhere. Have you modified the pdk locally? Can you try with the default pdk?vks
11/04/2023, 12:31 PMext.log
file is attached. I haven't modified pdk locally. How to try with default pdk now ?Mitch Bailey
11/04/2023, 1:14 PM$ echo $OPEN_PDKS_COMMIT
$ grep Makefile OPEN_PDKS_COMMIT
vks
11/04/2023, 2:01 PMMitch Bailey
11/04/2023, 2:15 PMgrep OPEN_PDKS_COMMIT Makefile
vks
11/04/2023, 2:16 PMMitch Bailey
11/04/2023, 2:30 PMLVS_SPICE_FILES_TO_FIX
variable and move your top level spice netlist to there?
If you share your lvs_config.json
file after you make the change, I can check it.vks
11/04/2023, 2:37 PMlvs_config.json
file as per your suggestionvks
11/04/2023, 3:28 PMlvs_config.json
but LVS error is still there in local precheck.Mitch Bailey
11/04/2023, 3:50 PMLVS_check.log
and precheck_results/<tag>/tmp/lvs.report
?vks
11/04/2023, 4:10 PMMitch Bailey
11/04/2023, 4:36 PMio_metal_patch_array_16x16
to EXTRACT_ABSTRACT
? I’m guessing that this has no metal connections to the external circuit. This is causing a problem in the soft connection check.Mitch Bailey
11/04/2023, 5:05 PM$PRECHECK_ROOT/checks/be_checks/tech/
($PRECHECK_ROOT
defaults to $HOME/mpw_precheck
).
==> sky130A/cvc.models <==
MN nfet_01v8 Vth=0.2 Vgs=1.8 Vds=1.8
MP pfet_01v8_hvt Vth=-0.2 Vgs=1.8 Vds=1.8
R short model=switch_on
D sky130_fd_pr__diode_pw2nd_05v5
D sky130_fd_pr__diode_pw2nd_11v0
D sky130_fd_pr__diode_pw2nd_05v5_lvt
D sky130_fd_pr__diode_pw2nd_05v5_nvt
D sky130_fd_pr__diode_pd2nw_05v5
D sky130_fd_pr__diode_pd2nw_05v5_lvt
D sky130_fd_pr__diode_pd2nw_11v0
D sky130_fd_pr__model__parasitic__diode_ps2dn
D sky130_fd_pr__model__parasitic__diode_ps2nw
D sky130_fd_pr__model__parasitic__diode_pw2dn
D condiode
#R sky130_fd_pr__res_generic_m1 R=l/w*0.125
#R sky130_fd_pr__res_generic_m2 R=l/w*0.125
#R sky130_fd_pr__res_generic_m3 R=l/w*0.047
#R sky130_fd_pr__res_generic_m4 R=l/w*0.047
#R sky130_fd_pr__res_generic_nd R=l/w*0.029
R sky130_fd_pr__res_generic_l1 model=switch_on
R sky130_fd_pr__res_generic_m1 model=switch_on
R sky130_fd_pr__res_generic_m2 model=switch_on
R sky130_fd_pr__res_generic_m3 model=switch_on
R sky130_fd_pr__res_generic_m4 model=switch_on
R sky130_fd_pr__res_generic_m5 model=switch_on
R sky130_fd_pr__res_generic_nd R=l/w*120
R sky130_fd_pr__res_generic_pd R=l/w*197
R sky130_fd_pr__res_generic_nd__hv R=l/w*114
R sky130_fd_pr__res_generic_pd__hv R=l/w*191
R sky130_fd_pr__res_generic_po R=l/w*48
R sky130_fd_pr__res_xhigh_po R=l/w*2000
R sky130_fd_pr__res_xhigh_po_0p35 R=l/0.35*2000
R sky130_fd_pr__res_xhigh_po_0p69 R=l/0.69*2000
R sky130_fd_pr__res_xhigh_po_1p41 R=l/1.42*2000
R sky130_fd_pr__res_xhigh_po_2p86 R=l/2.86*2000
R sky130_fd_pr__res_xhigh_po_5p73 R=l/5.72*2000
R sky130_fd_pr__res_high_po R=l/w*300
R sky130_fd_pr__res_high_po_0p35 R=l/0.35*300
R sky130_fd_pr__res_high_po_0p69 R=l/0.69*300
R sky130_fd_pr__res_high_po_1p41 R=l/1.42*300
R sky130_fd_pr__res_high_po_2p86 R=l/2.86*300
R sky130_fd_pr__res_high_po_5p73 R=l/5.72*300
R sky130_fd_pr__res_iso_pw R=l/w*4400
MN sky130_fd_pr__nfet_01v8 Vth=0.2 Vgs=1.8 Vds=1.8
MN sky130_fd_pr__nfet_01v8_lvt Vth=0.1 Vgs=1.8 Vds=1.8
MN sky130_fd_pr__special_nfet_latch Vth=0.2 Vgs=1.8 Vds=1.8
MN sky130_fd_pr__special_nfet_pass Vth=0.2 Vgs=1.8 Vds=1.8
MN sky130_fd_pr__nfet_03v3_nvt Vth=0.2 Vgs=3.3 Vds=3.3
MN sky130_fd_pr__esd_nfet_g5v0d10v5 Vth=0.2
MN sky130_fd_pr__nfet_05v0_nvt Vth=0.2
MN sky130_fd_pr__nfet_g5v0d10v5 Vth=0.2
MN sky130_fd_bs_flash__special_sonosfet_star Vth=0.2
MP sky130_fd_pr__pfet_01v8 Vth=-0.2 Vgs=1.8 Vds=1.8
MP sky130_fd_pr__pfet_01v8_lvt Vth=-0.1 Vgs=1.8 Vds=1.8
MP sky130_fd_pr__pfet_01v8_hvt Vth=-0.3 Vgs=1.8 Vds=1.8
MP sky130_fd_pr__special_pfet_pass Vth=-0.2 Vgs=1.8 Vds=1.8
MP sky130_fd_pr__special_pfet_latch Vth=-0.2 Vgs=1.8 Vds=1.8
MP sky130_fd_pr__pfet_g5v0d10v5 Vth=-0.2
C sky130_fd_pr__cap_mim_m3_1
C sky130_fd_pr__cap_mim_m3_2
C sky130_fd_pr__cap_var
C sky130_fd_pr__cap_var_lvt
Q sky130_fd_pr__pnp_05v5
Q sky130_fd_pr__pnp_05v5_W0p68L0p68
Q sky130_fd_pr__pnp_05v5_W3p40L3p40
Q sky130_fd_pr__npn_11v0
Q sky130_fd_pr__npn_11v0_W1p00L1p00
==> sky130A/fix_spice <==
#! /bin/bash
sed -<http://i.org|i.org> -e 's/sky130_fd_pr__pnp_05v5_W3p40L3p40/sky130_fd_pr__pnp_05v5 W=3.40 L=3.40/' \
-e 's/sky130_fd_pr__pnp_05v5_W0p68L0p68/sky130_fd_pr__pnp_05v5 area=3.25/' \
-e 's/sky130_fd_pr__res_high_po_0p35/sky130_fd_pr__res_high_po W=0.35/' \
-e 's/sky130_fd_pr__res_high_po_0p69/sky130_fd_pr__res_high_po W=0.69/' \
-e 's/sky130_fd_pr__res_high_po_1p41/sky130_fd_pr__res_high_po W=1.41/' \
-e 's/sky130_fd_pr__res_high_po_2p85/sky130_fd_pr__res_high_po W=2.85/' \
-e 's/sky130_fd_pr__res_high_po_5p73/sky130_fd_pr__res_high_po W=5p73/' \
-e 's/sky130_fd_pr__res_xhigh_po_0p35/sky130_fd_pr__res_xhigh_po W=0.35/' \
-e 's/sky130_fd_pr__res_xhigh_po_0p69/sky130_fd_pr__res_xhigh_po W=0.69/' \
-e 's/sky130_fd_pr__res_xhigh_po_1p41/sky130_fd_pr__res_xhigh_po W=1.41/' \
-e 's/sky130_fd_pr__res_xhigh_po_2p85/sky130_fd_pr__res_xhigh_po W=2.85/' \
-e 's/sky130_fd_pr__res_xhigh_po_5p73/sky130_fd_pr__res_xhigh_po W=5.73/' $*
==> sky130A/remove_well.sed <==
s/[^ ]* \(sky130_fd_pr__.fet\)/\1/
s/[^ ]* \(sky130_fd_pr__special_.fet\)/\1/
s/[^ ]* \(sky130_fd_pr__esd_.fet\)/\1/
s/[^ ]* \(sky130_fd_pr__res_high_po\)/\1/
s/[^ ]* \(sky130_fd_pr__res_xhigh_po\)/\1/
s/[^ ]* \(sky130_fd_pr__res_generic_nd\)/\1/
s/[^ ]* \(sky130_fd_pr__res_generic_pd\)/\1/
s/[^ ]* \(sky130_fd_pr__res_iso_pw\)/\1/
s/[^ ]* \(sky130_fd_pr__cap_var_lvt\)/\1/
s/[^ ]* \(sky130_fd_bs_flash__special_sonosfet_star\)/\1/
s/[^ ]* \(ppolyf_u_1k_6p0\)/\1/
s/[^ ]* \(ppolyf_u\)/\1/
s/[^ ]* \(.fet_06v0\)/\1/
/^D.* sky130_fd_pr__diode_pd2nw_/d
/^D.* sky130_fd_pr__diode_pw2nd_/d
/^D.* diode_pd2nw_06v0/d
/^D.* diode_nd2ps_06v0/d
/^D.* np_6p0/d
/^D.* pn_6p0/d
/^X.* sky130_fd_pr__pnp_05v5/d
And then let me know if there are any more problems in precheck?vks
11/05/2023, 7:26 AMprecheck.log
and new OEB error is also added. Attaching logs zip folder for reference.
Since LVS of my user_project_analog_wrapper
is clearing in standalone netgen run with only property errors and LVS is not checked in online precheck submission , Can I go ahead with submitting current design as such? Submission deadline is approaching.vks
11/05/2023, 7:27 AMvks
11/05/2023, 7:29 AMMitch Bailey
11/05/2023, 11:58 AM2023-11-05 06:19:35 - [ERROR] - <class 'json.decoder.JSONDecodeError'>
2023-11-05 06:19:35 - [ERROR] - ("Expecting ',' delimiter: line 11 column 17 (char 318)",)
2023-11-05 06:19:35 - [ERROR] - Error with file /home/vks/ssp_testchip/lvs/user_analog_project_wrapper/lvs_config.json
You probably want to add a ,
after tapvpwrvgnd
,
"EXTRACT_ABSTRACT": [
"*__fill_*",
"*__fakediode_*",
"*__tapvpwrvgnd_*",
"io_metal_patch_array_16x16"
],
vks
11/05/2023, 3:27 PMMitch Bailey
11/05/2023, 3:29 PMprecheck_results/05_NOV_2023___12_30_58/logs/OEB_check.log
precheck_results/05_NOV_2023___12_30_58/logs/LVS_check.log
precheck_results/05_NOV_2023___12_30_58/tmp/lvs.report
vks
11/05/2023, 3:33 PMMitch Bailey
11/05/2023, 4:05 PMlvs/user_analog_project_wrapper/lvs_config.json
file?
"LVS_SPICE_FILES_TO_FIX": [
"$UPRJ_ROOT/xschem/user_analog_project_wrapper.spice"
],
Mitch Bailey
11/05/2023, 4:21 PMprecheck_results/<tag>/tmp/cvc.errors.gz
? Analog designs generally have false errors, but I’d like to check to be sure.vks
11/05/2023, 4:43 PMlvs_config.json
. File is also attached.
`cvc.error`also shared.Mitch Bailey
11/05/2023, 4:54 PM* Tri-state input
/Xring_osc_0(ring_osc)/Xdivx32_0(divx32)/Xfreq_div_1(freq_div)/Xinverter_fd_3(inverter_fd)
/Xring_osc_0(ring_osc)/Xdivx32_0(divx32)/Xfreq_div_0(freq_div)/Xinverter_fd_2(inverter_fd)
/Xring_osc_0(ring_osc)/Xdivx32_0(divx32)/Xfreq_div_0(freq_div)/Xinverter_fd_1(inverter_fd)
Mitch Bailey
11/05/2023, 5:01 PMLVS_check.log
along with precheck_results/<tag>/tmp/lvs.script
?
Looks like there are some intentionally shorted ports in the ring_osc
layout.
Can you put that cell in the LVS_FLATTEN
lvs_config variable?vks
11/05/2023, 5:06 PMring_osc
is taken as macro in my design. I have used it in my design and only made layout connections to its pins.
I have put it in LVS_FLATTTEN
and started precheck run. Will update about its output.Mitch Bailey
11/05/2023, 5:17 PMdiff xschem/user_analog_project_wrapper.spice precheck_results/<tag>/spice_files/user_analog_project_wrapper.spice
vks
11/06/2023, 12:07 AMspice_files
folder in precheck_results/<tag>/
:
precheck_results/<tag>/spice_files/user_analog_project_wrapper.spice
Mitch Bailey
11/06/2023, 12:11 AMdiff xschem/user_analog_project_wrapper.spice precheck_results/<tag>/tmp/spice_files/user_analog_project_wrapper.spice
vks
11/06/2023, 6:16 AMspice_files
inside tmp
folder. spice_files
is a text file containing path to precheck_results/05_NOV_2023___12_30_58/tmp/spice_fix/user_analog_project_wrapper.spice
.
I ran following command: diff xschem/user_analog_project_wrapper.spice precheck_results/05_NOV_2023___12_30_58/tmp/spice_fix/user_analog_project_wrapper.spice
and there is no output for this command.Mitch Bailey
11/06/2023, 10:51 AMls -l $HOME/mpw_precheck/checks/be_checks/tech/sky130A/fix_spice
and make sure that it’s executable?vks
11/06/2023, 10:53 AMvks
11/06/2023, 10:53 AMMitch Bailey
11/06/2023, 11:06 AMMitch Bailey
11/06/2023, 11:07 AMMitch Bailey
11/06/2023, 2:30 PMexport MPW_TAG=mpw-9f
make precheck
make run-precheck
vks
11/06/2023, 3:20 PMmake precheck
. Please suggest.Mitch Bailey
11/06/2023, 4:20 PMmv $HOME/mpw_precheck $HOME/mpw_precheck.bak
and try again?Mitch Bailey
11/07/2023, 3:54 AMcaravel_user_project
tag. The updated repo has Makefile
changes. I think the recommended way is to clone a new repo and start over but maybe this way will work, too.
1. Check for and delete any relevant variables.
env | grep TAG
env | grep COMMIT
env | grep ROOT
I think you should delete any TAG
and COMMIT
variables. (unset <variable>
).
Check that the ROOT
variables are what you expect. CARAVEL_ROOT,
PRECHECK_ROOT
, PDK_ROOT
, MCW_ROOT
directories will be deleted and recloned with the new tag. If you have made changes, they will be lost.
2. From your project directory, clone the newly tagged caravel_user_project
to a new directory and copy the Makefile
.
git clone -b <new_tag> <https://github.com/efabless/caravel_user_project> --depth=1 $HOME/cup-<new_tag>
cp $HOME/cup-<new_tap>/Makefile .
You could use diff to see if any other files have changed and take appropriate action. (you can ignore the .git
changes)
diff -r . $HOME/cup-<new_tag> | less
Once you’ve checked the files, you can probably delete the newly cloned directory (rm -rf $HOME/cup-<new_tag>
)
3. make setup
vks
11/07/2023, 10:18 AMuser_analog_project_wrapper.gds
was clearing but was failing in local precheck. Was it due to some issue with precheck files, if yes what should I do now ?
There were few changes made in my setup and lvs_config.json
file . Do they need to be reverted back?vks
11/07/2023, 10:19 AMMitch Bailey
11/07/2023, 10:23 AMLVS_SPICE_FILES
. I don’t think LVS_SPICE_FILES_TO_FIX
is needed.
The other changes may still be needed to pass LVS locally and for platform OEB check if that’s failing.vks
11/07/2023, 11:32 AMMitch Bailey
11/07/2023, 12:00 PMvks
11/07/2023, 12:06 PMLVS_SPICE_FILES
in lvs_config.json
file.
2. Put back default files in $PRECHECK_ROOT
folder
3. run make run-precheck
vks
11/08/2023, 4:13 PMOEB, LVS
errors from this precheck run. Any suggestions on these errors?Mitch Bailey
11/10/2023, 12:34 AM2023-11-08 15:10:48 - [ERROR] - <class 'json.decoder.JSONDecodeError'>
2023-11-08 15:10:48 - [ERROR] - ('Expecting value: line 12 column 9 (char 357)',)
2023-11-08 15:10:48 - [ERROR] - Error with file /home/vks/ssp_testchip/lvs/user_analog_project_wrapper/lvs_config.json
Try removing the ,
after "io_metal_patch_array_16x16"
.
"EXTRACT_ABSTRACT": [
"*__fill_*",
"*__fakediode_*",
"*__tapvpwrvgnd_*",
"io_metal_patch_array_16x16",
],
This io_metal_path_array_16x16
is an inert circuit, right? It’s not connected to anything, is it?