加载中…
个人资料
马赛马拉--角马
马赛马拉--角马
  • 博客等级:
  • 博客积分:0
  • 博客访问:5,018
  • 关注人气:23
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

软件开发---可编程逻辑器件软件开发过程及要求

(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时序不匹配导致移动电机过流急停。
       控制与驱动组件鉴定件随综合电子单元进行热真空环境试验时,发现主份控制板移动电机异常进入过流急停模式。经分析,控制与驱动组件鉴定件产品中DSP软件对AD574写操作为3个等待周期,即R/W信号宽度为5个指令周期312.5ns,该时间宽度312.5ns满足大于300ns的时序要求。但由于在FPGA01片中CS的译码脉冲宽度由STRB参与,而在插入3个等待周期后STRB信号的脉冲宽度为4个指令周期即250ns。经过译码后的CS信号脉宽T为250ns,比DSP软件设计预计少了一个指令周期62.5ns,不符合大于300ns的要求,导致该问题发生。
       所以,在进行产品设计时,应加强软件、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有时不响应读指令。
       某FPGA产品发现有时不响应读指令。FPGA中有控制FIFO读命令的状态机,当FIFO半满信号有效时,进入读状态,该状态机采用onehot编码,且未选用safe模式对状态机进行综合优化。经过分析FIFO半满信号未异步信号,进入该状态机前没有经过时钟同步,而且该FIFO半满信号对状态机的控制,经过了两个不同的路径,且两个路径的延时时间不同,经过仿真验证有0.6ns的时间间隔,当时钟在这0.6ns的时间间隔内对状态进行切换,会导致状态机进入非法状态,从而进入死锁状态。
       对异步信号应二级同步,并且应对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)布局布线后的网表输出文件和标准延时格式文件。
 
典型案例:未对外部输入的脉冲信号采用防抖动设计,造成计数结果偏差。
       某控制器,由CPLD对输入的转速脉冲进行计数并供DSP读取,发现转速偶尔不正常。
       CPLD设计中没有考虑外部输入信号存在毛刺,而是直接将输入的转速脉冲作为脉冲计数寄存器的时钟信号,导致计数结果存在偏差。
       对外部输入的脉冲信号应进行防抖动设计,避免毛刺造成错误计数。
 
典型案例:未实现异步复位同步释放,导致发送的时钟缺失。
       在系统联调接口通信时工作不稳定,具体表现为有时能够进行正常的通信,有时在工作过程中出现无时钟输出的情况。
       经过分析,发送时钟采用移位寄存器对主时钟进行3分频,而由于移位寄存器采用了异步复位且释放时未进行同步,导致寄存器初始状态不确定,无法产生分频时钟。
       在异步复位释放时应采用同步释放的方式,即使用同步后的复位信号实现脱离复位的操作,避免异步复位释放时的亚稳态。 
 
------------------------
6、检查与验证

6.1、设计检查(代码审查)
       检查代码和设计的一致性,代码执行标准的一致性,代码逻辑表达的正确性,代表结构的合理性以及代码的可读性进行检查。
(1)复位信号与时钟信号的正确性检查;
(2)模块间接口正确性检查;
(3)状态机及其状态转移正确性检查;
(4)多时钟域或跨时钟域设计正确性检查;
(5)逻辑功能的实现正确性;
(6)多余设计;
(7)可靠性安全性设计。
 
6.2、功能仿真
       主要针对RTL级代码开展的仿真测试,检查功能逻辑实现的正确性。
(1)编写TESTBENCH激励文件,通过观察仿真波形判断用例是否通过,或通过设置断言语句自动判定。
(2)要求统计覆盖率信息,语句、分支、状态机等覆盖率达到100%,对未覆盖的语句和分支进行影响域分析。
 
6.3、门级仿真
       主要针对逻辑综合后的网表文件开展的仿真测试。重点关注可靠性和安全性的相关要求实现的正确性。
(1)三模冗余实现的正确性。
(2)状态机是否出现死锁。
 
