1 
タイミング制約を含んだ回路記述方式と 
その意味論 
2014/11 西村俊二
背景・目的 
 非動期回路の形式検証(プロパティ・チェッキング)を行う 
ためにはタイミング制約の情報が不可欠である. 
 回路記述のみでは遅延値が不明であるため,検証が意味 
をなさない. 
回路記述とタイミング制約をもとに検証を行う手法/ツール 
(Veraci)がある. 
 タイミング制約を含んだ回路記述が可能であれば,非動 
期回路のプロパティ・チェッキングが可能となる. 
2
背景・目的(修正) 
 非動期回路の形式検証(プロパティ・チェッキング)を行う 
ためにはタイミング制約の情報が不可欠である. 
 回路記述のみでは遅延値が不明であるため,検証が意味 
をなさない. 
 回路記述とタイミング制約をもとに検証を行う手法/ツール 
(Veraci)がある. 
 タイミング制約を含んだ回路記述が可能であれば,非動 
期回路のプロパティ・チェッキングが可能となる. 
 回路とタイミング制約を同時に記述する方法があれば,よ 
り良い設計言語となり得る. 
3
もくじ 
4 
 課題設定 
 理論の準備 
 回路の動作の表現 
 タイミング制約について 
 タイミング制約の導入 
 回路例 
 まとめ
課題設定:クロック切替え回路 
次のクロック切替え回路のプロパティ・チェッキングを行いたい. 
clk0 
sel out 
clk1 
en0 
en1 
5
クロック切替え回路の動作 
クロック切替え回路の動作は次のようになる. 
clk0出力 
sel 
clk0 
clk1 
out 
OFF 
切替え中clk1出力 
en0 
en1 
6 
ON 
OFF 
ON
クロック切替え回路の問題 
7 
遅延値の関係によってはグリッチ・ノイズが発生する. 
< 
OFF ON 
out 
en1 
clk1 
上のパス 
下のパス 
clk1 
en1 
out 
切替え中clk1出力
Arrowによる回路の表現 
8 
 プログラミング言語HaskellのクラスであるArrowで回路を表 
現できる. 
直列合成f >> g 並列合成f ** g 
f g 
>> 
f 
** 
f 
f g 
g 
g
クリプキ構造 
クリプキ構造(W, R, V) : 
 W : 可能世界の集合 
 R : 到達可能性(R ⊆ W × W) 
 V : 命題の解釈(V : W → 真or偽) 
例: 
 W : 先祖代々の家族 
 R : 親 
 命題: 「先祖代々色黒である」 
9 
私 
父 
母 
偽 
真
回路の制限 
回路中の経路(パス)を表現するためのオペレータ 
L| , R| , |L , |R を導入. 
10 
f 
f |L 
f |R 
L| f 
R| f
回路の動作を表現 
ディレイを考慮した回路の動作を以下のように表現する. 
11 
AND 
0 
0 
R|AND 
a 
b 
c 
0 0 
R|AND 
a c 
 W : 信号線 
 R : その接続関係 
 命題: 信号値 
(don’t care) 
0 
0 
a 
c
二つのディレイモデルを用いる 
一般の回路とプリミティブで異なるディレイモデルを用いる. 
12 
OR 
0 
0 
a 
b 
c 
0×0 0 
OR 
a×b c 
0 
v 
一般の回路: 
Data-dependent のモデル 
u 
a 
f c 
v w 
R|f 
a c 
プリミティブ: 
Data-independent のモデル
分岐する経路の遅延(1/3) 
下の二つの経路の遅延の大小関係を規定したい. 
マイナスの経路,及び,経路LRを導入する. 
13 
f 
g 
fork|L 
f 
-g 
-fork|R 
LR 
f 
g 
a 
b 
c 
AND 
a×b c 
= 
a × b 
LR 
fork
分岐する経路の遅延(2/3) 
Δ := fork|L >> f >> LR >> -g >> -fork|R (下記経路) 
とすると, 
Δ >> fork|R >> g = fork|L >> f >> LR . 
14 
f 
g 
fork|L 
f 
-g 
-fork|R 
LR
分岐する経路の遅延(3/3) 
Δ := fork|L >> f >> LR >> -g >> -fork|R 
とすると, 
Δ >> fork|R >> g = fork|L >> f >> LR . 
Δ はf 側の遅延とg 側の遅延の 
「ずれ」を表す. 
15 
f 
g 
fork|L 
f 
g 
fork|R 
LR
タイミング制約の導入(1/2) 
タイミング制約をもたせたfork< を導入する. 
fork< で分岐した信号が再び合流する点において,常に 
左の経路の遅延< 右の経路の遅延 
であることを制約とする. 
16 
f 
g 
fork< 
<
タイミング制約の導入(2/2) 
17 
“正のクリプキ経路”を以下で定義する.(時間の進行方向) 
 プリミティブ(fork,fork< を含む)は正 
 f, g が正⇒ f >> g は正 
 f が正⇒ - ( - f ) は正 
 fork|R >> f >> -fork|L は正 
 fork|L >> f >> -fork|R は正 
 fork<|R >> f >> -fork<|L は正 
