1# /*------------------------------------------------------------\
2# |                                                             |
3# | File   :                    Makefile                        |
4# |                                                             |
5# | Author :                 Jacomme Ludovic                    |
6# |                                                             |
7# \------------------------------------------------------------*/
8# /*------------------------------------------------------------\
9# |                                                             |
10# |                              Cells                          |
11# |                                                             |
12# \------------------------------------------------------------*/
13# /*------------------------------------------------------------\
14# |                                                             |
15# |                             Binary                          |
16# |                                                             |
17# \------------------------------------------------------------*/
18
19include ../etc/alliance-env.mk
20
21VASY   = $(ALLIANCE_BIN)/vasy
22ASIMUT = $(ALLIANCE_BIN)/asimut
23BOOM   = $(ALLIANCE_BIN)/boom
24BOOG   = $(ALLIANCE_BIN)/boog
25LOON   = $(ALLIANCE_BIN)/loon
26OCP    = $(ALLIANCE_BIN)/ocp
27NERO   = $(ALLIANCE_BIN)/nero
28COUGAR = $(ALLIANCE_BIN)/cougar
29LVX    = $(ALLIANCE_BIN)/lvx
30DRUC   = $(ALLIANCE_BIN)/druc
31S2R    = $(ALLIANCE_BIN)/s2r
32
33DREAL  = $(ALLIANCE_BIN)/dreal
34GRAAL  = $(ALLIANCE_BIN)/graal
35XSCH   = $(ALLIANCE_BIN)/xsch
36XPAT   = $(ALLIANCE_BIN)/xpat
37XFSM   = $(ALLIANCE_BIN)/xfsm
38
39TOUCH  = touch
40
41TARGET_LIB      = $(CELLS_TOP)/sxlib
42METAL_LEVEL     = 2
43
44# /*------------------------------------------------------------\
45# |                                                             |
46# |                            Environement                     |
47# |                                                             |
48# \------------------------------------------------------------*/
49
50ENV_VASY = MBK_WORK_LIB=.; export MBK_WORK_LIB;\
51           MBK_CATAL_NAME=NO_CATAL; export MBK_CATAL_NAME
52
53ENV_BOOM = MBK_WORK_LIB=.; export MBK_WORK_LIB;\
54           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
55
56ENV_BOOG = MBK_WORK_LIB=.; export MBK_WORK_LIB; \
57           MBK_IN_LO=vst; export MBK_IN_LO; \
58	   MBK_OUT_LO=vst; export MBK_OUT_LO; \
59           MBK_TARGET_LIB=$(TARGET_LIB); export MBK_TARGET_LIB; \
60           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
61
62ENV_LOON = MBK_WORK_LIB=.; export MBK_WORK_LIB; \
63           MBK_IN_LO=vst; export MBK_IN_LO; \
64	   MBK_OUT_LO=vst; export MBK_OUT_LO; \
65           MBK_TARGET_LIB=$(TARGET_LIB); export MBK_TARGET_LIB; \
66           MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
67           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
68
69ENV_ASIMUT_VASY = MBK_WORK_LIB=.; export MBK_WORK_LIB;\
70             MBK_CATAL_NAME=CATAL_ASIMUT_VASY; export MBK_CATAL_NAME;\
71             MBK_IN_LO=vst; export MBK_IN_LO;\
72	     MBK_OUT_LO=vst; export MBK_OUT_LO
73
74ENV_ASIMUT_SYNTH = MBK_WORK_LIB=.; export MBK_WORK_LIB;\
75             MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME;\
76             MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
77             MBK_IN_LO=vst; export MBK_IN_LO;\
78	     MBK_OUT_LO=vst; export MBK_OUT_LO
79
80ENV_OCP =  MBK_WORK_LIB=.; export MBK_WORK_LIB; \
81           MBK_IN_LO=vst; export MBK_IN_LO; \
82	   MBK_OUT_LO=vst; export MBK_OUT_LO; \
83           MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
84           MBK_IN_PH=ap; export MBK_IN_PH; \
85           MBK_OUT_PH=ap; export MBK_OUT_PH; \
86           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
87
88ENV_NERO =  MBK_WORK_LIB=.; export MBK_WORK_LIB; \
89           MBK_IN_LO=vst; export MBK_IN_LO; \
90	   MBK_OUT_LO=vst; export MBK_OUT_LO; \
91           MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
92           MBK_IN_PH=ap; export MBK_IN_PH; \
93           MBK_OUT_PH=ap; export MBK_OUT_PH; \
94           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
95
96
97
98ENV_COUGAR_SPI =  MBK_WORK_LIB=.; export MBK_WORK_LIB; \
99           MBK_IN_LO=spi; export MBK_IN_LO; \
100	   MBK_OUT_LO=spi; export MBK_OUT_LO; \
101           MBK_SPI_MODEL=$(SPI_MODEL); export MBK_SPI_MODEL; \
102           MBK_SPI_ONE_NODE_NORC="true"; export MBK_SPI_ONE_NODE_NORC; \
103           MBK_SPI_NAMEDNODES="true"; export MBK_SPI_NAMEDNODES; \
104           RDS_TECHNO_NAME=$(RDS_TECHNO_REAL); export RDS_TECHNO_NAME; \
105           RDS_IN=cif; export RDS_IN; \
106           RDS_OUT=cif; export RDS_OUT; \
107           MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
108           MBK_IN_PH=ap; export MBK_IN_PH; \
109           MBK_OUT_PH=ap; export MBK_OUT_PH; \
110           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
111
112ENV_COUGAR =  MBK_WORK_LIB=.; export MBK_WORK_LIB; \
113           MBK_IN_LO=al; export MBK_IN_LO; \
114	   MBK_OUT_LO=al; export MBK_OUT_LO; \
115           RDS_TECHNO_NAME=$(RDS_TECHNO_REAL); export RDS_TECHNO_NAME; \
116           RDS_IN=cif; export RDS_IN; \
117           RDS_OUT=cif; export RDS_OUT; \
118           MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
119           MBK_IN_PH=ap; export MBK_IN_PH; \
120           MBK_OUT_PH=ap; export MBK_OUT_PH; \
121           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
122
123ENV_LVX =  MBK_WORK_LIB=.; export MBK_WORK_LIB; \
124           MBK_IN_LO=vst; export MBK_IN_LO; \
125	   MBK_OUT_LO=vst; export MBK_OUT_LO; \
126           MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
127           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
128
129ENV_DRUC = MBK_WORK_LIB=.; export MBK_WORK_LIB; \
130           RDS_TECHNO_NAME=$(RDS_TECHNO_SYMB); export RDS_TECHNO_NAME; \
131           MBK_IN_PH=ap; export MBK_IN_PH; \
132           MBK_OUT_PH=ap; export MBK_OUT_PH; \
133           MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
134           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
135
136ENV_S2R  = MBK_WORK_LIB=.; export MBK_WORK_LIB; \
137           RDS_TECHNO_NAME=$(RDS_TECHNO_REAL); export RDS_TECHNO_NAME; \
138           RDS_IN=cif; export RDS_IN; \
139           RDS_OUT=cif; export RDS_OUT; \
140           MBK_IN_PH=ap; export MBK_IN_PH; \
141           MBK_OUT_PH=ap; export MBK_OUT_PH; \
142           MBK_CATA_LIB=$(TARGET_LIB); export MBK_CATA_LIB; \
143           MBK_CATAL_NAME=CATAL; export MBK_CATAL_NAME
144
145
146all :  addaccu.cif
147
148# /*------------------------------------------------------------\
149# |                                                             |
150# |                             Vasy                            |
151# |                                                             |
152# \------------------------------------------------------------*/
153
154addaccu.vbe : addaccu.vhdl
155	$(ENV_VASY); $(VASY) -a -B -o -p -I vhdl addaccu
156
157# /*------------------------------------------------------------\
158# |                                                             |
159# |                             Asimut                          |
160# |                                                             |
161# \------------------------------------------------------------*/
162
163res_vasy_1.pat : addaccu.vbe
164	$(ENV_ASIMUT_VASY); $(ASIMUT) -b addaccu addaccu res_vasy_1
165
166res_synth_1.pat : addaccu.vst
167	$(ENV_ASIMUT_SYNTH); $(ASIMUT) addaccu addaccu res_synth_1
168
169# /*------------------------------------------------------------\
170# |                                                             |
171# |                             Boom                            |
172# |                                                             |
173# \------------------------------------------------------------*/
174
175boom.done : addaccu_o.vbe
176	@$(TOUCH) boom.done
177
178addaccu_o.vbe : addaccu.vbe addaccu.boom res_vasy_1.pat
179	$(ENV_BOOM); $(BOOM) -VP addaccu addaccu_o
180
181# /*------------------------------------------------------------\
182# |                                                             |
183# |                             Boog                            |
184# |                                                             |
185# \------------------------------------------------------------*/
186
187boog.done : addaccu_o.vst
188	@$(TOUCH) boog.done
189
190addaccu_o.vst : addaccu_o.vbe
191	$(ENV_BOOG); $(BOOG) addaccu_o
192
193# /*------------------------------------------------------------\
194# |                                                             |
195# |                             Loon                            |
196# |                                                             |
197# \------------------------------------------------------------*/
198
199loon.done : addaccu.vst
200	@$(TOUCH) loon.done
201
202addaccu.vst : addaccu_o.vst
203	$(ENV_LOON); $(LOON) addaccu_o addaccu
204
205# /*------------------------------------------------------------\
206# |                                                             |
207# |                             OCP                             |
208# |                                                             |
209# \------------------------------------------------------------*/
210
211addaccu_p.ap : res_synth_1.pat
212	$(ENV_OCP); $(OCP) -v -gnuplot -ioc addaccu  addaccu addaccu_p
213
214# /*------------------------------------------------------------\
215# |                                                             |
216# |                             NERO                            |
217# |                                                             |
218# \------------------------------------------------------------*/
219
220addaccu.ap : addaccu_p.ap addaccu.vst
221	$(ENV_NERO); $(NERO) -V -$(METAL_LEVEL) -p addaccu_p addaccu addaccu
222
223# /*------------------------------------------------------------\
224# |                                                             |
225# |                             Cougar                          |
226# |                                                             |
227# \------------------------------------------------------------*/
228
229addaccu_e.spi : addaccu.ap
230	$(ENV_COUGAR_SPI); $(COUGAR) -v -ac addaccu addaccu_e
231
232addaccu_erc.spi : addaccu.ap
233	$(ENV_COUGAR_SPI); $(COUGAR) -v -ar addaccu addaccu_erc
234
235addaccu_erc.al : addaccu.ap
236	$(ENV_COUGAR); $(COUGAR) -v -ar addaccu addaccu_erc
237
238addaccu_e.al : addaccu.ap
239	$(ENV_COUGAR); $(COUGAR) -v -ac addaccu addaccu_e
240
241addaccu_et.al : addaccu.ap
242	$(ENV_COUGAR); $(COUGAR) -v -ac -t addaccu addaccu_et
243
244addaccu_et.spi : addaccu.ap
245	$(ENV_COUGAR_SPI); $(COUGAR) -v -ac -t addaccu addaccu_et
246
247addaccu_er.al : addaccu.cif
248	$(ENV_COUGAR); $(COUGAR) -v -r -t addaccu addaccu_er
249
250addaccu_real.al : addaccu.ap
251	$(ENV_COUGAR); $(ENV_S2R); $(COUGAR) -v -ac addaccu addaccu_real
252
253addaccu_real_t.al : addaccu.ap
254	$(ENV_COUGAR); $(ENV_S2R); $(COUGAR) -v -t -ac addaccu addaccu_real_t
255
256# /*------------------------------------------------------------\
257# |                                                             |
258# |                             Lvx                             |
259# |                                                             |
260# \------------------------------------------------------------*/
261
262lvx.done : addaccu.vst addaccu_e.al addaccu_e.spi
263	$(ENV_LVX); $(LVX) vst al addaccu addaccu_e -f
264	$(TOUCH) lvx.done
265
266# /*------------------------------------------------------------\
267# |                                                             |
268# |                             Druc                            |
269# |                                                             |
270# \------------------------------------------------------------*/
271
272druc.done : lvx.done addaccu.ap
273	$(ENV_DRUC); $(DRUC) addaccu
274	$(TOUCH) druc.done
275
276# /*------------------------------------------------------------\
277# |                                                             |
278# |                             S2R                             |
279# |                                                             |
280# \------------------------------------------------------------*/
281
282addaccu.cif : druc.done
283	$(ENV_S2R); $(S2R) -v addaccu
284
285# /*------------------------------------------------------------\
286# |                                                             |
287# |                             TOOLS                           |
288# |                                                             |
289# \------------------------------------------------------------*/
290
291graal :
292	$(ENV_S2R); $(GRAAL)
293
294graal_addaccu_p : addaccu_p.ap
295	$(ENV_S2R); $(GRAAL) -l addaccu_p
296
297graal_addaccu : addaccu.ap
298	$(ENV_S2R); $(GRAAL) -l addaccu
299
300xsch:
301	$(ENV_LOON); $(XSCH)
302
303xsch_addaccu_o : addaccu.vst
304	$(ENV_LOON); $(XSCH) -l addaccu_o
305
306xsch_addaccu : addaccu.vst
307	$(ENV_LOON); $(XSCH) -l addaccu
308
309xsch_addaccu_e: addaccu_e.al
310	$(ENV_COUGAR); $(XSCH) -l addaccu_e
311
312xsch_addaccu_et: addaccu_et.al
313	$(ENV_COUGAR); $(XSCH) -l addaccu_et
314
315xpat:
316	$(ENV_ASIMUT_SYNTH); $(XPAT)
317
318xpat_synth: res_synth_1.pat
319	$(ENV_ASIMUT_SYNTH); $(XPAT) -l res_synth_1
320
321xpat_vasy : res_vasy_1.pat
322	$(ENV_ASIMUT_SYNTH); $(XPAT) -l res_vasy_1
323
324dreal:
325	$(ENV_S2R); $(DREAL)
326
327dreal_addaccu : addaccu.cif
328	$(ENV_S2R); $(DREAL) -l addaccu
329
330
331# /*------------------------------------------------------------\
332# |                                                             |
333# |                              Clean                          |
334# |                                                             |
335# \------------------------------------------------------------*/
336
337realclean : clean
338
339clean     :
340	$(RM) -f *.vst addaccu_e.spi addaccu_et.spi *.vbe res_*.pat *.boom *.done *.xsc *.gpl \
341                 *.ap *.drc *.dat *.gds *.cif *.rep \
342		 *.log *.out *.raw *.al
343