| ;; 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: |
| ;; * Dracula Interactive |
| ;; * High Capacity Power IR/EM |
| ;; * NC-Verilog-MaskLayout |
| ;; * Other-Layout |
| ;; * Other-MaskLayout |
| ;; * Other-Symbolic |
| ;; * Pcell |
| ;; * Power IR/EM |
| ;; * Spectre-Layout |
| ;; * Spectre-MaskLayout |
| ;; * Spectre-Symbolic |
| ;; * UltraSim-Layout |
| ;; * UltraSim-MaskLayout |
| ;; * UltraSim-Symbolic |
| ;; * VLS-GXL |
| ;; * Virtuoso CE |
| ;; * Virtuoso XL |
| ;; * adegxl-maskLayout |
| ;; * adexl-maskLayout |
| ;; * parasitics-MaskLayout |
| ;;----------------------------------------------------------------------------- |
| |
| procedure(enable_sch_layers() |
| leSetLayerVisible( list("wire" "label") t ) |
| leSetLayerVisible( list("wire" "drawing") t ) |
| leSetLayerVisible( list("pin" "label") t ) |
| leSetLayerVisible( list("pin" "drawing") t ) |
| leSetLayerVisible( list("device" "drawing") t ) |
| leSetLayerVisible( list("device" "drawing1") t ) |
| leSetLayerVisible( list("device" "label") t ) |
| leSetLayerVisible( list("instance" "label") t ) |
| leSetLayerVisible( list("border" "drawing") t ) |
| |
| leSetLayerVisible( list("instance" "drawing") t ) |
| leSetLayerVisible( list("text" "drawing") t ) |
| leSetLayerVisible( list("device" "annotate") t ) |
| ) |
| |
| procedure(show_od_m1() |
| leSetEntryLayer(list("poly" "drawing")) |
| leSetAllLayerVisible(nil) |
| leSetLayerVisible(list("nwell" "drawing") t) |
| leSetLayerVisible(list("nsdm" "drawing") t) |
| leSetLayerVisible(list("psdm" "drawing") t) |
| leSetLayerVisible(list("npc" "drawing") t) |
| leSetLayerVisible(list("diff" "drawing") t) |
| leSetLayerVisible(list("tap" "drawing") t) |
| leSetLayerVisible(list("poly" "drawing") t) |
| leSetLayerVisible(list("lvtn" "drawing") t) |
| leSetLayerVisible(list("hvtp" "drawing") t) |
| leSetLayerVisible(list("li1" "drawing") t) |
| leSetLayerVisible(list("licon1" "drawing") t) |
| leSetLayerVisible(list("mcon" "drawing") t) |
| leSetLayerVisible(list("met1" "drawing") t) |
| leSetLayerVisible(list("met1" "pin") t) |
| |
| enable_sch_layers() |
| hiRedraw() |
| ) |
| |
| procedure(toggle_od() |
| leSetLayerVisible(list("diff" "drawing") not(leIsLayerVisible(list("diff" "drawing")))) |
| hiRedraw() |
| ) |
| |
| procedure( show_adjacent_metals( bot_layer ) |
| let( (bot_name top_name via_name bot_dum top_dum) |
| sprintf(bot_name "met%d" bot_layer) |
| if( bot_layer < 2 then |
| sprintf(via_name "via") |
| else |
| 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) |
| leSetLayerVisible(list(bot_name "pin") t) |
| leSetLayerVisible(list(top_name "drawing") t) |
| leSetLayerVisible(list(top_name "pin") t) |
| leSetLayerVisible(list(via_name "drawing") t) |
| enable_sch_layers() |
| hiRedraw() |
| ) |
| ) |
| |
| |
| procedure( toggle_metal( layer_id ) |
| let( (metal_name draw_layer dum_layer pin_layer exc_layer) |
| sprintf(metal_name "met%d" layer_id) |
| draw_layer = list(metal_name "drawing") |
| pin_layer = list(metal_name "pin") |
| leSetLayerVisible(draw_layer not(leIsLayerVisible(draw_layer))) |
| leSetLayerVisible(pin_layer not(leIsLayerVisible(pin_layer))) |
| hiRedraw() |
| ) |
| ) |
| |
| |
| hiSetBindKeys( "Layout" list( |
| list("Ctrl<Key>q" "leSetAllLayerVisible(t) hiRedraw()") |
| list("<Key>`" "show_od_m1()") |
| list("<Key>1" "show_adjacent_metals(1)") |
| list("<Key>2" "show_adjacent_metals(2)") |
| list("<Key>3" "show_adjacent_metals(3)") |
| list("<Key>4" "show_adjacent_metals(4)") |
| list("<Key>5" "show_adjacent_metals(5)") |
| list("<Key>6" "show_adjacent_metals(6)") |
| list("<Key>7" "show_adjacent_metals(7)") |
| list("<Key>8" "show_adjacent_metals(8)") |
| list("<Key>9" "show_adjacent_metals(9)") |
| list("Ctrl<Key>`" "toggle_od()") |
| list("Ctrl<Key>1" "toggle_metal(1)") |
| list("Ctrl<Key>2" "toggle_metal(2)") |
| list("Ctrl<Key>3" "toggle_metal(3)") |
| list("Ctrl<Key>4" "toggle_metal(4)") |
| list("Ctrl<Key>5" "toggle_metal(5)") |
| list("Ctrl<Key>6" "toggle_metal(6)") |
| list("Ctrl<Key>7" "toggle_metal(7)") |
| list("Ctrl<Key>8" "toggle_metal(8)") |
| list("Ctrl<Key>9" "toggle_metal(9)") |
| list("Ctrl<Key>10" "toggle_metal(10)") |
| )) |