1 |
2 |
csantifort |
# ----------------------------------------------------------------
|
2 |
|
|
# //
|
3 |
|
|
# Xilinx FPGA synthesis constraints file //
|
4 |
|
|
# //
|
5 |
|
|
# This file is part of the Amber project //
|
6 |
|
|
# http://www.opencores.org/project,amber //
|
7 |
|
|
# //
|
8 |
|
|
# Description //
|
9 |
|
|
# //
|
10 |
|
|
# Author(s): //
|
11 |
|
|
# - Conor Santifort, csantifort.amber@gmail.com //
|
12 |
|
|
# //
|
13 |
|
|
#/ ///////////////////////////////////////////////////////////////
|
14 |
|
|
# //
|
15 |
|
|
# Copyright (C) 2010 Authors and OPENCORES.ORG //
|
16 |
|
|
# //
|
17 |
|
|
# This source file may be used and distributed without //
|
18 |
|
|
# restriction provided that this copyright statement is not //
|
19 |
|
|
# removed from the file and that any derivative work contains //
|
20 |
|
|
# the original copyright notice and the associated disclaimer. //
|
21 |
|
|
# //
|
22 |
|
|
# This source file is free software; you can redistribute it //
|
23 |
|
|
# and/or modify it under the terms of the GNU Lesser General //
|
24 |
|
|
# Public License as published by the Free Software Foundation; //
|
25 |
|
|
# either version 2.1 of the License, or (at your option) any //
|
26 |
|
|
# later version. //
|
27 |
|
|
# //
|
28 |
|
|
# This source is distributed in the hope that it will be //
|
29 |
|
|
# useful, but WITHOUT ANY WARRANTY; without even the implied //
|
30 |
|
|
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
|
31 |
|
|
# PURPOSE. See the GNU Lesser General Public License for more //
|
32 |
|
|
# details. //
|
33 |
|
|
# //
|
34 |
|
|
# You should have received a copy of the GNU Lesser General //
|
35 |
|
|
# Public License along with this source; if not, download it //
|
36 |
|
|
# from http://www.opencores.org/lgpl.shtml //
|
37 |
|
|
# //
|
38 |
|
|
# ----------------------------------------------------------------
|
39 |
|
|
|
40 |
|
|
############################################################################
|
41 |
|
|
# VCC AUX VOLTAGE
|
42 |
|
|
############################################################################
|
43 |
|
|
CONFIG VCCAUX=2.5;
|
44 |
|
|
|
45 |
|
|
############################################################################
|
46 |
|
|
## Clock constraints
|
47 |
|
|
############################################################################
|
48 |
|
|
|
49 |
|
|
# 200MHz board clock that feeds the PLL
|
50 |
|
|
NET "u_clocks_resets/brd_clk_ibufg" TNM_NET = "BRD_CLK";
|
51 |
|
|
TIMESPEC "TS_PLL_CLK" = PERIOD "BRD_CLK" 5.0 ns HIGH 50 %;
|
52 |
|
|
|
53 |
|
|
# 25 MHz Ethernet MII transmit clock
|
54 |
|
|
NET "mtx_clk_pad_i" TNM_NET = "MTX_CLK";
|
55 |
|
|
TIMESPEC "TS_MTX_CLK" = PERIOD "MTX_CLK" 40.0 ns HIGH 50 %;
|
56 |
|
|
|
57 |
|
|
# 25 MHz Ethernet MII receive clock
|
58 |
|
|
NET "mrx_clk_pad_i" TNM_NET = "MRX_CLK";
|
59 |
|
|
TIMESPEC "TS_MRX_CLK" = PERIOD "MRX_CLK" 40.0 ns HIGH 50 %;
|
60 |
|
|
|
61 |
|
|
# False paths between clocks
|
62 |
64 |
csantifort |
PIN "u_ddr3/memc3_infrastructure_inst/u_pll_adv.CLKOUT3" TNM = "DDR_CLK";
|
63 |
|
|
PIN "u_clocks_resets/u_pll_adv.CLKOUT2" TNM = "CLKOUT2";
|
64 |
|
|
TIMESPEC "TS_false2" = FROM "DDR_CLK" TO "CLKOUT2" TIG;
|
65 |
2 |
csantifort |
|
66 |
|
|
|
67 |
64 |
csantifort |
############################################################################
|
68 |
|
|
# DDR2 requires the MCB to operate in Extended performance mode with higher Vccint
|
69 |
|
|
# specification to achieve maximum frequency. Therefore, the following CONFIG constraint
|
70 |
|
|
# follows the corresponding GUI option setting. However, DDR3 can operate at higher
|
71 |
|
|
# frequencies with any Vcciint value by operating MCB in extended mode. Please do not
|
72 |
|
|
# remove/edit the below constraint to avoid false errors.
|
73 |
|
|
############################################################################
|
74 |
|
|
CONFIG MCB_PERFORMANCE= EXTENDED;
|
75 |
2 |
csantifort |
|
76 |
64 |
csantifort |
|
77 |
|
|
##################################################################################
|
78 |
|
|
# Timing Ignore constraints for paths crossing the clock domain
|
79 |
|
|
##################################################################################
|
80 |
|
|
NET "u_ddr3/memc?_wrapper_inst/mcb_ui_top_inst/mcb_raw_wrapper_inst/selfrefresh_mcb_mode" TIG;
|
81 |
|
|
NET "u_ddr3/c?_pll_lock" TIG;
|
82 |
|
|
INST "u_ddr3/memc?_wrapper_inst/mcb_ui_top_inst/mcb_raw_wrapper_inst/gen_term_calib.mcb_soft_calibration_top_inst/mcb_soft_calibration_inst/DONE_SOFTANDHARD_CAL*" TIG;
|
83 |
|
|
|
84 |
|
|
|
85 |
|
|
|
86 |
2 |
csantifort |
############################################################################
|
87 |
|
|
## I/O TERMINATION
|
88 |
|
|
############################################################################
|
89 |
|
|
NET "ddr3_dq[*]" IN_TERM = UNTUNED_SPLIT_50;
|
90 |
|
|
NET "ddr3_dqs_p[*]" IN_TERM = UNTUNED_SPLIT_50;
|
91 |
|
|
NET "ddr3_dqs_n[*]" IN_TERM = UNTUNED_SPLIT_50;
|
92 |
|
|
|
93 |
|
|
############################################################################
|
94 |
|
|
# I/O STANDARDS
|
95 |
|
|
############################################################################
|
96 |
|
|
|
97 |
|
|
NET "ddr3_dq[*]" IOSTANDARD = SSTL15_II;
|
98 |
|
|
NET "ddr3_addr[*]" IOSTANDARD = SSTL15_II;
|
99 |
|
|
NET "ddr3_ba[*]" IOSTANDARD = SSTL15_II;
|
100 |
|
|
NET "ddr3_dqs_p[*]" IOSTANDARD = DIFF_SSTL15_II;
|
101 |
|
|
NET "ddr3_dqs_n[*]" IOSTANDARD = DIFF_SSTL15_II;
|
102 |
|
|
NET "ddr3_ck_p" IOSTANDARD = DIFF_SSTL15_II;
|
103 |
|
|
NET "ddr3_ck_n" IOSTANDARD = DIFF_SSTL15_II;
|
104 |
|
|
NET "ddr3_cke" IOSTANDARD = SSTL15_II;
|
105 |
|
|
NET "ddr3_ras_n" IOSTANDARD = SSTL15_II;
|
106 |
|
|
NET "ddr3_cas_n" IOSTANDARD = SSTL15_II;
|
107 |
|
|
NET "ddr3_we_n" IOSTANDARD = SSTL15_II;
|
108 |
|
|
NET "ddr3_odt" IOSTANDARD = SSTL15_II;
|
109 |
|
|
NET "ddr3_reset_n" IOSTANDARD = SSTL15_II;
|
110 |
|
|
NET "ddr3_dm[*]" IOSTANDARD = SSTL15_II;
|
111 |
|
|
NET "mcb3_rzq" IOSTANDARD = SSTL15_II;
|
112 |
64 |
csantifort |
#NET "mcb3_zio" IOSTANDARD = SSTL15_II;
|
113 |
2 |
csantifort |
NET "brd_clk_p" IOSTANDARD = LVDS_25;
|
114 |
|
|
NET "brd_clk_n" IOSTANDARD = LVDS_25;
|
115 |
|
|
NET "brd_rst" IOSTANDARD = LVCMOS15;
|
116 |
|
|
|
117 |
|
|
NET "mtx_clk_pad_i" IOSTANDARD = LVCMOS25;
|
118 |
|
|
NET "mtxd_pad_o[*]" IOSTANDARD = LVCMOS25;
|
119 |
|
|
NET "mtxen_pad_o" IOSTANDARD = LVCMOS25;
|
120 |
|
|
NET "mtxerr_pad_o" IOSTANDARD = LVCMOS25;
|
121 |
|
|
NET "mrx_clk_pad_i" IOSTANDARD = LVCMOS25;
|
122 |
|
|
NET "mrxd_pad_i[*]" IOSTANDARD = LVCMOS25;
|
123 |
|
|
NET "mrxdv_pad_i" IOSTANDARD = LVCMOS25;
|
124 |
|
|
NET "mrxerr_pad_i" IOSTANDARD = LVCMOS25;
|
125 |
|
|
NET "mcoll_pad_i" IOSTANDARD = LVCMOS25;
|
126 |
|
|
NET "mcrs_pad_i" IOSTANDARD = LVCMOS25;
|
127 |
|
|
NET "md_pad_io" IOSTANDARD = LVCMOS25;
|
128 |
|
|
NET "mdc_pad_o" IOSTANDARD = LVCMOS25;
|
129 |
|
|
NET "phy_reset_n" IOSTANDARD = LVCMOS25;
|
130 |
61 |
csantifort |
NET "led[*]" IOSTANDARD = LVCMOS25;
|
131 |
2 |
csantifort |
|
132 |
|
|
|
133 |
|
|
############################################################################
|
134 |
|
|
# Pin Location Constraints
|
135 |
|
|
############################################################################
|
136 |
|
|
NET "brd_rst" LOC = H8;
|
137 |
|
|
NET "brd_clk_n" LOC = K22;
|
138 |
|
|
NET "brd_clk_p" LOC = K21;
|
139 |
|
|
NET "o_uart0_cts" LOC = F18;
|
140 |
|
|
NET "i_uart0_rts" LOC = F19;
|
141 |
|
|
NET "o_uart0_rx" LOC = B21;
|
142 |
|
|
NET "i_uart0_tx" LOC = H17;
|
143 |
61 |
csantifort |
NET "led[0]" LOC = D17;
|
144 |
|
|
NET "led[1]" LOC = AB4;
|
145 |
|
|
NET "led[2]" LOC = D21;
|
146 |
|
|
NET "led[3]" LOC = W15;
|
147 |
2 |
csantifort |
|
148 |
61 |
csantifort |
|
149 |
2 |
csantifort |
############################################################################
|
150 |
|
|
# DDR3 Interface pin locations
|
151 |
|
|
############################################################################
|
152 |
|
|
NET "ddr3_addr[0]" LOC = "K2" ;
|
153 |
|
|
NET "ddr3_addr[10]" LOC = "J4" ;
|
154 |
|
|
NET "ddr3_addr[11]" LOC = "E1" ;
|
155 |
|
|
NET "ddr3_addr[12]" LOC = "F1" ;
|
156 |
|
|
NET "ddr3_addr[1]" LOC = "K1" ;
|
157 |
|
|
NET "ddr3_addr[2]" LOC = "K5" ;
|
158 |
|
|
NET "ddr3_addr[3]" LOC = "M6" ;
|
159 |
|
|
NET "ddr3_addr[4]" LOC = "H3" ;
|
160 |
|
|
NET "ddr3_addr[5]" LOC = "M3" ;
|
161 |
|
|
NET "ddr3_addr[6]" LOC = "L4" ;
|
162 |
|
|
NET "ddr3_addr[7]" LOC = "K6" ;
|
163 |
|
|
NET "ddr3_addr[8]" LOC = "G3" ;
|
164 |
|
|
NET "ddr3_addr[9]" LOC = "G1" ;
|
165 |
|
|
NET "ddr3_ba[0]" LOC = "J3" ;
|
166 |
|
|
NET "ddr3_ba[1]" LOC = "J1" ;
|
167 |
|
|
NET "ddr3_ba[2]" LOC = "H1" ;
|
168 |
|
|
NET "ddr3_cas_n" LOC = "M4" ;
|
169 |
|
|
NET "ddr3_ck_p" LOC = "K4" ;
|
170 |
|
|
NET "ddr3_ck_n" LOC = "K3" ;
|
171 |
|
|
NET "ddr3_cke" LOC = "F2" ;
|
172 |
|
|
NET "ddr3_dm[0]" LOC = "N4" ;
|
173 |
|
|
NET "ddr3_dq[0]" LOC = "R3" ;
|
174 |
|
|
NET "ddr3_dq[10]" LOC = "U3" ;
|
175 |
|
|
NET "ddr3_dq[11]" LOC = "U1" ;
|
176 |
|
|
NET "ddr3_dq[12]" LOC = "W3" ;
|
177 |
|
|
NET "ddr3_dq[13]" LOC = "W1" ;
|
178 |
|
|
NET "ddr3_dq[14]" LOC = "Y2" ;
|
179 |
|
|
NET "ddr3_dq[15]" LOC = "Y1" ;
|
180 |
|
|
NET "ddr3_dq[1]" LOC = "R1" ;
|
181 |
|
|
NET "ddr3_dq[2]" LOC = "P2" ;
|
182 |
|
|
NET "ddr3_dq[3]" LOC = "P1" ;
|
183 |
|
|
NET "ddr3_dq[4]" LOC = "L3" ;
|
184 |
|
|
NET "ddr3_dq[5]" LOC = "L1" ;
|
185 |
|
|
NET "ddr3_dq[6]" LOC = "M2" ;
|
186 |
|
|
NET "ddr3_dq[7]" LOC = "M1" ;
|
187 |
|
|
NET "ddr3_dq[8]" LOC = "T2" ;
|
188 |
|
|
NET "ddr3_dq[9]" LOC = "T1" ;
|
189 |
|
|
NET "ddr3_dqs_p[0]" LOC = "N3" ;
|
190 |
|
|
NET "ddr3_dqs_n[0]" LOC = "N1" ;
|
191 |
|
|
NET "ddr3_odt" LOC = "L6" ;
|
192 |
|
|
NET "ddr3_ras_n" LOC = "M5" ;
|
193 |
|
|
NET "ddr3_reset_n" LOC = "E3" ;
|
194 |
|
|
|
195 |
|
|
NET "ddr3_dm[1]" LOC = "P3" ;
|
196 |
|
|
NET "ddr3_dqs_p[1]" LOC = "V2" ;
|
197 |
|
|
NET "ddr3_dqs_n[1]" LOC = "V1" ;
|
198 |
|
|
NET "ddr3_we_n" LOC = "H2" ;
|
199 |
|
|
|
200 |
|
|
# The following pins are available for used as RZQ or ZIO pins#
|
201 |
|
|
NET "mcb3_rzq" LOC = "K7" ;
|
202 |
64 |
csantifort |
#NET "mcb3_zio" LOC = "R7" ;
|
203 |
2 |
csantifort |
|
204 |
|
|
############################################################################
|
205 |
|
|
# Ethernet MII MAC to PHY interface
|
206 |
|
|
############################################################################
|
207 |
|
|
NET "mtx_clk_pad_i" LOC = "L20" ;
|
208 |
|
|
NET "mtxd_pad_o[0]" LOC = "U10" ;
|
209 |
|
|
NET "mtxd_pad_o[1]" LOC = "T10" ;
|
210 |
|
|
NET "mtxd_pad_o[2]" LOC = "AB8" ;
|
211 |
|
|
NET "mtxd_pad_o[3]" LOC = "AA8" ;
|
212 |
|
|
NET "mtxen_pad_o" LOC = "T8" ;
|
213 |
|
|
NET "mtxerr_pad_o" LOC = "U8" ;
|
214 |
|
|
NET "mrx_clk_pad_i" LOC = "P20" ;
|
215 |
|
|
NET "mrxd_pad_i[0]" LOC = "P19" ;
|
216 |
|
|
NET "mrxd_pad_i[1]" LOC = "Y22" ;
|
217 |
|
|
NET "mrxd_pad_i[2]" LOC = "Y21" ;
|
218 |
|
|
NET "mrxd_pad_i[3]" LOC = "W22" ;
|
219 |
|
|
NET "mrxdv_pad_i" LOC = "T22" ;
|
220 |
|
|
NET "mrxerr_pad_i" LOC = "U20" ;
|
221 |
|
|
NET "mcoll_pad_i" LOC = "M16" ;
|
222 |
|
|
NET "mcrs_pad_i" LOC = "N15" ;
|
223 |
|
|
NET "md_pad_io" LOC = "V20" ;
|
224 |
|
|
NET "mdc_pad_o" LOC = "R19" ;
|
225 |
|
|
NET "phy_reset_n" LOC = "J22" ;
|