################################################################
# $Id: Makefile 132 2010-08-18 10:29:03Z matutani $
################################################################

PIPO=		pipo
ICFB=		icfb
SCR_DIR=	scripts_misc

################################################################
# Setup
################################################################
setup:
	make allclean
	ln -s /home/vdec/lib/fujitsu65/CS200L_Technology100106/3.Physical_Verification/cal_drccs200l .
	ln -s /home/vdec/lib/fujitsu65/CS200L_Technology100106/3.Physical_Verification/cal_lvscs200l .
	ln -s /home/vdec/lib/fujitsu65/CS200L_Technology100106/3.Physical_Verification/cal_antcs200l .
	ln -s /home/vdec/lib/fujitsu65/CS200L_Technology100106/3.Physical_Verification/scripts .
	ln -s /home/vdec/lib/fujitsu65/CS200L_Technology100106/5.OPUSE_Enviroment/cs200l_layermaptable_r2.90 .
	ln -s /home/vdec/lib/fujitsu65/CS200L_Technology100106/5.OPUSE_Enviroment/cs200l_techfile_r2.90.il .
	ln -s /home/vdec/lib/fujitsu65/CS200L_Technology100106/5.OPUSE_Enviroment/cs200l_display_r2.90.drf display.drf
	mkdir input
	(cd input; ln -s ../../../CUBE_TOP/pr/CUBE_TOP_lvs.v .)
	(cd input; ln -s ../../../cube/pr/cube_lvs.v .)
	(cd input; ln -s ../../../ptp/pr/ptp_lvs.v .)
	(cd input; ln -s ../../../sb4/pr/sb4_lvs.v .)
	ln -s ../pr/CUBE_TOP.ed .
	ln -s ../frame/CS202 .
	ln -s ../frame/CUBE_TOP.gds .
	cp scripts_misc/dot.rsf.setup_drc .rsf.setup_drc
	cp scripts_misc/dot.rsf.setup_lvs .rsf.setup_lvs
	cp scripts_misc/dot.rsf.setup_ant .rsf.setup_ant

################################################################
# Add frame and stream out (make CUBE_TOP.addframe)
################################################################
%.addframe: 
	sed 's|__CELL_NAME__|$*|g' $(SCR_DIR)/addframe.template > $(SCR_DIR)/addframe.scr
	sed 's|__CELL_NAME__|$*|g' $(SCR_DIR)/streamout.template > $(SCR_DIR)/streamout.scr
	MGC_CALIBRE_LAYOUT_SERVER=$(shell hostname):9189 $(ICFB) -log icfb_$*.log -replay $(SCR_DIR)/addframe.scr &


%.open: 
	sed 's|__CELL_NAME__|$*|g' $(SCR_DIR)/open.template > $(SCR_DIR)/open.scr
	MGC_CALIBRE_LAYOUT_SERVER=$(shell hostname):9189 $(ICFB) icfb_$*.log -replay $(SCR_DIR)/open.scr &

%.clean:
	rm -rf ./CS202/$*_*

################################################################
# Make CDL file from Verilog file
################################################################
cube.cdl:
	v2lvs -64 -s0 VSS -s1 VDD \
	-addpin VNW -addpin VPW \
	-o ./cdl/cube.cdl \
	-v ./input/cube_lvs.v
	cat cdl/cube.cdl | sed  '/CONNECT VDD VDDBC/d' | sed  '/CONNECT VDD VDDBR/d' | sed  '/GLOBAL VDD/d' | sed  '/GLOBAL VSS/d' > cdl/cube_mod.cdl
	mv cdl/cube_mod.cdl cdl/cube.cdl
sb4.cdl:
	v2lvs -64 -s0 VSS -s1 VDD \
	-addpin VNW -addpin VPW \
	-o ./cdl/sb4.cdl \
	-v ./input/sb4_lvs.v
	cat cdl/sb4.cdl | sed  '/CONNECT VDD VDDBC/d' | sed  '/CONNECT VDD VDDBR/d' | sed  '/GLOBAL VDD/d' | sed  '/GLOBAL VSS/d' > cdl/sb4_mod.cdl
	mv cdl/sb4_mod.cdl cdl/sb4.cdl
ptp.cdl:
	v2lvs -64 -s0 VSS -s1 VDD \
	-addpin VNW -addpin VPW \
	-o ./cdl/ptp.cdl \
	-v ./input/ptp_lvs.v
	cat cdl/ptp.cdl | sed  '/CONNECT VDD VDDBC/d' | sed  '/CONNECT VDD VDDBR/d' | sed  '/GLOBAL VDD/d' | sed  '/GLOBAL VSS/d' > cdl/ptp_mod.cdl
	mv cdl/ptp_mod.cdl cdl/ptp.cdl
