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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [synthesis/] [synopsys/] [constraints.tcl] - Diff between revs 2 and 56

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 56
Line 2... Line 2...
#                                                                            #
#                                                                            #
#                            CLOCK DEFINITION                                #
#                            CLOCK DEFINITION                                #
#                                                                            #
#                                                                            #
##############################################################################
##############################################################################
 
 
#set CLOCK_PERIOD 50.0; #  20 MHz
 
#set CLOCK_PERIOD 40.0; #  25 MHz
#set CLOCK_PERIOD 40.0; #  25 MHz
#set CLOCK_PERIOD 30.0; #  33 MHz
#set CLOCK_PERIOD 30.0; #  33 MHz
#set CLOCK_PERIOD 25.0; #  40 MHz
 
set CLOCK_PERIOD 20.0; #  50 MHz
set CLOCK_PERIOD 20.0; #  50 MHz
#set CLOCK_PERIOD 15.0; #  66 MHz
#set CLOCK_PERIOD 15.0; #  66 MHz
#set CLOCK_PERIOD 10.0; # 100 MHz
#set CLOCK_PERIOD 10.0; # 100 MHz
#set CLOCK_PERIOD  8.0; # 125 MHz
#set CLOCK_PERIOD  8.0; # 125 MHz
 
 
 
 
create_clock -name     "clock"                                \
create_clock -name     "dco_clk"                              \
             -period   "$CLOCK_PERIOD"                        \
             -period   "$CLOCK_PERIOD"                        \
             -waveform "[expr $CLOCK_PERIOD/2] $CLOCK_PERIOD" \
             -waveform "[expr $CLOCK_PERIOD/2] $CLOCK_PERIOD" \
            [get_ports clock]
             [get_ports dco_clk]
 
 
 
 
##############################################################################
##############################################################################
#                                                                            #
#                                                                            #
#                          CREATE PATH GROUPS                                #
#                          CREATE PATH GROUPS                                #
#                                                                            #
#                                                                            #
##############################################################################
##############################################################################
 
 
group_path -name REGOUT      -to   [all_outputs]
group_path -name REGOUT      -to   [all_outputs]
group_path -name REGIN       -from [remove_from_collection [all_inputs] [get_ports clock]]
group_path -name REGIN       -from [remove_from_collection [all_inputs] [get_ports dco_clk]]
group_path -name FEEDTHROUGH -from [remove_from_collection [all_inputs] [get_ports clock]] -to [all_outputs]
group_path -name FEEDTHROUGH -from [remove_from_collection [all_inputs] [get_ports dco_clk]] -to [all_outputs]
 
 
 
 
##############################################################################
##############################################################################
#                                                                            #
#                                                                            #
#                          BOUNDARY TIMINGS                                  #
#                          BOUNDARY TIMINGS                                  #
#                                                                            #
#                                                                            #
##############################################################################
##############################################################################
# NOTE: There are some path through between RAM and ROM signals.
# NOTE: There are some path through between Program/Data memory signals
#       If required you might want to relax the constrains a bit.
#      which are limiting the maximum frequency achievable by the core.
 
#       The memory constraints set on these interfaces are therefore quite
 
#      critical regarding the achievable performance of the core.
 
#       As a consequence, the constrains on the pmem_*/dmem_* signals must
 
#      be set with some absolute values as they are specified by the targeted
 
#      process RAM/ROM generator.
 
 
#===============#
#================#
# INPUT PORTS   #
# PROGRAM MEMORY #
#===============#
#================#
 
 
set IRQ_DLY          [expr ($CLOCK_PERIOD/100) * 30]
set PMEM_DOUT_DLY    2.25
set NMI_DLY          [expr ($CLOCK_PERIOD/100) * 10]
 
 
 
set PER_DOUT_DLY     [expr ($CLOCK_PERIOD/100) * 20]
set PMEM_ADDR_DLY    0.64
set RAM_DOUT_DLY     [expr ($CLOCK_PERIOD/100) * 20]
set PMEM_CEN_DLY     0.63
set ROM_DOUT_DLY     [expr ($CLOCK_PERIOD/100) * 20]
set PMEM_DIN_DLY     0.39
 
