文章来源:FPGA技术联盟
很多工程师第一次真正去看 DO-254 时,都会有一种很自然的期待:
• 它应该告诉我硬件应该怎么设计;
• 它应该告诉我 FPGA 开发到底该怎么做;
• 它最好能像一本“航空电子硬件开发手册”一样,把方法、动作、模板都规定清楚。
如果带着这种期待去看 DO-254,往往很快就会失望。 因为你会发现,它既没有告诉你状态机该怎么编码,也没有规定你必须用哪种 RTL 风格,甚至连很多工程师最关心的“到底做到什么程度才算够”,它都不会用一本技术手册的写法直接告诉你。
于是很多人就会得出两个错误结论中的一个:
1. DO-254 太虚了,没什么可执行性;
2. DO-254 只是个合规文件,重点就是交文档。
这两个理解都不对。
先说结论
DO-254 不是技术手册,因为它要解决的问题,本来就不是“教你怎么设计硬件”,而是“要求你如何建立对硬件正确性的可信证据”。
换句话说:
DO-254 真正关心的,不是你用了什么技术路线,而是你能不能证明,这条技术路线在受控过程下产出了满足要求的硬件。
所以它是设计保证指南,而不是“设计方法大全”。
这里有一个非常值得反复记住的观点:
The goal is not to produce hardware, but to produce evidence that the hardware is correct.
翻成更工程化的话就是:
DO-254 的目标不是把硬件做出来,而是把“这个硬件是对的”这件事证明出来。
这就是“设计正确”和“设计保证”之间最核心的差异。
一、为什么工程师总想把 DO-254 当成技术手册?
这个误解其实很正常,因为大多数工程师受训练和日常工作方式影响,天然会从“怎么做”去理解一切标准。
比如 FPGA 工程师平时接触最多的是:
• 架构怎么划分
• RTL 怎么写
• 时钟域怎么处理
• 约束怎么收敛
• 仿真怎么搭
• 板级联调怎么推进
这套思维是典型的实现导向。 它关注的是:
怎么把功能做出来。
而 DO-254 关注的是另一层:
怎么把“做出来的东西是对的”这件事,用过程和证据说清楚。
所以很多人会觉得 DO-254 “不接地气”,其实不是它脱离工程,而是它站得比实现层更高。
DO-254 把复杂机载电子硬件开发中几个原本很难自然做好、也很难天然闭环的方面,系统地绑在了一起,包括:
• 设计保证
• requirements 的使用
• 基于 requirements 的 verification
• review、analysis、test 的协同
• 生命周期数据
• 配置管理和过程保证
也就是说,DO-254 本来就不是为了解答“你该怎么写逻辑”,而是为了解答:
• 需求从哪里来
• 设计如何承接需求
• 验证如何基于需求展开
• 证据如何形成闭环
• 项目如何在审查视角下站得住
这不是一本技术手册能解决的问题。
二、技术路线开放,不等于流程可以跳过
这是理解 DO-254 的第一道坎。
很多人看到 DO-254 不强规定技术细节,就会产生一种误判:
“既然它不规定具体技术路线,那是不是说明我们可以自己决定怎么做,流程上灵活一点也没关系?”
这个逻辑在普通研发项目里也许还能讨论,但在 DO-254 语境下是很危险的。
为什么?
因为技术路线开放,只是意味着:
• 你可以根据项目特点选择架构方案;
• 你可以根据器件和团队能力选择实现方式;
• 你可以定义适合自己的工程标准、编码规范、验证方法。
但这不意味着:
• 需求可以不清楚;
• 追踪关系可以不建立;
• review 可以省;
• verification 可以靠“仿真差不多就行”;
• 配置管理可以只管源码不管工具链;
• 过程保证可以最后再补。
换句话说:
DO-254 给你的是技术自由,不是过程豁免。
这点特别像搭桥。 DO-254 不要求你所有桥都用同一套结构设计,但它要求你必须证明:
• 设计输入是明确的;
• 设计计算是合理的;
• 审查过程是存在的;
• 风险控制是有效的;
• 最终结果是可验证的。
桥可以有不同方案,但不能没有证明。
放到 FPGA 项目里也是一样。 你可以用不同的设计风格做一个接口控制模块,但 DO-254 仍然会问:
• 这个模块的功能需求明确吗?
• reset、power-on、异常输入行为定义了吗?
• 设计中的关键决策有没有记录?
• 仿真、分析、评审是不是都覆盖到了?
• 最终 bitstream 是否来自受控版本?
所以,技术路线的开放性,恰恰意味着你更需要用流程和证据把自己的方案站住,而不是反过来把流程做轻。
三、Design Assurance 不是“设计要正确”,而是“要有证据证明设计正确”
这个概念如果不讲透,后面很多 DO-254 动作都会显得像“形式”。
很多工程师理解的正确性,是这种意思:
• 功能跑通了;
• 仿真通过了;
• 板上看起来也对;
• timing 没红;
• 回归没报错。
这些当然都重要,但它们只能说明一件事:
你目前看到的结果,暂时没有暴露明显问题。
而 DO-254 所说的 Design Assurance,要求更高一层。 它不是单纯问你“结果对不对”,而是问你:
• 这个结果是怎么来的?
• 它是否建立在高质量 requirements 上?
• 设计和 requirements 之间是否可追踪?
• verification 是否基于 requirements,而不是凭经验补测试?
• review、analysis、test 是否共同构成证据链?
• 配置、问题报告、过程保证是否支持结果可信?
所以更准确地说:
Design correctness 是结果层面的判断; Design assurance 是对这个结果“为何可信”的系统性证明。
这就是为什么很多团队会觉得 DO-254 特别“重”。 因为它要求的不只是一个设计结果,而是一整套支持这个结果的可信链条。
DO-254 的大量目标,并不直接落在“设计硬件”本身,而是落在计划、管理、标准化、验证、确认、配置管理、过程保证这些活动上。
如果用非常直白的话说:
在 DO-254 里,真正难的往往不是“把逻辑写出来”,而是“把这套逻辑为什么可信说清楚”。
四、最常见的误操作:用“功能仿真成功”掩盖过程缺失
这在 FPGA 项目里太常见了,而且很有迷惑性。
一个典型场景
某个控制模块已经完成了:
• RTL 编写
• testbench 搭建
• 主要功能点仿真通过
• 波形看起来都正常
• 板级联调也没发现异常
团队这时很容易形成一个判断:
“这个模块基本没问题,后面补补文档就行。”
但 DO-254 真正会问的问题,可能完全不一样:
• 这些 test case 是从 requirements 推导出来的吗?
• requirements 本身是否完整、可验证?
• reset 行为是否在需求里定义过,还是设计自己补的?
• invalid input 时输出行为是否明确?
• 有没有 derived requirement 没被识别?
• review 是否真正做过,还是只是看了下代码?
• analysis 做了什么,还是全部寄希望于仿真?
• 当前通过的结果对应哪个版本的约束、工具、netlist、bitstream?
这时你会发现:
仿真成功,可以证明“你测到的这些场景目前没问题”; 但它不能自动证明“整个设计保证闭环已经成立”。
这也是 DO-254 为什么强调 verification 不是只有 test。 它需要的是:
• Review:尽早发现需求、设计、验证数据中的问题
• Analysis:用分析手段证明某些特性成立
• Test:通过仿真、硬件测试等手段验证行为
如果一个团队把 verification 简化成“testbench 做得强”,那往往只是把一部分验证做强了,而不是把设计保证做完整了。
这也是很多审查场景里最容易被问住的地方:
“你证明了这个功能在某些测试下成立,但你怎么证明你验证的是对的需求、完整的需求、受控的设计版本?”
这不是 testbench 能单独回答的问题。
五、为什么 DO-254 必须是 guidance,而不能是一本“固定做法手册”?
这个问题值得反过来想一下。
如果 DO-254 真写成一本技术手册,会发生什么?
它就必须明确规定:
• 设计必须按什么模式分层;
• 状态机用什么编码方式;
• 异步复位和同步复位怎么选;
• 验证必须达到什么统一覆盖率;
• 各类 PLD、FPGA、板卡、离散逻辑该用同一套实现规则。
但现实是,不同项目差异太大了:
• 器件差异大
• 复杂度差异大
• DAL 不同
• 系统安全背景不同
• 设计团队能力不同
• 工具链环境不同
• 验证资源不同
如果它把技术路径写死,反而会降低工程适用性。
所以 DO-254 选择了另一条路线:
不替你做技术决策,但要求你把技术决策纳入受控过程,并形成证据。
这才是 guidance 的价值。
也正因为它是 guidance,很多新人会抓住“不是强制条文”这一点,试图把它当成“建议参考”。 很多团队总想找绕开的方法,结果最后发现,绕开 DO-254 往往比接受 DO-254 还更费时间、费成本。
因为你最终还是要回答同样的问题:
• 你的硬件凭什么可信?
• 你的过程凭什么可靠?
• 你的结果凭什么能被接受?
DO-254 给的,不是唯一理论路径,但通常是最成熟、最现实的路径。
六、DO-254 的真实价值,在于把“高完整性工程习惯”制度化
如果只把 DO-254 理解成“认证项目才需要”,其实会低估它。
从工程角度看,DO-254 里很多内容,本质上都是高完整性项目本来就应该具备的好习惯,只不过它把这些习惯变成了系统性的框架。
那些高完整性开发特征,本质上就是:
• 项目前期认真做 plans、requirements、analysis
• 用书面 requirements 驱动设计
• 用 independent reviews 尽早发现问题
• 从上往下分解功能,并保留 traceability
• 建立高完整性的 validation 和 verification 活动
• 建立配置管理、问题报告和过程保证基础设施
这些事情,单独拿出来看,没有哪一项是“神秘的航空黑科技”。 真正难的是:大多数团队不会在项目压力下长期、稳定、系统地把这些都做好。
而 DO-254 的价值就在这里:
它不是发明了很多新动作,而是把复杂硬件开发中真正有效的工程最佳实践,组织成了一套可执行、可审查、可证明的设计保证体系。
对 FPGA 团队来说,这个价值尤其明显。 因为 FPGA 项目很容易落入一种“先实现、后解释”的节奏:
• 先把逻辑做出来
• 先把问题修掉
• 先把功能跑通
• 后面再整理依据
短期看效率高,长期看风险大。 DO-254 本质上是在反这个惯性。
【FPGA项目里的典型场景】
下面这几个场景,很能说明“把 DO-254 当技术手册”为什么会出问题。
场景 1:把编码规范当成 DO-254 的主体
有些团队会把大量精力放在 RTL 编码规范、命名规则、注释格式上,然后觉得“我们已经很规范了”。
这些当然重要,但它们更多是工程质量控制的一部分,不是设计保证的全部。 如果 requirements 质量差、traceability 断裂、verification 不是基于 requirements 展开的,光靠代码规范撑不起 DO-254。
场景 2:仿真平台很强,但证据链很弱
testbench 很完整,回归也自动化了,覆盖率报表看起来很好。 但一问到:
• test case 和 requirement ID 怎么对应?
• 哪些行为是 derived requirement?
• review 发现的问题如何闭环?
• 当前结果和哪个基线绑定?
团队就开始补材料。 这就是典型的“验证动作强,设计保证链弱”。
场景 3:工具链变化没有纳入控制
某次时序收敛困难,团队升级了综合版本、调整了实现策略,结果 bitstream 变了,但大家只关心功能还对不对。
在普通项目里也许就过去了; 但在 DO-254 语境里,这些变化会直接影响:
• 配置管理
• 结果可重建性
• 验证结果适用性
• 审查可信度
场景 4:跨时钟域问题只靠经验看代码
CDC 问题在 FPGA 项目里非常典型。很多时候团队觉得“老工程师看一眼就知道有没有问题”。
经验当然重要,但如果项目要求高完整性,CDC 这类问题更适合进入体系化验证和分析。 这也是为什么像 VIGIL-CDC 这类跨时钟域设计验证平台,在某些项目阶段会很契合 DO-254 的思路——它不是替代工程判断,而是帮助团队把 CDC 风险识别和分析做得更系统、更可留痕。
同样,如果团队已经开始重视代码规则一致性和前期静态问题收敛,那么像 VIGIL-Lint 这样的规则检查平台,也更适合作为设计质量和前端问题发现的辅助工具。 它本身不等于 DO-254 合规,但如果使用得当,确实可以帮助团队把 review 和前期缺陷发现做得更扎实。
这里要特别强调一句:
工具可以增强过程,但工具本身不是过程。
这恰恰也是 DO-254 的思路。
七、如果只把 DO-254 看成“文档要求”,最后一定会走偏
理解到这里,其实可以顺手把另一个常见误解一起纠正掉。
很多人一听“设计保证”,马上联想到的不是工程,而是文档:
• 要写很多计划
• 要写很多报告
• 要留很多记录
• 要维护很多追踪关系
于是就会产生一种反感:
“DO-254 不就是多写文档吗?”
这个理解的问题在于,它把载体当成了目的。
文档、记录、报告、矩阵,当然都是 DO-254 需要的。 但它们之所以存在,不是为了堆材料,而是为了回答几个关键问题:
• 你做了什么?
• 为什么这么做?
• 你怎么证明这样做是对的?
• 这个结果和需求、设计、验证、配置之间是什么关系?
• 这个项目现在是否处于一个已知、受控、可审查的状态?
如果这些问题没有工程活动支撑,再漂亮的文档都没有意义。 反过来,如果工程活动做了,但没有留下足够证据,那么从设计保证视角看,它仍然不完整。
所以真正应该记住的是:
DO-254 不是文档导向,也不是技术导向,它是证据导向。
而证据,必须来自受控过程。
小结
这一篇如果只保留一句核心判断,那就是:
DO-254 不是技术手册,因为它不负责告诉你“硬件该怎么设计”;它是设计保证指南,因为它负责要求你“如何证明这个硬件被正确地设计出来了”。
围绕这个结论,可以再展开成四个要点:
1. 技术路线开放,不等于流程可以跳过。 你可以自由选择方案,但不能跳过需求、验证、追踪、配置管理和过程保证。
2. Design assurance 不等于 design correctness。 前者不是“你觉得设计对了”,而是“你能用证据链证明设计对了”。
3. “功能仿真成功”远远不够。 仿真只是 verification 的一部分,不能替代 requirements、review、analysis、traceability 和 configuration control。
4. DO-254 的价值,不在于规定技术细节,而在于制度化高完整性工程实践。 它不是替你做设计,而是防止团队只剩“把功能做出来”这一个目标。
如果 FPGA 工程师能够把这个认知建立起来,后面再去看 planning、requirements、validation、verification、CM、PA,很多原本看起来“很重”的动作,就会开始变得有逻辑。
下篇预告
前两篇我们都在做一件事:先把 DO-254 的底层认知搭起来。
• DO-254 到底是什么
• 为什么它不是技术手册,而是设计保证指南
那接下来,就该进入一个所有人都会遇到、但经常一开始就理解不透的核心概念了:
DAL 是什么?为什么 Level A 和 Level C 的开发方式差别这么大
下一篇我们会重点讲清楚:
• DAL 到底来自哪里
• 它为什么不是“项目难度等级”
• 为什么同样是 FPGA,DAL 不同,过程强度会差很多
• Level 越高,为什么验证、独立性、证据要求都会明显加严
这篇开始,系列就会真正进入 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 的真实物理行为,转化为可复查、可追溯、可取证的审查证据。