1 
様相論理による 
マルチクロック同期回路の形式検証体系 
2014/09 西村俊二
背景・目的 
 形式検証*の多くは単一クロック同期回路が対象である. 
時相論理ベース⇒ “次”が一種類⇒ 単一クロック 
 マルチクロック同期回路の形式検証としては,それぞれのク 
ロック間の関係を条件として与えた上でモデル検査を適用 
する方法がある. 
⇒ 時間軸を含めた状態空間の制限が可能に 
 本研究では,クロック間の条件を定めることなくマルチクロッ 
ク同期回路の形式検証を可能とする検証体系を提案する. 
2 * : 本研究ではプロパティ・チェッキングを対象とする.
もくじ 
3 
 様相論理による回路記述 
 公理の定義 
 検証体系の位置付け 
 検証例 
 まとめ
様相論理 
必然性や可能性を扱う論理. 
 □P : Pが必然的に真 
「先祖代々仏教だ」⇒ 私の先祖は仏教,その先祖も仏教,その先祖も… 
□仏教 
 ◇P : Pである可能性がある 
(◇P := ¬□¬P : Pでないことが必然ではない) 
「キリスト教の方もいた」 
◇ キリスト教 
私 
父 
母 
私 
父 
母 
4
時相論理 
時間上の必然性や可能性を扱う. 
 ○P : 次の時刻においてP 
 「明日は晴れる」 
○晴れ 
 「明後日以降ずっと晴れる」 
○ ○ □晴れ 
今日明日 
今日明後日 
5
様相記号の追加(多重様相論理) 
明日を表す○ のみでは不便な場合もある 
 「来週は晴れる」 
⇒? 
Sat Sun Mon Tue Sun Mon 
来週を表すⓌを導入すれば 
Ⓦ晴れ 
: ○ 
: Ⓦ 
Mon Tue Sun Mon Tue Sun 
6
クロック同期の表現 
 FF同期の信号にとって,エッヂをまたいだ後が“次”. 
(離散時間を前提としている) 
: clk0の“次” 
7 
clk0 
clk1 
単位時間 
の“次” 
: 
: clk1の“次”
回路記述 
 様相記号を使って同期回路を表現することができる. 
(clk0/clk1 の様相記号をそれぞれ⓪/① とする) 
f 
g0 
g1 
clk0 
clk1 
a 
s0 
s1 
out 
out = f(a, s0, s1) 
⓪ s0 = g0 (a, s0, s1) 
① s1 = g1 (a, s0, s1) 
8 
検証体系の要素(1/2)
回路記述の原理 
前ページの回路記述は「同期回路-ステートマシン対応」の拡張. 
f 
g 
clk 
a 
s 
out 
out = f(a, s) 
s’ = g(a, s) 
f 
g 
a 
s 
out 
= 
next 
(出力関数) 
(ステート関数) 
9
恒真命題(1/2) 
考える命題にかかわらず成り立つ関係がある. 
 □P ⇒ P 
P P P ⇒ P 
 □P ⇒ □□P 
10 
P 
P P P P ⇒ P P P P 
P P P 
P P
クロックの様相記号についての恒真命題も存在する. 
 clki同期のステート信号siについて, 
○si = 
ⓘ si 
(または) 
 ∃n . ⓘ = ○n 
恒真命題(2/2) 
11 
si 
∃ 
n 
: ⓘ 
: ○
検証体系の定義 
代表的な恒真命題を集めた以下を公理とする. 
前出の回路記述方式とこれらの公理をもって検証体系とする. 
12 
検証体系の要素(2/2)
検証体系と実際の検証 
次の関係にある. 
矢印による意味付け 
⇒ ⇒ 
検証体系 
回路記述方式+ 公理 
対象回路が仕様を満たすか? 
検証体系の構築 
実際の検証 
実際の検証では 
“回路と公理を前提として仕様を満たすかどうかをチェックする” 
13
検証体系の健全性 
この検証体系から導かれた結論は常に正しいか? 
 矢印による意味付けのもとに, 
 回路記述は「同期回路-ステートマシン対応」の原理により正しい. 
 公理は恒真命題であるので正しい. 
 よつて, 
この検証体系から導かれた結論は論理的に正しい. 
14
検証例:対象の回路 
次のクロック切替え回路を対象に検証を行う. 
clk0 
sel1 out 
clk1 
en0 
en1 
15
検証例:回路の振るまい(1/4) 
ON 
sel1 out 
sel1 
en0 
16 
clk0 
clk1 
en0 
OFF en1 
0(=clk0を選択) 
ON
検証例:回路の振るまい(2/4) 
OFF 
sel1 out = 0 
sel1 
clk0 
en0 
17 
clk0 
clk1 
en0 
OFF en1 
ON OFF
検証例:回路の振るまい(3/4) 
18 
clk0 
sel1 
clk1 
en0 
OFF 
ON en1 
en0 
clk1 
en1 
out 
ON OFF 
OFF ON
検証例:回路の振るまい(4/4) 
まとめると次のタイミング・チャートとなる. 
clk0出力 
sel1 
clk0 
clk1 
out 
OFF 
切替え中clk1出力 
en0 
en1 
19 
ON 
OFF 
ON
検証例:回路記述 
20 
clk0 
sel1 
clk1 
en0 
en1 
out 
様相論理による回路記述は下のようになる. 
out = en0 & clk0 | en1 & clk1 
⓪ en0 = sel1 & en1 
① en1 = sel1 & en0
検証例:仕様 
 求められる振るまいは: 
仕様1:選択された方のクロックが出力されること 
仕様2:グリッチ・ノイズが発生しないこと. 
 以下,仕様1について示す.切替え中かもしれないので, 
仕様1-0:clk0を選択し続ければそのうちclk0が出力されること 
仕様1-1:clk1を選択し続ければそのうちclk1が出力されること. 
 様相記号を用いて, 
仕様1-0:□(sel1 = 0) ⇒ ◇□(out = clk0) 
仕様1-1:□(sel1 = 1) ⇒ ◇□(out = clk1). 
21
検証例:補題 
動作例から推測できるように,次が成り立つ. 
補題:常にen0かen1のどちらかが0である. 
これを様相記号を使って示すと, 
□ (en0 | en1). 
回路記述をもとに適宜公理を使うことによりこれを 
証明することができる. 
22
証明の概要: 
sel1=1 
⓪en0=0 ∴ ⓪①en1=1 
⓪①en0=0, ⓪①en1=1 ∴ ⓪①(out = clk1) 
⓪①□(out = clk1) 
◇□ (out = clk1) 
検証例:証明 
23 
⓪ en0 = sel1 & en1 
① en1 = sel1 & en0 
回路の定義(右)より 
前ページの補題よりen0かen1のどちらかが0 
公理V4など 
公理VN2など 
en0=0 
en1=1 
out 
clk0 
clk1
まとめ 
マルチクロック同期回路の形式検証を可能とする検証体系 
 多重様相論理に基づく演繹的な体系 
 得られる結果について正当性が保証される(健全である) 
課題 
 健全性は言えるが,完全性(成立する命題のすべてが導かれ 
ること)は不明 
 証明を人手で行っていては厳密性が担保できない 
 自動証明 
 証明は人が行うが,その整合性を計算機でチェック 
24

様相論理によるマルチクロック同期回路の形式検証体系