Posts Issued in March, 2020

BSV(Bluespec SystemVerilog)

posted by sakurai on March 12, 2020 #220

BSV(Bluespec SystemVerilog)の注意点

Verilogコードで以下のような回路を設計することを考えます。

reg [31:0] burst_count, dest_burst_size ;
reg        burst_in_progress ;
...
always @(posedge clk)    // burst_in_progress_stop 
begin
   if (burst_in_progress && (burst_count==dest_burst_size))
       burst_in_progress <= False;
   ...
end 

always @(posedge clk)    // burst_count;
begin  
   burst_count <= burst_in_progress ? burst_count+1 : 0;
   ...
end

2個の同期FFグループがあり、最初のFFでは、バースト転送中信号を作成しています。初期状態が不定ですが、なんらかの信号によりburst_in_progressがtrue(=バースト転送中)を示した後は、基本的にバーストを継続します。バーストカウントが規定されたサイズだけ転送したら、バースト転送中をfalseにしてバースト転送を停止させます。

次のFFグループはバーストカウントを計算するFFであり、バースト転送中がtrueの時は1クロック毎に+1だけカウントし、バースト転送中がfalseになったらカウントを0にします。

図220.1に、このverilogコードを図示します。

図%%.1
図220.1 verilogコードの図化
FF間でお互いの情報を使用していますが、クロック同期であり発振することのない、問題の無い回路です。

このコードはBSVでは以下のようになりそうです。

Reg#(Data_t) dest_burst_size <- mkReg (32'h0) ;
Reg#(Data_t) burst_count     <- mkReg (0) ;
Reg#(Bool) burst_in_progress  <-  mkReg (False) ;

rule burst_in_progress_stop (burst_in_progress && (burst_count==dest_burst_size));
   burst_in_progress <= False;
   ...
endrule

rule burst_counting ;
   burst_count <= burst_in_progress ? burst_count + 1 : 0;
   ...
endrule

ところが、これは最初のruleにおいてburst_countがreadされ、burst_in_progressがwriteされます。一方、2番目のruleにおいて、burst_in_progressがreadされ、burst_countがwriteされます。ruleをスキャンする順番により競合が起きます。

これは、ルールが同時に発火するのではないため、順番によって結果が異なるためです。これを避けるには、一つのruleの中に入れれば良いとのことです。このようにすれば変更の同時性が保証されるため、正しく直前のデータを参照することになります。

Reg#(Data_t) dest_burst_size <- mkReg (32'h0) ;
Reg#(Data_t) burst_count     <- mkReg (0) ;
Reg#(Bool) burst_in_progress  <- mkReg (False) ;

rule burst_in_progress_stop (burst_in_progress) ;
   burst_in_progress <= burst_count != dest_burst_size ;
   burst_count <= (burst_count != dest_burst_size)  ? burst_count+1 : 0;      
   ...
endrule

左矢前のブログ 次のブログ右矢

ISO 26262のFTAに関する論文 (18)

posted by sakurai on March 11, 2020 #219

元に戻って最初の論文を見てみたいと思います。元の論文のFTはLFが考慮されていないものでした。これに対して、前稿において、ワーストケース評価をするため、2nd SMのDC(Diagnostic Coverage)をゼロとして評価しました。

これに対して2nd SMのDCを考慮したらどうなるかを前稿と同様の考え方でやってみます。数式やFTの書き換えルールは基本的に前稿を踏襲しますが、IFUモデルとIFRモデルで数式が異なります。いずれにせよ、$K_\text{SM,MPF}=0$とおいたところに仮に$K_\text{SM,MPF}=0.6$と仮定して計算します。

すると、係数$C_\text{SM,MPF}=0.5368$となり、この係数をEBMとOn-line monitorのDPF項に掛けることになるため、そのFTは図219.1のようになります。

図%%.1
図219.1 Fault Tree

図219.2に図219.1のFTの拡大図を示します。C100として上記係数0.5368をかけています。

図%%.2
図219.2 Fault Treeの拡大

MCS分析を実施すると、42個のMCが得られ、3個以上のエレメント故障をカットすると、24個のMCが残ります。結果として、全く変化はありませんでした。

