01signal.com

I/O timingの戦略の選択

このページは、 timingに関する一連のページに属しています。前のページでは、 timing 計算の背後にある理論を説明し、いくつかの timing constraints を記述する方法を示し、 timing closureの原理について説明しました。このページは、 I/O timing constraintsに関する議論を開始します。

序章

この時点まで、 timing constraints に関する全体的な議論は、 FPGA内にある paths に関連していました。いよいよ FPGAの I/O portsの timing を制御する constraints のお話です。

ただし、 timing constraintsについて説明する前に、 FPGA と外部コンポーネントを同期するためのさまざまな方法について知っておく必要があります。このトピックを考慮せずに書かれた Timing constraints は価値がないかもしれません。さらに、 I/O インターフェイスを担当する logic が不適切に記述されている可能性があります。極端な場合、 PCB には、動作が保証されている I/O を可能にするために必要な配線がない場合があります。

外部コンポーネントとの同期を意識する必要があるため、 timing constraintsの正しいコマンドを選択することができます。そのための実践的な側面を次のページで説明します。

このページでは、 IOB registersについてご存知であることを前提としています。

Clock distribution

paths が FPGA内にある限り、 pathの両側の間にある clock skew を認識する必要はありません。 clockの分布はツールが担当し、 timing の計算では clock skew が考慮されました。

I/O timing constraintsの場合は異なります。 path の片側は、 FPGAの外部コンポーネントです。 data signalsと同期するために、このコンポーネントは pinsの 1 つで受信する clock に依存しています。しかし、この clock は何と同期していますか?

戦略は通常、次の 2 つのいずれかです。

これら 2 つの戦略については、次に詳しく説明します。 source-synchronous clock オプションに関しては、 data signals が inputs と outputsの場合、大きな違いがあります。したがって、これらのシナリオについては個別に説明します。

System synchronous clock

PCB で複数のコンポーネントを同期する最も簡単な方法は、すべてのコンポーネントを 1 つの clockに接続することです。これはsystem synchronous clock (またはcommon clock ) と呼ばれます。

System synchronous clocking

この方法の利点は、すべてのコンポーネントの timing パラメータが 1 つの clock signalに対して相対的であることです。したがって、 timing 計算を行うために、 clock は両側で同じです。したがって、 PCB上の 2 つのコンポーネント間で伝播する data signal の場合、計算は FPGA内の path と同様です。 path は、最初の clock edgeに相対的な clock-to-output で始まります。 pathの最後では、 tsu は 2 番目の clock edgeに相対的です。 system synchronous メソッドは、これら 2 つの clock edges が同じ clockに属することを意味します。

したがって、 system synchronous clock での作業は簡単ですが、この方法は比較的低い周波数にのみ適しています。 timing 計算の概要から、最小の clock period はいくつかの timing パラメータの合計であることを思い出してください。 最初の flip-flopの clock-to-output 、2 番目の flip-flopの propagation delay および tsu 。 output portの場合、 clock-to-output は比較的大きくなります。これは、 PCBのワイヤが必要な電圧に達するまでにかかる時間の長さだからです。しかし、それだけでは終わりません: clock skew および clock に関連するその他の不確実性も追加する必要があります。すべての数値を合計すると、最小限の clock period は印象的ではないかもしれません。

経験則として、 system synchronous clock は、 100 MHzよりも高い data rate を使用する I/O には適していません。しかし、これはどのコンポーネントが関係しているかに大きく依存します。実際、一部の電子部品には timing の要件があり、 system synchronous clockでは、はるかに低い周波数であっても満たすことが非常に困難です。このようなコンポーネントは、 PCBを製造する前に I/O timing を計画することが重要である理由の 1 つです。

set_input_delay と set_output_delay (次のページで説明します) は、 system synchronous clockと組み合わせて使用するのに最適な timing constraints です。

Source-synchronous clock

多くの場合、 PCB 上の 2 つのコンポーネント間のインターフェースは、これらのコンポーネントの 1 つによって提供される clock に基づいています。当然、 clock が FPGA によって生成されるか、外部コンポーネントによって生成されるかによって違いが生じます。

したがって、4 つの関連するシナリオがあります。

Asynchronous inputs

一部の inputs は clockに関連付けられていません。たとえば、 pushbuttons、 I2C、 RS232 、および外部コンポーネントからのさまざまな status signals は、 clockと同期されません。これらの signals は通常、 FPGA内の clock よりもはるかに低速です。したがって、通常の解決策は、これらの signals を flip-flops (できればIOB registers ) でサンプリングし、通常の logic design 手法を続行することです。

これらの inputs は、サンプリングに使用される clock と同期していません。したがって、 IOB register (または portに接続された flip-flop ) はmetastability guardsの役割を果たします。したがって、 unrelated clocks間のclock domain crossingと同様に、 portごとに 2 番目の register を使用する必要があります。そうしないと、 input signals が遅く、現時点では design が適切に動作しているように見えても、予測不能で奇妙な動作が発生するリスクがあります。

timing constraints は、再現可能な動作を保証するように記述する必要があります。 flip-flops が IOB内に配置されていない場合でも、IOB registersと同じガイドラインに従う必要があります。さらに安全を期すために、これらの registersの metastability guards としての役割に関連して、専用の timing constraint も追加することをお勧めします (別ページで説明)。

False paths

I/O ports のFalse paths は、原則として FPGA内の paths と同じです。 set_false_path コマンドは、特定の portsに対して timing 要件が適用されないように要求するために使用されます。

False paths は、 FPGAの内部にある paths に関して既に説明されています。同じ理論的根拠に基づいて、 I/O ports の false paths の背後にある動機は、主に unconstrained pathsの空のリストを維持することです。間違いにより port に timing constraints がない場合に識別しやすくするために、このリストは空にする必要があります。

False paths は、 port の timing がまったく意味がない場合にのみ使用してください。たとえば、 LEDs と DIP switchesを使用します。

SDC constraintsの例:

set_false_path -to [get_ports led_0]
set_false_path -from [get_ports dip_switch_0]

概要

このページでは、 FPGA と外部コンポーネントを同期させるためのいくつかの戦略について概説しました。選択した戦略は、 logic design だけでなく timing constraintsにも影響を与えます。

この知識があれば、 I/O timing constraintsの書き方について説明します。

このページは英語から自動翻訳されています。 不明な点は元のページを参照してください。
Copyright © 2021-2024. All rights reserved. (6f913017)