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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [synthesis/] [synopsys/] [constraints.tcl] - Blame information for rev 134

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 olivier.gi
##############################################################################
2
#                                                                            #
3
#                            CLOCK DEFINITION                                #
4
#                                                                            #
5
##############################################################################
6
 
7 134 olivier.gi
#set CLOCK_PERIOD 100.0; #  10 MHz
8
#set CLOCK_PERIOD 66.6; #  15 MHz
9
#set CLOCK_PERIOD 50.0; #  20 MHz
10
set CLOCK_PERIOD 40.0; #  25 MHz
11
#set CLOCK_PERIOD 33.3; #  30 MHz
12 2 olivier.gi
#set CLOCK_PERIOD 30.0; #  33 MHz
13 134 olivier.gi
#set CLOCK_PERIOD 25.0; #  40 MHz
14
#set CLOCK_PERIOD 22.2; #  45 MHz
15
#set CLOCK_PERIOD 20.0; #  50 MHz
16
#set CLOCK_PERIOD 16.7; #  60 MHz
17
#set CLOCK_PERIOD 15.4; #  65 MHz
18 2 olivier.gi
#set CLOCK_PERIOD 15.0; #  66 MHz
19 134 olivier.gi
#set CLOCK_PERIOD 14.3; #  70 MHz
20
#set CLOCK_PERIOD 12.5; #  80 MHz
21
#set CLOCK_PERIOD 11.1; #  90 MHz
22 2 olivier.gi
#set CLOCK_PERIOD 10.0; # 100 MHz
23
#set CLOCK_PERIOD  8.0; # 125 MHz
24
 
25
 
26 56 olivier.gi
create_clock -name     "dco_clk"                              \
27 2 olivier.gi
             -period   "$CLOCK_PERIOD"                        \
28
             -waveform "[expr $CLOCK_PERIOD/2] $CLOCK_PERIOD" \
29 56 olivier.gi
             [get_ports dco_clk]
30 2 olivier.gi
 
31 134 olivier.gi
create_clock -name     "lfxt_clk"                             \
32
             -period   "$CLOCK_PERIOD"                        \
33
             -waveform "[expr $CLOCK_PERIOD/2] $CLOCK_PERIOD" \
34
             [get_ports lfxt_clk]
35 2 olivier.gi
 
36 134 olivier.gi
 
37 2 olivier.gi
##############################################################################
38
#                                                                            #
39
#                          CREATE PATH GROUPS                                #
40
#                                                                            #
41
##############################################################################
42
 
43
group_path -name REGOUT      -to   [all_outputs]
44 56 olivier.gi
group_path -name REGIN       -from [remove_from_collection [all_inputs] [get_ports dco_clk]]
45
group_path -name FEEDTHROUGH -from [remove_from_collection [all_inputs] [get_ports dco_clk]] -to [all_outputs]
46 2 olivier.gi
 
47
 
48
##############################################################################
49
#                                                                            #
50
#                          BOUNDARY TIMINGS                                  #
51
#                                                                            #
52
##############################################################################
53 56 olivier.gi
# NOTE: There are some path through between Program/Data memory signals
54
#      which are limiting the maximum frequency achievable by the core.
55
#       The memory constraints set on these interfaces are therefore quite
56
#      critical regarding the achievable performance of the core.
57
#       As a consequence, the constrains on the pmem_*/dmem_* signals must
58
#      be set with some absolute values as they are specified by the targeted
59
#      process RAM/ROM generator.
60 2 olivier.gi
 
61 56 olivier.gi
#================#
62
# PROGRAM MEMORY #
63
#================#
64 2 olivier.gi
 
65 56 olivier.gi
set PMEM_DOUT_DLY    2.25
66 2 olivier.gi
 
67 56 olivier.gi
set PMEM_ADDR_DLY    0.64
68
set PMEM_CEN_DLY     0.63
69
set PMEM_DIN_DLY     0.39
70
set PMEM_WEN_DLY     0.44
71 2 olivier.gi
 
72 56 olivier.gi
set_input_delay  $PMEM_DOUT_DLY            -max -clock "dco_clk"  [get_ports pmem_dout]
73
set_input_delay  0                         -min -clock "dco_clk"  [get_ports pmem_dout]
74 2 olivier.gi
 
