2014年11月19日 诊断

在IEC61508安全关键系统中使用模拟和仿真——与Andreas Buchwieser的访谈

由Jakob Engblom.

jakob-engblom-intro-picture

在Wind River,我们与使用各种形式的安全关键系统的客户交易很多。世界上许多最重要的系统今天由Wind River操作系统提供动力,并使用风河工具开发。因此,我们在如何开发安全关键系统方面建立了相当多的专业知识。在本博客文章中,我采访了andreas buchwieser,他们与我们的安全关键操作系统平台合作,用于运输,工业自动化,过程控制,汽车和医疗系统。我们将探讨模拟和仿真方式西米奇可以用于开发这些地区的系统。值得注意的是,航空航天是一个不同的市场,有着不同的需求、流程和标准,与我们将在这里讨论的不同——Simics已经在这个市场中得到了广泛的应用前面讨论的

Jakob Engblom(JE):请自我介绍!

Andreas Buchwieser (AB):

andreas-buchwieser-small

我是Andreas Buchwieser,产品管理总监,负责工业、医疗、汽车和运输市场的安全组合和认证。在我2006年加入风河公司之前,我从2003年起一直在国防和汽车行业从事与安全相关系统的建筑顾问工作。在风河公司,我曾负责工业设备(IEC61508, IEC60880),交通系统(EN50128, IEC 62279),医疗器械(IEC62304)的开发项目。代表风河,我也与认证机构密切合作,如TÜV Süd, TÜV Rheinland, TÜV Nord,和劳埃德注册铁路。

JE:那么你对在安全关键系统的开发中使用模拟有什么想法?

阿瑟:仿真、建模和原型设计是安全关键系统开发的组成部分:它们用于补充验证过程,验证软件体系结构设计,用于实现功能的概念捕获(开/闭环控制,监控),以及用于模拟真实的物理系统行为。

标准如IEC 61508,EN 50128和ISO 26262强烈推荐仿真技术。我一直在讨论使用各种认证机构的模拟,并且对使用认证系统的模拟有很多兴趣。

在认证项目中,我看到Simics在三个主要领域可以成为一个巨大的资产——这个列表可能并不全面。一是在诊断软件测试过程中使用故障注入。另一个是需求的早期验证,在问题变成真正的问题或bug之前找到问题。第三个是增加模块测试期间的覆盖率指标。

ab-pullout

JE:我碰巧喜欢故障注射,所以让我们从这个主题开始。您对故障注入和安全标准的思考是什么?

阿瑟:与安全相关的设备必须实现内置功能,以控制运行中的故障。这些故障通常是随机的硬件故障。为了控制随机硬件故障,必须实施一些措施——即所谓的“诊断”。这些诊断是经过认证的软件的一部分,必须经过与计算出的安全完整性级别(SIL)相对应的严格验证。事实上,验证诊断软件是安全或认证项目中最困难的部分之一。这类软件用于诊断硬件的问题,检测问题,阻止问题扩散,并将整个系统带到安全状态。这是很难测试的。

安全标准中验证的强烈推荐技术之一是故障注入。

JE:在没有模拟器的情况下如何测试验证软件?

阿瑟:你如何让硬件以一种可控的方式失效,以你希望它失效的方式失效,你如何重复它?今天,您通常使用调试器。当使用调试器验证诊断时,有两个问题:

  • 调试模式下的可执行文件与发布版本不一样
  • 识别地址和符号很麻烦
  • 程序执行必须停止
  • 没有寄存器和操作码的可追溯性

使用SIMICS,您可以模拟处理器和目标环境,并使用软件发布版本引入系统中的故障。

JE:你自己用过Simics进行故障注入吗?

阿瑟:现在我正在开发VxWorks 7安全配置文件的功能安全经理。为了保持VxWorks 7安全配置文件模块化和可扩展,我们仅用于核心。Wind River还将提供内核的补充片:支持几个架构。PPC-,英特尔和ARM处理器。架构支持将具有集成的处理器诊断,这对客户具有高价值。我们正在调查符合适合用作验证这些集成处理器诊断的手段的工具的方法,这是我前面提到的三个区域中的三个区域之一。

JE:对模拟器的故障注射和诊断测试有什么标准?

阿瑟:安全标准强烈推荐仿真作为安全验证的技术。看看IEC 61508-7,C.5.19部分如何描述模拟如下:

“创建系统,仅用于测试目的,这使得模仿控制器(EUC)的设备的行为。

模拟可以是仅软件或软件和硬件的组合。它应该

  • 提供所有被测试系统的输入,这些输入将在系统安装时存在,
  • 以忠实地表示被控制设备的方式响应来自系统的输出,
  • 为操作输入提供了配置,以提供所需测试的任何扰动。

当正在测试软件时,模拟可以是具有其输入和输出的目标硬件的模拟。“

正在用Simics方法测试的软件是诊断,“受控设备”是所用的处理器。使用Simics有助于在正常操作、预期发生的情况和需要系统操作的不希望的情况下执行验证。Simics很适合这种工作方式。

