from siliconcompiler import Design

from .la_and2.la_and2 import And2
from .la_and3.la_and3 import And3
from .la_and4.la_and4 import And4
from .la_ao21.la_ao21 import Ao21
from .la_ao211.la_ao211 import Ao211
from .la_ao22.la_ao22 import Ao22
from .la_ao221.la_ao221 import Ao221
from .la_ao222.la_ao222 import Ao222
from .la_ao31.la_ao31 import Ao31
from .la_ao311.la_ao311 import Ao311
from .la_ao32.la_ao32 import Ao32
from .la_ao33.la_ao33 import Ao33
from .la_aoi21.la_aoi21 import Aoi21
from .la_aoi211.la_aoi211 import Aoi211
from .la_aoi22.la_aoi22 import Aoi22
from .la_aoi221.la_aoi221 import Aoi221
from .la_aoi222.la_aoi222 import Aoi222
from .la_aoi31.la_aoi31 import Aoi31
from .la_aoi311.la_aoi311 import Aoi311
from .la_aoi32.la_aoi32 import Aoi32
from .la_aoi33.la_aoi33 import Aoi33
from .la_buf.la_buf import Buf
from .la_clkand2.la_clkand2 import Clkand2
from .la_clkbuf.la_clkbuf import Clkbuf
from .la_clkinv.la_clkinv import Clkinv
from .la_clknand2.la_clknand2 import Clknand2
from .la_clknor2.la_clknor2 import Clknor2
from .la_clkor2.la_clkor2 import Clkor2
from .la_clkor4.la_clkor4 import Clkor4
from .la_clkxor2.la_clkxor2 import Clkxor2
from .la_csa32.la_csa32 import Csa32
from .la_csa42.la_csa42 import Csa42
from .la_delay.la_delay import Delay
from .la_dffnq.la_dffnq import Dffnq
from .la_dffq.la_dffq import Dffq
from .la_dffqn.la_dffqn import Dffqn
from .la_dffrq.la_dffrq import Dffrq
from .la_dffrqn.la_dffrqn import Dffrqn
from .la_dffsq.la_dffsq import Dffsq
from .la_dffsqn.la_dffsqn import Dffsqn
from .la_dmux2.la_dmux2 import Dmux2
from .la_dmux3.la_dmux3 import Dmux3
from .la_dmux4.la_dmux4 import Dmux4
from .la_dmux5.la_dmux5 import Dmux5
from .la_dmux6.la_dmux6 import Dmux6
from .la_dmux7.la_dmux7 import Dmux7
from .la_dmux8.la_dmux8 import Dmux8
from .la_inv.la_inv import Inv
from .la_latnq.la_latnq import Latnq
from .la_latq.la_latq import Latq
from .la_mux2.la_mux2 import Mux2
from .la_mux3.la_mux3 import Mux3
from .la_mux4.la_mux4 import Mux4
from .la_muxi2.la_muxi2 import Muxi2
from .la_muxi3.la_muxi3 import Muxi3
from .la_muxi4.la_muxi4 import Muxi4
from .la_nand2.la_nand2 import Nand2
from .la_nand3.la_nand3 import Nand3
from .la_nand4.la_nand4 import Nand4
from .la_nor2.la_nor2 import Nor2
from .la_nor3.la_nor3 import Nor3
from .la_nor4.la_nor4 import Nor4
from .la_oa21.la_oa21 import Oa21
from .la_oa211.la_oa211 import Oa211
from .la_oa22.la_oa22 import Oa22
from .la_oa221.la_oa221 import Oa221
from .la_oa222.la_oa222 import Oa222
from .la_oa31.la_oa31 import Oa31
from .la_oa311.la_oa311 import Oa311
from .la_oa32.la_oa32 import Oa32
from .la_oa33.la_oa33 import Oa33
from .la_oai21.la_oai21 import Oai21
from .la_oai22.la_oai22 import Oai22
from .la_oai221.la_oai221 import Oai221
from .la_oai222.la_oai222 import Oai222
from .la_oai31.la_oai31 import Oai31
from .la_oai311.la_oai311 import Oai311
from .la_oai32.la_oai32 import Oai32
from .la_oai33.la_oai33 import Oai33
from .la_or2.la_or2 import Or2
from .la_or3.la_or3 import Or3
from .la_or4.la_or4 import Or4
from .la_sdffq.la_sdffq import Sdffq
from .la_sdffqn.la_sdffqn import Sdffqn
from .la_sdffrq.la_sdffrq import Sdffrq
from .la_sdffrqn.la_sdffrqn import Sdffrqn
from .la_sdffsq.la_sdffsq import Sdffsq
from .la_sdffsqn.la_sdffsqn import Sdffsqn
from .la_tiehi.la_tiehi import Tiehi
from .la_tielo.la_tielo import Tielo
from .la_xnor2.la_xnor2 import Xnor2
from .la_xnor3.la_xnor3 import Xnor3
from .la_xnor4.la_xnor4 import Xnor4
from .la_xor2.la_xor2 import Xor2
from .la_xor3.la_xor3 import Xor3
from .la_xor4.la_xor4 import Xor4

