論理合成


Verilog-HDLによる4ビットバイナリカウンタのシミュレーションが終了した ら、論理合成を行います。この論理合成により、Verilog-HDLの記述をゲート レベルの回路に変換します。

論理合成を行うには、論理合成プログラムを制御するためのスクリプトファイルを用意する必要があります。以下のスクリプトを synthesis.scr として作成します。


XACT = get_unix_variable("XACT")
XILINX_LIB_PATH = XACT + /synopsys/libraries/syn

SYNOPSYS = get_unix_variable("SYNOPSYS")

SYNOPSYS_PATH = {SYNOPSYS + /libraries/syn}
search_path = {../ ../src} + XILINX_LIB_PATH + search_path

link_library = xilinx.db

target_library = link_library
symbol_library = class.sdb

define_design_lib WORK -path ./WORK
define_design_lib xblox_4000 -path SYNOPSYS + /libraries/dw/lib/fpga/xc4000

synthetic_library = {standard.sldb}

edifout_write_properties_list = "instance_number port_location part"
edifout_power_and_ground_representation = cell
edifout_netlist_only = true

bus_inference_style = "%s<%d>"
bus_dimension_separator_style = "><"
bus_naming_style = "%s<%d>"

TOP = counter_top

read -format verilog {"counter_top.v"}
read -format verilog {"counter.v"}

current_design TOP
write -format db -hierarchy -output TOP + ".db"

/* Add pads to the design. Make sure the current 
   design is the top-level module.                  
   Change the default slew rate to SLOW (HIGH slew
   control).                                        */


set_port_is_pad "*"
set_pad_type -slewrate HIGH all_outputs()
/* set_pad_type -exact BUFGP_F find(port, "CLOCK") */
insert_pads

/* +++++++++++++++++++++++++++++++++++++++++++++++++ */
/*               Compile the design                  */
/* +++++++++++++++++++++++++++++++++++++++++++++++++ */
/* Set the synthesis design constraints.             */

ungroup -all -flatten

remove_constraint -all

set_fix_multiple_port_nets -all -buffer_constants 

report_compile_options

/* Synthesize and optimize the design                */
compile -map_effort high -verify -verify_effort high
check_design

/* +++++++++++++++++++++++++++++++++++++++++++++++++ */
/*              Save the design                      */
/* +++++++++++++++++++++++++++++++++++++++++++++++++ */
/* Write the design report file                      */

report_timing > TOP + ".timing"

/* Set the part type                                 */
set_attribute TOP "part" -type string "4013PG223-4"

/* Save design in EDIF format as .sedif        */
write -format edif    -hierarchy -output TOP + ".sedif"

exit


このスクリプトファイルでは、以下のようなことを行っています。


使用する論理合成ソフトウェアはSYNOPSYS社製Design Compilerです。 論理合成は以下のコマンドで実行します。

% dc_shell -f synthesis.scr |& tee synthesis.log
論理合成が終了したら、以下のファイルができるはずです。
% ls -l *.sedif
-rw-r--r--   1 kuga         7814 Apr 20 16:26 counter_top.sedif
% 
このファイルができていない場合やファイルの大きさが極端に異なる場合は、 synthesis.log ファイルの中に致命的なエラーが記録されているはずです。確 認してみて下さい。


論理合成はうまくいきましたか?
次は、 配置・配線 を行います。


| CAD Home |

Our mail address is kite@arch.cs.kumamoto-u.ac.jp .
Last modified on