跳转到主要内容

DO-254 到底是什么?先别把它当成 FPGA 开发规范

daniel 提交于

文章来源:FPGA技术联盟

很多 FPGA 工程师第一次接触 DO-254 时,都会下意识地把它理解成下面这几种东西之一:

• 一套“航空 FPGA 开发规范”
• 一份“适航硬件设计标准”
• 一个“认证要交的文档清单”
• “又一套很重的流程要求”

这个理解不能说全错,但如果从这个起点出发,后面大概率会越做越别扭。 因为你会很容易产生几个典型误判:

• 觉得 DO-254 应该告诉你 RTL 怎么写
• 觉得它应该规定状态机怎么编码、约束怎么写
• 觉得只要仿真做得足够强,基本就算“符合 DO-254”
• 觉得它既然不是法规强制条文,那是不是可以“参考着来”

这些想法,都是很多团队刚入门时最常见的认知偏差。

先说结论
DO-254 不是 FPGA 开发规范,也不是技术手册,更不是单纯的文档要求。

如果用一句更准确的话说,它是:

一套面向机载电子硬件的设计保证指南。

这里的关键词不是“设计”,而是“设计保证”。

也就是说,DO-254 真正关心的不是:

• 你具体用了哪种电路结构
• 你用的是 VHDL 还是 Verilog
• 你状态机是一段式还是三段式
• 你 testbench 用不用 UVM

它真正关心的是:

你有没有用一套结构化、可追踪、可验证、可审查的工程过程,把这个硬件做出来,并且留下足够证据,证明它满足要求。

换句话说,DO-254 要的不是“你把硬件做出来”,而是:

你要能证明,你是用正确的方法把它做对了。

这就是它和普通工程开发习惯最大的不同。

一、DO-254 的核心,不是“怎么设计”,而是“怎么保证设计可信”

先把这个问题讲透。

很多工程师会期待标准告诉自己:

• 电路应该怎么分层
• 时钟域怎么处理
• 复位怎么写最合规
• FIFO、RAM、DSP 这种资源怎么用
• 仿真覆盖率做到多少才算够
但 DO-254 不是这种“技术 cookbook”,也不是 engineering cookbook。

这句话的工程含义其实非常直接:

• 不直接教你设计电路
• 不替你做技术决策
• 也不会规定某种唯一正确的实现方法

它做的事情是另一类:

• 定义开发生命周期应该有哪些阶段
• 定义这些阶段的目标是什么
• 定义应该有哪些验证和支撑活动
• 定义需要形成哪些生命周期数据
• 定义怎样建立足够的设计保证

所以,如果换成更直白的话说:

DO-254 管的是“你怎么把这件事做得可信”,不是“你具体怎么把这件事做出来”。

这也是为什么很多技术能力很强的团队,一开始做 DO-254 项目反而会很不适应。 因为他们习惯的思路是:

“我能把功能做对,为什么还要这么强调过程?”

而 DO-254 的回答是:

因为在复杂机载电子硬件里,‘我觉得做对了’远远不够,你必须能证明它对。

二、为什么 DO-254 会变成“过程 + 证据”思维?

这个问题如果不理解,后面整套 DO-254 都会显得很“形式主义”。

从工程背景看,DO-254 出现的根本原因之一,是现代航空电子硬件已经复杂到很难仅靠传统的定量失效分析,去充分证明它安全可靠。

对简单硬件,也许你还能比较直接地分析所有逻辑路径、穷尽输入组合、说明故障行为。 但对复杂 FPGA、复杂 PLD、复杂电子模块来说,这件事很快就会变得不现实。

这时候怎么办?

行业给出的答案就是:

既然很难单靠结果分析来证明“它一定安全”,那就必须依赖一套受控、严谨、可重复的开发与验证过程,来建立足够高的信心。

所以 DO-254 的思路,不是:

“最后测一下没问题就行”

而是:

“从计划、需求、设计、实现、验证、配置管理、过程保证,一路把风险控制住,并留下证据。”

这就是典型的过程 + 证据思维。

什么叫“过程”?

例如:

