图书前言

译者序    

    数字集成电路在过去30年得到了长足发展,电子设计自动化(EDA)技术起到了至关重要的作用。其中,用于表述设计对象的硬件描述语言(HDL)采用形式化方法,不仅可以准确、直观地对数字电路进行建模和仿真,而且极大地提高了电子设计效率和产能,为顺应半导体工艺技术和应用需求的急速发展提供了可能。目前我国ASIC设计业的基本状况是芯片设计开发工作远远滞后于电子产品发展的需求,滞后于芯片生产线的吞吐能力,为了能适应目前系统级芯片(system-on-chip, SoC)时代的设计需求、提升设计能力和效率,国内推广和开展基于HDL和各种EDA工具的设计方法已经成为迫切的需要。

    VHDL和Verilog HDL作为当今国际主流的两种硬件描述语言,20世纪90年代初成为IEEE标准之后在数字电路和芯片前端设计中得到了更为广泛的应用。它最初是为了仿真和模拟数字电路及数字系统的运行而设计出的一种形式化语言。随着半导体工艺的迅猛发展、电路规模和芯片集成密度的迅猛扩张,手工绘制电路图已不能满足设计需求了,此时人们就把作为模拟工具的硬件描述语言发展成电路设计的手段,在EDA工具的辅助下把采用硬件描述语言描述的涉及对象自动综合成实际电路。

    硬件描述语言的这种发展历程决定了其语义的丰富性。这种丰富性一方面决定了其模拟能力十分强大,另一方面决定了并不是每种描述出来的现象都可以直接生成实际电路,语言结构的仿真功能和所综合出的电路的功能可能不一致,而且各种语言结构搭配起来使用的似是而非的微妙差异都会导致综合出的电路功能完全不同。为避免歧义和误解,IEEE早在1996年和1997年制定了VHDL语言关于数学包(mathematical packages)和综合包(synthesis packages)的标准标准编号分别为IEEE Std 1076.2-1996和IEEE Std 1076.3-1997. --译者注。此后,IEEE分别于1999年和2002年全面制定了VHDL和Verilog在寄存器传输级上的综合标准标准编号分别为IEEE Std 1076.6-1999和IEEE Std 1364.1-2002. --译者注. 

    采用硬件描述语言设计电路尽管能够极大地提高设计生产率,但是在借助于EDA工具自动进行逻辑综合、时序验证以及版图布局布线等工序时,设计者仍然免不了需要根据设计规约(specification)向EDA工具指定各方面的设计要求,而这一过程又需要大量电路方面的背景知识。初学者往往会被工具中过多的概念和命令搞得晕头转向,仅仅参阅EDA工具软件的联机帮助已经不足以帮助初学者明晰各方面的概念。

    上述因素导致初学者在学习硬件描述语言这一现代电路设计手段的过程中犹如在曲折的隧道中盲行,看不见隧道出口外的光明前景。

    译者的经验表明:学习采用硬件描述语言从事电路前端(front-end)设计总体上可以分为三个阶段。第一阶段,学习硬件描述语言的语法,理解和接受硬件描述语言程序的各个部分是如何并行执行这一概念;第二阶段,学习硬件描述语言的逻辑综合语义,确切了解每一种语法结构是否可以综合以及语法结构的各种用法所综合出的电路结构及其微妙差异。第三阶段,学习逻辑综合工具的使用,这需要通过学习建立它所涉及各方面的概念,如时序(timing) 、违规(violation) 、时间裕量(slack) 、相偏(skew,相位偏移)等,另一方面需要学会使用综合工具进行综合和优化的具体过程,以及如何针对设计规约从综合过程和设计对象自身等方面去改进(tweak)设计以消弭逻辑综合过程中出现的问题,同时还应当了解综合过程与后端(back-end)版图工序(layout)间的相互作用关系。

    鉴于目前国内硬件描述语言方面的各种书籍多囿于语法层面的介绍,而没有着眼于综合语义和综合过程,导致初学者和设计人员对于设计、调试以及如何综合都相当困惑,清华大学出版社在了解到国内对此类图书的急迫需求后,为了推动国内的微电子产业的发展,适时引进翻译了VHDL-Coding and Synthesis with Synopsys (《VHDL--代码编写和基于Synopsys工具的综合》) 、Verilog HDL Synthesis: A Practical Primer (《Verilog HDL综合实用教程》)和Advanced ASIC Chip Synthesis: Using Synopsys Design Compiler Physical Compiler (《高级ASIC芯片综合--使用Synopsys Design Compiler Physical Compiler》)等书。

本书能够有效地帮助初学者跨越学习使用硬件描述语言从事前端设计的三个阶段。

    本书第1部分(第1~6章)将介绍VHDL代码的编写。它绕开了琐碎的语法细节的罗列,直接对VHDL代码的构成作出明确介绍,并从最简单的基本逻辑门的各种描述入手,向复杂示例过渡,让读者能从中潜移默化地学会各种语法结构。同时,在介绍各个示例的同时,给出了大量的解释和注意事项,以此阐述各种语法结构的逻辑综合语义,读者还可以从中领悟到语法结构的各种不同用法在逻辑综合时的微妙差异,而正是这些差异将影响电路功能的正确性和性能的好坏。

    本书第2部分(第7~14章)将介绍如何采用Synopsys工具综合VHDL代码。这一部分首先介绍了电路时序方面的各种基础概念,随后结合Synopsys工具的使用,细致地介绍了如何针对设计规约向综合工具施加各种设计约束、如何进行综合以及在遇到违规问题时如何从各方面去改进以消弭问题,并针对示例详实地给出了综合及优化中采用的各种策略和各个步骤。此后,还介绍了GTECH元件、DesignWare库元件、FPGA综合、逻辑综合中的可测实行问题以及综合与版图间的联系等诸多方面的知识。最后,给出了编写可综合代码应当遵循的指导原则。

    总之,本书内容全面、深入浅出、适用面广,对于已经采用或打算采用VHDL语言作为电路设计手段的工程人员和学生是一本难得的好书。它将帮助读者走出黑暗的隧道,成功地开始采用硬件描述语言这一现代手段从事电路前端设计工作。

    本书由孙海平翻译,刘晓稳、何伟和郑静参与了部分章节的翻译,全书由孙海平统稿,孙海平和丁健分别对全书作了全面的认真修订和校对,吴吉庆和张轶伟对译稿作了审读,并提出了不少有意义的修改意见。在此,谨向为本书出版付出辛勤劳动的所有人员致以诚挚的感谢! 

    我们在翻译过程中力求译义准确、行文流畅,但限于译者的水平,难免存在错误和不足之处,恳请读者通过电子邮件hp.sun@263.net及时向译者提出批评指正。