FC2カウンター FPGAの部屋 SOPC Builderを使ってみる3(IOピンやタイミング制約を加えてテスト)
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

SOPC Builderを使ってみる3(IOピンやタイミング制約を加えてテスト)

SOPC Builderを使ってみる2(NiosⅡのインスタンシエーション)”でコンパイルは通ったので、今度はIOピンや動作周波数などのタイミング制約を入力してコンパイルし、テストしてみる。
まずは、”QuartusⅡでSignalTapⅡを試してみるまでの準備5(入力、出力ピンの制約とタイミング制約)”を参照してPin Plannerを立ち上げて、IOピンの配置を制約する。途中までIOピンを入力したのだが、QuartusⅡでのIOピンの制約ファイルはどれなんだろう? ISEだと、配置制約もタイミング制約も.ucf というファイルに全部書いてあったが、QuartusⅡのタイミング制約を書いたファイルは、”QuartusⅡでSignalTapⅡを試してみるまでの準備6(入力、出力ピンの制約とタイミング制約2)”でやってみたように.sdc だった。
下に途中まで入力したPin Plannerを示す。
SOPC_Builder_15_090806.png

入出力ピンの制約ファイルをフォルダから探ってみたが、どうやら nois2_sdram_led.qsf というのがそうらしい。下に nois2_sdram_led.qsf を示す。

# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2009 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
# (including device programming or simulation files), and any
# associated documentation or information are expressly subject
# to the terms and conditions of the Altera Program License
# Subscription Agreement, Altera MegaCore Function License
# Agreement, or other applicable license agreement, including,
# without limitation, that your use is for the sole purpose of
# programming logic devices manufactured by Altera and sold by
# Altera or its authorized distributors. Please refer to the
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II
# Version 9.0 Build 184 04/29/2009 Service Pack 1 SJ Web Edition
# Date created = 19:20:23 July 31, 2009
#
# -------------------------------------------------------------------------- #
#
# Notes:
#
# 1) The default values for assignments are stored in the file:
# nios2_sdram_led_assignment_defaults.qdf
# If this file doesn't exist, see file:
# assignment_defaults.qdf
#
# 2) Altera recommends that you do not modify this file. This
# file is updated automatically by the Quartus II software
# and any changes you make may be lost or overwritten.
#
# -------------------------------------------------------------------------- #


set_global_assignment -name FAMILY "Cyclone II"
set_global_assignment -name DEVICE EP2C5Q208C8
set_global_assignment -name TOP_LEVEL_ENTITY nois2_sdram_led
set_global_assignment -name ORIGINAL_QUARTUS_VERSION "9.0 SP1"
set_global_assignment -name PROJECT_CREATION_TIME_DATE "19:20:23 JULY 31, 2009"
set_global_assignment -name LAST_QUARTUS_VERSION "9.0 SP1"
set_global_assignment -name EDA_SIMULATION_TOOL ""
set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT NONE -section_id eda_simulation
set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_blast_fpga
set_global_assignment -name DEVICE_FILTER_PACKAGE PQFP
set_global_assignment -name DEVICE_FILTER_PIN_COUNT 208
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name QIP_FILE nois_sdram.qip
set_global_assignment -name VERILOG_FILE nois2_sdram_led.v
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region"
set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region"
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
set_location_assignment PIN_152 -to SDRAM_A[11]
set_location_assignment PIN_187 -to SDRAM_A[10]
set_location_assignment PIN_160 -to SDRAM_A[9]
set_location_assignment PIN_161 -to SDRAM_A[8]
set_location_assignment PIN_162 -to SDRAM_A[7]
set_location_assignment PIN_163 -to SDRAM_A[6]
set_location_assignment PIN_164 -to SDRAM_A[5]
set_location_assignment PIN_165 -to SDRAM_A[4]
set_location_assignment PIN_185 -to SDRAM_A[3]
set_location_assignment PIN_182 -to SDRAM_A[2]
set_location_assignment PIN_181 -to SDRAM_A[1]
set_location_assignment PIN_180 -to SDRAM_A[0]
set_location_assignment PIN_188 -to SDRAM_BA[1]
set_global_assignment -name MISC_FILE "H:/HDL/Altera/qdesigns/nisyo_board/nios2_sdram_led/nios2_sdram_led.dpf"


一度、Pin Planner を終了して、試しに nois2_sdram_led.qsf に下の行をBA[1]のすぐ下の行にテキストエディタで追加してみる。

set_location_assignment PIN_189 -to SDRAM_BA[0]


再びPin Planner を立ち上げるとSDRAM_BA[0] のピン制約が入っていました。
SOPC_Builder_16_090806.png

これでPin Planner だけでなく、テキストエディタでIOピン制約のコピー&ペーストができるようになった。
すべてのIOピンの制約を入力した。ところで、Pin Planner を設定していて思ったのだけれど、AlteraのFPGAのデフォルト出力電流値は24mAに設定されているのですね?Xilinxは12mAだと思ったけど、倍の電流を流していますね。これだと波形の立ち上がりは速くなるし、クロックエッジからの出力の立ち上がり時間も速くなると思うけど。。。SSOや波形のリンキングはどうなのかな?と思ったりする。特にQFPだし。。。でもそんなところまで気にするような動作周波数ではないかな?とりあえずデフォルトで行くことにする。

