Initial commit
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Actual Synthesis Script
|
||||
#
|
||||
# This script does the actual synthesis
|
||||
#
|
||||
# Author: Rudolf Usselmann
|
||||
# rudi@asics.ws
|
||||
#
|
||||
# Revision:
|
||||
# 3/7/01 RU Initial Sript
|
||||
#
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# ==============================================
|
||||
# Setup Design Parameters
|
||||
source ../bin/design_spec.dc
|
||||
|
||||
# ==============================================
|
||||
# Setup Libraries
|
||||
source ../bin/lib_spec.dc
|
||||
|
||||
# ==============================================
|
||||
# Setup File IO
|
||||
|
||||
set junk_file /dev/null
|
||||
append log_file ../log/$active_design "_cmp.log"
|
||||
append pre_comp_db_file ../out/$design_name "_pre.db"
|
||||
append post_comp_db_file ../out/$design_name ".db"
|
||||
append post_syn_verilog_file ../out/$design_name "_ps.v"
|
||||
|
||||
sh rm -f $log_file
|
||||
|
||||
# ==============================================
|
||||
# Setup Misc Variables
|
||||
|
||||
set hdlin_enable_vpp true ;# Important - this enables 'ifdefs
|
||||
|
||||
# Turn off automatic wire load selection, as this always (WHY ???) defaults to "zero_load"
|
||||
#set auto_wire_load_selection false
|
||||
|
||||
# ==============================================
|
||||
# Read Design
|
||||
|
||||
echo "+++++++++ Reading Design ..." >> $log_file
|
||||
read_file $pre_comp_db_file >> $log_file
|
||||
|
||||
# ==============================================
|
||||
# Operating conditions
|
||||
|
||||
echo "+++++++++ Setting up Operation Conditions ..." >> $log_file
|
||||
current_design $design_name
|
||||
set_operating_conditions WORST >> $log_file
|
||||
#set_wire_load_mode enclosed >> $log_file
|
||||
set_wire_load_mode top >> $log_file
|
||||
set_wire_load_model -name suggested_40K >> $log_file
|
||||
|
||||
# ==============================================
|
||||
# Setup Clocks and Resets
|
||||
|
||||
echo "+++++++++ Setting up Clocks ..." >> $log_file
|
||||
|
||||
set_drive 0 [find port {*clk_i}]
|
||||
|
||||
# !!! Phy Clock !!!
|
||||
set clock_period2 16
|
||||
create_clock -period $clock_period2 phy_clk
|
||||
set_clock_skew -uncertainty 0.5 phy_clk
|
||||
set_clock_transition 0.9 phy_clk
|
||||
set_dont_touch_network phy_clk
|
||||
|
||||
# !!! WISHBONE Clock !!!
|
||||
set clock_period 5
|
||||
create_clock -period $clock_period clk_i
|
||||
set_clock_skew -uncertainty 0.1 clk_i
|
||||
set_clock_transition 0.5 clk_i
|
||||
set_dont_touch_network clk_i
|
||||
|
||||
# !!! Reset !!!
|
||||
set_drive 0 [find port {rst*}]
|
||||
set_dont_touch_network [find port {rst*}]
|
||||
|
||||
# ==============================================
|
||||
# Setup IOs
|
||||
|
||||
echo "+++++++++ Setting up IOs ..." >> $log_file
|
||||
|
||||
# Need to spell out external IOs
|
||||
|
||||
set_driving_cell -cell NAND2D2 -pin Z [all_inputs] >> $junk_file
|
||||
set_load 0.2 [all_outputs]
|
||||
|
||||
set_input_delay -max 1 -clock clk_i [all_inputs]
|
||||
set_output_delay -max 1 -clock clk_i [all_outputs]
|
||||
|
||||
set_input_delay -max 1 -clock phy_clk [all_inputs]
|
||||
set_output_delay -max 1 -clock phy_clk [all_outputs]
|
||||
|
||||
# ==============================================
|
||||
# Setup Area Constrains
|
||||
set_max_area 0.0
|
||||
|
||||
# ==============================================
|
||||
# Force Ultra
|
||||
set_ultra_optimization -f
|
||||
|
||||
# ==============================================
|
||||
# Compile Design
|
||||
|
||||
echo "+++++++++ Starting Compile ..." >> $log_file
|
||||
#compile -map_effort medium -area_effort medium -ungroup_all >> $log_file
|
||||
compile -map_effort low -area_effort low >> $log_file
|
||||
#compile -map_effort high -area_effort high -auto_ungroup >> $log_file
|
||||
|
||||
# ==============================================
|
||||
# Write Out the optimized design
|
||||
|
||||
echo "+++++++++ Saving Optimized Design ..." >> $log_file
|
||||
write_file -format verilog -output $post_syn_verilog_file
|
||||
write_file -hierarchy -format db -output $post_comp_db_file
|
||||
|
||||
# ==============================================
|
||||
# Create Some Basic Reports
|
||||
|
||||
echo "+++++++++ Reporting Final Results ..." >> $log_file
|
||||
report_timing -nworst 10 >> $log_file
|
||||
report_area >> $log_file
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Design Specification
|
||||
#
|
||||
# Author: Rudolf Usselmann
|
||||
# rudi@asics.ws
|
||||
#
|
||||
# Revision:
|
||||
# 3/7/01 RU Initial Sript
|
||||
#
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# ==============================================
|
||||
# Setup Design Parameters
|
||||
|
||||
set design_files {usbf_crc5 usbf_crc16 usbf_mem_arb usbf_ep_rf usbf_pa usbf_ep_rf_dummy usbf_pd usbf_rf usbf_utmi_ls usbf_utmi_if usbf_idma usbf_pe usbf_wb usbf_pl usbf_top}
|
||||
set design_name usbf_top
|
||||
set active_design usbf_top
|
||||
|
||||
# Next Statement defines all clocks and resets in the design
|
||||
set special_net {rst_i clk_i phy_clk}
|
||||
|
||||
# Source Directory
|
||||
set hdl_src_dir ../../rtl/verilog/
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Library Specification
|
||||
#
|
||||
# Author: Rudolf Usselmann
|
||||
# rudi@asics.ws
|
||||
#
|
||||
# Revision:
|
||||
# 3/7/01 RU Initial Sript
|
||||
#
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# ==============================================
|
||||
# Setup Libraries
|
||||
|
||||
set search_path [list $search_path . \
|
||||
/tools/dc_libraries/umc/umc_0.18/UMCL18U250D2_2.1/design_compiler/ \
|
||||
$hdl_src_dir]
|
||||
|
||||
set snps [getenv "SYNOPSYS"]
|
||||
|
||||
set synthetic_library ""
|
||||
append synthetic_library $snps "/libraries/syn/dw01.sldb "
|
||||
append synthetic_library $snps "/libraries/syn/dw02.sldb "
|
||||
append synthetic_library $snps "/libraries/syn/dw03.sldb "
|
||||
append synthetic_library $snps "/libraries/syn/dw04.sldb "
|
||||
append synthetic_library $snps "/libraries/syn/dw05.sldb "
|
||||
append synthetic_library $snps "/libraries/syn/dw06.sldb "
|
||||
append synthetic_library $snps "/libraries/syn/dw07.sldb "
|
||||
|
||||
set target_library { umcl18u250t2_typ.db }
|
||||
set link_library ""
|
||||
append link_library $target_library " " $synthetic_library
|
||||
set symbol_library { umcl18u250t2.sdb }
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Pre Synthesis Script
|
||||
#
|
||||
# This script only reads in the design and saves it in a DB file
|
||||
#
|
||||
# Author: Rudolf Usselmann
|
||||
# rudi@asics.ws
|
||||
#
|
||||
# Revision:
|
||||
# 3/7/01 RU Initial Sript
|
||||
#
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# ==============================================
|
||||
# Setup Design Parameters
|
||||
source ../bin/design_spec.dc
|
||||
|
||||
# ==============================================
|
||||
# Setup Libraries
|
||||
source ../bin/lib_spec.dc
|
||||
|
||||
# ==============================================
|
||||
# Setup File IO
|
||||
|
||||
append log_file ../log/$active_design "_pre.log"
|
||||
append pre_comp_db_file ../out/$design_name "_pre.db"
|
||||
sh rm -f $log_file
|
||||
|
||||
# ==============================================
|
||||
# Setup Misc Variables
|
||||
|
||||
set hdlin_enable_vpp true ;# Important - this enables 'ifdefs
|
||||
|
||||
# ==============================================
|
||||
# Read Design
|
||||
|
||||
echo "+++++++++ Analyzing all design files ..." >> $log_file
|
||||
|
||||
foreach module $design_files {
|
||||
echo "+++++++++ Reading: $module" >> $log_file
|
||||
echo +++++++++ Reading: $module
|
||||
set module_file_name ""
|
||||
append module_file_name $module ".v"
|
||||
analyze -f verilog $module_file_name >> $log_file
|
||||
elaborate $module >> $log_file
|
||||
}
|
||||
|
||||
set current_design $active_design
|
||||
|
||||
echo "+++++++++ Linking Design ..." >> $log_file
|
||||
link >> $log_file
|
||||
|
||||
echo "+++++++++ Uniquifying Design ..." >> $log_file
|
||||
uniquify >> $log_file
|
||||
|
||||
echo "+++++++++ Checking Design ..." >> $log_file
|
||||
check_design >> $log_file
|
||||
|
||||
# ==============================================
|
||||
# Save Design
|
||||
echo "+++++++++ Saving Design ..." >> $log_file
|
||||
write_file -hierarchy -format db -output $pre_comp_db_file
|
||||
|
||||
|
||||
Reference in New Issue
Block a user