本文深切認(rèn)為技術(shù)系統(tǒng)不應(yīng)當(dāng)為人們和環(huán)境帶來超出允許風(fēng)險(xiǎn)范圍的安全風(fēng)險(xiǎn)。完全沒有風(fēng)險(xiǎn)是不現(xiàn)實(shí)的,所以風(fēng)險(xiǎn)可接受與否在于其嚴(yán)重程度。每個(gè)領(lǐng)域?qū)山邮茱L(fēng)險(xiǎn)程度都有自己的定義,并使用不同的安全等級對其進(jìn)行衡量。對于電氣和可編程系統(tǒng)來說,得益于一系列標(biāo)準(zhǔn)建立,由此形成了關(guān)于功能安全的共識(shí)。這些標(biāo)準(zhǔn)適用于不同的應(yīng)用領(lǐng)域,但它們都基于由IEC61508標(biāo)準(zhǔn)派生出的安全理念。
圖1:常見的功能安全標(biāo)準(zhǔn)概覽
IEC61508標(biāo)準(zhǔn)覆蓋了系統(tǒng)的整個(gè)生命周期,并著重為系統(tǒng)中可能出現(xiàn)危險(xiǎn)的部分制訂了相關(guān)規(guī)范。該標(biāo)準(zhǔn)旨在提供從零開始設(shè)計(jì)系統(tǒng)的最安全方式。實(shí)現(xiàn)功能安全的普遍措施是添加額外的元器件,用于監(jiān)控功能的正常運(yùn)行以及在發(fā)生不正常的情況時(shí)對系統(tǒng)進(jìn)行控制。這個(gè)理念常用于工業(yè)自動(dòng)化或過程工業(yè)領(lǐng)域中。 IEC61508標(biāo)準(zhǔn)定義了功能安全的操作模式:低要求操作模式、高要求操作模式和連續(xù)模式。操作模式則由每年對于安全功能的使用頻率決定。
同時(shí),針對功能安全領(lǐng)域中的標(biāo)準(zhǔn)控制功能的設(shè)計(jì)方法是可選的。IEC61508標(biāo)準(zhǔn)中定義的連續(xù)模式包含這些信息。
通常做法是從分析所有可能對系統(tǒng)產(chǎn)生影響的關(guān)鍵問題開始。所有被定位的問題必須使用參數(shù)進(jìn)行衡量,如暴露時(shí)間、受傷的嚴(yán)重程度以及脫離傷害的可能性。這是典型的風(fēng)險(xiǎn)分析措施,必須在沒有額外電氣保護(hù)系統(tǒng)的情況下對受控設(shè)備施行。系統(tǒng)整個(gè)生命周期的所有部分均必須使用該措施。憑借風(fēng)險(xiǎn)圖,風(fēng)險(xiǎn)分析將提供要求的安全完整性等級(Safety Integrity Level,SIL)。在遵循ISO13849標(biāo)準(zhǔn)的情況下,風(fēng)險(xiǎn)圖將提供要求的性能等級(Performance Level, PL)。PL與SIL相似,均定義了安全等級。在設(shè)計(jì)安全PLC(Safety PLC)、安全變頻驅(qū)動(dòng)器(Safety Drive Inverter)或安全編碼器(Safety Encoder)等安全元器件時(shí),通常的做法是從機(jī)器制造商處獲得要求的安全等級。要求的安全等級旨在將風(fēng)險(xiǎn)降低至允許風(fēng)險(xiǎn)范圍內(nèi)。SIL必須通過安全功能得以滿足,安全功能將由一系列安全元器件或安全設(shè)備實(shí)現(xiàn)。這就意味著單一的元器件無法滿足SIL,僅能用作安全鏈中的一部分。
為了滿足SIL要求,該標(biāo)準(zhǔn)涵蓋了兩種失效情況。第一類包含隨機(jī)失效以及所有類型的隨機(jī)硬件失效,而第二類包含所有系統(tǒng)失效。
隨機(jī)失效
隨機(jī)失效基于不同的參數(shù)進(jìn)行計(jì)算得出,如元器件的失效概率(λ)、診斷覆蓋率(Diagnostic Coverage,DC)、硬件故障裕度(HardwareFault Tolerance,HFT)、共同失效原因(β)以及測試間隔。事實(shí)上,安全與否不是與生俱來的,對于系統(tǒng)出現(xiàn)故障并進(jìn)入到不安全狀態(tài)的情況,IEC61508標(biāo)準(zhǔn)僅涵蓋檢測不到、不安全的失效概率并根據(jù)合適的模式具體說明各類限制,PFD(根據(jù)要求的失效概率,Probability of Failure on Demand)適用于低要求操作模式,PFH(每小時(shí)的失效概率,Probability of Failure per Hour)適用于高要求操作模式和連續(xù)模式。舉個(gè)例子,SIL3安全功能僅限于千年一遇的危險(xiǎn)失效。反之,低要求操作安全功能(PFD)不應(yīng)當(dāng)發(fā)生平均1000次安全要求出現(xiàn)1次失效的情況。作為額外的驗(yàn)收標(biāo)準(zhǔn),IEC61508要求安全失效分?jǐn)?shù)處于指定的SFF(安全失效分?jǐn)?shù),Safe Failure Fraction)范圍內(nèi),這取決于HFT和SIL。
表1:安全完整性等級的PFD和PFH值
SIL |
PFD[要求時(shí)] |
PFH[每小時(shí)] |
1 |
0.01-0.1 |
0.0000001-0.00001 |
2 |
0.001-0.01 |
0.00000001-0.000001 |
3 |
0.0001-0.001 |
0.00000001-0.0000001 |
4 |
0.00001-0.0001 |
0.000000001-0.00000001 |
表2:安全失效分?jǐn)?shù)與硬件故障裕度的關(guān)系
SFF |
硬件故障裕度 |
||
0 |
1 |
1 |
|
<60% |
不允許 |
SIL1 |
SIL2 |
60%-90% |
SIL1 |
SIL2 |
SIL3 |
90%-99% |
SIL2 |
SIL3 |
SIL4 |
>99% |
SIL3 |
SIL4 |
SIL4 |
危險(xiǎn)失效的失效概率可通過實(shí)現(xiàn)診斷功能和冗余得以降低。冗余度需要參照硬件故障裕度(HFT)。HFT值為0的系統(tǒng)發(fā)生1次失效即可產(chǎn)生危險(xiǎn)。也就是說,HFT值為N的系統(tǒng)能夠承受N-1次失效。如果診斷單元能夠檢測到故障并將系統(tǒng)引入安全狀態(tài),局部診斷覆蓋即可降低重大失效帶來的影響。除了故障(硬錯(cuò)誤,Hard-Error)導(dǎo)致的元器件失效概率,設(shè)計(jì)工程師還必須盡量減少軟錯(cuò)誤(Soft-Error)。在測算時(shí),軟錯(cuò)誤率是非常關(guān)鍵的一點(diǎn),因?yàn)橄啾扔插e(cuò)誤導(dǎo)致的失效率,軟錯(cuò)誤率會(huì)提升。
FPGA器件的領(lǐng)先制造商萊迪思半導(dǎo)體公司為客戶提供適用于所有推薦的安全元器件的失效概率和軟錯(cuò)誤率數(shù)據(jù)。
避免系統(tǒng)失效
除了上文提到的情況,另一項(xiàng)當(dāng)務(wù)之急是盡可能避免系統(tǒng)失效,這取決于要求的SIL,而SIL會(huì)因?yàn)榇胧┑臄?shù)量和使用程度發(fā)生變化。產(chǎn)品生命周期中的每個(gè)階段針對系統(tǒng)失效都有不同的要求。規(guī)范概述了以下設(shè)計(jì)流程:實(shí)現(xiàn)、驗(yàn)證和確認(rèn)。針對結(jié)構(gòu)完善的設(shè)計(jì)來說,推薦采用V模式(V-Model)。針對于軟件設(shè)計(jì)和FPGA編程,該標(biāo)準(zhǔn)具體說明了其設(shè)計(jì)階段和驗(yàn)證階段。
圖2:IEC61608-2:2010規(guī)范中針對FPGA設(shè)計(jì)的V模式
綜上所述,功能安全管理技術(shù)方面的措施對于避免系統(tǒng)失效來說是至關(guān)重要的。安全管理包括在研發(fā)開始之前為所有的設(shè)計(jì)和驗(yàn)證步驟制定詳細(xì)的計(jì)劃。由此可見,安全管理人員必須要有一個(gè)定義明確的項(xiàng)目計(jì)劃。
文檔管理
作為安全項(xiàng)目的一部分,必須完善制定文檔管理方面的規(guī)范。文檔管理描述了如何處理、儲(chǔ)存、發(fā)布和修改文檔,以及文檔的訪問權(quán)限和每個(gè)團(tuán)隊(duì)成員的受限情況。版本控制應(yīng)當(dāng)作為自動(dòng)化流程由工具實(shí)現(xiàn)。
需求管理
管理所有的需求是安全項(xiàng)目中非常必要的一部分。每項(xiàng)安全需求在整個(gè)安全項(xiàng)目中都應(yīng)當(dāng)是可追蹤的。安全項(xiàng)目的最終目標(biāo)是確保所有的需求都能夠被正確地實(shí)現(xiàn)。相關(guān)測試可用來確認(rèn)特定的需求能否降低風(fēng)險(xiǎn)。就此而論,必須根據(jù)精確的數(shù)據(jù)、完整性和一致性來組織整理要求。從架構(gòu)到實(shí)現(xiàn)的模塊,模塊測試到整合,再到系統(tǒng)測試的整個(gè)過程中,安全項(xiàng)目必須要能顯示需求產(chǎn)生于哪個(gè)部分。
組織和責(zé)任
分工明確并且結(jié)構(gòu)完善的團(tuán)隊(duì)對于確保高效無縫地完成所有任務(wù)來說是至關(guān)重要的。團(tuán)隊(duì)結(jié)構(gòu)和小組領(lǐng)導(dǎo)應(yīng)當(dāng)按照層次順序設(shè)定。所有的聯(lián)系信息都應(yīng)當(dāng)是可用的,特別是對于分散的團(tuán)隊(duì)來說,必須為團(tuán)隊(duì)成員制定通訊和協(xié)作的方式。這對于審核人員、開發(fā)人員和測試人員能否各司其職具有重要意義。
措施的定義
根據(jù)要求的SIL,該標(biāo)準(zhǔn)提供了一系列適用于每個(gè)生命周期的表格,包含推薦或強(qiáng)烈推薦的措施,可作為默認(rèn)的失效避免工具使用。在研發(fā)開始之前,應(yīng)當(dāng)選擇所有涉及到設(shè)計(jì)和驗(yàn)證方法的技術(shù)。IEC 61508規(guī)范的第2和第3部分列出了所有技術(shù)。第2部分涵蓋了所有硬件領(lǐng)域以及所有ASIC或FPGA領(lǐng)域。第3部分涵蓋了所有軟件領(lǐng)域。FPGA編程被囊括進(jìn)IEC61508標(biāo)準(zhǔn)的第2部分中,這有點(diǎn)讓人費(fèi)解,不過這不是技術(shù)問題,更多的是標(biāo)準(zhǔn)化組織的原因。不過這個(gè)不要緊,因?yàn)殚_發(fā)FPGA軟件的方法與開發(fā)微控制器軟件的方法相似。不同點(diǎn)在于技術(shù)。舉個(gè)例子,仿真技術(shù)在FPGA設(shè)計(jì)過程中更加常用,而微控制器則更需要帶有調(diào)試工具的硬件。
表3:F.2 IEC61508-2表2摘要
設(shè)計(jì)階段 |
參考 |
方法 |
SIL1 |
SIL2 |
SIL3 |
SIL4 |
設(shè)計(jì)輸入 |
1 |
結(jié)構(gòu)化描述 |
HR |
HR |
HR |
HR |
2 |
使用(V)HDL的設(shè)計(jì)描述 |
HR |
HR |
HR |
HR |
|
綜合 |
17 |
內(nèi)部一致性檢查 |
HR |
HR |
HR |
HR |
18a |
門網(wǎng)表文件仿真,用于檢查時(shí)序約束 |
R |
R |
R |
R |
|
設(shè)置、布局和布線生成 |
28b |
使用參考模型(正式的等價(jià)型檢查) |
|
|
|
|
29 |
設(shè)計(jì)規(guī)范檢查 |
|
|
|
|
|
制造 |
32 |
采用經(jīng)過實(shí)踐驗(yàn)證的加工技術(shù) |
HR |
HR |
HR |
HR |
33 |
采用經(jīng)過實(shí)踐驗(yàn)證的設(shè)備西系列 |
HR |
HR |
HR |
HR |
|
|
|
R:推薦 HR:強(qiáng)烈推薦 |
表3展示了降低FPGA設(shè)計(jì)中系統(tǒng)失效的技術(shù)列表的摘要。對于一般硬件和軟件設(shè)計(jì),也有適用的類似表格。使用這些表格的原則是始終如一的。標(biāo)注為“HR”的措施必須得以施行。如果不這么做,那么相關(guān)決策是不合理的。標(biāo)注為“R”的措施應(yīng)當(dāng)在條件允許的情況下使用。
驗(yàn)證和確認(rèn)計(jì)劃
驗(yàn)證和確認(rèn)流程也必須在安全功能實(shí)現(xiàn)之前計(jì)劃好。所有的設(shè)計(jì)階段都要選擇故障避免文檔中的措施進(jìn)行驗(yàn)證。計(jì)劃的措施必須闡明目前的項(xiàng)目將在真實(shí)情況中如何表現(xiàn)。舉個(gè)例子,計(jì)劃的措施可以是靜態(tài)代碼分析。那么對應(yīng)的驗(yàn)證和確認(rèn)計(jì)劃應(yīng)當(dāng)覆蓋所有將由代碼檢查器檢驗(yàn)的軟件模塊(SW-Module),包含使用該工具的流程并將如何對結(jié)果進(jìn)行處理、分析和存檔的說明。
另一個(gè)例子是FPGA設(shè)計(jì)過程中的網(wǎng)表檢查。第一步是明確這個(gè)步驟必須完成,誰來執(zhí)行這個(gè)任務(wù)以及輸入和輸出的文件是什么。下一步是定義進(jìn)行該任務(wù)需要使用的工具以及發(fā)布流程。
該計(jì)劃可用作針對所有驗(yàn)證和確認(rèn)流程的檢查表,能夠?yàn)樗杏?jì)劃流程的完成度提供完整的概覽。
工具認(rèn)證
針對在生命周期中的所有階段密集使用任何類型軟件工具的情況,所有將用于實(shí)現(xiàn)安全部分的工具將按照它們對于安全功能的影響進(jìn)行分析。這意味著,首先需要列出所有的工具,然后將所有的軟件工具根據(jù)工具重要性等級(IEC61508-4:2010標(biāo)準(zhǔn)中的T1、T2、T3等級)進(jìn)行分類。
表4:工具重要性等級
等級 |
定義 |
萊迪思工具 |
T1 |
該等級涵蓋所有帶輸出、不會(huì)對安全功能產(chǎn)生直接或間接影響的工具,例如文檔工具 |
|
T2 |
該等級涵蓋所有帶有輸出,并會(huì)對安全功能產(chǎn)生間接影響的工具。通常支持測試或仿真來驗(yàn)證。上述工具發(fā)生的錯(cuò)誤可產(chǎn)生誤導(dǎo)性的測試結(jié)果,但不會(huì)直接足有安全功能。這些工具包括案例測試覆蓋度量工具、靜態(tài)分析或調(diào)試工具 |
Diamond 2.1Aldec
Active_HDL |
T3 |
該等級中的所有工具均帶有輸出,并直接或間接地影響安全功能。這些工具包括能夠?qū)煳募线M(jìn)行代碼或工具的編譯器或綜合工具、設(shè)置和布線工具等,以及更加先進(jìn)的技術(shù) |
Diamond 2.1 LSC |
表4展示了標(biāo)準(zhǔn)中的相關(guān)定義以及萊迪思工具列表,后者按照使用FPGA實(shí)現(xiàn)安全相關(guān)任務(wù)時(shí)的相應(yīng)等級進(jìn)行分類。在真實(shí)的項(xiàng)目中,該列表需要填上所有使用到的工具。知曉某個(gè)工具在項(xiàng)目中的重要性是有用的,但這并不會(huì)讓人們獲得更加安全的系統(tǒng)。這就是為什么要進(jìn)行額外的工作,比如說進(jìn)行工具認(rèn)證讓工程師對使用的工具有把握。有把握的意思是能夠確認(rèn)或知曉工具發(fā)生的錯(cuò)誤。如果該工具能夠正確地滿足規(guī)范要求并且使用者已經(jīng)獲得了該工具經(jīng)過確認(rèn)的憑據(jù),那么他就可以不受任何約束地使用該工具。如果該工具無法按照規(guī)范要求工作,用戶則需要相關(guān)錯(cuò)誤的信息并暫時(shí)避開導(dǎo)致錯(cuò)誤發(fā)生的情況。如果分析人員得出的結(jié)論是工具的輸出不可信或規(guī)范還不夠詳細(xì),用戶就必須制定其他方法來檢測上述錯(cuò)誤。
分析過程有可能為用戶帶來潛在問題。如果用戶自身不具備有關(guān)該工具的足夠知識(shí)、經(jīng)驗(yàn)或數(shù)據(jù),就會(huì)產(chǎn)生問題。在這種情況下,如果該工具的制造商能夠?yàn)榭蛻籼峁┫嚓P(guān)支持,比如所有必要的數(shù)據(jù),則會(huì)非常有幫助,如果工具制造商還能提供由獨(dú)立機(jī)構(gòu)認(rèn)證和批準(zhǔn)的數(shù)據(jù)和文檔,那就更為理想了。
萊迪思已邀請TüV Rheinland按照IEC61508標(biāo)準(zhǔn)對“Diamond 2.1”工具套件進(jìn)行了高達(dá)SIL 3級別的審核。這為安全項(xiàng)目團(tuán)隊(duì)提供了使用該工具鏈以及所有相關(guān)文檔和安全手冊的便利,使用者無需進(jìn)行額外的確認(rèn)。審核所獲的結(jié)果節(jié)約了項(xiàng)目相關(guān)的成本和時(shí)間,并簡化了為安全應(yīng)用選擇萊迪思FPGA的決策過程。同上述工具一道,萊迪思還可提供經(jīng)過量產(chǎn)驗(yàn)證的 FPGA,可靠并且具備認(rèn)可的失效概率數(shù)據(jù)。由相關(guān)機(jī)構(gòu)頒發(fā)的認(rèn)證讓評估人員更加信任萊迪思的產(chǎn)品,并能加速型號(hào)審核流程。
安規(guī)產(chǎn)品設(shè)計(jì)的工作流程
除了所有的功能安全管理,還要實(shí)現(xiàn)安全設(shè)計(jì)流程以確保產(chǎn)品安全。讓我們假設(shè)有一個(gè)需要實(shí)現(xiàn)SIL 2或SIL 3級別設(shè)備的項(xiàng)目。
項(xiàng)目第一步是建立安全方案。安全方案能夠勾勒出具備相關(guān)細(xì)節(jié)的大致架構(gòu),如包含單通道或雙通道架構(gòu)、通信路徑、輸入和輸出接口、電源等信息。安全要求規(guī)范(safety requirement specification, SRS)由安全方案和產(chǎn)品規(guī)范衍生。為了使方案確定下來,推薦在塊層面執(zhí)行第一次失效模式和影響分析(Failure Modes and Effect Analysis, FMEA)。通常情況下,F(xiàn)MEA結(jié)果會(huì)推進(jìn)要求列表的制定。IEC61508標(biāo)準(zhǔn)提供了一些失效控制措施,包括復(fù)雜電子元器件故障模式和指令故障檢測模式,用于支持結(jié)構(gòu)化分析。在雙通道或多通道架構(gòu)中,共因失效必須得以定位和消除。對于安全設(shè)計(jì)來說,環(huán)境和EMC情況也是非常重要的。根據(jù)應(yīng)用的情況,應(yīng)當(dāng)按需參照其他標(biāo)準(zhǔn)進(jìn)行確認(rèn)和檢視。所有的要求都確定下來之后,就可以按照由高到低,從架構(gòu)到模塊的順序開始設(shè)計(jì)。請記住一定要建立所有步驟的規(guī)范和描述,因?yàn)檫@些輸入文件將用于所有的審核以及測試階段。為了項(xiàng)目流程的順利推進(jìn),所有的測試應(yīng)當(dāng)與開發(fā)同時(shí)進(jìn)行。
在所有的原理圖和電路導(dǎo)出之后,部分FMEA必須完成,隨后進(jìn)行安全參數(shù)的計(jì)算。部分FMEA也會(huì)被用做故障導(dǎo)入測試(Fault Insertion Test, FIT)規(guī)范中的輸入信息。軟件應(yīng)當(dāng)按照圖2所示的流程來實(shí)現(xiàn)。
在完成系統(tǒng)和型號(hào)等所有測試后,該設(shè)計(jì)應(yīng)當(dāng)能夠滿足所有安全要求。最后一點(diǎn)特別關(guān)鍵,所有安全相關(guān)的信息必須寫入新產(chǎn)品的用戶手冊中。