利用したVerilog-HDLファイルは,異常なまでに単純である.
module COUNTER8( CLK, RST_N, COUNTER_OUT );
input CLK, RST_N;
output [ 7: 0] COUNTER_OUT;
reg [ 7: 0] COUNTER_OUT;
always @ ( posedge CLK or negedge RST_N ) begin
if( RST_N == 1'b0 ) begin
COUNTER_OUT <= 8'h0;
end else begin
COUNTER_OUT <= COUNTER_OUT + 8'h1;
end
end
endmodule // COUNTER8
lappend serach_path ./
探索パス追加.
source ./scripts/set_sz.tcl set mw_logic0_net VSS set mw_logic1_net VDD
ここら辺はそのまま,因みに,set_sz.tclを汎用的にするために多少改良.
set LIB_DIR "/home/vdec/lib/fujitsu65/cs202_sc_io_lib/db"
set IO_LIB_DIR "/home/vdec/lib/fujitsu65/cs202_sc_io_lib/db"
set DW_DIR "/home/vdec/synopsys/syn-2007.12-SP3/libraries/syn"
set std_max_libs {cs202sz_uc_core_s_p125_105v.db cs202sz_uc_nscan_s_p125_105v.db}
set std_typ_libs {cs202sz_uc_core_t_p25_12v.db cs202sz_uc_nscan_t_p25_12v.db }
set std_min_libs {cs202sz_uc_core_f_m40_13v.db cs202sz_uc_nscan_f_m40_13v.db }
set search_path [concat "./ddc" "./../design" "." $LIB_DIR $IO_LIB_DIR $DW_DIR $search_path]
set link_path "*"
set iob_min_libs {cs202_io_f_m40_m_13v_36v.db }
set iob_typ_libs {cs202_io_t_p25_m_12v_33v.db }
set iob_max_libs {cs202_io_s_p125_m_105v_30v.db}
set LIB_MAX_FILE [concat $std_max_libs $iob_max_libs ]
set LIB_TYP_FILE [concat $std_typ_libs $iob_typ_libs ]
set LIB_MIN_FILE [concat $std_min_libs $iob_min_libs ]
set DW_FILE "dw_foundation.sldb"
set link_library [concat $LIB_MAX_FILE $LIB_TYP_FILE $LIB_MIN_FILE $DW_FILE {*}]
set target_library [concat $LIB_MAX_FILE $LIB_TYP_FILE $LIB_MIN_FILE ]
# set design-specefic variables
# added by Masayuki KIMURA
set design_name "COUNTER8"
set cells_name "COUNTER8"
set tech_file "./lib/f65.tf"
set ref_libs { "CS202SZ" "CS202IO" }
set vnet_files "./vnet/${design_name}.vnet"
set max_tluplus_file "./lib/tlu_plus_mfe.worst"
set min_tluplus_file "./lib/tlu_plus_mfe.best"
set itf_tech_map_file "./lib/tlu2mw.map"
set core_width 15
set core_height 15
set core_to_top 0.9
set core_to_left 0.9
set core_to_right 0.9
set core_to_bottom 0.9
define_name_rules verilog -allowed "A-Z0-9_"
COUNTER8ライブラリを作成する.すでに作成済みで,途中経過のやつを開くのであれば,コメントアウトしている奴を使う.
create_mw_lib ${design_name} -technology ${tech_file} -mw_reference_library ${ref_libs} -open
# open_mw_lib ${design_name}
vnetファイルを取り込む.トップモジュールとしてCOUNTER8を設定.
import_designs ${vnet_files} -format verilog -top ${design_name}
set_tlu_plus_files -max_tluplus ${max_tluplus_file} \
-min_tluplus ${min_tluplus_file} \
-tech2itf_map ${itf_tech_map_file}
PowerとGourndを接続する.詳しいことはまだ調べてない.
derive_pg_connection -power_net {VDD} \
-ground_net {VSS} -power_pin {VDD} -ground_pin {VSS}
derive_pg_connection -tie -power_net VDD \
-ground_net VSS
derive_pg_connection -tie -power_net VDD \
-ground_net VSS
###################################################################
# Created by write_sdc on Fri Apr 30 20:44:34 2010
###################################################################
set sdc_version 1.7
set_units -time ps -resistance Ohm -capacitance pF -voltage V -current mA
set_operating_conditions -max DEFAULT -max_library cs202sz_uc_core_s_p125_105v\
-min DEFAULT -min_library cs202sz_uc_core_f_m40_13v
set_max_area 0
set_max_fanout 10 [current_design]
set_load -pin_load 0 [get_ports {COUNTER_OUT[7]}]
set_load -pin_load 0 [get_ports {COUNTER_OUT[6]}]
set_load -pin_load 0 [get_ports {COUNTER_OUT[5]}]
set_load -pin_load 0 [get_ports {COUNTER_OUT[4]}]
set_load -pin_load 0 [get_ports {COUNTER_OUT[3]}]
set_load -pin_load 0 [get_ports {COUNTER_OUT[2]}]
set_load -pin_load 0 [get_ports {COUNTER_OUT[1]}]
set_load -pin_load 0 [get_ports {COUNTER_OUT[0]}]
set_ideal_network [get_ports CLK]
create_clock [get_ports CLK] -name CLK_OBJ -period 20 -waveform {0 10}
set_clock_latency -max 1 [get_clocks CLK_OBJ]
set_clock_latency -min 0 [get_clocks CLK_OBJ]
set_clock_uncertainty 1 [get_clocks CLK_OBJ]
set_clock_transition -rise 0 [get_clocks CLK_OBJ]
set_clock_transition -fall 0 [get_clocks CLK_OBJ]
set_input_delay -clock CLK_OBJ 8 [get_ports RST_N]
set_output_delay -clock CLK_OBJ 8 [get_ports {COUNTER_OUT[7]}]
set_output_delay -clock CLK_OBJ 8 [get_ports {COUNTER_OUT[6]}]
set_output_delay -clock CLK_OBJ 8 [get_ports {COUNTER_OUT[5]}]
set_output_delay -clock CLK_OBJ 8 [get_ports {COUNTER_OUT[4]}]
set_output_delay -clock CLK_OBJ 8 [get_ports {COUNTER_OUT[3]}]
set_output_delay -clock CLK_OBJ 8 [get_ports {COUNTER_OUT[2]}]
set_output_delay -clock CLK_OBJ 8 [get_ports {COUNTER_OUT[1]}]
set_output_delay -clock CLK_OBJ 8 [get_ports {COUNTER_OUT[0]}]
read_sdc ./sdc/${design_name}.sdc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ./tdf/COUNTER8.tdf ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; TOTAL : 10 ;; NORTH : 0 ;; SOUTH : 0 ;; EAST : 8 ;; WEST : 2 ;;;;;;;; WEST (2) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pin "CLK" "MET2" 0.1 0.1 "RIGHT" 1 pin "RST_N" "MET2" 0.1 0.1 "RIGHT" 2 ;;;;;;;; EAST (8) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pin "COUNTER_OUT[0]" "MET2" 0.1 0.1 "LEFT" 1 pin "COUNTER_OUT[1]" "MET2" 0.1 0.1 "LEFT" 2 pin "COUNTER_OUT[2]" "MET2" 0.1 0.1 "LEFT" 3 pin "COUNTER_OUT[3]" "MET2" 0.1 0.1 "LEFT" 4 pin "COUNTER_OUT[4]" "MET2" 0.1 0.1 "LEFT" 5 pin "COUNTER_OUT[5]" "MET2" 0.1 0.1 "LEFT" 6 pin "COUNTER_OUT[6]" "MET2" 0.1 0.1 "LEFT" 7 pin "COUNTER_OUT[7]" "MET2" 0.1 0.1 "LEFT" 8
read_io_constraints ./tdf/${design_name}.tdf
initialize_floorplan -control_type width_and_height \
-core_width ${core_width} -core_height ${core_height} \
-start_first_row -bottom_io2core ${core_to_bottom} -top_io2core ${core_to_top} \
-left_io2core ${core_to_left} -right_io2core ${core_to_right}
フロアプラン内に,tdfで指定したように,右側にCLK, RESET,左側に出力のピンが設定されている.
create_power_straps -direction vertical -start_at 3.6 -num_placement_strap 7 -increment_x_or_y 14.4 \
-nets {VDD VSS} -layer MET6 -width 1.8 -step 14.4 \
-extend_low_ends force_to_boundary_and_generate_pins -extend_high_ends force_to_boundary_and_generate_pins
add_tap_cell_array -master_cell_name ${tap_cell} -distance 36.0 \
-skip_fixed_cells false -no_tap_cell_under_layer {M1 M2} \
-left_macro_blockage_extra_tap must_insert \
-right_macro_blockage_extra_tap must_insert \
-left_boundary_extra_tap must_insert \
-right_boundary_extra_tap must_insert \
-connect_power_name {VDD} -connect_ground_name {VSS}
place_opt
derive_pg_connection -power_net VDD \ -ground_net VSS -power_pin VDD -ground_pin VSS derive_pg_connection -tie -power_net VDD \ -ground_net VSS