跳转到内容

逻辑综合:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
AH829留言 | 贡献
InternetArchiveBot留言 | 贡献
Add 2 books for verifiability (20231207)) #IABot (v2.0.9.5) (GreenC bot
 
(未显示7个用户的28个中间版本)
第2行: 第2行:
|G1=Electronics
|G1=Electronics
}}
}}
在[[电子学]]中,'''逻辑综合'''({{lang-en|'''logic synthesis'''}})是所电路的抽象形式(通常是[[寄存器传输级]]),转换到[[逻辑门]]级别的电路连线[[网表]]的过程。通常,逻辑综合包括了[[硬件描述语言]]——主要是[[VHDL]]和[[Verilog HDL]]。某些工具能够在[[可编程逻辑器件]],如[[可编程阵列逻辑]]({{lang|en|Programmable Array Logic, PAL}})和[[现场可编程逻辑门阵列]]({{lang|en|Field Programmable Gate Array, FPGA}})上生成[[位元流|数据流]]过程,而另一些工具则可以设计[[专用集成电路]]。逻辑综合是[[电子设计自动化]]的一个方面
在[[集成路设计]]中,'''邏輯'''({{lang-en|'''logic synthesis'''}})是所设计[[数字电路]]抽象级描述,经过[[布尔函数]]化简、优化后,转换到[[逻辑门]]级别的电路连线[[网表]]的过程。

== 概述 ==
通常,逻辑综合的信息来源是[[硬件描述语言]]——主要是[[VHDL]]和[[Verilog]]等,设计人员通常使用硬件描述语言来进行电路的高级抽象(通常是[[数字电路]][[寄存器传输级]]的数据、行为)描述数字电路的逻辑功能,这样他们可以把更多精力投入功能方面的设计,而避免在一开始就研究可能极其复杂的电路连线。

然而,从电路的高级抽象描述到实际连线网表,并不是一项简单的工作。在以前,这需要设计人员完成逻辑函数的建立、简化、绘制逻辑门网表等诸多步骤。随着电路的[[超大规模集成电路|集成规模]]越来越大,人工进行逻辑综合变成了一项十分繁琐的任务。

随着[[电子设计自动化]]的发展,逻辑综合这一步骤可以由计算机工具辅助完成。但是,由于自动化逻辑综合工具并不总能够产生最优化的逻辑门网表,因此人工的介入仍然不可缺少。某些工具能够在[[可编程逻辑器件]],如[[可编程阵列逻辑]]({{lang|en|Programmable Array Logic, PAL}})和[[现场可编程逻辑门阵列]]({{lang|en|Field Programmable Gate Array, FPGA}})上生成[[位元流|数据流]]过程,而另一些工具则可以生产[[专用集成电路]]。逻辑综合是电子设计自动化的一个重要方面。