今回カットされた積項を表219.1に示します。加えた定数(赤字)は全て3点故障以上の積項に掛けられており、全てカットされています。ただし、カットされた積項は18個のはずですが、ツールのバグか17個となっています。

表219.1 図219.1のMCSのカット部分
表%%.1

得られたMCSを表219.2に示します。エレメント故障は2以下のみであり、定数を青字で示しています。

表219.2 図219.1のMCS
表%%.2

元々2 outof 4という変則的な2冗長内部のSMなので、IFとSMのANDはそれだけで4エレメント故障の積項となります。従って、この積項に何を追加しても元々消えるべき項でした。

RAMS 2021において、PMHF式に基づくFTA構築法の論文発表が終了したため、本記事を開示します。


左矢前のブログ 次のブログ右矢

ISO 26262のFTAに関する論文 (17)

posted by sakurai on March 10, 2020 #218

参照論文では、前提が誤っている$\dagger$ものの、2nd Edition規格式に近い形でFTを構成しているようです。例えば、AのRFが先に起きて、BのSPF/RFが後から起きる場合と、その逆パターンのORとなっています。一方、規格式ではAのLFが先に起きて、BのSPF/RFが後から起きる場合と、その逆パターンのORとなっています。従って、参照論文のRFをLFと読み替えれば、規格式と結果的に同じになります。

$$ \begin{eqnarray} \Pr\{\text{TOP Failure}\}&=&M_\text{PMHF}T_\text{L} \\ &=&\frac{1}{2}\lambda_\text{E1}\left[(1-K_\text{E1,MPF})T_\text{L}+K_\text{E1,MPF}\tau\right]\cdot \lambda_\text{E2}T_\text{L} \\ &+&\frac{1}{2}\lambda_\text{E2}\left[(1-K_\text{E2,MPF})T_\text{L}+K_\text{E2,MPF}\tau\right]\cdot \lambda_\text{E1}T_\text{L}\\ &=&\frac{1}{2}(\lambda_\text{E1}T_\text{L})(\lambda_\text{E2}T_\text{L})\left(2-K_\text{E1,MPF}-K_\text{E2,MPF}+(K_\text{E1,MPF}+K_\text{E2,MPF})\cdot\frac{\tau}{T_\text{L}}\right)\\ &=&(\lambda_\text{E1}T_\text{L})(\lambda_\text{E2}T_\text{L})C_\text{1, 2}' \end{eqnarray} $$

今回のE1, E2のペアで$C_\text{1, 2}'$を計算したところ、表218.1に示すようにC10からC19の10種類の定数が得られました。

表218.1
定数記号 定数値
C10 0.23572
C11 0.27046
C12 0.30520
C13 0.38626
C14 0.42100
C15 0.53680
C16 0.61786
C17 0.65260
C18 0.76840
C19 1.00000

よって、2AND項にそれぞれこの定数項を加えて3ANDとすれば、図218.1のようなFTとなります。

図%%.1
図218.1 Fault Tree
このMCSを取得したところ、表218.2のような結果となりました。
表218.2 図218.1のFTのMCS
図%%.1
頂上事象侵害確率は$1.159\times 10^{-3}$、PMHFは77.3[FIT]となりましたが、これは真値に対して38%もの過大評価となっています。

$\dagger$前稿でご説明したように、冗長チャネル内のSMは、2nd order SMなので、冗長チャネル内のエレメントの故障の場合は、RFではなくLFとなります。参照論文ではRF、LFの両方が起きると考えています。


左矢前のブログ 次のブログ右矢

posted by sakurai on March 9, 2020 #217

この結果はワーストケースの評価であり、2nd order SMを無視しているものです。従って、この結果をより実際に近づけるには、2nd order SMのDCをFTに入れる必要があります。