CUBE_TOP.cdl:
	v2lvs -64 -s0 VSS -s1 VDD \
	-addpin VNW -addpin VPW \
	-s ./VPW_VSS.cdl \
	-s ./YUZTAP.cdl \
	-s ./CORNER_WIRE.cdl \
	-s /home/vdec/lib/fujitsu65/cs202_sc_io_lib/cdl/CS202SZ/cs202sz_uc.cdl \
	-s /home/vdec/lib/fujitsu65/cs202_sc_io_lib/cdl/common/cs202_io.cdl \
	-s ./cube.cdl \
	-s ./ptp.cdl \
	-s ./sb4.cdl \
	-o ./cdl/CUBE_TOP.cdl \
	-v ./input/CUBE_TOP_lvs.v
	$(SCR_DIR)/rm_well_iocb.rb
	mv cdl/CUBE_TOP_mod.cdl cdl/CUBE_TOP.cdl
	$(SCR_DIR)/rm_well_corner.rb
	mv cdl/CUBE_TOP_mod.cdl cdl/CUBE_TOP.cdl
	cat cdl/CUBE_TOP.cdl | awk '{if($$2=="CUBE_TOP"){flag=1;print $$0;} else if(flag==1 && $$1!="+"){printf("+ VDDBC VDDBR VDD VSS VDE\n"); print $$0; flag=0;} else{print $$0;}}' > cdl/CUBE_TOP_mod.cdl
	mv cdl/CUBE_TOP_mod.cdl cdl/CUBE_TOP.cdl
	cat cdl/CUBE_TOP.cdl | awk '{if($$1=="Xptp1"){flag=1;print $$0;} else if(flag==1 && $$1!="+"){printf("+ VNW=VNW VPW=VPW\n"); print $$0; flag=0;} else{print $$0;}}' > cdl/CUBE_TOP_mod.cdl
	mv cdl/CUBE_TOP_mod.cdl cdl/CUBE_TOP.cdl
	cat cdl/CUBE_TOP.cdl | awk '{if($$1=="Xsb"){flag=1;print $$0;} else if(flag==1 && $$1!="+"){printf("+ VNW=VNW VPW=VPW\n"); print $$0; flag=0;} else{print $$0;}}' > cdl/CUBE_TOP_mod.cdl
	mv cdl/CUBE_TOP_mod.cdl cdl/CUBE_TOP.cdl
	cat cdl/CUBE_TOP.cdl | sed  '/CONNECT VDD VDDBC/d' | sed  '/CONNECT VDD VDDBR/d' | sed  '/GLOBAL VDD/d' | sed  '/GLOBAL VDE/d' | sed  '/GLOBAL VSS/d' > cdl/CUBE_TOP_mod.cdl
	mv cdl/CUBE_TOP_mod.cdl cdl/CUBE_TOP.cdl

################################################################
# Removed unused files
################################################################
DRC_XXX = CUBE_TOP_drc.* drc_result.ascii CUBE_TOP_drc_run.csh
LVS_XXX = CUBE_TOP_lvs.* CUBE_TOP.layout_net.gz CUBE_TOP_lvs_run.csh
ERC_XXX = CUBE_TOP_erc.*
ANT_XXX = CUBE_TOP_ant.* ant_result.ascii result_ANT_*.ascii CUBE_TOP_ant_run.csh
clean: 
	rm -f PIPO.LOG pipo_xout_info icfb_*.log v2lvs.log
	rm -f $(SCR_DIR)/open.scr
allclean:
	make clean
	rm -rf input
	rm -f  CS202 cds.lib
	rm -f  CUBE_TOP.gds CUBE_TOP.ed
	rm -f  cdl/cube.cdl cdl/sb4.cdl cdl/ptp.cdl cdl/CUBE_TOP.cdl
	rm -f  cal_drccs200l cal_lvscs200l cal_antcs200l scripts
	rm -f .rsf.setup_ant .rsf.setup_drc .rsf.setup_lvs
	rm -f  cs200l_layermaptable_r2.90 cs200l_techfile_r2.90.il display.drf
	rm -rf ${DRC_XXX}
	rm -rf ${LVS_XXX}
	rm -rf ${ERC_XXX}
	rm -rf ${ANT_XXX}

################################################################