set PMEM_WEN_DLY     0.44
 
 
set RESET_N_DLY      [expr ($CLOCK_PERIOD/100) * 75]
set_input_delay  $PMEM_DOUT_DLY            -max -clock "dco_clk"  [get_ports pmem_dout]
 
set_input_delay  0                         -min -clock "dco_clk"  [get_ports pmem_dout]
 
 
 
set_output_delay $PMEM_ADDR_DLY -add_delay -max -clock "dco_clk"  [get_ports pmem_addr]
 
set_output_delay 0                         -min -clock "dco_clk"  [get_ports pmem_addr]
 
 
set_input_delay $IRQ_DLY       -max -clock "clock"             [get_ports irq]
set_output_delay $PMEM_CEN_DLY  -add_delay -max -clock "dco_clk"  [get_ports pmem_cen]
set_input_delay 0              -min -clock "clock"             [get_ports irq]
set_output_delay 0                         -min -clock "dco_clk"  [get_ports pmem_cen]
 
 
set_input_delay $NMI_DLY       -max -clock "clock"             [get_ports nmi]
set_output_delay $PMEM_DIN_DLY  -add_delay -max -clock "dco_clk"  [get_ports pmem_din]
set_input_delay 0              -min -clock "clock"             [get_ports nmi]
set_output_delay 0                         -min -clock "dco_clk"  [get_ports pmem_din]
 
 
set_input_delay $PER_DOUT_DLY  -max -clock "clock"             [get_ports per_dout]
set_output_delay $PMEM_WEN_DLY  -add_delay -max -clock "dco_clk"  [get_ports pmem_wen]
set_input_delay 0              -min -clock "clock"             [get_ports per_dout]
set_output_delay 0                         -min -clock "dco_clk"  [get_ports pmem_wen]
 
 
set_input_delay $RAM_DOUT_DLY  -max -clock "clock"             [get_ports ram_dout]
 
set_input_delay 0              -min -clock "clock"             [get_ports ram_dout]
 
 
 
set_input_delay $ROM_DOUT_DLY  -max -clock "clock"             [get_ports rom_dout]
#================#
set_input_delay 0              -min -clock "clock"             [get_ports rom_dout]
# DATA MEMORY    #
 
#================#
 
 
set_input_delay $RESET_N_DLY   -max -clock "clock" -clock_fall [get_ports reset_n]
set DMEM_DOUT_DLY    2.25
set_input_delay 0              -min -clock "clock" -clock_fall [get_ports reset_n]
 
 
 
 
set DMEM_ADDR_DLY    0.64
 
set DMEM_CEN_DLY     0.63
 
set DMEM_DIN_DLY     0.39
 
set DMEM_WEN_DLY     0.44
 
 
#===============#
 
# OUTPUT PORTS  #
 
#===============#
 
 
 
set PER_ADDR_DLY     [expr ($CLOCK_PERIOD/100) * 25]
set_input_delay $DMEM_DOUT_DLY             -max -clock "dco_clk"  [get_ports dmem_dout]
set PER_DIN_DLY      [expr ($CLOCK_PERIOD/100) * 25]
set_input_delay 0                          -min -clock "dco_clk"  [get_ports dmem_dout]
set PER_WEN_DLY      [expr ($CLOCK_PERIOD/100) * 25]
 
set PER_8B_CEN_DLY   [expr ($CLOCK_PERIOD/100) * 25]
set_output_delay $DMEM_ADDR_DLY -add_delay -max -clock "dco_clk"  [get_ports dmem_addr]
set PER_16B_CEN_DLY  [expr ($CLOCK_PERIOD/100) * 25]
set_output_delay 0                         -min -clock "dco_clk"  [get_ports dmem_addr]
 
 
set RAM_ADDR_DLY     [expr ($CLOCK_PERIOD/100) * 20]
set_output_delay $DMEM_CEN_DLY  -add_delay -max -clock "dco_clk"  [get_ports dmem_cen]
set RAM_CEN_DLY      [expr ($CLOCK_PERIOD/100) * 20]
set_output_delay 0                         -min -clock "dco_clk"  [get_ports dmem_cen]
set RAM_DIN_DLY      [expr ($CLOCK_PERIOD/100) * 20]
 
