# ALLIANCE MULTIPLIER Tutorial ( christian_michon@yahoo.fr )
# Version 1.0 / 16th Oct 2001 
#
# RELEASE NOTES: 
# * working with ALLIANCE 4.0.6
# * only this Makefile and the <src> directory need to be kept
# * the design is just the result from a AMG run (6x6 multiplier)
# * design flow could be improved with PROOF use
# * comments/critics/improvements are welcome !!!

SHELL	=	/bin/csh

DREAL	=	$(ALLIANCE_TOP)/bin/dreal
DRUC	=	$(ALLIANCE_TOP)/bin/druc
LVX	=	$(ALLIANCE_TOP)/bin/lvx
LYNX	=	$(ALLIANCE_TOP)/bin/lynx
RING	=	$(ALLIANCE_TOP)/bin/ring
S2R	=	$(ALLIANCE_TOP)/bin/s2r
SCMAP	=	$(ALLIANCE_TOP)/bin/scmap
SCR	=	$(ALLIANCE_TOP)/bin/scr

ENV_SCMAP =	setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sclib			; \
		setenv MBK_TARGET_LIB	$(ALLIANCE_TOP)/cells/sclib			;

ENV_SCR	=	setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sc2sxlib:${MBK_CATA_LIB}	; \
		setenv MBK_TARGET_LIB	$(ALLIANCE_TOP)/cells/sxlib			;

END_DRUC =	setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sc2sxlib:${MBK_CATA_LIB}	; \
		setenv MBK_TARGET_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_IN_PH	ap						; \
		setenv RDS_OUT		cif						; \
		setenv RDS_TECHNO_NAME	$(ALLIANCE_TOP)/etc/cmos_8.rds			;

END_LYNX =	setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sc2sxlib:${MBK_CATA_LIB}	; \
		setenv MBK_TARGET_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_IN_PH	ap						; \
		setenv MBK_OUT_LO	al						; \
		setenv RDS_TECHNO_NAME	$(ALLIANCE_TOP)/etc/cmos_8.rds			;

ENV_LVX =	setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sc2sxlib:${MBK_CATA_LIB}	; \
		setenv MBK_TARGET_LIB	$(ALLIANCE_TOP)/cells/sxlib			;

ENV_RING =	setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sc2sxlib:${MBK_CATA_LIB}	; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/padlib:${MBK_CATA_LIB}	; \
		setenv MBK_IN_LO	vst						; \
		setenv MBK_IN_PH	ap						; \
		setenv MBK_OUT_PH	ap						; \
		setenv MBK_WORK_LIB	.						;

ENV_GDSOUT =	setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sc2sxlib:${MBK_CATA_LIB}	; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/padlib:${MBK_CATA_LIB}	; \
		setenv MBK_TARGET_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv RDS_IN		cif						; \
		setenv RDS_OUT		gds						; \
		setenv RDS_TECHNO_NAME	$(ALLIANCE_TOP)/etc/prol10_8.rds		;

ENV_CIFOUT =	setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/sc2sxlib:${MBK_CATA_LIB}	; \
		setenv MBK_CATA_LIB	$(ALLIANCE_TOP)/cells/padlib:${MBK_CATA_LIB}	; \
		setenv MBK_TARGET_LIB	$(ALLIANCE_TOP)/cells/sxlib			; \
		setenv RDS_IN		cif						; \
		setenv RDS_OUT		cif						; \
		setenv RDS_TECHNO_NAME	$(ALLIANCE_TOP)/etc/prol10_8.rds		;

all : top.drc top.lvx top.gds top.cif

top.lvx : top.al
	@$(ENV_LVX) ; $(LVX) vst al top top -f
	@/bin/touch top.lvx

top.al : top.ap
	@$(END_LYNX) ; $(LYNX) -v top top

top.drc : top.ap
	@$(END_DRUC) ; $(DRUC) top

top.cif : top.ap
	@$(ENV_CIFOUT) ; $(S2R) -v top ; $(DREAL) -l top

top.gds : top.ap
	@$(ENV_GDSOUT) ; $(S2R) -v top

top.ap : top.vst top.rin multiplier.drc multiplier.lvx
	@$(ENV_RING) ; $(RING) top top

top.vst :
	@/bin/cp -f src/top.vst .

top.rin :
	@/bin/cp -f src/top.rin .

multiplier.lvx : multiplier.al
	@$(ENV_LVX) ; $(LVX) vst al multiplier multiplier -f
	@/bin/touch multiplier.lvx

multiplier.al : multiplier.ap
	@$(END_LYNX) ; $(LYNX) -v multiplier multiplier

multiplier.drc : multiplier.ap
	@$(END_DRUC) ; $(DRUC) multiplier

multiplier.ap : multiplier.vst
	@$(ENV_SCR) ; $(SCR) -p -r multiplier

multiplier.vst : rlx.lax multiplier.vbe
	@$(ENV_SCMAP) ; $(SCMAP) multiplier multiplier rlx

rlx.lax :
	@/bin/cp -f src/rlx.lax .

multiplier.vbe :
	@/bin/cp -f src/multiplier.vbe .

clean :
	/bin/chmod 644 *.* ; /bin/rm -f *.*
