BeDesignFPGA、組込システムハードウェア全般の受託開発

BeDesign

電子回路でのクリティカルパスとは、同期回路において、セットアップ/ホールド違反が起きて正常な動作が破綻する可能性のある信号経路です。
工程管理の世界では、時間が掛かる工程のことを指すようです。全体の工程で、作業期間にインパクトを与える工程のことのようです。
それからの連想なのか、単に遅延時間の長い信号パスのことをクリティカルパスと呼んでいる例を見掛けます。電子回路工学の教育機関で講師が作る問題文でも、そのような意図で「回路のクリティカルパスを示せ」と著しているものを見たことがあるリます。しかし、それは誤用です。

同期回路は、Dフリップフロップ間に組み合わせ回路を挟んで実現します。最も簡単な形態は前段のQ出力と後段のD入力を直結したものになります。一つのDフリップフロップのQ出力に、組み合わせ回路を挟んでD入力にフィードバックする形態もあります。


Dフリップフロップの各パラメータが以下であるとします。
セットアップ時間最大/最小 tsumax/tsumin=800ps/500ps
ホールド時間最大/最小 thdmax/thdmin=200ps/100ps
伝播遅延時間最大/最小 tpdmax/tpdnin=1,000ps/700ps

フリップフロップ間の組み合わせ回路のパラメータが以下であるとします。
伝播遅延時間最大/最小 tcdmax/tcdmin=2,000ps/1,500ps

クロックラインのパラメータが以下であるとします。
スキューの最大/最小 tskmax/tskmin=400ps/300ps

セットアップ違反が起きる条件は、
tsumax + tpdmax + tcdmax + tskmax > クロック周期
ホールド違反が起きる条件は、
tpdmin + tcdmin - tskmax - thdmax < 0
となります。

上記のパラメータの例では、セットアップに関して、
800ps + 1,000ps + 2,000ps + 400ps = 4,400ps
が限界のクロック周期、約272MHzの周波数になります。
動作クロックがこの周波数を超えると、セットアップ違反が起きて誤動作を起こすかも知れません。
ホールドに関しては、
700ps + 1,500ps - 400ps - 100ps = 1,700ps > 0
であり、違反となりません。もし、組み合わせ回路の遅延が短く、クロックの負荷が多くスキューも大きければ、ホールド違反によって誤動作を起こすかも知れません。
違反を起こす可能性のある信号経路が、クリティカルパスです。

各パラメータの最大/最少は、デバイスの固有誤差によって生じます。組み合わせ回路の伝播遅延は、論理によって大きく変わります。また、動作温度によって各パラメータは変わります。
これらを、全ての信号経路に対して静的に解析するのが、スタティックタイミング解析です。FPGA/CPLDの設計ツールには、必ずこの機能があるので、デバイスにフィッテイングした後、設定したクロック周波数(タイミング制約)で、デバイスの許容温度範囲においてクリティカルぱすの解析をおこなっています。クロック周波数を設定しない場合は、最大動作可能クロック周波数をレポートするツールが多いようです。
人間がマニュアルで計算するには、通常、あまりにも膨大な量になります。フリップフロップの伝播遅延時間は、HighからLowへの遷移と、LowからHighへの遷移時間が異なるのが普通なので、解析は更に複雑です。
実際には、更にクロックラインのスキューも考慮しなければなりません。

ホールド違反は、動作クロック周期に依存しません。組み合わせ回路部分の規模によってホールド違反が起きると、修正は困難です。従って、FPGA/CPLDのフリップフロップのホールド時間は、セットアップ時間を犠牲にしてでも0ps以下(負のホールド時間)になるように設計されています。
前
近年の事例
カテゴリートップ
Column