#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright 2020 The SkyWater PDK Authors.
#
# Use of this source code is governed by the Apache 2.0
# license that can be found in the LICENSE file or at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0

Corner = namedtuple("Corner", "mod volts temps extra")
class CornerFlag(enum.Flag):
    t = 'Typical'  # all  nominal (typical) values
    f = 'Fast'     # fast, that is, values that make transistors run faster
    s = 'Slow'     # slow

    # "fs" is sometimes called "wp" meaning worst-case power,
    # "sf" is sometimes called "ws" meaning worst-case speed

    nointpr = 'No internal power'
    lv = 'Low voltage'
    ccsnoise = 'Composite Current Source Noise'

# 1p60V 5p50V n40C

# VOLTS_RE = re.compile('([0-9]p[0-9]+)V')
# TEMP_RE = re.compile('(n?)([0-9][0-9]+)C')


