Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 Lattice Diamond 日本語マニュアル 第6章 論理合成の ストラテジ設定と 制約記述 (本 Lattice Diamond 日本語マニュアルは、日本語による理解のため一助として提供しています。その作 成にあたっては各トピックについて、それぞれ可能な限り正確を期しておりますが、必ずしも網羅的で はなく、或いは最新でない可能性があります。また、意図せずオリジナル英語版オンラインヘルプやリ リースノートなどと不一致がある場合もあり得ます。疑義が生じた場合は、ラティスセミコンダクター 正規代理店の技術サポート担当にお問い合わせ頂くか、または極力最新の英語オリジナル・ソースド キュメントを併せて参照するようにお願い致します。) 6-1 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 目 次 1 このドキュメントの概要 ················································ 3 2 Synthesis ツール ························································· 4 2.1 使用する Synthesis ツールの選択 ............................................... 4 2.2 バンドル版以外のツールを使用する場合の設定 .......................... 5 2.3 LSE を使用する際の注意事項 ..................................................... 5 2.3.1 3 サポートするデバイスファミリの制限.......................................... 5 Synthesis の Strategy 設定 ············································ 6 3.1 Strategy 設定ウインドウの起動 .................................................. 6 3.2 設定内容の詳細 ........................................................................... 7 3.2.1 Synplify Pro の Strategy オプション .............................................. 7 3.2.2 LSE の Strategy オプション ........................................................ 15 4 Synplify の help およびドキュメント ······························ 21 5 Synthesis Preference File の管理 ··································· 22 6 5.1 新しい Synthesis Constraint の作成......................................... 22 5.2 既存の Synthesis Constraint のインポート .............................. 23 5.3 使用する Synthesis Constraint の選択 ..................................... 24 5.4 Synthesis Constraint の削除 .................................................... 25 sdc ファイルの記述 ····················································· 26 6.1 オブジェクト名記述ルール ....................................................... 26 6.2 タイミング制約の記述 .............................................................. 27 6.3 6.4 7 クロックタイミング制約 ............................................................. 27 6.2.2 マルチサイクルパス設定 ............................................................. 29 インプリ関連の制約記述 ........................................................... 30 6.3.1 IO レジスタのアサイン ............................................................... 30 6.3.2 シフトレジスタの合成スタイル設定 ........................................... 31 6.3.3 演算回路の合成スタイル設定 ...................................................... 32 6.3.4 ステートマシンの合成スタイル設定 ........................................... 32 6.3.5 fanout 数の制限設定 .................................................................... 33 その他の制約記述 ..................................................................... 33 6.4.1 Compile point の設定................................................................... 33 6.4.2 ネットリストの階層展開 ............................................................. 34 LDC ファイルの設定 ··················································· 34 7.1 8 6.2.1 LDC エディタを使用した設定 .................................................. 34 改訂履歴 ··································································· 39 6-2 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 1 Ver.2.2.1 このドキュメントの概要 このドキュメントでは Lattice Diamond での Synthesis の実行方法や Strategy の設定方法等につい て説明します。 このドキュメントの説明対象 (Synplify Pro を使用した場合) このドキュメントの説明対象 (LSE を使用した場合) 図 1-1 Lattice Diamond のデザインフロー 6-3 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 2 Ver.2.2.1 Synthesis ツール Lattice Diamond では Synthesis ツールとして Synplify Pro(以下 Synplify)と LSE(Lattice Synthesis Engine)が使用できます。Lattice Diamond 2.1 以降のバージョンでは、LSE が MachXO および MachXO2 ファミリのデフォルトとなっています。LSE はこれ以外のファミリには対応してい ません。 LSE を使用した場合は、Synthesis と一緒に[Translate Design]プロセス相当の処理も同時に実行さ れます。 なお、3 章で詳述するとおり Diamond 2.1、2.2 からはストラテジ設定オプションの幾つかが新規追加、または デフォルト指定の変更が行われていますので、留意してください。旧バージョンからのアップデートで同 一プロジェクトを作業する場合、念のためにダブルチェックしてください。 2.1 使用する Synthesis ツールの選択 Synthesis ツールを選択するには、 まず Lattice Diamond のメニューバーから[Project] => [Synthesis Tool…]を選択します。すると Synthesis ツールの選択ウインドウが立ち上がります(図 2-1)。 図 2-1 Synthesis ツール選択ウインドウ このウインドウ上で、使用する Synthesis ツールにチェックを入れます。 ----------------------------------------------------------------------------------------------------------------------------------・デフォルトでは Synplify が選択されているので、LSE と Precision を使用しない場合、この作業 は不要です。 ・Precision を選択した場合は、インストールとパス設定(2.2 項)が行われていなければ使用できま せん。 ・選択したデバイスファミリによっては、使用できない合成ツールがあります。使用できない合成 ツールはグレーアウトされていて選択できません。 ----------------------------------------------------------------------------------------------------------------------------------- 6-4 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 2.2 バンドル版以外のツールを使用する場合の設定 Synthesis ツールのパス設定を行うことで、Lattice Diamond1.4 にバンドルされている Synthesis ツール以外 (他のバージョンの Synplify や Precision) も使用することができます。 Lattice Diamond のメニューバーから [Tools] => [Option]の順に選択すると Lattice Diamond のオ プション設定ウインドウが起動します(図 2-2)。ウインドウ左側のパネルで[Environment] => [Directories…]の順に選択すると、ツールのパス設定画面になります。 このウインドウ上部が Synthesis ツールのパス設定部分で、Synplify と Precision のパス設定欄が用 意されています。 図 2-2 Lattice Diamond のオプション設定ウインドウ -- ツールのパス設定 Synplify のパス設定は、デフォルトではバンドル版のパスが設定されています。Precision のパス設 定欄はデフォルトではブランクになっています。必要に応じてこれらのパス設定を変更します。 なお、選択した Synplify が Lattice Diamond(または ispLEVER)にバンドルされているものなら、ウ インドウ右上の[use OEM]のチェックは外さないでください。これ以外の Synplify の場合は、[use OEM]のチェックを外してください。 2.3 LSE を使用する際の注意事項 2.3.1 サポートするデバイスファミリの制限 Lattice Diamond の LSE では、MachXO および MaxhXO2 のみがサポートされており、これら以外 のファミリはサポートされません。 6-5 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 Synthesis の Strategy 設定 3 Synthesis の Strategy は、バンドルされている Synplify および LSE と、オプションで使用できる Precision のものが用意されていますが、このドキュメントでは Synplify および LSE の Strategy の み説明します。 なお、Diamond 2.1、2.2 からはストラテジ設定オプションの幾つかが新規追加、またはデフォルト指定の変更 が行われていますので、留意してください(色つき注意書きでハイライト)。旧バージョンからのアップデー トで同一プロジェクトを作業する場合、念のためにダブルチェックしてください。 3.1 Strategy 設定ウインドウの起動 Project Navigator 左上に配置されている File List ウインドウに、Project にインポートされている Strategy の一覧が表示されています(Implementation で使用されるのは、太字で表示されている1つ だけです)。この中から変更したい Strategy 名をダブルクリックすると、Strategy 設定ウインドウが 開きます。 図 3-1 Synthesis の strategy 設定 ~ LSE Strategy はプロセスごとに表示されます。Synthesis の Strategy 設定を行う場合は、左側のリスト から使用する Synthesis ツール名を選択します。 6-6 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 3.2 設定内容の詳細 3.2.1 Synplify Pro の Strategy オプション 以下に各設定の詳細を説明します。 Allow Duplicate Modules パラメータ : True/False デフォルト値 : False -------------------------------------------------------------------------------------------------------------------------------Verilog HDL で同じ名前のモジュールが複数定義されている場合の処理に関する設定です。 [False](Default)を選択した場合、1 つのデザイン内に同じ名前のモジュールが複数定義されてい ると、エラーになり論理合成が行われません。[True]を選択した場合、1 つのデザイン内に同じ 名前のモジュールが複数定義されていると、最後に定義されたモジュールだけが使用され、他の モジュールは無視されます。 Area パラメータ : True/False デフォルト値 : XO ファミリのみ True、それ以外は False -------------------------------------------------------------------------------------------------------------------------------Area(リソース数)を小さくするためのオプション設定です。 [True]を選択すると Area を最小にするために周波数制約を 1MHz に設定して合成を行います。 この場合、[Frequency]オプションの設定値は無視されます。sdc ファイルにクロックの周波数(周 期)設定がされている場合は、sdc ファイル内の設定が優先されます。 Arrange VHDL Files パラメータ : True /False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------VHDL ファイルをコンパイルする際に、自動的に最上位モジュールが最後にコンパイルされるよ うにコンパイル順を変更するためのオプションです。 [True]の場合は、自動的にコンパイル順が調整されます。[False]の場合は、File List ウインドウ で表示されている順に上からコンパイルされます。 Clock Conversion(Diamond 2.1 から新規追加) パラメータ : True /False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------ゲーテッド・クロックやユーザロジック生成のクロックためのオプションです。従来の Fix Gated Clocks や Fix Generated Clocks オプションと同等の機能です。 [True]の場合は、CE ベースの回路に変換します。[False]では変換しません。 Command Line Options パラメータ : 文字列 デフォルト値 : ブランク -------------------------------------------------------------------------------------------------------------------------------このドキュメントで紹介している GUI のリストに表示されていない特別なオプションを使用す る場合に、直接引数等を記述します。 6-7 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 設定する場合は、以下の様に記述します。 set_option オプション 記述できるオプションは1つだけです。オプションの詳細は Synplify Pro の Reference Manual や User Guide をご覧ください。これらのドキュメントについては 4 章をご覧ください。 Default Enum Encoding パラメータ : Default/Onehot/Gray/Sequential (デフォルト値 Default -------------------------------------------------------------------------------------------------------------------------------VHDL の列挙(enum)型変数が定義されている場合、その変換形式に関する設定です。 [Default]を選択した場合、型のメンバ数に応じて自動的に割り振られます。 [Onehot]を選択した場合、各メンバに[onehot](全 bit 中 1bit のみが’1’)の値が割り当てられます (例:0001, 0010, 0100, 1000)。 [Gray]を選択した場合、各メンバに一度の変化で 1bit のみが変化するような値が割り当てられま す(例:000, 001, 011, 111, 110, 010)。 [Sequential]を選択した場合、一度に複数 bit が変化するような値(基本的には binary counter) が割り当てられます。 Disable IO Insertion パラメータ : True/False デフォルト値 : False -------------------------------------------------------------------------------------------------------------------------------ネットリストへの I/O バッファ挿入に関する設定です。 [False](デフォルト)を選択した場合、最上階層のソースのポートに I/O バッファが挿入されます。 [True]を選択した場合は I/O バッファが挿入されません。 I/O バッファの無いネットリストは配置配線が出来ません。IP コアの生成等の特殊な場合を除き [True]を選択しないで下さい。 Export Diamond Settings to Synplify Pro GUI(Diamond 2.1 から新規追加) パラメータ : No/Only on First Launch/Yes デフォルト値 : No -------------------------------------------------------------------------------------------------------------------------------Synplify Pro を Tools メニューから立ち上げて論理合成処理を行う場合に、ストラテジ設定各オ プションをエクスポートするかどうかを指定するためのオプションです。 デフォルトの[No]は Diamond 2.0 までの動作と同じです。[Yes]の場合は、Synplify Pro が呼ば れるごとにストラテジ設定を取り込んで起動し、それ以前のセッションで保存された設定があっ ても無効になります。 [Only on First Launch]では、最初の起動時のみにストラテジ設定を取り込んで起動し、それ以 後は直前のセッションでの設定やデフォルトを用いて起動します。 6-8 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 FSM Encoding パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------ステートマシン用のコンパイラである FSM(Finite State Machine)コンパイラの使用に関する設 定です。 [True](デフォルト)を選択した場合は FSM コンパイラが使用されますが、[False]を選択した場 合、FSM コンパイラは使用されないため、ステートマシンに対して最適な合成が行われない可 能性があります。 Fanout Guide(Diamond 2.1 以前の名称:Fanout Limit) パラメータ : 最大 Fanout 数 デフォルト値 : 1000(旧値は 100) -------------------------------------------------------------------------------------------------------------------------------Fanout 数の上限の制約設定です。 Fanout がこの値を超えた場合は、ドライバをコピーして Fanout を減らす処理が行われます。 ただし、この制約はあくまでガイドラインであり、制約を満たすことにより最適化が妨げられる 場合は無視されます。 Fix Gated Clocks(Diamond 2.1 以降はありません) パラメータ : 0/1/2/3 デフォルト値 : 3 -------------------------------------------------------------------------------------------------------------------------------[Gated Clock Conversion]処理とそのレポート出力に関する設定です。 [Gated Clock Conversion]は、ソース内では Clock の Gating に使用している信号をレジスタの CE(クロックイネーブル)ポートに接続し、回路の同期化を行う処理です(図 3-2)。 [0]を選択した場合は、[Gated Clock Conversion]処理が行われません。 [1]を選択した場合は、[Gated Clock Conversion]処理が行われますが、レポートされません。 [2]を選択した場合は、[Gated Clock Conversion]処理が行われ、変換できなかったクロックネッ トに関してのみレポートされます。 [3]を選択した場合は、[Gated Clock Conversion]処理が行われ、全ての Gated Clock に関する処 理結果がレポートされます。 図 3-2 Fixed Gated Clock オプションでのクロック最適化の一例 6-9 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 なお、[0]以外を選択した場合でも、以下の条件を満たさないリソースに対しては[Gated Clock Conversion]が行われません。 1. sdc ファイル内で、define_clock 指示子により Gating 前のクロックが定義されている場合。 2. Gated クロックの接続先が、Sequential primitive(基本的にはレジスタのみ)の場合。 3. Gating する論理が AND や OR 等の場合(XOR 等は変換されない)。 ブロック RAM や DSP ブロックは、合成ではブラックボックスとして扱われる(Sequential Primitive ではない)ため、これらに接続される Gated クロックに対しては、Conversion 処理は 行われません。また、Gating の論理によっては Conversion が行われない場合もあります。 Fix Generated Clocks(Diamond 2.1 以降はありません) パラメータ : 0/1/2/3 デフォルト値 : 3 -------------------------------------------------------------------------------------------------------------------------------デバイス内のレジスタ出力等から生成されたローカルクロックの最適化処理とそのレポート出 力に関する設定です。 この処理では、デバイス内で生成された分周クロック等のローカルクロックを、元のクロックと クロックイネーブルに変換し、回路の同期化を行います(図 3-3)。 図 3-3 Fixed Generated Clocks オプションでのクロック最適化の一例 [0]を選択した場合は、この処理は行われません。 [1]を選択した場合は、この処理は行われますが結果等についてはレポートされません。 [2]を選択した場合は、この処理が行われ変換が行われなかったローカルクロックに関してのみレ ポートされます。 [3]を選択した場合は、この処理が行われ全てのローカルクロックに関する処理結果がレポートさ れます。 なお、[0]以外を選択した場合でも、回路構成によってはこの処理が行われない場合もあります。 --例 分周クロックが階層をまたいで他のモジュールで使用されている。 分周クロックが最上位階層の出力ポートに接続されている。 Force GSR パラメータ : Auto/False/True デフォルト値 : False -------------------------------------------------------------------------------------------------------------------------------論理合成時の GSR(Global Set/Reset)挿入に関する設定です。 6-10 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 [Auto]/[True]を選択した場合は自動的に GSR バッファが挿入されます(ただし、Set/Reset の 構成が条件を満たした場合のみ) 。 [False]を選択した場合は GSR が使用されません。 GSR は Map Design プロセスで、より最適な条件で挿入することが出来ます。特別な理由のな い限りこのオプションは[False]を選択することを推奨します。 Frequency (MHz) パラメータ : 周波数[MHz] デフォルト値 :(なし)(Diamond 2.2 以前は 200) -------------------------------------------------------------------------------------------------------------------------------クロックの周波数の制約設定です。 Area 設定が[False]の場合のみ、このオプションで設定した値を周波数制約とする合成スクリプ トを生成します。この周波数制約は全てのパス(レジスタ-レジスタ間)に対して適用されます。 Number of Critical Paths パラメータ : パス数 デフォルト値 : (なし) (Diamond 2.2 以前は 3) -------------------------------------------------------------------------------------------------------------------------------論理合成のレポート内に出力するクリティカルパス数の設定です。 クリティカルパスは[Number of Start/End point]オプション(デフォルト値 0)が 1 以上の場合の みレポートされますので、クリティカルパスをレポートさせる場合は"Number of Start/End point"を 1 以上に設定してください。 Number of Start/End points パラメータ : 数値 デフォルト値 : (なし) (Diamond 2.2 以前は 0) -------------------------------------------------------------------------------------------------------------------------------合成後のタイミング見積もり結果としてレポートするパス数の設定です。 このオプション設定が 1 以上の場合のみ[Critical Path]の詳細がレポートされます。 Output Netlist Format パラメータ : None/VHDL/Verilog デフォルト値 : None -------------------------------------------------------------------------------------------------------------------------------合成後の HDL ネットリスト出力の設定です。 [None](デフォルト)を選択した場合、合成後のネットリストは EDIF のみが出力され HDL のネッ トリストは出力されません。 [VHDL]を選択した場合は、EFID と VHDL のネットリスト(*.vhm)が出力されます。[Verilog] を選択した場合は、EFID と Verilog HDL のネットリスト(*.vm)が出力されます。 Output Preference File パラメータ True/False デフォルト値 : True(Diamond 2.1 までは False) 6-11 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 -------------------------------------------------------------------------------------------------------------------------------Lattice Diamond の制約ファイル出力に関する設定です。 デフォルトの[True]では、論理合成時の制約から必要な制約だけを記述した Lattice Diamond の 制 約 フ ァ イ ル を 出 力 し ま す 。 出 力 フ ァ イ ル 名 は " プ ロ ジ ェ ク ト 名 _Implementation 名 _synplify.lpf”です。必要に応じて Lattice Diamond にインポートするか、必要な部分のみを使用 する制約ファイルにコピーするかして使用してください。 [False]を選択した場合、このファイルは出力されません。 Pipelining and Retiming パラメータ : None/Pipelining Only/Pipelining and Retiming (デフォルト値 : Pipelining Only(Diamond 2.1 までは None) -------------------------------------------------------------------------------------------------------------------------------論理合成中に行うタイミングの最適化処理[Retiming]と[Pipelining]の実行に関する設定です。 [Retiming]は論理回路を移動させてレジスタ間の負荷を分散させる処理です(図 3-4)。回路全体 に対してこの処理が行われます。これを演算回路等に対してのみ行うのが[Pipelining]です。 [None]を選択した場合、Pipelining 処理は行われません。[Pipelining and Retiming]を選択した 場合、Pipelining と Retiming 処理が行われます。 図 3-4 Retiming 処理の一例 [None]を選択した場合、どちらの処理も行われません。 Push Tristate パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------内部トライステートの合成方法に関する設定です。 [True](デフォルト)を選択した場合、’Z’がレジスタを介してポートに出力されるような記述に対 してトライステート制御用レジスタを追加し、IO バッファでトライステート制御を行うように 回路を合成します(図 3-5)。 6-12 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 図 3-5 Push Tristate オプションの効果 [False]を選択した場合は、FPGA 内部で’Z’が生成されないような回路が合成されます。 Resolved Mixed Drivers パラメータ : True/False デフォルト値 : False(Diamond 2.0 までは True) -------------------------------------------------------------------------------------------------------------------------------信号の衝突(Multiple Drive)が発生しているネットの処理に関する設定です。 [True]を選択した場合、RTL 上で図 3-6 のように1つのネットが、複数のドライバに接続されて おり、なおかつその中の1つが[1]または[0]固定の場合、合成の際にそのネット固定値として処 理されます。複数ドライバによる信号衝突がある旨のメッセージは log に出力されますが、エラー にはなりません。 図 3-6 Resolve Mixed Drivers 処理の一例 [False]を選択した場合、このような条件でもエラーで合成が中断されます。 なお、どちらを選択した場合でも衝突している全てのドライバが固定値でない場合は、エラーで 合成が中断されます。 Resource Sharing パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------リソースの最適化処理に関する設定です。 6-13 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 [True]を選択した場合、使用するリソースを減らすために、複数ある同一機能の回路を共有させ る処理が行われます(図 3-7)。 図 3-7 Resource Sharing 処理の一例 [False]を選択した場合、この処理は行われません。 Update Compile point Timing Data パラメータ : True/False デフォルト値 : False -------------------------------------------------------------------------------------------------------------------------------compile point オプションを使用した際の振る舞いに関する設定です。 階層設計で compile point 指定されている下位モジュールが変更・再合成された場合に、その上 位街道のモジュールを再合成するか否かを選択します。 [False]を選択した場合、下位モジュールが再合成されても上位モジュールは再合成されません。 [True]を選択した場合、下位モジュールが再合成されると上位モジュールが再合成されることが あります。ただし、上位モジュールは必ず再合成されるのではなく、下位モジュールの変更によ りインターフェイス部分の回路構成とタイミング(遅延)が変化した場合に必要に応じて再合成が 行われます。 Use Clock Period for Unconstrained I/O パラメータ : True/False デフォルト値 : False(Diamond 2.1 までは True) -------------------------------------------------------------------------------------------------------------------------------sdc ファイルで制約が与えられていない I/O の制約に関する設定です。 [True](デフォルト)を選択した場合、制約が与えられていない I/O には"Frequency"オプションで 設定されたクロック周波数の 1 周期が Setup-time または Clock-to-Output の制約として与えら れます。 デフォルトでは制約は与えられません。 VHDL 2008(Diamond 2.2 から新規追加) パラメータ : True /False デフォルト値 : False -------------------------------------------------------------------------------------------------------------------------------VHDL バージョン指定のためのオプションです。 [True]の場合は、プロジェクトの VHDL 言語仕様として IEEE 1076-2008 を選択します。 6-14 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 Verilog Input パラメータ : Verilog95/Verilog2001/System Verilog デフォルト値 : Verilog2001 -------------------------------------------------------------------------------------------------------------------------------コ ン パ イ ル す る Verilog HDL の 記 述 仕 様 の 選 択 で す 。 デ フ ォ ル ト の [Verilog2001] で は IEE1364-2001 の言語仕様に基づいてコンパイルされます。 [Verilog95]を選択した場合、IEEE1364-1995 の言語仕様に基づいてコンパイルされます。 [System Verilog]は Diamond 2.1 から追加されています。 3.2.2 LSE の Strategy オプション 以下に各設定の詳細を説明します。 Carry Chain Length パラメータ : 数値 デフォルト値 : 0 -------------------------------------------------------------------------------------------------------------------------------演算回路をインプリする際に使用される桁上がり/桁下がり伝播専用配線である Carry Chain の使用を制限するためのオプションです。 Carry Chain 図 3-8 Carry Chain を使用した SLICE 間接続 設定値は、SLICE が桁上がり/桁下がりを使用するモードで実現するデータの最大 bit 幅の許容 値です。最大で(設定値 + 1)までのカウンタや演算回路が Carry Chain を使用して実現されます (初めの 1bit 目は桁上がりが必要ないため、この設定の対象にならない)。[0]は 0bit ではなく無 制限であることを表します。 なお、この設定は[Use Carry Chain]オプションが[True]設定の場合のみ有効になります。 Command Line Options パラメータ : 文字列 デフォルト値 : ブランク -------------------------------------------------------------------------------------------------------------------------------- 6-15 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 このドキュメントで紹介している GUI のリストに表示されていない特別なオプションを使用す る場合に、直接引数等を記述します(Lattice Diamond1.3 では、コマンドラインでしか入力で きないオプションはないので、全て GUI 上で設定してください) 。 EBR Utilization パラメータ : 数値 デフォルト値 : 100 -------------------------------------------------------------------------------------------------------------------------------記述から類推して EBR を使用した回路を生成する際に、ターゲットとする EBR の使用率の上限 設定です。 EBR の使用率が設定した上限を超えた場合、残りはレジスタか分散メモリで実現されます。な お、IPexpress で生成した EBR のソースを使用した場合は、このオプションの適用外です(全て EBR で実現されます)。 FSM Encoding Style パラメータ : Auto/One-hot/Gray/Sequential (デフォルト値 Auto -------------------------------------------------------------------------------------------------------------------------------VHDL の列挙(enum)型変数が定義されている場合、その変換形式に関する設定です。 Auto(デフォルト)を選択した場合は、ステート数等から適当な構成のステートマシンが構成され ます。Auto 以外を選択した場合は、それに沿った構成のステートマシンが構成されます。 Force GSR パラメータ : Auto/Yes/No デフォルト値 : Auto -------------------------------------------------------------------------------------------------------------------------------論理合成時の GSR(Global Set/Reset)挿入に関する設定です。 [Auto]/[Yes]を選択した場合は自動的に GSR バッファが挿入されます(ただし、Set/Reset の構 成が条件を満たした場合のみ) 。[No]を選択した場合は GSR が使用されません。 GSR は Map Design プロセスでより最適な条件で挿入することが出来ます。特別な理由のない 限りこのオプションは[No]を選択することを推奨します。 Hardware Evaluation パラメータ : Enable/Disable デフォルト値 : Enable -------------------------------------------------------------------------------------------------------------------------------IP コアの評価に関する設定です。 IP コアをライセンスなしで評価する場合は[Enable](デフォルト)を選択します。ライセンス入手 後に IP コアを使用する場合は [Disable] を選択します。 Intermediate File Dump パラメータ : True/False デフォルト値 : False -------------------------------------------------------------------------------------------------------------------------------暗号化されたファイル出力可否の設定です。 6-16 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 [True]を設定すると、edif の他に暗号化された Verilog HDL ソースファイルでも出力されます。 出力されるファイルの拡張子は[.ve]です。[False](デフォルト)を選択した場合は、このファイル は出力されません。 --------------------------------------------------------------------------------------------------------------------------・トラブル対応の際にこの暗号化されたファイルを渡せば、HDL ソースファイルから論理記 述を読み取られる心配がなくなります。 --------------------------------------------------------------------------------------------------------------------------- MUX Style パラメータ : Auto/L6Mux Multiple/L6Mux Single/PFU MUX デフォルト値 : Auto -------------------------------------------------------------------------------------------------------------------------------SLICE 内部のマルチプレスサの使用方針に関する設定です。 ② ① 図 3-9 MUX Style オプションの影響を受ける SLICE 内のマルチプレスサ [Auto](デフォルト)を選択した場合は、LSE が最適と判断したマルチプレスサが使用されます。 [L6Mux Multiple]を選択した場合は、SLICE 内の[L6Mux](図 3-9①)を優先的にカスケード接続 して使用します。 [L6Mux Single]を選択した場合は、SLICE 内の[L6Mux](図 3-9①)を優先的に使用しますが、 [L6Mux]のカスケード接続は行われません。 [PFU Mux]を選択した場合は、SLICE 内の[PFU Mux](図 3-9②)を優先的に使用します。 --------------------------------------------------------------------------------------------------------------------------・傾向として [L6Mux Multi] < [Auto] < [L6Mux Single] < [PFU Mux]の順に回路規模が大き くなります。ただし、ロジック段数は[PFU Mux] < [L6Mux Single] < [Auto] < [L6Mux Multi]の順に増える傾向があります。 ・どの設定が最適かはデザインに依存します。 --------------------------------------------------------------------------------------------------------------------------Macro Search Path パラメータ : フォルダパス デフォルト値 : ブランク -------------------------------------------------------------------------------------------------------------------------------マクロのライブラリパス設定です。 6-17 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 デザインに IP コア(ネットリスト提供)や EPIC で生成したマクロを使用している場合、そのネッ トリストファイル(*.ngo)またはライブラリファイル(*.nmc)のあるフォルダパスを記述します。 IP やマクロを使用していない場合はブランクのままで問題ありません。 プロジェクトフォルダ内にファイルが置かれている場合は、ブランクのままで構いません。複数 のフォルダにファイルが有る場合は、[;]で区切って全てのパスを記述してください。この際、 間にスペースは入れないでください。パスの記述は相対パスにも対応しています。 Synplify Pro を使用した場合、[Translate Design]プロセスのオプションです。 Max Fanout Limit パラメータ : 最大 Fanout 数 デフォルト値 : 1000 -------------------------------------------------------------------------------------------------------------------------------Fanout 数の上限の制約設定です。 Fanout がこの値を超えた場合は、ドライバをコピーして Fanout を減らす処理が行われます。 ただし、この制約はあくまでガイドラインであり、制約を満たすことにより最適化が妨げられる 場合は無視されます。 Memory Initial Value File Search Path パラメータ : フォルダパス デフォルト値 : ブランク -------------------------------------------------------------------------------------------------------------------------------EBR(ブロックメモリ)の初期値設定を行う際に、初期値を記述したファイル(*.mem)が保存され ているフォルダパスを指定します。何も指定しない場合は、Implementation フォルダが参照さ れます。 EBR の初期値設定を行わない場合は、設定の必要はありません。また、IPexpress で EBR を生 成する際に初期値ファイルを指定している場合は、ここで再度指定する必要はありません。 Number of Critical Paths パラメータ : パス数 デフォルト値 : 3 -------------------------------------------------------------------------------------------------------------------------------論理合成後のタイミング検証結果として出力するクリティカルパス数の設定です。 レポートは、[TOP モジュール名]_lse.twr ファイルに出力されます。 Optimization Goal パラメータ : Area/Balanced/Timing デフォルト値 : Balanced -------------------------------------------------------------------------------------------------------------------------------論理合成で優先するパラメータを決める設定です。 [Area](デフォルト)を選択した場合は、リソース数が最小になるように論理合成が行われます。 [Balanced]を選択した場合は、リソース数とタイミングのバランスを考慮した論理合成が行われ ます。 6-18 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 [Timing]を選択した場合は、動作周波数が最大となるように論理合成が行われます。 Output Preference File パラメータ : True/False デフォルト値 : False -------------------------------------------------------------------------------------------------------------------------------論理合成の際に使用したタイミング制約を、lpf(論理合成以降で使用する制約ファイル)に出力さ せる設定です。 [False](デフォルト)を選択した場合は、lpf ファイルは出力されません。 [True]を選択した場合は、lpf ファイルに制約が出力されます。なお、このファイルは出力される だけで、そのまま以降の処理で参照されるわけではありません。これを使用する場合は、Lattice Diamond にインポートして Active な制約として設定する必要があります。 Propagate Constant パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------論理合成の際に、固定値または値が固定される回路の最適化に関する設定です。 [True](デフォルト)を選択した場合は、このような回路は最適化され削除されます。[False]を選 択した場合は、回路が最適化されずに残ります。 RAM Style パラメータ : Auto/Block RAM/Distributed/Register デフォルト値 : Auto -------------------------------------------------------------------------------------------------------------------------------2次元配列等で RAM が推定される記述の実現方法(リソース)の設定です。 [Auto]を選択した場合は、LSE がサイズから適当な方法を選択します。 [Block RAM]を選択した場合は、EBR が使用されます。 [Distributed]を選択した場合は、分散 RAM が使用されます。 [Registers]を選択した場合は、レジスタが使用されます。 なお、シフトレジスタが推定され RAM を使用して構成された場合でもこの設定の影響をうけま せん。 ROM Style パラメータ : Auto/EBR/Logic デフォルト値 : Auto -------------------------------------------------------------------------------------------------------------------------------2次元配列等で ROM が推定される記述の実現方法(リソース)の設定です。 [Auto]を選択した場合は、LSE がサイズから適当な方法を選択します。 [EBR]を選択した場合は、EBR が使用されます。 [Logic]を選択した場合は、ファブリック内のロジックリソースで固定値の配列が構成されます。 6-19 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 Remove Duplicate Registers パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------同じ機能(論理)を実現するレジスタが複数あった場合の、最適化(削除)に関する設定です。 [True](デフォルト)を選択した場合、このようなレジスタはリソース数削減のために削除されま す。[False]を選択した場合は、削除されずに残ります。 Remove LOC Properties パラメータ : On/Off デフォルト値 : Off -------------------------------------------------------------------------------------------------------------------------------HDL ソース内に記述されたピンアサイン情報に関する設定です。 [Off](デフォルト)を選択した場合は、HDL ソース内のピンアサイン情報は以降のプロセスに引き 継がれます。 ただし、HDL ソースと制約ファイル(*.lpf)の設定が異なる場合、以降のプロセスでは制約ファイ ルの設定が優先されます。 [On]を選択した場合、HDL ソース内のピンアサイン情報は以降のプロセスに引き継がれません。 Resource Sharing パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------リソースの最適化処理に関する設定です。 [True](デフォルト)を選択した場合、使用するリソースを減らすために、複数ある同一機能の回 路を共有させる処理が行われます(図 3-10)。[False]を選択した場合、この処理は行われません。 図 3-10 Resource Sharing 処理の一例 Target Frequency パラメータ : 数値(周波数) デフォルト値 : 200 -------------------------------------------------------------------------------------------------------------------------------目標動作周波数の設定です。この設定は[Optimization Goal]オプションが[Area]設定以外の場合 に有効になります。 また、この設定はデザイン内の全てのクロックが対象となります。クロック個別に制約を設定す る場合は、sdc ファイルに制約を記述してください。 6-20 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 Use Carry Chain パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------演算回路実装の際の Carry Chain の使用可否の設定です。 [True]を選択した場合は、演算回路の実装に Carry Chain を使用することが許可されます(使用 するかどうかは回路構成と[Carry Chain Length]オプションの設定に依存します)。 [False]を選択した場合は、演算回路の実装に Carry Chain が使用されません。 Use IO insertion パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------論理合成の際の IO バッファ挿入に関する設定です。 [True](デフォルト)を選択した場合は、合成の際に最上位階層のポートに IO バッファが挿入され ます。 [False]を選択した場合は、IO バッファが挿入されません。 Lattice Diamond1.3 の LSE では IO バッファなしのフローをサポートしていないため、このオ プションは[False]に設定しないでください。 Use IO Registers パラメータ : True/False デフォルト値 : True -------------------------------------------------------------------------------------------------------------------------------論理合成の際の IO レジスタ使用の可否設定です。 [True](デフォルト)を選択した場合は、合成の際に IO レジスタを使用することが許可されます(使 用するかどうかは回路構成に依存します)。 [False]を選択した場合は、合成の際に IO レジスタが使用されません。 4 Synplify Pro のヘルプおよびドキュメント Synplify Pro の使用方法やオプション設定に関するドキュメントは、以下のフォルダにインストール されています。或いは Diamond 起動時のトップ画面右で各種リンクが表示されていますが、ここか らも呼び出しが可能です。 [Lattice Diamond のインストールフォルダ]¥synpbase¥doc (例)バージョン 2.2 をデフォルト設定でインストールした場合: C:¥lscc¥diamond¥2.2¥synpbase¥doc このフォルダには以下の 3 つのドキュメントがあります。 user_guide.pdf reference.pdf : 主に全体的なデザインフローについて説明したドキュメント : 主に制約設定や特定機能について詳細に説明したドキュメント 6-21 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 release_notes.pdf : バージョンアップに伴う変更点等について説明したドキュメント また、Synplify の GUI を立ち上げて[Help]メニューから[online help]等を使用することもできます。 5 Synthesis Preference File の管理 Lattice Diamond では、論理合成用の制約ファイル[Synthesis Preference File]をインポートするこ とで論理合成ツールにタイミング制約や合成方法の指示を与えることが出来ます。 [Synthesis Preference File]をインポートしなくても論理合成は行えますが、その場合にはタイミン グ制約等は Lattice Diamond が設定するデフォルト値が使用されます。 この章では Lattice Diamond 上での Synthesis Preference の管理方法についてのみ説明します。 ファ イルの制約の記述については 6 章を参照してください。 5.1 新しい Synthesis Constraint の作成 プロジェクト作成時には、Synthesis Constraint はインポートされていません。従って論理合成ツー ルにデフォルト以外の制約を設定するには、Synthesis Constraint File を作成する必要があります。 論理合成ツールが Synplify Pro の場合、Synthesis Constraint File の拡張子は[.sdc]、論理合成ツー ルが LSE の場合、Synthesis Constraint File の拡張子は[.ldc]となります。 新しい Synthesis Constraint を追加する場合は、メニューバーから[File] => [New] => [File…]の順 に選択するか、File List ウインドウでフォルダシンボル(Strategy 以外)を右クリックし、[Add]=> [New File...]の順に選択します。これで、New File Wizard が起動します。 右クリック 図 5-1 Synthesis Constraint の追加 Synthesis Constraint を追加する場合は、Categories 欄で[Source Files]、Source Files 欄で[SDC Files]または[LDC Constraint File]を選択し、Name 欄にファイル名を入力します。 6-22 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 設定完了後に New ボタンをクリックすると、新しい Synthesis Constraint が作成され SDC の場合 はテキストエディタが、LDC の場合は LDC Editor(LDC 設定用の GUI ツール)が立ち上がります。 図 5-2 New File Wizard(Synthesis Constraint の追加) 5.2 既存の Synthesis Constraint のインポート 既存の Synthesis Constraint をインポートする場合は、メニューバーから[File] => [Add] => [Existing File…]の順に選択するか、File List ウインドウ上で*Files のフォルダシンボルを右クリッ クし、[Add] => [Existing File…]の順に選択します(図 5-3)。 右クリック 図 5-3 既存の Synthesis Constraint のインポート 6-23 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 これで、インポートするファイルの選択ウインドウ(図 5-4)が立ち上がるので、まず File of Type と して[Synthesis Constraint Files]を選択します。これでウインドウにフォルダ内の Synthesis Constraint ファイルが表示されるので、適当なファイルを選択し[Add]ボタンをクリックします。 図 5-4 インポートする LPF Constraint の選択 この際、ウインドウ左下の[Copy file to ….]にチェックが入っていると、Implementation フォルダに コピーが作成され、そちらがインポートされます。チェックが入っていない場合は、選択したファイ ルがインポートされます。 5.3 使用する Synthesis Constraint の選択 Implementation では、プロジェクトに複数の Synthesis Constraint をインポートすることが出来、 デフォルトではインポートした全ての Synthesis Constraint が適用されます。インポートされている Synthesis Constraint を適用しないようにするには、Synthesis Constraint の非アクティブ化を行い ます。 Synthesis Constraint を非アクティブ化するには、File List ウインドウでアクティブな Synthesis Constraint を右クリックし、 [Set as Inactive]を選択し ます(図 5-5)。これでそ の Synthesis Constraint が非アクティブ化され、以後その Implementation に適用されなくなります。 右クリック 図 5-5 Synthesis Constraint の非アクティブ化 6-24 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 アクティブな Synthesis Constraint は太字で、非アクティブな Synthesis Constraint は細字で表示 されます。非アクティブにした Synthesis Constraint を再びアクティブ化するには、同様の手順で[Set as Active SDC](または LDC)を選択します。 インポートされていてもアクティブになっていないと、Synplify Pro に SDC で記述する制約は引き 渡されませんので、留意してください。 5.4 Synthesis Constraint の削除 不要になった Synthesis Constraint は、プロジェクトから削除することも出来ます。 File List ウインドウで削除したい Synthesis Constraint を右クリックし[remove]を選択するか、選 択した状態でキーボードの[Delete]キーを押すと Synthesis Constraint ファイルがプロジェクトから 削除されます(図 5-6)。 ----------------------------------------------------------------------------------------------------------------------------------・ 「プロジェクトから削除」=「インポート情報の削除」で、ファイル自体の削除ではありません。 ----------------------------------------------------------------------------------------------------------------------------------- 右クリック 図 5-6 LPF Constraint の削除 6-25 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 6 Ver.2.2.1 sdc ファイルの記述 sdc ファイルに制約を記述することで、Lattice Diamond で行われるデフォルト設定に制約を追加ま たは変更することが出来ます。 6.1 オブジェクト名記述ルール sdc ファイルで制約を設定する際、対象が個別のネットやレジスタの場合は対象となるオブジェクト を指定します。オブジェクト名の指定は、以下の様に記述します。 [オブジェクトタイプ : オブジェクト名] オブジェクトタイプには以下の 6 つがあります。 p : 最上位階層のポート名 (single-bit またはバス全体の場合) b : 最上位階層のポート名 (バスの特定 bit の場合) t : 下位階層モジュールのポート名 n : ネット名 i : インスタンス(レジスタ)名 c : クロック オブジェクトタイプが t/n/i の下位階層のポートやネットを指定する場合は、インスタンス名を[.]で 区切って表現します。 図 6-1 オブジェクト名指定の例 例 : 図 6-1 の reg0[3:0]のオブジェクト名の表現 i:U1_MA.U1_MAB.reg[*] ポートやレジスタ、ネット名等がバスの場合、かならず名前の後に対象となる bit の指定を行って ください。[*]と記述すれば全ての bit が対象になります。 6-26 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 6.2 タイミング制約の記述 6.2.1 クロックタイミング制約 Lattice Diamond のデフォルト設定では、デザイン内の全てのクロックに対して同じ制約が適用され ますが、sdc ファイルに以下のような記述を追加することで個別の制約を設定することが出来ます([] 内は省略可)。 -- 周波数制約設定 define_clock {クロックオブジェクト} -freq 周波数(MHz) [-clockgroup [-rise 立ち上がりエッジの時間 -fall 立ち下りエッジの時間] クロックグループ] -- 周期制約設定 define_clock {クロックオブジェクト} -period 周期(ns) [-clockgroup [-rise 立ち上がりエッジの時間 –fall 立ち下りエッジの時間] クロックグループ] -- クロックオブジェクト クロックオブジェクトは、デザイン内のクロックソースを指定します。クロックソースとしては以 下の3つが指定できます。 ・ 最上位階層のポートから入力されるクロック -- オブジェクトタイプ{p} ・ インスタンスされているモジュール((PLL や SERDES)の出力ポート -- オブジェクトタイプ {t} ・ 信号名(内部で生成する分周クロック等)-- オブジェクトタイプ{n} クロックオブジェクトの記述では、[オブジェクトタイプ]と[オブジェクト名(クロック名)]を指定し ます。[オブジェクトタイプ]はクロックソースごとに以下の様に記述します。 -- Syntax {オブジェクトタイプ:オブジェクト(クロック名)} -- 記述例 ・外部ポート CLK100M をクロックソースとして指定する場合 {p:CLK100M} ここをクロック ソースに指定 図 6-2 外部入力をクロックソースに指定する例 ・インスタンス名 U1_clkgen / U1_PLL100M の clkop 出力ポートをクロックソースとして指 定する場合 {t:U1_clkgen.U1_PLL100M.clkop} ※階層が複数の場合は、[.]で区切って表現します。 6-27 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 ここをクロック ソースに指定 図 6-3 インスタンスされたモジュールの出力ポートをクロックソースに指定する例 ・インスタンス名 U1_clkgen 内の信号 sr_div{2}をクロックソースとして指定する場合 {n:U1_clkgen.sr_div[2]} ここをクロック ソースに指定 図 6-4 信号名をクロックソースに指定する例 -- freq/period タイミング制約 タイミング制約は周波数(-freq)または周期(-period)を設定することが出来ます。周波数の場合の単 位は MHz、周期の場合の単位は ns です。 -- clockgroup 該当するクロックと同期するクロックがある場合、同じグループ名(任意)をつけることでツールに 対してそれらのクロックが同期関係にあることを通知します。同じグループ内のクロック間のパス には、適当なタイミング制約が設定されます。このタイミング制約は、周波数/周期設定や立ち上 がり/立ち下がりエッジのタイミング(次項)から自動的に計算されます。 -- rise/fall デューティー比設定 rise/fall オプションは、クロックの立ち上がりエッジの時間/立ち下りエッジの時間を指定するこ とで、クロックのデューティー比を設定することが出来ます。デフォルトでは 0ns で立ち上がり、 1/2 周期で立ち下がるデューティー50%のクロックとしてタイミング解析が行われます。 記述例 : ・周期 10ns のクロックで、立ち上がり: 0ns 立下り 7ns の場合 define_clock {p:CLK100M} –period 10 –rise 0 –fall 7 6-28 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 図 6-5 クロックのデューティー比設定例 1 ・周波数 150MHz のクロックで、立ち上がり: 1ns 立下り 4.2ns の場合 define_clock {t:PLLA.clkop} –freq 150 –rise 1 –fall 4.2 図 6-6 クロックのデューティー比設定例 2 6.2.2 マルチサイクルパス設定 処理を複数サイクルで実行するパスに対しては、マルチサイクルパス設定を行うことで最適な制約を 与えることが出来ます([]内は省略可)。 define_multicycle_path [-from {スタートポイントオブジェクト}] [-to {エンドポイントオブジェク ト} ] [-through {経由するオブジェクト}] クロックサイクル -- スタートポイントオブジェクト マルチサイクル指定するパスの始点です。オブジェクトとして以下の 4 つを指定できます。 クロック(オブジェクトタイプ : c) レジスタ(オブジェクトタイプ : i) 最上位階層の入力または双方向ポート(オブジェクトタイプ : p) ブラックボックスの出力ポート(オブジェクトタイプ : t) -- エンドポイントオブジェクト マルチサイクル指定するパスの終点です。オブジェクトとして以下の4つを選択できます。 クロック(オブジェクトタイプ : c) レジスタ(オブジェクトタイプ : i) 最上位階層の出力または双方向ポート(オブジェクトタイプ : p) ブラックボックスの入力ポート(オブジェクトタイプ : t) 6-29 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 -- 経由するオブジェクト スタートポイントからエンドポインまでのパス内の特定のオブジェクトを指定することで、マルチ サイクル設定される経路を限定することが出来ます。オブジェクトとしては以下の2つを指定でき ます。 ネット(オブジェクトタイプ : n) 下位モジュールのポート(オブジェクトタイプ : t) -- クロックサイクル 制約として設定されるクロックのサイクル数です。 スタートポイントオブジェクト/エンドポイントオブジェクトのどちらかは必ず指定する必要があ ります。 図 6-7 マルチサイクルパス設定例 --記述例 図 6-7 に制約を設定した場合 define_multicycle_path -from {i:reg0} 2 -- reg0=>reg2 間の制約が 2 サイクル分 define_multicycle_path -to {i:reg2} 4 -- reg0=> reg2, reg1=> reg2 間の制約が 4 サイクル分 define_multicycle_path -from {i:reg0} -to {i:reg2} 2 -- reg0=> reg2 間の制約が 2 サイクル分 define_multicycle_path -from {i:reg1} –through {n:net0} 3 -- reg1=> reg2 間の制約が 3 サイクル分 6.3 インプリ関連の制約記述 6.3.1 IO レジスタのアサイン デフォルト設定では PIO レジスタにアサインできる構成になっているレジスタ全てに、 自動的に PIO レジスタが使用されます。sdc に以下の制約を記述することで、PIO レジスタを使用しない様に設定 することができます。 -- Single bit の場合 define_attribute {p:ポート名} {syn_useioff} {0} -- バスの場合(全 bit に適用) define_attribute {p:ポート名[*]} {syn_useioff} {0} -- バスの場合(特定 bit のみに適用) define_attribute {b:ポート名[index]} {syn_useioff} {0} 6-30 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 なお、双方向ピンやトライステート制御つき出力ピンの場合、入力/出力/トライステート制御レジ スタ全てが一括で制御されます。特定のレジスタのみ PIO からはずしたい場合は、このオプションと インプリ時の制約[USE DIN]または[USE DOUT]制約と組み合わせて使用してください。 この制約は HDL ソース内に記述することも出来ます。記述方法等については Synplify の help(4 章 参照)ドキュメントを[syn_useioff]で検索してください。 6.3.2 シフトレジスタの合成スタイル設定 デフォルト設定の Synplify では、シフトレジスタの記述を見つけると分散 RAM とアドレス制御回路 に置き換えてしまいます。 図 6-8 シフトレジスタの論理合成結果 これにより、多くの場合リソース数を減らすことが出来ますが、タイミング要求の厳しいパスでは制 約を満たせない場合もあります。その場合、以下のような制約を追加することでこのような変換を防 ぐことが出来ます。 -- デザイン全体に適用する場合 define_global_attribute syn_srlstyle {registers} -- 個別レジスタに適用 define_attribute {オブジェクト} syn_srlstyle {registers} この制約は、HDL ソース内で記述することも出来ます。記述方法等については Synplify の help(4 章 参照)ドキュメントを[syn_srlstyle]で検索してください。 6-31 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 6.3.3 演算回路の合成スタイル設定 デフォルト設定の Synplify では、演算回路(加減算および乗算)の記述を見つけると自動的に DSP ブ ロックを使用します。 演算回路の数が多い場合、全てを DSP ブロックで実現すると数が足らなくなる場合があります。こ のような場合、DSP ブロックを使用しないように設定することで、DSP ブロックの不足を防ぐこと が出来ます。 -- デザイン全体に適用する場合 define_global_attribute syn_multstyle {logic} -- 個別の演算回路に適用 define_attribute {オブジェクト} syn_multstyle {logic}※ ※ DSP ブロックを使用する場合は{block_mult} この制約は、HDL ソース内で記述することも出来ます。記述方法等については Synplify の help(4 章 参照)ドキュメントを[syn_multstyle]で検索してください。 6.3.4 ステートマシンの合成スタイル設定 デフォルト設定の Synplify では、ステートマシンを見つけるとステート数等に応じて適当なエンコー ドを行います。また、基本的にイリーガル状態からの復帰回路は HDL に記述されていても合成され ません。 ステートマシンのエンコード方式を決める場合、またはイリーガル状態からの復帰回路を実装する場 合は、sdc ファイルに以下の様に記述します。 define_attribute {オブジェクト名} syn_encoding {エンコーディングスタイル} -- エンコーディングスタイル エンコーディングスタイルは以下の中から選択します。 ・sequential 各ステートをバイナリカウンタの値に割り当てます。比較的回路規模が小さくなります。 ・onehot 各ステートをワンホット・ステート・カウンタ(1bit だけ’1’、他は’0’)の値に割り当てます。ス テート数と同じだけのレジスタが必要になりますが、比較的高速に動作します。 ・gray 各ステートをグレイコードカウンタの値に割り当てます。比較的回路規模が大きくなります。 ・original 各ステートの値を HDL 記述の通りの値に割り当てます。 6-32 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 ・safe イリーガル状態からの復帰回路を実装します。他のエンコーディングスタイルと組み合わせて 記述することも出来ます(組み合わせる場合は[,]で区切る、記述の順番は問わない)。 この制約は、HDL ソース内で記述することも出来ます。記述方法等については Synplify の help(4 章) ドキュメントを[syn_encoding]で検索してください。 6.3.5 fanout 数の制限設定 デフォルト設定の Synplify では、fanout の最大値が 100 に設定されています。このため、fanout が 100 を超える場合、ドライバがコピーされ fanout が分散されます。fanout の制限を緩和する場合は、 sdc ファイルに以下のような制約を記述します。 define_attribute {オブジェクト名} syn_maxfan {fanout 最大値} この制約は、HDL ソース内に記述することも出来ます。記述方法等については Synplify の help(4 章 参照)ドキュメントを[syn_maxfan]で検索してください。 6.4 その他の制約記述 6.4.1 Compile point の設定 モジュールを Compile point 設定して合成すると、compile point 毎にデータベースが生成されます。 論理合成を行う際にはこのデータベースを参照し、変更されているソースファイルのみの合成を行い ます。このため、合成時間の短縮になります。 コンパイルポイントを設定する場合は、sdc ファイル内に、以下の様な制約を記述します。 define_compile_point {v:ライブラリ名.モジュール名} -type {コンパイルポイントタイプ} ライブラリ名はデフォルトでは work です。 コンパイルポイントタイプは、モジュール間の接続部分の合成に関する設定で、[soft][hard][locked] のなかから1つを選択します。 図 6-9 コンパイルポイントタイプによる最適化の違い 6-33 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 [soft]を選択した場合は、モジュール間の接続分の回路をまとめて最適化します。[hard]を選択した場 合、接続部分の回路を compile point 毎に個別に最適化を行います。[locked]を選択した場合は、接続 部分の最適化は行われません。 6.4.2 ネットリストの階層展開 デフォルト設定の Synplify では、合成後のネットリストをオリジナルの階層を保持したまま出力しま す。階層を展開したネットリストを出力させる場合は、sdc ファイルに以下のような制約を記述しま す。 define_global_attribute syn_netlist_hierarchy 0 この制約は、HDL ソース内に記述することも出来ます。記述方法については Synplify の help(4 章参 照)ドキュメントを[syn_ netlist_hierarchy]で検索してください。 なお、この設定はネットリストの出力に関する設定で、合成は階層ごとに行われます。 7 LDC ファイルの設定 7.1 LDC エディタを使用した設定 5.1 項の方法で新しい LDC ファイルを作成すると、LDC エディタが起動します。 図 7-1 LDC エディタ LDC エディタでは、以下の設定を行うことが出来ます。 ・クロックの周期制約 (Clocks タブ) ・入力ポートの最大入力遅延制約 (Inputs/Outputs タブ) ・出力ポートの最大遅延制約 (Inputs/Outputs タブ) ・特定パスのフォルスパス制約 (Delay Paths タブ) ・特定パスの Multi cycle パス制約 (Delay Paths タブ) ・特定パスの最大遅延制約 (Delay Paths タブ) 6-34 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 クロック周期設定 クロック周期設定は Clocks タブで行います。Source 欄をクリックすると、デザイン内のクロック のリストが表示されます。この中から制約を設定するクロックを選択します。Clock Name 欄には、 任意のクロック名(LSE 内でのみ使用する alias、必須)を、Period(ns)欄ではクロック周期を入力し ます。クロック周期の単位は ns です。 図 7-2 LDC Editor でのクロックタイミング制約設定 入力ポートの最大遅延制約 入力ポートへのタイミング制約として最大遅延(クロックエッジから入力データ確定までの遅延、図 7-3)を設定することが出来ます。 図 7-3 入力遅延 入力遅延の設定は Inputs/Outputs タブで行います(図 7-4)。入力遅延の設定では、一番左側の Type 欄で Input を選択します。 図 7-4 LDC Editor での最大入力遅延制約設定 6-35 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 Port 欄をクリックすると入力ポートのリストが、Clock 欄をクリックするとクロックポートのリス トが表示されるので、それぞれ制約の対象とするものを選択し、Value 欄に制約値を入力します。 出力ポートの最大遅延制約 出力ポートへのタイミング制約として最大遅延(クロックエッジから出力データ確定までの遅延、 図 7-5)を設定することが出来ます。 図 7-5 出力遅延 出力遅延の設定は Inputs/Outputs タブで行います(図 7-6)。出力遅延の設定では、一番左側の Type 欄で Output を選択します。 図 7-6 LDC Editor での最大出力遅延制約設定 Port 欄をクリックすると出力ポートのリストが、Clock 欄をクリックするとクロックポートのリス トが表示されるので、それぞれ制約の対象とするものを選択し、Value 欄に制約値を入力します。 マルチサイクルパス制約 特定パスへのタイミング制約としてマルチサイクルパス(複数クロックサイクルでのデータ転送)制 約を設定することが出来ます。 マルチサイクルパス設定は Delay Paths タブで行います。 6-36 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 図 7-7 マルチサイクルパス設定 マルチサイクル制約を設定する場合は、一番左側の Delay Type 欄で Multicycle を選択します。 From 欄および TO 欄をクリックすると制約の対象となるレジスタやネット名のリストが表示され るのでパスの始点(FROM)と終点(TO)を選択します。FROM/TO どちらかは省略することが出来 ます。また、指定したパスに複数の経路がある場合は、Through 欄でネット名を選択することで経 路を限定することもできます。Cycle 欄には制約値(クロック数)を入力します(Max delay 欄の入力 は不要)。 -----------------------------------------------------------------------------------------------------------------------------------------・Lattice Diamond1.4 ではマルチサイクル制約が期待通り適用されないため、使用しないでください。 ------------------------------------------------------------------------------------------------------------------- ----------------------- フォルスパス制約 特定パスをタイミング制約の対象から外すフォルスパス制約を設定することが出来ます。 フォルスパス設定は Delay Paths タブで行います(図 7-8)。 図 7-8 フォルスパス制約 フォルスパス制約を設定する場合は、一番左側の Delay Type 欄で False を選択します。From 欄お よび TO 欄をクリックすると制約の対象となるレジスタやネット名のリストが表示されるのでパス の始点(FROM)と終点(TO)を選択します。FROM/TO どちらかは省略することが出来ます。また、 指定したパスに複数の経路がある場合は、Through 欄でネット名を選択することで経路を限定する こともできます。Cycle 欄および Max delay 欄の入力は不要です。 6-37 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 Ver.2.2.1 最大遅延制約 特定パスに対して最大遅延制約を設定することが出来ます。最大遅延設定は Delay Paths タブで行 います(図 7-9)。 図 7-9 最大遅延制約 最大遅延制約を設定する場合は、一番左側の Delay Type 欄で Max Delay を選択します。From 欄 および TO 欄をクリックすると制約の対象となるレジスタやネット名のリストが表示されるのでパ スの始点(FROM)と終点(TO)を選択します。FROM/TO どちらかは省略することが出来ます。ま た、指定したパスに複数の経路がある場合は、Through 欄でネット名を選択することで経路を限定 することもできます。Maxdelay 欄には制約値(単位は ns)を入力します(Cycle 欄の入力は不要)。 ----------------------------------------------------------------------------------------------------------------------------- ------------- ・Lattice Diamond1.4 では最大遅延制約が期待通り適用されないため、使用しないでください。 ----------------------------------------------------------------------------------------------------------------------------- ------------- 6-38 UGJ-D06_Synthesis Lattice Diamond 論理合成のストラテジ設定と制約記述 2013 年 8 月 8 Ver.2.2.1 改訂履歴 バージョン Ver1.0 Ver1.1 Ver1.2 Ver1.3 Ver1.4 Ver.2.0 Ver.2.1 Ver2.2 Ver.2.2.1 リリース October. 2010 January.2011 改訂内容 ・初版リリース ・Lattice Diamond1.1 から LSE がバンドルされたことに伴い、以下 の点を修正 - 2 章のタイトルおよび内容の修正 -3.2.2 項に LSE の Strategy の説明を追加 -8 章に Lattice Diamond1.1 から Synthesis ツールとして LSE が 追加されたことを追記 ・3.2.1 項の Force GSR オプションの推奨に関する説明文を変更。 ・6.2.1 項の対象ツール名を修正(ispLEVER=>Lattice Diamond) ・ヘッダーから「Project Navigator」の文字を削除 ・2 章、LSE のサポートに関する記述をアップデート。 May.2011 ・2.3.2 項の LSE 使用の注意事項を削除 ・3.2.1 項に[ Command Line Options]と[Resolved Mixed Drivers] オプションの説明を追加。 ・3.2.2 項に[Command Line Options]オプションの説明を追加。 ・3.2.2 項の[FSM Encoding Style]オプションのデフォルト値を[Auto] に修正 ・8 章に LatticeDiamond 1.2 のアップデート情報を追加 ・3.2.1 項および 3.2.2 項から[Input SDC Constraint File]の説明を削 July. 2011 除。 ・3.2.1 項に[Output Netlist Format]と[Update Compile point Timing Data]オプションの説明を追加 ・5 章 Synthesis Preference(sdc ファイル)の管理方法の記述を追加 ・6.4.1 項に compile point オプションの説明を追加 ・8 章に LatticeDiamond 1.3 のアップデート情報を追加。 January.2012 ・2.1 項に選択できる合成ツールの制限に関する記述を修正。 ・7 章に LDC 設定方法の説明を追加 ・8 章に LatticeDiamond 1.3 のアップデート情報を追加 2013 年 1 月 ・Diamond 2.0 用にロゴ、フォーマットのみ更新 ・Doc.#: 旧 JTM08_005 新 UGJ-D06_Synthesis( “第 6 章“) (欠番) 2013 年 6 月 Diamond 2.1、2.2 リリースに伴う更新 ・2 章冒頭、MachXO/XO2 で LSE がデフォルトの記述 ・3 章、Synplify Pro 用ストラテジのオプション追加に関する記述追 加と、デフォルト値変更の各オプションに対する記述更新 ・8 章 Diamond 履歴削除 2013 年 8 月 ・p.6-25、 “アクティブ“に関する記述追記 6-39 UGJ-D06_Synthesis
© Copyright 2024 Paperzz