fork 
fork 
fork< 
fork< 無し
回路例:INVAND (1/5) 
下記の回路を例にfork とfork< の差異を説明する. 
INVAND := fork >> BUF ** INV >> AND 
18 
or 
(low)
回路例:INVAND (2/5) 
19 
入力波形は以下のように表現できる: 
変化点をt として, 
 ある点からt に向かう正の経路があればその点では入力は1 
 t においては入力は↓(立ち下がり) 
 t からある点への正の経路があればその点では入力は0 . 
1 0 
1 
1 
1 
0 
0 
0 
t 
↓ 
t
回路例:INVAND (3/5) 
fork >> BUF ** INV >> AND 
20 
(low) 
0 
↓ 
t 
↑ X 0 
1 
0 X 
↓ 
0 
0 
Δ : 正の経路 
Δ Δ Δ Δ
回路例:INVAND (4/5) 
fork >> BUF ** INV >> AND 
21 
0 
↓ 
t 
X 
↑ 
1 
1 
1 X ↓ 
↓ 
注意: 
fork の代わりにfork< を 
使った場合,Δ’ は正でない. 
Δ’ : 正の経路 
Δ’ Δ’ Δ’ Δ’ 
↑
回路例:INVAND (5/5) 
INVANDの結果をまとめると以下となる. 
⇒ ゲート遅延を考慮した非同期回路についても形式検証 
の適用が可能となった. 
22 
or 
(low) 
fork >> BUF ** INV >> AND 
fork< >> BUF ** INV >> AND (low)
まとめ 
回路とタイミング制約を同時に記述する方法を提案した. 
 Arrowの導入により構造ベースの回路表現が可能となった. 
 クリプキ意味論により,抽象的な遅延の概念を導入. 
 定理証明言語Agdaでの実装試行を行った. 
課題 
 Veraci(回路記述とタイミング制約をもとに検証を行う手法/ 
ツール)との比較・検討 
 プロパティ記述からの回路生成についての検討. 
23
補足:同期回路の制約 
24 
FF FF 
delay p 
fork< 
delay p 
MUX1 
fork< 
MUX0 
MUX0 
FF
補足: loop 
25 
f 
g 
g f 
g 
f 
f 
g
背景・目的(修正) 
 非動期回路の形式検証(プロパティ・チェッキング)を行う 
ためにはタイミング制約の情報が不可欠である. 
 回路記述のみでは遅延値が不明であるため,検証が意味 
をなさない. 
 回路とタイミング制約を同時に記述する方法があれば,よ 
り良い設計言語となり得る 
26

タイミング制約を含んだ回路記述方式とその意味論

