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

Subversion Repositories async_sdm_noc

[/] [async_sdm_noc/] [trunk/] [vc/] [syn/] [script/] [constraint.tcl] - Diff between revs 42 and 47

Only display areas with differences | Details | Blame | View Log

Rev 42 Rev 47
# Asynchronous SDM NoC
# Asynchronous SDM NoC
# (C)2011 Wei Song
# (C)2011 Wei Song
# Advanced Processor Technologies Group
# Advanced Processor Technologies Group
# Computer Science, the Univ. of Manchester, UK
# Computer Science, the Univ. of Manchester, UK
# 
# 
# Authors: 
# Authors: 
# Wei Song     wsong83@gmail.com
# Wei Song     wsong83@gmail.com
# 
# 
# License: LGPL 3.0 or later
# License: LGPL 3.0 or later
# 
# 
# Constraints for wormhole/SDM routers
# Constraints for wormhole/SDM routers
# 
# 
# History:
# History:
# 26/05/2011  Initial version. <wsong83@gmail.com>
# 26/05/2011  Initial version. <wsong83@gmail.com>
 
 
# loading the baic cell constraints
# loading the baic cell constraints
source ../../common/script/cell_constraint.tcl
source ../../common/script/cell_constraint.tcl
 
 
# ensure the basic blocks are not ungrouped for better debugging capability
# ensure the basic blocks are not ungrouped for better debugging capability
set_ungroup [get_references -hierarchical inp_buf*]  false
set_ungroup [get_references -hierarchical inp_buf*]  false
set_ungroup [get_references -hierarchical outp_buf*] false
set_ungroup [get_references -hierarchical outp_buf*] false
set_ungroup CB false
set_ungroup CB false
set_ungroup ALLOC false
set_ungroup ALLOC false
 
 
 
 
######### break the timing loops in the design ##############
######### break the timing loops in the design ##############
 
 
# the cross points in the VCA
# the cross points in the VCA
foreach_in_collection celln  [get_references -hierarchical RCBB_*] {
foreach_in_collection celln  [get_references -hierarchical RCBB_*] {
    set_disable_timing [get_object_name $celln]/I1 -from B -to Z
    set_disable_timing [get_object_name $celln]/I1 -from B -to Z
    set_disable_timing [get_object_name $celln]/I0/U1 -from B -to Z
    set_disable_timing [get_object_name $celln]/I0/U1 -from B -to Z
    set_disable_timing [get_object_name $celln]/I0/U3 -from A -to Z
    set_disable_timing [get_object_name $celln]/I0/U3 -from A -to Z
    set_disable_timing [get_object_name $celln]/I3/U1 -from A -to Z
    set_disable_timing [get_object_name $celln]/I3/U1 -from A -to Z
    set_disable_timing [get_object_name $celln]/I3/U2 -from A -to Z
    set_disable_timing [get_object_name $celln]/I3/U2 -from A -to Z
 
 
}
}
 
 
set_disable_timing [get_cells ALLOC/*VCAO*] -from A -to Z
set_disable_timing [get_cells ALLOC/*VCAO*] -from A -to Z
 
 
# set some timing path ending points
# set some timing path ending points
set DPD []
set DPD []
set DPA []
set DPA []
foreach_in_collection celln  [get_references -hierarchical dc2_*] {
foreach_in_collection celln  [get_references -hierarchical dc2_*] {
    append_to_collection DPD [ get_pins [get_object_name $celln]/U1/B]
    append_to_collection DPD [ get_pins [get_object_name $celln]/U1/B]
    append_to_collection DPD [ get_pins [get_object_name $celln]/U2/A]
    append_to_collection DPD [ get_pins [get_object_name $celln]/U2/A]
    append_to_collection DPA [ get_pins [get_object_name $celln]/U1/A]
    append_to_collection DPA [ get_pins [get_object_name $celln]/U1/A]
    append_to_collection DPA [ get_pins [get_object_name $celln]/U3/A]
    append_to_collection DPA [ get_pins [get_object_name $celln]/U3/A]
}
}
 
 
set IODI [filter [get_ports *i*] "@port_direction == in"]
set IODI [filter [get_ports *i*] "@port_direction == in"]
set IODO [filter [get_ports *o*] "@port_direction == out"]
set IODO [filter [get_ports *o*] "@port_direction == out"]
set IOAI [filter [get_ports *i*] "@port_direction == out"]
set IOAI [filter [get_ports *i*] "@port_direction == out"]
set IOAO [filter [get_ports *o*] "@port_direction == in"]
set IOAO [filter [get_ports *o*] "@port_direction == in"]
 
 
# set the timing constraints for data paths and ack paths
# set the timing constraints for data paths and ack paths
# For better speed performance, please tune these delay and factors according different cell libraries
# For better speed performance, please tune these delay and factors according different cell libraries
set DATA_dly 1.0
set DATA_dly 1.0
set ACK_dly 1.6
set ACK_dly 1.6
 
 
set_max_delay [expr ${DATA_dly} * 1.00] -from ${DPA}   -to ${DPD}   -group G_DATA
set_max_delay [expr ${DATA_dly} * 1.00] -from ${DPA}   -to ${DPD}   -group G_DATA
set_max_delay [expr ${ACK_dly} * 1.00]  -from ${DPA}   -to ${DPA}   -group G_ACK
set_max_delay [expr ${ACK_dly} * 1.00]  -from ${DPA}   -to ${DPA}   -group G_ACK
set_max_delay [expr ${DATA_dly} * 0.30] -from ${IODI}  -to ${DPD}   -group G_DATA
set_max_delay [expr ${DATA_dly} * 0.30] -from ${IODI}  -to ${DPD}   -group G_DATA
set_max_delay [expr ${ACK_dly} * 0.75]  -from ${DPA}   -to ${IOAI}  -group G_ACK
set_max_delay [expr ${ACK_dly} * 0.75]  -from ${DPA}   -to ${IOAI}  -group G_ACK
set_max_delay [expr ${DATA_dly} * 0.70] -from ${DPA}   -to ${IODO}  -group G_DATA
set_max_delay [expr ${DATA_dly} * 0.70] -from ${DPA}   -to ${IODO}  -group G_DATA
set_max_delay [expr ${ACK_dly} * 0.25]  -from ${IOAO}  -to ${DPA}   -group G_ACK
set_max_delay [expr ${ACK_dly} * 0.25]  -from ${IOAO}  -to ${DPA}   -group G_ACK
 
 
group_path -weight 1.5 -critical_range 40 -name G_DATA
group_path -weight 1.5 -critical_range 40 -name G_DATA
group_path -weight 1.5 -critical_range 40 -name G_ACK
group_path -weight 1.5 -critical_range 40 -name G_ACK
 
 
set_critical_range 20 ${current_design}
set_critical_range 20 ${current_design}
 
 
set_max_leakage_power 0.0
set_max_leakage_power 0.0
set_max_dynamic_power 0.0
set_max_dynamic_power 0.0
set_max_area 0
set_max_area 0
 
 
# timing path disabled by user constraints
# timing path disabled by user constraints
suppress_message TIM-175
suppress_message TIM-175
 
 

powered by: WebSVN 2.1.0

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