まず、数式で書けば、 $$ \begin{eqnarray} \Pr\{\text{TOP Failure}\}=M_\text{PMHF}\cdot T_\text{L}&=&(\lambda_\text{E1}T_\text{L})(\lambda_\text{E2}T_\text{L}) \left[ (1-K_\text{MPF})+K_\text{MPF}\cdot \frac{\tau}{T_\text{L}} \right]\\ &=&(\lambda_\text{E1}T_\text{L})(\lambda_\text{E2}T_\text{L})C_\text{1, 2} \end{eqnarray} $$ ただし $$ K_\text{MPF}=1-(1-K_\text{E1,MPF})(1-K_\text{E2,MPF}) $$ $C_\text{1, 2}$はE1, E2に依存する定数で、 $$ C_\text{1, 2}\equiv(1-K_\text{MPF})+K_\text{MPF}\cdot \frac{\tau}{T_\text{L}} $$

車両寿命$T_\text{L}=15,000[H]$、定期検査周期$\tau=3,420[H]$として、今回のE1, E2のペアで$C_\text{1, 2}$を計算したところ、表217.1に示すようにC1からC9の9種類の定数が得られました。

表217.1
定数記号 定数値
C1 0.2280772
C2 0.2287720
C3 0.2310880
C4 0.2357200
C5 0.2588800
C6 0.3052000
C7 0.3515200
C8 0.5368000
C9 1.0000000

よって、2入力AND項にそれぞれこの定数項を加えて3ANDとすれば、図217.1のようなFTとなります。今回はマニュアル作業により付加しましたが、モデルもしくはツールを開発した暁には自動的に計算が行われる見込みです。

図%%.1
図217.1 2nd order SM効果を追加したFault Tree

このMCSを取得したところ、表217.2の表のような結果となりました。

表217.2 図217.1のMCS
表%%.2

頂上事象侵害確率は$8.321\times 10^{-4}$、PMHFは55.5[FIT]となりました。このように2nd order SMの効果を入れると、PMHFは25%まで低減することがわかります。

RAMS 2021において、PMHF式に基づくFTA構築法の論文発表が終了したため、本記事を開示します。


左矢前のブログ 次のブログ右矢

posted by sakurai on March 6, 2020 #216

前稿で作成したFTLをSAPHIREにインポートすると、図216.1のようなFTが構成されます。MCSの論理式で示されるとおり、2入力ANDの積項が40個、ORで接続されています。

図%%.1
図216.1 MCSのFault Tree

検証としてこのFTのMCSを確認しますが、当然前々稿と同一のMCSになるはずです。インポート前後でMCSは変化しません。表216.1に得られたMCSを示します。

表216.1 MCSのFTをさらにMCS
表%%.1

この頂上事象侵害確率は$3.380\times 10^{-3}$、PMHFは、225[FIT]となりましたが、前回の結果と同一です。


左矢前のブログ 次のブログ右矢

posted by sakurai on March 5, 2020 #215

SAPHIREのFTL(Fault Tree Language)の文法を図215.1に示します。これで見ると分かるように、ゲートの記述がコメントとして書けるようです。

図%%.1
図215.1 FTLのフォーマット
ただし、このように記述しインポートしても、モデルは作成されますがゲートの説明等の記述は入りませんでした。さらに、基事象は全てtoolにより作成済みである必要があります。

調べてみると、FTLのインポートではなく、MAR-D(各種データ)の一括インポートにより、完全なFTが構成できるようです。

図%%.2
図215.2 ターゲットのFT
例えば、図215.2のFTをFlat File (ASCII File)で入力しようとすると、
  • .BED --- Basic Eventの説明等の記述
  • .BEI --- Basic Eventの情報、故障率やミッション時間等
  • .FTD --- Fault Treeの説明等の記述
  • .FTL --- 木の構造
  • .GTD --- Top Event、中間ゲートの説明等の記述

の5種が少なくとも必要なようです。図215.3~215.7の構文ファイルを用意し、そのリストを図215.8のMARDファイルとしてMARDをloadすると、図215.2のFTが生成されました。

図215.3のBEDは基事象の定義で、3種類の基事象の名前と説明を記述します。

TEST =
* Name , Descriptions , Project
BE01 , Failure of 01 , TEST
BE02 , Failure of 02 , TEST
BE03 , Failure of 03 , TEST

図215.3 ターゲットFT用BED

図215.4のBEIは基事象の故障モデル、故障率、ミッション時間を記述します。赤字は故障率、青字はミッション時間です。