75 56 olivier.gi
set_output_delay $PMEM_ADDR_DLY -add_delay -max -clock "dco_clk"  [get_ports pmem_addr]
76
set_output_delay 0                         -min -clock "dco_clk"  [get_ports pmem_addr]
77 2 olivier.gi
 
78 56 olivier.gi
set_output_delay $PMEM_CEN_DLY  -add_delay -max -clock "dco_clk"  [get_ports pmem_cen]
79
set_output_delay 0                         -min -clock "dco_clk"  [get_ports pmem_cen]
80 2 olivier.gi
 
81 56 olivier.gi
set_output_delay $PMEM_DIN_DLY  -add_delay -max -clock "dco_clk"  [get_ports pmem_din]
82
set_output_delay 0                         -min -clock "dco_clk"  [get_ports pmem_din]
83 2 olivier.gi
 
84 56 olivier.gi
set_output_delay $PMEM_WEN_DLY  -add_delay -max -clock "dco_clk"  [get_ports pmem_wen]
85
set_output_delay 0                         -min -clock "dco_clk"  [get_ports pmem_wen]
86 2 olivier.gi
 
87
 
88 56 olivier.gi
#================#
89
# DATA MEMORY    #
90
#================#
91 2 olivier.gi
 
92 56 olivier.gi
set DMEM_DOUT_DLY    2.25
93 2 olivier.gi
 
94 56 olivier.gi
set DMEM_ADDR_DLY    0.64
95
set DMEM_CEN_DLY     0.63
96
set DMEM_DIN_DLY     0.39
97
set DMEM_WEN_DLY     0.44
98 2 olivier.gi
 
99
 
100 56 olivier.gi
set_input_delay $DMEM_DOUT_DLY             -max -clock "dco_clk"  [get_ports dmem_dout]
101
set_input_delay 0                          -min -clock "dco_clk"  [get_ports dmem_dout]
102 2 olivier.gi
 
103 56 olivier.gi
set_output_delay $DMEM_ADDR_DLY -add_delay -max -clock "dco_clk"  [get_ports dmem_addr]
104
set_output_delay 0                         -min -clock "dco_clk"  [get_ports dmem_addr]
105 2 olivier.gi
 
106 56 olivier.gi
set_output_delay $DMEM_CEN_DLY  -add_delay -max -clock "dco_clk"  [get_ports dmem_cen]
107
set_output_delay 0                         -min -clock "dco_clk"  [get_ports dmem_cen]
108 2 olivier.gi
 
109 56 olivier.gi
set_output_delay $DMEM_DIN_DLY  -add_delay -max -clock "dco_clk"  [get_ports dmem_din]
110
set_output_delay 0                         -min -clock "dco_clk"  [get_ports dmem_din]
111 2 olivier.gi
 
112 56 olivier.gi
set_output_delay $DMEM_WEN_DLY  -add_delay -max -clock "dco_clk"  [get_ports dmem_wen]
113
set_output_delay 0                         -min -clock "dco_clk"  [get_ports dmem_wen]
114 2 olivier.gi
 
115
 
116 56 olivier.gi
#==========================#
117
# REMAINING INPUT PORTS    #
118
#==========================#
119 2 olivier.gi
 
120 56 olivier.gi
set IRQ_DLY          [expr ($CLOCK_PERIOD/100) * 30]
121
set PER_DOUT_DLY     [expr ($CLOCK_PERIOD/100) * 20]
122 2 olivier.gi
 
123
 
124 56 olivier.gi
set_input_delay $IRQ_DLY       -max -clock "dco_clk"  [get_ports irq]
125
set_input_delay 0              -min -clock "dco_clk"  [get_ports irq]
126 2 olivier.gi
 
127 56 olivier.gi
set_input_delay $PER_DOUT_DLY  -max -clock "dco_clk"  [get_ports per_dout]
128
set_input_delay 0              -min -clock "dco_clk"  [get_ports per_dout]
129 2 olivier.gi
 
130
 
131 56 olivier.gi
#=========================#
132
# REMAINING OUTPUT PORTS  #
133
#=========================#
134 2 olivier.gi
 
