blob: 3aac373e0f7296e5115d95718edeba2236a59667 [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
#
# Generic constraints file for simple testsynthesis flow
# note that we do not fix hold timing in this flow
set SETUP_CLOCK_UNCERTAINTY 0.5
#####################
# main clock #
#####################
set MAIN_CLK_PIN clk_i
set MAIN_RST_PIN rst_ni
# overconstrain to 125 MHz
set MAIN_TCK 8.0
set_ideal_network ${MAIN_CLK_PIN}
set_ideal_network ${MAIN_RST_PIN}
set_clock_uncertainty ${SETUP_CLOCK_UNCERTAINTY} ${MAIN_CLK_PIN}
# other timing constraint in ns
set IN_DEL 7.0
set OUT_DEL 0.0
set DELAY ${MAIN_TCK}
create_clock ${MAIN_CLK_PIN} -period ${MAIN_TCK}
# in to out
set_max_delay ${DELAY} -from [all_inputs] -to [all_outputs]
# in to reg / reg to out
set_input_delay ${IN_DEL} [remove_from_collection [all_inputs] {${MAIN_CLK_PIN}}] -clock ${MAIN_CLK_PIN}
set_output_delay ${OUT_DEL} [all_outputs] -clock ${MAIN_CLK_PIN}
#####################
# otp clock #
#####################
set OTP_CLK_PIN clk_otp_i
set OTP_RST_PIN rst_otp_ni
# overconstrain to 125 MHz
set OTP_TCK 8.0
set_ideal_network ${OTP_CLK_PIN}
set_ideal_network ${OTP_RST_PIN}
set_clock_uncertainty ${SETUP_CLOCK_UNCERTAINTY} ${OTP_CLK_PIN}
create_clock ${OTP_CLK_PIN} -period ${OTP_TCK}
#####################
# I/O drive/load #
#####################
# attach load and drivers to IOs to get a more realistic estimate
set_driving_cell -no_design_rule -lib_cell ${DRIVING_CELL} -pin ${DRIVING_CELL_PIN} [all_inputs]
set_load [load_of ${LOAD_CELL_LIB}/${LOAD_CELL}/${LOAD_CELL_PIN}] [all_outputs]
# set a nonzero critical range to be able to spot the violating paths better
# in the report
set_critical_range 0.5 ${DUT}
#####################
# Size Only Cells #
#####################
set_size_only -all_instances [get_cells -h *u_size_only*] true