Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
1Okayama Prefectural University
モデル検査技術による組込みシステム向けフォーマル検証手法
岡山県立大学 情報工学部 情報システム工学科
教授 有本 和民
2Okayama Prefectural University
HDL記述
仕様
テストベンチ生成
テストベンチ テスト
従来のH/W検証はランダムテストが主流
問題点:ランダムテストではテストの網羅性が保証できない大規模な設計に対しては検証コストが大きい
従来技術とその問題点
3Okayama Prefectural University
モデル生成
HDL記述
仕様
抽象HDL 論理
モデル
モデル検査
抽象化
1.網羅的かつ自動検証が可能なモデル検査を用いた
IPコア検証手法
2.HDLの抽象化技術
従来困難であった、以下が実現可能に○ 網羅的な動作検証が可能○ 抽象化による検証コスト削減
新技術の特徴・従来技術との比較
4Okayama Prefectural University
状態爆発の危険性モデルの網羅的探索
H/W設計検証への記号モデル検査の適用
HDL記述
仕様
論理モデル化
記号モデル検査
設計誤り検出
論理モデル
HDL記述(簡単化)
HDL記述の簡単化により検証コストの増加を抑制
記号モデル検査- 形式検証手法の一種- -論理モデル化された状態遷移系の網羅的探索による検証
仕様
論理モデル化
記号モデル検査
設計誤り検出
論理モデル
HDL記述
新技術の目的
5Okayama Prefectural University
H/W設計検証への記号モデル検査の適用
1. Verilog-HDLの振る舞いのSMV言語での表現2. Verilog-HDL記述の簡単化手法の考案3. 適用実験としてM8RマイクロプロセッサのVerilog-
HDL記述の一部をNuSMVで検証
Verilog-HDL
仕様
HDL(簡単化)
論理モデル(論理式)
モデル(SMV言語)
設計誤り検出
NuSMV
Verilog-HDLによるH/W設計を対象
記号モデル検査器NuSMV(モデル検査ツール)を利用
新技術の概要
6Okayama Prefectural University
SMV言語 - モデルの記法SMV言語:NuSMVのモデル記述言語
VAR
x : word[3];
ASSIGN
init(x) := 0b3_000;
next(x) := case
x = 0b3_011 : 0b3_000;
TRUE : x + 1;
esac;
SPEC AG!(x = 0b3_100)
変数宣言部モデル内の変数をブール型(boolean),列挙型({on,off}) ,ワード型(word[1])等で宣言.
遷移系記述部各変数の初期状態での値(init()),遷移後の状態での値(next())を定義.
検査式記述部モデルが満たすべき特性を時相論理式で記述.(例) AG「必ずつねに〜する」
AF「必ずいつか〜する」
7Okayama Prefectural University
モデルは状態遷移システムとして解釈される
SMV言語 - モデルの解釈
VAR
x : word[3];
ASSIGN
init(x) := 0b3_000;
next(x) := case
x = 0b3_011 : 0b3_000;
TRUE : x + 1;
esac;
SPEC AG!(x = 0b3_100)
変数xは3ビットのワード型x = 000, 001, …, 111
xの初期値は,000
満たすべき特性は「必ずつねにx=100でない」
検査結果はTRUEとなる
xの遷移後の値は,x = 011 のとき 000
それ以外のとき x + 1
000 → 001 → 010 → 011
8Okayama Prefectural University
対象とするVerilog記述
M8Rではassignブロックとalwaysブロックを用いて論理回路の振る舞いを記述
assign R = p & q;
always @(posedge PHI)
begin
x = in1 & in2;
end
イベント:ブロックを実行する条件
ブロック:逐次実行される処理の集合
assignブロック:単純な組み合わせ回路
alwaysブロック:信号の変化によって動作する順序回路
9Okayama Prefectural University
assignブロックの表現
assignブロックは単純な組み合わせ回路
next()を用いた代入文で表現
Verilog記述
assign R = p & q;VAR
R : boolean;
p : boolean;
q : boolean;
ASSIGN
next(R) := p & q;
SMV言語によるモデル
変数Rの値は組み合わせ回路p∧qの出力
次状態のRの値は,p∧q
10Okayama Prefectural University
2.aflgが真ならばブロックを実行
alwaysブロックの表現
alwaysブロックはイベントに起因する順序回路
1.ブロックの実行を表す変数aflgを定義し,イベントに応じてaflgの値を更新
always @(posedge PHI)
begin
x = in1 & in2;
end
PHIの立ち上がりによりブロック内の処理を実行
VAR
PHI : boolean;
aflg : boolean;
ASSIGN
init(aflg) := FALSE;
next(aflg) := case
next(PHI) & !PHI : TRUE;
TRUE : FALSE;
esac;¬PHI∧next(PHI)ならば,aflgは真
11Okayama Prefectural University
alwaysブロックの表現
always @(posedge PHI)
begin
x = in1 & in2;
end
VAR
PHI : …
x : boolean;
in1 : boolean;
in2 : boolean;
ASSIGN
init(aflg) := …
next(x) := case
aflg : in1 & in2;
TRUE : x;
esac;
2.aflgが真ならばブロックを実行
aflgが真なら,
代入文「x=in1&in2」を実行
そうでなければ,変数xについては何もしない
12Okayama Prefectural University
ブロック内の代入文の統合
case文は単一の代入処理を表現
always @(…) begin
if (in0==0) x = in1;
else x = in0;
y = x & in2;
if (in2==0) x = 1;
end
条件演算子(?:)で1つの代入文へと統合x = (in2==0) ? 1 :
(in0==0) ? in1 :
in0
次状態での変数の値が複数の代入文で書かれる場合は?
次状態での変数の値が代入文の逐次処理で決まる場合は?
y = (in0==0) ? in1 & in2 :
in0 & in2
13Okayama Prefectural University
統合した代入文の表現
x = (in2==0) ? 1 :
(in0==0) ? in1 :
in0
y = (in0==0) ? in1 & in2 :
in0 & in2
統合した代入文をcase文で表現
VAR
…
ASSIGN
next(x) := case
aflg & in2==0 : 1;
aflg & in0==0 : in1;
aflg : in0;
TRUE : x;
esac;
VAR
…
ASSIGN
next(y) := case
aflg & in0==0 : in1&in2;
aflg : in0&in2;
TRUE : x;
esac;
14Okayama Prefectural University
記述の簡単化
always @( d1ropcod ) begin
casez( d1ropcod )
8'b00000???: d1dop1de = `DEC1¥_ADD;
8'b00010???: d1dop1de = `DEC1¥_ADC;
8'b00100???: d1dop1de = `DEC1¥_SUB;
8'b00001???: d1dop1de = `DEC1¥_AND;
8'b00011???: d1dop1de = `DEC1¥_OR;
8'b00101???: d1dop1de = `DEC1¥_XOR;
…
default: d1dop1de = `DEC1¥_X;
endcase
…
end
不定値を含む条件文
always @( d1ropcod ) begin
casez( d1ropcod[7:3] )
8'b00000: d1dop1de = `DEC1¥_ADD;
8'b00010: d1dop1de = `DEC1¥_ADC;
8'b00100: d1dop1de = `DEC1¥_SUB;
8'b00001: d1dop1de = `DEC1¥_AND;
8'b00011: d1dop1de = `DEC1¥_OR;
8'b00101: d1dop1de = `DEC1¥_XOR;
…
default: d1dop1de = `DEC1¥_X;
endcase
…
end
判定に影響しない部分を削除
15Okayama Prefectural University
実験
検査対象
検査項目
8bitマイコンM8Rの設計内のデコーダ部分
変数:29,alwaysブロック:6(M8R全体) 変数:149,alwaysブロック:77
AND命令に対応する信号(0b5_00001)が入力されたとき,必ず正しい制御信号(0ud16_57076)が生成される
AG I1HOPCOD[7:3]=0b5_00001
-> AF d1dop1de=0ud16_57076
振る舞いと等価なCTL式
16Okayama Prefectural University
実験結果実験内容
HDL記述の簡単化の有無に関するコスト比較
コスト=BDDノード数と検証時間
COI(cone of influence)オプションの効果についても検討
検査式に関連する部分のみをモデル化
ノード数 検査時間(秒) coi
簡単化無938,293 1,554.12 無
885,617 0.72 有
簡単化有909,919 1,480.96 無
610,372 0.51 有
簡単化によるノード数の減少を確認
簡単化によりCOIの効果が上昇
※実験環境:[OS]Windows 7(32bit),
[CPU]Intel Core i7 2.67GHz, [メモリ]3GB RAM
17Okayama Prefectural University
H/W設計検証への記号モデル検査の適用まとめ
VerilogによるH/W設計へのNuSMVの適用事例を報告
1. Verilog-HDLのSMV言語によるモデル化2. Verilog-HDL記述の簡単化3. M8Rマイクロプロセッサの一部をNuSMVで検証
• COIオプションの効果が大きい• 簡単化によってCOIの効果が上昇
Verilog-HDL
仕様
HDL(簡単化)
論理モデル(論理式)
モデル(SMV言語)
設計誤り検出
NuSMV
今後の課題 HDL記述の抽象化の高品位化と自動化
18Okayama Prefectural University
統合設計フロー
従来方式 本提案方式
19Okayama Prefectural University
当該技術で想定できる事業や解決すべき課題
モデル生成
HDL記述
仕様
抽象HDL 論理
モデル
モデル検査
抽象化
検証支援環境
HDL記述の抽象化およびモデル生成を自動的に行うための検証支援環境⇒市場からの要求は非常に大
技術応用の事例が少なく,開発コスト削減の効果と導入コストを比較しての評価がまだ不十分である.
20Okayama Prefectural University
1.獲得できる技術
2.獲得した技術で可能な応用展開先
•フォーマル検証ツールを利用するための技術•HDL設計にフォーマル検証を適用するためのノウハウ
フォーマル検証技術は初期導入コスト必要だが利用した場合の利益が大きい。(検証ランニングコスト最小化)獲得した技術により組込みシステムの開発コストを大幅に削減できる.
メーカへの効果
21Okayama Prefectural University
想定される用途(1)
1.組込みシステム向けIP設計の網羅検証
2.複数のIPを接続したシステムレベルでの結合網羅検証(プラットフォーム設計スタイルへの適用)
3.組込みシステム向けIPの受け入れ網羅検証(購入IP等への活用)
22Okayama Prefectural University
想定される用途(2)
1.組込みソフトウエアのクリーンルーム検証(アウトソーシング活用)
2.モデルベース設計向け検証ツール(モデルベースデザインへの対応)
3.IP認証機構(コンプライアンス試験等への寄与)
23Okayama Prefectural University
研究者 技術者
検証技術
導入支援
設計データ
現場の評価
開発現場での
実地評価
技術開発現場への導入
評価と分析
製品化
共同研究開発の概要
共同研究開発のロードマップの概要
共同研究開発概要
24Okayama Prefectural University
技術開発• 提供された設計データを利用して,効
果的な抽象化手法について検討• モデルを効率的に生成するための手法
について検討
現場への導入• フォーマル検証ツールの利用支援• 開発した手法を利用した検証の実施
当該年度開発計画案
25Okayama Prefectural University
お問い合わせ先
岡山県立大学地域共同研究機構
産学官連携推進センター
産学官連携コーディネーター 小林東夫
TEL 0866-94 - 2205
FAX 0866-94 - 2206
e-mail koba@fhw.oka-pu.ac.jp