• 你有没有明确的开发阶段
• 每个阶段有没有清晰的输入输出
• 需求是不是先被定义清楚了
• 设计是不是基于需求展开的
• 验证是不是基于需求组织的
• 配置管理和问题管理是不是受控的

什么叫“证据”?

例如:

• 需求文档
• 设计数据
• 评审记录
• 分析报告
• 测试用例
• 测试结果
• 追踪关系
• 配置管理记录
• 过程保证记录

所以,DO-254 并不只是“要求你做活动”,而是要求你:

通过这些活动,形成可复核、可追踪、可审查的证据链。

对 FPGA 工程师来说,这一点尤其值得建立认知。 因为很多日常项目里,大家更习惯的是:

• 代码对了
• 仿真过了
• 板子通了
• 问题关了

就算项目完成。

但 DO-254 关心的会更多:

• 为什么这些需求是这样定义的?
• 设计有没有完整承接这些需求?
• 验证是否覆盖了这些需求?
• 有没有派生需求没有被识别?
• 当前 bitstream 能否被准确重建?
• 这个结果是不是来自受控版本?
• 问题修复有没有完整闭环?

这就是“工程完成”和“设计保证完成”之间的差异。

三、它不规定“如何设计电路”,而规定“如何证明你设计对了”

这是整篇里最重要的一句话。

很多标准会更偏向技术约束,例如:

• 用什么方法建模
• 满足哪些数值指标
• 遵循什么编码规范
• 采用哪些具体检查规则

而 DO-254 的重点不在这里。

它不会告诉你:

• 状态机必须怎么写
• RAM 必须推断还是例化
• 多时钟域必须用哪种结构
• 复位必须同步还是异步

这些更多还是工程设计问题,需要团队自己定义标准、方法和约束。

但 DO-254 会要求你回答一组更“上层”的问题:

• 这个设计是从哪些需求来的?
• 这些需求是否完整、正确、可验证?
• 设计是否和需求一致?
• 验证是否独立、充分、可追踪?
• 设计数据是否受控?
• 实现结果是否可重建?
• 整个项目是否有足够证据支持符合性结论?

所以从本质上说,DO-254 不是在替代设计,而是在约束:

你如何组织设计、验证设计、管理设计,并最终证明设计。

如果把这个逻辑放到 FPGA 项目里,其实就很好理解了。

一个很典型的 FPGA 场景
比如某个接口模块,设计人员很自然地写了如下行为:

• 上电后默认输出为 0
• reset 释放后两拍开始响应输入
• 当输入非法时,输出保持上一个有效值

这些行为从设计者角度看,可能都“很合理”。 但 DO-254 会追问:

• 这些行为是需求明确写出来的,还是设计者自己补的?
• 如果是自己补的,它是不是派生需求?
• 它是否被验证过?
• 它是否被向上沟通过?
• 它是否进入了追踪关系?

这就是 DO-254 和普通开发最大的区别之一:

它不接受“看起来合理”作为充分依据,它要的是“可证明、可追踪、可解释”。

四、DO-254 是 guidance,不是 regulation,但这不等于“可随意参考”

这是另一个特别容易误解的点。

从文义上看,DO-254 的确是 guidance,不是法规本身。 它甚至不像很多强制性文件那样大量使用“shall”这种强制语气。

这就让很多初学者很容易得出一个表面上没错、但工程上很危险的结论:

“既然 DO-254 不是强制法规,那是不是不一定要按它来?”

如果只看字面,似乎有讨论空间。 但如果看实际工程环境,这个想法往往走不通。

为什么?

因为适航体系关心的是:

你用什么可接受的方式,证明你的硬件符合适航要求。

理论上,DO-254 不是唯一方式。 但现实中,想拿出一套完全不同、还能被认证当局认可的替代方案,通常更难,也更贵。

很多团队会抓住“它只是 guidance”这一点,希望尽量绕开 DO-254;但从现实来看,试图绕开它,往往比直接接受它还更费时间和成本。

这点特别值得国内很多团队注意。 因为在项目早期,最常见的一种心态就是:

