merging implant changes
diff --git a/.idea/skywater130.iml b/.idea/skywater130.iml index c646a1f..4c55d75 100644 --- a/.idea/skywater130.iml +++ b/.idea/skywater130.iml
@@ -1,25 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- -Copyright 2019-2021 SkyWater PDK Authors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -This code is *alternatively* available under a BSD-3-Clause license, see -details in the README.md at the top level and the license text at -https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative - -SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 ---> <module type="PYTHON_MODULE" version="4"> <component name="NewModuleRootManager"> <content url="file://$MODULE_DIR$">
diff --git a/OA/BAG_prim/.oalib b/OA/BAG_prim/.oalib index 0859910..21ffef8 100644 --- a/OA/BAG_prim/.oalib +++ b/OA/BAG_prim/.oalib
@@ -1,25 +1,5 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -Copyright 2019-2021 SkyWater PDK Authors +<?xml version="1.0"?> -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -This code is *alternatively* available under a BSD-3-Clause license, see -details in the README.md at the top level and the license text at -https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative - -SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 ---> <Library DMSystem="oaDMFileSys"> <oaDMFileSys libReadOnly="No" origFileSystem="Unix"/>
diff --git a/OA/BAG_prim/cdsinfo.tag b/OA/BAG_prim/cdsinfo.tag index 4b46185..b75aa95 100644 --- a/OA/BAG_prim/cdsinfo.tag +++ b/OA/BAG_prim/cdsinfo.tag
@@ -1,22 +1,11 @@ -# Copyright 2019-2021 SkyWater PDK Authors # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# This is a cdsinfo.tag file. # -# https://www.apache.org/licenses/LICENSE-2.0 +# See the "Cadence Application Infrastructure Reference Manual" for +# details on the format of this file, its semantics, and its use. # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# This code is *alternatively* available under a BSD-3-Clause license, see -# details in the README.md at the top level and the license text at -# https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -# -# SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 +# The `#' character denotes a comment. Removing the leading `#' +# character from any of the entries below will activate them. # # CDSLIBRARY entry - add this entry if the directory containing # this cdsinfo.tag file is the root of a Cadence library. @@ -46,6 +35,7 @@ # use and behaviour of these entries when appropriate. # # Current Settings: +# CDSLIBRARY DMTYPE none NAMESPACE LibraryUnix
diff --git a/OA/BAG_prim/nmos4_hv/schematic/thumbnail_128x128.png b/OA/BAG_prim/nmos4_hv/schematic/thumbnail_128x128.png index 601157b..1d46566 100644 --- a/OA/BAG_prim/nmos4_hv/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_hv/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_hv/symbol/thumbnail_128x128.png b/OA/BAG_prim/nmos4_hv/symbol/thumbnail_128x128.png index 8cb67e4..7c02f60 100644 --- a/OA/BAG_prim/nmos4_hv/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_hv/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_hvesd/schematic/thumbnail_128x128.png b/OA/BAG_prim/nmos4_hvesd/schematic/thumbnail_128x128.png index 591c6b8..313567e 100644 --- a/OA/BAG_prim/nmos4_hvesd/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_hvesd/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_hvesd/symbol/thumbnail_128x128.png b/OA/BAG_prim/nmos4_hvesd/symbol/thumbnail_128x128.png index 8cb67e4..7c02f60 100644 --- a/OA/BAG_prim/nmos4_hvesd/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_hvesd/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_lvt/schematic/thumbnail_128x128.png b/OA/BAG_prim/nmos4_lvt/schematic/thumbnail_128x128.png index ee192cb..fc6a857 100644 --- a/OA/BAG_prim/nmos4_lvt/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_lvt/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_lvt/symbol/thumbnail_128x128.png b/OA/BAG_prim/nmos4_lvt/symbol/thumbnail_128x128.png index 8cb67e4..7c02f60 100644 --- a/OA/BAG_prim/nmos4_lvt/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_lvt/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_standard/schematic/thumbnail_128x128.png b/OA/BAG_prim/nmos4_standard/schematic/thumbnail_128x128.png index ee192cb..fc6a857 100644 --- a/OA/BAG_prim/nmos4_standard/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_standard/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_standard/symbol/thumbnail_128x128.png b/OA/BAG_prim/nmos4_standard/symbol/thumbnail_128x128.png index 8cb67e4..7c02f60 100644 --- a/OA/BAG_prim/nmos4_standard/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_standard/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_svt/schematic/thumbnail_128x128.png b/OA/BAG_prim/nmos4_svt/schematic/thumbnail_128x128.png index ee192cb..fc6a857 100644 --- a/OA/BAG_prim/nmos4_svt/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_svt/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/nmos4_svt/symbol/thumbnail_128x128.png b/OA/BAG_prim/nmos4_svt/symbol/thumbnail_128x128.png index 8cb67e4..7c02f60 100644 --- a/OA/BAG_prim/nmos4_svt/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/nmos4_svt/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_hv/schematic/thumbnail_128x128.png b/OA/BAG_prim/pmos4_hv/schematic/thumbnail_128x128.png index c04b5b1..e5b4335 100644 --- a/OA/BAG_prim/pmos4_hv/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_hv/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_hv/symbol/thumbnail_128x128.png b/OA/BAG_prim/pmos4_hv/symbol/thumbnail_128x128.png index 2a160dc..d44f020 100644 --- a/OA/BAG_prim/pmos4_hv/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_hv/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_hvesd/schematic/thumbnail_128x128.png b/OA/BAG_prim/pmos4_hvesd/schematic/thumbnail_128x128.png index 2058778..7e0aa55 100644 --- a/OA/BAG_prim/pmos4_hvesd/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_hvesd/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_hvesd/symbol/thumbnail_128x128.png b/OA/BAG_prim/pmos4_hvesd/symbol/thumbnail_128x128.png index 2a160dc..d44f020 100644 --- a/OA/BAG_prim/pmos4_hvesd/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_hvesd/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_hvt/schematic/thumbnail_128x128.png b/OA/BAG_prim/pmos4_hvt/schematic/thumbnail_128x128.png index 60476ed..90982fd 100644 --- a/OA/BAG_prim/pmos4_hvt/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_hvt/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_hvt/symbol/thumbnail_128x128.png b/OA/BAG_prim/pmos4_hvt/symbol/thumbnail_128x128.png index 2a160dc..d44f020 100644 --- a/OA/BAG_prim/pmos4_hvt/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_hvt/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_lvt/schematic/thumbnail_128x128.png b/OA/BAG_prim/pmos4_lvt/schematic/thumbnail_128x128.png index f4f08ae..18ef0a2 100644 --- a/OA/BAG_prim/pmos4_lvt/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_lvt/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_lvt/symbol/thumbnail_128x128.png b/OA/BAG_prim/pmos4_lvt/symbol/thumbnail_128x128.png index 2a160dc..d44f020 100644 --- a/OA/BAG_prim/pmos4_lvt/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_lvt/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_standard/schematic/thumbnail_128x128.png b/OA/BAG_prim/pmos4_standard/schematic/thumbnail_128x128.png index 4cb36e1..d96f8b1 100644 --- a/OA/BAG_prim/pmos4_standard/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_standard/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_standard/symbol/thumbnail_128x128.png b/OA/BAG_prim/pmos4_standard/symbol/thumbnail_128x128.png index 2a160dc..d44f020 100644 --- a/OA/BAG_prim/pmos4_standard/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_standard/symbol/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_svt/schematic/thumbnail_128x128.png b/OA/BAG_prim/pmos4_svt/schematic/thumbnail_128x128.png index 4cb36e1..d96f8b1 100644 --- a/OA/BAG_prim/pmos4_svt/schematic/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_svt/schematic/thumbnail_128x128.png Binary files differ
diff --git a/OA/BAG_prim/pmos4_svt/symbol/thumbnail_128x128.png b/OA/BAG_prim/pmos4_svt/symbol/thumbnail_128x128.png index 2a160dc..d44f020 100644 --- a/OA/BAG_prim/pmos4_svt/symbol/thumbnail_128x128.png +++ b/OA/BAG_prim/pmos4_svt/symbol/thumbnail_128x128.png Binary files differ
diff --git a/calibre_setup/drc.runset b/calibre_setup/drc.runset index 05f6f1b..7908bef 100644 --- a/calibre_setup/drc.runset +++ b/calibre_setup/drc.runset
@@ -1,22 +1,3 @@ -// Copyright 2019-2021 SkyWater PDK Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// This code is *alternatively* available under a BSD-3-Clause license, see -// details in the README.md at the top level and the license text at -// https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -// -// SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 *drcRulesFile: ${PDK_HOME}/DRC/Calibre/s8_drcRules *drcRunDir: ${BAG_WORK_DIR}/calibre_run/drc/myLib/myCell *drcLayoutPaths: myCell.calibre.db
diff --git a/calibre_setup/drc.svrf b/calibre_setup/drc.svrf index ec12374..f65cdad 100644 --- a/calibre_setup/drc.svrf +++ b/calibre_setup/drc.svrf
@@ -1,23 +1,3 @@ -// Copyright 2019-2021 SkyWater PDK Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// This code is *alternatively* available under a BSD-3-Clause license, see -// details in the README.md at the top level and the license text at -// https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -// -// SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - LAYOUT PATH "{{ layout_file }}" LAYOUT PRIMARY "{{ cell_name }}" LAYOUT SYSTEM {{layout_type}}
diff --git a/calibre_setup/lvs.runset b/calibre_setup/lvs.runset index aa56bfd..c1a94bf 100644 --- a/calibre_setup/lvs.runset +++ b/calibre_setup/lvs.runset
@@ -1,22 +1,3 @@ -// Copyright 2019-2021 SkyWater PDK Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// This code is *alternatively* available under a BSD-3-Clause license, see -// details in the README.md at the top level and the license text at -// https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -// -// SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 *lvsRulesFile: ${PDK_HOME}/LVS/Calibre/lvs_s8_opts *lvsRunDir: ${BAG_WORK_DIR}/calibre_run/lvs/myLib/top_cell *lvsLayoutPaths: top_cell.calibre.db
diff --git a/calibre_setup/lvs.svrf b/calibre_setup/lvs.svrf index a10001c..73b3fff 100644 --- a/calibre_setup/lvs.svrf +++ b/calibre_setup/lvs.svrf
@@ -1,23 +1,3 @@ -// Copyright 2019-2021 SkyWater PDK Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// This code is *alternatively* available under a BSD-3-Clause license, see -// details in the README.md at the top level and the license text at -// https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -// -// SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - LAYOUT PATH "{{ layout_file }}" LAYOUT PRIMARY "{{ cell_name }}" LAYOUT SYSTEM {{layout_type}}
diff --git a/netlist_setup/bag_prim.scs b/netlist_setup/bag_prim.scs index 3ea4972..358feb1 100644 --- a/netlist_setup/bag_prim.scs +++ b/netlist_setup/bag_prim.scs
@@ -1,22 +1,3 @@ -// Copyright 2019-2021 SkyWater PDK Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// This code is *alternatively* available under a BSD-3-Clause license, see -// details in the README.md at the top level and the license text at -// https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -// -// SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 subckt nmos4_hv B D G S parameters l w nf
diff --git a/netlist_setup/spectre_prim.scs b/netlist_setup/spectre_prim.scs index 8bcb34c..f8bde6b 100644 --- a/netlist_setup/spectre_prim.scs +++ b/netlist_setup/spectre_prim.scs
@@ -1,22 +1,3 @@ -// Copyright 2019-2021 SkyWater PDK Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// This code is *alternatively* available under a BSD-3-Clause license, see -// details in the README.md at the top level and the license text at -// https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -// -// SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 simulator lang=spectre subckt ideal_balun d c p n
diff --git a/pcell_setup/gen_skill.py b/pcell_setup/gen_skill.py index 03b40c9..11b3a6f 100644 --- a/pcell_setup/gen_skill.py +++ b/pcell_setup/gen_skill.py
@@ -1,6 +1,9 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# # Copyright 2019-2021 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -24,7 +27,6 @@ from jinja2 import Template - tech_lib = 's8phirs_10r' # mos_w_default = '0.42' # mos_l_default = '0.15'
diff --git a/pcell_setup/prim_pcell.il b/pcell_setup/prim_pcell.il index b6714db..58a6a59 100644 --- a/pcell_setup/prim_pcell.il +++ b/pcell_setup/prim_pcell.il
@@ -1,23 +1,3 @@ -;; Copyright 2019-2021 SkyWater PDK Authors -;; -;; Licensed under the Apache License, Version 2.0 (the "License"); -;; you may not use this file except in compliance with the License. -;; You may obtain a copy of the License at -;; -;; https://www.apache.org/licenses/LICENSE-2.0 -;; -;; Unless required by applicable law or agreed to in writing, software -;; distributed under the License is distributed on an "AS IS" BASIS, -;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -;; See the License for the specific language governing permissions and -;; limitations under the License. -;; -;; This code is *alternatively* available under a BSD-3-Clause license, see -;; details in the README.md at the top level and the license text at -;; https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -;; -;; SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - ;; This skill file compiles schematic PCells for BAG primitives lib_obj = ddGetObj("BAG_prim") @@ -26,21 +6,16 @@ ; nmos4_standard/nshort pcDefinePCell( list( lib_obj "nmos4_standard" "schematic" "schematic") - ((w string "0.42") - (l string "0.15") + ( (nf string "1") ) let((inst iopin_master io_net io_pin) - wval = atoi(w) nval = atoi(nf) inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "nfet" "symbol" "N0" -0.375:0 "R0" 1 list(list("hspiceModelMenu" "string" "nshort") - list("w" "string" w) - list("l" "string" l) list("m" "string" nf) - list("totalW" "string" sprintf(nil "%dn" wval * nval))) - ) + ) iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r") io_net = dbCreateNet(pcCellView "D") io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
diff --git a/pcell_setup/prim_pcell_jinja2.il b/pcell_setup/prim_pcell_jinja2.il index 306db76..033bd50 100644 --- a/pcell_setup/prim_pcell_jinja2.il +++ b/pcell_setup/prim_pcell_jinja2.il
@@ -1,23 +1,3 @@ -;; Copyright 2019-2021 SkyWater PDK Authors -;; -;; Licensed under the Apache License, Version 2.0 (the "License"); -;; you may not use this file except in compliance with the License. -;; You may obtain a copy of the License at -;; -;; https://www.apache.org/licenses/LICENSE-2.0 -;; -;; Unless required by applicable law or agreed to in writing, software -;; distributed under the License is distributed on an "AS IS" BASIS, -;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -;; See the License for the specific language governing permissions and -;; limitations under the License. -;; -;; This code is *alternatively* available under a BSD-3-Clause license, see -;; details in the README.md at the top level and the license text at -;; https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -;; -;; SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - ;; This skill file compiles schematic PCells for BAG primitives lib_obj = ddGetObj("BAG_prim") @@ -26,20 +6,20 @@ ; {{ mtype }}_{{ threshold }}/{{ model_thres }} pcDefinePCell( list( lib_obj "{{ mtype }}_{{ threshold }}" "schematic" "schematic") - ((w string "{{ w_def }}") - (l string "{{ l_def }}") + (;(w string "{{ w_def }}") + ;(l string "{{ l_def }}") (nf string "1") ) let((inst iopin_master io_net io_pin) - wval = atoi(w) - nval = atoi(nf) + ;wval = atoi(w) + ;nval = atoi(nf) inst = dbCreateParamInstByMasterName( pcCellView "{{ tech_lib }}" "{{ model }}" "symbol" "N0" -0.375:0 "R0" 1 list(list("hspiceModelMenu" "string" "{{ model_thres }}") - list("w" "string" w) - list("l" "string" l) + ;list("w" "string" w) + ;list("l" "string" l) list("m" "string" nf) - list("totalW" "string" sprintf(nil "%dn" wval * nval))) + ;list("totalW" "string" sprintf(nil "%dn" wval * nval))) ) iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r") io_net = dbCreateNet(pcCellView "D")
diff --git a/src/BAG_prim/__init__.py b/src/BAG_prim/__init__.py index 7e4a026..0cebf6d 100644 --- a/src/BAG_prim/__init__.py +++ b/src/BAG_prim/__init__.py
@@ -1,6 +1,9 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# # Copyright 2019-2021 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/src/BAG_prim/schematic/nmos4_hv.py b/src/BAG_prim/schematic/nmos4_hv.py index 75227ca..4edec61 100644 --- a/src/BAG_prim/schematic/nmos4_hv.py +++ b/src/BAG_prim/schematic/nmos4_hv.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/nmos4_hvesd.py b/src/BAG_prim/schematic/nmos4_hvesd.py index bbc9f14..fe7232a 100644 --- a/src/BAG_prim/schematic/nmos4_hvesd.py +++ b/src/BAG_prim/schematic/nmos4_hvesd.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/nmos4_lvt.py b/src/BAG_prim/schematic/nmos4_lvt.py index bedee15..7f37621 100644 --- a/src/BAG_prim/schematic/nmos4_lvt.py +++ b/src/BAG_prim/schematic/nmos4_lvt.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/nmos4_standard.py b/src/BAG_prim/schematic/nmos4_standard.py index 3ed932b..1b22bfe 100644 --- a/src/BAG_prim/schematic/nmos4_standard.py +++ b/src/BAG_prim/schematic/nmos4_standard.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/nmos4_svt.py b/src/BAG_prim/schematic/nmos4_svt.py index e174e82..fe11594 100644 --- a/src/BAG_prim/schematic/nmos4_svt.py +++ b/src/BAG_prim/schematic/nmos4_svt.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/pmos4_hv.py b/src/BAG_prim/schematic/pmos4_hv.py index 437df1a..2d97ea7 100644 --- a/src/BAG_prim/schematic/pmos4_hv.py +++ b/src/BAG_prim/schematic/pmos4_hv.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/pmos4_hvesd.py b/src/BAG_prim/schematic/pmos4_hvesd.py index 9a7da7b..9c8fc7c 100644 --- a/src/BAG_prim/schematic/pmos4_hvesd.py +++ b/src/BAG_prim/schematic/pmos4_hvesd.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/pmos4_hvt.py b/src/BAG_prim/schematic/pmos4_hvt.py index c7e32a0..265072d 100644 --- a/src/BAG_prim/schematic/pmos4_hvt.py +++ b/src/BAG_prim/schematic/pmos4_hvt.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/pmos4_lvt.py b/src/BAG_prim/schematic/pmos4_lvt.py index 73519c8..17e2ca7 100644 --- a/src/BAG_prim/schematic/pmos4_lvt.py +++ b/src/BAG_prim/schematic/pmos4_lvt.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/pmos4_standard.py b/src/BAG_prim/schematic/pmos4_standard.py index 5432df4..fbe206a 100644 --- a/src/BAG_prim/schematic/pmos4_standard.py +++ b/src/BAG_prim/schematic/pmos4_standard.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/BAG_prim/schematic/pmos4_svt.py b/src/BAG_prim/schematic/pmos4_svt.py index c1ee848..8e8425c 100644 --- a/src/BAG_prim/schematic/pmos4_svt.py +++ b/src/BAG_prim/schematic/pmos4_svt.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Any
diff --git a/src/templates_skywater130/__init__.py b/src/templates_skywater130/__init__.py index 09d7340..1f3ebc0 100644 --- a/src/templates_skywater130/__init__.py +++ b/src/templates_skywater130/__init__.py
@@ -21,7 +21,6 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - import os import pkg_resources
diff --git a/src/templates_skywater130/data/tech_params.yaml b/src/templates_skywater130/data/tech_params.yaml index b610fed..c8c49ec 100644 --- a/src/templates_skywater130/data/tech_params.yaml +++ b/src/templates_skywater130/data/tech_params.yaml
@@ -44,11 +44,11 @@ # mapping from metal layer ID to layer/purpose pair that defines # a metal resistor. res_metal_layer_table: {} -# 1: [!!python/tuple ['m1res', 'drawing']] -# 2: [!!python/tuple ['m2res', 'drawing']] -# 3: [!!python/tuple ['m3res', 'drawing']] -# 4: [!!python/tuple ['m4res', 'drawing']] -# 5: [!!python/tuple ['m5res', 'drawing']] +# 1: [!!python/tuple ['met1', 'res']] +# 2: [!!python/tuple ['met2', 'res']] +# 3: [!!python/tuple ['met3', 'res']] +# 4: [!!python/tuple ['met4', 'res']] +# 5: [!!python/tuple ['met5', 'res']] # mapping from metal layer ID to layer/purpose pair that # defines metal exclusion region. @@ -68,6 +68,7 @@ 3: [!!python/tuple ['met3', 'drawing']] 4: [!!python/tuple ['met4', 'drawing']] 5: [!!python/tuple ['met5', 'drawing']] +# 6: [!!python/tuple ['capm', 'drawing']] dum_lay_purp_list: *lp_list @@ -87,6 +88,10 @@ 5: - [[284, .inf]] - [[284, .inf]] + + 6: + - [[60, .inf]] + - [[60, 2001]] # mapping from tuple of via layers to via ID. via_id: @@ -155,12 +160,13 @@ - [.inf, [[62, 62]]] # minimum wire spacing rule. Space is measured orthogonal to wire direction. +# should be in resolution units sp_min: [met1, drawing]: &sp_min_1x - - [.inf, 28] + - [.inf, 100] [met2, drawing]: *sp_min_1x [met3, drawing]: &sp_min_2x - - [.inf, 60] + - [.inf, 60] #60 [met4, drawing]: *sp_min_2x [met5, drawing]: - [.inf, 320] @@ -168,13 +174,14 @@ # minimum line-end spacing rule. Space is measured parallel to wire direction. sp_le_min: [met1, drawing]: &sp_le_min_1x - - [.inf, 28] + - [.inf, 100] #change from 28 [met2, drawing]: *sp_le_min_1x [met3, drawing]: &sp_le_min_2x - [.inf, 60] [met4, drawing]: *sp_le_min_2x [met5, drawing]: - [.inf, 320] + # minimum length/minimum area rules. len_min: @@ -198,6 +205,10 @@ w_al_list: - [.inf, 160000, 0] md_al_list: [] + #[capm, drawing]: + # w_al_list: + # - [.inf, 9600, 0] + # md_al_list: [] margins: well: [40, 40] @@ -267,6 +278,9 @@ # nsdm.1 imp_h_min: 76 + #might be redundant, well margin from edge to implant + nwell_imp: 40 + grid_info: - [1, 52, 1] - [3, 66, 1] @@ -864,4 +878,3 @@ - [22, 4294967295] - [27902976, 4294967295] - [6, 4294967295] -
diff --git a/src/templates_skywater130/mos/tech.py b/src/templates_skywater130/mos/tech.py index 437893c..bf7d00c 100644 --- a/src/templates_skywater130/mos/tech.py +++ b/src/templates_skywater130/mos/tech.py
@@ -42,7 +42,7 @@ MOSRowSpecs, MOSRowInfo, BlkExtInfo, MOSEdgeInfo, MOSLayInfo, ExtWidthInfo, LayoutInfo, ExtEndLayInfo, RowExtInfo ) -from ..util import add_base, get_arr_edge_dim +from ..util import add_base, add_base_mos, get_arr_edge_dim MConnInfoType = Tuple[int, int, Orient2D, int, Tuple[str, str]] @@ -109,13 +109,41 @@ @property def min_sep_col(self) -> int: - return self._get_od_sep_col(self.mos_config['od_spx']) + #return self._get_od_sep_col(self.mos_config['od_spx']) + + #felicia copied + lch = self.lch + sd_pitch = self.sd_pitch + od_po_extx = self.od_po_extx + + od_spx: int = self.mos_config['od_spx'] + imp_od_encx: int = self.mos_config['imp_od_encx'] + ans = -(-(od_spx + lch + 2 * od_po_extx + 2*imp_od_encx) // sd_pitch) - 1 + return ans + (ans & 1) @property def sub_sep_col(self) -> int: - return self._get_od_sep_col(max(self.mos_config['od_spx'], - 2 * self.mos_config['imp_od_encx'])) + # column separation needed between transistor/substrate and substrate/substrate. + # This is guaranteed to be even. + #return self._get_od_sep_col(max(self.mos_config['od_spx'], + # 2 * self.mos_config['imp_od_encx'])) + + #felicia - copied method from cds_ff_mpt + #does something similar to _get_od_sep_col but seems to have + #effective +1 that get_od doesn't have + lch = self.lch + sd_pitch = self.sd_pitch + od_po_extx = self.od_po_extx + + mos_config = self.mos_config + od_spx: int = mos_config['od_spx'] + imp_od_encx: int = mos_config['imp_od_encx'] + + od_spx = max(od_spx, 2 * imp_od_encx) + ans = -(-(od_spx + lch + 2 * od_po_extx) // sd_pitch) - 1 + return ans + (ans & 1) + @property def min_sub_col(self) -> int: return self.min_od_col @@ -144,7 +172,8 @@ @property def well_w_edge(self) -> int: imp_od_encx: int = self.mos_config['imp_od_encx'] - return -(self.sd_pitch - self.lch) // 2 + self.od_po_extx + imp_od_encx + nwell_imp: int = self.mos_config['nwell_imp'] + return -(self.sd_pitch - self.lch) // 2 + self.od_po_extx + nwell_imp + imp_od_encx def get_conn_info(self, conn_layer: int, is_gate: bool) -> ConnInfo: mconf = self.mos_config @@ -390,7 +419,7 @@ po_y_gate: Tuple[int, int], fg: int, conn_pitch: int, g_on_s: bool) -> None: lch = self.lch sd_pitch = self.sd_pitch - + #breakpoint() mconf = self.mos_config npc_w: int = mconf['npc_w'] npc_h: int = mconf['npc_h'] @@ -444,7 +473,8 @@ builder.add_rect_arr(mp_lp, BBox(mp_xl, mp_yl, mp_xl + mp_w_min, mp_yh), nx=num_g, spx=conn_pitch) else: - mp_dx = g0_info.via_w // 2 + g0_info.via_top_enc + mp_dx = g0_info.via_w # felicia - // 2 + g0_info.via_top_enc + # for licon.5 mp_xl = g_xc - mp_dx mp_xh = g_xc + (num_g - 1) * conn_pitch + mp_dx builder.add_rect_arr(mp_lp, BBox(mp_xl, mp_yl, mp_xh, mp_yh)) @@ -474,7 +504,6 @@ md_box = BBox(xc - md_w2, md_y[0], xc + md_w2, md_y[1]) builder.add_rect_arr(('licon1', 'drawing'), vc_box, nx=nx, spx=spx, ny=num_vc, spy=vc_p) builder.add_rect_arr(('li1', 'drawing'), md_box, nx=nx, spx=spx) - # connect to M1 builder.add_via(d1_info.get_via_info('L1M1_C', xc, od_yc, md_w, ortho=False, num=num_v0, nx=nx, spx=spx)) @@ -486,13 +515,14 @@ def get_mos_tap_info(self, row_info: MOSRowInfo, conn_layer: int, seg: int, options: Param) -> MOSLayInfo: assert conn_layer == 1, 'currently only work for conn_layer = 1' - + #print(row_info) row_type = row_info.row_type guard_ring: bool = options.get('guard_ring', row_info.guard_ring) if guard_ring: sub_type: MOSType = options.get('sub_type', row_type.sub_type) else: + #print(row_type.sub_type) sub_type: MOSType = row_type.sub_type sd_pitch = self.sd_pitch @@ -504,21 +534,29 @@ # draw device builder = LayoutInfoBuilder() + #draws diffusion and tap + #if (row_type is MOSType.nch): od_y = self._add_mos_active(builder, row_info, 0, seg, w, is_sub=True) - + #print(row_info) + #else: + # od_y = (193, 303) # draw drain/source connections d0_info = self.get_conn_info(0, False) d1_info = self.get_conn_info(1, False) md_yl, md_yh, num_vc = self._get_conn_params(d0_info, od_y[0], od_y[1]) num_v0 = self._get_conn_params(d1_info, md_yl, md_yh)[2] md_y = (md_yl, md_yh) + + #draws in vias connecting tap cell to metal 1 self._draw_ds_conn(builder, d0_info, d1_info, od_y, md_y, num_vc, num_v0, 0, seg + 1, sd_pitch) # draw base - bbox = BBox(0, 0, seg * sd_pitch, height) - add_base(builder, sub_type, threshold, imp_y, bbox) - + # add extra imp)od_encx for ntap and ptap + imp_od_encx: int = self.mos_config['imp_od_encx'] + bbox = BBox(0-2*imp_od_encx, 0, seg * sd_pitch + 2*imp_od_encx, height) + add_base_mos(builder, sub_type, threshold, imp_y, bbox, is_sub=True) + edge_info = MOSEdgeInfo(mos_type=sub_type, imp_y=imp_y, has_od=True) be = BlkExtInfo(row_type, row_info.threshold, guard_ring, ImmutableList([(seg, sub_type)]), ImmutableSortedDict()) @@ -760,7 +798,15 @@ # draw base imp_od_encx: int = self.mos_config['imp_od_encx'] bbox = BBox(od_xl-imp_od_encx, 0, od_xh+imp_od_encx, row_info.height) - add_base(builder, row_info.row_type, row_info.threshold, row_info['imp_y'], bbox) + + #if drawing tap cells, flip the implant type so its opposite of row + if is_sub: + if (row_info.row_type is MOSType.nch): + add_base_mos(builder, MOSType.pch, row_info.threshold, row_info['imp_y'], bbox, is_sub=True) + elif (row_info.row_type is MOSType.pch): + add_base_mos(builder, MOSType.nch, row_info.threshold, row_info['imp_y'], bbox, is_sub=True) + else: + add_base_mos(builder, row_info.row_type, row_info.threshold, row_info['imp_y'], bbox) return od_yl, od_yh @@ -831,4 +877,3 @@ xcur = xh return xcur -
diff --git a/src/templates_skywater130/tech.py b/src/templates_skywater130/tech.py index 14a7c9a..8f7d3d0 100644 --- a/src/templates_skywater130/tech.py +++ b/src/templates_skywater130/tech.py
@@ -21,10 +21,8 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Tuple, Optional, Mapping - from pybag.core import BBox from bag.util.immutable import Param
diff --git a/src/templates_skywater130/util.py b/src/templates_skywater130/util.py index e19eb02..39e0e6d 100644 --- a/src/templates_skywater130/util.py +++ b/src/templates_skywater130/util.py
@@ -21,10 +21,8 @@ # # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - from typing import Optional, Tuple - from pybag.core import BBox from xbase.layout.enum import MOSType @@ -33,6 +31,10 @@ def add_base(builder: LayoutInfoBuilder, row_type: MOSType, threshold: str, imp_y: Tuple[int, int], rect: BBox, well_x: Optional[Tuple[int, int]] = None) -> None: + # draws nwell, n+ implant (ndsm) and p+ implant (pdsm) + # for non mos devices (corners, edges, etc) + + pimp_lp = ('psdm', 'drawing') if rect.is_physical(): if not row_type.is_pwell: well_lp = ('nwell', 'drawing') @@ -40,18 +42,36 @@ builder.add_rect_arr(well_lp, rect) else: builder.add_rect_arr(well_lp, BBox(well_x[0], rect.yl, well_x[1], rect.yh)) + + thres_lp = _get_thres_lp(row_type, threshold) + if thres_lp[0] != '': + builder.add_rect_arr(thres_lp, rect) + +def add_base_mos(builder: LayoutInfoBuilder, row_type: MOSType, threshold: str, imp_y: Tuple[int, int], + rect: BBox, well_x: Optional[Tuple[int, int]] = None, is_sub: bool = False) -> None: + # new func draws nwell, n+ implant (ndsm) and p+ implant (pdsm) + + pimp_lp = ('psdm', 'drawing') - if row_type.is_n_plus: - builder.add_rect_arr(('nsdm', 'drawing'), rect) - else: - pimp_lp = ('psdm', 'drawing') - nimp_lp = ('nsdm', 'drawing') - if rect.yl < imp_y[0]: - builder.add_rect_arr(nimp_lp, BBox(rect.xl, rect.yl, rect.xh, imp_y[0])) - if imp_y[1] < rect.yh: - builder.add_rect_arr(nimp_lp, BBox(rect.xl, imp_y[1], rect.xh, rect.yh)) - if imp_y[0] < imp_y[1]: - builder.add_rect_arr(pimp_lp, BBox(rect.xl, imp_y[0], rect.xh, imp_y[1])) + if rect.is_physical(): + # only draw nwells if not a tap cell and pch, or is tap cell and nch + if ((not row_type.is_pwell) and (not is_sub)) \ + or (is_sub and (row_type is MOSType.nch or row_type is MOSType.ntap) ): + well_lp = ('nwell', 'drawing') + if well_x is None: + builder.add_rect_arr(well_lp, rect) + else: + builder.add_rect_arr(well_lp, BBox(well_x[0], rect.yl, well_x[1], rect.yh)) + + #draw the respective implant called + if (row_type is MOSType.nch): + builder.add_rect_arr(('nsdm', 'drawing'), BBox(rect.xl, imp_y[0], rect.xh, imp_y[1])) + elif (row_type is MOSType.pch): + builder.add_rect_arr(('psdm', 'drawing'), BBox(rect.xl, imp_y[0], rect.xh, imp_y[1])) + elif (row_type is MOSType.ntap): + builder.add_rect_arr(('nsdm', 'drawing'), BBox(rect.xl, imp_y[0], rect.xh, imp_y[1])) + elif (row_type is MOSType.ptap): + builder.add_rect_arr(('psdm', 'drawing'), BBox(rect.xl, imp_y[0], rect.xh, imp_y[1])) thres_lp = _get_thres_lp(row_type, threshold) if thres_lp[0] != '':
diff --git a/workspace_setup/.bashrc b/workspace_setup/.bashrc index 7a214e8..08c470c 100644 --- a/workspace_setup/.bashrc +++ b/workspace_setup/.bashrc
@@ -1,75 +1,62 @@ #! /usr/bin/env bash +export PYTHONPATH="" ### Setup BAG -export BAG_TOOLS_ROOT=/tools/bag3/core source .bashrc_bag -# PDK specific stuff -export SW_PDK_ROOT=${BAG_TECH_CONFIG_DIR}/workspace_setup/PDK_root -export PDK_HOME=${BAG_TECH_CONFIG_DIR}/workspace_setup/PDK -export METAL_STACK=s8phirs_10r +export PDK_HOME=/tools/commercial/skywater/swtech130/skywater-src-nda/s8/V2.0.0 +export SW_PDK_ROOT=/tools/commercial/skywater +export SW_IP_HOME=${SW_PDK_ROOT}/s8_ip +export METAL_STACK="s8phirs_10r" -# calibre setup -export MGLS_LICENSE_FILE=5282@login1.bcanalog.com -export MGC_HOME=/tools/mentor/aoi_cal_2018.1_27.18 -export MGLS_HOME=/tools/mentor/mgls -export CALIBRE_HOME=$MGC_HOME # location of various tools -export CDS_INST_DIR=/tools/cadence/IC618 -export PEGASUS_HOME=/tools/cadence/PEGASUS184 -export SRR_HOME=/tools/cadence/SRR -# export CDS_INST_DIR=/tools/cadence/IC618 -export SPECTRE_HOME=/tools/cadence/SPECTRE181 -export QRC_HOME=/tools/cadence/EXT191 -export INNOVUSHOME=/tools/cadence/installs/INNOVUS181 -export CDSLIB_HOME=/tools/bag3/programs/cdsLibPlugin -export LATEX_BIN=/tools/texlive/2019/bin/x86_64-linux +export MGC_HOME=/tools/mentor/calibre/current +export CDS_INST_DIR=/tools/cadence/ICADVM/ICADVM181 +export PVS_HOME=/tools/cadence/PVS/PVS151 +export SPECTRE_HOME=/tools/cadence/SPECTRE/SPECTRE181_ISR7 +export QRC_HOME=/tools/cadence/EXT/EXT191_ISR3 +export SRR_HOME=/tools/cadence/SRR/SRR_0618 +export CMAKE_HOME=/tools/B/ayan_biswas/programs/cmake-3.17.0-Linux-x86_64 -export CDSHOME=$CDS_INST_DIR -export CDSLIB_TOOL=${CDSLIB_HOME}/tools.lnx86 +export CDSHOME=${CDS_INST_DIR} export MMSIM_HOME=${SPECTRE_HOME} # OA settings -export OA_SRC_ROOT=/tools/bag3/programs/oa_22d6 -export OA_LINK_DIR=${OA_SRC_ROOT}/lib/linux_rhel60_64/opt -# export OA_LINK_DIR=${OA_SRC_ROOT}/lib/linux_rhel50_gcc48x_64/opt -export OA_CDS_ROOT=${CDS_INST_DIR}/oa_v22.60.007 +export OA_SRC_ROOT=/tools/B/ayan_biswas/programs/oa_new +export OA_LINK_DIR=${OA_SRC_ROOT}/lib/linux_rhel70_gcc83x_64/opt export OA_INCLUDE_DIR=${OA_SRC_ROOT}/include -export OA_PLUGIN_PATH=${CDSLIB_HOME}/share/oaPlugIns:${OA_CDS_ROOT}/data/plugins:${OA_PLUGIN_PATH:-} +export OA_CDS_ROOT=${CDS_INST_DIR}/oa_v22.60.s007 +export OA_PLUGIN_PATH=${OA_CDS_ROOT}/data/plugins:${OA_PLUGIN_PATH:-} export OA_BIT=64 # PATH setup -export PATH=${MGLS_HOME}/bin:${PATH} -export PATH=${CALIBRE_HOME}/bin:${PATH} -export PATH=${CDSLIB_TOOL}/bin:${PATH} -export PATH=${PEGASUS_HOME}/bin:${PATH} +export PATH=${MGC_HOME}/bin:${PATH} +export PATH=${PVS_HOME}/bin:${PATH} +export PATH=${QRC_HOME}/bin:${PATH} export PATH=${CDS_INST_DIR}/tools/plot/bin:${PATH} export PATH=${CDS_INST_DIR}/tools/dfII/bin:${PATH} export PATH=${CDS_INST_DIR}/tools/bin:${PATH} export PATH=${MMSIM_HOME}/bin:${PATH} -export PATH=${QRC_HOME}/bin:${PATH} -export PATH=${LATEX_BIN}:${PATH} export PATH=${BAG_TOOLS_ROOT}/bin:${PATH} +export PATH=${CMAKE_HOME}/bin:${PATH} +export PATH=/tools/B/ayan_biswas/programs/core/bin:${PATH} # LD_LIBRARY_PATH setup -export LD_LIBRARY_PATH=${CDSLIB_TOOL}/lib/64bit:${LD_LIBRARY_PATH:-} export LD_LIBRARY_PATH=${OA_LINK_DIR}:${LD_LIBRARY_PATH} -export LD_LIBRARY_PATH=${BAG_TOOLS_ROOT}/lib64:${LD_LIBRARY_PATH} +export LD_LIBRARY_PATH=${BAG_WORK_DIR}/cadence_libs:${LD_LIBRARY_PATH} +export LD_LIBRARY_PATH=${SRR_HOME}/tools/lib/64bit:${LD_LIBRARY_PATH:-} export LD_LIBRARY_PATH=${BAG_TOOLS_ROOT}/lib:${LD_LIBRARY_PATH} -export LD_LIBRARY_PATH=${SRR_HOME}/tools/lib/64bit:${LD_LIBRARY_PATH} +export LD_LIBRARY_PATH=$/tools/B/ayan_biswas/programs/core/lib:${LD_LIBRARY_PATH} +export LD_LIBRARY_PATH=$/tools/B/ayan_biswas/programs/core/lib64:${LD_LIBRARY_PATH} # Virtuoso options export SPECTRE_DEFAULTS=-E export CDS_Netlisting_Mode="Analog" export CDS_AUTO_64BIT=ALL -export CDS_LIC_FILE=5280@login1.bcanalog.com + +# License setup +source /tools/flexlm/flexlm.sh # pybag compiler settings export CMAKE_PREFIX_PATH=${BAG_TOOLS_ROOT} -export HDF5_PLUGIN_PATH=${BAG_TOOLS_ROOT}/lib/hdf5/plugin - -# clear out PYTHONPATH -export PYTHONPATH="" -export PYTHONPATH_CUSTOM=${SRR_HOME}/tools/srrpython -
diff --git a/workspace_setup/.bashrc_bag b/workspace_setup/.bashrc_bag index 01a90fc..59108c6 100644 --- a/workspace_setup/.bashrc_bag +++ b/workspace_setup/.bashrc_bag
@@ -1,23 +1,18 @@ #! /usr/bin/env bash -# set directory variables export BAG_WORK_DIR=$(pwd) +export BAG_TOOLS_ROOT=/tools/commercial/bcanalog/bag/bag3d0_rhel60_64 export BAG_FRAMEWORK=${BAG_WORK_DIR}/BAG_framework export BAG_TECH_CONFIG_DIR=${BAG_WORK_DIR}/skywater130 -export BAG_TEMP_DIR=${BAG_WORK_DIR}/BAGTMP +export BAG_TEMP_DIR=/tools/scratch/${USER}/BAGTMP export IPYTHONDIR=${BAG_WORK_DIR}/.ipython # disable hash-salting. We need stable hashing across sessions for caching purposes. export PYTHONHASHSEED=0 - # set program locations export BAG_PYTHON=${BAG_TOOLS_ROOT}/bin/python3 -export BAG_JUPYTER=${BAG_TOOLS_ROOT}/bin/jupyter-notebook # set location of BAG configuration file export BAG_CONFIG_PATH=${BAG_WORK_DIR}/bag_config.yaml -# change pycharm config file location -export PYCHARM_PROPERTIES=/scratch/projects/${USER}/pycharm_setup/idea.properties - # setup pybag export PYBAG_PYTHON=${BAG_PYTHON}
diff --git a/workspace_setup/.cdsinit b/workspace_setup/.cdsinit index 26d34a2..b1b929b 100644 --- a/workspace_setup/.cdsinit +++ b/workspace_setup/.cdsinit
@@ -137,12 +137,13 @@ ;; Set Default Model Files. Note the "#;" de-selects the model call. setModelFiles=strcat( - " " getShellEnvVar("PDK_HOME") "MODELS/SPECTRE" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;tt_fet" - " " getShellEnvVar("PDK_HOME") "MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;tt_cell" - " " getShellEnvVar("PDK_HOME") "MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;tt_parRC" - " " getShellEnvVar("PDK_HOME") "MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;tt_rc" - " " getShellEnvVar("PDK_HOME") "MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;npn_t" + " " getShellEnvVar("PDK_HOME") "/MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;tt_fet" + " " getShellEnvVar("PDK_HOME") "/MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;tt_cell" + " " getShellEnvVar("PDK_HOME") "/MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;tt_parRC" + " " getShellEnvVar("PDK_HOME") "/MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;tt_rc" + " " getShellEnvVar("PDK_HOME") "/MODELS/SPECTRE/" getShellEnvVar("METAL_STACK") "/Models/design_wrapper.lib.scs;npn_t" ) + envSetVal("spectre.envOpts" "modelFiles" 'string setModelFiles) envSetVal("spectre.envOpts" "controlMode" 'string "batch")
diff --git a/workspace_setup/bag_config.yaml b/workspace_setup/bag_config.yaml index 4b24bce..95c1450 100644 --- a/workspace_setup/bag_config.yaml +++ b/workspace_setup/bag_config.yaml
@@ -104,16 +104,19 @@ # python class that talks with the simulator class: "bag.simulation.spectre.SpectreInterface" # maximum number of processes BAG can launch. - max_workers: 6 + max_workers: 8 # when simulation goes long, a reminder message will be printed at this interval update_timeout_ms: 120000 # amount of time to wait for process cancellation to succeed. cancel_timeout_ms: 10000 + # True to show interactive log viewer. + show_log_viewer: True # corner configuration file env_file: "${BAG_TECH_CONFIG_DIR}/corners_setup.yaml" # command settings kwargs: # the command to start + #command: "bsub -q bora -o $BAG_WORK_DIR/tmp -K spectre" command: spectre # environment variables. Null for same environment as SkillOceanServer. env: !!null @@ -123,7 +126,7 @@ format: psfxl # psf version psfversion: '1.1' - options: ['++aps', '+lqtimeout', '0', '+mt=1', '+mp=1', '+postlayout', '+rcnet_fmax=25'] + options: ['++aps', '+lqtimeout', '0', '+mt=8', '+mp=8', '+postlayout', '+rcnet_fmax=25'] compress: True rtol: 1.0e-8 atol: 1.0e-22
diff --git a/workspace_setup/bag_submodules.yaml b/workspace_setup/bag_submodules.yaml index 4251600..2e713eb 100644 --- a/workspace_setup/bag_submodules.yaml +++ b/workspace_setup/bag_submodules.yaml
@@ -19,14 +19,15 @@ # SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 BAG_framework: - url: https://github.com/bluecheetah/bag.git - branch: master + url: git@10.8.0.1:bag/BAG_framework.git + branch: sim_refactor bag3_digital: - url: https://github.com/bluecheetah/bag3_digital.git - branch: master + url: git@10.8.0.1:bag/bag3_digital.git + branch: sim_refactor bag3_testbenches: - url: https://github.com/bluecheetah/bag3_testbenches.git - branch: master + url: git@10.8.0.1:bag/bag3_testbenches.git + branch: sim_refactor xbase_bcad: - url: https://github.com/bluecheetah/xbase.git - branch: master + url: git@10.8.0.1:bag/xbase_bcad.git + branch: sim_refactor +
diff --git a/workspace_setup/ipython_config.py b/workspace_setup/ipython_config.py index 810c641..b53ec95 100644 --- a/workspace_setup/ipython_config.py +++ b/workspace_setup/ipython_config.py
@@ -1,6 +1,9 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# # Copyright 2019-2021 SkyWater PDK Authors # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -31,13 +34,13 @@ #------------------------------------------------------------------------------ ## A Mixin for applications that start InteractiveShell instances. -# +# # Provides configurables for loading extensions and executing files as part of # configuring a Shell environment. -# +# # The following methods should be called by the :meth:`initialize` method of the # subclass: -# +# # - :meth:`init_path` # - :meth:`init_shell` (to be implemented by the subclass) # - :meth:`init_gui_pylab` @@ -91,7 +94,7 @@ ## If true, IPython will populate the user namespace with numpy, pylab, etc. and # an ``import *`` is done from numpy and pylab, when using pylab mode. -# +# # When False, pylab mode should not import any names into the user namespace. #c.InteractiveShellApp.pylab_import_all = True @@ -129,7 +132,7 @@ #c.BaseIPythonApplication.copy_config_files = False ## Path to an extra config file to load. -# +# # If specified, load this config file in addition to any other IPython config. #c.BaseIPythonApplication.extra_config_file = u'' @@ -213,13 +216,13 @@ ## Set the color scheme (NoColor, Neutral, Linux, or LightBG). c.InteractiveShell.colors = 'Linux' -## +## #c.InteractiveShell.debug = False ## **Deprecated** -# +# # Will be removed in IPython 6.0 -# +# # Enable deep (recursive) reloading by default. IPython can use the deep_reload # module which reloads changes in modules recursively (it replaces the reload() # function, so you don't need to change anything to use it). `deep_reload` @@ -245,7 +248,7 @@ # startup. #c.InteractiveShell.history_load_length = 1000 -## +## #c.InteractiveShell.ipython_dir = '' ## Start logging to the given file in append mode. Use `logfile` to specify a log @@ -259,7 +262,7 @@ # specify a log file to **append** logs to. #c.InteractiveShell.logstart = False -## +## #c.InteractiveShell.object_info_string_level = 0 ## Automatically call the pdb debugger after every exception. @@ -281,16 +284,16 @@ # TerminalInteractiveShell.prompts object directly. #c.InteractiveShell.prompts_pad_left = True -## +## #c.InteractiveShell.quiet = False -## +## #c.InteractiveShell.separate_in = '\n' -## +## #c.InteractiveShell.separate_out = '' -## +## #c.InteractiveShell.separate_out2 = '' ## Show rewritten input, e.g. for autocall. @@ -300,10 +303,10 @@ # module). #c.InteractiveShell.sphinxify_docstring = False -## +## #c.InteractiveShell.wildcards_case_sensitive = True -## +## #c.InteractiveShell.xmode = 'Context' #------------------------------------------------------------------------------ @@ -346,11 +349,11 @@ ## Use `raw_input` for the REPL, without completion, multiline input, and prompt # colors. -# +# # Useful when controlling IPython as a subprocess, and piping STDIN/OUT/ERR. # Known usage are: IPython own testing machinery, and emacs inferior-shell # integration through elpy. -# +# # This mode default to `True` if the `IPY_TEST_SIMPLE_PROMPT` environment # variable is set, or the current terminal is not a tty. #c.TerminalInteractiveShell.simple_prompt = False @@ -371,35 +374,35 @@ #------------------------------------------------------------------------------ ## Access the history database without adding to it. -# +# # This is intended for use by standalone history tools. IPython shells use # HistoryManager, below, which is a subclass of this. ## Options for configuring the SQLite connection -# +# # These options are passed as keyword args to sqlite3.connect when establishing # database conenctions. #c.HistoryAccessor.connection_options = {} ## enable the SQLite history -# +# # set enabled=False to disable the SQLite history, in which case there will be # no stored history, no SQLite connection, and no background saving thread. # This may be necessary in some threaded environments where IPython is embedded. #c.HistoryAccessor.enabled = True ## Path to file to use for SQLite history database. -# +# # By default, IPython will put the history database in the IPython profile # directory. If you would rather share one history among profiles, you can set # this value in each, so that they are consistent. -# +# # Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts. # If you see IPython hanging, try setting this to something on a local disk, # e.g:: -# +# # ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite -# +# # you can also use the specific value `:memory:` (including the colon at both # end but not the back ticks), to avoid creating an history file. #c.HistoryAccessor.hist_file = u'' @@ -422,10 +425,10 @@ #------------------------------------------------------------------------------ ## An object to manage the profile directory and its resources. -# +# # The profile directory is used by all IPython applications, to manage # configuration, logging and security. -# +# # This object knows how to find, create and manage these directories. This # should be used by any code that wants to handle profiles. @@ -438,37 +441,37 @@ #------------------------------------------------------------------------------ ## A base formatter class that is configurable. -# +# # This formatter should usually be used as the base class of all formatters. It # is a traited :class:`Configurable` class and includes an extensible API for # users to determine how their objects are formatted. The following logic is # used to find a function to format an given object. -# +# # 1. The object is introspected to see if it has a method with the name # :attr:`print_method`. If is does, that object is passed to that method # for formatting. # 2. If no print method is found, three internal dictionaries are consulted # to find print method: :attr:`singleton_printers`, :attr:`type_printers` # and :attr:`deferred_printers`. -# +# # Users should use these dictionaries to register functions that will be used to # compute the format data for their objects (if those objects don't have the # special print methods). The easiest way of using these dictionaries is through # the :meth:`for_type` and :meth:`for_type_by_name` methods. -# +# # If no function/callable is found to compute the format data, ``None`` is # returned and this format type is not used. -## +## #c.BaseFormatter.deferred_printers = {} -## +## #c.BaseFormatter.enabled = True -## +## #c.BaseFormatter.singleton_printers = {} -## +## #c.BaseFormatter.type_printers = {} #------------------------------------------------------------------------------ @@ -476,12 +479,12 @@ #------------------------------------------------------------------------------ ## The default pretty-printer. -# +# # This uses :mod:`IPython.lib.pretty` to compute the format data of the object. # If the object cannot be pretty printed, :func:`repr` is used. See the # documentation of :mod:`IPython.lib.pretty` for details on how to write pretty # printers. Here is a simple example:: -# +# # def dtype_pprinter(obj, p, cycle): # if cycle: # return p.text('dtype(...)') @@ -497,24 +500,24 @@ # p.pretty(field) # p.end_group(7, '])') -## +## #c.PlainTextFormatter.float_precision = '' ## Truncate large collections (lists, dicts, tuples, sets) to this size. -# +# # Set to 0 to disable truncation. #c.PlainTextFormatter.max_seq_length = 1000 -## +## #c.PlainTextFormatter.max_width = 79 -## +## #c.PlainTextFormatter.newline = '\n' -## +## #c.PlainTextFormatter.pprint = True -## +## #c.PlainTextFormatter.verbose = False #------------------------------------------------------------------------------ @@ -523,7 +526,7 @@ ## Activate greedy completion PENDING DEPRECTION. this is now mostly taken care # of with Jedi. -# +# # This will enable completion on elements of lists, results of function calls, # etc., but can be unsafe because the code is actually evaluated on TAB. #c.Completer.greedy = False @@ -535,30 +538,30 @@ ## Extension of the completer class with IPython-specific features ## DEPRECATED as of version 5.0. -# +# # Instruct the completer to use __all__ for the completion -# +# # Specifically, when completing on ``object.<tab>``. -# +# # When True: only those names in obj.__all__ will be included. -# +# # When False [default]: the __all__ attribute is ignored #c.IPCompleter.limit_to__all__ = False ## Whether to merge completion results into a single list -# +# # If False, only the completion results from the first non-empty completer will # be returned. #c.IPCompleter.merge_completions = True ## Instruct the completer to omit private method names -# +# # Specifically, when completing on ``object.<tab>``. -# +# # When 2 [default]: all names that start with '_' will be excluded. -# +# # When 1: all 'magic' names (``__foo__``) will be excluded. -# +# # When 0: nothing will be excluded. #c.IPCompleter.omit__names = 2 @@ -567,21 +570,21 @@ #------------------------------------------------------------------------------ ## Magics for talking to scripts -# +# # This defines a base `%%script` cell magic for running a cell with a program in # a subprocess, and registers a few top-level magics that call %%script with # common interpreters. ## Extra script cell magics to define -# +# # This generates simple wrappers of `%%script foo` as `%%foo`. -# +# # If you want to add script magics that aren't on your path, specify them in # script_paths #c.ScriptMagics.script_magics = [] ## Dict mapping short 'ruby' names to full paths, such as '/opt/secret/bin/ruby' -# +# # Only necessary for items in script_magics where the default path will not find # the right interpreter. #c.ScriptMagics.script_paths = {} @@ -591,7 +594,7 @@ #------------------------------------------------------------------------------ ## Lightweight persistence for python variables. -# +# # Provides the %store magic. ## If True, any %store-d variables will be automatically restored when IPython
diff --git a/workspace_setup/leBindKeys.il b/workspace_setup/leBindKeys.il index 7e513d6..701d345 100644 --- a/workspace_setup/leBindKeys.il +++ b/workspace_setup/leBindKeys.il
@@ -1,23 +1,3 @@ -;; Copyright 2019-2021 SkyWater PDK Authors -;; -;; Licensed under the Apache License, Version 2.0 (the "License"); -;; you may not use this file except in compliance with the License. -;; You may obtain a copy of the License at -;; -;; https://www.apache.org/licenses/LICENSE-2.0 -;; -;; Unless required by applicable law or agreed to in writing, software -;; distributed under the License is distributed on an "AS IS" BASIS, -;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -;; See the License for the specific language governing permissions and -;; limitations under the License. -;; -;; This code is *alternatively* available under a BSD-3-Clause license, see -;; details in the README.md at the top level and the license text at -;; https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative -;; -;; SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0 - ;;----------------------------------------------------------------------------- ;; Bindkeys for 'Layout' ;; Inherited by: @@ -95,7 +75,7 @@ sprintf(via_name "via%d" bot_layer) ) sprintf(top_name "met%d" bot_layer + 1) - + leSetEntryLayer(list(bot_name "drawing")) leSetAllLayerVisible(nil) leSetLayerVisible(list(bot_name "drawing") t)
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_1.png b/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_1.png index 141301d..16b9fc2 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_1.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_1.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_2.png b/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_2.png index 60d7b07..8463792 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_2.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_2.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_3.png b/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_3.png index 67d0ad8..dcc3e72 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_3.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_3.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_4.png b/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_4.png index 5241aec..18bff8b 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_4.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/1_flow_demo/flow_demo_4.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_1.png b/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_1.png index 93a806c..96f98a9 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_1.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_1.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_2.png b/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_2.png index a81d9ee..a3d7aa4 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_2.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_2.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_3.png b/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_3.png index a86bc69..9b7ab1e 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_3.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/2_xbase_routing/xbase_routing_3.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_1.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_1.png index 2189ce8..97129cc 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_1.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_1.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_2.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_2.png index ba44bdf..dc55bab 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_2.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_2.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_3.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_3.png index e631931..3dfec20 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_3.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_3.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_4.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_4.png index 70915f1..0cc6b6b 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_4.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_4.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_5.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_5.png index 5d6a72c..db7654d 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_5.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_5.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_6.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_6.png index e123f96..eeecb60 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_6.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_6.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_7.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_7.png index 6d836b1..2d1dbb3 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_7.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_7.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_8.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_8.png index 4336251..30713eb 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_8.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_8.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_9.png b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_9.png index 1c28411..a2d5642 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_9.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/3_analogbase/analogbase_9.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/5_hierarchical_generator/hierachical_generator_1.png b/workspace_setup/tutorial_files/bootcamp_pics/5_hierarchical_generator/hierachical_generator_1.png index f288f64..187ab66 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/5_hierarchical_generator/hierachical_generator_1.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/5_hierarchical_generator/hierachical_generator_1.png Binary files differ
diff --git a/workspace_setup/tutorial_files/bootcamp_pics/5_hierarchical_generator/hierachical_generator_2.png b/workspace_setup/tutorial_files/bootcamp_pics/5_hierarchical_generator/hierachical_generator_2.png index 23ff221..4cde866 100644 --- a/workspace_setup/tutorial_files/bootcamp_pics/5_hierarchical_generator/hierachical_generator_2.png +++ b/workspace_setup/tutorial_files/bootcamp_pics/5_hierarchical_generator/hierachical_generator_2.png Binary files differ