




免费预览已结束,剩余46页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学校代码: 分类号: 密 级: 基于Lotus Domino OA系统的研究与开发 孙素燕 东南大学UDC: 学 号: 工程硕士学位论文基于Doxygen的设计验证文档自动化生成系统 研究生姓名: 导师姓名: 申请学位类别 工程硕士 学位授予单位 东 南 大 学 工程领域名称 软件工程 论文答辩日期 20 年 月 日 研究方向 学位授予日期 20 年 月 日 答辩委员会主席 评 阅 人 年 月 日东南大学硕士学位论文摘要 关键字: AbstractKeywords:目录摘要2第一章 绪论61.1课题来源61.2课题背景61.3国内外研究现状71.4发展动态81.5本文主要的研究工作81.6论文的章节安排9第二章 系统相关技术分析102.1Systemverilog 语言和相关技术背景102.1.1Verilog HDL语言简介12102.1.2VHDL语言简介24112.1.3Verilog HDL和VHDL的对比132.1.4Systemverilog 语言简介142.1.5Systemverilog 和C+ 算法模型的转换142.2Doxygen简介142.3本章小结16第三章 系统总体设计与实现173.1系统需求分析173.2系统结构及功能173.3系统的功能实现183.3.1Doxygen的下载、安装183.3.2Doxygen目录下内容简介193.3.3 生成Doxygen配置文件193.3.4 配置文件介绍203.3.5 修改配置文件213.3.6Doxygen中的过滤器简介223.3.7 本项目中过滤器的实现23第四章 Systemverilog语言向C+语言转换设计244.1编译器原理简介244.2本项目中编译器模型的搭建264.3Systemverilog语言和C+语言的匹配264.3.1Systemverilog语言中的主要语法项目及结构概念264.3.2C+语言中的主要语法项目及结构概念284.3.3Systemverilog语言和C+语言主要语法及结构概念的匹配284.4Systemverilog语言向C+语言的转换304.4.1main函数模块314.4.2 预处理模块314.4.3 字符读取存储模块344.4.4 字符处理模块354.4.5 字符还原保存模块414.5 本章小结41第五章 系统测试结果425.1测试概述425.2本项目测试425.2.1注释及debug语句测试425.2.2利用gcc/gdb进行编译调试445.3本章小结45第六章 总结466.1论文总结466.2主要贡献466.3技术展望46致谢47参考文献48作者简介(包括论文和成果清单)50第一章 绪论1.1 课题来源本课题来源于飞思卡尔半导体(苏州)有限公司的验证方法学SVBCL系统开发。SVBCL即Systemverilog Based class library,是飞思卡尔公司内部开发的一套基于Systemverilog的验证语言,用于集成电路前端测试平台(testbench)搭建和(IP)验证的方法学。该系统为飞思卡尔苏州分公司流程及方法学部门2011/2012年度重点研究课题。飞思卡尔半导体是全球领先的半导体公司,为汽车、消费、工业、网络和无线市场设计并制造嵌入式半导体产品。飞思卡尔中国是全球市场上举足轻重的半导体产品供应商,其利用先进技术开发制造的各种产品遍及集成电路产业的所有领域,包括集成电路研究和开发、软件开发、集成电路设计和集成电路制造等等。2004年5月2日,作为摩托罗拉半导体业务重组的一部分,飞思卡尔中国开始经营成立飞思卡尔公司继承摩托罗拉所有的半导体相关业务。目前飞思卡尔成为中国最优秀的半导体研发和制造中心,利用高新技术从事与半导体有关的软件开发和高级集成电路研发和设计,以及在中国出售半导体产品。苏州分公司主要进行微处理器解决方案方面的研究以及集成电路设计中流程及方法学方面的研究。1.2 课题背景文档(document)也称文件,通常指的是一些记录的数据和数据媒体,它具有固定不变的形式,可被人和计算机阅读。它和计算机程序共同构成了能完成特定功能的计算机软件(有人把源程序也当作文档的一部分) 。众所周知,硬件产品和产品资料在整个生产过程中都是有形可见的,软件生产则有很大不同,文档本身就是软件产品,没有文档的软件,不称其为软件,更谈不到软件产品。软件文档的编制(Documentation) 在软件开发工作中占有突出的地位和相当的工作量。高效率,高质量地开发、分发、管理和维护文档对于转让、变更、修正、扩充和使用软件,以及对充分发挥软件产品的效益有着重要意义。文档在软件开发人员,软件管理人员,维护人员,用户以及计算机之间起到了桥梁作用。软件开发人员在各个阶段中以文档作为前阶段工作成果的体现和后阶段工作的依据,这个作用是显而易见的。软件开发过程中开发人员需制定一些工作计划或工作报告,这些计划和报告都要提供给管理人员,并得到必要的支持。管理人员则可通过这些文档了解软件开发项目安排、进度、资源使用和成果等。软件开发人员需为用户了解软件的使用,操作和维护开发详细的资料,这些全都是文档。然而,在实际工作中,文档在编制和使用中存在着许多问题,有待于解决。文档开发工作枯燥并繁琐,所以开发人员普遍对编制文档不感兴趣。从用户方面看,他们又常常抱怨:文档售价太高,文档不够完整,文档编写得不好,文档已经陈旧或是文档太多,难于使用等等。 同时,随着集成电路领域的快速发展,各种新技术被广泛应用,低功耗设计,纳米技术,高频超大规模多核集成电路被更多的提上日程,随着芯片复杂度的增加,对应的设计代码和验证方法更加复杂。以往手动编写文档的方式成本高并且效率低下,这使得对设计文档和验证文档生成自动化的需求日益突出。 1.3 国内外研究现状技术文档在现代工程项目中的重要性,不言而喻。因此,众多世界知名软件公司都推出了基于自身技术平台,适用于自己公司开发语言的文档生成工具,比如微软公司(Microsoft)的Sandcastle, Sun公司(已被甲骨文Oracle公司收购)的javadoc,以及众多的针对其他语言的开源文档生成工具,比如针对Python的Sphinx和Epydoc,针对Ruby 编程语言的 YARD等等。微软公司的Sandcastle是一个管理类库的文档编译器。是用于编译发布组件信息的一个工具,这个工具通过反射和Xslt技术,可以从dll文件及其xml注释得到一个完整的帮助文档,格式可以是Html或CHM甚至是任何自定义的格式,这种文档比难以解读的XML更易于理解。Sandcastle与.NET Framework 2.0和.NET Compact Framework组合使用。微软称它在内部使用Sandcastle创建.NET Framework文档。Sandcastle中共有三个组件:MrefBuilder、Build Assembler和XslTransform。这些工具使用编译汇编代码时生成的输出结果,包括DLL文件以及XML注释文件。MrefBuilder反射一个项目的汇编代码并生成一个输出文件。MrefBuilder是一个随Sandcastle安装的命令行工具。它生成的输出文件通过XslTransform命令行工具转换成一个叫做reflection.xml的文件。reflection.xml文件包含所有文档数据,但不提供显示细节。 MrefBuilder完成工作后,立即由Build Assembler接手处理。Build Assembler可由命令行工具BuildAssembler启动。它利用由MrefBuilder生成的数据和任何代码注释,生成按逻辑分组的HTML文件。HTML Help Compiler再利用这些HTML文件生成最终结果。Javadoc是Sun公司提供的一种技术,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。也就是说,只要在编写程序时以一套特定的标签作注释,在程序编写完成后,通过Javadoc就可以同时形成程序的开发文档了。JBuilder提供了多项对Javadoc支持的功能,可以通过向导在工程窗格的树中创建Javadoc的节点,通过节点的菜单命名创建工程的Javadoc文档,可以通过诱导的方式录入Javadoc的标签,检验注释是否和源代码相匹配等。Sandcastle、Javadoc等工具全都是针对特定语言的代码生成工具,缺乏对其他语言的支持;同时由于其封闭性,用户无法对其进行二次开发以适合某些特定的语言环境。1.4 发展动态目前计算机产业有一个发展趋势是开源化和整合化。比如基于开源的Linux操作系统在移动领域的应用已日趋广泛,又或者一个文字处理软件整合了对多种不同文档格式的支持。在技术文档生成领域,同样适用这个发展趋势。Doxygen作为技术文档生成领域的重要产品,正是代表了计算机产业的这种发展趋势。它本身是一种开源跨平台的,以简明风格描述的文档系统,完全支持C、C+、Java、Objective-C和IDL语言,部分支持PHP、C#。更重要的是,Doxygen提供了过滤器功能,支持对第三方编写的过滤器的输出进行文档生成,这就大大扩展了Doxygen的灵活型,为它对更多语言的支持提供了方便可行的路径。在未来35年内,对某个文档生成工具的兼容性开发,必将成为文档生成工具的发展趋势,同时,兼容性强,可开发性灵活的文档生成工具,一定会在文档生成领域,占据相当的市场份额,成为该领域强劲的领导者。1.5 本文主要的研究工作本课题以Doxygen和Systemverilog为主要研究对象,在对Doxygen的使用方法、过滤器制定规则, Systemverilog语法结构和C+语言语法结构深入研究的基础上,设计了一套可支持更广泛编程语言的文档自动化生成系统。该系统集成了Systemverilog、 C、C+等开发语言的文档自动生成等功能,可满足设计文档和验证文档自动生成的需求,在完善代码转换程序的基础上,提高飞思卡尔内部文档编写的工作效率和代码精确度,增强企业的验证自动化能力,也有助于加速验证流程,使其早日进入一个零故障时代。该系统的核心组件为使用C语言编写的可适用于Doxygen的过滤器。该过滤器完美实现了从Systemverilog语言到C+语言的语法转换,从而使Doxygen可以利用该过滤器的输出来自动生成软件文档。1.6 论文的章节安排论文的结构安排如下:第一章 “绪论”,简单介绍了文档生成系统及其重要性,分析了相关技术的国内外研究现状、发展动态,并概要性的讲述了本文档主要研究内容。第二章 “系统相关技术分析”,全面介绍了Systemverilog语言、C+语言的特点,已经Doxygen工具的相关知识。第三章 “系统总体设计与实现”,分析了用户需求,描述了整个系统的总体设计和具体实现方法。第四章 “ Systemverilog语言向C+语言转换过滤器的设计”,详细描述了本设计核心组件语言转换过滤器的设计。第五章 “系统测试结果”,介绍了软件测试的几种方法,并对整个系统的测试进行了描述,第六章 “论文总结”, 对整个设计进行分析、总结,并提出未来发展方向第二章 系统相关技术分析2.1 Systemverilog 语言和相关技术背景2.1.1 Verilog HDL语言简介12Verilog HDL是一种硬件描述语言,是以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年Cadence公司收购了GDA公司,使得Verilog HDL成为了该公司的独家专利。1990年Cadence公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995.Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。Verilog硬件描述语言的主要特点包括: 基本逻辑门,例如and、or和nand等都内置在语言中。 用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。 开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。 提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。 可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语句描述建模。 Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。 能够描述层次设计,可使用模块实例结构描述任何层次。 设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。 人和机器都可阅读Verilog 语言,因此它可作为E D A的工具和设计者之间的交互语言。 Verilog HDL语言的描述能力能够通过使用编程语言接口( P L I)机制进一步扩展。P L I是允许外部函数访问Verilog 模块内信息、允许设计者与模拟器交互的例程集合。 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级( RT L)到算法级,包括进程和队列级。 能够使用内置开关级原语在开关级对设计完整建模。 同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。 Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。 在行为级描述中, Verilog HDL不仅能够在RT L级上进行设计描述,而且能够在体系结构级描述及其算 法级行为上进行设计描述。 能够使用门和模块实例化语句在结构级进行结构描述。 在Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。 Verilog HDL 还具有内置逻辑函数,例如&(按位与)和|(按位或)。 对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。 语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。2.1.2 VHDL语言简介24VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE-1076(简称87版)之后,各EDA公司相继推出自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,简称93版。VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL语言是一种用于电路设计的高级语言。它在80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。目前,VHDL在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。与其他硬件描述语言相比,VHDL具有以下特点:1.功能强大、设计灵活VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。2.支持广泛、易于修改由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。3.强大的系统硬件描述能力VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。4.独立于器件的设计、与工艺无关设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。当设计描述完成后,可以用多种不同的器件结构来实现其功能。5.很强的移植能力VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。6.易于共享和复用VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。2.1.3 Verilog HDL和VHDL的对比Verilog HDL和VHDL作为描述硬件电路设计的语言,其共同特点在于:能形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述;可借用高级语言的精巧结构来简化电路行为的描述;具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转换;硬件描述与实现工艺无关(有关工艺参数可通过语言提供的属性包括进去);便于文档管理;易于理解和设计重用。但是,两者又有着各自的特点:(1)语法特点Verilog HDL和VHDL最大的差别在语法上,Verilog HDL是一种类C语言,而VHDL是一种ADA(Action Data Automation,行动数据自动化)语言。由于C语言简单易用且应用广泛,因此也使得Verilog HDL语言容易学习,如果有C语言学习的基础,很快就能够掌握;相比之下,VHDL语句较为晦涩,使用难度较大。(2)运用群体由于Verilog HDL早在1983年就已推出,至今已有20多年的应用历史,因而Verilog HDL拥有更加广泛的设计群体,成熟的资源也比VHDL丰富。(3)优势不同传统观念认为Verilog HDL在系统级抽象方面较弱,不太适合大型的系统;VHDL侧重于系统描述,从而更多地为系统级设计人员所采用;Verilog HDL侧重于电路级描述,从而更多地为电路设计人员所采用。但这两种语言仍处于不断完善之中,都在朝着更高级、更强大描述语言的方向前进。其中,经过IEEE Verilog HDL 2001标准补充之后,Verilog HDL 语言的系统级描述性能和可综合性能有了大幅度提高。综上所述,Verilog HDL 语言作为学习HDL设计方法入门和基础是非常合适的。掌握了Verilog HDL 语言建模、综合和仿真技术,不仅可以增加对数字电路设计的深入了解,还可以为后续高级阶段的高级学习打好基础,包括数字信号处理和数字通信的FPGA实现、IC设计等领域。2.1.4 Systemverilog 语言简介Systemverilog简称为SV语言,是一种相当新的语言,它建立在Verilog语言的基础上,是 IEEE 1364 Verilog-2001 标准的扩展增强,兼容Verilog 2001,并新近成为下一代硬件设计和验证的语言。 Systemverilog结合了来自 Verilog、VHDL、C+的概念,还有验证平台语言和断言语言,也就是说,它将硬件描述语言(HDL)与现代的高层级验证语言(HVL)结合了起来。使其对于进行当今高度复杂的设计验证的验证工程师具有相当大的吸引力。 这些都使得Systemverilog在一个更高的抽象层次上提高了设计建模的能力。它主要定位在芯片的实现和验证流程上。Systemverilog(SV)拥有芯片设计及验证工程师所需的全部结构,它集成了面向对象编程、动态线程和线程间通信等特性,作为一种工业标准语言,SV全面综合了RTL设计、测试平台、断言和覆盖率,为系统级的设计及验证提供强大的支持作用。 Systemverilog除了作为一种高层次,能进行抽象建模的语言被应用外,它的另一个显著特点是能够和芯片验证方法学结合在一起,即作为实现方法学的一种语言工具。使用验证方法学可以大大增强模块复用性、提高芯片开发效率,缩短开发周期。2.1.5 Systemverilog 和C+ 算法模型的转换Systemverilog引进了几种新的数据类型。C+语言程序员会熟悉其中的大多数。引进新的数据类型构思是这样的,如果C+语言和Systemverilog有相同的数据类型可以使C语言算法模型更容易的转化为Systemverilog模型。我们将在第4章(Systemverilog语言向C语言转换设计)中详细讨论两者之间的转换。2.2 Doxygen简介Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C+、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxgen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件。通常我们在写程序时,或多或少都会写上批注,但是对于其它人而言,要直接探索程序里的批注,是非常困难的。大部分有用的批注都是属于针对函式,类别等等的说明。所以,如果能依据程序本身的结构,将批注经过处理重新整理成为一个纯粹的参考手册,对于后面利用您的程序代码的人而言将会减少许多的负担。不过,反过来说,整理文件的工作对于您来说,就是沉重的负担。对于未归档的源文件,也可以通过配置Doxygen来提取代码结构。或者借助自动生成的包含依赖图(includedependency graphs)、继承图(inheritance diagram)以及协作图(collaborationdiagram)来可视化文档之间的关系。Doxygen生成的帮助文档的格式可以是CHM、RTF、PostScript、PDF、HTML和Unixman page等。一个好的程序设计师,在写程序时,都会在适当的地方加上合适的批注。如果,能够在撰写批注时,稍微符合某种格式,接着就可以透过一个工具程序依据程序结构及您的批注产生出漂亮的文件。Doxygen 就是这样的一个工具。在添加批注时,稍微按照一些Doxygen所制订的规则。接着,他就可以帮您产生出漂亮的文件了。因此,Doxygen 的使用可分为两大部分。首先是特定格式的批注撰写,第二便是利用Doxygen的工具来产生文件。 从图1中可以看出,Doxygen可执行程序位于正中,所有的流程都围绕着它进行。左侧图标表示Doxygen的输入可以是源文件,或者是定制的头文件、图像、注解等。Doxygen图标上部是配置文件,由Doxywizard处理,下部是Tag文件,由Doxytag处理。后面是Doxygen输出文件的类型,依次是XML、Latex、Man pages、RTF和HTML,可处理类型图标之后是进行进一步转换所需的工具。Doxygen的处理流程:第一步:创建配置文件Doxyfile,一般用Doxywizard生产后,再手工修改。Doxygen用一个后缀名为.cfg的配置文件决定所有的设置选项。每一个项目都将得到他自己的配置文件。一个项目能由一个单独的源文件构成,但也能由一个全部的向下递归的源文件树组成。配置文件会指定PROJECT_NAME项目名,OUTPUT_DIRECTORY输出文档目录,INPUT输入源文件(一个文件或文件树),FILE_PATTERNS添加一个或多个文件模型(如*.cpp,*.h等),仅有在模型中匹配的文件被解析,INPUT_FILTER指定filter程序对输入文件进行解析(如本项目所开发的sv2cpp.c)。FILTER_PATTERNS指定应用于解析器上的pattern文件格式。图1 Doxygen处理工具以及它们之间的信息流第二步:运行Doxygen。执行命令doxygen Doxyfile生产文档,依据配置文件中的设定,doxygen将创建html,rtf,latex,xml和/或man目录在output目录内。建议这些名字的目录中包含生成的文档HTML,RTF,LATEX。第三步:文档化源文件。尽管文档化源文件出现在第三步中,但是在一个新的工程中,必须参照第一步。 2.3 本章小结本章简单分析了本设计使用到的基本技术和相关知识点,阐述了这些知识点的特性,对比了Verilog语言和VHDL语言的特点,为后面的设计打下坚实基础。第三章系统总体设计与实现3.1 系统需求分析需求分析阶段要求项目开发人员和用户紧密配合,充分交流信息,以得出经过用户确认的系统逻辑模型,这是以后设计和实现目标系统的基础,因此,必须准确完整的体现用户的要求。用户对象:本系统的最终用户为软件设计工作人员用户需求:对于开发一个文档自动化系统来说,首先要确定它提供哪些功能。用户使用文档自动化系统是按一定的流程进行的。用户登录系统,用户管理自己负责的待测工程,用户管理待测工程的各个画面,用户管理各个画面的画面项目,系统生成测试用例,用户手动删除或添加测试用例,文档生成结果管理。以上是本系统的一次完整的操作流程。综上所述,系统的用户应该分为两类:项目经理级用户和普通开发者用户。项目经理级用户权限高于普通开发者用户。项目经理级用户可以新建和删除待测工程,而普通开发者用户只能对自己所属的项目经行操作。3.2 系统结构及功能类型管理模块文档管理模块生成C+模块解析SV模块系统图2 系统结构整个系统由类型管理模块,文档管理模块,生成C+模块和解析Systemverilog模块总成。类型管理模块主要负责将用户输入的源程序文件的类型进行管理,应用不同的分析器与不同类型的源程序文件。文档管理模块负责将系统生成的文档经行管理,组织成与源程序项目工程相同的结果供用户查看。解析Systemverilog语言模块和生成C+模块是本系统的核心模块,解析Systemverilog模块分析了用户输入的systemverilog源程序文件,对应于已经建立的转换模型,由生成C+模块生成编译后的C+文件送入Doxygen进行文档生成。3.3 系统的功能实现3.3.1 Doxygen的下载、安装我们首先登录网络浏览器,在Doxygen的官方页面中(),选择download进入下载频道,可见如下几个下载链接:1.The source distribution2.A binary distribution for Linux x86-643.A 32-bit binary distribution for Windows XP/Vista/74.A universal binary distribution for Mac OS X 10.6 (Snow Leopard)5.A universal binary distribution for Mac OS X 10.4 (Tiger)分别对应的是Doxygen源程序分发包,基于x86 64位 Linux的二进制分发包,基于Windows XP/Vista/7 的32为可执行程序分发包, 基于Mac OS 雪豹操作系统的通用二进制分发包和基于Mac OS。我们要下载使用的是第二个, 基于x86的64位Linux的二进制分发包。Doxygen在Linux上的安装非常简单,下载完毕后只需遵循Linux上其他通用软件的安装方式即可:1.首先对下载下来的gz格式的安装包使用命令gunzip进行解压,生成tar格式的归档文件;2.使用 tar xvf 对归档文件进行解档,将doxygen的整个文件夹完全释放出来;3.执行doxygen目录下的configure;4.输入make install 进行安装编译。经过以上四步,Doxygen的可执行程序就被安装在/usr/local/bin目录,同时,doxygen的帮助手册也被安装在/usr/local/doc/目录,这样,在linux系统中,用户可以方便的使用man命令查看doxygen的帮助手册。3.3.2 Doxygen目录下内容简介Doxygen的安装目录下包括3个文件夹和7个可执行文件。3个文件夹分别是bin,examples和html。bin文件夹中包括了Doxygen和doxytag两个Doxygen中主要的两个可执行文件,我们将使用这个目录下的可执行文件来生成我们需要的参考文档;examples文件夹中给出了类、枚举等各种语法概念以及包括图表,群组等各种显示方式的HTML格式的实例供用户参考,方便用户在开发中实现参考文档的多样性和可读性;html文件夹下则是Doxygen的html格式的用户参考手册,其中包括了Doxygen的下载安装、编译、配置、自动连接生成、输出格式等基本使用说明,用户参考手册是我们开发使用的基本文档。3.3.3 生成Doxygen配置文件Doxygen使用一个配置文件来决定它的所有设定。每一个工程项目都应该有一个自己的配置文件。一个工程项目可以包含一个单一的源代码文件,同时,Doxygen还可以通过递归扫描整个源代码工程项目的整个树状结构来包括整个工程源代码。为了简化配置文件的生成,Doxygen提供了一个配置文件的模板为开发者使用,通过生成并修改这个配置文件模板,用户可以很快的生成一个适合自己的配置文件。可以使用如下命令来生成这个配置文件的模板:doxygen g 命令中的config-file即为生成的配置文件的名称。如果开发者在生成配置文件模板是省略了配置文件的名称,那么Doxygen会自动使用doxyfile作为新生成的配置文件的名称;如果用户指定的配置文件config-file已经存在了,那么Doxygen会自动把已经存在的config-file文件另存为config-file.bak,然后再生成新的config-file作为配置文件;如果用户使用-(中横线)作为配置文件的名称,那么Doxygen就会尝试从标准输入设备(stdin)中读取配置文件,这在使用脚本的过程中是非常有用的。3.3.4 配置文件介绍配置文件是结构类似于一个简单的Makefile文件的开放式的ASCII码文本文件,它是由许多不同的标签任务而组成。配置文件可以被Doxygen解析,其中包含了控制格式的标签和行。配置文件中的字符是区分大小写的,同时,以#开头的注释语句可以出现在配置文件的任意地方。配置文件由一系列的配置语句组成,每一条配置语句都包含了全是大写字母的标签名称,等号(=)和参数值,参数值可以是一个或多个。如果同一个标签名称被书写了多次,那么最后一次书写的标签及其参数值将生效。配置文件中的参数值不允许为空,所有空的参数值需要用引号(“”)来代替。配置文件图例如图2所示。图3 配置文件图例配置文件中的配置选项超过100条,可以分为以下15个大类:工程项目相关配置选项编译相关配置选项警告和进程相关配置选项输入相关配置选项源程序浏览相关配置选项字母索引相关配置选项HTML相关配置选项LaTeX相关配置选项RTF相关配置选项参考页配置选项XML相关配置选项AUTOGEN_DEF相关配置选项预处理相关选项外包参考选项标点相关选项这些配置选项详细控制了Doxygen在整个工作过程中的方方面面,从源程序工程项目文件,到参考页,从错误的警告,到引入外部参考,我们都可以通过配置选项来实现符合自己需求的特殊定制,甚至是标点符号的大小,我们都可以通过配置选项来加以修改。3.3.5 修改配置文件对于大多数的配置选项,我们可以使用Doxygen生成配置文件时的默认值。我们可以使用任何文件编辑器来对Doxygen的配置文件进行更改,同时,我们也可以使用doxywizard来对Doxygen的配置文件进行修改。Doxywizard是一个通过对话框来创建、读取和更改doxygen配置文件的前端图形化用户界面。对于一个由一些简单的C语言或C+语言程序组成的工程项目,Doxygen会自动搜索当前所在目录下的源程序文件作为输入文件;如果是由一个源程序目录或者目录树组成的大型软件项目,我们需要在配置文件中的INPUT选项中指定程序工程的根目录或文件夹,同时,添加一种或多种文件格式,这样,doxygen就只会将符合设定的文件作为输入文件进行分析处理。Doxygen会视一个文件的扩展名来决定如何分析处理一个文件:如果扩展名为.idl或.odl,doxygen会视它为一个IDL文件;如果扩展名为.java,doxygen会把它挡住一个用java写的程序;如果文件名是以.cs结尾,doxygen会用C#分析器来对程序进行分析;同理,.py结尾的文件会用Python分析器,.php,.php4,.inc或者.phtml结尾的文件会被看做是PHP的源程序。所有其他的扩展名文件都会被当做C/C+源文件来处理。下面列举出我们在此次设计中更改的一些比较主要的配置选项:DOXYFILE_ENCODIING=UTF-8该配置选项设定了该配置文件中的所有字符使用的编码方式;PROJECT_NAME=SVBCL指定了项目名称为SVBCLPROJECT_NUMBER=1.0PROJECT_NUMBER选项可被用作指定整个项目版本;OUTPUT_DIRECTORY=./output指定Doxygen的输出目录为当前目录下的output文件夹;OUTPUT_LANGUAGE=English指定Doxygen输出的参考文档为英语。Doxygen的输出语言支持包括简体中文在内的30余中语言;WARN_FORMAT=“$file:$line:$test”指定经过信息的输出格式为文件名,行号,出错的信息;INPUT=blocks/FSLSVBCL指定待输入的源程序项目的根目录为blocks文件夹下的FSLSVBCL文件夹INPUT_ECODING=UTF-8指定待输入的源程序的字符编码方式为UTF-8FILE_PATTERNS=*.sv*.svh*.v*.svi指定源程序根目录下的sv,svh,v,svi文件为待输入的文件格式INPUT_FILTER=./filter/sv2cpp.c指定输入文件的过滤器为sv2cpp.c;通过过滤器,Doxygen可编译一些非Doxygen支持的一些编程语言;其他配置选项都是一些控制Doxygen输出文件格式的原型,我们在这里都采用doxygen自动生成配置文件时的默认设置即可。3.3.6 Doxygen中的过滤器简介Doxygen中的过滤器又称编译器,通过在配置文件中的设定,我们可以为每一个输入的源程序调用这个过滤器;配置文件中还有一个叫做FILTER_PATTERNS的过滤器选项,可针对不同的源文件设定不同的过滤器程序,这样更方便一个由多种语言的源程序组成的软件项目。Doxygen首先通过执行 的方式来调用过滤器程序,接着,Doxygen会使用过滤器程序写入到标准输出设备(STDOUT)的数据作为Doxygen的输入。代之过滤器程序的名称,为配置文件中为doxygen设定的输入源文件。如果是使用FILTER_PATTERNS选项,那么Doxygen会先对比输入源文件的扩展名已决定使用哪一个过滤器,之后在执行上述的步骤。3.3.7 本项目中过滤器的实现本项目中的输入源文件为单一的Systemverilog文件项目,所以我们只需设定INPUT_FILTER这个参数即可。本项目过滤器的设计主要是基于编译器的原理,实现从Systemverilog语言到C+语言的转换,这是整个文档生成系统的重点所在,是本项目研究的重点作者将在下一章中详细讨论从Systemverilog语言到C+语言的转换的实现方式,本章只对本项目过滤器的设计做一个总体上的介绍。本项目使用sv2cpp.c程序作为过滤器,之所以使用C语言来编写过滤器,是因为C语言简洁紧凑、灵活方便,运算符丰富,数据结构丰富,而且和汇编一样,C 语言可以对位、字节和地址进行操作,同时,C语言生成的代码质量很高,这使的编译器程序的执行效率非常高。最后,C语言拥有良好的移植性,适用范围非常大,用C语言编写过滤器程序,大大增加了整个系统的可移植性。sv2cpp.c程序中包含3大功能处理模块,通过这些处理模块,Systemverilog中的特殊字符,特殊语法被转换成C+语言中类似的字符和语法。Doxygen通过读取sv2cpp.c程序输出的C+格式的程序,生成Systemverilog源程序的参考文档。第四章 Systemverilog语言向C+语言转换设计我们利用编译器的设计原理来设计本项目中的过滤器,使其可以完成把Systemverilog语言编译成C+语言的任务。4.1 编译器原理简介编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。本设计中,就是把Systemverilog语言作为源程序,把C+语言作为目标语言。图4编译器原理图编译器逐行扫描高级语言程序源程序,编译的过程如下: 1.词法分析 (Lexical Parse) 识别关键字、字面量、标识符 (变量名、数据名)、运算符、注释行(给人看的,一般不处理)、特殊符号(续行、语句结束、数组)等六类符号,分别归类等待处理。2.语法分析 (Syntax Parse) 一个语句看作一串记号 (Token)流,由语法分析器进行处理。按照语言的文法检查判定是否是合乎语法的句子。如果是合法句子就以内部格式保存,否则报错。直至检查完整个程序。3.语义分析 (Semantic Parse) 语义分析器对各句子的语法做检查:运算符两边类型是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农发行宜春市高安市2025秋招笔试热点题型专练及答案
- 平等主体的课件
- 实操企业生产计划考试题
- 诗歌易错知识点考试题
- 中药配方颗粒质量标准创新与市场竞争策略研究报告
- 茶艺知识考试题
- 垃圾分类后勤试题及答案
- 校园安全管理2025年报告:智慧校园安全设施设备智能化改造趋势
- 氢能重卡商业化运营中的氢能成本与效益分析
- 中级会计实务真题及答案
- 2025年浙能集团甘肃有限公司新能源项目(第二批)招聘17人笔试历年参考题库附带答案详解
- 高压氧舱培训课件
- 高二物理第一次月考卷【测试范围:第11~12章】(考试版A3)
- 2025年大一上学期java期末考试题及答案
- 法国方言政策的沿袭与变革
- (2025年标准)教师定岗协议书
- 8 回忆鲁迅先生(课件)语文统编版2024八年级上册
- 学校学生欺凌治理委员会成员及工作职责、实施方案范文
- 2025年蜀道投资集团有限责任公司招聘笔试备考题库附答案详解(达标题)
- 美术基础 课件 第1、2章 美术简介;素描
- 2025年廉价航空行业研究报告及未来发展趋势预测
评论
0/150
提交评论