set RAM_WEN_DLY      [expr ($CLOCK_PERIOD/100) * 20]
 
 
 
set ROM_ADDR_DLY     [expr ($CLOCK_PERIOD/100) * 20]
set_output_delay $DMEM_DIN_DLY  -add_delay -max -clock "dco_clk"  [get_ports dmem_din]
set ROM_CEN_DLY      [expr ($CLOCK_PERIOD/100) * 20]
set_output_delay 0                         -min -clock "dco_clk"  [get_ports dmem_din]
 
 
set MRST_DLY         [expr ($CLOCK_PERIOD/100) * 75]
set_output_delay $DMEM_WEN_DLY  -add_delay -max -clock "dco_clk"  [get_ports dmem_wen]
 
set_output_delay 0                         -min -clock "dco_clk"  [get_ports dmem_wen]
 
 
 
 
set_output_delay $PER_ADDR_DLY     -add_delay -max -clock "clock"             [get_ports per_addr]
#==========================#
set_output_delay 0                            -min -clock "clock"             [get_ports per_addr]
# REMAINING INPUT PORTS    #
 
#==========================#
 
 
set_output_delay $PER_DIN_DLY      -add_delay -max -clock "clock"             [get_ports per_din]
set IRQ_DLY          [expr ($CLOCK_PERIOD/100) * 30]
set_output_delay 0                            -min -clock "clock"             [get_ports per_din]
set PER_DOUT_DLY     [expr ($CLOCK_PERIOD/100) * 20]
 
 
set_output_delay $PER_WEN_DLY      -add_delay -max -clock "clock"             [get_ports per_wen]
 
set_output_delay 0                            -min -clock "clock"             [get_ports per_wen]
 
 
 
set_output_delay $PER_8B_CEN_DLY   -add_delay -max -clock "clock"             [get_ports per_8b_cen]
set_input_delay $IRQ_DLY       -max -clock "dco_clk"  [get_ports irq]
set_output_delay 0                            -min -clock "clock"             [get_ports per_8b_cen]
set_input_delay 0              -min -clock "dco_clk"  [get_ports irq]
 
 
set_output_delay $PER_16B_CEN_DLY  -add_delay -max -clock "clock"             [get_ports per_16b_cen]
set_input_delay $PER_DOUT_DLY  -max -clock "dco_clk"  [get_ports per_dout]
set_output_delay 0                            -min -clock "clock"             [get_ports per_16b_cen]
set_input_delay 0              -min -clock "dco_clk"  [get_ports per_dout]
 
 
set_output_delay $RAM_ADDR_DLY     -add_delay -max -clock "clock"             [get_ports ram_addr]
 
set_output_delay 0                            -min -clock "clock"             [get_ports ram_addr]
 
 
 
set_output_delay $RAM_CEN_DLY      -add_delay -max -clock "clock"             [get_ports ram_cen]
#=========================#
set_output_delay 0                            -min -clock "clock"             [get_ports ram_cen]
# REMAINING OUTPUT PORTS  #
 
#=========================#
 
 
set_output_delay $RAM_DIN_DLY      -add_delay -max -clock "clock"             [get_ports ram_din]
set ACLK_EN_DLY      [expr ($CLOCK_PERIOD/100) * 85]
set_output_delay 0                            -min -clock "clock"             [get_ports ram_din]
set SMCLK_EN_DLY     [expr ($CLOCK_PERIOD/100) * 85]
 
set DBG_FREEZE_DLY   [expr ($CLOCK_PERIOD/100) * 85]
 
set IRQ_ACC_DLY      [expr ($CLOCK_PERIOD/100) * 60]
 
 
set_output_delay $RAM_WEN_DLY      -add_delay -max -clock "clock"             [get_ports ram_wen]
set PER_ADDR_DLY     [expr ($CLOCK_PERIOD/100) * 25]
set_output_delay 0                            -min -clock "clock"             [get_ports ram_wen]
set PER_DIN_DLY      [expr ($CLOCK_PERIOD/100) * 25]
 