• 先按普通项目做
• 后面再补文档
• 看看哪些东西“审查时再说”
• 能少做就少做

短期看像是在省成本,长期看往往是在透支项目。

所以对工程团队来说,更准确的理解应该是:

DO-254 不是法律条文意义上的“唯一强制路径”,但在机载复杂电子硬件项目里,它几乎就是最现实、最成熟、最可被接受的路径。

五、为什么 FPGA 工程师特别容易误读 DO-254?
这个问题非常有代表性。

因为 FPGA 工程师的日常工作方式,本来就和 DO-254 的思路存在几个天然错位。

1. FPGA 工程师往往更关注“实现”

平时我们最熟的事情是:
• 写 RTL
• 跑仿真
• 收 timing
• 调约束
• 看资源
• 上板调试

这套工作流本身没问题,而且非常重要。 但它天然会让人把注意力集中在:

“我怎么把功能做出来”

而不是:

“我怎么证明我这样做是正确、完整、可追踪的”

所以第一次碰到 DO-254,就容易觉得它“离设计很远”。

其实不是离设计远,而是它站在比“实现动作”更高一层的视角在看项目。

2. HDL 长得像代码,容易被误当成软件问题
书里也特别提到,很多不熟悉硬件描述语言的人,会因为 HDL 看起来像代码,就试图按软件思维理解它。

这在实际项目里也很常见。 比如有人会下意识地把 FPGA 开发直接往 DO-178 的语境里套,结果出现很多不合适的类比。

但 HDL 虽然“长得像程序”,本质上描述的是硬件结构和并行行为。 所以它应该被当作硬件来处理,而不是简单套软件过程。

这也是为什么:

FPGA 项目做 DO-254,不是“把软件流程照搬过来”,而是要按硬件设计保证的逻辑理解它。

3. FPGA 团队常常默认很多行为“设计里顺手就补了”

比如:

• 默认状态
• 上电行为
• 异常输入处理
• reset 响应方式
• timeout 行为
• 错误恢复策略

这些在普通项目里经常由设计者在 RTL 中自然补齐。 但在 DO-254 里,这类“顺手补”的内容非常容易演化成:

• 未识别的派生需求
• 未验证的行为
• 未追踪的设计决定

也就是说,FPGA 工程师越是经验丰富,越容易在实现中“自动补齐细节”; 而 DO-254 恰恰会要求你把这些“自动补齐”的东西显性化、可解释化。

4. 很多 FPGA 团队天然相信“仿真就是验证主战场”

这也是后面我们会专门展开的一大主题。

日常 FPGA 开发里,仿真地位非常高,所以很多团队会自然形成一种等式:

验证 = testbench = 仿真覆盖

但 DO-254 的 verification 明显不止这些。 它包含 review、analysis、test 等多种手段,而且强调的是基于需求的验证证据,不是单一验证平台能力。

所以 FPGA 工程师最容易误读 DO-254,不是因为不够专业,反而常常是因为:

太熟悉“怎么把硬件做出来”,却还不习惯“怎么把设计保证做完整”。

六、从工程角度看,DO-254 更像一套“高完整性开发框架”
如果不想把 DO-254 理解得太抽象,你可以把它想成这样:

它是机载电子硬件行业多年沉淀下来的一套高完整性工程最佳实践集合。

它覆盖的内容并不只是一份设计规范,而是整个硬件生命周期,包括:

• Planning
• Requirements Capture
• Conceptual Design
• Detailed Design
• Implementation
• Validation
• Verification
• Configuration Management
• Process Assurance
• Certification Liaison
• 以及相关生命周期数据

这说明什么?

说明 DO-254 从来不是在问:

“你的 RTL 写得漂亮吗?”

它在问的是:

• 你的项目是不是有清晰的计划?
• 需求是不是高质量的?
• 设计是不是分阶段展开的?
• 验证是不是基于需求组织的?
• 生命周期数据是不是受控的?
• 配置管理和问题管理是不是到位的?
• 过程保证是不是在发挥作用?
• 最终能不能形成让审查方信服的证据闭环?