典型案例:综合约束使用不当,导致三模冗余失效。
       某FPGA产品对地址译码功能作了三模冗余设计,方式是通过设计三个相同的模块,然后通过三取二确定输出结果,但是在综合报告中发现三模冗余设计并没有实现。
       在FPGA代码设计中,调用3个完全相同的模块实现地址译码功能的三模设计,但是由于三个模块完全相同,在综合优化时两个模块被删除了,综合网表总只留下了一个功能模块,失去了三模冗余的作用。
       三模设计时,需通过门级仿真确认最终实现的有效性。
 
6.4、时序仿真
       主要针对布局布线后的网表文件开展的仿真测试。时序仿真对象带有门级延时和布线延时信息,也成为后仿真。
(1)在三种工况下开展时序仿真。最大工况(电压最低、温度最高)、最小工况(电压最高、温度最低)、典型工况(电压正常、温度正常);
(2)对外部接口时序关系开展时序仿真;
(3)对时序余量开展时序仿真;
(4)对特定时序要求(如分频后时钟的相位等)进行时序仿真。
(5)其它时序要求。
 
6.5、逻辑等效性检查(一般不做强制要求)
       主要针对RTL级代码、逻辑综合后网表文件、布局布线后网表文件两两之间开展逻辑一致性比对,确认两者在逻辑上是否一致。
       由于设计的不规范,或者综合工具或布局布线工具算法的差异,导致前后的不一致。对逻辑功能造成了影响。
(1)设计不规范,工具对其进行了的优化,有些优化对逻辑功能没有影响。
(2)工具引入了错误。
 
6.6、静态时序分析
       分析逻辑综合或布局布线后得到的静态时序信息,根据信息提示找出不满足建立/保持时间路径以及不符合约束路径的过程称为静态时序分析。
(1)对每个时钟外部接口的建立时间和保持时间进行测试。
(2)对每个时钟域内内部寄存器的建立时间和保持时间进行测试。
(3)对系统恢复或重置功能的时序进行测试。
 
------------------------
7、设计确认过程

7.1、目标
       在真实的目标板、系统或在需方批准的替代环境下开展配置项级、系统级确认测试。一般来说,负责开展确认测试的人员不应是从事设计和实现的人员。   
 
7.2、技术要求
(1)编制确认测试计划、确认测试说明、识别被确认的每项需求,设计测试用例;
(2)通过确认测试对每项需求进行确认,分析实际结果与期望结果的差异,明确需求与确认行为及结果之间的可追踪性。对于某些无法通过测试实施确认的特性或需求,可采用分析、审查、评审等方式开展确认并将结论纳入确认测试报告;
(3)根据确认测试的结果对软件进行修改并开展回归测试,并根据需要更新文档和其他工作产品。
 
7.3、期望输出
     确认测试计划、说明、报告。
 
------------------------
8、验证过程

8.1、目标
       验证过程是对可编程逻辑器件项目各阶段活动的结果进行检查的过程,以确定该活动对规定要求的符合情况。验证的主要方法包括测试、分析、评审等。
 
8.2、各阶段验证工作要求
(1)系统需求分析:复核可行性及风险分析、关键等级、安全性可靠性要求等,对可行性及风险分析报告和研制任务书等相关文件开展评审;
(2)可编程逻辑器件软件需求分析:对需求的完整性、正确性、一致性和可测试性进行评估,分析需求和研制任务书的可追踪性,审查需求及其变更情况,对需求规格说明等相关文件开展评审。
(3)可编程逻辑器件软件设计:确认设计说明与需求规格说明、研制任务书的一致性,对设计说明、安全性可靠性设计开展评审。
(4)可编程逻辑器件软件设计:开展功能仿真、时序仿真、静态时序分析,必要时开展门级仿真、逻辑等效性检查,对仿真测试开展评审;
(5)设计确认:应保证确认测试覆盖所有任务要求和所有需求;对设计确认开展评审;
(6)验收与交付:应组织验收,开展测试和评审;
(7)运行与维护:对可编程逻辑器件软件更改影响域进行分析,对技术状态变化开展评审。
 
8.3、期望输出
        测试计划、说明、报告;分析报告;评审记录。
 
 
------------------

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有