# Author:  Andres Farfan
# Date  :  26/03/2000
# Time  :  04:35

# Alliance binary access paths.
ALLIANCE_BIN =$(ALLIANCE_TOP)/bin
ALLIANCE_CELLS=$(ALLIANCE_TOP)/cells


## ************************* Various MBK environment *************************

# Alliance leaf cells libraries paths.
# ====================================

   BSG_LIB= $(ALLIANCE_CELLS)/bsg
    SCLIB = $(ALLIANCE_CELLS)/sclib
    SXLIB = $(ALLIANCE_CELLS)/sxlib
 SC2SXLIB = $(ALLIANCE_CELLS)/sc2sxlib
  RSA_LIB = $(ALLIANCE_CELLS)/rsa
    DPLIB = $(ALLIANCE_CELLS)/dplib
    FPLIB = $(ALLIANCE_CELLS)/fplib
    PADLIB= $(ALLIANCE_CELLS)/padlib
FPGEN_LIB = ./mclib

 CTRL_CATA_LIB = $(SXLIB):$(PADLIB)
 
# MBK environment common to all Alliance tools.
# =============================================
MBK_CTRL  = MBK_WORK_LIB=.;           export MBK_WORK_LIB;   \
		   MBK_CATA_LIB=$(CTRL_CATA_LIB); export MBK_CATA_LIB;   \
		   MBK_CATAL_NAME=CATAL;     export MBK_CATAL_NAME; \
		   MBK_VDD=vdd;              export MBK_VDD;        \
		   MBK_VSS=vss;              export MBK_VSS;        \
		   MBK_SEPAR=.;              export MBK_SEPAR;      \
           MBK_TARGET_LIB=$(SXLIB);  export MBK_TARGET_LIB


# Avalaibles MBK netlist and layout formats.
# ==========================================
MBK_VST  = MBK_OUT_LO=vst; export MBK_OUT_LO; MBK_IN_LO=vst; export MBK_IN_LO
MBK_AL   = MBK_OUT_LO=al;  export MBK_OUT_LO; MBK_IN_LO=al;  export MBK_IN_LO
MBK_AP   = MBK_OUT_PH=ap;  export MBK_OUT_PH; MBK_IN_PH=ap;  export MBK_IN_PH


# Alliance Tools with the correct MBK environment.
# ================================================
      BOP = $(MBK_CTRL); $(MBK_VST); $(MBK_AP); $(ALLIANCE_BIN)/bop
    SCMAP = $(MBK_CTRL); $(MBK_VST); $(MBK_AP); $(ALLIANCE_BIN)/scmap
      SCR = $(MBK_CTRL); $(MBK_VST); $(MBK_AP); $(ALLIANCE_BIN)/scr
     RSA  =                                    $(ALLIANCE_BIN)/rsa
   GENPAT = $(MBK_CTRL);                       $(ALLIANCE_BIN)/genpat
   GENLIB = $(MBK_CTRL);                       $(ALLIANCE_BIN)/genlib
   ASIMUT = $(MBK_CTRL);                       $(ALLIANCE_BIN)/asimut
     GLOP = $(MBK_CTRL); $(MBK_VST);           $(ALLIANCE_BIN)/glop
     DRUC =                                    $(ALLIANCE_BIN)/druc
     LYNX =                                    $(ALLIANCE_BIN)/lynx
      LVX = 				       $(ALLIANCE_BIN)/lvx
     XSCH = $(MBK_CTRL);                       $(ALLIANCE_BIN)/xsch
    GRAAL = $(MBK_CTRL);		       $(ALLIANCE_BIN)/graal
    XSCH  = $(MBK_CTRL);		       $(ALLIANCE_BIN)/xsch 
#########################################################################

##############################
#Specific rules
###############################
CORE = decoder

vst1.pat: $(CORE)_genpat.pat $(CORE).vst
	$(ASIMUT) $(CORE) $(CORE)_genpat vst1;\

vbe.pat: $(CORE)_genpat.pat $(CORE).vbe
	$(ASIMUT) -b $(CORE) $(CORE)_genpat vbe;\


decoder.vst: decoder_glop.vst
	mv decoder_glop.vst decoder.vst

decoder.ap: decoder_scr.ap
	mv decoder_scr.ap decoder.ap



###################################################
# Routing the Control Block
# Implicit rules
###################################################
%_scr.ap: %_glop.vst
	$(SCR) -p -r -i 1000 -o $(subst .ap,,$@)  $(subst .vst,,$<)

%_glop.vst: %_scmap.vst
	$(GLOP) -g $(subst .vst,,$<) $(subst .vst,,$@)

%_scmap.vst: %_bop.vbe
	$(SCMAP) $(subst .vbe,,$<) $(subst .vst,,$@)

%_bop.vbe: %.vbe
	$(BOP) -o $(subst .vbe,,$<) $(subst .vbe,,$@)




%_genpat.pat: %_genpat.c
	$(GENPAT) -v $(subst .c,,$<)




##############################
.PHONY : clean _graal _xsch

_xsch:
	$(XSCH)
_graal:	
	$(GRAAL)



#################################################
# Remove generated files                        # 
#################################################	
clean:
	rm -f *.ap;\
	rm -f *.al;\
	rm -f *.rep;\
	rm -f *.ttx;\
	rm -f *.drc;\
	rm -f *.cif;\
	rm -f *.pat;\
	rm -f *_bop.vbe *_scmap.vst *_glop.vst;\
	rm -f decoder.vst;\