内容简介
     《Verilog HDL数字集成电路高级程序设计》系统地对Verilog HDL程序设计方法进行说明,明确了数字可综合逻辑设计和测试仿真程序设计在Verilog HDL语言中的不同,通过对典型的组合逻辑电路、时序逻辑电路、混合电路和测试程序的设计举例,较为完整地说明了Verilog HDL语言在数字集成电路中的设计方法。
  全书共分10章。第1章是Verilog HDL数字集成电路设计方法概述;第2章是Verilog HDL模块和结构化建模;第3章是Verilog HDL数据流描述和运算符;第4章是Verilog HDL行为级描述;第5章是Verilog HDL测试和仿真;第6章是Verilog HDL组合电路设计:第7章是Verilog HDL时序电路设计;第8章是Verilog HDL存储器设计;第9章是Verilog HDL设计风格;第10章是Verilog HDL高级程序设计。
  学习《Verilog HDL数字集成电路高级程序设计》需要具备数字电路和Verilog HDL基础知识。
  《Verilog HDL数字集成电路高级程序设计》可作为集成电路设计和HDL课程的研究生教材及本科生的辅导和设计参考教材,也可以作为数字集成电路设计工程师的参考书。     
内页插图
          目录
   第1章 Verilog HDL数字集成电路
设计方法概述
1.1 数字集成电路的发展和设计方法的演变
1.2 Verilog HDL的发展和国际标准
1.3 Verilog HDL语言的设计思想和可综合特性
1.4 用Verilog HDL进行数字集成电路设计的优点
1.5 功能模块的可重用性
1.6 VerilogHDL在数字集成电路设计流程中的作用
本章小结
思考题和习题
第2章 Verilog HDL模块和结构化建模
2.1 模块
2.2 模块的调用和结构化建模
2.2.1 模块调用方式
2.2.2 模块端口对应方式
2.2.3 模块建模例程
2.3 门级建模
2.3.1 门级元件的调用
2.3.2 门级模块调用例程
2.4 开关级建模
2.4.1 开关级建模
2.4.2 开关级建模例程
本章小结
思考题和习题
第3章 Verilog HDL数据流描述和运算符
3.1 连续赋值语句(ass堙n)
3.1.1 显式连续赋值语句
3.1.2 隐式连续赋值语句
3.1.3 迮续赋值语句(assign)例程
3.1.4 连续赋值语句使用中的注意事项
3.2 VerilogHDL中的运算符
3.2.1 算术运算符
3.2.2 关系运算符及相等运算符
3.2.3 逻辑运算符
3.2.4 按位运算符
3.2.5 归约运算符
3.2.6 移位运算符
3.2.7 条件运算符
3.2.8 连接和复制运算符
3.3 VerilogHDL数据流建模例程
本章小结
思考题和习题
第4章 Verilog HDL行为级描述
4.1 过程语句
4.1.1 initial过程语句
4.1.2 always过程语句和敏感事件表
4.1.3 过程语句使用中信号类型的定义
4.1.4 awlays过程语句中敏感事件的形式
4.2 语句块
4.2.1 串行语句块
4.2.2 并行语句块
4.2.3 语句块的使用
4.3 过程赋值语句
4.3.1 阻塞赋值语句
4.3.2 非阻塞赋值语句
4.4 条件分支语句
4.4.1 if条件分支语句
4.4.2 case条件分支语句
4.4.3 条件分支语句的特虑和隐藏锁存器的产生
4.5 循环语句
4.5.1 forever循环语句
4.5.2 repeat循环语句
4.5.3 while循环语句
4.5.4 for循环语句
4.5.5 循环语句的可综合性
本章小结
思考题和习题
第5章 Verilog HDL测试和仿真
5.1 Verilog HDL测试仿真结构
5.2 测试激励描述方式
5.2.1 信号的初始化
5.2.2 延迟控制
5.2.3 initial和always过程块的使用
5.2.4 串行与并行语句块产生测试信
5.2.5 阻塞与非阻塞描述方式产生测试信号
5.3 任务和函数
5.3.1 任务(Task)
5.3.2 函数(Function)
5.3.3 函数和任务的嵌套
5.4 典型测试向量的产生方式
5.4.1 任意波形信号的产生
5.4.2 时钟信号
5.4.3 用函数和电路产生测试信号
5.4.4 复位信号
5.4.5 总线信号产生
5.5 组合逻辑电路仿真环境的搭建
5.6 时序逻辑电路仿真环境的搭建
5.7 测试向量的选择和覆盖率
5.8 系统任务和函数的使用
5.8.1 显示任务
5.8.2 文件管理任务
5.8.3 仿真控制任务
5.8.4 时间函数
5.8.5 随机函数
5.9 编译预处理语句
5.9.1 宏定义
5.9.2 文件包含处理
5.9.3 仿真时间标度
5.9.4 条件编译
5.9.5 其他语句
5.10 路径延迟和参数
5.10.1 门级元器件延迟说明
5.10.2 延迟说明块
5.10.3 延迟参数的定义
5.10.4 路径延迟的设置
5.10.5 延迟值类型
5.11时序检查
5.11.1 使用稳定窗口的时序检查
5.11.2 时钟和控制信号的时序检查
5.12用户自定义元件(UDP)
5.12.1 组合电路的UDP
5.12.2 时序电路的UDP
本章小结
思考题和习题
第6章 Verilog HDL组合电路设计
第7章 Verilog HDL时序电路设计
第8章 Verilog HDL存储器设计
第9章 Verilog HDL设计风格
第10章 Verilog HDL高级程序设计
参考文献      
前言/序言
     随着集成电路技术的飞速发展,集成电路的制造工艺已经达到14nm甚至更小尺寸,数字集成电路的规模越来越大,复杂度越来越高。为了提高设计的效率和可靠性,融合了电子技术、计算机技术和智能化技术的EDA(Electronics Design Automation)工具已经在高速复杂数字集成电路设计中得到了广泛应用。
  硬件描述语言(HDL)是现代专用集成电路(ASIC)EDA设计的重要设计和仿真语言。目前,大部分数字集成电路设计者都在使用HDL创建高层次、结构化、基于语言的抽象电路描述,利用已有的设计技术综合出所需硬件电路,并对其进行功能验证和时序分析。
  对于准备从事集成电路设计和FPGA设计的研究生和工程师来说,需要了解如何在设计流程的关键阶段正确使用HDL,从而在综合后获得期望的电路。为此需要在了解HDL基本语法结构的基础上,深入理解电路的设计方法、综合特性和测试仿真方法。本书就是为这样一个目标而撰写的。
  VerilogHDL是被广泛采用的一种硬件描述语言,目前许多有关VerilogHDL的书籍重点关注的是讲解语言和语法,较少分析VerilogHDL语言和相应数字电路的关系,以及如何通过设计得到与目标相符合的电路系统。与这些书籍不同,本书着眼点主要放在VerilogHDL的设计方法上,这是编写本书的基本出发点。
  本书主要根据VerilogHDL国际标准IEEE1364,对使用HDL进行数字集成电路设计、验证和综合的方法进行讲解和分析;对于基于IP的设计及方式、可综合代码风格、系统程序设计架构等高级程序设计方法也进行了规范化说明。通过HDL设计方法和大量的实用电路的设计,使读者能够对VerilogHDL数字集成电路设计技术有一个全面了解。
  本书重点集中在如何在数字电路设计中的设计、综合和验证阶段合理使用VerilogHDL。由于VerilogHDL本质上是对数字电路的一种描述方法,因此学习本书时需要深入了解数字电路设计基础知识,同时至少熟悉一种编程语言,这有助于通过阅读获取有用知识,并提高设计能力。本书通过典型的设计例程,讨论了VerilogHDL核心设计方法和验证方法,以便帮助读者快速掌握相关知识内容,并希望借助于这些典型例程,为读者在设计复杂电路时提供帮助。
  数字电路中通常采用真值表、状态转移图和算法状态图对组合电路和时序电路进行分析和表示,在本书中将这些方法用于VerilogHDL的设计和分析,可以提高对设计方法的理解。同时,对于目前在信号处理、自动控制、数值计算等应用中所采用的一些设计方法,如查找表(LUT)、级数展开和有限状态机进行了说明和举例,希望能够帮助读者扩展设计思路。
  目前数字集成电路普遍采用基于IP的设计方式,以提高集成电路的设计效率、规范设计方式、形成商业化的集成电路设计模式。本书对于集成电路和FPGA设计中IP的使用、综合和测试仿真进行了完整的讲解,通过学习可以初步掌握相关的设计方法和流程。
  在VerilogHDL高级程序设计章节中,例举了一个完整的采用BPSK调制解调的无线通信系统设计,该方案已经用于ZigBee芯片中。通过该例程,可以帮助设计人员建立系统级设计的概念,有助于了解大规模集成电路的设计工作。
  本书的另外一个特点是总结、归纳和分析了HDL设计代码风格和可综合电路的关系。通过典型例程及分析,初步建立程序设计代码风格的概念,对于实际设计过程中设计代码的编写和程序代码分析,会起到重要的作用。
  本书列举大量实例的目的主要是希望读者在使用VerilogHDL进行超大规模集成(VLSI)电路设计时,学习如何应用关键步骤进行设计和验证。书中所列举的实例是完整的,并在Modelsim和Synplify软件中进行了编译、综合和仿真。
  本书重点对于设计方法、测试方法和代码风格等进行讲解,对于VerilogHDL基本语法和不常用的概念未作介绍。本书适合作为集成电路设计和HDL课程的研究生教材,以及相应本科生的辅导和设计参考教材,对于希望通过实例学习VerilogHDL,并将这种语言应用于集成电路设计和测试的专业工程师,也会起到一定的帮助。本书假定读者已具有布尔代数和数字逻辑设计等背景知识,并具有一定的数字电路设计经验。
  全书共分10章。第1章是VerilogHDL数字集成电路设计方法概述;第2章是VerilogHDL模块和结构化建模;第3章是VerilogHDL数据流描述和运算符;第4章是VerilogHDL行为级描述;第5章是VerilogHDL测试和仿真;第6章是VerilogHDL组合电路设计;第7章是VerilogHDL时序电路设计;第8章是VerilogHDL存储器设计;第9章是VerilogHDL设计风格;第10章是VerilogHDL高级程序设计。
  十分感谢对于本书的出版作出贡献的老师和学生们。感谢湘潭大学黄嵩人教授、西安交通大学张鸿教授、北京工业大学候立刚教授、西北工业大学张盛兵教授对本书提出的建设性意见。在本书中,蔡觉平完成了第1章和第9章的内容和程序验证,冯必先和褚洁完成了第2~4章的内容和程序验证,翁静纯完成了第5章的内容,国际留学生阮文长和王科完成了第6~7章内容,李娇完成了第8章的内容和程序验证,杨云锋完成了第10章的内容和程序验证。感谢马原、徐维佳、宋喆喆、同亚娜和温凯林在集成电路设计流程、代码质量评估等方面的大量实际工作。感谢课题组其他同学对于本书出版所作的努力。我们非常高兴能够与负责本书出版工作的西安电子科技大学出版社李惠萍编辑一起工作。她的支持和鼓励,以及对本书创作过程的指导,确保了本书的出版质量。
  希望通过本书的出版,为致力于集成电路设计的同学和工程师提供帮助。
  编者
  2015年8月    
				
 
				
				
					探索数字电路设计的深邃世界:一本关于高速、低功耗与创新设计的实践指南  本书并非您提到的《Verilog HDL数字集成电路高级程序设计》。它是一本面向资深数字集成电路设计工程师的权威著作,致力于揭示现代数字电路设计中最具挑战性、最前沿也最富于价值的领域。本书深入探讨的不是Verilog HDL语言本身的高级用法,而是将重心放在了如何利用这些语言和先进的设计理念,创造出性能卓越、功耗可控且具备创新特性的数字集成电路。  引言:超越基础,拥抱前沿  随着摩尔定律的持续推进,集成电路的复杂性呈指数级增长。如今,设计一个功能强大、效率非凡的数字芯片,已经远远超出了掌握HDL语法和基本逻辑门知识的范畴。当今的电子系统对性能有着近乎苛刻的要求,从移动设备的极速响应到高性能计算的澎湃动力,再到物联网设备的持久续航,每一个环节都离不开对数字电路设计的极致优化。同时,功耗的控制已成为制约芯片设计和应用普及的关键瓶颈,尤其是在功耗敏感的领域,如移动通信、医疗设备以及大规模数据中心。  本书正是为了应对这些挑战而生。它旨在为那些渴望在数字集成电路设计领域达到更高境界的工程师提供一条清晰的路径。我们相信,真正的“高级”设计,在于对电路行为的深刻理解、对性能瓶颈的精准定位、对功耗的精细管理以及对创新架构的敏锐洞察。因此,本书将聚焦于这些核心要素,通过深入的理论分析、翔实的案例研究和实用的设计技巧,帮助读者构建一套完整的、面向未来的数字集成电路设计体系。  第一部分:高性能设计策略的深度剖析  高性能是数字集成电路永恒的追求。本部分将带您深入了解实现和最大化芯片性能的关键技术和策略。     时序收敛与时序优化: 每一个成功的数字芯片都离不开精准的时序控制。本书将超越简单的时序约束设置,深入探讨各种复杂的时序问题,如亚稳态、时钟斜率、时钟抖动、跨时钟域(CDC)问题及其解决方案。我们将详细介绍如何通过深入的时序分析工具(如STA)来识别瓶颈,并针对不同的设计场景(如流水线优化、关键路径切分、门控时钟、动态电压频率调整(DVFS)等)提供行之有效的时序优化方法。您将学习到如何构建一个健壮的时序驱动设计流程,确保芯片在最高频率下稳定可靠地运行。    流水线与并行处理技术: 流水线和并行处理是提升指令吞吐量的两大基石。本书将详细阐述不同类型的流水线结构(如超标量、乱序执行、多线程),以及它们在CPU、DSP和GPU等核心设计中的应用。您将了解如何设计高效的流水线,如何处理流水线冒险(结构冒险、数据冒险、控制冒险),以及如何利用并行处理技术,如SIMD(单指令多数据流)和多核架构,来大幅提升计算能力。    缓存与内存系统优化: 内存访问延迟是现代处理器性能的主要瓶颈之一。本书将深入探讨高性能缓存体系结构的设计,包括多级缓存、缓存一致性协议(如MESI, MOESI)、写策略(写回、写通)以及缓存替换算法。此外,我们还将介绍如何优化片上总线(On-chip Bus)的设计,以及如何与片外DRAM(如DDRx)进行高效接口,以最大化内存带宽和最小化延迟。    高速接口设计: 现代系统需要与外界进行高速数据交换。本书将详细介绍当前主流的高速串行接口技术,如PCIe、USB、DDR、Ethernet等,包括它们的物理层和协议层设计要点。您将学习如何设计和验证这些复杂接口,以满足日益增长的数据传输需求。  第二部分:功耗控制与低功耗设计艺术  在能耗日益成为关键因素的今天,低功耗设计已不再是可选技能,而是必备素养。本部分将为您呈现从宏观架构到微观电路的全面功耗管理策略。     功耗分析与功耗建模: 知己知彼,百战不殆。在进行功耗优化之前,必须具备精确的功耗分析能力。本书将介绍各种功耗分析技术,包括静态功耗分析和动态功耗分析,以及如何利用EDA工具进行功耗估算和建模。您将学习如何识别设计中的功耗热点,并理解不同设计元素(如时钟门控、寄存器、逻辑门、存储单元)对总功耗的贡献。    门控时钟(Clock Gating)与电源门控(Power Gating): 这是降低动态功耗和静态功耗最有效的两种技术。本书将详细讲解门控时钟的实现原理、时序考量以及不同类型的门控实现方式(如时钟使能、功能性门控)。同时,我们将深入探讨电源门控技术,包括其在不同电压域下的应用,以及如何设计低功耗域(Low Power Domain)和建立/保持(Setup/Hold)时间管理,以在需要时快速恢复芯片功能。    动态电压频率调整(DVFS): DVFS是根据实际工作负载动态调整芯片工作电压和频率以实现功耗最优化的核心技术。本书将深入分析DVFS的实现机制,包括电压调节器(VRM)的设计、频率生成器(PLL/DLL)的控制以及软件和硬件之间的交互。您将学习如何设计一个高效的DVFS系统,以在满足性能需求的同时,最大程度地降低功耗。    数据宽度优化与算法级功耗降低: 许多功耗问题源于冗余的计算和不必要的数据处理。本书将探讨如何通过分析算法和数据流,进行数据宽度优化,减少寄存器和逻辑门的数量。此外,我们将介绍如何选择更节能的计算算法,以及如何利用组合逻辑代替时序逻辑(在某些情况下),来降低功耗。    低功耗设计流程与验证: 低功耗设计并非孤立的技术,而是需要贯穿整个设计流程。本书将介绍完整的低功耗设计方法学,包括低功耗IP集成、低功耗总线设计、低功耗时钟树综合(CTS)以及针对低功耗特性的验证策略,如功耗模式切换验证、可靠性验证等。  第三部分:创新架构与设计方法学  在竞争激烈的市场中,创新是企业生存和发展的关键。本部分将为您打开通往创新数字电路设计的大门。     可重构计算与硬件加速: 随着应用领域的不断扩展,通用处理器在某些特定任务上的效率逐渐显现不足。本书将探讨可重构计算的原理,如FPGA在专用硬件加速器中的应用,以及如何在ASIC设计中集成可重构逻辑单元。您将学习如何设计能够根据任务需求动态调整硬件结构的芯片,以实现更高的效率和灵活性。    异构计算与片上系统(SoC)设计: 现代SoC设计日益趋向于集成多种不同类型的处理单元,如CPU、GPU、DSP、NPU(神经网络处理单元)等。本书将深入分析异构计算的优势,以及如何设计高效的片上互连网络(Network-on-Chip, NoC)来连接这些异构单元。您将了解如何进行系统级建模和分区,以优化整体性能和功耗。    面向特定领域的架构(DSA): 针对特定应用领域(如AI、通信、图像处理)进行定制化设计,能够获得远超通用架构的性能和效率。本书将介绍DSA的设计原则,以及如何基于应用需求,选择合适的计算模型、数据表示和硬件结构。您将学习如何设计满足特定领域最高性能和最低功耗要求的芯片。    新兴技术与未来趋势: 本部分还将展望未来数字集成电路设计的前沿技术,如存内计算(In-memory Computing)、新型存储器技术(如ReRAM、MRAM)、以及如何应对量子计算时代的挑战。我们将探讨这些新兴技术对未来芯片架构的影响,以及工程师应如何为未来的技术变革做好准备。  结论:成为引领未来的数字设计专家  本书的目的不是教授您Verilog HDL的语法细节,而是帮助您掌握构建真正先进、高性能、低功耗且富有创新性的数字集成电路的全局观和核心能力。通过本书的学习,您将能够:     深入理解现代数字电路设计的瓶颈与挑战。    掌握各种高性能设计和低功耗设计的精髓与实践技巧。    能够独立设计和优化复杂的数字集成电路架构。    具备前瞻性思维,为未来的技术发展做好准备。  无论您是正在寻求技术突破的资深工程师,还是渴望在数字集成电路领域建立深厚根基的进阶学习者,本书都将成为您宝贵的资源。它将引领您走出基础的海洋,深入探索数字电路设计的深邃世界,成为一名真正具有影响力的设计专家。