所以你会发现,DO-254 的关注点和很多普通研发项目不太一样。 普通项目更像是“以交付结果为中心”,而 DO-254 更像是“以设计保证闭环为中心”。

【FPGA项目里的典型场景】
下面这几个场景,特别能体现“把 DO-254 当开发规范”会带来什么偏差。

场景 1:项目一开始就直接写 RTL
团队觉得需求大概够了,先把逻辑搭起来,边做边补。 从开发效率上看很正常,但后面很容易出现:
• 需求和实现相互追认
• 设计自己生成了一堆派生需求
• 验证很难做到真正 requirements-based

场景 2:仿真通过,就默认“验证完成”
testbench 很强,回归也稳定,大家就觉得这个模块已经“验证完了”。 但后面一查才发现:
• requirement ID 没有映射到 test case
• reset 行为没写进需求
• 非法输入行为未定义
• 某些结论其实是设计者默认补的

场景 3:换了工具版本,但没有纳入受控过程
综合版本升级、约束策略微调、实现 seed 改了,bitstream 结果变了。 如果是在普通项目里,也许只是重新回归一下; 但在 DO-254 语境里,这些都属于需要严肃控制和留痕的对象。

场景 4:把 DO-254 理解成“最后补文档”
这几乎是最常见的误区。 前面按普通项目做,后面再补需求、补追踪、补验证依据。 结果往往不是“补齐”,而是:

发现很多关键设计决定根本没有被显式定义过。

这时你会发现,DO-254 不是不能补,而是很多东西越往后补,代价越高。

小结
这一篇如果只记住一句话,我建议记这句:

DO-254 不是教你怎么设计 FPGA,而是要求你用一套高完整性、可证明、可追踪的工程方式,把 FPGA 设计做出来。

再展开一点,就是四个关键认知:

1. DO-254 的核心是设计保证,不是技术规定。
2. 它强调的是“过程 + 证据”,不是“结果看起来没问题”。
3. 它不规定你怎么画电路,但要求你证明你这样画是对的。
4. 它虽然是 guidance,不是法规条文,但在现实项目里几乎是最可行、最成熟的符合路径。

对于 FPGA 工程师来说,真正重要的不是把 DO-254 看成额外负担,而是开始意识到:

它试图解决的,是复杂硬件项目里“怎么建立可信度”的问题。

这也是为什么它不仅关心设计,还关心需求、验证、配置管理、过程保证和生命周期数据。

下篇预告
如果这一篇解决的是“DO-254 是什么”, 那下一篇我们要解决的就是另一个非常关键的问题:

为什么 DO-254 不是技术手册,而是设计保证指南?

我们会继续把这个概念往下讲透,包括:

• guidance 到底意味着什么
• 为什么它不规定具体技术路线
• 为什么“技术能力强”不等于“设计保证做完整”
• DO-254 真正要求你交出的,到底不是代码,而是证据链

如果你是第一次系统接触 DO-254,下一篇会是非常关键的一篇。

----------------------------------------------------------------------------

DVS‑254|面向 DO‑254 的 FPGA 自动化物理测试平台
DVS‑254 是一套面向 DO‑254 / ED‑80 适航项目的 FPGA 自动化物理测试与验证平台,专为 DAL‑A / DAL‑B 等高完整性等级项目设计。平台以“仿真与物理验证等效”为核心理念,将仿真阶段已验证的 Testbench 直接复用到 FPGA 板级物理测试中,帮助工程团队高效形成审查可接受的验证证据。

核心能力包括:

• 重用 Simulation Testbench 进行 FPGA 物理测试
• 仿真验证与硬件物理验证采用统一测试平台
• 支持鲁棒性测试与 worst‑case 场景系统化覆盖
• 支持高速接口测试(DDR3 / PCIe 等)
• 自动生成基于需求的测试记录、测量数据与代码覆盖率报告
• 满足 DO‑254 DAL‑A 等级的验证流程与交付要求

DVS‑254 已在多个 DO‑254 项目中应用,致力于将 FPGA 的真实物理行为,转化为可复查、可追溯、可取证的审查证据。