Upload
shunji-nishimura
View
62
Download
0
Embed Size (px)
Citation preview
1
Stateless Circuit Model toward a Theorem-proving Hardware
Description Language
2017.01.30 学位論⽂発表会
⻄村 俊二
コンピュータ・システムの設計検証
コンピュータ・システムはあらゆる所で使用され,正しく動作することが求められている.
基本的な設計検証方法 ︓(ハードウェア/ソフトウェアを問わず)
2
テスト
与えた⼊⼒パターンに対してしか正しさを検証できない
⼊⼒パターンを与えて期待する動作か確認
形式手法による検証
テストに代わる検証手法として,数学をベースとした ︓
3
形式手法
網羅的な,厳密な正しさを検証できる可能性あり
設計物(コード等)に対して厳密な意味を定義し,求めるものとなっているか確認
形式手法の分類
形式手法は2つに分類できる.
4
形式手法
ツールによる自動検証なので広く普及 設計物の動作を状態遷移で表し,
検証ツールが状態空間を探索する
モデル検査手法 定理証明手法
計算リソースが⾜りないと探索しきれない(結果が得られない)
状態爆発問題
形式手法の分類
形式手法は2つに分類できる.
5
形式手法
定理証明⾔語内で設計物と要求仕様を表現し,証明を試みる
証明は基本的に⼈手によるので専門知識が必要
モデル検査手法 定理証明手法
状態爆発問題を避けることができる
ハードウェアでの定理証明手法
ハードウェアの検証には,定理証明⾔語の中に構築されたドメイン固有⾔語(Domain Specific Language, DSL)が提案されてきた.
6
一般的には使われていない
定 理 証 明 ⾔ 語
ドメイン固有⾔語=回路モデル
回路モデルについての知識と定理証明⾔語についての知識の両方が必要(極めて高い専門性)
ソフトウェアでの定理証明手法 [1/2]
7
x = f (a, b)
論理プログラム
引数 a と引数 b が与えられると関数 f が新たな値を計算し,x に代⼊.
証明 a と証明 b が与えられると手続き f が新たな証明を作成し,x に代⼊.
定理証明⾔語かつプログラミング⾔語であるものが存在.Coq, Agda等
これらでは⼀つの記述がプログラムと論理の二つの意味を表す︓
ソフトウェアでの定理証明手法 [2/2]
8
定理証明HDL(ハードウェア記述⾔語)
プログラミングの背後にある論理が利用されているため,プログラミング⾔語レベルの専門性で修得可能.
定理証明⾔語かつプログラミング⾔語であるものが存在.Coq, Agda等
これらでは⼀つの記述がプログラムと論理の二つの意味を表す.
ハードウェアでもこのような⾔語︓
ができないか︖
定理証明HDL実現のためには
9
ソフトウェアでの定理証明かつプログラミング⾔語に学ぶ︓ 型付きラムダ計算の理論に基づいている. 型が論理,ラムダ計算がプログラムを表しており,
この2つが融合している.
ハードウェアでも回路と論理を融合する理論があれば定理証明HDLを実現できそう
回路モデル + 証明が可能な論理体系
が必要.
ハードウェアでの先⾏研究
10
同期回路のみ設計・検証が可能
先⾏研究 ︓ アサーションからのハードウェア合成 アサーション⾔語PSL(Property Specification Language)
のサブセットで回路を記述. それをハードウェアとして合成できる.
(合成できる記述のみがサブセットとして定められている.) PLSは時相論理(Temporal Logic)をベースとしているので,
証明による検証が可能.
汎用HDLではないので普及しない
背景と目的のまとめ
11
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
汎用HDL定理証明手法
非同期回路記述
定理証明HDL
状態爆発問題
12
フィードバック・リープモデル
ステートレス・モデル
同期回路の特徴付け
フィードバック・ループによる回路表現 [1/2]
例えば,フィードバック・ループにD-FF(フリップ・フロップ)を持つ回路を次のように表現する︓
D-FF
⼊⼒ 出⼒
ステート出⼒
クロック
ステート⼊⼒
13
組合せ回路
14
D-FF
i o
clk
D-FF D-FF
io
clk=
組合せ回路
フィードバック・ループによる回路表現 [2/2]
下の左の回路は右のように書き換えることができるため,この回路は前ページで表現された回路の⼀つである.
フィードバック・リープモデル [1/5]
15
組合せ回路⼊⼒ 出⼒ステート
関数
フィードバック・ループモデル(従来)
フィードバック・リープモデル
組合せ回路⼊⼒ 出⼒ステート
ディレイ
フィードバック・リープモデル [2/5]
f
⼊⼒ 出⼒
ステート出⼒
時刻t0
fステート⼊⼒
時刻t1
フィードバック・ディレイ
⼊⼒ 出⼒
f
⼊⼒ 出⼒
ステート出⼒
時刻ta
fステート⼊⼒
時刻tb
時間の順序
⼊⼒ 出⼒
直前の値を参照
過去の値を参照
フィードバック・ループモデル(従来)
フィードバック・リープモデル
16
←を参照
直前でない時刻のステート出⼒を参照可能
D-FF同期回路であれば下のような参照関係︓
f f f
ラッチされたステート
クロック
←を参照
フィードバック・リープモデル [3/5]
17
f
参照先の時刻を関数 r(参照関数)で表す.
f f
t0 t1 t2
r(t1)= t0 r(t2)= t0
フィードバック・リープモデル [4/5]
18
フィードバック・リープモデル [5/5]
19
組合せ回路
非同期回路も表現できる
ディレイ1
ディレイn
組合せ回路
D-FF
D-FF同期回路を表現できる
(D-FFの働きを関数で表す) (各ディレイを関数で表す)
様相論理
必然性や可能性を扱う論理. □P ︓ Pが必然的に真
「先祖代々⾊⿊だ」 ⇒ 私の先祖は⾊⿊,その先祖も⾊⿊,その先祖も …
□⾊⿊
◇P ︓ Pである可能性がある(◇P := ¬□¬P ︓ Pでないことが必然ではない)「⾊白の方もいた」
◇⾊白
20
私
私⺟
時相論理
時間上の必然性や可能性を扱う. ○P ︓ 次の時刻においてP 「明日は晴れる」
○晴れ
「明後日以降ずっと晴れる」
○ ○ □晴れ
今日 明日
明後日今日
21
明日を表す○ のみでは不便な場合もある 「来週は晴れる」
⇒︖
来週を表すⓌを導⼊すればⓌ晴れ
様相記号の追加(多重様相論理)
: ○: Ⓦ
Mon Tue SunSunSat Mon
Mon Tue SunMon Tue Sun
22
FF同期の信号にとって,エッヂをまたいだ後が “次”.
クロック同期の表現
23
clk0
clk1
: clk1の“次”
単位時間の“次”
:
: clk0の“次”
24
組合せ回路
0
⓪ st0 = f0 (in, st0, st1)① st1 = f1 (in, st0, st1)
○ st = f (in, st)
時相論理による表現
in
1
多重様相論理による表現
st0
st1
組合せ回路in
st
様相論理による回路表現
シングルクロック同期回路 マルチクロック同期回路
クロック切替え回路の検証 [1/5]
次のクロック切替え回路を対象に検証を⾏う.
clk0
clk1
sel1 out
en0
en1
25
動作は次のタイミング・チャートとなる︓
clk0出⼒
clk0
clk1
sel1
out
clk1出⼒切替え中
en0
en1
26
ON
OFF
OFF
ON
クロック切替え回路の検証 [2/5]
27
clk0
clk1
sel1
en0
en1
out
様相論理による回路記述は下のようになる.
out = en0 & clk0 | en1 & clk1
⓪ en0 = sel1 & en1
① en1 = sel1 & en0
クロック切替え回路の検証 [3/5]
求められる振るまいは︓仕様1︓選択された方のクロックが出⼒されること仕様2︓グリッチ・ノイズが発⽣しないこと.
以下,仕様1について⽰す.切替え中かもしれないので,仕様1-0︓clk0を選択し続ければそのうちclk0が出⼒されること仕様1-1︓clk1を選択し続ければそのうちclk1が出⼒されること.
様相記号を用いて,仕様1-0︓□(sel1 = 0) ⇒ ◇□(out = clk0)仕様1-1︓□(sel1 = 1) ⇒ ◇□(out = clk1).
28
クロック切替え回路の検証 [4/5]
sel1=1
⓪en0=0 ∴ ⓪①en1=1
⓪①en0=0, ⓪①en1=1 ∴ ⓪①(out = clk1)
⓪①□(out = clk1)
◇□ (out = clk1)29
⓪ en0 = sel1 & en1
① en1 = sel1 & en0回路の定義(右)より
補題(省略)より en0かen1のどちらかが0
公理V4など
公理VN2など
証明の概要︓
en1=1out
clk0
clk1
en0=0
クロック切替え回路の検証 [5/5]
フィードバック・リープモデルのまとめ [1/2]
30
非同期回路も表現できる. 様相論理による証明が可能.
つまり,目標であった︓
を満たしている.
ただし…
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
31
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
汎用HDL定理証明手法
非同期回路記述
定理証明HDL
状態爆発問題
(背景と目的はこうであった)
32
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
汎用HDL定理証明手法
非同期回路記述
定理証明HDL
状態爆発問題
フィードバック・リープモデルのまとめ [2/2]
回路の表現にステートを使っているため,状態爆発問題が
完全には払拭できない
33
フィードバック・リープモデル
ステートレス・モデル
同期回路の特徴付け
新たなモデルに求められること
34
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
基本的な目的︓
を満たした上で,
を可能にするモデル.
ステートを用いない回路表現
ステートレス・モデル [1/2]
回路は 過去の⼊⼒に依存して出⼒を定める関数 とする.
関数ft1
t1
時間t2
t1の出⼒は t1の過去の⼊⼒に依存
t2の出⼒は t2の過去の⼊⼒に依存
関数ft2
(各時刻毎に1つの関数)
35
36
ステートレス・モデル [2/2]
ゲート・レベルでのステートレス・モデル
慣性遅延イデアル遅延
遅延
時間
⼊⼒
出⼒
この時刻の⼊⼒の関数
遅延
時間
⼊⼒
出⼒
この期間の⼊⼒の関数
要求パルス幅
フィードバック・リープモデルとの関係
フィードバック・リープモデルの回路もステートレス・モデルに読み替えることができる.
r(参照関数)rr
ステートレス・モデルの方が抽象度が高い
37
クリプキ構造と様相論理
クリプキ構造 (W, Rel, V) : W : 可能世界の集合 Rel : 到達可能性 (Rel ⊆ W × W) V : 命題の解釈 (V : W → 真or偽)
例 : W : 先祖代々の家族 Rel : 親 命題 : 「先祖代々⾊⿊である」
38
私
父
⺟
偽真
論理体系としては前と同様に様相論理を用いるが,ここではクリプキ構造による様相論理の表現が必要となる.
様相論理とイデアル遅延 [1/2]
39
回路をグラフで表す.(信号を頂点とする)
グラフの辺をクリプキ構造のRel(到達可能性)として可能世界を展開
ab
cd
a
b
INVc d
(この場合変化なし)
a
b
INVc d
様相論理とイデアル遅延 [2/2]
40
回路をグラフで表す
ab
c
a c
b
*AND ab
c
可能世界を展開 c
c
c
ab
ab
INVを通った c と通らない c は別の世界とする.⇒ 2つの経路の遅延の違いを表現している.
推論規則
定理証明の手法で検証を⾏うために,推論規則を定義する.
41
INVc=0 d=1INVc=1 d=0=
INVの規則*ANDa=0 c=0*ANDb=0 c=0
a=1c=1
b=1
ANDの規則
INVa=0
d=1C=0
a=0を仮定するとd=1が導かれる.
推論の例︓
信号a=0とすると然るべき遅延の後, 信号d=1となる.
ab
cd
a
b
INVc d
タイミング制約の表現
相対的なタイミング制約を以下のように表現可能.
42
ab
c
c
c
ab
ab
c
c
c
a
b∃
(存在する)
早
遅早
遅
∃(存在する)
タイミングを考慮した検証例
INVを通るパスの方が遅いとすると︓
43
a
c
グリッチ・ノイズが発⽣する
a=0
仮定(⼊⼒)
結論(出⼒)c=0
b=1
Δ 1
0
1 0
a bc
a=0
仮定
結論c=0
b=0
10
0
Δ
a
c
グリッチ・ノイズは発⽣しない
逆に早いとすると︓
非同期FIFOの検証 [1/3]
遅延依存の非同期FIFOを検証対象とする.
44
ANDN
SSR-FF
RQ
D-Latch
END
RQ
ACK
D
RQ
ACK
ユニットユニット ユニットDin
Write (=RQ)_Full (=ACK)
Dout
Read (=ACK)Empty (=RQ)
非同期FIFOの検証 [2/3]
FIFOとして動作するために必要なタイミング制約を確定させる.
45
S
SR-FF
RQ
D-Latch
EN
D
RQ
ACK
ANDN
S
SR-FF
RQ
EN
前ユニット 後ユニット
上回りのパスの方が早くなくてはならない.= 前ユニットのデータが届いてから後ユニットがラッチし始める.
非同期FIFOの検証 [3/3]
“ 回路がステーブルな状態からデータ及び RQ=1 が与えられると,然るべき後にそのデータが次のユニットの D-Latch に保持される.”
46
Δ2
Δ1D=a D=a
D=a
D=a
D=a
D=a
RQ=1
ACK=1
RQ=1 RQ=0
D=a
D
RQ=0 RQ=1*
*
(1)仮定
(2)
(3)
(4) (5)結論
(3)reg
前ユニット 後ユニット
タイミング制約が Δ1, Δ2 の箇所に効いている
47
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
基本的な目的︓
を満たした上で,
を可能としている.
ステートを用いない回路表現
ステートレス・モデルのまとめ [1/3]
ただし…
ステートレス・モデルのまとめ [2/3]
48
ステートを用いない回路表現
次の懸念が⽣じる︓同期回路は⼀般にステートを用いて表され,設計者が直感的に表現し易い回路である.ステートレス・モデルでは同期回路を直接的に表現できなくなったのではないか︖
49
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
汎用HDL定理証明手法
非同期回路記述
定理証明HDL
状態爆発問題
(背景と目的はこうであった)
50
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
汎用HDL定理証明手法
非同期回路記述
定理証明HDL
状態爆発問題
ステートレス・モデルのまとめ [3/3]
ステート表現なしでも同期回路を直感的に
記述できるか︖
51
フィードバック・リープモデル
ステートレス・モデル
同期回路の特徴付け
回路モデルの⽐較
52
状態爆発対策 汎用HDL
定理証明手法
ステート表現回避
非同期回路
同期回路
フィードバック・リープモデル ○ × ○ ○ステートレス
・モデル ○ ○ ○ ︖
︖について要調査
ステートレス・モデルにおける同期回路
ステートレス・モデルをベースとしたHDLで,同期回路を直感的に記述できるか︖
まだHDLを実装していないので,現時点では︓
53
ステートレス・モデルにおいて,同期回路を特徴付けすることができるか︖
非同期回路同期回路
︖
同期回路の定義について [1/4]
[従来の定義1]︓同期回路 = フィードバック・ループにD-FFを持つ回路
組合せ回路
D-FF
⼊⼒ 出⼒
ステート出⼒
クロック
ステート⼊⼒
54
ステートレス・モデルで同期回路を特徴付けるためには,従来考えられてきた同期回路の定義を⾒直す必要がある.
同期回路の定義について [2/4]
[従来の定義1]は回路の構造を指定しているため,ステートレス・モデルに適用できない.
D-FFが天下り的に与えられており,あまりに経験的な,視野の狭い定義と思われる.
他方,[従来の定義2]︓制御信号の変化に基づいてステートが遷移すること
を同期とする考え方もある.
55
同期回路の定義について [3/4]
フィードバック・ループにメモリを持つ回路を考える.
[従来の定義2]にマッチするが,これは同期回路と⾔って良いものだろうか…︖理論的には任意の過去の⼊⼒を参照できるので,これは順序回路全体を表しているようなもの.
メモリデータライト
制御信号, アドレス
データリード
組合せ回路⼊⼒ 出⼒
ステート出⼒ステート⼊⼒
56⇒ これを同期回路と考えない
同期回路の定義について [4/4]
D-FFを用いた定義 [従来の定義1] ⇒ 狭過ぎる
制御信号でステート遷移 [従来の定義2] ⇒ 広過ぎる
57
この間に位置する新たな同期回路クラスをステートレス・モデル上で定義したい.
議論の道筋
従来の同期回路の定義はフィードバック・ループモデル上でなされているため,まずはこれの抽象化であるフィードバック・リープモデルにおいて議論する.
フィードバック・ループモデル
(従来の同期)
フィードバック・リープモデル
ステートレス・モデル
(目的はここ)
抽象的具体的
①
58
①
②
f
D-FF同期回路の参照関数 rは以下のようであった︓
f f
t0 t1 t2
r(t1)= t0 r(t2)= t0
r : 時間 → 時間
フィードバック・リープモデルでの同期回路 [1/5]
59
フィードバック・リープモデルでの同期回路 [2/5] D-FF同期回路
クロック
直列D-FF同期回路
クロック
: 参照関数
D-FF D-FF
組合せ回路
D-FF
⼊⼒ 出⼒
ステート出⼒
クロック
ステート⼊⼒
60
組合せ回路
⼊⼒ 出⼒
ステート出⼒
クロック
ステート⼊⼒
フィードバック・リープモデルでの同期回路 [3/5]
メモリ装備回路
t0 t1
制御信号 t1のステートをリード
ステートのライト
ステートのライト
t2 t3
t0のステートをリード
61
メモリライトリード
組合せ回路⼊⼒ 出⼒
ステート出⼒ステート⼊⼒
制御信号
フィードバック・リープモデルでの同期回路 [4/5]
参照関数の⽐較︓
メモリ装備回路
︓ 時間の流れ︓ 参照関数
D-FF同期回路
直列D-FF同期回路
順序保存(order-preserving)
順序保存でない
62
フィードバック・リープモデルでの同期回路 [5/5]
フィードバック・リープモデルについて次を提案︓
妥当性︓1. 従来の同期回路を含む. ⇒ 上位概念2. 特定の回路要素に依存しない. ⇒ 狭すぎない3. メモリ装備回路は含まれない. ⇒ 広すぎない4. 時間が唯⼀持つ構造である
順 序 に基づいている. ⇒ 必然的63
参照関数が順序保存のものを同期回路とする.
定義域を与える関数 d : T → P(T) に注目
ステートレス・モデルでの同期回路 [1/7]
定義域
t0
定義域
t1 t2 t3t1
ft1の定義域 ft1
t2
ft2の定義域 ft2
一般的な定義域=過去 特定の回路クラス⇒より限定される
時間 時間のべき集合 64
過去の⼊⼒に依存して出⼒を定める関数 であった.
ステートレス・モデルでの同期回路 [2/7]
D-FF同期回路の定義域に注目.
定義域
t0
定義域
t1 t2 t3
クロック
定義域はクロック・エッジに限定できる.
時間の進⾏と供に,定義域が包含関係となっている.65
ステートレス・モデルでの同期回路 [3/7]
マルチクロック同期回路の定義域︓
クロック1
クロック2
66やはり,時間の進⾏と供に定義域が包含関係となっている.
ステートレス・モデルでの同期回路 [4/7]
直列D-FF同期回路(下図)の定義域︓
組合せ回路
D-FF D-FF
⼊⼒ 出⼒ステート出⼒
クロック
ステート⼊⼒
クロック
包含関係にはなっていないが,時間の進⾏と供に,定義域も時間方向に進⾏する感じはある.⇒ 順序保存性
67
ステートレス・モデルでの同期回路 [5/7]
メモリ装備回路の定義域︓
時間の進⾏と定義域変化の間に関係性が⾒られない.
t0 t1
メモリコントロール信号
ステートをライト
ステートをライト
t2 t3
68
t1のステートをリード
t0のステートをリード
ステートレス・モデルでの同期回路 [6/7]
やはり “順序保存=同期回路” といえそう.
D-FF同期回路,マルチクロック同期回路
包含
直列D-FF同期回路順序保存 順序保存でない
メモリ装備回路
定義域の変化について…
69
ステートレス・モデルでの同期回路 [7/7]
順序構成的 = 制御信号の与え方に依らず順序保存= 時間Tの順序をP(T)に導⼊可能
70
次を提案︓
定義域関数が順序構成的なものを同期回路とする.
これはフィードバック・リープモデルでの同期回路を含む.⇒ 従来の同期回路を含む.
より正確には,定義域はクロック等の制御信号に応じて決まるので,“クロック等の制御信号の与え方に依らず順序保存である”
という考慮が必要.こうして定義される性質を順序構成的と呼ぶ.
ステートレス・モデルでの同期回路 – まとめ
ステートレス・モデルでの同期回路の特徴付けとして,同期回路の新たな定義(広義の同期)を提案
71
新たな定義の妥当性︓1. 従来の同期回路を含む. ⇒ 上位概念2. 特定の回路要素に依存しない. ⇒ 狭すぎない3. メモリ装備回路は含まれない. ⇒ 広すぎない4. 時間が唯⼀持つ構造である
順 序 に基づいている. ⇒ 必然的
本研究の副産物として [1/2]
ここまでフィードバック・リープモデルでの同期概念について議論してきたが、これはより⼀般的な結果とみることができる.
72
従来の同期(フィードバック・ループ
による定義)
抽象的具体的機能的視点構造的視点
理論的経験的
広義の同期(ステートレス・モデルでの順序構成的)
回路の同期概念について理論的な定義を⽰した
D-FF同期回路の位置付け(一般にべき集合には包含関係による順序が定まるが,)P(T)に導かれるのが包含順序 ⇔ D-FF同期回路.
73
本研究の副産物として [2/2]
広義の同期の妥当性を裏付けている
D-FF同期回路は,広義の同期においても唯⼀の特別なクラスとなっている.
74
非同期回路も記述可能な回路モデル+ 証明が可能な論理体系
汎用HDL定理証明手法
非同期回路記述
定理証明HDL
状態爆発問題
(背景と目的はこうであった)
全体のまとめ [1/4]
背景︓ ハードウェアの形式検証をより実用的にしたい 状態爆発問題の回避のために定理証明手法に注目 定理証明⾔語上のドメイン固有⾔語では普及しない 同期回路のみを対象としていては普及しない
目的︓定理証明HDLの実現を目指し,非同期回路も記述可能な回路モデルと,証明が可能な論理体系
を構築する.75
全体のまとめ [2/4]
76
提案1︓フィードバック・リープ回路モデル フィードバック・ループを抽象化したモデル 様相論理による証明が可能
しかし,状態爆発問題の懸念が残る
提案2︓ステートレス回路モデル 回路を過去の⼊⼒の関数として表したモデル やはり様相論理による証明が可能 ステートを用いないが同期回路を特徴付け可能
定理証明HDLのベースとなり得る
77
状態爆発対策 汎用HDL
定理証明手法
ステート表現回避
非同期回路
同期回路
フィードバック・リープモデル ○ × ○ ○ステートレス
・モデル ○ ○ ○ △
特徴付けは可能
全体のまとめ [3/4]
全体のまとめ [4/4]
78
提案3︓広義の同期回路という概念 ステートレス・モデルでの同期回路の特徴付けは,
⼀般的な概念といえる. 広義の同期とは
“時間の順序を保存しつつ時間を再定義するもの”であった.
その中でもD-FF同期回路はやはり特徴的位置付けとなる.
今後の課題
79
課題1︓ステートレス・モデル+慣性遅延ステートレス・モデルについて本論⽂で⽰した論理体系はイデアル遅延を対象としていたが,より⼀般的な慣性遅延について実現性の検討が必要である.
課題2︓複数ビット信号の表現本論⽂で⽰したステートレス・モデルでは複数ビットの信号を直接的に記述することができない.対策として圏論のプロダクトを応用した表現方法が有⼒と思われる.
課題3︓同期回路の設計容易性本論⽂ではステートレス・モデルにおける同期回路の特徴付けを明らかにしたが,これは定理証明HDLを実装したときの設計容易性を保証するものではない.同期回路の設計を容易にするには様相論理を時相論理に帰着させるなどの対策が必要である.
80
以降は補⾜資料
補⾜1 : フィードバック・リープモデルの定理
⇔ FIFO同期回路(下図)で表せる.定理︓参照関数が順序保存
組合せ回路
FIFO
⼊⼒ 出⼒ステート出⼒
制御信号
ステート⼊⼒
81
補⾜2 : マルチクロック検証の公理
代表的な恒真命題を集めた以下を公理とする.
82
補⾜3 : 公理の健全性と完全性
前掲の公理の健全性クリプキ意味論に基づき,成り⽴つする命題を公理としているので,健全性がいえる.(⼀般論として,クリプキ意味論から導かれる公理には健全性がある.)
前掲の公理の完全性完全性を⽰すのは難しいと思われる.
83
健全性︓公理から導かれた結果が元々の意味において正しい完全性︓元々の意味において正しいことは全て公理から導かれる
補⾜3 : 公理の健全性と完全性
前掲の公理の健全性クリプキ意味論に基づき,成り⽴つする命題を公理としているので,健全性がいえる.(⼀般論として,クリプキ意味論から導かれる公理には健全性がある.)
前掲の公理の完全性完全性を⽰すのは難しいと思われる.
84
健全性︓公理から導かれた結果が元々の意味において正しい完全性︓元々の意味において正しいことは全て公理から導かれる
補⾜5︓ステートレス・モデルの健全性と完全性
85
前提とする回路要素(例では論理ゲートなど)に関する推論規則を公理とみなしたとき︓ 健全性
クリプキ意味論に基づき,成り⽴つする命題を公理としているので,健全性がいえる.
完全性回路から導かれるべき性質を表すために必要となる前提が全てそろっていれば,完全性が成り⽴つといえる.
健全性︓公理から導かれた結果が元々の意味において正しい完全性︓元々の意味において正しいことは全て公理から導かれる
補⾜6︓非同期FIFOの検証
RS-FFの推論規則︓
86
S=1 Q=1
Q=a
R=0
S Q
R
reg
reg Q=a
グラフ表現︓
(regは内部のフィードバック・ループに相当)
推論規則︓
(セット)
(保持)
S
RS-FF
R
Q
R=1 Q=0(リセット)
S=0
補⾜7︓非同期FIFOの検証
87
regDD
RQ
D
RQ
ACK
D∃Δ1
regDD
RQ
D
RQ
ACK
D∃Δ reg
DD
RQ
D
RQ
ACK
D∃
線型性
regD D
regD D
Δ∃
線型性
この制約を後の証明のために表現し直す︓
補⾜8︓非同期FIFOの検証
必要なタイミング制約その2︓
88
左側を通るパスの方が遅くなくてはならない.= 前ユニットがデータを出し終える前に後ユニットはラッチを終える.
S
SR-FF
RQ
D-Latch
EN
D
RQ
ACK
ANDN
S
SR-FF
RQ
EN
前ユニット 後ユニット
補⾜9︓非同期FIFOの検証
89
やはり後の証明のために表現し直す︓
regD D
RQ
D
RQ
ACK
D∃Δ
regD D
RQ
D
RQ
ACK
D∃Δ2線型性
補⾜10︓同期回路の定義について
[従来の定義1’]︓
(いわゆるマルチクロック同期)
組合せ回路
D-FF
⼊⼒ 出⼒
ステート出⼒
クロック1
ステート⼊⼒
D-FFクロック2
複数種類のクロックについても含めて“同期回路”とされる場合もある.
90
補⾜11︓順序構成的の定義1
より正確には,定義域はクロック等の制御信号に応じて決まるので,“クロック等の制御信号の与え方に依らず順序保存か︖”
を議論する必要がある. P(T) に,定義域関数 d から導かれる二項関係 R を定義できる︓
t0 < t1 ⇒ (d t0) R (d t1)例︓
t0 t1 t2 t3
{t0,t1} R {t0,t2}d t2
d t3
91
補⾜11︓順序構成的の定義2
導⼊されるこの二項関係Rが半順序となっているとき,定義域関数dを順序構成的と呼ぶ.
順序構成的 = 制御信号の与え方に依らず順序保存= 時間Tの順序をP(T)に導⼊可能= 時間Tの順序をP(T)上に再定義可能
92