杰:你会用故障注入模拟更具体?

阿瑟:让我们使用一个简单的例子:IEC 61508要求检测由CPU寄存器和/或内部RAM中的软错误引起的信息变化,以声明中等诊断覆盖率。现在您需要验证所实现的诊断是否正确工作。使用Simics,您只需修改寄存器中的信息,并检查诊断程序是否检测到此“故障”并启动指定的系统反应。

JE:那么需求验证呢?

阿瑟:这与原型开发有关。大多数问题或bug都来自于没有很好地指定需求这一事实。您可以通过开发原型并使用原型来早期验证需求来解决这个问题。使用能够模拟整个系统的系统模拟器,对于这样的早期原型非常有用。通过使用虚拟硬件,您可以深入了解软件和硬件,以及依赖和交互是如何工作的。在IEC 61508标准中,使用仿真的原型被称为一种用软件环境测试软件并更好地理解需求的方法:

原型可以用于任何阶段,以引出需求,或获得需求及其结果的更详细视图。

IEC 61 508:验证和验证工具如模拟器。

软件应模拟:

1)正常运行时出现的输入信号;

2)预期的出现;

3)要求系统动作的不期望条件;

功能和黑盒式测试:原型动画。“

JE:当IEC 61508提到原型设计时,它以什么方式与认证相关?

阿瑟:安全标准要求通过功能测试和黑盒测试来验证软件体系结构,其中包括与底层硬件的交互。对于开发人员来说,在项目的早期阶段了解资源需求是至关重要的;可靠的估计可以通过原型得到。一个可靠的Simics模型有助于检查针对任何给定约束实现系统的可行性。

je:原型在早期阶段完成的声音?

阿瑟:是的。这在设计流程的早期就开始了。让我们举一个简单的例子:假设您已经选择了一个处理器和一定数量的RAM,并且您必须定期检查RAM是否出错。通常,您会在过程的后期进行此操作。但是,如果系统一直忙于RAM检查怎么办?使用模拟器,您可以看到RAM检查在早期阶段是否完全可行。你需要改变到一个更快的处理器或改变到ECC RAM,以消除对RAM检查的需要。

这与错误注入不同,后者是在项目结束时验证所实现的内容是否真正有效时出现的。

je:我们在讨论开始时提到的最后一个问题是增加报道指标的增加。这意味着什么?

阿瑟:安全标准强烈推荐所谓的“基于结构的测试”来测试软件模块。目标是练习很大比例的程序代码。代码覆盖率的百分比是不同的,取决于所需的严格程度,但对于高关键的软件,以下需求通常适用:

  • 结构测试覆盖(陈述)100%
  • 结构试验覆盖(分支机构)100%
  • 结构测试覆盖率(条件,MC/DC) 100%

软件在某些点上与硬件通信,并对硬件事件作出反应。这使得达到安全标准的覆盖要求非常麻烦,如果不是不可能的话。测试人员不能轻易触发导致软件执行程序代码的特定部分的特定硬件事件。请记住,大部分模块测试仅在主机环境上完成,而不是在真正的硬件上。结果是覆盖率不能满足100%的需求,测试人员需要通过添加论证语句来解决这个问题。这承担了一些认证风险,因为它可能不会被评审人员接受。Simics将极大地帮助增加结果覆盖率,因为它可以模拟导致某些程序代码被执行的特定硬件事件。

JE:这是有道理的,我们已经看到许多用户使用Simics强迫罕见事件或极端条件发生,以便测试由这些事件触发的代码。

然而,人们所关心的一个问题是如何知道您在Simics中观察到的内容与现实世界有关。你对此有何看法?

阿瑟:我们认为Simics是一个T2工具,它支持设计或可执行代码的测试或验证,其中工具中的错误可能无法揭示缺陷,但不能直接在可执行软件中产生错误。在IEC 61508的第3部分中有一个章节,7.4.4,它提供了如何执行工具确认的指导。Simics的设置必须符合安全标准要求,这将由风河公司和用户共同完成。

JE:这听起来像是标准所采用的一种实用和务实的方法。这似乎意味着可以选择Simics作为IEC 61508标准下软件开发活动的连贯部分。还需要其他什么东西来启用它吗?

阿瑟:我们有几个关于如何使用和限定SIMICS作为T2工具的认证机构的讨论。限定模型的方法是在实际处理器上执行来自Intel等的供应商的现有处理器测试列表,并将结果与​​在SIMICS模型上执行相同的测试。当然,这种方法必须与认证机构相互同意。由于安全项目通常使用已建立的可访问处理器(VS完全新的处理器),因此有真正的硬件比较,促进这种方法。

JE:谢谢,这非常有趣,我确实学到了一些关于安全关键系统的新知识,以及Simics如何应用于他们的开发和测试。

更多相关话题的阅读,请参阅之前的一些博客文章:

以前的数据是物联网的比特币
下一个小鬼自由贸易区