TEST =
* Name ,FdT,UdC ,UdT, UdValue, Prob, Lambda, Tau, Mission, Init,PF, UdValue2, Calc. Prob, Freq, Analysis Type , Phase Type , Project
BE01 , 3, , , , , 1.234E-009, , 1.000E+005, , , , , , , ,
BE02 , 3, , , , , 2.345E-009, , 1.000E+005, , , , , , , ,
BE03 , 3, , , , , 3.457E-009, , 1.000E+005, , , , , , , ,

図215.4 ターゲットFT用BEI
ここで、図215.4中のFdtは、表215.1(一部のみ)により規定される故障計算タイプです。
表215.1
故障計算タイプ記号 故障計算タイプ説明
V 数値事象
1 確率
3 指数分布($1-e^{^-\lambda t}$)

図215.5にFT全体の定義として、FTDとして名前と説明を記述します。

TEST=
* Name , Description, Project
TOP ,PVSG of top , ,TEST

図215.5 ターゲットFT用FTD

図215.6にFTの木構造であるFTLを記述します。これは図215.1に文法が書かれています。

TEST, TOP =
TOP OR TOP01 BE03
TOP01 AND BE01 BE02

図215.6 ターゲットFT用FTL

図215.7のGTDにゲートの名前と説明を記述します。

TEST=
* Name , Description, Project
TOP ,PVSG of top , ,TEST
TOP01 , DPF of 01 and 02 , ,TEST

図215.7 ターゲットFT用GTD

上述のように、TESTフォルダのSubsフォルダに、各種ファイルをまとめ、一括ロードするためのリストです。

TEST_Subs\TEST.BED
TEST_Subs\TEST.BEI
TEST_Subs\TEST.FTL
TEST_Subs\TEST.FTD
TEST_Subs\TEST.GTD

図215.8 ターゲットFT用MARD

ここで調査している理由は、SAPHIRE等のFTA toolによりPMHFを正しく計算させたいためです。FTA toolによりPMHFを正しく計算させる手法には2種類あります。

  • モデルがPMHF計算に対応 ------------ モデルがPMHF計算に対応していれば、パラメータを入力するだけで、モデルがPMHF式を正しく計算します。
  • モデルがPMHF計算に非対応 ------------ しかしながら、一般的にはモデルがPMHF計算に対応していないため、ユーザがPMHF式に沿うようにFTを組み上げる必要があります。プログラムでFTのサブツリーが自動生成できれば、その労力が大幅に軽減されます。

左矢前のブログ 次のブログ右矢

posted by sakurai on March 4, 2020 #214

次に、MCSの表から逆にFTを構成します。その理由はFTA tool上でMCSのモデルを修正できるようにするためです。

SAPHIREにおいてFTをインポートするにはFTL(Fault Tree Language)が必要です。そのために、MCSをまずExcel形式でエクスポートし、それをテキストエディタで修正し、以下に示すFTLフォーマットに変換します。

TOP2,TOP-MCS2=
TOP-MCS2 OR TMP1 TMP2 TMP3 TMP4 TMP5 TMP6 TMP7 TMP8 TMP9 TMP10 TMP11 TMP12 TMP13 TMP14 TMP15 TMP16 TMP17 TMP18 TMP19 TMP20 TMP21 TMP22 TMP23 TMP24 TMP25 TMP26 TMP27 TMP28 TMP29 TMP30 TMP31 TMP32 TMP33 TMP34 TMP35 TMP36 TMP37 TMP38 TMP39 TMP40
TMP1 AND M1 M2
TMP2 AND M1 SC2
TMP3 AND SC1 SC2
TMP4 AND M2 SC1
TMP5 AND SA1 SA2
TMP6 AND M1 MCU2
TMP7 AND M2 MCU1
TMP8 AND MCU1 SC2
TMP9 AND MCU2 SC1
TMP10 AND MCU1 MCU2
TMP11 AND I2 M1
TMP12 AND I1 M2
TMP13 AND I1 SC2
TMP14 AND I2 SC1
TMP15 AND I1 MCU2
TMP16 AND I2 MCU1
TMP17 AND I1 I2
TMP18 AND M2 P1
TMP19 AND M1 P2
TMP20 AND P1 SC2
TMP21 AND P2 SC1
TMP22 AND MCU2 P1
TMP23 AND MCU1 P2
TMP24 AND I2 P1
TMP25 AND I1 P2
TMP26 AND D2 M1
TMP27 AND D1 M2
TMP28 AND D1 SC2
TMP29 AND D2 SC1
TMP30 AND D1 MCU2
TMP31 AND D2 MCU1
TMP32 AND D2 I1
TMP33 AND D1 I2
TMP34 AND P1 P2
TMP35 AND CA2 SA1
TMP36 AND CA1 SA2
TMP37 AND D2 P1
TMP38 AND D1 P2
TMP39 AND D1 D2
TMP40 AND CA1 CA2