__all__ = ['And2',
           'And3',
           'And4',
           'Ao21',
           'Ao211',
           'Ao22',
           'Ao221',
           'Ao222',
           'Ao31',
           'Ao311',
           'Ao32',
           'Ao33',
           'Aoi21',
           'Aoi211',
           'Aoi22',
           'Aoi221',
           'Aoi222',
           'Aoi31',
           'Aoi311',
           'Aoi32',
           'Aoi33',
           'Buf',
           'Clkand2',
           'Clkbuf',
           'Clkinv',
           'Clknand2',
           'Clknor2',
           'Clkor2',
           'Clkor4',
           'Clkxor2',
           'Csa32',
           'Csa42',
           'Delay',
           'Dffnq',
           'Dffq',
           'Dffqn',
           'Dffrq',
           'Dffrqn',
           'Dffsq',
           'Dffsqn',
           'Dmux2',
           'Dmux3',
           'Dmux4',
           'Dmux5',
           'Dmux6',
           'Dmux7',
           'Dmux8',
           'Inv',
           'Latnq',
           'Latq',
           'Mux2',
           'Mux3',
           'Mux4',
           'Muxi2',
           'Muxi3',
           'Muxi4',
           'Nand2',
           'Nand3',
           'Nand4',
           'Nor2',
           'Nor3',
           'Nor4',
           'Oa21',
           'Oa211',
           'Oa22',
           'Oa221',
           'Oa222',
           'Oa31',
           'Oa311',
           'Oa32',
           'Oa33',
           'Oai21',
           'Oai22',
           'Oai221',
           'Oai222',
           'Oai31',
           'Oai311',
           'Oai32',
           'Oai33',
           'Or2',
           'Or3',
           'Or4',
           'Sdffq',
           'Sdffqn',
           'Sdffrq',
           'Sdffrqn',
           'Sdffsq',
           'Sdffsqn',
           'Tiehi',
           'Tielo',
           'Xnor2',
           'Xnor3',
           'Xnor4',
           'Xor2',
           'Xor3',
           'Xor4']


