1 |
15 |
mikaeljf |
#**************************************************************
|
2 |
|
|
# System Level Constraints
|
3 |
|
|
#**************************************************************
|
4 |
|
|
NET sdram_clk LOC = "F13" | IOSTANDARD = LVCMOS33;
|
5 |
|
|
NET wb_clk LOC = "K14" | IOSTANDARD = LVCMOS33;
|
6 |
|
|
NET wb_rst LOC = "Y16" | IOSTANDARD = LVTTL;
|
7 |
|
|
NET wb_rst TIG;
|
8 |
|
|
|
9 |
|
|
#**************************************************************
|
10 |
|
|
# Timing Constraints
|
11 |
|
|
#**************************************************************
|
12 |
|
|
|
13 |
|
|
#**************************************************************
|
14 |
|
|
# Clocks
|
15 |
|
|
#**************************************************************
|
16 |
|
|
NET "sdram_clk" TNM_NET = sdram_clk;
|
17 |
|
|
TIMESPEC TS_sdram_clk = PERIOD "sdram_clk" 8 ns HIGH 50%; # 125 MHz
|
18 |
|
|
NET "wb_clk" TNM_NET = wb_clk;
|
19 |
|
|
TIMESPEC TS_wb_clk = PERIOD "wb_clk" 40 ns HIGH 50%; # 25 MHz
|
20 |
|
|
|
21 |
|
|
# External feedback to DCM
|
22 |
|
|
NET "ck_fb_pad_i" FEEDBACK = 2 ns NET "ck_fb_pad_o";
|
23 |
|
|
|
24 |
|
|
#
|
25 |
19 |
mikaeljf |
NET "wb_clk" CLOCK_DEDICATED_ROUTE = FALSE;
|
26 |
15 |
mikaeljf |
NET "sdram_clk" CLOCK_DEDICATED_ROUTE = FALSE;
|
27 |
19 |
mikaeljf |
PIN "dcm_pll_0/DCM_external/DCM_SP.CLKIN" CLOCK_DEDICATED_ROUTE = FALSE;
|
28 |
15 |
mikaeljf |
|
29 |
|
|
#**************************************************************
|
30 |
|
|
# DDR2 IF
|
31 |
|
|
#**************************************************************
|
32 |
|
|
# Data
|
33 |
|
|
#NET dq_pad_io<31> LOC="U9" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
34 |
|
|
#NET dq_pad_io<30> LOC="V8" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
35 |
|
|
#NET dq_pad_io<29> LOC="AB1" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
36 |
|
|
#NET dq_pad_io<28> LOC="AC1" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
37 |
|
|
#NET dq_pad_io<27> LOC="Y5" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
38 |
|
|
#NET dq_pad_io<26> LOC="Y6" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
39 |
|
|
#NET dq_pad_io<25> LOC="U7" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
40 |
|
|
#NET dq_pad_io<24> LOC="U8" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
41 |
|
|
#NET dq_pad_io<23> LOC="AA2" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
42 |
|
|
#NET dq_pad_io<22> LOC="AA3" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
43 |
|
|
#NET dq_pad_io<21> LOC="Y1" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
44 |
|
|
#NET dq_pad_io<20> LOC="Y2" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
45 |
|
|
#NET dq_pad_io<19> LOC="T7" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
46 |
|
|
#NET dq_pad_io<18> LOC="U6" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
47 |
|
|
#NET dq_pad_io<17> LOC="U5" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
48 |
|
|
#NET dq_pad_io<16> LOC="V5" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
49 |
|
|
NET dq_pad_io<15> LOC="R8" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
50 |
|
|
NET dq_pad_io<14> LOC="R7" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
51 |
|
|
NET dq_pad_io<13> LOC="U1" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
52 |
|
|
NET dq_pad_io<12> LOC="U2" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
53 |
|
|
NET dq_pad_io<11> LOC="P8" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
54 |
|
|
NET dq_pad_io<10> LOC="P9" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
55 |
|
|
NET dq_pad_io<9> LOC="R5" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
56 |
|
|
NET dq_pad_io<8> LOC="R6" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
57 |
|
|
NET dq_pad_io<7> LOC="P7" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
58 |
|
|
NET dq_pad_io<6> LOC="P6" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
59 |
|
|
NET dq_pad_io<5> LOC="T3" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
60 |
|
|
NET dq_pad_io<4> LOC="T4" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
61 |
|
|
NET dq_pad_io<3> LOC="N9" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
62 |
|
|
NET dq_pad_io<2> LOC="P10" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
63 |
|
|
NET dq_pad_io<1> LOC="P4" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
64 |
|
|
NET dq_pad_io<0> LOC="P3" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
65 |
|
|
# Address
|
66 |
|
|
NET addr_pad_o<0> LOC="M4" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
67 |
|
|
NET addr_pad_o<1> LOC="M3" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
68 |
|
|
NET addr_pad_o<2> LOC="M8" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
69 |
|
|
NET addr_pad_o<3> LOC="M7" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
70 |
|
|
NET addr_pad_o<4> LOC="L4" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
71 |
|
|
NET addr_pad_o<5> LOC="L3" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
72 |
|
|
NET addr_pad_o<6> LOC="K3" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
73 |
|
|
NET addr_pad_o<7> LOC="K2" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
74 |
|
|
NET addr_pad_o<8> LOC="K5" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
75 |
|
|
NET addr_pad_o<9> LOC="K4" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
76 |
|
|
NET addr_pad_o<10> LOC="M10" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
77 |
|
|
NET addr_pad_o<11> LOC="M9" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
78 |
|
|
NET addr_pad_o<12> LOC="J5" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
79 |
|
|
# Bank address
|
80 |
|
|
NET ba_pad_o<0> LOC="J4" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
81 |
|
|
NET ba_pad_o<1> LOC="K6" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
82 |
|
|
# Control
|
83 |
|
|
NET cas_pad_o LOC="L10" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
84 |
|
|
NET cke_pad_o LOC="L7" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
85 |
|
|
NET cs_n_pad_o LOC="H2" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
86 |
|
|
NET ras_pad_o LOC="H1" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
87 |
|
|
NET we_pad_o LOC="L9" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
88 |
|
|
# Data mask
|
89 |
|
|
NET dm_rdqs_pad_io<0> LOC="M6" |IOSTANDARD = SSTL18_II |IOB = TRUE;
|
90 |
|
|
NET dm_rdqs_pad_io<1> LOC="R2" |IOSTANDARD = SSTL18_II |IOB = TRUE;
|
91 |
|
|
#NET dm_rdqs_pad_io<2> LOC="V1" | IOSTANDARD = SSTL18_II | IOB = TRUE;
|
92 |
|
|
#NET dm_rdqs_pad_io<3> LOC="V2" | IOSTANDARD = SSTL18_II | IOB = TRUE;
|
93 |
|
|
# Strobe
|
94 |
|
|
NET dqs_pad_io<0> LOC="R3" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
95 |
|
|
NET dqs_pad_io<1> LOC="T5" |IOSTANDARD = SSTL18_II |IOB = TRUE |FAST;
|
96 |
|
|
#NET dqs_pad_io<2> LOC="W3" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
97 |
|
|
#NET dqs_pad_io<3> LOC="V7" | IOSTANDARD = SSTL18_II | IOB = TRUE | FAST;
|
98 |
|
|
# Clocks
|
99 |
|
|
NET ck_pad_o LOC="N5" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
100 |
|
|
NET ck_n_pad_o LOC="N4" |IOSTANDARD = SSTL18_I |IOB = TRUE;
|
101 |
|
|
#NET ck_pad_o<1> LOC="N1" | IOSTANDARD = SSTL18_I | IOB = TRUE;
|
102 |
|
|
#NET ck_n_pad_o<1> LOC="N2" | IOSTANDARD = SSTL18_I | IOB = TRUE;
|
103 |
|
|
NET ck_fb_pad_o LOC="M2" |IOSTANDARD = LVCMOS18 |IOB = TRUE;
|
104 |
|
|
NET ck_fb_pad_i LOC="N7" |IOSTANDARD = LVCMOS18 |IOB = TRUE;
|
105 |
|
|
#
|
106 |
|
|
INST "dq_pad_io<0>" TNM = TNM_dq_in;
|
107 |
|
|
INST "dq_pad_io<1>" TNM = TNM_dq_in;
|
108 |
|
|
INST "dq_pad_io<2>" TNM = TNM_dq_in;
|
109 |
|
|
INST "dq_pad_io<3>" TNM = TNM_dq_in;
|
110 |
|
|
INST "dq_pad_io<4>" TNM = TNM_dq_in;
|
111 |
|
|
INST "dq_pad_io<5>" TNM = TNM_dq_in;
|
112 |
|
|
INST "dq_pad_io<6>" TNM = TNM_dq_in;
|
113 |
|
|
INST "dq_pad_io<7>" TNM = TNM_dq_in;
|
114 |
|
|
INST "dq_pad_io<8>" TNM = TNM_dq_in;
|
115 |
|
|
INST "dq_pad_io<9>" TNM = TNM_dq_in;
|
116 |
|
|
INST "dq_pad_io<10>" TNM = TNM_dq_in;
|
117 |
|
|
INST "dq_pad_io<11>" TNM = TNM_dq_in;
|
118 |
|
|
INST "dq_pad_io<12>" TNM = TNM_dq_in;
|
119 |
|
|
INST "dq_pad_io<13>" TNM = TNM_dq_in;
|
120 |
|
|
INST "dq_pad_io<14>" TNM = TNM_dq_in;
|
121 |
|
|
INST "dq_pad_io<15>" TNM = TNM_dq_in;
|
122 |
|
|
|