// 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
MM0 D G S B nhv l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends nmos4_hv

subckt nmos4_hvesd B D G S
parameters l w nf
MM0 D G S B nhvesd l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends nmos4_hvesd

subckt nmos4_svt B D G S
parameters l w nf
MM0 D G S B nshort l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends nmos4_svt

subckt nmos4_lvt B D G S
parameters l w nf
MM0 D G S B nlowvt l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends nmos4_lvt

subckt nmos4_standard B D G S
parameters l w nf
MM0 D G S B nshort l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends nmos4_standard

subckt pmos4_hv B D G S
parameters l w nf
MM0 D G S B phv l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends pmos4_hv

subckt pmos4_hvesd B D G S
parameters l w nf
MM0 D G S B phvesd l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends pmos4_hvesd

subckt pmos4_svt B D G S
parameters l w nf
MM0 D G S B pshort l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends pmos4_svt

subckt pmos4_lvt B D G S
parameters l w nf
MM0 D G S B plowvt l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends pmos4_lvt

subckt pmos4_hvt B D G S
parameters l w nf
MM0 D G S B phighvt l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends pmos4_hvt

subckt pmos4_standard B D G S
parameters l w nf
MM0 D G S B pshort l=l * 1.0e6 w=w * 1.0e6 m=nf mult=1
ends pmos4_standard

subckt ideal_balun d c p n
    K0 d 0 p c transformer n1=2
    K1 d 0 c n transformer n1=2
ends ideal_balun