左矢前のブログ 次のブログ右矢

posted by sakurai on March 3, 2020 #213

FT(fault tree)構築方式について、いろいろと試行してみます。以下のFTに対して、TOP事象侵害確率及びPMHFを取得します。

  • 2nd SM無しのFT
  • 2nd SM有りのFT
  • 規格式どおりのFT

まずワーストケースとして2nd order SMが無いと仮定した場合のFTを構築します。前稿表212.1のデータに基づき、前稿図212.2のRBDから2nd SM無しの場合のFTを作成すると、図213.1のようになります。

図%%.1
図213.1 EPSシステムのFT

TOP事象を単独で侵害する中間事象は2つあり、ひとつはマイコン制御冗長系の故障、もう一つはセンサ冗長系の故障です。従ってこれらはTOP事象にORゲートで接続されます。マイコン制御冗長系もセンサ冗長系もどちらも冗長系なので、例えばマイコン冗長系であれば、チャネル1とチャネル2の故障はANDゲートで接続されます。チャネルの内部は直列系であるため、チャネルを構成するそれぞれのエレメント故障はORゲートで接続されます。

このFTに対してFTA toolでMCSを取得すると、表213.1のように40個の積項(product term)が得られます。

表213.1 図213.1のFTのMCS
表%%.1

この頂上事象侵害確率は$3.380\times 10^{-3}$、PMHFは、225[FIT]となりました。参照論文では、ミッション時間は15,000時間としています。


左矢前のブログ 次のブログ右矢

posted by sakurai on March 2, 2020 #212

参照論文は完全冗長系のEPSを題材としているので、本ブログでもこのEPSシステムのPMHFを計算することにします。なお本論文において車両寿命は15,000時間、2nd SMの検査時間は1時間にしているようです。

図212.1にEPSシステム構成図を示します。

図%%.1
図212.1 EPSシステム構成図

このEPSシステムのRBDを図212.2に示します。

図%%.2
図212.2 システムのRBD

表212.1にRBD中のエレメント記号とエレメント名等を示します。

表212.1
エレメント記号 エレメント名 故障率[FIT] SM記号 SM名 DC[%]
P Power Module 233 None None 0
MCU Micro Control Unit 818 SM4 Self test 99
D Motor Drive Module 109 SM2 Output test 99
I Failure Isolation Module 599 SM1 Input test 60
M Aligning Motor 1000 SM5 Motor sensing test 90
SC Current Sensor 1000 SM2 Output test 99
CA CAN Communication Module 51 SM1 Input test 60
SA Angle Sensor 1000 SM3 Sensor compare 99

この表のSMは、通常は1st order SMとしてVSG抑止のためのSMと位置付けられます。ところが、このように冗長の内部(冗長チャネルを構成するエレメントに対するSM)に存在する場合、冗長の相手チャネルが1st order SMとなります。従って、表中のSMは、それによりVSG抑止される場合のLF防止のSM、つまり2nd order SMと位置付けられます。

例えばあるエレメントが故障しても冗長構成であれば、相手チャネルが動作しているので、VSGは抑止されます。ところが冗長系は、故障の検出は一切行わないため、そのエレメント故障の100%がLFとなります。そのエレメントに故障検出のためのSMがあれば、LF防止のためのSM、つまり2nd order SMとなることがわかります。


左矢前のブログ 次のブログ右矢


ページ: