FC2カウンター FPGAの部屋 Re: FPGAでディレイ >>>保証なし
FC2ブログ

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

FPGAの部屋

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

Re: FPGAでディレイ >>>保証なし

間違って、タイミング制約が厳しくPlace & Routeが配線できないで、仮に配線したものでタイミングを見ていました。修正します。
------------------

mfreemanさんのページで今話題のFPGA内遅延素子の話題を載せていた。それによるとスパルタン3-400-5で4段のBUFプリミティブのディレイを入れると遅延は1.5ns程度だそうだ。タイミングアナライザで公式ディレイを確かめてみた。
ソースはmfreemanさんのソースを丸ごとそのまま、遅らす信号を入力ポートにして、遅れた信号を出力ポートとした。(3段ディレイ入り)入力ポートと出力ポートは、チップ上で隣のパッドとした。(FT256パッケージでC9とD9)
まずは何もタイミング制約を加えずにコンパイル。タイミングアナライザで見てみると、
Maximum delay is 7.982ns.
--------------------------------------------------------------------------------
Delay: 7.982ns (data path)
Source: in_port (PAD)
Destination: out_port (PAD)
Data Path Delay: 7.982ns (Levels of Logic = 5)
Constraint Improvement Wizard
Data Path: in_port to out_port
Delay type Delay(ns) Logical Resource(s)
---------------------------- -------------------
Tiopi 1.686 in_port
in_port_IBUF
net (fanout=1) 0.428 DIN_1
Tilo 0.529 u1
net (fanout=1) 0.211 DOUT_1
Tilo 0.529 u2
net (fanout=1) 0.060 DOUT_2
Tilo 0.479 u3
net (fanout=1) 0.266 DOUT_3
Tioop 3.794 out_port_OBUF
out_port
---------------------------- ---------------------------
Total 7.982ns (7.017ns logic, 0.965ns route)
(87.9% logic, 12.1% route)

次にディレイを抜いて、IN-OUT直結にする

Maximum delay is 5.766ns.
--------------------------------------------------------------------------------
Delay: 5.766ns (data path)
Source: in_port (PAD)
Destination: out_port (PAD)
Data Path Delay: 5.766ns (Levels of Logic = 2)
Constraint Improvement Wizard
Data Path: in_port to out_port
Delay type Delay(ns) Logical Resource(s)
---------------------------- -------------------
Tiopi 1.686 in_port
in_port_IBUF
net (fanout=1) 0.286 out_port_OBUF
Tioop 3.794 out_port_OBUF
out_port
---------------------------- ---------------------------
Total 5.766ns (5.480ns logic, 0.286ns route)
(95.0% logic, 5.0% route)

3段ディレイ回路のタイミングアナライザにより遅延の保証値は2.216ns。これをmfreemanさんの実測地1.5nsと比べてみると147%になる。これを見ると保証値は実測値の1.5倍になっているので、周期で2/3倍になるということ。つまり15nsが10nsになるので、66MHzのつもりが100MHzで動いちゃったということになら良いよね~!!
でも、結構差がある。
次に、タイミング制約をかけてみる。入力ポートから出力ポートまで7.4ns。
タイミング制約は、
INST "in_port" TNM = "in_port";
INST "out_port" TNM = "out_port";
TIMESPEC "TS_inout" = FROM "in_port" TO "out_port" 7.4 ns;


3段ディレイ入りは、

Maximum delay is 7.837ns.
--------------------------------------------------------------------------------
Delay: 7.837ns (data path)
Source: in_port (PAD)
Destination: out_port (PAD)
Data Path Delay: 7.837ns (Levels of Logic = 5)
Constraint Improvement Wizard
Data Path: in_port to out_port
Delay type Delay(ns) Logical Resource(s)
---------------------------- -------------------
Tiopi 1.686 in_port
in_port_IBUF
net (fanout=1) 0.294 DIN_1
Tilo 0.529 u1
net (fanout=1) 0.014 DOUT_1
Tilo 0.479 u2
net (fanout=1) 0.296 DOUT_2
Tilo 0.479 u3
net (fanout=1) 0.266 DOUT_3
Tioop 3.794 out_port_OBUF
out_port
---------------------------- ---------------------------
Total 7.837ns (6.967ns logic, 0.870ns route)
(88.9% logic, 11.1% route)

と少しばかり速くなっている。しかし、DOUT_1が0.014nsなのに、DOUT_2が0.296nsもかかっているのはなぜ?同じようなルートなのに。。。FPGA Editorで見たインスタンスの配置はこれ。
spartan3_buf3_ins.jpg