== 历史 ==
== 历史 ==
逻辑综合的发展可以追溯到[[乔治·布尔]](1815-1864)对[[逻辑代数]]的研究(逻辑代数现在也被称为“布尔代数”)。1938年,[[克劳德·香农]]展示了如何使用逻辑代数来描述电路开关切换的过程。<ref>{{cite web|url=http://www.nyu.edu/pages/linguistics/courses/v610003/shan.html|title=Claude Shannon|publisher=New York University}}</ref>在早期,逻辑设计牵涉了对真值表的处理(如利用[[卡诺图]])。通过将一系列规则将卡诺图上的某些项进行合并,可以得到最小化的逻辑,即逻辑式可以得到简化。人工进行上述的操作可以处于四到六个变量的卡诺图。
逻辑综合的发展可以追溯到[[乔治·布尔]](1815-1864)对[[逻辑代数]]的研究(逻辑代数现在也被称为“布尔代数”)。1938年,[[克劳德·香农]]展示了如何使用逻辑代数来描述电路开关切换的过程。<ref>{{cite web|url=http://www.nyu.edu/pages/linguistics/courses/v610003/shan.html|title=Claude Shannon|publisher=New York University|access-date=2012-07-09|archive-date=2020-04-08|archive-url=https://web.archive.org/web/20200408115645/http://www.nyu.edu/pages/linguistics/courses/v610003/shan.html|dead-url=no}}</ref>在早期,逻辑设计牵涉了对真值表的处理(如利用[[卡诺图]])。通过将一系列规则将卡诺图上的某些项进行合并,可以得到最小化的逻辑,即逻辑式可以得到简化。人工进行上述的操作可以处于四到六个变量的卡诺图。但是以图形表示的卡诺图不适合[[算法]]的导出,因此人们需要研究代数形式的逻辑化简算法。{{R|Stephen|page=189}}


对逻辑最小化进行自动化的第一步是引入[[奎因-麦克拉斯基算法]],它可以在计算机上执行。进行逻辑简化的目的是得到使用最少的逻辑器件,并精确地对表达原始逻辑式的意义。现在,更为高效的[[Espresso启发逻辑简化法]]({{lang|en|Espresso heuristic logic minimizer}})成为了这一程的标准工具。早期的另一个研究领域是对[[有限状态机]]的简化和编码,这一工作当时设计者来说不容易。逻辑综合的应用大多于数字计算机设计相关。这样,[[IBM]]和[[贝尔实验室]]在逻辑综合自动化的早期扮演了关键的角色。从分立的逻辑门到[[可编程逻辑阵列]]({{lang|en|Programmable logic arrays, PLA}})促进了高的两级逻辑最小化的发展,这是由于两级描述中的最小化条件可以减少可编程逻辑阵列的面积。
对逻辑最小化进行自动化的第一步是引入[[奎因-麦克拉斯基算法]],它可以在计算机上执行。进行逻辑简化的目的是得到使用最少数量的逻辑器件,并精确地对表达原始逻辑式的意义。人们可以使用卡诺图来完成变量较少的逻辑函数的化简。现在,Espresso[[启发式搜索|启发式]]逻辑简化({{lang|en|Espresso heuristic logic minimizer}})成为了完成这一更有效的工具。早期数字逻辑的另一个研究领域是对[[有限状态机]]的简化和编码,这一工作对于当时设计者来说是件容易的工作。逻辑综合的应用大多于数字计算机设计相关。[[IBM]]和[[贝尔实验室]]在逻辑综合自动化工具发展的早期扮演了关键的角色。从分立的逻辑门到[[可编程逻辑阵列]]({{lang|en|Programmable logic arrays, PLA}})促进了高效率的两级逻辑最小化的发展,这是由于两级描述中的最小化过程可以减少可编程逻辑阵列的面积。


然而,两级的逻辑电路在[[超大规模集成电路]]中的重要程度受到限制。大多数的设计者使用多级逻辑。实际情况是,几乎所有电路的[[寄存器传输级]]({{lang|en|Register-transfer level, RTL}})描述或其他行为描述都是多级的。早期IBM的LSS曾被用来设计多级电路。它使用了局部的变形来简化逻辑。LSS以及Yorktown Silicon编译系统在1980年代促进了逻辑综合的研究进程。一些大学将这些研究领域公开,其中[[加州大学伯克利分校]]的SIS、<ref>{{cite web|url=http://www.eecs.berkeley.edu/Pubs/TechRpts/1992/2010.html|title=SIS: A System for Sequential Circuit Synthesis|publisher=EECS, College of Engineering, UC Berkeley}}</ref>[[加州大学洛杉矶分校]]的RASP<ref>{{cite web|url=http://cadlab.cs.ucla.edu/software_release/rasp/htdocs/|title=RASP: FPGA/CPLD Technology Mapping and Synthesis Package|publisher=UCLA}}</ref>以及[[科罗拉多大学博尔德分校]]的BOLD<ref>{{cite web|url=http://www.computerhistory.org/semiconductor/timeline/1966-CAD.html|title=1966 - Computer Aided Design Tools Developed for ICs|publisher=Computer History Museum}}</ref>最为知名。在十几年的时间内,逻辑综合技术迅速转变成市场上销售的电子设计自动化产品。
然而,两级的逻辑电路在[[超大规模集成电路]]中的重要程度受到限制。大多数的设计者使用多级逻辑。实际情况是,几乎所有电路的[[寄存器传输级]]({{lang|en|Register-transfer level, RTL}})描述或其他行为描述都是多级的。早期IBM的LSS曾被用来设计多级电路。它使用了局部的变形来简化逻辑。LSS以及Yorktown Silicon编译系统在1980年代促进了逻辑综合的研究进程。一些大学将这些研究领域公开,其中[[加州大学伯克利分校]]的SIS、<ref>{{cite web|url=http://www.eecs.berkeley.edu/Pubs/TechRpts/1992/2010.html|title=SIS: A System for Sequential Circuit Synthesis|publisher=EECS, College of Engineering, UC Berkeley|access-date=2012-07-09|archive-date=2021-02-25|archive-url=https://web.archive.org/web/20210225165211/https://www2.eecs.berkeley.edu/Pubs/TechRpts/1992/2010.html|dead-url=no}}</ref>[[加州大学洛杉矶分校]]的RASP<ref>{{cite web|url=http://cadlab.cs.ucla.edu/software_release/rasp/htdocs/|title=RASP: FPGA/CPLD Technology Mapping and Synthesis Package|publisher=UCLA|access-date=2012-07-09|archive-date=2021-02-25|archive-url=https://web.archive.org/web/20210225204451/http://cadlab.cs.ucla.edu/software_release/rasp/htdocs/|dead-url=no}}</ref>以及[[科罗拉多大学博尔德分校]]的BOLD<ref>{{cite web|url=http://www.computerhistory.org/semiconductor/timeline/1966-CAD.html|title=1966 - Computer Aided Design Tools Developed for ICs|publisher=Computer History Museum|access-date=2012-07-09|archive-date=2015-12-22|archive-url=https://web.archive.org/web/20151222223738/http://www.computerhistory.org/semiconductor/timeline/1966-CAD.html|dead-url=no}}</ref>最为知名。在十几年的时间内,逻辑综合技术迅速转变成市场上销售的电子设计自动化产品。

随着集成电路的规模的不断增大,逻辑综合工具的重要性日益凸显。首先,由于电路十分复杂,过去适合小规模、中规模集成电路的技术方法不再具有效率的优势,此外,在深亚微米级的超大规模集成电路中,元件的互连延迟变得十分复杂,但是这一情况对于电路的正常工作十分重要,现代的硬件描述语言和逻辑综合、[[物理设计]]工具可以很好地处理这些问题。{{R|Samir|page=211}}将先进的硬件描述语言、[[逻辑仿真]]、逻辑综合等工具配合使用,可以提高设计工作的效率和准确程度。


== 逻辑元件 ==
== 逻辑元件 ==
[[Image:Baops.gif|right|thumb|450px|第一排:真值表;第二排:逻辑门;第三排:德·摩根({{lang|en|De Morgan}})等效;第四排:维恩图(注意图中的电路元件符号为美国国家标准协会(ANSI)和电气电子工程师学会(IEEE)的标准用法)]]
[[Image:Baops.gif|right|thumb|450px|第一排:真值表;第二排:逻辑门;第三排:德·摩根({{lang|en|De Morgan}})等效;第四排:维恩图(注意图中的电路元件符号为美国国家标准协会(ANSI)和电气电子工程师学会(IEEE)的标准用法)]]
在标准的设计流程中,逻辑设计是[[电子电路]]的[[功能设计]]({{lang|en|Functional design}})转换到以逻辑、算数以及控制流程的表示形式。这一步骤的成果通常是一个[[寄存器传输级]]描述。逻辑设计之后的下一步是[[电路设计]]。在现代的[[电子设计自动化]]中,逻辑设计可以通过使用基于行为级描述的[[高阶合成]]工具自动完成。<ref name="Sherwani1999">{{cite book|author=Naveed A. Sherwani|title=Algorithms for VLSI physical design automation|year=1999|edition=3rd|page=4|publisher=Kluwer Academic Publishers|isbn=978-0-7923-8393-2}}</ref>
在标准的设计流程中,逻辑设计是[[电子电路]]的[[功能设计]]({{lang|en|Functional design}})转换到以逻辑、算数以及控制流程的表示形式。这一步骤的成果通常是一个[[寄存器传输级]]描述。逻辑设计之后的下一步是[[电路设计]]。在现代的[[电子设计自动化]]中,逻辑设计可以通过使用基于行为级描述的[[高阶合成]]工具自动完成。<ref name="Sherwani1999">{{cite book|author=Naveed A. Sherwani|title=Algorithms for VLSI physical design automation|url=https://archive.org/details/algorithmsforvls00sher_975|year=1999|edition=3rd|page=[https://archive.org/details/algorithmsforvls00sher_975/page/n8 4]|publisher=Kluwer Academic Publishers|isbn=978-0-7923-8393-2}}</ref>


逻辑功能元件通常由与、或、异或、与非等[[逻辑门]]组成,它们在数字电路中是最基本的电路元件。使用这些逻辑元件可以实现运算等功能。诸如[[加法器]]、[[乘法器]]({{lang|en|Binary multiplier}})都是由基本的逻辑元件构成的。
逻辑功能元件通常由与、或、异或、与非等[[逻辑门]]组成,它们在数字电路中是最基本的电路元件。使用这些逻辑元件可以实现运算等功能。诸如[[加法器]]、[[乘法器]]({{lang|en|Binary multiplier}})都是由基本的逻辑元件构成的。

在逻辑综合之前,设计人员通常使用高级抽象的硬件描述语言,这通常不涉及所使用的具体器件工艺。逻辑综合过程将高级抽象的描述与具体的器件工艺结合起来。逻辑综合公司和硬件厂商通常进行合作,后者把基础元件(如各种逻辑门)的硬件描述语言进行预定义,附加在逻辑综合工具里,这些预定义包含了基础元件的功能、时序等方面的信息。这些信息的集合叫做“工艺库”。有的时候,系统提供的工艺库并不是最优化的,设计人员需要自己完成某个特定工艺库的定义。


== 高级综合或行为级的描述 ==
== 高级综合或行为级的描述 ==
{{main|高级综合}}
{{main|高级综合}}
为了提高设计人员的工作效率,人们致力于电路的行为级描述的研究,并在2004年推出了首款商用解决方案,<ref name='EETimes'>EETimes: [http://archives.eetimes.com/high-level-synthesis-rollouts-enable-esl/110436.html High-level synthesis rollouts enable ESL]</ref>这些工具可以用来设计复杂的[[专用集成电路]]和[[现场可编程逻辑门阵列]]应用。这些工具可以在C层次到寄存器传输级之间自动工作,用来实现门级别的设计。<ref name="EETimes"/>如今,高级综合,也被称为行为级综合,主要指从高级语言,例如[[C语言]]等,来实现逻辑电路的合成,而逻辑综合则特指从电路的结构、逻辑功能向寄存器传输级的转换。
为了提高设计人员的工作效率,人们致力于电路的行为级描述的研究,并在2004年推出了首款商用解决方案,<ref name='EETimes'>EETimes: [http://archives.eetimes.com/high-level-synthesis-rollouts-enable-esl/110436.html High-level synthesis rollouts enable ESL]{{dead link|date=十月 2017 |bot=InternetArchiveBot }}</ref>这些工具可以用来设计复杂的[[专用集成电路]]和[[现场可编程逻辑门阵列]]应用。这些工具可以在C层次到寄存器传输级之间自动工作,用来实现门级别的设计。<ref name="EETimes"/>如今,高级综合,也被称为行为级综合,主要指从高级语言,例如[[C语言]]等,来实现逻辑电路的合成,而逻辑综合则特指从电路的结构、逻辑功能向寄存器传输级的转换。

尽管自动化逻辑综合工具已经有一定的发展,但是该技术仍然有不完善之处。硬件描述语言只有一部分子集能够被正确转化,它们被称为“可综合的”。<ref>{{cite book|author=Donald E. Thomas, Philip R. Moorby|title=硬件描述语言Verilog(第四版)(英文名:The Verilog Hardware Description Language (Fouth Edition))|year=2001|url=https://archive.org/details/yingjianmiaoshuy0004unse|publisher=清华大学出版社|isbn=7-900635-36-X|page=[https://archive.org/details/yingjianmiaoshuy0004unse/page/168 168]}}</ref>


== 多层次逻辑的优化 ==
== 多层次逻辑的优化 ==
具有实用逻辑功能的电路通常使用了多层次的逻辑网络。现代的电路综合工具,可以读取、识别寄存器传输级的硬件描述语言代码,构建对应的多层次逻辑电路网络。不过有的时候,两个电路虽然能够实现基本相同的逻辑功能,但是由于二者代码不尽相同,其中一个综合生成的门级网表可能远比另一个复杂。例如,在[[Verilog]]里,设计人员如果不指名向量寄存器的位宽,那么逻辑综合产生的网表会比指明位宽的情况庞大得多;{{R|Samir|page=204}}另外,如果if-else语句结构没有指明所有可能出现的情况,虽然在[[功能验证]]时不会出现问题,但是逻辑综合工具有可能认为设计人员在定义一个电平敏感的锁存器。{{R|Samir|page=219}}这就需要设计人员掌握一定的硬件描述语言编程技巧,并使用良好的代码风格。
具有实用逻辑功能的电路通常使用了多层次的逻辑网络。从设计的寄存器传输级描述开始,电路综合工具可以构建对应的多层次逻辑电路网络。


接下来,使用不的技术来实现这个网络优化,主要采取与器件工艺相关的技术之前)采取一些与器件工艺无关的技术。使工艺无关优化技术的成函数与电路的逻辑功能有关
接下来,综合工具会使用对设计者来说可见的技术方法,将这个逻辑电路网络进行优化。优化的内容,是在此阶段采取一些与具体半导体器件工艺无关的计算机技术,来简化逻辑函数,从而让所用的逻辑门数减少,并满足一定时序、面积、功耗要求。这一步所完的任务和人工利用[[卡诺图]]化简逻辑函数的目的一致,不过自动化的逻辑综合工具大大降低了人工操作的难度和错误率


最后,优化过后的逻辑门网表将进一步接受各种验证,保证其功能符合设计人员的预期。然后,网表将被送往集成电路硬件厂商,在那里技术人员将采用器件与具体器件工艺相关的技术,根据逻辑门网表制造真实的电路,如[[专用集成电路]]。
最后,采用器件工艺相关的技术,将上述工艺无关的电路通过已有的器件工艺转换成以实际的逻辑门组成的电路网络。这时,成本则主要考虑是在的硬件。


== 参考文献 ==
== 参考文献 ==
{{refbegin}}
{{refbegin}}
*''Electronic Design Automation For Integrated Circuits Handbook'', by Lavagno, Martin, and Scheffer, ISBN 0-8493-3096-3 A survey of the field of [[Electronic design automation]]. The above summary was derived, with permission, from Volume 2, Chapter 2, ''Logic Synthesis'' by Sunil Khatri and Narendra Shenoy.
*''Electronic Design Automation For Integrated Circuits Handbook'', by Lavagno, Martin, and Scheffer, ISBN 978-0-8493-3096-4 A survey of the field of [[Electronic design automation]]. The above summary was derived, with permission, from Volume 2, Chapter 2, ''Logic Synthesis'' by Sunil Khatri and Narendra Shenoy.
*''A Consistent Approach in Logic Synthesis for FPGA Architectures'', by Burgun Luc, Greiner Alain, and Prado Lopes Eudes, Proceedings of the international Conference on Asic (ASICON), Pekin, October 1994, pp.&nbsp;104–107.
*''A Consistent Approach in Logic Synthesis for FPGA Architectures'', by Burgun Luc, Greiner Alain, and Prado Lopes Eudes, Proceedings of the international Conference on Asic (ASICON), Pekin, October 1994, pp.&nbsp;104–107.
{{refend}}
{{refend}}
{{reflist}}
{{reflist|refs=
<ref name = "Samir">{{cite book|author=Samir Palnitkar|title=Verilog HDL: A Guilde to Digital Design and Synthesis|publisher=电子工业出版社|isbn=7-121-00468-2}}</ref>

<ref name = "Stephen">{{Cite book|author=Stephen Brown, Zvonko Vranesic|title=Fundamentals of Digital Logic with Verilog Design|year=2002|url=https://archive.org/details/fundamentalsofdi0000brow_t0c5|publisher=McGraw-Hill Education|isbn=0-07-283878-7}}</ref>
}}


== 延伸阅读 ==
== 延伸阅读 ==
* {{cite book|editor=Laung-Terng Wang, Yao-Wen Chang, Kwang-Ting Cheng|title=Electronic design automation: synthesis, verification, and test|year=2009|author=Jie-Hong (Roland) Jiang, Srinivas Devadas|chapter=Logic synthesis in a nutshell|publisher=Morgan Kaufmann|isbn=978-0-12-374364-0|id=chapter 6}}
* {{cite book|editor=Laung-Terng Wang, Yao-Wen Chang, Kwang-Ting Cheng|title=Electronic design automation: synthesis, verification, and test|year=2009|author=Jie-Hong (Roland) Jiang, Srinivas Devadas|chapter=Logic synthesis in a nutshell|publisher=Morgan Kaufmann|isbn=978-0-12-374364-0|id=chapter 6}}
*{{cite book|author1=Gary D. Hachtel|author2=Fabio Somenzi|title=Logic synthesis and verification algorithms|year=1996|publisher=Springer|isbn=0-7923-9746-0}} also as published as [[softcover]] ISBN 0-387-31004-5 in 2006
*{{cite book|author1=Gary D. Hachtel|author2=Fabio Somenzi|title=Logic synthesis and verification algorithms|url=https://archive.org/details/logicsynthesisve0000hach|year=1996|publisher=Springer|isbn=0-7923-9746-0}} also as published as [[softcover]] ISBN 978-0-387-31004-6 in 2006
* {{cite book|editor=Soha Hassoun, Tsutomu Sasao|title=Logic synthesis and verification|year=2002|publisher=Kluwer|isbn=978-0-7923-7606-4}}
* {{cite book|editor=Soha Hassoun, Tsutomu Sasao|title=Logic synthesis and verification|url=https://archive.org/details/logicsynthesisve0000unse|year=2002|publisher=Kluwer|isbn=978-0-7923-7606-4}}


== 相关条目 ==
== 相关条目 ==
第45行: 第62行:
* [[功能验证]]
* [[功能验证]]


{{数字电路}}
[[Category:工程|L]]


[[Category:設計自動化|I]]
[[de:Logiksynthese]]
[[el:Λογική Σχεδίαση]]
[[en:Logic synthesis]]
[[fi:Logiikkasynteesi]]
[[fr:Synthèse logique]]
[[ja:論理合成]]
[[pt:Síntese lógica]]

2023年12月9日 (六) 00:56的最新版本

集成电路设计中,邏輯合成(英語:logic synthesis)是所设计数字电路的高抽象级描述,经过布尔函数化简、优化后,转换到的逻辑门级别的电路连线网表的过程。

概述

[编辑]

通常,逻辑综合的信息来源是硬件描述语言——主要是VHDLVerilog等,设计人员通常使用硬件描述语言来进行电路的高级抽象(通常是数字电路寄存器传输级的数据、行为)描述数字电路的逻辑功能,这样他们可以把更多精力投入功能方面的设计,而避免在一开始就研究可能极其复杂的电路连线。

然而,从电路的高级抽象描述到实际连线网表,并不是一项简单的工作。在以前,这需要设计人员完成逻辑函数的建立、简化、绘制逻辑门网表等诸多步骤。随着电路的集成规模越来越大,人工进行逻辑综合变成了一项十分繁琐的任务。

随着电子设计自动化的发展,逻辑综合这一步骤可以由计算机工具辅助完成。但是,由于自动化逻辑综合工具并不总能够产生最优化的逻辑门网表,因此人工的介入仍然不可缺少。某些工具能够在可编程逻辑器件,如可编程阵列逻辑Programmable Array Logic, PAL)和现场可编程逻辑门阵列Field Programmable Gate Array, FPGA)上生成数据流过程,而另一些工具则可以生产专用集成电路。逻辑综合是电子设计自动化的一个重要方面。

历史

[编辑]

逻辑综合的发展可以追溯到乔治·布尔(1815-1864)对逻辑代数的研究(逻辑代数现在也被称为“布尔代数”)。1938年,克劳德·香农展示了如何使用逻辑代数来描述电路开关切换的过程。[1]在早期,逻辑设计牵涉了对真值表的处理(如利用卡诺图)。通过将一系列规则将卡诺图上的某些项进行合并,可以得到最小化的逻辑,即逻辑式可以得到简化。人工进行上述的操作可以处于四到六个变量的卡诺图。但是以图形表示的卡诺图不适合算法的导出,因此人们需要研究代数形式的逻辑化简算法。[2]:189

对逻辑最小化进行自动化的第一步是引入奎因-麦克拉斯基算法,它可以在计算机上执行。进行逻辑简化的目的是得到使用最少数量的逻辑器件,并精确地对表达原始逻辑式的意义。人们可以使用卡诺图来完成变量较少的逻辑函数的化简。现在,Espresso启发式逻辑简化器(Espresso heuristic logic minimizer)成为了完成这一过程更有效的工具。早期数字逻辑的另一个研究领域是对有限状态机的简化和编码,这一工作对于当时的设计者来说并不是件容易的工作。逻辑综合的应用大多于数字计算机设计相关。IBM贝尔实验室在逻辑综合自动化工具发展的早期扮演了关键的角色。从分立的逻辑门到可编程逻辑阵列Programmable logic arrays, PLA)促进了高效率的两级逻辑最小化的发展,这是由于两级描述中的最小化过程可以减少可编程逻辑阵列的面积。

然而,两级的逻辑电路在超大规模集成电路中的重要程度受到限制。大多数的设计者使用多级逻辑。实际情况是,几乎所有电路的寄存器传输级Register-transfer level, RTL)描述或其他行为级描述都是多级的。早期IBM的LSS曾被用来设计多级电路。它使用了局部的变形来简化逻辑。LSS以及Yorktown Silicon编译系统在1980年代促进了逻辑综合的研究进程。一些大学将这些研究领域公开,其中加州大学伯克利分校的SIS、[3]加州大学洛杉矶分校的RASP[4]以及科罗拉多大学博尔德分校的BOLD[5]最为知名。在十几年的时间内,逻辑综合技术迅速转变成市场上销售的电子设计自动化产品。

随着集成电路的规模的不断增大,逻辑综合工具的重要性日益凸显。首先,由于电路十分复杂,过去适合小规模、中规模集成电路的技术方法不再具有效率的优势,此外,在深亚微米级的超大规模集成电路中,元件的互连延迟变得十分复杂,但是这一情况对于电路的正常工作十分重要,现代的硬件描述语言和逻辑综合、物理设计工具可以很好地处理这些问题。[6]:211将先进的硬件描述语言、逻辑仿真、逻辑综合等工具配合使用,可以提高设计工作的效率和准确程度。

逻辑元件

[编辑]
第一排:真值表;第二排:逻辑门;第三排:德·摩根(De Morgan)等效;第四排:维恩图(注意图中的电路元件符号为美国国家标准协会(ANSI)和电气电子工程师学会(IEEE)的标准用法)

在标准的设计流程中,逻辑设计是电子电路功能设计Functional design)转换到以逻辑、算数以及控制流程的表示形式。这一步骤的成果通常是一个寄存器传输级描述。逻辑设计之后的下一步是电路设计。在现代的电子设计自动化中,逻辑设计可以通过使用基于行为级描述的高阶合成工具自动完成。[7]

逻辑功能元件通常由与、或、异或、与非等逻辑门组成,它们在数字电路中是最基本的电路元件。使用这些逻辑元件可以实现运算等功能。诸如加法器乘法器Binary multiplier)都是由基本的逻辑元件构成的。

在逻辑综合之前,设计人员通常使用高级抽象的硬件描述语言,这通常不涉及所使用的具体器件工艺。逻辑综合过程将高级抽象的描述与具体的器件工艺结合起来。逻辑综合公司和硬件厂商通常进行合作,后者把基础元件(如各种逻辑门)的硬件描述语言进行预定义,附加在逻辑综合工具里,这些预定义包含了基础元件的功能、时序等方面的信息。这些信息的集合叫做“工艺库”。有的时候,系统提供的工艺库并不是最优化的,设计人员需要自己完成某个特定工艺库的定义。

高级综合或行为级的描述

[编辑]

为了提高设计人员的工作效率,人们致力于电路的行为级描述的研究,并在2004年推出了首款商用解决方案,[8]这些工具可以用来设计复杂的专用集成电路现场可编程逻辑门阵列应用。这些工具可以在C层次到寄存器传输级之间自动工作,用来实现门级别的设计。[8]如今,高级综合,也被称为行为级综合,主要指从高级语言,例如C语言等,来实现逻辑电路的合成,而逻辑综合则特指从电路的结构、逻辑功能向寄存器传输级的转换。

尽管自动化逻辑综合工具已经有一定的发展,但是该技术仍然有不完善之处。硬件描述语言只有一部分子集能够被正确转化,它们被称为“可综合的”。[9]

多层次逻辑的优化

[编辑]

具有实用逻辑功能的电路通常使用了多层次的逻辑网络。现代的电路综合工具,可以读取、识别寄存器传输级的硬件描述语言代码,构建对应的多层次逻辑电路网络。不过有的时候,两个电路虽然能够实现基本相同的逻辑功能,但是由于二者代码不尽相同,其中一个综合生成的门级网表可能远比另一个复杂。例如,在Verilog里,设计人员如果不指名向量寄存器的位宽,那么逻辑综合产生的网表会比指明位宽的情况庞大得多;[6]:204另外,如果if-else语句结构没有指明所有可能出现的情况,虽然在功能验证时不会出现问题,但是逻辑综合工具有可能认为设计人员在定义一个电平敏感的锁存器。[6]:219这就需要设计人员掌握一定的硬件描述语言编程技巧,并使用良好的代码风格。

接下来,综合工具会使用对设计者来说不可见的技术方法,将这个逻辑电路网络进行优化。优化的内容,是在此阶段采取一些与具体半导体器件工艺无关的计算机技术,来简化逻辑函数,从而让所用的逻辑门数减少,并满足一定的时序、面积、功耗要求。这一步所完成的任务和人工利用卡诺图化简逻辑函数的目的一致,不过自动化的逻辑综合工具大大降低了人工操作的难度和错误率。

最后,优化过后的逻辑门网表将进一步接受各种验证,保证其功能符合设计人员的预期。然后,网表将被送往集成电路硬件厂商,在那里技术人员将采用器件与具体器件工艺相关的技术,根据逻辑门网表制造真实的电路,如专用集成电路

参考文献

[编辑]
  • Electronic Design Automation For Integrated Circuits Handbook, by Lavagno, Martin, and Scheffer, ISBN 978-0-8493-3096-4 A survey of the field of Electronic design automation. The above summary was derived, with permission, from Volume 2, Chapter 2, Logic Synthesis by Sunil Khatri and Narendra Shenoy.
  • A Consistent Approach in Logic Synthesis for FPGA Architectures, by Burgun Luc, Greiner Alain, and Prado Lopes Eudes, Proceedings of the international Conference on Asic (ASICON), Pekin, October 1994, pp. 104–107.
  1. ^ Claude Shannon. New York University. [2012-07-09]. (原始内容存档于2020-04-08). 
  2. ^ Stephen Brown, Zvonko Vranesic. Fundamentals of Digital Logic with Verilog Design. McGraw-Hill Education. 2002. ISBN 0-07-283878-7. 
  3. ^ SIS: A System for Sequential Circuit Synthesis. EECS, College of Engineering, UC Berkeley. [2012-07-09]. (原始内容存档于2021-02-25). 
  4. ^ RASP: FPGA/CPLD Technology Mapping and Synthesis Package. UCLA. [2012-07-09]. (原始内容存档于2021-02-25). 
  5. ^ 1966 - Computer Aided Design Tools Developed for ICs. Computer History Museum. [2012-07-09]. (原始内容存档于2015-12-22). 
  6. ^ 6.0 6.1 6.2 Samir Palnitkar. Verilog HDL: A Guilde to Digital Design and Synthesis. 电子工业出版社. ISBN 7-121-00468-2. 
  7. ^ Naveed A. Sherwani. Algorithms for VLSI physical design automation 3rd. Kluwer Academic Publishers. 1999: 4. ISBN 978-0-7923-8393-2. 
  8. ^ 8.0 8.1 EETimes: High-level synthesis rollouts enable ESL[失效連結]
  9. ^ Donald E. Thomas, Philip R. Moorby. 硬件描述语言Verilog(第四版)(英文名:The Verilog Hardware Description Language (Fouth Edition)). 清华大学出版社. 2001: 168. ISBN 7-900635-36-X. 

延伸阅读

[编辑]

相关条目

[编辑]