Editor's Notes

  • #2 西村俊二が「タイミング制約を含んだ回路記述方式とその意味論」と題して発表します。
  • #3 非動期回路の形式検証、特に本研究で対象としますプロパティ・チェッキングを行うためにはタイミング制約の情報が必要です。回路記述のみでは遅延値が不明であるため,検証が意味をなしません。そこで、タイミング制約を含んだ回路記述が可能であれば,非動期回路のプロパティ・チェッキングが可能となります。…と、当初はこのような、不可能だったものを可能にするという展開のつもりだったのですが、論理の飛躍があることに気付きましたので、次のように修正しています。
  • #4 可能かどうかでいいますと、回路記述とタイミング制約の両方を入力として検証を行う手法・ツール、Veraciというものがあります。そこで、本研究により検証が可能となる、という主張でなく、下にあります通り、回路とタイミング制約を同時に記述する方法があれば,より良い設計言語となり得る、と、予稿に対して目的を修正して発表いたします。
  • #5 以降のスライドはこのようになります。課題設定と理論の準備の後に、メイン部分である回路の動作の表現とタイミング制約について議論して導入、となります。回路例にて説明を補足し最後にまとめます。
  • #6 動機付けとなる例として、このようなクロック切替え回路を考えます。入力信号@selが0のときはclk0が@出力され、selが1のときはclk1が@出力されます。2つのフリップフロップはそれぞれのクロックのイネーブル信号を生成します。
  • #7 この回路の動作を示しています。selが0選択から1選択に変化したとしますと、clk0が出力された状態@から、遷移期間を経てclk1出力の状態へと移行します。clk1のイネーブル信号は@ここでONとなっています。
  • #8 ゼロディレイでの論理的な動作は今見た通りなのですが、配線遅延を考えますと問題があります。図のように、上の、FFを通る経路と、下の配線のみを通る経路の遅延関係について、もし、下側の経路の遅延の方が大きい場合、グリッチノイズが発生してしまいます。イネーブル信号のONが早すぎる、という状況です。これの回避のためにタイミング制約が必要です。そして、この回路のプロパティ・チェッキングを行うとすれば、一つは従来の手法である回路記述とタイミング制約の両方を検証ツールに与えてチェック、という方法があります。それに対して今回提案いたしますのは、回路とタイミング制約を一緒に記述する方法です。
  • #9 提案の回路記述方式はArrowの概念に基づいています。Arrowはプログラミング言語Haskellのクラスの一つであり、回路を表現できることが知られています。直列合成のオペレータとして大なり記号を二つ並べたものを使います。並列合成のオペレータとしてアスタリスク二つを並べたものを使います。…Arrowの本質を利用しているというよりは単に記述方法を拝借しているだけでして、こういった構造ベースで記述するHDLであれば同様の議論が展開できます。
  • #10 回路記述の意味付けを行うためにもう少し準備が必要となります。意味論の構築にクリプキ構造を使います。クリプキ構造は可能世界の集合Wと、到達可能性Rと、命題の解釈Vで構成されます。この構造を用いて、様相論理という論理体系を構築することができまして、ここでも様相論理の例を挙げています。Wを先祖代々の家族、Rを親、命題を「先祖代々色黒である」として、図を見ます。茶色が色黒を表しています。@ここの父にとってはどのように親をたどっても色黒ですので命題は真です。一方、@ここの私にとっては色黒でない母に到達できますので、命題は偽となります。…今回提案いたします回路記述について、このような考え方を使って動作の意味付けを行っていきます。
  • #11 もう一つ準備としまして、回路の制限という概念を導入します。ここに示す4つのオペレータを使って回路が持つ経路を表現します。例えば、左上のL縦線は、入力側を@左の入力、左というのは入力側から回路を見た場合の位置関係になりますが、左の入力のみに制限するという効果を持たせます。このような表現により、左の入力信号が@出力に影響を与えるまでの遅延を表すことが可能となってきます。
  • #12 遅延の表現についてより具体的に見ていきます。ANDゲートの片側が0であればゲート遅延の後の出力は0となります。真ん中の段ではそれを先程導入したオペレータR縦線@を使って表現しています。さらに、クリプキ意味論を適用して下の段となります。Wは信号線、Rは信号線の接続関係、命題はそこでの信号値です。aで@値0をとっていたものが、R|ANDの関係を通った後、cでもやはり値0となります。R|AND@が抽象的な遅延を表しています。 (9:30)
  • #13 ここでディレイモデルについて整理しておきます。提案する意味論では二類種のディレイモデルを使います。一つはData-dependentのモデル、すなわち入力信号毎に異なる遅延値を持ち得るモデルです。もう一つはData-independentのモデル、同時に与えられた入力で出力が定まるモデルです。本研究では回路の最小単位として扱うプリミティブについてはData-independentのモデル、一般の回路についてはData-dependentのモデルを考えます。どのような要素をプリミティブとするかは、どの程度の時間精度をもって動作を表すかを決めていることになります。最も精度が高くなるのはトランジスタをプリミティブとした場合です。
  • #14 次はタイミング制約の記述についての議論になります。本研究では分岐する二つの経路の大小関係を規定する、相対的なタイミング制約を対象とします。そのためにマイナスの経路とLRという経路を定義します。マイナスの経路とはある経路の向きが逆になった経路で、LRは@ここにありますようにペアで考える信号の左の信号から右の信号への経路です。これらを使うことによって@分岐する所、forkと呼びます、ここから進んで@LR、そしてマイナスの経路@を通ってまたforkに戻る経路が考えられます。
  • #15 この経路をΔとします。Δに続いてさらに@g方向に進むと、これはΔを戻ることになり、下の式が成り立ちます。
  • #16 つまり、Δから緑を通った経路イコール、オレンジの経路、です。…このことから、Δは上を通る信号と下を通る信号の遅延のずれを表しているといえます。分岐して@fを通った信号は、Δ分@待ってから分岐してgを通った信号と同時に到着する、と読むことができます。Δが時間を表すとすればfの遅延よりgの遅延が小さいことになります。
  • #17 準備ができましたので、タイミング制約を含んだ回路記述を定義します。先程のforkに小なり記述を付けたfork小なりを導入します。fork<は次のタイミング制約を意図しています。分岐した信号が再び合流する点@において、常に、上の経路@の遅延が下の経路@の遅延より小さい。
  • #18 この制約をこれまでの意味論に従って厳密に定めます。正のクリプキ経路、をこのように定義します。時間の進行方向を正としています。forkに関連する定義に注目していただきたいのですが、タイミング制約のないforkについては下まわりの経路、上まわりの経路ともに正としています。これは分岐した二つの信号のどちらが速い場合もあり得るということです。それに対し、タイミング制約を含むfork<については下まわりの経路のみを@正としています。これにより意図したタイミング制約が意味論に反映されます。
  • #19 回路例を挙げて二つのforkの違いを説明いたします。このような回路は遅延値が定まっていない段階では立ち下がりの波形を与えると短いパルスが出るか、ローのままか分かりません。… (-5m)
  • #20 立ち下がりの波形を与えることについて、提案の意味論ではこのように表現できます。ある点@から t に向かう正の経路があればその点では入力は 1、t において@は入力は立ち下がり、t からある点@への正の経路があればその点では入力は 0 .
  • #21 まず、下まわりのΔを考えます。tからインバータ@を通った点では値は立ち上がりに反転します。tからΔ@、バッファを通った点では@ここの0がバッファを通って0です。この二点@が同時ですので、最後にANDを通ると出力が0となります。同様にΔ@を通るとtに到達する点、ここを基準としても、インバータ@を通った点と、Δ@、バッファを通った点が同時であり、さらにANDを通ると出力が0となります。図は省略してありますが前後もすべて出力が0となります。これは出力がローのままのケースを示しています。
  • #22 次に上まわりのΔ‘を考えます。ここから@見ますと、バッファ@を通った点と、Δ’@、インバータを通った点が同時になりますので、さらにANDを通ると出力が立ち上がり@となります。同様に右の方は立ち下がりとなり、パルスが発生しています。…ここまでの話について、forkをfork<に置き替えると、前のページのΔについては同様ですが、このページのΔ'は正ではないため、パルス発生は示されません。 (-2m)
  • #23 つまり、forkの場合はパルスかローの二つの可能性が示されたのに対し、fork<の場合はローの結果のみが得られています。…タイミング制約を含んだ回路記述fork<を定義することができました。
  • #24 まとめです。本研究では回路とタイミング制約を同時に記述する方法を提案しました。Arrowの導入により構造ベースの回路表現が可能となっています。また、クリプキ意味論により,抽象的な遅延の概念を導入することができています。発表では紹介できませんでしたが、定理証明言語Agdaでの実装試行も行いました。今後の課題としましては、冒頭で述べました通り、回路記述とタイミング制約の両方を入力として検証を行うツールがありますので、それとの比較・検討、また、同期回路について研究されているような、プロパティ記述からの回路生成についても検討の価値があるのではないかと考えます。…以上です。
  • #27 背景と目的です。 形式検証の多くは単一クロック同期回路が対象です。 ただし、本発表中の形式検証は、プロバティ・チェッキングを対象として います。等価性検証は対象ではありません。プロパティ・チェッキングに 使う言語としてSystemVerilogアサーションが一般的ですが、その基礎 理論は時相論理です。後で詳しく見ますが、時相論理で扱える “次(next)”は一種類のみですので、必然的に単一クロック同期回路が 対象になります。 マルチクロック同期回路の形式検証としては、それぞれのクロック間の 関係を条件として与えた上でモデル検査を適用する方法があります。 条件を与えることで時間軸を含めた状態空間の制限が可能になります。 本研究では、クロック間の条件を定めることなくマルチクロック同期回路 の形式検証を可能とする検証体系を提案します。