FPGA タイミング制約と解析 | 2021.08.09 19:50 |
もう2ヶ月以上経ちますが、FPGAでギガビット・トランシーバーを
やっている件、それっぽく動く(はずの)ロジックはできました。
トランシーバー(正しくはRXなのでレシーバーだが)のPHYの初期化
処理を変更し、クロック同期の処理を変更することで、『タイミングが
合えば』RXも信号が拾えるようになりました。
通信相手が不意なタイミングでリセット処理に入ると、こちらも追従
しなければいけないわけですが、
これが結構クセモノで、相手の信号にクロックを同期していると、相手
のリセットシーケンスをうまく検知できないようです。
なので、通信状態を常に監視し、相手がリセットらしき処理に入った
場合は、クロック同期の処理を変更するようにしました。
・・・・何を言っているか分からないと思いますが(^^;
そんなこんなで、ギガビット・トランシーバー自体はできたはず、
クロック同期処理もできたはず、プロトコルを扱うロジックも
基本的な処理は抑えたはずなのですが、やっぱり動きません(n回目
直接動作の関係ないところのロジックに軽微な修正を加え、コンパイル
(論理合成と配置配線)を掛け直すと、
変更するたびに動いたり動かなかったり、その動かない個所や不具合内容
も毎回変化する状態です。
実行後のタイミング解析結果を見ると、数ns(ナノ秒)レベルのタイミング
違反が多数出ているので、実デバイス上に実装する際にロジックの速度・
タイミングが要求速度に満たしていないようです。
正直言って、どうして良いのかよく分かりません。
一応クロックラインのタイミング制約は掛けているはずなのですが、
そもそも正しいのか、制約が不足しているのか、記述が間違ているのか、
確信がなく よく分かりません。
今まで扱っていた数十Mbpsクラスの通信であれば、適当なタイミング制約
で良く、ぶっちゃげ制約ゼロでも問題なかったのですが、
Gbps単位の通信となると、しっかりと制約を加えてコンパイルしないと
まともに動かず、動いても「まぐれ」で動いているだけになってしまいます。
・・・まさに今がその状態(汗
これも「n回目」と言った感じですが、
FPGAの参考文献でも、HDLのロジック設計やツールの基本操作については
初心者向けに丁寧に説明していることは多々ありますが、コンパイル時に必要
なタイミング制約やタイミング解析に関する解説やノウハウは殆ど紹介されて
いません。
まともにFPGAを使うならば、必須な技術だと思うのですが・・。
こりゃもう、いつになったら まともに動くようになるのか、分からねぇな。。
やっている件、それっぽく動く(はずの)ロジックはできました。
トランシーバー(正しくはRXなのでレシーバーだが)のPHYの初期化
処理を変更し、クロック同期の処理を変更することで、『タイミングが
合えば』RXも信号が拾えるようになりました。
通信相手が不意なタイミングでリセット処理に入ると、こちらも追従
しなければいけないわけですが、
これが結構クセモノで、相手の信号にクロックを同期していると、相手
のリセットシーケンスをうまく検知できないようです。
なので、通信状態を常に監視し、相手がリセットらしき処理に入った
場合は、クロック同期の処理を変更するようにしました。
・・・・何を言っているか分からないと思いますが(^^;
そんなこんなで、ギガビット・トランシーバー自体はできたはず、
クロック同期処理もできたはず、プロトコルを扱うロジックも
基本的な処理は抑えたはずなのですが、やっぱり動きません(n回目
直接動作の関係ないところのロジックに軽微な修正を加え、コンパイル
(論理合成と配置配線)を掛け直すと、
変更するたびに動いたり動かなかったり、その動かない個所や不具合内容
も毎回変化する状態です。
実行後のタイミング解析結果を見ると、数ns(ナノ秒)レベルのタイミング
違反が多数出ているので、実デバイス上に実装する際にロジックの速度・
タイミングが要求速度に満たしていないようです。
正直言って、どうして良いのかよく分かりません。
一応クロックラインのタイミング制約は掛けているはずなのですが、
そもそも正しいのか、制約が不足しているのか、記述が間違ているのか、
確信がなく よく分かりません。
今まで扱っていた数十Mbpsクラスの通信であれば、適当なタイミング制約
で良く、ぶっちゃげ制約ゼロでも問題なかったのですが、
Gbps単位の通信となると、しっかりと制約を加えてコンパイルしないと
まともに動かず、動いても「まぐれ」で動いているだけになってしまいます。
・・・まさに今がその状態(汗
これも「n回目」と言った感じですが、
FPGAの参考文献でも、HDLのロジック設計やツールの基本操作については
初心者向けに丁寧に説明していることは多々ありますが、コンパイル時に必要
なタイミング制約やタイミング解析に関する解説やノウハウは殆ど紹介されて
いません。
まともにFPGAを使うならば、必須な技術だと思うのですが・・。
こりゃもう、いつになったら まともに動くようになるのか、分からねぇな。。
category : 電子工作 | comment [0] |