move to ml505, import Greg\'s memory controller
[fleet.git] / src / edu / berkeley / fleet / fpga / main.ucf
1 Net DDR2_CAS_B LOC=E31;  Net DDR2_CAS_B IOSTANDARD="SSTL18_II";
2
3 Net DDR2_CKE<1> LOC=U30; Net DDR2_CKE<1> IOSTANDARD="SSTL18_II";
4 Net DDR2_CKE<0> LOC=T28; Net DDR2_CKE<0> IOSTANDARD="SSTL18_II";
5
6 Net DDR2_RAS_B LOC=H30;  Net DDR2_RAS_B IOSTANDARD="SSTL18_II";
7
8 Net DDR2_WE_B LOC=K29;   Net DDR2_WE_B IOSTANDARD="SSTL18_II";
9
10 Net DDR2_ODT<1> LOC=F30; Net DDR2_ODT<1> IOSTANDARD="SSTL18_II";
11 Net DDR2_ODT<0> LOC=F31; Net DDR2_ODT<0> IOSTANDARD="SSTL18_II";
12
13 Net DDR2_CS0_B<1> LOC=J29; Net DDR2_CS0_B<1> IOSTANDARD="SSTL18_II";
14 Net DDR2_CS0_B<0> LOC=L29; Net DDR2_CS0_B<0> IOSTANDARD="SSTL18_II";
15
16 Net DDR2_CLK_N<1> LOC=F28; Net DDR2_CLK_N<1> IOSTANDARD="DIFF_SSTL18_II";
17 Net DDR2_CLK_N<0> LOC=AJ29; Net DDR2_CLK_N<0> IOSTANDARD="DIFF_SSTL18_II";
18
19 Net DDR2_CLK_P<1> LOC=E28; Net DDR2_CLK_P<1> IOSTANDARD="DIFF_SSTL18_II";
20 Net DDR2_CLK_P<0> LOC=AK29; Net DDR2_CLK_P<0> IOSTANDARD="DIFF_SSTL18_II";
21
22 Net DDR2_A<13> LOC=H29; Net DDR2_A<13> IOSTANDARD="SSTL18_II";
23 Net DDR2_A<12> LOC=T31; Net DDR2_A<12> IOSTANDARD="SSTL18_II";
24 Net DDR2_A<11> LOC=R29; Net DDR2_A<11> IOSTANDARD="SSTL18_II";
25 Net DDR2_A<10> LOC=J31; Net DDR2_A<10> IOSTANDARD="SSTL18_II";
26 Net DDR2_A<9> LOC=R28; Net DDR2_A<9> IOSTANDARD="SSTL18_II";
27 Net DDR2_A<8> LOC=M31; Net DDR2_A<8> IOSTANDARD="SSTL18_II";
28 Net DDR2_A<7> LOC=P30; Net DDR2_A<7> IOSTANDARD="SSTL18_II";
29 Net DDR2_A<6> LOC=P31; Net DDR2_A<6> IOSTANDARD="SSTL18_II";
30 Net DDR2_A<5> LOC=L31; Net DDR2_A<5> IOSTANDARD="SSTL18_II";
31 Net DDR2_A<4> LOC=K31; Net DDR2_A<4> IOSTANDARD="SSTL18_II";
32 Net DDR2_A<3> LOC=P29; Net DDR2_A<3> IOSTANDARD="SSTL18_II";
33 Net DDR2_A<2> LOC=N29; Net DDR2_A<2> IOSTANDARD="SSTL18_II";
34 Net DDR2_A<1> LOC=M30; Net DDR2_A<1> IOSTANDARD="SSTL18_II";
35 Net DDR2_A<0> LOC=L30; Net DDR2_A<0> IOSTANDARD="SSTL18_II";
36
37 Net DDR2_BA<2> LOC=R31; Net DDR2_BA<2> IOSTANDARD="SSTL18_II";
38 Net DDR2_BA<1> LOC=J30; Net DDR2_BA<1> IOSTANDARD="SSTL18_II";
39 Net DDR2_BA<0> LOC=G31; Net DDR2_BA<0> IOSTANDARD="SSTL18_II";
40
41 Net DDR2_DQ<63> LOC=L24; Net DDR2_DQ<63> IOSTANDARD="SSTL18_II_DCI";
42 Net DDR2_DQ<62> LOC=L25; Net DDR2_DQ<62> IOSTANDARD="SSTL18_II_DCI";
43 Net DDR2_DQ<61> LOC=M25; Net DDR2_DQ<61> IOSTANDARD="SSTL18_II_DCI";
44 Net DDR2_DQ<60> LOC=J27; Net DDR2_DQ<60> IOSTANDARD="SSTL18_II_DCI";
45 Net DDR2_DQ<59> LOC=L26; Net DDR2_DQ<59> IOSTANDARD="SSTL18_II_DCI";
46 Net DDR2_DQ<58> LOC=J24; Net DDR2_DQ<58> IOSTANDARD="SSTL18_II_DCI";
47 Net DDR2_DQ<57> LOC=M26; Net DDR2_DQ<57> IOSTANDARD="SSTL18_II_DCI";
48 Net DDR2_DQ<56> LOC=G25; Net DDR2_DQ<56> IOSTANDARD="SSTL18_II_DCI";
49 Net DDR2_DQ<55> LOC=G26; Net DDR2_DQ<55> IOSTANDARD="SSTL18_II_DCI";
50 Net DDR2_DQ<54> LOC=H24; Net DDR2_DQ<54> IOSTANDARD="SSTL18_II_DCI";
51 Net DDR2_DQ<53> LOC=K28; Net DDR2_DQ<53> IOSTANDARD="SSTL18_II_DCI";
52 Net DDR2_DQ<52> LOC=K27; Net DDR2_DQ<52> IOSTANDARD="SSTL18_II_DCI";
53 Net DDR2_DQ<51> LOC=H25; Net DDR2_DQ<51> IOSTANDARD="SSTL18_II_DCI";
54 Net DDR2_DQ<50> LOC=F25; Net DDR2_DQ<50> IOSTANDARD="SSTL18_II_DCI";
55 Net DDR2_DQ<49> LOC=L28; Net DDR2_DQ<49> IOSTANDARD="SSTL18_II_DCI";
56 Net DDR2_DQ<48> LOC=M28; Net DDR2_DQ<48> IOSTANDARD="SSTL18_II_DCI";
57 Net DDR2_DQ<47> LOC=N28; Net DDR2_DQ<47> IOSTANDARD="SSTL18_II_DCI";
58 Net DDR2_DQ<46> LOC=P27; Net DDR2_DQ<46> IOSTANDARD="SSTL18_II_DCI";
59 Net DDR2_DQ<45> LOC=N25; Net DDR2_DQ<45> IOSTANDARD="SSTL18_II_DCI";
60 Net DDR2_DQ<44> LOC=T24; Net DDR2_DQ<44> IOSTANDARD="SSTL18_II_DCI";
61 Net DDR2_DQ<43> LOC=P26; Net DDR2_DQ<43> IOSTANDARD="SSTL18_II_DCI";
62 Net DDR2_DQ<42> LOC=N24; Net DDR2_DQ<42> IOSTANDARD="SSTL18_II_DCI";
63 Net DDR2_DQ<41> LOC=P25; Net DDR2_DQ<41> IOSTANDARD="SSTL18_II_DCI";
64 Net DDR2_DQ<40> LOC=R24; Net DDR2_DQ<40> IOSTANDARD="SSTL18_II_DCI";
65 Net DDR2_DQ<39> LOC=V24; Net DDR2_DQ<39> IOSTANDARD="SSTL18_II_DCI";
66 Net DDR2_DQ<38> LOC=W26; Net DDR2_DQ<38> IOSTANDARD="SSTL18_II_DCI";
67 Net DDR2_DQ<37> LOC=W25; Net DDR2_DQ<37> IOSTANDARD="SSTL18_II_DCI";
68 Net DDR2_DQ<36> LOC=V28; Net DDR2_DQ<36> IOSTANDARD="SSTL18_II_DCI";
69 Net DDR2_DQ<35> LOC=W24; Net DDR2_DQ<35> IOSTANDARD="SSTL18_II_DCI";
70 Net DDR2_DQ<34> LOC=Y26; Net DDR2_DQ<34> IOSTANDARD="SSTL18_II_DCI";
71 Net DDR2_DQ<33> LOC=Y27; Net DDR2_DQ<33> IOSTANDARD="SSTL18_II_DCI";
72 Net DDR2_DQ<32> LOC=V29; Net DDR2_DQ<32> IOSTANDARD="SSTL18_II_DCI";
73 Net DDR2_DQ<31> LOC=W27; Net DDR2_DQ<31> IOSTANDARD="SSTL18_II_DCI";
74 Net DDR2_DQ<30> LOC=V27; Net DDR2_DQ<30> IOSTANDARD="SSTL18_II_DCI";
75 Net DDR2_DQ<29> LOC=W29; Net DDR2_DQ<29> IOSTANDARD="SSTL18_II_DCI";
76 Net DDR2_DQ<28> LOC=AC30; Net DDR2_DQ<28> IOSTANDARD="SSTL18_II_DCI";
77 Net DDR2_DQ<27> LOC=V30; Net DDR2_DQ<27> IOSTANDARD="SSTL18_II_DCI";
78 Net DDR2_DQ<26> LOC=W31; Net DDR2_DQ<26> IOSTANDARD="SSTL18_II_DCI";
79 Net DDR2_DQ<25> LOC=AB30; Net DDR2_DQ<25> IOSTANDARD="SSTL18_II_DCI";
80 Net DDR2_DQ<24> LOC=AC29; Net DDR2_DQ<24> IOSTANDARD="SSTL18_II_DCI";
81 Net DDR2_DQ<23> LOC=AA25; Net DDR2_DQ<23> IOSTANDARD="SSTL18_II_DCI";
82 Net DDR2_DQ<22> LOC=AB27; Net DDR2_DQ<22> IOSTANDARD="SSTL18_II_DCI";
83 Net DDR2_DQ<21> LOC=AA24; Net DDR2_DQ<21> IOSTANDARD="SSTL18_II_DCI";
84 Net DDR2_DQ<20> LOC=AB26; Net DDR2_DQ<20> IOSTANDARD="SSTL18_II_DCI";
85 Net DDR2_DQ<19> LOC=AA26; Net DDR2_DQ<19> IOSTANDARD="SSTL18_II_DCI";
86 Net DDR2_DQ<18> LOC=AC27; Net DDR2_DQ<18> IOSTANDARD="SSTL18_II_DCI";
87 Net DDR2_DQ<17> LOC=AB25; Net DDR2_DQ<17> IOSTANDARD="SSTL18_II_DCI";
88 Net DDR2_DQ<16> LOC=AC28; Net DDR2_DQ<16> IOSTANDARD="SSTL18_II_DCI";
89 Net DDR2_DQ<15> LOC=AB28; Net DDR2_DQ<15> IOSTANDARD="SSTL18_II_DCI";
90 Net DDR2_DQ<14> LOC=AG28; Net DDR2_DQ<14> IOSTANDARD="SSTL18_II_DCI";
91 Net DDR2_DQ<13> LOC=AJ26; Net DDR2_DQ<13> IOSTANDARD="SSTL18_II_DCI";
92 Net DDR2_DQ<12> LOC=AG25; Net DDR2_DQ<12> IOSTANDARD="SSTL18_II_DCI";
93 Net DDR2_DQ<11> LOC=AA28; Net DDR2_DQ<11> IOSTANDARD="SSTL18_II_DCI";
94 Net DDR2_DQ<10> LOC=AH28; Net DDR2_DQ<10> IOSTANDARD="SSTL18_II_DCI";
95 Net DDR2_DQ<9> LOC=AF28; Net DDR2_DQ<9> IOSTANDARD="SSTL18_II_DCI";
96 Net DDR2_DQ<8> LOC=AH27; Net DDR2_DQ<8> IOSTANDARD="SSTL18_II_DCI";
97 Net DDR2_DQ<7> LOC=AE29; Net DDR2_DQ<7> IOSTANDARD="SSTL18_II_DCI";
98 Net DDR2_DQ<6> LOC=AD29; Net DDR2_DQ<6> IOSTANDARD="SSTL18_II_DCI";
99 Net DDR2_DQ<5> LOC=AF29; Net DDR2_DQ<5> IOSTANDARD="SSTL18_II_DCI";
100 Net DDR2_DQ<4> LOC=AJ30; Net DDR2_DQ<4> IOSTANDARD="SSTL18_II_DCI";
101 Net DDR2_DQ<3> LOC=AD30; Net DDR2_DQ<3> IOSTANDARD="SSTL18_II_DCI";
102 Net DDR2_DQ<2> LOC=AF31; Net DDR2_DQ<2> IOSTANDARD="SSTL18_II_DCI";
103 Net DDR2_DQ<1> LOC=AK31; Net DDR2_DQ<1> IOSTANDARD="SSTL18_II_DCI";
104 Net DDR2_DQ<0> LOC=AF30; Net DDR2_DQ<0> IOSTANDARD="SSTL18_II_DCI";
105
106 Net DDR2_DM<7> LOC=J25; Net DDR2_DM<7> IOSTANDARD="SSTL18_II";
107 Net DDR2_DM<6> LOC=F26; Net DDR2_DM<6> IOSTANDARD="SSTL18_II";
108 Net DDR2_DM<5> LOC=P24; Net DDR2_DM<5> IOSTANDARD="SSTL18_II";
109 Net DDR2_DM<4> LOC=V25; Net DDR2_DM<4> IOSTANDARD="SSTL18_II";
110 Net DDR2_DM<3> LOC=Y31; Net DDR2_DM<3> IOSTANDARD="SSTL18_II";
111 Net DDR2_DM<2> LOC=Y24; Net DDR2_DM<2> IOSTANDARD="SSTL18_II";
112 Net DDR2_DM<1> LOC=AE28; Net DDR2_DM<1> IOSTANDARD="SSTL18_II";
113 Net DDR2_DM<0> LOC=AJ31; Net DDR2_DM<0> IOSTANDARD="SSTL18_II";
114
115 Net DDR2_DQS_N<7> LOC=H27; Net DDR2_DQS_N<7> IOSTANDARD="DIFF_SSTL18_II_DCI";
116 Net DDR2_DQS_N<6> LOC=G28; Net DDR2_DQS_N<6> IOSTANDARD="DIFF_SSTL18_II_DCI";
117 Net DDR2_DQS_N<5> LOC=E27; Net DDR2_DQS_N<5> IOSTANDARD="DIFF_SSTL18_II_DCI";
118 Net DDR2_DQS_N<4> LOC=Y29; Net DDR2_DQS_N<4> IOSTANDARD="DIFF_SSTL18_II_DCI";
119 Net DDR2_DQS_N<3> LOC=AA31; Net DDR2_DQS_N<3> IOSTANDARD="DIFF_SSTL18_II_DCI";
120 Net DDR2_DQS_N<2> LOC=AJ27; Net DDR2_DQS_N<2> IOSTANDARD="DIFF_SSTL18_II_DCI";
121 Net DDR2_DQS_N<1> LOC=AK27; Net DDR2_DQS_N<1> IOSTANDARD="DIFF_SSTL18_II_DCI";
122 Net DDR2_DQS_N<0> LOC=AA30; Net DDR2_DQS_N<0> IOSTANDARD="DIFF_SSTL18_II_DCI";
123
124 Net DDR2_DQS_P<7> LOC=G27; Net DDR2_DQS_P<7> IOSTANDARD="DIFF_SSTL18_II_DCI";
125 Net DDR2_DQS_P<6> LOC=H28; Net DDR2_DQS_P<6> IOSTANDARD="DIFF_SSTL18_II_DCI";
126 Net DDR2_DQS_P<5> LOC=E26; Net DDR2_DQS_P<5> IOSTANDARD="DIFF_SSTL18_II_DCI";
127 Net DDR2_DQS_P<4> LOC=Y28; Net DDR2_DQS_P<4> IOSTANDARD="DIFF_SSTL18_II_DCI";
128 Net DDR2_DQS_P<3> LOC=AB31; Net DDR2_DQS_P<3> IOSTANDARD="DIFF_SSTL18_II_DCI";
129 Net DDR2_DQS_P<2> LOC=AK26; Net DDR2_DQS_P<2> IOSTANDARD="DIFF_SSTL18_II_DCI";
130 Net DDR2_DQS_P<1> LOC=AK28; Net DDR2_DQS_P<1> IOSTANDARD="DIFF_SSTL18_II_DCI";
131 Net DDR2_DQS_P<0> LOC=AA29; Net DDR2_DQS_P<0> IOSTANDARD="DIFF_SSTL18_II_DCI";
132
133 Net I2C_DDR2_SCL LOC=E29;
134
135 Net I2C_DDR2_SDA LOC=F29;
136
137 Net CLKBUF_Q1_N LOC=J19;
138 #Net CLKBUF_Q1_N PERIOD="200 Mhz";
139 Net CLKBUF_Q1_P LOC=K18;
140 #Net CLKBUF_Q1_P PERIOD="200 Mhz";
141
142
143 ## Clock, Reset ##############################################################################
144
145 Net clk_pin LOC=AH17;
146
147 Net rst_pin LOC=E9;
148 Net rst_pin PULLUP;
149
150 Net clk_pin TNM_NET = clk_pin;
151 TIMESPEC TS_clk_pin = PERIOD clk_pin 30 ns HIGH 50%;  # 33Mhz
152
153 #Net clk_unbuffered TNM_NET = clk_unbuffered;
154 #TIMESPEC TS_clk_unbuffered = PERIOD clk_unbuffered 20 ns;
155
156 Net rst_pin TIG;
157
158 ## UART ##############################################################################
159
160 #Net uart_cts LOC=G6;
161 #Net uart_cts IOSTANDARD = LVCMOS33;
162 #Net uart_cts TIG;
163
164 #Net uart_rts LOC=F6;
165 #Net uart_rts IOSTANDARD = LVCMOS33;
166 #Net uart_rts TIG;
167
168 Net uart_in LOC=AG15;
169 #Net uart_in IOSTANDARD = LVCMOS33;
170 Net uart_in TIG;
171 Net uart_in PULLUP;
172
173 Net uart_out LOC=AG20;
174 #Net uart_out IOSTANDARD = LVCMOS33;
175 Net uart_out TIG;
176 Net uart_out PULLUP;
177
178 ## VGA ##############################################################################
179
180 #net "vga_hsync" loc   = f9;
181 #net "vga_hsync" slew  = slow;
182 #net "vga_hsync" drive = 2;
183 #
184 #net "vga_vsync" loc   = h10;
185 #net "vga_vsync" slew  = slow;
186 #net "vga_vsync" drive = 2;
187 #
188 #net "vga_clkout"  loc ="c12";
189 #net "vga_clkout"  slew = fast;
190 #net "vga_clkout"  drive = 8;
191 #
192 #net "vga_r<7>" loc ="h8";
193 #net "vga_r<6>" loc ="c5";
194 #net "vga_r<5>" loc ="h9";
195 #net "vga_r<4>" loc ="g12";
196 #net "vga_r<3>" loc ="g11";
197 #net "vga_r<2>" loc ="g10";
198 #net "vga_r<1>" loc ="f11";
199 #net "vga_r<0>" loc ="f10";
200 #net "vga_r<*>" slew = slow;
201 #net "vga_r<*>" drive = 2;
202 #
203 #net "vga_g<7>" loc ="d5";
204 #net "vga_g<6>" loc ="d4";
205 #net "vga_g<5>" loc ="f8";
206 #net "vga_g<4>" loc ="e13";
207 #net "vga_g<3>" loc ="e12";
208 #net "vga_g<2>" loc ="e11";
209 #net "vga_g<1>" loc ="e9";
210 #net "vga_g<0>" loc ="e8";
211 #net "vga_g<*>" slew = slow;
212 #net "vga_g<*>" drive = 2;
213 #
214 #net "vga_b<7>" loc ="c4";
215 #net "vga_b<6>" loc ="c3";
216 #net "vga_b<5>" loc ="d12";
217 #net "vga_b<4>" loc ="d11";
218 #net "vga_b<3>" loc ="d10";
219 #net "vga_b<2>" loc ="d9";
220 #net "vga_b<1>" loc ="c13";
221 #net "vga_b<0>" loc ="g8";
222 #net "vga_b<*>" slew = slow;
223 #net "vga_b<*>" drive = 2;
224 #
225 #net "vga_*" iostandard = lvcmos33;
226 #
227
228 ### DRAM ##############################################################################
229
230 NET "clk_pin"               TNM="SYS_CLK";
231 #NET "*/*/clkgen/write_clk_u"    TNM="WRITE_CLK";
232 #NET "*/*/clkgen/write_clk90_u"  TNM="WRITE_CLK";
233 #NET "*/*/clkgen/read_clk_u"     TNM="READ_CLK";
234 #TIMESPEC "TS_SYS_DDRREAD"=FROM "SYS_CLK" TO "WRITE_CLK" TIG;
235 #TIMESPEC "TS_DDRREAD_SYS"=FROM "WRITE_CLK" TO "SYS_CLK" TIG;
236 #TIMESPEC "TS_SYS_DDRWRITE"=FROM "SYS_CLK" TO "READ_CLK" TIG;
237 #TIMESPEC "TS_DDRWRITE_SYS"=FROM "READ_CLK" TO "SYS_CLK" TIG;
238 #TIMESPEC "TS_DDRREAD_DDRWRITE"=FROM "READ_CLK" TO "WRITE_CLK" TIG;
239 #TIMESPEC "TS_DDRWRITE_DDRREAD"=FROM "WRITE_CLK" TO "READ_CLK" TIG;
240
241
242 ##==============================================================================
243 ##      File:           $URL: svn+ssh://repositorypub@repository.eecs.berkeley.edu/public/Projects/GateLib/branches/dev/Firmware/DRAM/Hardware/DDR2SDRAM/Constraints/DDR2SDRAM_ML505_110.ucf $
244 ##      Version:        $Revision: 16601 $
245 ##      Author:         Greg Gibeling (http://www.eecs.berkeley.edu/~gdgib/)
246 ##      Copyright:      Copyright 2005-2008 UC Berkeley
247 ##==============================================================================
248
249 ##==============================================================================
250 ##      Section:        License
251 ##==============================================================================
252 ##      Copyright (c) 2005-2008, Regents of the University of California
253 ##      All rights reserved.
254 ##
255 ##      Redistribution and use in source and binary forms, with or without modification,
256 ##      are permitted provided that the following conditions are met:
257 ##
258 ##              - Redistributions of source code must retain the above copyright notice,
259 ##                      this list of conditions and the following disclaimer.
260 ##              - Redistributions in binary form must reproduce the above copyright
261 ##                      notice, this list of conditions and the following disclaimer
262 ##                      in the documentation and/or other materials provided with the
263 ##                      distribution.
264 ##              - Neither the name of the University of California, Berkeley nor the
265 ##                      names of its contributors may be used to endorse or promote
266 ##                      products derived from this software without specific prior
267 ##                      written permission.
268 ##
269 ##      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
270 ##      ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
271 ##      WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
272 ##      DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
273 ##      ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
274 ##      (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
275 ##      LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
276 ##      ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
277 ##      (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
278 ##      SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
279 ##==============================================================================
280
281 ##==============================================================================
282 ##      Xilinx, Inc. 2006            www.xilinx.com 
283 ##      Mon Jul 7 12:05:40 2008
284 ##      Generated by MIG Version 2.2
285 ##==============================================================================
286 ##      File name:      ddr2_sdram.ucf
287 ##      Details:        Constraints file
288 ##                              FPGA family:            virtex5
289 ##                              FPGA:                           xc5vlx110t-ff1136
290 ##                              Speedgrade:                     -1
291 ##                              Design Entry:           VERILOG
292 ##                              Frequency:                      266.66 MHz
293 ##                              Design:                         without Test bench
294 ##                              DCM Used:                       Disable
295 ##                              Two Bytes per Bank: Disable
296 ##                              Compatible FPGA's: xc5vlx85t-ff1136,xc5vlx50t-ff1136,xc5vlx155t-ff1136,xc5vfx70t-ff1136,xc5vfx100t-ff1136,xc5vsx50t-ff1136,xc5vsx95t-ff1136
297 ##                              No.Of Controllers:      1
298 ##==============================================================================
299
300 ##------------------------------------------------------------------------------
301 ##      Section:        Pin Constraints (use FPGA_TOP instead)
302 ##------------------------------------------------------------------------------
303 #NET  "ddr2_dq[*]"                               IOSTANDARD = SSTL18_II_DCI;
304 #NET  "ddr2_a[*]"                                IOSTANDARD = SSTL18_II;
305 #NET  "ddr2_ba[*]"                               IOSTANDARD = SSTL18_II;
306 #NET  "ddr2_ras_n"                               IOSTANDARD = SSTL18_II;
307 #NET  "ddr2_cas_n"                               IOSTANDARD = SSTL18_II;
308 #NET  "ddr2_we_n"                                IOSTANDARD = SSTL18_II;
309 #NET  "ddr2_cs_n[*]"                             IOSTANDARD = SSTL18_II;
310 #NET  "ddr2_odt[*]"                              IOSTANDARD = SSTL18_II;
311 #NET  "ddr2_cke[*]"                              IOSTANDARD = SSTL18_II;
312 #NET  "ddr2_dm[*]"                               IOSTANDARD = SSTL18_II;
313 #NET  "ddr2_dqs[*]"                              IOSTANDARD = DIFF_SSTL18_II_DCI;
314 #NET  "ddr2_dqs_n[*]"                            IOSTANDARD = DIFF_SSTL18_II_DCI;
315 #NET  "ddr2_ck[*]"                               IOSTANDARD = DIFF_SSTL18_II;
316 #NET  "ddr2_ck_n[*]"                             IOSTANDARD = DIFF_SSTL18_II;
317 ##------------------------------------------------------------------------------
318
319 ##------------------------------------------------------------------------------
320 ##      Section:        Clock Constraints
321 ##------------------------------------------------------------------------------
322 NET "**/Clock" TNM_NET = "SYS_Clock";
323 TIMESPEC "TS_SYS_Clock" = PERIOD "SYS_Clock" 5 ns HIGH 50 %;
324
325 NET "**/ClockP90" TNM_NET = "SYS_ClockP90";
326 TIMESPEC "TS_SYS_ClockP90" = PERIOD "SYS_ClockP90" 5 ns HIGH 50 %;
327
328 NET "**/ClockD2" TNM_NET = "SYS_ClockD2";
329 TIMESPEC "TS_SYS_ClockD2" = PERIOD "SYS_ClockD2" 7.5 ns HIGH 50 %;
330
331 #NET "*/ClockF200" TNM_NET = "SYS_ClockF200";
332 #TIMESPEC "TS_SYS_ClockF200" = PERIOD "SYS_ClockF200" 5 ns HIGH 50 %;
333 ##------------------------------------------------------------------------------
334
335 ##==============================================================================
336 ##      Section:        Controller 0
337 ##      Desc:           Memory Device:  DDR2_SDRAM->SODIMMs->MT4HTF3264HY-53E
338 ##                              Data Width:             64
339 ##                              Data Mask:              1
340 ##==============================================================================
341
342 ##------------------------------------------------------------------------------
343 ##      Section:        IDELAYCTRL Location Constraints
344 ##------------------------------------------------------------------------------
345 INST "**/*IDELAYCTRL_INST[0].u_idelayctrl" LOC=IDELAYCTRL_X0Y2;
346 INST "**/*IDELAYCTRL_INST[1].u_idelayctrl" LOC=IDELAYCTRL_X0Y1;
347 INST "**/*IDELAYCTRL_INST[2].u_idelayctrl" LOC=IDELAYCTRL_X0Y6;
348 ##------------------------------------------------------------------------------
349
350 ##------------------------------------------------------------------------------
351 ##      Section:        Multicycle Paths
352 ##      Desc:           Define multicycle paths - these paths may take longer because
353 ##                              additional time allowed for logic to settle in
354 ##                              calibration/initialization FSM
355 ##------------------------------------------------------------------------------
356 # MIG 2.1: Eliminate Timegroup definitions for CLK0, and CLK90. Instead trace
357 #          multicycle paths from originating flip-flop to ANY destination
358 #          flip-flop (or in some cases, it can also be a BRAM)
359 # MUX Select for either rising/falling CLK0 for 2nd stage read capture
360 INST "**/u_phy_calib/*gen_rd_data_sel*.u_ff_rd_data_sel" TNM = "TNM_RD_DATA_SEL";
361 TIMESPEC "TS_MC_RD_DATA_SEL" = FROM "TNM_RD_DATA_SEL" TO FFS "TS_SYS_Clock" * 4;
362
363 # MUX select for read data - optional delay on data to account for byte skews
364 #INST "*/u_usr_rd/*gen_rden_sel_mux*.u_ff_rden_sel_mux" TNM = "TNM_RDEN_SEL_MUX";
365 #TIMESPEC "TS_MC_RDEN_SEL_MUX" = FROM "TNM_RDEN_SEL_MUX" TO FFS "TS_SYS_Clock" * 4;
366
367 # Calibration/Initialization complete status flag (for PHY logic only) - can
368 # be used to drive both flip-flops and BRAMs
369 INST "*/u_phy_init/u_ff_phy_init_data_sel" TNM = "TNM_PHY_INIT_DATA_SEL";
370 TIMESPEC "TS_MC_PHY_INIT_DATA_SEL_0" = FROM "TNM_PHY_INIT_DATA_SEL" TO FFS "TS_SYS_Clock" * 4;
371 TIMESPEC "TS_MC_PHY_INIT_DATA_SEL_90" = FROM "TNM_PHY_INIT_DATA_SEL" TO RAMS "TS_SYS_Clock" * 4;
372
373 # Select (address) bits for SRL32 shift registers used in stage3/stage4
374 # calibration
375 INST "**/u_phy_calib/*gen_gate_dly*.u_ff_gate_dly" TNM = "TNM_GATE_DLY";
376 TIMESPEC "TS_MC_GATE_DLY" = FROM "TNM_GATE_DLY" TO FFS "TS_SYS_Clock" * 4;
377 INST "**/u_phy_calib/*gen_rden_dly*.u_ff_rden_dly" TNM = "TNM_RDEN_DLY";
378 TIMESPEC "TS_MC_RDEN_DLY" = FROM "TNM_RDEN_DLY" TO FFS "TS_SYS_Clock" * 4;
379 INST "**/u_phy_calib/*gen_cal_rden_dly*.u_ff_cal_rden_dly" TNM = "TNM_CAL_RDEN_DLY";
380 TIMESPEC "TS_MC_CAL_RDEN_DLY" = FROM "TNM_CAL_RDEN_DLY" TO FFS "TS_SYS_Clock" * 4;
381 ##------------------------------------------------------------------------------
382
383 ##------------------------------------------------------------------------------
384 ##      Section:        DQS Squelch Constraints
385 ##      Desc:           DQS Read Post amble Glitch Squelch circuit related constraints
386 ##                              LOC placement of DQS-squelch related IDDR and IDELAY elements
387 ##                              Each circuit can be located at any of the following locations:
388 ##                                      1. Unused "N"-side of DQS differential pair I/O
389 ##                                      2. DM data mask (output only, input side is free for use)
390 ##                                      3. Any output-only site
391 ##------------------------------------------------------------------------------
392 INST "**/*gen_dqs[0].u_iob_dqs/u_iddr_dq_ce"  LOC = "ILOGIC_X0Y96";
393 INST "**/*gen_dqs[0].u_iob_dqs/u_iodelay_dq_ce"  LOC = "IODELAY_X0Y96";
394 INST "**/*gen_dqs[1].u_iob_dqs/u_iddr_dq_ce"  LOC = "ILOGIC_X0Y58";
395 INST "**/*gen_dqs[1].u_iob_dqs/u_iodelay_dq_ce"  LOC = "IODELAY_X0Y58";
396 INST "**/*gen_dqs[2].u_iob_dqs/u_iddr_dq_ce"  LOC = "ILOGIC_X0Y62";
397 INST "**/*gen_dqs[2].u_iob_dqs/u_iodelay_dq_ce"  LOC = "IODELAY_X0Y62";
398 INST "**/*gen_dqs[3].u_iob_dqs/u_iddr_dq_ce"  LOC = "ILOGIC_X0Y100";
399 INST "**/*gen_dqs[3].u_iob_dqs/u_iodelay_dq_ce"  LOC = "IODELAY_X0Y100";
400 INST "**/*gen_dqs[4].u_iob_dqs/u_iddr_dq_ce"  LOC = "ILOGIC_X0Y102";
401 INST "**/*gen_dqs[4].u_iob_dqs/u_iodelay_dq_ce"  LOC = "IODELAY_X0Y102";
402 INST "**/*gen_dqs[5].u_iob_dqs/u_iddr_dq_ce"  LOC = "ILOGIC_X0Y256";
403 INST "**/*gen_dqs[5].u_iob_dqs/u_iodelay_dq_ce"  LOC = "IODELAY_X0Y256";
404 INST "**/*gen_dqs[6].u_iob_dqs/u_iddr_dq_ce"  LOC = "ILOGIC_X0Y260";
405 INST "**/*gen_dqs[6].u_iob_dqs/u_iodelay_dq_ce"  LOC = "IODELAY_X0Y260";
406 INST "**/*gen_dqs[7].u_iob_dqs/u_iddr_dq_ce"  LOC = "ILOGIC_X0Y262";
407 INST "**/*gen_dqs[7].u_iob_dqs/u_iodelay_dq_ce"  LOC = "IODELAY_X0Y262";
408 ##------------------------------------------------------------------------------
409
410 ##------------------------------------------------------------------------------
411 ##      Section:        DQS CE LOCs
412 ##      Desc:           LOC and timing constraints for flop driving DQS CE enable signal
413 ##                              from fabric logic. Even though the absolute delay on this path
414 ##                              is calibrated out (when synchronizing this output to DQS), the
415 ##                              delay should still be kept as low as possible to reduce
416 ##                              post-calibration voltage/temp variations - these are roughly
417 ##                              proportional to the absolute delay of the path
418 ##------------------------------------------------------------------------------
419 INST "**/u_phy_calib/*gen_gate[0].u_en_dqs_ff"  LOC = SLICE_X0Y48;
420 INST "**/u_phy_calib/*gen_gate[1].u_en_dqs_ff"  LOC = SLICE_X0Y29;
421 INST "**/u_phy_calib/*gen_gate[2].u_en_dqs_ff"  LOC = SLICE_X0Y31;
422 INST "**/u_phy_calib/*gen_gate[3].u_en_dqs_ff"  LOC = SLICE_X0Y50;
423 INST "**/u_phy_calib/*gen_gate[4].u_en_dqs_ff"  LOC = SLICE_X0Y51;
424 INST "**/u_phy_calib/*gen_gate[5].u_en_dqs_ff"  LOC = SLICE_X0Y128;
425 INST "**/u_phy_calib/*gen_gate[6].u_en_dqs_ff"  LOC = SLICE_X0Y130;
426 INST "**/u_phy_calib/*gen_gate[7].u_en_dqs_ff"  LOC = SLICE_X0Y131;
427 ##------------------------------------------------------------------------------
428
429 ##------------------------------------------------------------------------------
430 ##      Section:        DQS Gate Control
431 ##      Desc:           Control for DQS gate - from fabric flop. Prevent "runaway"
432 ##                              delay - two parts to this path: (1) from fabric flop to IDELAY,
433 ##                              (2) from IDELAY to asynchronous reset of IDDR that drives the DQ
434 ##                              CE's.  This can be relaxed by the user for lower frequencies:
435 ##                              300MHz = 850ps, 267MHz = 900ps. At 200MHz = 950ps.
436 ##                              In general PAR should be able to route this within 900ps over
437 ##                              all speed grades.
438 ##------------------------------------------------------------------------------
439 NET "**/u_phy_io/en_dqs*" MAXDELAY = 600 ps;
440 NET "**/u_phy_io/*gen_dqs*.u_iob_dqs/en_dqs_sync" MAXDELAY = 850 ps;
441 ##------------------------------------------------------------------------------
442
443 ##------------------------------------------------------------------------------
444 ##      Section:        IDDR Half Cycles
445 ##      Desc:           "Half-cycle" path constraint from IDDR to CE pin for all DQ
446 ##                              IDDR's for DQS Read Post amble Glitch Squelch circuit.
447 ##------------------------------------------------------------------------------
448 # Max delay from output of IDDR to CE input of DQ IDDRs = tRPST + some slack
449 #  where slack account for rise-time of DQS on board. For now assume slack = 
450 #  0.400ns (based on initial SPICE simulations, assumes use of ODT), so 
451 #  time = 0.4*Tcyc + 0.40ns = 1.6ns @333MHz
452 INST "**/*gen_dqs[*].u_iob_dqs/u_iddr_dq_ce" TNM = "TNM_DQ_CE_IDDR";
453 INST "**/*gen_dq[*].u_iob_dq/*gen_stg2_*.u_iddr_dq" TNM = "TNM_DQS_FLOPS";
454 TIMESPEC "TS_DQ_CE" = FROM "TNM_DQ_CE_IDDR" TO "TNM_DQS_FLOPS" 1.9 ns;
455 ##------------------------------------------------------------------------------
456
457 ##------------------------------------------------------------------------------
458 ##      Section:        Area Group
459 ##      Desc:           MIG 2.2: Prevent unrelated logic from being packed into any
460 ##                              slices used by read data capture RPM's - if unrelated logic gets
461 ##                              packed into these slices, it could cause the DIRT strings that
462 ##                              define the IDDR -> fabric flop routing to become unroutable
463 ##                              during PAR stage (unrelated logic may require routing resources
464 ##                              required by the DIRT strings - MAP does not currently take into
465 ##                              account DIRT strings when placing logic
466 ##------------------------------------------------------------------------------
467 AREA_GROUP "DDR_CAPTURE_FFS" GROUP = CLOSED;
468 ##------------------------------------------------------------------------------
469
470 ##------------------------------------------------------------------------------
471 ##      Section:        DQ LOC Constraints
472 ##      Desc:           Location constraints for DQ read-data capture flops in fabric
473 ##                              (for 2nd stage capture)
474 ##------------------------------------------------------------------------------
475 INST "**/*gen_dq[0].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y42;
476 INST "**/*gen_dq[1].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y43;
477 INST "**/*gen_dq[2].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y45;
478 INST "**/*gen_dq[3].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y46;
479 INST "**/*gen_dq[4].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y41;
480 INST "**/*gen_dq[5].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y42;
481 INST "**/*gen_dq[6].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y44;
482 INST "**/*gen_dq[7].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y44;
483 INST "**/*gen_dq[8].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y28;
484 INST "**/*gen_dq[9].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y32;
485 INST "**/*gen_dq[10].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y33;
486 INST "**/*gen_dq[11].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y34;
487 INST "**/*gen_dq[12].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y26;
488 INST "**/*gen_dq[13].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y28;
489 INST "**/*gen_dq[14].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y33;
490 INST "**/*gen_dq[15].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y34;
491 INST "**/*gen_dq[16].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y35;
492 INST "**/*gen_dq[17].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y36;
493 INST "**/*gen_dq[18].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y38;
494 INST "**/*gen_dq[19].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y39;
495 INST "**/*gen_dq[20].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y36;
496 INST "**/*gen_dq[21].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y37;
497 INST "**/*gen_dq[22].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y38;
498 INST "**/*gen_dq[23].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y39;
499 INST "**/*gen_dq[24].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y46;
500 INST "**/*gen_dq[25].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y49;
501 INST "**/*gen_dq[26].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y53;
502 INST "**/*gen_dq[27].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y55;
503 INST "**/*gen_dq[28].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y49;
504 INST "**/*gen_dq[29].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y52;
505 INST "**/*gen_dq[30].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y54;
506 INST "**/*gen_dq[31].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y56;
507 INST "**/*gen_dq[32].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y52;
508 INST "**/*gen_dq[33].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y56;
509 INST "**/*gen_dq[34].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y58;
510 INST "**/*gen_dq[35].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y59;
511 INST "**/*gen_dq[36].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y54;
512 INST "**/*gen_dq[37].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y57;
513 INST "**/*gen_dq[38].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y58;
514 INST "**/*gen_dq[39].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y59;
515 INST "**/*gen_dq[40].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y120;
516 INST "**/*gen_dq[41].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y121;
517 INST "**/*gen_dq[42].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y122;
518 INST "**/*gen_dq[43].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y123;
519 INST "**/*gen_dq[44].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y120;
520 INST "**/*gen_dq[45].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y121;
521 INST "**/*gen_dq[46].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y123;
522 INST "**/*gen_dq[47].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y124;
523 INST "**/*gen_dq[48].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y124;
524 INST "**/*gen_dq[49].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y126;
525 INST "**/*gen_dq[50].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y132;
526 INST "**/*gen_dq[51].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y133;
527 INST "**/*gen_dq[52].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y125;
528 INST "**/*gen_dq[53].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y126;
529 INST "**/*gen_dq[54].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y133;
530 INST "**/*gen_dq[55].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y134;
531 INST "**/*gen_dq[56].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y134;
532 INST "**/*gen_dq[57].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y136;
533 INST "**/*gen_dq[58].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y137;
534 INST "**/*gen_dq[59].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y138;
535 INST "**/*gen_dq[60].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y135;
536 INST "**/*gen_dq[61].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y136;
537 INST "**/*gen_dq[62].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y138;
538 INST "**/*gen_dq[63].u_iob_dq/*gen_stg2_*.u_ff_stg2a_rise"  RLOC_ORIGIN = X0Y139;
539 ##------------------------------------------------------------------------------