IN-OUT直結は、
Maximum delay is 5.766ns.
--------------------------------------------------------------------------------
Delay: 5.766ns (data path)
Source: in_port (PAD)
Destination: out_port (PAD)
Data Path Delay: 5.766ns (Levels of Logic = 2)
Constraint Improvement Wizard
Data Path: in_port to out_port
Delay type Delay(ns) Logical Resource(s)
---------------------------- -------------------
Tiopi 1.686 in_port
in_port_IBUF
net (fanout=1) 0.286 out_port_OBUF
Tioop 3.794 out_port_OBUF
out_port
---------------------------- ---------------------------
Total 5.766ns (5.480ns logic, 0.286ns route)
(95.0% logic, 5.0% route)

こっちは同じ。FPGA Editorで見たインスタンスの配置はこれ。
spartan3_inout.jpg


さて、差は7.837-5.766=2.071ns。実測値1.5nsの138%。タイミングアナライザで保証された最大遅延が15nsならば11nsで動くという分けだ。66MHzが92MHzくらい。少し短縮したが、まだまだ離れている感じ。
最後におまけ。今までは、OUTポートのスルーレートはSLOWだったがFASTにしてやってみた。タイミング制約はあり。
3段ディレイ入り

Maximum delay is 5.314ns.
--------------------------------------------------------------------------------
Delay: 5.314ns (data path)
Source: in_port (PAD)
Destination: out_port (PAD)
Data Path Delay: 5.314ns (Levels of Logic = 5)
Constraint Improvement Wizard
Data Path: in_port to out_port
Delay type Delay(ns) Logical Resource(s)
---------------------------- -------------------
Tiopi 1.686 in_port
in_port_IBUF
net (fanout=1) 0.294 DIN_1
Tilo 0.529 u1
net (fanout=1) 0.014 DOUT_1
Tilo 0.479 u2
net (fanout=1) 0.296 DOUT_2
Tilo 0.479 u3
net (fanout=1) 0.266 DOUT_3
Tioop 1.271 out_port_OBUF
out_port
---------------------------- ---------------------------
Total 5.314ns (4.444ns logic, 0.870ns route)
(83.6% logic, 16.4% route)

やはり格段に速くなった。出力バッファの遅延時間は3.794-1.271=2.523nsも違う。
東エレのDDR SDRAM2セミナでも、LUTを遅延素子としてデータを遅延するやり方が紹介されていたし、やはりこういうやり方もありなんだと思った。でも、確実に遅延を調整するにはやはりFloorplannerで位置固定が望ましいのであろう。。。

後で自分でも遅延を測定して、タイミングアナライザの値と比べてみたい。
  1. 2005年10月14日 21:28 |
  2. FPGAチップ内の配線方法
  3. | トラックバック:0
  4. | コメント:6

コメント

さすが詳しくてよくわかります。
>差は7.317-5.580=1.737ns。実測値1.5nsの116%・・・シンセシスのプロパティーは速度優先でしたのでこちらが近いです。
>遅延するやり方が紹介・・・・裏技なように思いますが現実はこんなもんかもしれません。早いようにも(二世代ほど前のPLDとくらて)、まだまだという感じもあり複雑です。
位置固定は必須でしょうね。
  1. 2005/10/15(土) 01:24:05 |
  2. URL |
  3. mfreeman #rQKT5Rcw
  4. [ 編集 ]

非常にタイムリーな話題だったので、暴走気味でした。タイミングアナライザで遅延調べるとどの位になるのかが、知りたくて、しょうがなくなって調べてみました。
私は、ずいぶん入出力が早いなと思いました。スルーレートをFASTにすると、最速で遅延値が3nsです。実際はどうでも、これがカタログ値ですよね。
  1. 2005/10/15(土) 06:02:04 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

思い込みで間違った記述をしていました。ごめんなさい。
さてリングオシレータを構成して実測した結果をmyブログにのせてありますが、温度特性はいいようです。
  1. 2005/10/17(月) 20:48:34 |
  2. URL |
  3. mfreeman #rQKT5Rcw
  4. [ 編集 ]

拝見させていただきました。とても興味深く面白かったです。タイミングアナライザで計った結果をコメントとして投稿させていただきました。
自分でも遅延を計ってみようと思っています。
  1. 2005/10/17(月) 21:16:15 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

1回目の>9段で86.2MHzは別基板での値ぽいです。もしそうだとするとけっこう個体差(電圧差?)があるかも(^_^;
明日再測定といっても2枚しか手元にないのですが計ってみます。当社の応用ではこの程度なら他で吸収できるので実用範囲ですがもっとはずれるようだと使えません。
  1. 2005/10/17(月) 21:49:35 |
  2. URL |
  3. mfreeman #rQKT5Rcw
  4. [ 編集 ]

そうですか。
発信周波数はMAPやP&Rのオプションなどで、変わってきちゃうし、他の回路を入れても変わってきてしまうでしょうから、配置固定したほうが良いと思います。
  1. 2005/10/17(月) 22:11:51 |
  2. URL |
  3. marsee #-
  4. [ 編集 ]

コメントの投稿


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

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