1 |
41 |
wsong0210 |
# Asynchronous SDM NoC
|
2 |
|
|
# (C)2011 Wei Song
|
3 |
|
|
# Advanced Processor Technologies Group
|
4 |
|
|
# Computer Science, the Univ. of Manchester, UK
|
5 |
|
|
#
|
6 |
|
|
# Authors:
|
7 |
|
|
# Wei Song wsong83@gmail.com
|
8 |
|
|
#
|
9 |
|
|
# License: LGPL 3.0 or later
|
10 |
|
|
#
|
11 |
|
|
# Constraints for wormhole/SDM routers
|
12 |
|
|
#
|
13 |
|
|
# History:
|
14 |
|
|
# 26/05/2011 Initial version. <wsong83@gmail.com>
|
15 |
|
|
|
16 |
|
|
# loading the baic cell constraints
|
17 |
|
|
source ../../common/script/cell_constraint.tcl
|
18 |
|
|
|
19 |
|
|
# ensure the basic blocks are not ungrouped for better debugging capability
|
20 |
|
|
set_ungroup [get_references -hierarchical inp_buf*] false
|
21 |
|
|
set_ungroup [get_references -hierarchical outp_buf*] false
|
22 |
|
|
set_ungroup CB false
|
23 |
|
|
set_ungroup ALLOC false
|
24 |
|
|
|
25 |
|
|
|
26 |
|
|
######### break the timing loops in the design ##############
|
27 |
|
|
|
28 |
42 |
wsong0210 |
# the cross points in the VCA
|
29 |
|
|
foreach_in_collection celln [get_references -hierarchical RCBB_*] {
|
30 |
|
|
set_disable_timing [get_object_name $celln]/I1 -from B -to Z
|
31 |
|
|
set_disable_timing [get_object_name $celln]/I0/U1 -from B -to Z
|
32 |
|
|
set_disable_timing [get_object_name $celln]/I0/U3 -from A -to Z
|
33 |
|
|
set_disable_timing [get_object_name $celln]/I3/U1 -from A -to Z
|
34 |
|
|
set_disable_timing [get_object_name $celln]/I3/U2 -from A -to Z
|
35 |
|
|
|
36 |
|
|
}
|
37 |
|
|
|
38 |
|
|
set_disable_timing [get_cells ALLOC/*VCAO*] -from A -to Z
|
39 |
|
|
|
40 |
41 |
wsong0210 |
# set some timing path ending points
|
41 |
|
|
set DPD []
|
42 |
|
|
set DPA []
|
43 |
|
|
foreach_in_collection celln [get_references -hierarchical dc2_*] {
|
44 |
|
|
append_to_collection DPD [ get_pins [get_object_name $celln]/U1/B]
|
45 |
|
|
append_to_collection DPD [ get_pins [get_object_name $celln]/U2/A]
|
46 |
|
|
append_to_collection DPA [ get_pins [get_object_name $celln]/U1/A]
|
47 |
|
|
append_to_collection DPA [ get_pins [get_object_name $celln]/U3/A]
|
48 |
|
|
}
|
49 |
|
|
|
50 |
|
|
set IODI [filter [get_ports *i*] "@port_direction == in"]
|
51 |
|
|
set IODO [filter [get_ports *o*] "@port_direction == out"]
|
52 |
|
|
set IOAI [filter [get_ports *i*] "@port_direction == out"]
|
53 |
|
|
set IOAO [filter [get_ports *o*] "@port_direction == in"]
|
54 |
|
|
|
55 |
|
|
# set the timing constraints for data paths and ack paths
|
56 |
|
|
# For better speed performance, please tune these delay and factors according different cell libraries
|
57 |
|
|
set DATA_dly 1.0
|
58 |
|
|
set ACK_dly 1.6
|
59 |
|
|
|
60 |
|
|
set_max_delay [expr ${DATA_dly} * 1.00] -from ${DPA} -to ${DPD} -group G_DATA
|
61 |
|
|
set_max_delay [expr ${ACK_dly} * 1.00] -from ${DPA} -to ${DPA} -group G_ACK
|
62 |
|
|
set_max_delay [expr ${DATA_dly} * 0.30] -from ${IODI} -to ${DPD} -group G_DATA
|
63 |
|
|
set_max_delay [expr ${ACK_dly} * 0.75] -from ${DPA} -to ${IOAI} -group G_ACK
|
64 |
|
|
set_max_delay [expr ${DATA_dly} * 0.70] -from ${DPA} -to ${IODO} -group G_DATA
|
65 |
|
|
set_max_delay [expr ${ACK_dly} * 0.25] -from ${IOAO} -to ${DPA} -group G_ACK
|
66 |
|
|
|
67 |
|
|
group_path -weight 1.5 -critical_range 40 -name G_DATA
|
68 |
|
|
group_path -weight 1.5 -critical_range 40 -name G_ACK
|
69 |
|
|
|
70 |
|
|
set_critical_range 20 ${current_design}
|
71 |
|
|
|
72 |
|
|
set_max_leakage_power 0.0
|
73 |
|
|
set_max_dynamic_power 0.0
|
74 |
|
|
set_max_area 0
|
75 |
|
|
|
76 |
|
|
# timing path disabled by user constraints
|
77 |
|
|
suppress_message TIM-175
|