FPGA软件开发过程中编码规范的作用

2016-09-29 13:35
科技视界 2016年20期

骆传慧

【摘要】硬件描述语言使FPGA(现场可编程门阵列)芯片开发具备软件特征,编码规范是软件质量的保证,能有效地提高软件开发效率。从命名、排版格式、语句完整性、注释、代码结构、代码优化则等几个方面介绍了FPGA软件编码规范内容,从提高工作效率、提高测试性、提高重用性、降低维护成本角度总结了开发过程中FPGA软件编码规范作用。

【关键词】FPGA;软件开发;编码规范;硬件描述语言

The FPGA Coding Standards in the Process of Software Development

LUO Chuan-hui

(No. 38 Research Institute, China Electronic Technology Group Corporation, Hefei Anhui 230088, China)

【Abstract】Hardware description language to make the FPGA (field programmable gate array) chip development with characteristics software, coding standards is software quality assurance, can effectively improve the efficiency of software development. From naming, typesetting format, statement integrity, annotation, the structure of the code, code optimization are introduced several aspects, such as the FPGA software coding standard content, improve the work efficiency, improve the testability, improve the reusability, lower maintenance cost Angle the FPGA software coding standard role in the development process are summarized.

【Key words】FPGA; Software development; Coding standard; Hardware description language

0引言

FPGA(现场可编程门阵列)芯片的出现,大大压缩了电子产品研发的周期和成本,它所具有的高密度、低功耗、高速、高可靠性等优点,使其在航空、航天、通信、工业控制等方面得到了广泛的应用。随着芯片规模加大,承担任务的加重,开发周期缩短,如何高效、高质量开展设计,成为FPGA芯片开发工作的重点。FPGA芯片的多样化要求代码具有超强的可移植能力。

硬件描述语言是当前FPGA芯片开发过程中使用的最主要输入方式,通过行为描述实现逻辑电路和系统的设计,使FPGA芯片开发具有了软件设计的特征。为了实现FPGA设计需求,软件开发单位需要制定相应的编码规范,对程序员的编程行为进行约束,包括命名规则、排版格式、注释、代码结构、代码优化等编码过程中需要注意的编程细节。

FPGA编码规范是行业中约定俗成的,是长期经验的总结和集体智慧的结晶,能够指导设计工程师正确编写代码,提高代码的整洁度,便于跟踪、分析、调试,便于整理文档,便于交流合作。从而达到提高设计效率、优化电路、降低设计成本的效果。

1编码规范内容

FPGA软件编码规范是软件开发单位制定的关于硬件描述语言编码方面约定,主要包括命名规则、排版格式、语句的完整性、注释的明确性、嵌套层次限制等方面需要注意的编程事项,以对设计人员的编程行为进行约束。

1.1命名规则

能够有助于阅读者快速理解编码,便于交流合作。命名规则规定在命名实体名、结构体、端口、信号、变量等名称时,必须采用具有确定意义并且相互之间存在一定的逻辑关系标识,以及标识字符的大小写要求。例如,端口、信号或变量标识通常包含诸如出处、有效状态等基本含义。

1.2排版格式

能够提高代码的整洁度和可读性,在一定程度上减少缺陷被引入的机会,降低维护成本。排版格式规定代码统一缩进格式,每行代码的长度,端口、信号、变量、常量排列顺序、表达式的书写等方面的要求。例如,端口按输入、输出分类有序排列。

1.3语句完整性规则

能够解决一致性问题,降低RTL代码中引入的错误。语句完整性规定编码过程中语句、状态的完整性,时序电路的敏感量完整性,以及信号、变量的初始化、复位等要求。例如,条件语句IF中的ELSE、选择语句CASE中的OTHERS不能被忽略。

1.4注释规则

解决代码的可读性和可维护性。注释规则约定编码过程中注释的内容和排版位置,要求一个完整的软件程序应有明确的注释,主要包括:序言性注释、端口注释、功能性注释、软件模块注释等。例如,代码序言应包括代码的功能、代码适用范围、代码的作者、代码版本信息等等。

1.5代码结构规则

解决代码可读性、可重用性、可维护性问题。代码结构规则对代码结构、模块划分、模块层次、参数化设计、条件语句多级嵌套的策略等提出要求。例如,所有产生时序控制的逻辑放在同一个模块中。

