// 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}}

SOURCE PATH "{{ netlist_file }}"
SOURCE PRIMARY "{{ cell_name }}"
SOURCE SYSTEM SPICE

MASK SVDB DIRECTORY "svdb" QUERY CCI

LVS REPORT "{{ cell_name }}.lvs.report"

LVS REPORT OPTION NONE
LVS FILTER UNUSED OPTION NONE SOURCE
LVS FILTER UNUSED OPTION NONE LAYOUT
LVS FILTER R(SH) SHORT SOURCE
LVS REPORT MAXIMUM 50
LVS POWER NAME VDD
LVS GROUND NAME VSS

LVS RECOGNIZE GATES NONE

LVS REDUCE SPLIT GATES NO
LVS REDUCE PARALLEL MOS YES
LVS SHORT EQUIVALENT NODES NO

LVS ABORT ON SOFTCHK NO
LVS ABORT ON SUPPLY ERROR YES
LVS IGNORE PORTS NO
LVS SHOW SEED PROMOTIONS NO
LVS SHOW SEED PROMOTIONS MAXIMUM 50

LVS ISOLATE SHORTS NO

VIRTUAL CONNECT COLON YES
VIRTUAL CONNECT REPORT NO

LVS EXECUTE ERC YES
ERC RESULTS DATABASE "{{ cell_name }}.erc.results"
ERC SUMMARY REPORT "{{ cell_name }}.erc.summary" REPLACE HIER
ERC CELL NAME YES CELL SPACE XFORM
ERC MAXIMUM RESULTS 1000
ERC MAXIMUM VERTEX 4096

DRC ICSTATION YES

INCLUDE "$PDK_HOME/LVS/Calibre/lvs_s8_opts"