次はTimeQuestで動作周波数の制約だが、日昇テクノロジーのサンプルがどうなっているか見たら.sdc ファイルがなかった。制約はかかっていないようだが、PLLの動作周波数での制約はかかっているようだった。どうも制約がかかっていないのは、Xilinx使いとしては気分が悪いので、セットアップ時間、クロックからの出力時間も制約をかけることにした。もう一度、”QuartusⅡでSignalTapⅡを試してみるまでの準備5(入力、出力ピンの制約とタイミング制約)”を見ながらTimeQuestでタイミング制約を生成してみる。
SDRAMからの入力のセットアップ時間を7nsとすることにした。TimeQuest のConstraintsメニューからSet Input Delay...を選ぶ。Set Input Delayダイアログが表示されたら、SDRAM_Dをすべて選んで、7nsの制約をかける。
SOPC_Builder_17_090806.png

SDRAMのクロックからの出力時間も7nsとした。同様にConstraintsメニューからSet Output Delay...を選ぶ。Set Output Delayダイアログが表示されたら、SDRAMの信号をすべて選んで、やはり7nsの制約をかける。
SOPC_Builder_18_090806.png

nois2_sdram_led.sdc を書いておこうと思ったが、設定しないのにFalse Pathがたくさん設定されていて長いので省略。自動的に設定されるのだろうか?
その後、コンパイルして通りました。これでQuartusⅡでのコンパイルは終了かな?
SOPC_Builder_19_090806.png


2009/08/09 追記:
くりさんのご指摘によってTimeQuest の制約が使われていないのがわかりました。もう一度、制約を使ってコンパイルできるようにしたいと思います。

QuartusⅡのAssignmentsメニューからSettings...を選択する。Settingsダイアログが出るので、CategoryでTiming Analysis Settings を選択する。Timing analysis processing のUse TimeQuest Timing Analyzer during Compilation のラジオボタンをクリックして選択する。
SOPC_Builder_20_090810.png

次にTiming Analysis Settings の下のTimeQuest Timing Analyzer を選ぶ。SDC file to include in the project でSDC filename: にnois2_sdram_led.sdc を選択してAddボタンをクリックする。
SOPC_Builder_21_090810.png

nois2_sdram_led.sdc が追加される。
SOPC_Builder_22_090810.png

これでOKボタンをクリックしてSettingsのダイアログを閉じる。もう一度コンパイルする。コンパイル後はTimeQuest Timing Analyzerに変わっていた。そうかこうなるのか?納得。。。タイミングは満たしていました。
SOPC_Builder_23_090810.png

くりさん、教えていただいてありがとうございました。

  1. 2009年08月06日 18:11 |
  2. SOPC Builder
  3. | トラックバック:0
  4. | コメント:6

コメント

こんばんわ。

>nois2_sdram_led.sdc を書いておこうと思ったが、設定しないのにFalse Pathがたくさん設定されていて長いので省略。自動的に設定されるのだろうか?

 えーと、SDRAMとかのIPを選択すると、勝手に制約掛けて、勝手にタイミング・ドリブン・コンパイレーション掛けてくれるはずですが・・・。

>これでQuartusⅡでのコンパイルは終了かな?

 TimeQuestじゃなくて、Classic Timig Analysis掛けてません?
  1. 2009/08/08(土) 00:22:06 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、こんにちは。教えていただいてありがとうございます。

>SDRAMとかのIPを選択すると、勝手に制約掛けて、
SOPC Builder でSDRAMのIPを追加して終了しても.sdcファイルは出来ていなかったみたい?ですが、タイミング制約のファイル名が違っているのですか?

>TimeQuestじゃなくて、Classic Timig Analysis掛けてません?
これって、もしかしてAssignmentのSettings あたりから設定するとか?
見てみたら、ありました。ここでSDCファイルを指定する必要があるんですね。もう一度やってみて、ブログに追加します。
ありがとうございました。

  1. 2009/08/08(土) 05:13:41 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

こんばんわ。
>SOPC Builder でSDRAMのIPを追加して終了しても.sdcファイルは出来ていなかったみたい?ですが、タイミング制約のファイル名が違っているのですか?

 すみません。勝手にやってくれるのはDDRやDDR2のIPで、どうもSDRの場合は、自分で設定するしかないみたいです。DDRの方はtclのファイルを吐き出して、フィッティング後のVerifyまで自動でやってくれるのですが・・・。普通のSDRとかも、そこまでやってくれれば、楽なんですが^^;)。
  1. 2009/08/09(日) 00:08:21 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、こんにちは。
了解しました。Xilinxでも制約を出力したりしますが、Alteraのツールも制約を吐くということですね。
フィッテング後のVerify というのは、TimeQuest でタイミング制約に違反しているとエラーを出すということではないのですか?

TimeQuestを有効にするときのやり方をブログに追加しました。ありがとうございました。
  1. 2009/08/09(日) 05:20:49 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

こんにちは。

>フィッテング後のVerify というのは、TimeQuest でタイミング制約に違反しているとエラーを出すということではないのですか?

 えーと、DDRだと自動的に auto_verify何たらかんたら・・・^^;)だったけかな? のtcl のスクリプトを生成して、コンパイルの最後で、tclのインタプリタで、これを走らせてチェックしてくれます。内部でTimeQuestを呼び出してるかは・・・、生成されたスクリプトを、よく読んでいないので分かりませんが^^;)。DDR方面はタイミングが厳しいといった事情があるので、全部至れり尽くせりなことをやってくれるといった感じですかね。
  1. 2009/08/09(日) 15:07:19 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、本当に解説ありがとうございます。
了解しました。便利にやってくれる感じですね。
  1. 2009/08/09(日) 18:45:54 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1195-d6979b2a
この記事にトラックバックする(FC2ブログユーザー)