set PER_WEN_DLY      [expr ($CLOCK_PERIOD/100) * 25]
 
set PER_EN_DLY       [expr ($CLOCK_PERIOD/100) * 25]
 
 
set_output_delay $ROM_ADDR_DLY     -add_delay -max -clock "clock"             [get_ports rom_addr]
set PUC_DLY          [expr ($CLOCK_PERIOD/100) * 75]
set_output_delay 0                            -min -clock "clock"             [get_ports rom_addr]
 
 
 
set_output_delay $ROM_CEN_DLY      -add_delay -max -clock "clock"             [get_ports rom_cen]
 
set_output_delay 0                            -min -clock "clock"             [get_ports rom_cen]
 
 
 
set_output_delay $MRST_DLY         -add_delay -max -clock "clock" -clock_fall [get_ports mrst]
set_output_delay $ACLK_EN_DLY    -add_delay -max -clock "dco_clk"             [get_ports aclk_en]
set_output_delay 0                            -min -clock "clock" -clock_fall [get_ports mrst]
set_output_delay 0                          -min -clock "dco_clk"             [get_ports aclk_en]
 
 
 
set_output_delay $SMCLK_EN_DLY   -add_delay -max -clock "dco_clk"             [get_ports smclk_en]
 
set_output_delay 0                          -min -clock "dco_clk"             [get_ports smclk_en]
 
 
 
set_output_delay $DBG_FREEZE_DLY -add_delay -max -clock "dco_clk"             [get_ports dbg_freeze]
 
set_output_delay 0                          -min -clock "dco_clk"             [get_ports dbg_freeze]
 
 
 
set_output_delay $IRQ_ACC_DLY    -add_delay -max -clock "dco_clk"             [get_ports irq_acc]
 
set_output_delay 0                          -min -clock "dco_clk"             [get_ports irq_acc]
 
 
 
 
 
set_output_delay $PER_ADDR_DLY   -add_delay -max -clock "dco_clk"             [get_ports per_addr]
 
set_output_delay 0                          -min -clock "dco_clk"             [get_ports per_addr]
 
 
 
set_output_delay $PER_DIN_DLY    -add_delay -max -clock "dco_clk"             [get_ports per_din]
 
set_output_delay 0                          -min -clock "dco_clk"             [get_ports per_din]
 
 
 
set_output_delay $PER_WEN_DLY    -add_delay -max -clock "dco_clk"             [get_ports per_wen]
 
set_output_delay 0                          -min -clock "dco_clk"             [get_ports per_wen]
 
 
 
set_output_delay $PER_EN_DLY     -add_delay -max -clock "dco_clk"             [get_ports per_en]
 
set_output_delay 0                          -min -clock "dco_clk"             [get_ports per_en]
 
 
 
set_output_delay $PUC_DLY        -add_delay -max -clock "dco_clk" -clock_fall [get_ports puc]
 
set_output_delay 0                          -min -clock "dco_clk" -clock_fall [get_ports puc]
 
 
 
 
#========================#
#========================#
# FEEDTHROUGH EXCEPTIONS #
# FEEDTHROUGH EXCEPTIONS #
#========================#
#========================#
 
 
#set_max_delay [expr 2.0 + $RAM_DOUT_DLY + $RAM_ADDR_DLY] \
#set_max_delay [expr 2.0 + $DMEM_DOUT_DLY + $DMEM_ADDR_DLY] \
#              -from       [get_ports ram_dout]            \
#              -from       [get_ports dmem_dout]            \
#              -to         [get_ports ram_addr]            \
#              -to         [get_ports dmem_addr]            \
#              -group_path FEEDTHROUGH
#              -group_path FEEDTHROUGH
 
 
 
 
 No newline at end of file
 No newline at end of file
 
#===============#
 
# FALSE PATHS   #
 
#===============#
 
# The following signals are internaly synchronized to
 
# the dco_clk domain and can be set as false path.
 
 
 
set_false_path -from dbg_uart_rxd
 
set_false_path -to   dbg_uart_txd
 
 
 
set_false_path -from nmi
 
set_false_path -from lfxt_clk
 
set_false_path -from reset_n
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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