« XVCサーバを作る(1) | トップページ | 祝日なのに・・・ »

2017.07.11

MITOUJTAGでDDR3メモリ基板の不具合を発見

あるお客様からの依頼で、DDR3を搭載した基板のデバッグをすることになりました。

いわゆるコンサルティングのご依頼です。

DDR3メモリを搭載した基板のキャリブレーションが終了しない(init_doneが立ち上がらない)とのことなのですが、確かに動きません。MIGの設定で数か所間違いはあったものの、直しても動きません。

クロック速度を下げても、データバス幅を狭くしても動かきません。オシロで見た感じでは波形の反射とかでもなさそうです。

普通ならここであきらめるしかないのですが、特電は違います。

MITOUJTAGがあります。

MITOUJTAGを使うと、FPGAの動作状態にかかわらず、JTAGを使って端子だけを操作するという強力なデバッグができるからです。

しかも、MITOUJTAG Proには、C言語のスクリプトを使って波形を作り出す機能があり、DDR3メモリの波形パターンを作るライブラリも用意されています。

Mjpro

FPGAを論理合成して動かす普通のやり方だと、規定された標準的な信号パターン以外は出せません。たとえば、DQSの配置が間違っていたり、配置できないピンにつないでいたりすると、どうしようもありません。

ところが、C言語でソフトウェア的にI/Oの端子を動かすのであれば、どのようなパターンでもFPGAから出力できます。

sun

そこで、まずはツール自体の動作をテストするために、確実に動作する特電のKintex-7ボードを使ってMITOUJTAGのスクリプトを試してみました。

1478579840_cosmok

DDR3メモリのテストのやり方は、

  1. データバスを1本1本Hにした書き込みを行ってデータバスのオープン/ショートを発見する
  2. その後、アドレスバスを1本ずつHにした書き込みを行って、アドレスバスのオープンショートを発見する

というものです。

実際には下の図のようなパターンを作り出します。波形の赤いところは出力している信号、緑は入力している信号です。

Ddr3_ok

このとき、コンソールには

Dq_path

と表示されます。

sun

次に、お客様の基板でやってみると、データバスのうち何本かで読みだしたデータが常にLになっていて、断線してることがわかりました。

Dq7_err

DQ7が切れていたので8bitに縮退させても動かなったのです。

そこで、中間のDQ[39:8]だけを使って32bitに縮退させたデザインをMIGで作って動かしてみると、問題なくDDR3 SDRAMが起動することが確かめられました。

FPGAを普通に動作させて、動作中の状態をバウンダリスキャンで見てみると、ちゃんとinit_doneの信号が上がるのがわかります。ちゃんと1600MT/sで動作しています。

Calib_done_2

どうやら基板のパターンの不具合のようでした。

エンドユーザさんに聞いたところによると、この問題でもう数か月止まってしまっているとのことでした。MITOUJTAG ProのJTAGスクリプト機能とDDR3ライブラリを使うことで、長い間かかっていた問題が、わずか1日で解決できました。

MITOUJTAGについて、詳しくはこちら↓をご覧ください。

http://www.tokudenkairo.co.jp/jtag/

|

« XVCサーバを作る(1) | トップページ | 祝日なのに・・・ »

コメント

コメントを書く



(ウェブ上には掲載しません)




« XVCサーバを作る(1) | トップページ | 祝日なのに・・・ »