OpenCores
URL https://opencores.org/ocsvn/s80186/s80186/trunk

Subversion Repositories s80186

[/] [s80186/] [trunk/] [fpga/] [de0-cv/] [Top.sdc] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 jamieiles
# Copyright Jamie Iles, 2017
2
#
3
# This file is part of s80x86.
4
#
5
# s80x86 is free software: you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License as published by
7
# the Free Software Foundation, either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# s80x86 is distributed in the hope that it will be useful,
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with s80x86.  If not, see .
17
 
18
# JTAG
19
set_input_delay -clock { altera_reserved_tck } 20 [get_ports altera_reserved_tdi]
20
set_input_delay -clock { altera_reserved_tck } 20 [get_ports altera_reserved_tms]
21
set_output_delay -clock { altera_reserved_tck } 20 [get_ports altera_reserved_tdo]
22
set_false_path -from [get_clocks {altera_reserved_tck}] -to [get_clocks {altera_reserved_tck}]
23
 
24
create_clock -period 20.000 -name clk clk
25
derive_pll_clocks
26
 
27
set sdram_pll "SysPLL|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk"
28
set sys_clk   "SysPLL|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk"
29
 
30
# SPI clock
31
create_generated_clock -name {spi_clk} \
32
        -source [get_pins {SysPLL|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk}] \
33
        -divide_by 2 -master_clock {SysPLL|altera_pll_i|general[1].gpll~PLL_OUTPUT_COUNTER|divclk} \
34
        [get_registers {SPIPorts:SPIPorts|SPIMaster:SPIMaster|sclk}]
35
 
36
derive_clock_uncertainty
37
 
38
# SDRAM
39
set sdram_tsu       1.5
40
set sdram_th        0.8
41
set sdram_tco_min   2.7
42
set sdram_tco_max   6.4
43
 
44
# FPGA timing constraints
45
set sdram_input_delay_min        $sdram_tco_min
46
set sdram_input_delay_max        $sdram_tco_max
47
set sdram_output_delay_min      -$sdram_th
48
set sdram_output_delay_max       $sdram_tsu
49
 
50
set_false_path -to [get_ports {sdr_clk}]
51
 
52
# FPGA Outputs
53
set sdram_outputs [get_ports {
54
        s_clken
55
        s_ras_n
56
        s_cas_n
57
        s_wr_en
58
        s_bytesel[*]
59
        s_addr[*]
60
        s_cs_n
61
        s_data[*]
62
        s_banksel[*]
63
}]
64
set_output_delay \
65
        -clock [get_clocks $sdram_pll] \
66
        -min $sdram_output_delay_min \
67
        $sdram_outputs
68
set_output_delay \
69
        -clock [get_clocks $sdram_pll] \
70
        -max $sdram_output_delay_max \
71
        $sdram_outputs
72
 
73
# FPGA Inputs
74
set sdram_inputs [get_ports {
75
        s_data[*]
76
}]
77
set_input_delay \
78
        -clock [get_clocks $sdram_pll] \
79
        -min $sdram_input_delay_min \
80
        $sdram_inputs
81
set_input_delay \
82
        -clock [get_clocks $sdram_pll] \
83
        -max $sdram_input_delay_max \
84
        $sdram_inputs
85
 
86
# SDRAM-to-FPGA multi-cycle constraint
87
#
88
# * The PLL is configured so that SDRAM clock leads the system
89
#   clock by -2.79ns
90
set_multicycle_path -setup -end -from [get_clocks $sdram_pll] -to [get_clocks $sys_clk] 2
91
 
92
# Reset request
93
set_false_path -from [get_ports {rst_in_n}]
94
 
95
# uart
96
set_false_path -from [get_ports uart_rx]
97
set_false_path -to [get_ports uart_tx]
98
 
99
# SPI bus
100
set spi_delay_max 1
101
set spi_delay_min 1
102
 
103
# MOSI
104
set_output_delay -add_delay -clock {spi_clk} -max [expr $spi_delay_max] [get_ports {spi_mosi}]
105
set_output_delay -add_delay -clock {spi_clk} -min [expr $spi_delay_min] [get_ports {spi_mosi}]
106
# MISO
107
set_input_delay -add_delay -clock_fall -clock {spi_clk} -max [expr $spi_delay_max] [get_ports {spi_miso}]
108
set_input_delay -add_delay -clock_fall -clock {spi_clk} -min [expr $spi_delay_min] [get_ports {spi_miso}]
109
# CLK
110
set_output_delay -add_delay -clock {spi_clk} -max [expr $spi_delay_max] [get_ports {spi_sclk}]
111
set_output_delay -add_delay -clock {spi_clk} -min [expr $spi_delay_min] [get_ports {spi_sclk}]
112
 
113
set_multicycle_path -setup -start -from [get_clocks $sys_clk] -to [get_clocks {spi_clk}] 1
114
set_multicycle_path -hold -start -from [get_clocks $sys_clk] -to [get_clocks {spi_clk}] 1
115
set_multicycle_path -setup -end -from [get_clocks {spi_clk}] -to [get_clocks $sys_clk] 1
116
set_multicycle_path -hold -end -from [get_clocks {spi_clk}] -to [get_clocks $sys_clk] 1
117
 
118
set_false_path -to [get_ports {spi_ncs}]
119
 
120
# PS2
121
set_false_path -from [get_ports {ps2_clk ps2_dat}]
122
set_false_path -to [get_ports {ps2_clk ps2_dat}]
123
 
124
# LEDs
125
set_false_path -to [get_ports {leds[*]}]

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.