SHELL = /bin/csh

#################################################################
#   S2R is the final step of the conception, it generates the   # 
#   real layout description using the desired technology        #
#################################################################

amd2901.gds : proof_end
	setenv MBK_IN_PH ap ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;\
	setenv RDS_TECHNO_NAME $(ALLIANCEDIR)/etc/prol15.rds ;\
	setenv RDS_IN gds ;\
	setenv RDS_OUT gds ;\
	s2r -c chip amd2901

#################################################################
# PROOF between amd.vbe chip.vbe				#
#################################################################

proof_end : chip.vbe amd.vbe
	setenv MBK_WORK_LIB . ;\
	proof -a -d amd chip ;\
	echo "proof_end done" >> proof_end

#################################################################
# DESB on the chip						#
#################################################################

chip.vbe : asimut_end
	setenv MBK_IN_LO al ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15 ;\
	desb chip -i -v

#################################################################
# asimution the chip						#
#################################################################

asimut_end : lvx_chip
	setenv MBK_IN_LO al ;\
	setenv VH_PATSFX pat ;\
	setenv VH_MAXERR 10 ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15 ;\
	asimut chip pattern res_pattern
	echo " asimut_end done " >> asimut_end

#################################################################
#   LVX of the chip                                             #
#################################################################

lvx_chip : chip.al
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;\
	lvx vst al chip chip
	echo " lvx_chip done" >> lvx_chip

#################################################################
#   LYNX of the chip                                            #
#################################################################

chip.al : versatil_chip
	setenv MBK_OUT_LO al ;\
	setenv MBK_IN_PH ap ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;\
	lynx chip 

#################################################################
#   VERSATIL is a design rules checker, it looks for design     #
#   in the layout description "chip.ap"                         #
#################################################################

versatil_chip : chip.ap lvx_core
	setenv MBK_IN_PH ap ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;\
	versatil chip ;\
	echo "versatil_chip done " >> versatil_chip

#################################################################
#   LVX of the core                                             #
#################################################################

lvx_core : core.al
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;\
	lvx vst al core core
	echo "lvx_core done " >> lvx_core

#################################################################
#   LYNX of the core                                            #
#################################################################

core.al : versatil_core
	setenv MBK_OUT_LO al ;\
	setenv MBK_IN_PH ap ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15 ;\
	lynx core 

#################################################################
#   VERSATIL is a design rules checker, it looks for design     #
#   in the layout description "core.ap"                         #
#################################################################

versatil_core : core.ap
	setenv MBK_IN_PH ap ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15 ;\
	versatil core ;\
	echo "versatil_core done " >> versatil_core

#################################################################
#   RING routes the connections between the pads and the core.  #
#################################################################

chip.ap : chip.vst core.ap chip.rin
	setenv MBK_IN_LO vst ;\
	setenv MBK_IN_PH ap ;\
	setenv MBK_OUT_PH ap ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;\
	ring chip chip 

#################################################################
#   SCR is a standard cells router, it makes an automatic       #
#   placement and routing of the "core.al" and gives the        #
#   corresponding layout description "core.ap".                 #
#################################################################

core.ap : asimut_vst
	setenv MBK_IN_PH ap ;\
	setenv MBK_OUT_PH ap ;\
	setenv MBK_IN_LO vst ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;\
	scr core core -p -r -i 1000

#################################################################
#   ASIMUT                                                      #
#   This time the "chip.vst" is                                 #
#   simulated by ASIMUT, using the test patternss "pattern.pat" #
#   previously generated in the behaviour step.                 #
#################################################################

asimut_vst : chip.vst
	setenv MBK_IN_LO vst ;\
	setenv VH_PATSFX pat ;\
	setenv VH_MAXERR 10 ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15 ;\
	asimut chip pattern result_str ;\
	echo "asimut_vst done " >> asimut_vst

#################################################################
#   GENLIB is a procedural design language upon C.              #
#   every netlist source files with a ".c" extension are compiled
#   by GENLIB which gives the corresponding gate netlists ended #
#   by ".vst" extension                                         #
#################################################################

chip.vst : asimut_first asimut_vbe chip.c
	setenv MBK_IN_LO vst ;\
	setenv MBK_OUT_LO vst ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15 ;\
	genlib chip

#################################################################
#   ASIMUT                                                      #
#   the  hardware behaviour description "amd.vbe" is            #
#   simulated by ASIMUT, using the test patterns                #
#   previously generated in "pattern.pat".                      #
#################################################################


asimut_vbe : pattern.pat
	setenv VH_MAXERR 10 ;\
 	setenv VH_PATSFX pat ;\
	setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;\
	asimut amd pattern result_beh -b ;\
	echo "asimut_vbe done " >> asimut_vbe

#################################################################
#  GENPAT generates the test pattern file "pattern.pat" from    #
#  the source file "pattern.c".                                 #
#################################################################

pattern.pat : asimut_first pattern.c 
	setenv MBK_WORK_LIB . ;\
	genpat pattern.c 

#################################################################
#  Asimut compilation						#
#################################################################

# setenv MBK_CATA_LIB .:$(ALLIANCEDIR)/cells/sclib:$(ALLIANCEDIR)/cells/padlib/pad15;

asimut_first : amd.vbe
	-setenv MBK_WORK_LIB . ;\
	setenv MBK_CATA_LIB . ; \
	asimut amd -b -c ;\
	echo $status ;\
	echo "asimut_first done " >> asimut_first

clean :
	-/bin/rm -f *.vst 
	-/bin/rm -f *.al 
	-/bin/rm -f *.ap 
	-/bin/rm -f *.pat 
	-/bin/rm -f *.grr
	-/bin/rm -f *.err
	-/bin/rm -f *.o
	-/bin/rm -f asimut_*
	-/bin/rm -f versatil_*
	-/bin/rm -f lvx_*
	-/bin/rm -f proof_end
	-/bin/rm -f *.lis
	-/bin/rm -f *.cif
	-/bin/rm -f amd2901.gds
	-/bin/rm -f chip.vbe
	-/bin/rm -f chip.d*
	-/bin/rm -f *.SHP
