FC2カウンター FPGAの部屋 2006年08月

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

FPGAの部屋

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

FPGAから供給するクロックの位相

今度の基板はSDRAM2系統、PowerPC1系統のクロックをFPGAから供給している。最近のお仕事でも書いたがそのクロックを計測してみるとかなりずれていることがわかった。回路的には下の図のような回路になっている。
clk_curcit_figure_060831.png

これはSDRAMの1系統だがもうSDRAM1系統とPowerPCのクロック系統がある。これらのクロック出力が予定のクロック位相よりもずれてしまったので、各クロックの位相をDCMでシフトして合わせた。(最近のお仕事参照
これは何でかと考えるとPLL専用ICと違ってクロック入力パッドからDCMまでの遅延とフィードバック入力パッドからDCMまでの遅延がかなり違っているようだ。その辺も考えて入力クロックと出力クロックが0ディレイになるように、または、規定の遅延になるようにDCMの位相シフト量を調整しないといけないようだ。この場合は当然ながらDCMとBUFGMUXの位置(出来れば配線も?)固定しておかないと出力クロックの位相が正確に決定できないと思う。ただいま解析中だ。
なかなか子供の付き添いがあってブログも書く暇がないのがもどかしいが、自分の備忘録でもあるので書いてみたい。
  1. 2006年08月31日 21:24 |
  2. FPGAからクロック出力
  3. | トラックバック:0
  4. | コメント:0

アスベスト除去工事

うちの職場でも今話題のアスベスト除去工事をしている。部屋の荷物を運び出して、1.5m位のところに足場を組み、ビニールで養生して除去している。なにか吹き付けて飛散しないようにして除去するのだろう。
作業する人は完全防護服を来て、部屋を陰圧に保つため部屋からフィルタを通して空気を排気しているようだ。部屋の前にはエアロックみたいに完全防護服を着脱?するためのビニール部屋みたいのを仮に作ってある。
それは良いのだが、結局下に出たゴミは開放空間で防護服も着ないで掃除機で吸っている。大丈夫なのだろうか?
さらに上の天井のアスベスト除去なので蛍光灯やパイプの上に付着しているはずだ。掃除したとしても完璧はないはずである。
10月ごろ今除去している部屋に入るのだが、とても心配だ。かえって除去しないほうが良いのではないだろうか?何かで固めたほうが良いと私には思われる。
  1. 2006年08月30日 21:33 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

ポルトガルからの知人

今日は8月初めからポルトガルから日本に来ている知人夫妻(日本人です)がつくばに来たので、教授と院生のA氏と一緒にお食事をした。
4年前にポルトガルに行ったときにマンションに止めてもらって、ポルトガルを案内してもらい大変お世話になった
年に2回くらい来日しているが、いつも楽しい話を聞かせてくれる。ある業界雑誌及び本の筆者として有名な人でもある。
今日はいろいろ話が出来て楽しかった。オフレコの話もあったが。。。
明日英国航空でヒースロー経由で帰るそうだ。パソコンを持ち込みできるのかと言ったら、今は機内手荷物で持ち込めるそうである。

ある方面の人が見れば、誰だかわかってしまうんでしょうね。。。
  1. 2006年08月28日 22:45 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:2

PowerPCが動き出した

やっとPowerPCが動作したようだ。以前書いたようにSDRAMやPowerPCのクロックの位相を調整した。(これが効いているかどうかはわからないが。。。)
もう1つはアドレス転送のパイプライニングで最大2エントリから最大16エントリに変更したが、そこの回路が間違っていた。
さらにブートコードにも一部誤りがあったようだ。
それにしても7447AはFFF00100のスタートアップからキャッシュもOFFなのにバーストアクセスだった。びっくりした。603eはシングル転送だったので、当然そうだと思っていた。しかも64ビット幅で4ビートアクセスでキャッシュフィルと同様に見えるのだが、どうやらそのうちの2ビートしか使っていないようだ。アドレスで言うと000002020番地からの4ビートアクセス(インストラクションフェッチ)の後に000002030番地の4ビートアクセスが出ている。キャッシュフィルならば000002020番地からの4ビートアクセスすると000002030番地からの4ワード分もフェッチしているはずなのに、その分は捨てているのだろうか?
当然000002030番地の4ビートアクセスの場合に、うちの回路で3,4ビート目は000002020番地にラップアラウンドしている。
  1. 2006年08月25日 23:12 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

人間ドックに行ってきました

今日は人間ドックに行ってきた。
やってきた項目は次の通り。

1.胸のレントゲン
2.眼底検査
3.血圧
4.眼圧
5.身長、体重
6.視力
7.聴力検査
8.血液検査
9.内科医診察
10.尿検査
11.超音波診断(腎臓とか肝臓とかだと思う)
12.肺活量検査
13.胃の内視鏡検査


やはり中でも胃の内視鏡検査が鬼門だった。最初に胃の泡をとる薬を飲んで、どろどろの麻酔薬をのどに1分間とめて飲み込むのだが、それがまずいというか気持ち悪い。次に胃の動きを抑える筋肉注射をする。
さらにやる前にキシロカイン(麻酔薬)を口の中にスプレーする。口にマウスピースを噛んで内視鏡を入れるのだが、のどの奥を通る時にげーとする。やっている間は自分でもモニターが見えるので胃の中が一目瞭然だが、苦しい。時々げーとなる。特に十二指腸を見るときが胃が押されている気がしていやだ。
胃及び食道の状態は大丈夫だそうだ。胃の奥には出血の後がぽちぽちとあったが軽いもので特に問題はないそうだ。最近、子供の痛がるのを見て胃が痛くなっていたのでそれだろう。
胃の内視鏡をやった後で息子の病院に行って水を1口飲んだら、ドット汗が出てきて気持ち悪くなってしまった。ちょっとしたショック症状になって様だ。急遽家に帰ったが倒れるように寝てしまった。吐く寸前だった。しばらく寝ていたら具合が良くなり、バナナを食べて水が飲めたので回復した。良かった。
私はいつも内視鏡をやると具合が悪くなる。胃のバリューム検査でもだめだ。特異体質なのだろうか?
しかし、何かの項目でひっかるきがしてならない。
  1. 2006年08月24日 21:10 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

最近のお仕事

まだPowerPCを動かそうとやっているがなかなかうまく動いてくれない。
FPGAから出力しているクロックの位相がおかしいのかと思ってテストしてみることにした。やり方はFPGA Editorを使って、各クロックのフィードバック入力ピンをテストポイントにつないでオシロスコープでPCIXの入力クロック(これもテストポイントに出力している)に対する各クロックの位相と比較してみた。
このままではテストポイントの各クロックのテストピンに行くまでの配線遅延が違っていて比較が難しいので次の手順で行った。

1.各クロックの入力パッドから出力パッドまでの遅延量をTiminig Analyzerで出した。
2.1.の値を実測値から求めた係数をかけて実力値にした。
3.PCIXクロックの出力との差分をとった。
4.実際の位相ダイアグラムに従って補正した。


4.の値をオシロスコープで測ったPCIXクロック出力との差分と比べるとかなり違っていたので、DCMの位相シフトをFPGA Editorで変更して予定していたクロックの位相ダイアグラムに合わせてみた。でもまだおかしい。PowerPCのアドレス転送のキューを2深度から16深度に変更するために新たにFIFOを付け足したのでそこがおかしいのかもしれない。Chipscopeの波形を解析することにした。
それでもDCMの位相シフトをFPGA Editorで変更したときの位相シフト量(PHASE_SHIFT)がおかしいような気がする。テストピンの波形をオシロスコープで見ていると、普通はクロック1周期を256で割った数をPHASE_SHIFTにセットするはずが、128で割った数をセットするとぴったりになるようだ。なんでだろうか?周波数が高くてタップの遅延値を越えているからだろうか? PHASE_SHIFTの1ごとに59psなのでもしかしたら無理なのか? たかが66MHzで1周期分遅延素子もないのに。。。アンサーを見てみよう。

最後に実際の遅延量は以前ブログで紹介したFPGAの性能に基づいて計ってみた。ディレイは3段だが。。。結果は0.82だった。

なかなか病院に息子の付き添いに行かなくちゃいけないのでなかなかデバックが進まない。この経過も後で詳しくやり方をブログに書こうと思う。

(2006.08.28追記)
やはりPHASE_SHIFTはミスってました。PCI66MHzにしたつもりが極性を間違ってPCI33MHzになっていました。つまり33MHzだったので移送シフト量が2倍になっていたようです。ということはDCMはクロック周期を自分で確認できて位相シフト量を決めていることになると思います。そうなんだ!!!
  1. 2006年08月24日 05:55 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

申し訳ないがTED Processor Seminar 2006は不参加

子供の付き添いをしなければいけないのでTED Processor Seminar 2006は不参加にしようと思っている。
申し訳ないが参加はキャンセルすることにするので、よろしくお願いします。また、他のセミナーに参加する際にはお会いいたしましょう。
今日も仕事を5時30分頃に終わらせてから、8時30分まで子供の付き添いで奥さんと交代したのだ。最近は子供と遊戯王カードをやっている。子供が遊戯王カードが好きなので、何とか友達の変わりに相手をしてあげようと、子供に教えてもらってやっていたのだが、ルールもわかってなかなか面白くなってきた。
勝敗は大体五分五分と言ったところか。。。自分用(といっても子供が喜ぶようにだが)戦士族のストラクチャーデッキを買って来て、子供の風属性ストラクチャーデッキと対戦している。子供はそのほかにファーストデッキを持っているが、枚数が多いのでなかなかすぐに出せるモンスターカードが手札に回ってこないのでやりにくい。高級モンスターはそろっているのだが。。。小さい頃、アニメを見て集めたのでしょうがないのだろう。
今日は遊戯王の"MASTER GUIDE"をセブンアンドワイで注文した。1,200円なのでアマゾンで買うと送料取られることになる。それはいやなので、1,500未満の時はセブンアンドワイで注文している。
  1. 2006年08月21日 21:47 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:2

FC2ブログアクセスランキング コンピュータ部門で49位でした

FC2ブログアクセスランキング コンピュータ部門を見てみたら、私のブログ(FPGAの部屋)が49位に入っていた。昨日の閲覧回数は728回だった。
こんなマイナーな話題のブログにアクセスが来てくれてうれしい。なんかランキングに入るとうれしいもんだ。
FC2_blog_ranking_060819.png


大体ISEの使い方も書くことがなくなって来た。バージョンによってかなり変わっているところもあるのでその辺も書きたいと思っているが。。。fpga-lab.orgさんの徒然日記で知ったのだがKyoshowさんのChipscopeの使い方はよく書き込んである。これだけ画面をキャプチャして解説を書くのは大変だったろう。。。トリガをシーケンスでかけるやり方は知らなかったので今度やってみようと思う。Chipscopeのマニュアルも日本語で出たし、一回熟読して使い方を再度調べてみようと思う。かなりChipscopeは使い込んではいるがまだまだ知らないことも多いと思う。
いろいろな複雑な条件でのバグだとやはりChipscopeのトリガ条件だけでは限界がある。その場合には検出回路を加えているがそれがどこまでいらなくなるかやってみたい。例えばPowerPCのTSが100usの間出なかったらトリガしたいという条件の時はChipscopeだけのトリガでは無理ではないか?

(追記)
今サーチワードを見てみたらかなり夏休みの自由研究で検索されているようだ。それでか。。。orz
まあそれでも良いけど。。。
  1. 2006年08月19日 06:04 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:7

DCMの位相シフト量の変え方

今回はFPGA EditorでDCMの位相シフト量を変更してみよう。
DCMではFPGAの中および外に出力するクロックを生成している。その位相関係の都合が悪い場合に位相シフト量を変更したいということがある。今まではもう一度論理合成、インプリメント、BitgenをしていたがFPGA Editorで変更するとお手軽である。
まずはISEのProcessesペインからFPGA Editorを起動する。
FE_DCM_PS_change_1_080813.png

最初にFPGA EditorをRead/Writeモードに設定しよう。
"File" - "Main Properties..."を選択する。
FPGA_Editor_10_060318.png


Main Propertiesダイアログが立ち上がる。
FPGA_Editor_11_060318.png


"General"タブが選択されていて、その中の"Edit Mode"が"No Logic Changes"が選択されていると思うが、ここのプルダウンメニューから"Read Write"を選ぶ。これでFPGA Editorで編集が出来るようになった。
FPGA_Editor_12_060318.png

次にList1ウインドウで位相シフト量を変更したいDCMを選択する。
FE_DCM_PS_change_2_080813.png

FunctionボタンのうちF11を押すとそのDCMがハイライトされる。
FE_DCM_PS_change_3_080813.png

その状態で右端のeditblockボタンをクリックする。
FE_DCM_PS_change_4_080813.png

DCMのBlockウインドウが立ち上がるのでピンクの四角で囲んだ"Show/Hide Attribute"ボタンをクリックする。下に属性が示されるので位相シフト量が変えたければPHASE_SHIFTの値を変更する。変更したら青の四角で囲んだ"Save Changes and Close Window"ボタンをクリックする。そうすると変更内容がセーブされる。
FE_DCM_PS_change_5_080813.png

上のウインドウではDCMのすべて属性が設定変更できるので便利なのだ。
これでDCMの変更が出来たので"File"メニューから"Save"を選択してセーブしてFPGA Editorを終了する。
ISEのProcessesペインを見てみると"Generate Programming File"の項目がになっていると思う。
FE_DCM_PS_change_6_080813.png

"Generate Programming File"をダブルクリックして起動するとパラメータを修正したDCMになったビットファイルが出来る。
FPGA EditorからもBitGenでビットファイルを作れるが、いろいろオプションを入れるのが面倒なのでISEからビットファイルを作ったほうが簡単なようだ。事実うちのプロジェクトではFPGA EditorからもBitGenでビットファイルを作ったのだが、オプションが足りないのかうまく行かなかった。
後は以前紹介したプローブをテストピンに接続する方法でテストピンに信号を出してオシロで波形観察している。配線遅延は換算しないといけないがBGAの信号をお手軽に観察できてとても便利だ。
  1. 2006年08月13日 21:17 |
  2. FPGA Editorの使い方
  3. | トラックバック:0
  4. | コメント:0

新しい基板のデバック2

PowerPCプロセッサのTT(Transfer Type)の話をしてきたがTT="00011"の状態が出たのでChipscopeの画面を示します。JTAG ICEでRUNしたときの波形です。
PPC_TT_060811.png

でも今良く見てみると怪しいかも、FPGA Editorでみるとネットからつながっていないように見える。要調査。
原因がわかったようです。TT[3],TT[4]にピンアサインを忘れていてどっか他のピンに行っていて1固定だったようです。修正しました。お騒がせしました。いつもどたばたで面目ない。デバックの模様を載せると信用失墜につながるかしら?でもいつもこんなもんだし。。。

それとは別に回路のバグもわかってきた。EC603eはアドレス転送が2つのアドレス転送しかキューにためなくて良いが7447Aは16個キューにためられるようにしなければならないということだ。今までキューのエントリは2だったが16にしなければ行けない。
回路を修正する。これで動くと良いな。。。
  1. 2006年08月11日 21:07 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

新しい基板のデバック

引き続き新しい基板のデバックをしている。このブログで書いた”FPGA Editorの使い方3”で書いたプローブを空いているピンに出すやり方でテストピンにクロックを出力したりしてデバックしている。ほとんどBGAパッケージなのでオシロのプローブをかけるところがない。信号がほとんど見られないから必須なのだ。ちなみにここのダイアログでBitGen...でビットファイルを生成できるが、オプションをたくさんつけなくちゃいけないと面度だ。FPGA Editorでセーブして、前に紹介したISEの"Processes"ペインからと"Generate Programming File"をダブルクリックしてビットファイルを生成してやるのが良いようだ。ただし見ている信号に配線遅延が入るのでそれを換算してみなければいけない。
実はこれでクロックのフィードバック(FB)のピンが違っているのがわかった。プローブでてスピンにつないでもクロックが出てこない。どうもおかしいと思ったらクロックのフィードバックがUCFから抜けていて、違うピンに行っていた。面目ない。明日は全部UCFのピンアサインをチェックすることにする。
後、DCMのフェーズシフトをFPGA Editorで変えてやってみたが便利だったので後で紹介したい。今は忙しいのでちょっとやっている暇がないが。。。
  1. 2006年08月10日 21:28 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

新しい基板が届きました3

PowerPCの60XバスにChipscopeをかけてみてみたところブート時のスタートアドレスFFF00100からちゃんとアクセスしていることがわかった。だがそのTransfer Typeが今までサポートしていなかったタイプだった。
ここでちょっとPowerPCについて説明するとPowerPCはアドレス転送とデータ転送に分かれていて、マルチプロセッサ用にアドレスだけの転送もある。キャッシュのコヒーレンシを取ったりするコマンドはアドレス転送だけ発生するはずだ。(実際はGBLとかを使っていないので見たことはない)
通常はアドレス転送で何番地の何バイトを読むか書くかしますよということをアドレス転送でチップセットに通知して、データ転送で実際にデータ転送する。Transfer Typeはアドレス転送でどの様なタイプの転送かをチップセットに知らせる信号なのだ。以前のPPC603Eから7447Aに変更したのだが、Transfer Typeが今まで出ていなかったタイプが出ている。JTAG ICEを使うとリザーブドのところまで使っているようだ。
チップセットはFPGA内にあって自作なので対応するTransfer Typeを増やした。
これで大分動くようになったがまだだめである。アドレス転送オンリー以外は対応しなければいけないのだろうか?
でもまだまだ他の検討事項もあると思う。。。
  1. 2006年08月08日 04:48 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:8

庭をきれいにしました

子供が入院して困っているが庭はその前に工事してもらうように頼んでおいたので工事をしてもらった。以前は芝が張ってあったが草取り、除草剤をサボっていたので草ぼうぼうになってしまった。それでコンクリートとレンガで舗装するように業者にお願いした。さすがにきれいにできたと思う。まだレンガで舗装してもらったほうは表面に細かい砂がまいてあるのできれいに写真が取れなかった。レンガとレンガの間に入るそうだ。まだ歩くと少しきしむ。
コンクリートの模様はレンガで造ってあるが奥さんの趣味だ。車輪の跡は早速一番下の娘が一輪車を乗った跡だ。
これで息子が帰ってきてから驚くのが楽しみだ。まだ予定はないのだが。。。
ウン十万かかってしまったので入院費は大丈夫だろうか?

my_garden_1_060807.jpg

my_garden_2_060807.jpg

  1. 2006年08月07日 05:46 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

子供の病気

昨日、今日と息子の付き添いに行っているが、咳をすると腰に響くというのでかなり苦しんでいるので見ているのがつらい。私のほうが胃が痛くなってしまった。とりあえず苦しんでいても見て見ぬ振りをするしかないようだ。そうしないとこっちが参ってしまう。
どうも腰は外科的には悪くないようなので精神的に痛みを感じてしまうらしい。
病名は聞いていないがインターネットで調べると身体表現性障害の疼痛性障害のような気がする。大学病院でもあまり例がないということで困っているようだ。小学6年生なのだがこのような病気の権威はどこかにいないものだろうか?このままでは2学期も学校に行けそうにない。。。
  1. 2006年08月06日 21:15 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

新しい基板が届きました2

昨日は引き続き新しいPCI基板をデバック。モニタを立ち上げPCI越しに内部レジスタ、SDRAMへの読み書きを確認。順調順調。
次にPowerPCのPLLの倍率を設定して起動を書けたら動かない。コア電圧をテスタチェックするとちゃんと1.3Vかかっているのだが。。。とりあえず原因がわからないのでChipcopeをかけてバス信号を見てみることにした。どこが悪いのだろうか?
やはり全てそううまくは行かないようだ。世の中そんなもだと思う。
  1. 2006年08月05日 05:17 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

新しい基板が届きました

今日、PCIバスの基板が届きました。一応電源をテスタチェック。大丈夫そうなのでPCIバスに刺してドライブ電源もつなぎ電源ON。
JTAGからiMPACTでCPLDとFPGAが見えた。ばんざーい!!電源とJTAG接続はOK。。。思わず叫んでしまった。
次にCPLDとFPGAを書き込んでホストPCをリブート。lspciで見ると基板のコンフィギュレーションレジスタが見えた。ちゃんと規定のアドレスがアサインされている。まだPCIスレーブアクセスは試していない。明日試そう。
今回電源を基板実装のDC-DCコンバータにしたので心配だったが燃えずにちゃんと電圧が出ているようだ。一安心だ。まだプロセッサの電源をチェックしていないので、そこを確かめたい。
  1. 2006年08月03日 21:24 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:2

FPGA内の配線を固定する

以前書いた”DDR SDRAMのDQS信号でデータをサンプルする方法2”でスライスの位置を変えると配線がかなり変わってしまうということを書いた。この時にはコンポーネントを固定して配線だけはPlace & Routeにお任せした。DDR SDRAMコントローラの遅延素子の配線などは配線も固定しておかないと遅延が変わってしまうので心配である。そこでFPGA Editorで配線も固定する方法を探ってみた。
まずは例によってISEからFPGA Editorを起動する。起動したらList1ペインのプルダウンメニューから"ALL Nets"を選択する。ネットが下に出てくるので固定したいネットを選択する。この場合はSRL16Eへのクロック入力のdqs_delay3を選択する。ファンクションキーF11を押すとArray1ペインに選択したネットがハイライトされる。
Route_fix_1_060802.png

Toolsメニューから"Directed Routing Constraints..."を選択するとDirected Routing Constraintsダイアログが開く。目的のネットを検索して選択する。今はコンポーネントの位置は絶対位置で指定してあるのでルーティングだけ指定するため、下のPlacement Constrait TypeからDo not generate Placement Constraintを選択する。
Route_fix_2_060802.png

これで一番下のApplyボタンを押すとUCFファイルにルーティング情報が追加される。下のように。

NET "dqs_delay_3"
ROUTE="{3;1;2vp7ff896;ef0d7cef!-1;-62768;60008;S!0;1489;-1656!0;-4616;"
"1117!0;-1703;-3480!1;-3156;-5496!1;-6105;-603!2;1160;-1717;L!3;-2929;"
"-2391!4;-2949;1269!5;1160;-1717;L!5;1160;-1373;L!7;1336;-1041;L!7;1336;"
"-697;L!8;1160;-1717;L!8;1160;-1373;L!}";


これでルートは固定されたはずである。
今回はコンポーネントは固定しあるがUCFでセットアップ時間などの制約だけで位置を固定していない場合はUse Relative Location ConstraintかUse Absolute Location Constraintを選択してコンポーネントも指定すると良いだろう。
ここでソフトウェアマニュアルの制約ガイドを見るとDirected Routing制約は相対指定だそうなので位置相対でルーティングを指定できるそうだ。今まで絶対位置指定だと思っていた。
それを検証するためにコンポーネントの絶対位置指定を消去した。消去した制約はこれ。(ちなみに前の制約とインスタンス名が違うがこれはISE8.1iからISE8.2iに変更したら変わってしまった)

INST "delay3" LOC = "SLICE_X2Y75" ;
INST "delay2" LOC = "SLICE_X1Y75" ;
INST "delay1" LOC = "SLICE_X0Y75" ;
INST "lut_fifo_inst/DIST_FIFO_GEN[7].SRL16E_inst" LOC = "SLICE_X0Y70";
INST "lut_fifo_inst/DIST_FIFO_GEN[6].SRL16E_inst" LOC = "SLICE_X0Y70";
INST "lut_fifo_inst/DIST_FIFO_GEN[5].SRL16E_inst" LOC = "SLICE_X0Y71";
INST "lut_fifo_inst/DIST_FIFO_GEN[4].SRL16E_inst" LOC = "SLICE_X0Y71";
INST "lut_fifo_inst/DIST_FIFO_GEN[3].SRL16E_inst" LOC = "SLICE_X0Y72";
INST "lut_fifo_inst/DIST_FIFO_GEN[2].SRL16E_inst" LOC = "SLICE_X0Y72";
INST "lut_fifo_inst/DIST_FIFO_GEN[1].SRL16E_inst" LOC = "SLICE_X0Y74";
INST "lut_fifo_inst/DIST_FIFO_GEN[0].SRL16E_inst" LOC = "SLICE_X0Y74";


これをMAXDELAY制約だけにする。

NET "dqs_delay_3" MAXDELAY=0.67 ns;


これでインプリメントしたところ最大遅延が0.955nsで制約は満たされなかった。ちなみにデバイスはVirtex2pro xc2vp7-6ff896だ。入出力ポートの制約は”DDR SDRAMのDQS信号でデータをサンプルする方法2”を見てほしい。
新しいdqs_delay_3ネットのルーティングは下のとおり。最大遅延時間は0.955nsだった。
Route_fix_3_060802.png

コンポーネントまで近い位置に固定したものは最大遅延が0.655nsだったので、これよりも性能が悪い。一応これを相対位置マクロにしようとしたが出来なかった。絶対位置だったら出来るのだが。
原因がわからないのでdqs_delay_2でやってみることにした。
Route_fix_4_060802.png

これでRLOCを使った絶対位置指定をしてみる。
Toolsメニューから"Directed Routing Constraints..."を選択するとDirected Routing Constraintsダイアログが開く。目的のネットを検索して選択する。下のPlacement Constrait TypeからUse Absolute Location Constraintを選択しRLOC Styleにチェックを入れる。ApplyボタンをクリックするとRLOC_ORIGIN=X3Y148;に指定した相対位置で制約が書かれる。

NET "dqs_delay_2"
ROUTE="{3;1;2vp7ff896;74ee056b!-1;-66224;56288;S!0;-216;2177!1;-1632;"
"6712!2;1736;1404!3;112;-365;L!}";
INST "delay2" RLOC=X0Y0;
INST "delay2" RPM_GRID=GRID;
INST "delay2" RLOC_ORIGIN=X3Y148;
INST "delay2" U_SET="dqs_delay_2";
INST "delay2" BEL="F";
INST "delay3" RLOC=X0Y12;
INST "delay3" U_SET="dqs_delay_2";
INST "delay3" BEL="F";


そのUCFでもう一度インプリメントしたらそのほかの配置は変わっていたがdqs_delay_2だけは変わっていなかった。
Route_fix_5_060802.png

ここでRLOC_ORIGIN=X3Y148;をRLOC_ORIGIN=X3Y146;位にして縦にずらしてみようと思う。そうすると下に2スライスずれた。
遅延時間は以前は0.588nsで縦にずらした後は0.592nsだった。
Route_fix_6_060802.png

このようにDirected Routing制約は相対指定だということがわかった。いろいろ便利に使えそうである。
  1. 2006年08月02日 19:12 |
  2. FPGA Editorの使い方
  3. | トラックバック:0
  4. | コメント:0

近況(2006.08.01)

最近は仕事が終わってから息子の入院している病院に行って夕飯を食べさせてから帰宅している。それでなかなかFPGAの勉強をしてブログを書く暇がない。FPGA Editorについてもう少し書こうと思っているが、なかなかCRTCを作るまでに至っていない。これは息子が退院するまでお預けになる。
仕事の方はというと夏休み自由研究サポート企画が終了してほっと一息というわけに行かず、前の基板のFPGA回路のバグが今頃出てしまったのでModelSimでシミュレーションしながら修正した。
しかも仕様上の問題点も発覚したので仕様なのでしょうがないとも言っていられずに修正中だ。大体出来たとは思うがまだ内部レジスタに実装したデバック回路のデバックはしていないのでやらなくっては。。。
研究目的の回路なのでたまに仕様が変更になるのでそのたびに修正しなくてはならないのだが、性能が向上するのはうれしいもんだ。でも大きな修正だとテストが大変だ。
これが出来たら新しく出来てくる基板のうち大きいほうのクロックの位相や入力ピンのセットアップ時間、出力ピンの出力時間を決めて(制約を決定して)インプリメントをしなくては。。。
  1. 2006年08月02日 05:04 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0