nao-milkの経験ブログ

25年間の半導体エンジニア経験で知り得た内容を記載したブログです。

FRAMにアクセス (Quartus実行編)

f:id:nao-milk:20210421105607p:plain

Quartusの論理合成とインプリメントとなります。

ここでは、単に実行するだけになるため、実行結果とSTA結果のみ記載します。

また、FRAM I/FブロックとFRAMデバイス間に遅延を付けて行ったシミュレーション波形も載せています。

 

TOP構成は、以下をご参照ください。

nao-milk.hatenablog.com

 

 

実行結果

f:id:nao-milk:20210425120556p:plain

Summary

リソース

f:id:nao-milk:20210425121005p:plain

Resource Summary

 Input Pin

クロックとリセット以外の入力端子は、「Input Register」を使用していることを確認します。これにより、端子とFF間の配線遅延を小さくすることにより、Setup/Holdをバランスよくします。

f:id:nao-milk:20210425121620p:plain

Input Pin

以下に入力端子FRAM_MISOとFF(in_miso)の接続関係を示します。

f:id:nao-milk:20210425121930p:plain

FRAM_MISO構成

 Output Pin

 出力端子LED_LOCKを除く信号が「Output Register」を使用していることを確認します。

f:id:nao-milk:20210425122620p:plain

Output Pin

 階層構造とメモリ使用状況

f:id:nao-milk:20210425123453p:plain

階層構造とメモリ使用状況

ブロックメモリ(M10K)の使用率は以下の通りです。

f:id:nao-milk:20210425124235p:plain

 

STA結果

クロック制約

f:id:nao-milk:20210425124518p:plain

最高動作周波数

CPU_CLKは50MHz、SYS_CLKは200MHz以上の結果が得られていることが確認できます。

f:id:nao-milk:20210425124615p:plain

 

タイミングレポート

各タイミングレポートを確認します。

 

CPU_CLK(50MHz) 間遅延

FF間が20nsの制約に対し、10ns以上の余裕があることが分かります。

f:id:nao-milk:20210425125058p:plain

SYS_CLK(200MHz)間遅延

FF間が5nsの制約に対し、0.2ns以上の余裕があることが分かります。

f:id:nao-milk:20210425125345p:plain

 

False Path (CPU_CLK → SYS_CLK)

f:id:nao-milk:20210425125715p:plain

False Path (SYS_CLK → CPU_CLK)

f:id:nao-milk:20210425125835p:plain

False Path (CPU_CLK間)

f:id:nao-milk:20210425130133p:plain

False Path (SYS_CLK間)

f:id:nao-milk:20210425130331p:plain

 

AC特性

Report Timingを実行し、FRAM制御信号の遅延時間を測定し、AC特性をまとめました。

f:id:nao-milk:20210425131538p:plain

AC特性

上記AC特性からFRAMデバイスのAC特性に当てはめると以下となり、各Setup/Holdをカバーすることが分かります。

f:id:nao-milk:20210425131836p:plain


f:id:nao-milk:20210421011721p:plain

※tdrMISOの遅延時間 と 基板配線遅延 の 合計がFRAM_SCLKの周期を超えた場合は、基準取り込みタイミングを遅延させる調整が必要になります。(REG_TAK又はPRM_TAK)

 

f:id:nao-milk:20210421011544p:plain

 シミュレーション

FRAM I/FブロックとFRAMデバイス間の信号に遅延を与えてシミュレーションを行いました。

各信号に上表(AC特性)の遅延値(tdo????,tdi????)を与えてRTLシミュレーションを行いました。

以下が波形となります。

※起点となるFRAM_SCLK↓ から in_misoまでの遅延が18.283nsとなります。

※遅延値の与え方は、前回のテストベンチ内のコメント「FRAM モデル間遅延」で調整できるようになっています。

f:id:nao-milk:20210421100620p:plain

 

遅延量18.283に+2nsして20.283nsにした場合の波形を以下に示します。

FRAM_SCLK周期を超えたため、1bitズレたパラレルデータになります。

f:id:nao-milk:20210421101703p:plain

 

20.283nsの遅延で取り込みタイミングをPRM_TAK又はREG_TAKで1クロックずらすことにより、周期越えした場合でも取り込むことができます。以下の波形が1クロックずらした場合の波形になります。

f:id:nao-milk:20210421102132p:plain

尚、同じ遅延量(20.283ns)にして、FRAM_SCLKを50MHzから25MHzにすると、周期越えを起こさないため、取り込みタイミングをずらす必要はなくなります。(以下の波形)

f:id:nao-milk:20210421102738p:plain

 

ちなみに、

FRAM_SCLKの周期を最大値(PRM_DIV=15又はREG_DIV=15)にすると、以下のような波形になります。

f:id:nao-milk:20210421103311p:plain

 

最後に

リソースの使用率及びSTAによるタイミング解析を行う必要があります。

この結果次第で、再設計など発生します。

本格的に検証を始める前に仮合成して確認しておく必要があります。

※シミュレーションした後に、FPGAに入らない(リソースをオーバーする)、タイミングが間に合わないなどがあれば、シミュレーションが無駄になるためです。

 

タイミングレポートのFalse Pathでは、遅延が大き過ぎないかを確認します。

特に、ラッチするタイミングまでに値が確定しているか、レジスタ値では、処理が始まるまでに確定しているかなど、遅延量を確認します。