135 56 olivier.gi
set ACLK_EN_DLY      [expr ($CLOCK_PERIOD/100) * 85]
136
set SMCLK_EN_DLY     [expr ($CLOCK_PERIOD/100) * 85]
137
set DBG_FREEZE_DLY   [expr ($CLOCK_PERIOD/100) * 85]
138
set IRQ_ACC_DLY      [expr ($CLOCK_PERIOD/100) * 60]
139 2 olivier.gi
 
140 56 olivier.gi
set PER_ADDR_DLY     [expr ($CLOCK_PERIOD/100) * 25]
141
set PER_DIN_DLY      [expr ($CLOCK_PERIOD/100) * 25]
142
set PER_WEN_DLY      [expr ($CLOCK_PERIOD/100) * 25]
143
set PER_EN_DLY       [expr ($CLOCK_PERIOD/100) * 25]
144 2 olivier.gi
 
145 56 olivier.gi
set PUC_DLY          [expr ($CLOCK_PERIOD/100) * 75]
146 2 olivier.gi
 
147
 
148 56 olivier.gi
set_output_delay $ACLK_EN_DLY    -add_delay -max -clock "dco_clk"             [get_ports aclk_en]
149
set_output_delay 0                          -min -clock "dco_clk"             [get_ports aclk_en]
150 2 olivier.gi
 
151 56 olivier.gi
set_output_delay $SMCLK_EN_DLY   -add_delay -max -clock "dco_clk"             [get_ports smclk_en]
152
set_output_delay 0                          -min -clock "dco_clk"             [get_ports smclk_en]
153
 
154
set_output_delay $DBG_FREEZE_DLY -add_delay -max -clock "dco_clk"             [get_ports dbg_freeze]
155
set_output_delay 0                          -min -clock "dco_clk"             [get_ports dbg_freeze]
156
 
157
set_output_delay $IRQ_ACC_DLY    -add_delay -max -clock "dco_clk"             [get_ports irq_acc]
158
set_output_delay 0                          -min -clock "dco_clk"             [get_ports irq_acc]
159
 
160
 
161
set_output_delay $PER_ADDR_DLY   -add_delay -max -clock "dco_clk"             [get_ports per_addr]
162
set_output_delay 0                          -min -clock "dco_clk"             [get_ports per_addr]
163
 
164
set_output_delay $PER_DIN_DLY    -add_delay -max -clock "dco_clk"             [get_ports per_din]
165
set_output_delay 0                          -min -clock "dco_clk"             [get_ports per_din]
166
 
167 111 olivier.gi
set_output_delay $PER_WEN_DLY    -add_delay -max -clock "dco_clk"             [get_ports per_we]
168
set_output_delay 0                          -min -clock "dco_clk"             [get_ports per_we]
169 56 olivier.gi
 
170
set_output_delay $PER_EN_DLY     -add_delay -max -clock "dco_clk"             [get_ports per_en]
171
set_output_delay 0                          -min -clock "dco_clk"             [get_ports per_en]
172
 
173 111 olivier.gi
set_output_delay $PUC_DLY        -add_delay -max -clock "dco_clk"             [get_ports puc_rst]
174
set_output_delay 0                          -min -clock "dco_clk"             [get_ports puc_rst]
175 56 olivier.gi
 
176
 
177 2 olivier.gi
#========================#
178
# FEEDTHROUGH EXCEPTIONS #
179
#========================#
180
 
181 56 olivier.gi
#set_max_delay [expr 2.0 + $DMEM_DOUT_DLY + $DMEM_ADDR_DLY] \
182
#              -from       [get_ports dmem_dout]            \
183
#              -to         [get_ports dmem_addr]            \
184 2 olivier.gi
#              -group_path FEEDTHROUGH
185
 
186 56 olivier.gi
 
187
#===============#
188
# FALSE PATHS   #
189
#===============#
190
# The following signals are internaly synchronized to
191
# the dco_clk domain and can be set as false path.
192
 
193
set_false_path -from dbg_uart_rxd
194
set_false_path -to   dbg_uart_txd
195
 
196
set_false_path -from nmi
197
set_false_path -from lfxt_clk
198
set_false_path -from reset_n
199 111 olivier.gi
 
200
set_false_path -from cpu_en
201
set_false_path -from dbg_en

powered by: WebSVN 2.1.0

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