# 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

# cadence base libraries
DEFINE     analogLib    $CDSHOME/tools/dfII/etc/cdslib/artist/analogLib
DEFINE     basic        $CDSHOME/tools/dfII/etc/cdslib/basic
DEFINE     ahdlLib      $CDSHOME/tools/dfII/samples/artist/ahdlLib

# technology base libraries
DEFINE     s8phirs_10r  $BAG_TECH_CONFIG_DIR/workspace_setup/PDK/VirtuosoOA/libs/s8phirs_10r
# legacy libraries
DEFINE	   tech		$BAG_TECH_CONFIG_DIR/workspace_setup/PDK/VirtuosoOA/libs/tech 
DEFINE	   technology_library		$BAG_TECH_CONFIG_DIR/workspace_setup/PDK/VirtuosoOA/libs/technology_library 
DEFINE	   s8rf		$BAG_TECH_CONFIG_DIR/workspace_setup/PDK/VirtuosoOA/libs/s8rf 
DEFINE	   s8rf2	$BAG_TECH_CONFIG_DIR/workspace_setup/PDK/VirtuosoOA/libs/s8rf2 
DEFINE	   s8rf2_dv	$BAG_TECH_CONFIG_DIR/workspace_setup/PDK/VirtuosoOA/libs/s8rf2_dv
DEFINE	   scs8hd	/tools/commercial/skywater/swtech130/skywater-src-nda/scs8hd/V0.0.2/oa/scs8hd
DEFINE	   scs8hd_dv	/tools/commercial/skywater/swtech130/skywater-src-nda/scs8hd/V0.0.2/oa/scs8hd_dv

ASSIGN tech DISPLAY Invisible 
ASSIGN technology_library DISPLAY Invisible 
#ASSIGN s8rf DISPLAY Invisible 
#ASSIGN s8rf2 DISPLAY Invisible 
#ASSIGN s8rf2_dv DISPLAY Invisible 

# BAG Libraries
INCLUDE $BAG_WORK_DIR/cds.lib.bag
