913132fcbc679a32eee1ecc95f9b98dd2432524c
[jump.git] / AESA.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <processnetwork 
3 xmlns="http://www.tik.ee.ethz.ch/~shapes/schema/PROCESSNETWORK" 
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
5 xsi:schemaLocation="http://www.tik.ee.ethz.ch/~shapes/schema/PROCESSNETWORK
6     http://www.tik.ee.ethz.ch/~shapes/schema/processnetwork.xsd" name="AESA_DBF"> 
7
8   <variable value="8" name="N_BEAMS"/>
9   <variable value="16" name="N_ANTENNA_ELEMENTS"/>
10   <variable value="16" name="N_OVERLAPPED_BEAMS"/>
11   <variable value="16" name="N_DOPPLER_CHANNELS"/>
12   
13   <variable value="8" name="SIZE_COMPLEX_NUM"/>
14   <variable value="64" name="N_FACTOR"/>
15   <variable value="4" name="N_RANGE_BINS"/>
16   <variable value="32" name="N_FFT"/>
17          
18   <!-- ********************************************************** -->
19   <!--                instantiate processes                       -->
20   <!-- ********************************************************** -->
21
22   <!-- Data generator process with N_BEAMS outputs -->
23         <process name="Data_Generator">
24           <iterator variable="i" range="N_BEAMS">
25             <port type="output" name="out">
26       <append function="i"/>
27       </port>
28     </iterator>
29           <source type="c" location="Data_Generator.c"/>
30         </process>
31
32   <!-- Weights generator process with N_BEAMS outputs -->       
33         <process name="Weight_Generator">
34           <iterator variable="i" range="N_BEAMS">
35             <port type="output" name="out">
36                   <append function="i"/>
37             </port>
38           </iterator>
39           <source type="c" location="Weight_Generator.c"/>
40         </process>
41
42   <!-- N_BEAMS processes to compute result -->
43   <iterator variable="i" range="N_BEAMS">
44     <process name="Beam_Former">
45       <append function="i"/>
46       <port type="input" name="data_input"/>
47       <port type="input" name="weight_input"/>
48       <port type="output" name="data_output"/>          
49       <source type="c" location="Beam_Former.c"/>
50     </process>
51   </iterator>
52         
53   <!-- Corner Turn With Overlap processes -->   
54   <iterator variable="i" range="N_BEAMS">
55     <process name="Corner_Turn_OL">
56       <append function="i"/>
57         <port type="input" name="data_input"/>
58         <port type="output" name="data_output"/>
59         <port type="output" name="data2_output_ol"/>
60       <source type="c" location="Corner_Turn_OL.c"/>
61     </process>
62   </iterator>
63
64   <!-- FFT processes to compute doppler channels -->
65   <iterator variable="i" range="2 * N_BEAMS">
66     <process name="FFT_Radix2_DIF">
67       <append function="i"/>
68         <port type="input" name="data_input"/>
69         <port type="output" name="data_output"/>                
70       <source type="c" location="FFT_Radix2_DIF.c"/>
71     </process>
72         </iterator>
73
74   <!-- Corner Turn processes  -->
75   <iterator variable="i" range="2 * N_BEAMS">
76     <process name="Corner_Turn">
77       <append function="i"/>      
78         <port type="input" name="data_input"/>
79         <port type="output" name="data_output"/>
80       <source type="c" location="Corner_Turn.c"/>
81     </process>
82         </iterator>
83         
84   <!-- FIR processes -->
85   <iterator variable="i" range="2 * N_BEAMS">
86      <process name="FIR">
87         <append function="i"/>
88         <port type="input" name="data_input"/>
89         <port type="output" name="data_output"/>
90         <source type="c" location="FIR.c"/>
91      </process>
92   </iterator>
93
94   <!-- Consumer process to collect data -->
95   <process name="Consumer">
96     <iterator variable="i" range=" N_BEAMS">
97       <port type="input" name="data_input">
98         <append function="i"/>
99       </port>
100       <port type="input" name="data2_input_delayed">
101         <append function="i"/>
102       </port>
103     </iterator>
104                 <source type="c" location="Consumer.c"/>
105         </process>
106
107   <!-- ********************************************************** -->
108   <!--                instantiate channels                        -->
109   <!-- ********************************************************** -->
110
111   <!-- sw_channels from data generator to dbf -->
112   <iterator variable="i" range="N_BEAMS">
113           <sw_channel type="fifo" size="N_ANTENNA_ELEMENTS * SIZE_COMPLEX_NUM * N_FACTOR" name="data_to_dbf_chan">
114                   <append function="i"/>
115                   <port type="input" name="in"/>
116                   <port type="output" name="out"/>
117           </sw_channel>
118   </iterator>
119
120   <!-- sw_channels from weight generator to dbf --> 
121   <iterator variable="i" range="N_BEAMS"> 
122     <sw_channel type="fifo" size="N_ANTENNA_ELEMENTS * SIZE_COMPLEX_NUM * N_FACTOR" name="weight_to_dbf_chan">
123       <append function="i"/>
124       <port type="input" name="in"/>
125       <port type="output" name="out"/>
126     </sw_channel>
127   </iterator>
128   
129   <!-- sw_channels from dbf to corner turn with overlap -->
130   <iterator variable="i" range="N_BEAMS">
131     <sw_channel type="fifo" size="N_RANGE_BINS * SIZE_COMPLEX_NUM * N_FACTOR" name="dbf_to_ct_ol">
132       <append function="i"/>
133       <port type="input" name="in"/>
134       <port type="output" name="out"/>
135     </sw_channel>
136   </iterator>
137
138   <!-- sw_channels from corner turn to fft -->
139   <iterator variable="i" range="N_BEAMS"> 
140     <sw_channel type="fifo" size="N_FFT * SIZE_COMPLEX_NUM * N_FACTOR" name="ct_ol_to_fft">
141       <append function="i"/>
142       <port type="input" name="in"/>
143       <port type="output" name="out"/>
144     </sw_channel>
145   </iterator>
146
147   <!-- sw_channels from corner turn delayed to fft -->
148   <iterator variable="i" range="N_BEAMS"> 
149     <sw_channel type="fifo" size="N_FFT * SIZE_COMPLEX_NUM * N_FACTOR" name="ct_ol_delayed_to_fft">
150       <append function="i"/>
151       <port type="input" name="in"/>
152       <port type="output" name="out"/>
153     </sw_channel>
154   </iterator>
155
156   <!-- sw_channels from fft to corner turn -->
157   <iterator variable="i" range="2 * N_BEAMS"> 
158     <sw_channel type="fifo" size="N_FFT * SIZE_COMPLEX_NUM * N_FACTOR" name="fft_to_corner_turn">
159       <append function="i"/>
160       <port type="input" name="in"/>
161       <port type="output" name="out"/>
162     </sw_channel>
163   </iterator>
164
165   <!-- sw channels from corner turn to fir -->
166   <iterator variable="i" range="2 * N_BEAMS">
167     <sw_channel type="fifo" size="N_RANGE_BINS * SIZE_COMPLEX_NUM * N_FACTOR" name="corner_turn_to_fir">
168       <append function="i"/>
169       <port type="input" name="in"/>
170       <port type="output" name="out"/>
171      </sw_channel>
172   </iterator>
173
174   <!-- sw_channels from fir to consumer-->
175   <iterator variable="i" range="2 * N_BEAMS"> 
176     <sw_channel type="fifo" size="N_RANGE_BINS * SIZE_COMPLEX_NUM * N_FACTOR" name="fir_to_consumer">
177       <append function="i"/>
178       <port type="input" name="in"/>
179       <port type="output" name="out"/>
180     </sw_channel>
181   </iterator>
182   
183   <!-- ********************************************************** -->
184   <!--                instantiate connections                     -->
185   <!-- ********************************************************** -->
186
187   <!-- connections from data generator to channels -->
188   <iterator variable="i" range="N_BEAMS">
189           <connection name="Ant_To_Dbf_Chan_Data">
190       <append function="i"/>
191                   <origin name="Data_Generator">
192         <port name="out">
193         <append function="i"/>
194         </port>
195       </origin>
196                   <target name="data_to_dbf_chan">
197         <append function="i"/>
198         <port name="in"/>
199       </target>
200     </connection>
201   </iterator>
202
203   <!-- connections from weight generator to channels -->
204   <iterator variable="i" range="N_BEAMS">       
205     <connection name="Weight_To_Dbf_Chan_Weight">
206       <append function="i"/>
207       <origin name="Weight_Generator">
208         <port name="out">
209         <append function="i"/>
210         </port>
211       </origin>
212       <target name="weight_to_dbf_chan">
213               <append function="i"/>
214               <port name="in">
215         </port>
216       </target>
217     </connection>
218   </iterator>
219
220   <!-- connections from data channels to DBF processes -->  
221   <iterator variable="i" range="N_BEAMS">
222     <connection name="Dbf_Chan_Data_To_Dbf">
223       <append function="i"/>
224       <origin name="data_to_dbf_chan">
225       <append function="i"/>
226         <port name="out"/>
227       </origin>
228       <target name="Beam_Former">
229       <append function="i"/>
230         <port name="data_input"/>
231       </target>
232     </connection>
233   </iterator>
234
235   <!-- connections from weight channels to DBF processes -->
236   <iterator variable="i" range="N_BEAMS">
237     <connection name="Dbf_Chan_Weight_To_Dbf">
238       <append function="i"/>
239       <origin name="weight_to_dbf_chan">
240       <append function="i"/>
241         <port name="out"/>
242       </origin>
243       <target name="Beam_Former">
244         <append function="i"/>
245         <port name="weight_input"/>
246       </target>
247     </connection>
248   </iterator>
249   
250   <!-- connections from dbf to corner turn with overlap channels -->
251         <iterator variable="i" range="N_BEAMS">
252     <connection name="Dbf_To_Corner_Turn_Overlap_Chan">
253       <append function="i"/>
254       <origin name="Beam_Former">
255          <append function="i"/>
256         <port name="data_output">
257         </port>
258       </origin>
259       <target name="dbf_to_ct_ol">
260         <append function="i"/>
261         <port name="in"/>
262       </target>
263     </connection>
264   </iterator>
265
266   <!-- connections from dbf channels to CT processes -->  
267   <iterator variable="i" range="N_BEAMS">
268     <connection name="Chan1_To_Ct_Ol">
269       <append function="i"/>
270       <origin name="dbf_to_ct_ol">
271         <append function="i"/>
272         <port name="out"/>
273       </origin>
274       <target name="Corner_Turn_OL">
275         <append function="i"/>
276         <port name="data_input"/>
277       </target>
278     </connection>
279   </iterator>
280
281   <!-- connections from corner turn to FFT channels -->
282   <iterator variable="i" range="N_BEAMS">
283     <connection name="Ct_Ol_To_Chan2">
284       <append function="i"/>
285       <origin name="Corner_Turn_OL">
286         <append function="i"/>
287         <port name="data_output"/>
288       </origin>
289       <target name="ct_ol_to_fft">
290         <append function="i"/>
291         <port name="in"/>
292       </target>
293     </connection>
294     <connection name="Ct_Ol_Delay_To_Chan2">
295       <append function="i"/>
296       <origin name="Corner_Turn_OL">
297         <append function="i"/>
298         <port name="data2_output_ol"/>
299       </origin>
300       <target name="ct_ol_delayed_to_fft">
301         <append function="i"/>
302         <port name="in"/>
303       </target>
304     </connection>
305         </iterator>
306
307   <!-- connections from FFT channels to FFT-->
308   <iterator variable="i" range="N_BEAMS">
309     <connection name="Chan2_To_FFT">
310       <append function="i"/>
311       <origin name="ct_ol_to_fft">
312         <append function="i"/>
313         <port name="out"/>
314       </origin>
315       <target name="FFT_Radix2_DIF">
316         <append function="i"/>
317         <port name="data_input"/>
318       </target>
319     </connection>
320     <connection name="Chan2_Delay_To_FFT">
321       <append function="i"/>
322       <origin name="ct_ol_delayed_to_fft">
323         <append function="i"/>
324         <port name="out"/>
325       </origin>
326       <target name="FFT_Radix2_DIF">
327         <append function="i + N_BEAMS"/>
328         <port name="data_input"/>
329       </target>
330     </connection>
331         </iterator>
332
333   <!-- connections from FFT to Corner Turn channels -->
334   <iterator variable="i" range="2 * N_BEAMS">
335     <connection name="FFT_To_Chan3">
336       <append function="i"/>
337       <origin name="FFT_Radix2_DIF">
338         <append function="i"/>
339         <port name="data_output"/>
340       </origin>
341       <target name="fft_to_corner_turn">
342         <append function="i"/>
343         <port name="in"/>
344       </target>
345     </connection>
346         </iterator>
347
348   <!-- connections from Corner Turn channels to Corner Turn -->
349   <iterator variable="i" range="2 * N_BEAMS">
350     <connection name="Chan3_To_Corner_Turn">
351       <append function="i"/>
352       <origin name="fft_to_corner_turn">
353         <append function="i"/>
354         <port name="out"/>
355       </origin>
356       <target name="Corner_Turn">
357         <append function="i"/>
358         <port name="data_input"/>
359       </target>
360     </connection>
361         </iterator>
362
363
364   <!-- connections from Corner Turn to FIR Channels -->
365   <iterator variable="i" range="2 * N_BEAMS">
366     <connection name="Corner_Turn_To_Chan4">
367       <append function="i"/>
368       <origin name="Corner_Turn">
369         <append function="i"/>
370         <port name="data_output"/>
371       </origin>
372       <target name="corner_turn_to_fir">
373         <append function="i"/>
374         <port name="in"/>
375       </target>
376     </connection>
377         </iterator>
378
379
380   <!-- connections from FIR channels to FIR -->
381   <iterator variable="i" range="2 * N_BEAMS">
382     <connection name="Chan4_To_FIR">
383       <append function="i"/>
384       <origin name="corner_turn_to_fir">
385          <append function="i"/>
386          <port name="out"/>
387       </origin>
388       <target name="FIR">
389         <append function="i"/>
390         <port name="data_input"/>
391       </target>
392     </connection>
393   </iterator>
394
395   <!-- connection from FIR to FIR channels -->
396   <iterator variable="i" range="2 * N_BEAMS">
397      <connection name="FIR_to_Chan5">
398        <append function="i"/>
399        <origin name="FIR">
400           <append function="i"/>
401           <port name="data_output"/>
402        </origin>
403        <target name="fir_to_consumer">
404           <append function="i"/>
405           <port name="in"/>
406        </target>
407      </connection>
408   </iterator>
409
410    <!-- connections from FIR to Consumer Channels -->
411   <iterator variable="i" range="N_BEAMS">
412     <connection name="Chan5_To_Consumer">
413       <append function="i"/>
414       <origin name="fir_to_consumer">
415         <append function="i"/>
416         <port name="out"/>
417       </origin>
418       <target name="Consumer">
419         <port name="data_input">
420           <append function="i"/>
421         </port>
422       </target>
423     </connection>
424     <connection name="Chan5_To_Consumer_Delayed">
425       <append function="i"/>
426       <origin name="fir_to_consumer">
427         <append function="i + N_BEAMS"/>
428         <port name="out"/>
429       </origin>
430       <target name="Consumer">
431         <port name="data2_input_delayed">
432           <append function="i"/>
433         </port>
434       </target>
435     </connection>
436         </iterator>
437 </processnetwork>