1.6代码优化规则

解决代码执行效率、可靠性问题。代码优化规则对复位信号、时钟信号的处理,输出信号处理、模块调用、状态机编码以及悬空管脚、跨时钟域、数据类型、边界条件等方面的约定。例如,每个模块尽量用一个时钟,禁止用门控时钟。

2编码规范的作用

2.1提高工作效率

超大规模FPGA芯片特别是SOC类的FPGA芯片出现,使得FPGA芯片能够用在大型电子系统中。多功能FPGA芯片软件设计任务需要由多人共同承担,软件开发由单打独斗的个人行为变成团队活动。编码规范能够使所有团队成员遵守共同统一的全局决策,以清晰并且一致的风格进行编码,成员之间可以轻松地阅读对方的代码,易于相互理解及交流,多人设计能够无缝对接。

2.2提高测试性

为了减少FPGA软件缺陷,提高设计质量,在软件开发的各个阶段开展相应的测试,FPGA软件测试分为基于EDA工具和基于人工检查两种方式,基于 EDA工具检查的方式需要先对RTL代码进行编译,按照一定的规则转换成能被工具识别的逻辑电路,再用已有的度量模型定量地评价软件的内在质量。编码规范能使输入的RTL代码被EDA工具正确识别,保证自动检查能够顺利进行。基于人工检查方式,是由测试人员通过人工阅读代码的形式检查软件代码,找出代码其中存在的故障和违反开发标准之处以及其他一些问题。编码规范让代码审查有据可查,大大提高了审查效率和效果。

2.3提高重用性

在FPGA软件开发过程中,代码或IP核重用是很常见的现象。代码风格的一致性,能使开发人员更迅速、更容易理解其他人的代码;代码结构规则使代码具有良好的扩展性和重用性,能够快速、便捷移植;优化规则总结了EDA工具对RTL代码要求,能够保证RTL代码在任何EDA工具下仿真、编译和综合的正确性和一致性,消除代码集成时逻辑综合产生的风险,顺利实现在不同厂家以及不同系列芯片之间移植。

2.4提高可靠性

由于FPGA芯片能够兼顾性能、成本以及灵活性等诸多方面,很多航空、航天设备开始使用这种芯片,其性能将直接影响整个系统的可靠性。完整性规则、优化规则能够有效减少RTL代码引入的不确定因素,降低电源、环境温度变化对可靠性影响,减少功能仿真与门级电路之间存在偏差。

2.5降低维护成本

FPGA软件开发过程中的代码质量直接影响着维护的成本。维护工作不仅仅是读懂原有代码,而是需要在原有代码基础上做出修改。在没有规范的情况下,设计人员、维护人员各自按自己的习惯命名和编码,后续代码维护人员很难读懂和维护。因此,统一的风格有利于长期的维护。代码结构规则对功能分类及代码耦合性做出的约束,降低了代码修改以及扩展的难度和工作量。

3结论

一部完善的FPGA软件编码规范能够将编码从个人行为变成组织行为,最大限度的实现经验共享,避免同样错误重复出现,提高团队开发的合作效率。能够有效地增加代码的可读性,降低维护成本,提升代码的运行效率,增强代码的可重用性和可靠性,从而实现逻辑功能正确,综合结果最优的编码目标。

【参考文献】

[1]孙晓东.FPGA软件设计[J].电脑编程技巧与维护,2010(12):5-6.

[2]张建飞.基于航空领域嵌入式软件代码审查的研究[J].科技创新与生产力, 2015(10):108-109.

[3]何成巨,郭薇.浅谈软件编程中的代码规范问题[J].电脑知识与技术,2011,7(26):6409-6410.

[4]杨冰娥.代码规则自动化检查系统的设计与实现[D].西南交通大学,2014.

[5]李大勇.浅谈软件开发中代码规范的问题[J].电子技术与软件工程,2015(15):50-50.

[6]刘宇翔.软件项目管理的流程设计分析[J].科技资讯,2010(36):33-33.

[7]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安电子科技大学出版社,1999.

[8]乔庐峰,王志功.VHDL数字电路设计教程[M].电子工业出版社,2013.