class STDLib(Design):
    def __init__(self):
        super().__init__("la_stdlib")

        with self.active_fileset("rtl"):
            self.add_depfileset(And2(), depfileset="rtl")
            self.add_depfileset(And3(), depfileset="rtl")
            self.add_depfileset(And4(), depfileset="rtl")
            self.add_depfileset(Ao21(), depfileset="rtl")
            self.add_depfileset(Ao211(), depfileset="rtl")
            self.add_depfileset(Ao22(), depfileset="rtl")
            self.add_depfileset(Ao221(), depfileset="rtl")
            self.add_depfileset(Ao222(), depfileset="rtl")
            self.add_depfileset(Ao31(), depfileset="rtl")
            self.add_depfileset(Ao311(), depfileset="rtl")
            self.add_depfileset(Ao32(), depfileset="rtl")
            self.add_depfileset(Ao33(), depfileset="rtl")
            self.add_depfileset(Aoi21(), depfileset="rtl")
            self.add_depfileset(Aoi211(), depfileset="rtl")
            self.add_depfileset(Aoi22(), depfileset="rtl")
            self.add_depfileset(Aoi221(), depfileset="rtl")
            self.add_depfileset(Aoi222(), depfileset="rtl")
            self.add_depfileset(Aoi31(), depfileset="rtl")
            self.add_depfileset(Aoi311(), depfileset="rtl")
            self.add_depfileset(Aoi32(), depfileset="rtl")
            self.add_depfileset(Aoi33(), depfileset="rtl")
            self.add_depfileset(Buf(), depfileset="rtl")
            self.add_depfileset(Clkand2(), depfileset="rtl")
            self.add_depfileset(Clkbuf(), depfileset="rtl")
            self.add_depfileset(Clkinv(), depfileset="rtl")
            self.add_depfileset(Clknand2(), depfileset="rtl")
            self.add_depfileset(Clknor2(), depfileset="rtl")
            self.add_depfileset(Clkor2(), depfileset="rtl")
            self.add_depfileset(Clkor4(), depfileset="rtl")
            self.add_depfileset(Clkxor2(), depfileset="rtl")
            self.add_depfileset(Csa32(), depfileset="rtl")
            self.add_depfileset(Csa42(), depfileset="rtl")
            self.add_depfileset(Delay(), depfileset="rtl")
            self.add_depfileset(Dffnq(), depfileset="rtl")
            self.add_depfileset(Dffq(), depfileset="rtl")
            self.add_depfileset(Dffqn(), depfileset="rtl")
            self.add_depfileset(Dffrq(), depfileset="rtl")
            self.add_depfileset(Dffrqn(), depfileset="rtl")
            self.add_depfileset(Dffsq(), depfileset="rtl")
            self.add_depfileset(Dffsqn(), depfileset="rtl")
            self.add_depfileset(Dmux2(), depfileset="rtl")
            self.add_depfileset(Dmux3(), depfileset="rtl")
            self.add_depfileset(Dmux4(), depfileset="rtl")
            self.add_depfileset(Dmux5(), depfileset="rtl")
            self.add_depfileset(Dmux6(), depfileset="rtl")
            self.add_depfileset(Dmux7(), depfileset="rtl")
            self.add_depfileset(Dmux8(), depfileset="rtl")
            self.add_depfileset(Inv(), depfileset="rtl")
            self.add_depfileset(Latnq(), depfileset="rtl")
            self.add_depfileset(Latq(), depfileset="rtl")
            self.add_depfileset(Mux2(), depfileset="rtl")
            self.add_depfileset(Mux3(), depfileset="rtl")
            self.add_depfileset(Mux4(), depfileset="rtl")
            self.add_depfileset(Muxi2(), depfileset="rtl")
            self.add_depfileset(Muxi3(), depfileset="rtl")
            self.add_depfileset(Muxi4(), depfileset="rtl")
            self.add_depfileset(Nand2(), depfileset="rtl")
            self.add_depfileset(Nand3(), depfileset="rtl")
            self.add_depfileset(Nand4(), depfileset="rtl")
            self.add_depfileset(Nor2(), depfileset="rtl")
            self.add_depfileset(Nor3(), depfileset="rtl")
            self.add_depfileset(Nor4(), depfileset="rtl")
            self.add_depfileset(Oa21(), depfileset="rtl")
            self.add_depfileset(Oa211(), depfileset="rtl")
            self.add_depfileset(Oa22(), depfileset="rtl")
            self.add_depfileset(Oa221(), depfileset="rtl")
            self.add_depfileset(Oa222(), depfileset="rtl")
            self.add_depfileset(Oa31(), depfileset="rtl")
            self.add_depfileset(Oa311(), depfileset="rtl")
            self.add_depfileset(Oa32(), depfileset="rtl")
            self.add_depfileset(Oa33(), depfileset="rtl")
            self.add_depfileset(Oai21(), depfileset="rtl")
            self.add_depfileset(Oai22(), depfileset="rtl")
            self.add_depfileset(Oai221(), depfileset="rtl")
            self.add_depfileset(Oai222(), depfileset="rtl")
            self.add_depfileset(Oai31(), depfileset="rtl")
            self.add_depfileset(Oai311(), depfileset="rtl")
            self.add_depfileset(Oai32(), depfileset="rtl")
            self.add_depfileset(Oai33(), depfileset="rtl")
            self.add_depfileset(Or2(), depfileset="rtl")
            self.add_depfileset(Or3(), depfileset="rtl")
            self.add_depfileset(Or4(), depfileset="rtl")
            self.add_depfileset(Sdffq(), depfileset="rtl")
            self.add_depfileset(Sdffqn(), depfileset="rtl")
            self.add_depfileset(Sdffrq(), depfileset="rtl")
            self.add_depfileset(Sdffrqn(), depfileset="rtl")
            self.add_depfileset(Sdffsq(), depfileset="rtl")
            self.add_depfileset(Sdffsqn(), depfileset="rtl")
            self.add_depfileset(Tiehi(), depfileset="rtl")
            self.add_depfileset(Tielo(), depfileset="rtl")
            self.add_depfileset(Xnor2(), depfileset="rtl")
            self.add_depfileset(Xnor3(), depfileset="rtl")
            self.add_depfileset(Xnor4(), depfileset="rtl")
            self.add_depfileset(Xor2(), depfileset="rtl")
            self.add_depfileset(Xor3(), depfileset="rtl")
            self.add_depfileset(Xor4(), depfileset="rtl")
