软件开发---可编程逻辑器件软件开发过程及要求
(2017-01-12 09:43:29)分类: 软件过程改进 |
1、系统需求分析过程
1.1、目标
1.2、技术要求
(1)针对器件可获得性、开发便利性、功耗、时钟频率、芯片资源、抗辐照方法、器件等级、封装方式、工作温度、存储温度、辐照总剂量等系统要求开展必要性与可行性分析;开展风险分析,确认风险项并制定对应的预防措施和应急响应;
(2)分析系统体系结构,确定系统分配给可编程逻辑器件项目的任务要求;(解释:应将任务要求进行概述,并对各子功能进行描述。)
(3)确定关键等级;(解释:根据应用关键级别,确定FPGA关键要求。)
(4)确定功能、性能、接口、功耗、降额、工作条件等技术指标;(解释:性能指标主要指功耗、处理速度、处理时间等方面的要求。)
(5)明确外部接口的通讯协议、电气特征、时序特征等与可编程逻辑器件相关的软件/硬件接口;
(6)确定可靠性和安全性要求,如结构、算法、容错、冗余、抗状态翻转等;
(7)明确关键算法的算法,和技术指标;
(8)明确语言和设计方法约束;
(9)确定资源、时序等余量要求;
(10)明确固化、工作环境要求;
(11)明确实时性、可测试性要求;
(12)明确IP核使用要求;
(13)明确安全保密性、重用、进度、验收与交付、运行与维护、配置管理、质量保证等要求;
(14)明确测试级别、测试内容、测试充分性等测试要求;
(15)编制可编程逻辑器件项目任务书。
1.3、期望输出
典型案例:软件与FPGA时序不匹配导致移动电机过流急停。
------------------------
2、需求分析过程
2.1、目标
2.2、技术要求
(1)定义功能、性能、接口、管脚分配及约束等需求;
(2)开展安全性和可靠性分析,确定安全性和可靠性要求,明确抗状态翻转等技术方法;(解释:应对功能失效的风险进行分析,并提出在功能失效时的应对措施。)
(3)必要时,开展系统原型仿真分析;
(4)确定开发环境、工具及版本;
(5)描述芯片型号、等级约束和封装形式;
(6)确定语言和设计方法约束;
(7)确定资源、时序等余量需求;
(8)确定固化、工作环境要求;
(9)确定实时性、可测试性要求;
(10)确定IP核使用需求;
(11)确定安全保密性、重用、进度、配置管理、质量保证、测试等要求;
(12)必要时,明确与软件相关的地址分配;
(13)定义实现系统需求产生的派生需求,对其单独标识并反馈至系统需求分析过程,评估派生需求对系统需求分析的影响。
2.3、期望输出
2.4、例子
(1)性能要求:
a) 处理时钟为24MHz,时钟占空比为1:1,占空比允许变化范围为+-5%。
b)
串行通信采用RS232协议,波特率为38400Hz,误差允许范围+-5%。
(2)安全性需求:
明确抗辐射设计方法:加固、器件选型、冗余设计、抗干扰设计、状态机安全模式、跨时钟域处理等。
(3)余量需求:
a) 资源余量,如查找表、时序逻辑、组合逻辑的占用率。
b) 时序余量,如时钟域的时序富裕度。
典型案例:跨时钟域信号未及时处理导致FPGA有时不响应读指令。
------------------------
根据可编程逻辑器件软件需求规格说明,进行方案设计,建立可编程逻辑器件软件的体系结构,定义体系结构中各模块的功能和性能等指标。
可编程逻辑器件软件结构设计说明。
3、结构设计过程
3.1、目标
3.2、技术要求
(1)确定软件结构及单元划分,定义单元及单元间的关系,描述单元的功能、性能、接口,确保全部需求分配至相应单元;
(2)描述单元间的数据流和控制流;
(3)必要时,应通过仿真和分析验证结构设计是否满足要求;
(4)确定时钟、复位方案;
(5)根据安全性和可靠性需求,开展安全性、可靠性设计;
(6)完成算法由抽象层次到实现层次的转换,确定算法的输入、输出接口,描述算法的实现过程,必要时对中间参数进行描述;
(7)开展验证方案设计;
(8)结构设计过程中产生的派生需求应反馈至需求分析过程并评估影响;
(9)重新评估可行性和风险。
3.3、期望输出
------------------------
4、详细设计过程
4.1、目标
4.2、技术要求
(1)对各单元进行详细说明,包含各单元地址分配、控制方式、接口、存储器空间、时序说明、性能指标、测试要求等内容;
(2)描述各单元的设计原理和所采用的技术方法及过程;
(3)详细说明各单元在实现时采用的设计输入方法;
(4)必要时,列出厂商、版本等IP核属性;
(5)完善安全性、可靠性设计,并分析详细设计是否符合安全与可靠性设计要求;
(7)完善验证方案设计;
(8)应标识出未被使用的功能并评估其对安全性的影响;
(9)约束软件的设计、固化和操作,若存在无约束的情况,应评估其对安全性的影响并标识;
(10)详细设计过程中产生的派生需求应反馈至结构设计过程或其他过程评估影响。
4.3、期望输出
------------------------
5、实现过程
5.1、目标
5.2、技术要求
(1)编码:依据设计说明开展编码活动,形成源代码或原理图;
(2)仿真测试环境设计与实现:开发方应编制仿真测试计划和仿真测试说明,并依据仿真测试说明设计仿真测试环境,编制仿真测试向量集;
(3)功能仿真:开发方应对源代码或原理图开展设计检查、开展单元级别和配置项级别功能仿真。必要时,应通过统计语句、分支、状态机等覆盖率信息保证仿真测试的充分性;
(4)综合与布局布线:在完成编码与功能仿真后开展综合与布局布线,完善设计说明;
(5)网表验证:开展时序仿真、静态时序分析,必要时,应开展门级仿真和逻辑等效性检查;
(6)修改与回归测试:根据仿真测试的结果,对软件进行修改,开展回归测试并根据需要更新文档和相关产品;
(7)编程下载:将程序固化在可编程逻辑器件芯片或配置芯片中。
5.3、期望输出
(1)源代码或原理图;
(2)仿真测试计划、说明、报告;
(3)逻辑综合的门级网表输出文件;
(4)布局布线后的网表输出文件和标准延时格式文件。
典型案例:未对外部输入的脉冲信号采用防抖动设计,造成计数结果偏差。
典型案例:未实现异步复位同步释放,导致发送的时钟缺失。
------------------------
6、检查与验证
6.1、设计检查(代码审查)
(1)复位信号与时钟信号的正确性检查;
(2)模块间接口正确性检查;
(3)状态机及其状态转移正确性检查;
(4)多时钟域或跨时钟域设计正确性检查;
(5)逻辑功能的实现正确性;
(6)多余设计;
(7)可靠性安全性设计。
6.2、功能仿真
(1)编写TESTBENCH激励文件,通过观察仿真波形判断用例是否通过,或通过设置断言语句自动判定。
(2)要求统计覆盖率信息,语句、分支、状态机等覆盖率达到100%,对未覆盖的语句和分支进行影响域分析。
6.3、门级仿真
(1)三模冗余实现的正确性。
(2)状态机是否出现死锁。
典型案例:综合约束使用不当,导致三模冗余失效。
6.4、时序仿真
(1)在三种工况下开展时序仿真。最大工况(电压最低、温度最高)、最小工况(电压最高、温度最低)、典型工况(电压正常、温度正常);
(2)对外部接口时序关系开展时序仿真;
(3)对时序余量开展时序仿真;
(4)对特定时序要求(如分频后时钟的相位等)进行时序仿真。
(5)其它时序要求。
6.5、逻辑等效性检查(一般不做强制要求)
(1)设计不规范,工具对其进行了的优化,有些优化对逻辑功能没有影响。
(2)工具引入了错误。
6.6、静态时序分析
(1)对每个时钟外部接口的建立时间和保持时间进行测试。
(2)对每个时钟域内内部寄存器的建立时间和保持时间进行测试。
(3)对系统恢复或重置功能的时序进行测试。
------------------------
7、设计确认过程
7、设计确认过程
7.1、目标
7.2、技术要求
(1)编制确认测试计划、确认测试说明、识别被确认的每项需求,设计测试用例;
(2)通过确认测试对每项需求进行确认,分析实际结果与期望结果的差异,明确需求与确认行为及结果之间的可追踪性。对于某些无法通过测试实施确认的特性或需求,可采用分析、审查、评审等方式开展确认并将结论纳入确认测试报告;
(3)根据确认测试的结果对软件进行修改并开展回归测试,并根据需要更新文档和其他工作产品。
7.3、期望输出
------------------------
8、验证过程
8、验证过程
8.1、目标
8.2、各阶段验证工作要求
(1)系统需求分析:复核可行性及风险分析、关键等级、安全性可靠性要求等,对可行性及风险分析报告和研制任务书等相关文件开展评审;
(2)可编程逻辑器件软件需求分析:对需求的完整性、正确性、一致性和可测试性进行评估,分析需求和研制任务书的可追踪性,审查需求及其变更情况,对需求规格说明等相关文件开展评审。
(3)可编程逻辑器件软件设计:确认设计说明与需求规格说明、研制任务书的一致性,对设计说明、安全性可靠性设计开展评审。
(4)可编程逻辑器件软件设计:开展功能仿真、时序仿真、静态时序分析,必要时开展门级仿真、逻辑等效性检查,对仿真测试开展评审;
(5)设计确认:应保证确认测试覆盖所有任务要求和所有需求;对设计确认开展评审;
(6)验收与交付:应组织验收,开展测试和评审;
(7)运行与维护:对可编程逻辑器件软件更改影响域进行分析,对技术状态变化开展评审。
8.3、期望输出
------------------
前一篇:项目管理---什么任务需要管理?
后一篇:软件开发----文档的必要性!!