# 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

# BAG socket configuration
socket:
  # the host running the database.  localhost if on the same machine.
  host: "localhost"
  # the port to communicate with.
  port_file: "BAG_server_port.txt"
  # the log file for socket communication debugging
  log_file: "BAG_socket.log"
  # number of messages allowed in a pipeline
  pipeline: 100

# CAD database configuration
# Right now only virtuoso is supported.
database:
  # the python class that handles database interaction.
  class: "bag.interface.oa.OAInterface"
  # default directory to create generated libraries in.
  default_lib_path: "${BAG_WORK_DIR}/gen_libs"
  # If true, then everytime we generate schematic/layout from BAG, all opened cellviews are closed
  close_all_cellviews: False

  # configurations for schematic import and generation
  schematic:
    # technology library to configure new libraries with
    tech_lib: "s8phirs_10r"
    # libraries to exclude for schematic import
    exclude_libraries: ["analogLib", "basic", "s8phirs_10r"]
    # libraries to exclude for modeling purposes
    model_exclude_libraries: []
    # cells to exclude for modeling purposes
    model_exclude_cells:
      basic: ['noConn']
  # configurations for testbench creation
  testbench:
    # config view global libraries
    config_libs: "s8phirs_10r analogLib basic"
    # config view cellviews
    config_views: "spectre schematic av_extracted veriloga"
    # config view stop cellviews
    config_stops: "spectre veriloga"
    # default simulation environment name
    default_env: "tt"
    # simulation environment file
    env_file: "${BAG_TECH_CONFIG_DIR}/corners_setup.yaml"
    # definition files to include
    def_files: []
  # configurations used to create a Checker object to run LVS/RCX
  checker:
    # the Checker class.
    checker_cls: 'bag.verification.calibre.Calibre'
    # program used to run extraction
    rcx_program: 'qrc'
    # maximum number of sub-processes BAG can launch.
    max_workers: 2
    # source.added location
    source_added_file: "${BAG_TECH_CONFIG_DIR}/calibre_setup/source.added"
    # root directories
    root_dir:
      drc: '${BAG_WORK_DIR}/calibre_run/drc'
      lvs: '${BAG_WORK_DIR}/calibre_run/lvs'
      rcx: '${BAG_WORK_DIR}/calibre_run/rcx'
    # jinja template control files
    template:
      drc: '${BAG_TECH_CONFIG_DIR}/calibre_setup/drc.svrf'
      lvs: '${BAG_TECH_CONFIG_DIR}/calibre_setup/lvs.svrf'
      rcx: ''
    # environment variables
    env_vars:
      drc: {}
      lvs: {}
      rcx: {}
    link_files:
      drc: []
      lvs: []
      rcx: []
    # default parameters
    params:
      drc: {}
      lvs: {}
      rcx: {}

# Simulation configurations
simulation:
  # python class that talks with the simulator
  class: "bag.simulation.spectre.SpectreInterface"
  # maximum number of processes BAG can launch.
  max_workers: 6
  # 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
  # corner configuration file
  env_file: "${BAG_TECH_CONFIG_DIR}/corners_setup.yaml"
  # command settings
  kwargs:
    # the command to start
    command: spectre
    # environment variables.  Null for same environment as SkillOceanServer.
    env: !!null
    # True to run in 64-bit mode
    run_64: True
    # output format
    format: psfxl
    # psf version
    psfversion: '1.1'
    options: ['++aps', '+lqtimeout', '0', '+mt=1', '+mp=1', '+postlayout', '+rcnet_fmax=25']
  compress: True
  rtol: 1.0e-8
  atol: 1.0e-22

# LEF generation configuration
lef:
  class: 'bag.interface.abstract.AbstractInterface'
  run_dir: 'abstract_run'
  options_file: '${BAG_TECH_CONFIG_DIR}/abstract_setup/bag_abstract.options'


# technology specific configuration are stored in a separate file.
# this field tells BAG where to look for it.
tech_config_path: "${BAG_TECH_CONFIG_DIR}/tech_config.yaml"

# BAG design libraries definition file.
lib_defs: "bag_libs.def"

# place to put new design libraries
new_lib_path: "BagModules"
