| 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 |
|
|
|