pi.ss 5.98 KB
/************************************************************************/
/* SYNOPSIS SCRIPT                                                      */
/************************************************************************/

/************************************************************************/
/* Synthesis parameters                                                 */
/************************************************************************/
module                  = pi
clock                   = clock
wire_load               = 256000
standard_load           = 0.01
dflt_input_delay        = 2.0
dflt_output_delay       = 14.0
dflt_pin_delay		= 10.0
dflt_input_load         = 20
dflt_output_load        = 20
dflt_pin_load		= 150
dflt_drive_cell         = dfntnh
dflt_drive_pin          = q
dflt_max_transition	= 2.0

/************************************************************************/
/* Establish search path and read in source files                       */
/************************************************************************/
search_path = {. \
	/ecad/synopsys/current/libraries/syn \
	/ecad/reality/lib/synopsys/nec35_v2.1 \
	/ecad/reality/lib/synopsys/rcp_lib};

search_path = search_path                       \
                + "../src"                      \
                + "../../inc"                   \
                + "../../../lib/verilog/user"   \
                + "../../syn"

read -f edif pi_controller.edf
read -f edif pi_dma.edf
read -f verilog module + ".v"
current_design = module

/************************************************************************/
/* Clock and reset constraints                                          */
/************************************************************************/
create_clock            clock -period 16.0 -waveform {0.0 8.0}
set_dont_touch_network  clock
set_max_fanout          0.02 reset_l

/************************************************************************/
/* Default synthesis constraints                                        */
/************************************************************************/
set_max_area            7000
set_dont_touch          { ne35hd130d/nt01d* }
set_input_delay         dflt_input_delay -clock clock all_inputs()
set_input_delay         0 clock
set_load                dflt_input_load * standard_load all_inputs()
set_output_delay        dflt_output_delay -clock clock all_outputs()
set_load                dflt_output_load * standard_load all_outputs()
set_driving_cell        -cell dflt_drive_cell -pin dflt_drive_pin all_inputs()
set_max_transition 	dflt_max_transition current_design
set_drive               0 clock
set_driving_cell        -none clock
set_arrival             0 clock

/************************************************************************/
/* Default operating conditions and environment                         */
/************************************************************************/
set_operating_conditions NOM
set_wire_load           wire_load -mode top

/************************************************************************/
/* Module specific timing constraints                                   */
/************************************************************************/
set_driving_cell        -cell ni01d5            { cbus_read_enable cbus_write_enable }
set_driving_cell        -cell ni01d5            { dbus_enable }
set_driving_cell        -cell nt01d5            { cbus_data dbus_data }
set_input_delay  	5.0 -clock clock	{ cbus_read_enable }
set_input_delay  	5.0 -clock clock	{ cbus_write_enable }
set_input_delay  	5.0 -clock clock	{ dbus_enable }
set_load                350 * standard_load     { cbus_data dbus_data }
set_input_delay         10.0 -clock clock        { cbus_data dbus_data }
set_output_delay        6.0 -clock clock        { cbus_data dbus_data }
set_driving_cell        -cell ni01d7            { dma_start dma_last }
set_load                400 * standard_load     { dma_start dma_last }
set_max_fanout          10 * standard_load      { dma_start dma_last }
set_driving_cell        -cell ni01d7            { cbus_command cbus_select }
set_load                300 * standard_load     { cbus_command cbus_select }
set_max_fanout          10 * standard_load      { cbus_command cbus_select }

set_load 3.5 { ad16_data_out }
set_load 3.2 {  ad16_aleh ad16_alel }
set_output_delay dflt_pin_delay -clock clock \
    { ad16_data_out ad16_aleh ad16_alel }

set_load 2.0 { ad16_enable_l }
set_load 2.0 { ad16_read_l }
set_load 2.0 { ad16_write_l }
set_load 0.532281 { dma_request }
set_load 0.381401 { pi_interrupt }
set_load 0.541201 { read_request }

current_design pi_controller
set_dont_touch uocr_buf_wenb

current_design module

/************************************************************************/
/* Check design before compile                                          */
/************************************************************************/

group {pi_dma_0 pi_controller_0} -design_name pi_logic -cell_name pi_logic

check_design > module + ".lint"

/************************************************************************/
/* Compile                                                              */
/************************************************************************/

current_design = pi_logic
ungroup -flatten -all

current_design = pi
compile_no_new_cells_at_top_level = "true"
compile -map_effort high -incremental_mapping

current_design = pi

/************************************************************************/
/* Report results                                                       */
/************************************************************************/
include "pi.tmg"
include "report.dc"
report_constraint -all_violators

/************************************************************************/
/* Generate synthesis outputs                                           */
/************************************************************************/
write -format edif    -hierarchy -o module + ".edf"  module
write -format db      -hierarchy -o module + ".db"   module

quit