CN1541364A - 具有选择运算符的数字电路 - Google Patents

具有选择运算符的数字电路 Download PDF

Info

Publication number
CN1541364A
CN1541364A CNA028158261A CN02815826A CN1541364A CN 1541364 A CN1541364 A CN 1541364A CN A028158261 A CNA028158261 A CN A028158261A CN 02815826 A CN02815826 A CN 02815826A CN 1541364 A CN1541364 A CN 1541364A
Authority
CN
China
Prior art keywords
circuit
numerous
digital
design
net table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA028158261A
Other languages
English (en)
Inventor
˹���֡�R�����ؿ�
斯特林·R·惠特克
H·迈尔斯·洛厄尔
G��÷����
艾里克·G·卡梅伦
�W�����ɺ�
格雷戈里·W·多纳赫
W���Բ�˹
乔迪·W·冈布斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SCI-TECH CORP @ UNM
Original Assignee
SCI-TECH CORP @ UNM
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/172,742 external-priority patent/US6829750B2/en
Priority claimed from US10/172,746 external-priority patent/US6993731B2/en
Application filed by SCI-TECH CORP @ UNM filed Critical SCI-TECH CORP @ UNM
Publication of CN1541364A publication Critical patent/CN1541364A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Abstract

通过识别将要实施的逻辑结构设计一种数字集成电路芯片。该逻辑结构根据一种逻辑运算表述,至少5%的逻辑运算包括选择运算。决定由相应于这些逻辑运算的实现的逻辑单元作出。

Description

具有选择运算符的数字电路
                         与相关申请的交互引用
本申请是由申请人Sterling R.Whitaker等人于2001年6月15日递交的题为“以多路复用器为基础的数字设计”的美国临时专利申请No.60/298,832号的正式申请并要求以该临时申请为优先权,该临时专利申请的全部内容为了各种目的通过引用而结合在本文中。本申请也是下述申请的续展申请并要求以它们为优先权。这些申请包括:由Sterling R.Whitaker,Lowell H.Miles和Eric G.Cameron于2002年6月14日申请的题为“使用选择运算的数字设计”的美国专利申请No.--/---,---号(律师档案No.021145-001600US);由Gary K.Maki和Prakash R.Bhatia于2002年6月14日申请的题为“通过晶体管的甚大规模集成”的美国专利申请No.--/---,---号(律师档案No.021145-001700US);由Sterling R.Whitaker和Lowell H.Miles于2002年6月14日申请的题为“数字设计的优化”的美国专利申请No.--/---,---号(律师档案No.021145-001800US);由Sterling R.Whitaker和Lowell H.Miles于2002年6月14日申请的题为“集成电路单元库”的美国专利申请No.--/---,---号(律师档案No.021145-001900US);由Sterling R.Whitaker,Lowell H.Miles,Eric G.Cameron和Jody W.Gambles于2002年6月14日申请的题为“使用选择运算的数字逻辑优化”的美国专利申请No.--/---,---号(律师档案No.021145-002000US);和由Sterling R.Whitaker,Lowell H.Miles,Eric G.Cameron,Gregory W.Donohoe和Jody W.Gambles于2002年6月14日申请的题为“使用通用逻辑门的数字电路”的美国专利申请No.--/---,---号(律师档案No.021145-002100US)的。该等专利的全部内容为了各种目的通过引用而结合在本文中。
                               技术领域
本发明总体上涉及数字电路,具体来讲,涉及利用单元来布局的数字电路设计。
                               背景技术
数学是人类了解其周围世界的一种方法。随着技术的进步,数学概念和算法也发展起来实现和/或支持这些进步。在数字设计的环境下,布尔逻辑是用来操作和优化数字电路的数学架构。今天几乎所有的电子装置都依赖某种类型的布尔逻辑来构筑其内嵌的任何数字电路。当然还有其他的数学架构可以进一步优化数字电路。当不用布尔逻辑元件时,必须改变数字电路设计的处理过程。
今天专用集成电路(ASIC)用芯片制造厂或芯片制造设施的具体工艺的库单元的网表来规定设计。这些网表用来制造由库单元组成的集成电路。典型的情况是一个具体的工艺备有包括与门,或门,触发器(F/F),和缓冲器在内的几百个库单元。当一个新的制造工艺开发出来时,工程师们习惯于布置每一个库单元来获取每一个单元的最佳性能。
                               发明内容
在某些实施例中,提供了一个设计数字集成电路芯片的方法。先要识别一个要由数字集成电路来实现的逻辑结构。这个逻辑结构通过为数众多的其中至少5%是包括选择运算的逻辑运算来表示。在各种不同的具体实施例中,包括选择运算的逻辑运算的份额可能更高。还要确定对应于实现逻辑运算的各个逻辑单元。在这些实施例的某些实例中,选择运算可以是根据基本布尔值,或者根据基本布尔值的高阶函数来运算的。在一个实施例中,没有一个对应于实现逻辑运算的逻辑单元包括具有多于一个单个输入的布尔逻辑元件。
在其他的实施例中,也提供了一个设计其中有一个逻辑结构的数字集成电路芯片的方法。在这些实施例中,逻辑结构通过其中少于50%的运算是包括具有多于一个的单个输出布尔逻辑运算的逻辑运算来表示。于是就确定对应于实现逻辑运算的各个逻辑单元。
在某些实施例中,提供一个优化专用集成电路的方法。该电路的数字设计的第一表述被转化为数字设计的第二表述。第二表述包括容许基本布尔值的高阶函数表述的为数众多的句法表达式。该为数众多的句法表达式的执行形成数字设计的第三表述。在某些实施例中,第三表述被转化为数字设计的第四表述,其中第一和第四表述用相同的句法来表达。举例来说,公共句法可以对应于网表表述。在某些场合,使用句法表达式还得力于对第一和/或第二表述中的数据和控制的识别。使用的例子包括除去逻辑反相,减少结点数目,和数据和控制的再赋值。
在一个实施例中,本发明提供了一个ASIC单元库用来创建定制的集成电路。ASIC单元库包括一些第一单元和一些第二单元。每一个第二单元包括两个或两个以上的核心单元。ASIC单元库至少5%由第二单元组成。在各种不同的实施例中,ASIC单元库可以是10%或以上,20%或以上,30%或以上,40%或以上,50%或以上,60%或以上,70%或以上,80%或以上,90%或以上以及95%或以上由第二单元组成。在各种不同的实施例中,核心单元的总数可以是少于10,20,30,40,50,75,或者100。
在其他的实施例中,本发明提供一个用于具有数字逻辑的电路的集成电路单元库。集成电路单元库的第一百分比是第一单元而集成电路单元库的第二百分比是第二单元。每一个第二单元包括一个选择电路。第二百分比是5%以上的集成电路单元库。
在另一个其他的实施例中,本发明提供一个用于具有数字逻辑的电路的集成电路单元库。这个集成电路单元库包括第一单元和第二单元。第一单元是集成电路单元库的第一百分比而第二单元是集成电路单元库的第二百分比。核心单元是用来形成第二单元的。至少某些第二单元包括至少两个通过邻接互相耦合在一起的核心单元。
在一个实施例中,本发明提供了一个用来操作数字电路网表的数字设计方法。在一个步骤中,一个第一网表被装入。该第一网表包括由第一核心单元组成的第一基本单元。操作第一网表来建立第二网表。第二网表包括由第二核心单元组成的第二基本单元。第一和第二核心单元的百分比是选择电路。第二基本单元比第一基本单元更少占用芯片面积。第二网表被存储起来。在各种不同的实施例中,百分比可以是2%或以上,5%或以上,10%或以上,20%或以上,30%或以上以及40%或以上。
在另一个实施例中,本发明提供操作数字电路网表的另一个数字设计方法。在一个步骤中,一个第一网表被装入。这个第一网表包括由第一核心单元组成的基本单元。操作第一网表来建立第二网表。第二网表包括由第二核心单元组成的基本单元。第一和第二核心单元的百分比是选择电路。第二基本单元比第一基本单元更少占用芯片面积。第二网表被存储起来。在各种不同的实施例中,执行操作可以优化功耗,漏电流,扇出,芯片面积,掩模数,工艺步骤数,产量,电容,电感,电阻,和/或故障。
在又一个实施例中,本发明提供了另一个操作数字电路网表的数字设计方法。在一个步骤中,一个数字电路网表被装入。通过至少用第一基本单元替换几个布尔单元把具有一种语言格式的数字电路网表转换到第一网表。第一网表包括由第一核心单元组成的第一基本单元。使用第一网表来建立第二网表,其中第二网表包括由第二核心单元组成的第二基本单元。第一和第二核心单元的百分比是选择电路。第二基本单元比第一基本单元更少占用芯片面积。通过至少用布尔单元替换几个第二基本单元把第二网表转换到第三网表。第三网表也使用该语言格式。第三网表被存储起来。
在一个实施例中,本发明提供了一个在一个结构网表,一个行为网表,一个硬件描述语言网表,一全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个芯片混合电路,一个或多个掩模,一个FPGA,和一个电路插件板组件的诸因素中的至少一个因素中体现的数字设计。数字电路设计包括第一和第二子电路。第一子电路包括数字电路设计的第一百分比而第二子电路包括数字电路设计的第二百分比。每一个第二子电路实际上包括一个或多个核心电路。核心电路由选择电路组成。第二百分比至少是5%。在各种不同的实施例中,第二百分比可以是至少10%,20%,30%,40%,50%,60%,70%,80%,90%,或95%。
在另一个实施例中,本发明提供了一个体现在实体和/或图表形式中的数字电路设计。该数字电路设计包括第一和第二子电路。第一子电路包括数字电路设计的第一百分比而第二子电路包括数字电路设计的第二百分比。每一个第二子电路实际上由一个或多个核心电路组成。每一个核心电路是选择电路类型,存储器电路类型,和缓冲器电路类型中的一个类型。第二百分比至少是5%。在各种不同的实施例中,第二百分比可以是至少10%,20%,30%,40%,50%,60%,70%,80%,90%,或95%。
在又一个实施例中,本发明提供了一个描述为数众多的单元的数字电路设计,其中数字电路设计体现在一个计算机信号中。这个数字电路设计包括第一和第二代码节段。第一代码节段包括一个第一基本单元的第一描述和一个第一基本单元的第一互连。第二代码节段包括一个第二基本单元的第二描述和一个第二基本单元的第二互连。第一描述指出选择电路类型,存储器电路类型和缓冲器电路类型中的哪一种类型包括第一基本单元。相似地,第二描述指出选择电路类型,存储器电路类型和缓冲器电路类型中的哪一种类型包括第二基本单元。
本发明的方法可以体现在一个计算机可读的存储媒体中,该媒体具有具体体现在其中的计算机可读程序来指挥计算机系统的操作。这样一个计算机系统可以包括一个通讯系统,一个处理器,和一个存储装置。计算机可读程序包括作为根据上述实施例设计一个数字电路的一部分的操作计算机系统的指令。
                             附图说明
本发明要结合附图来说明:
图1A是一个由核心单元组成的基本单元的一个实施例的方框图;
图1B是一个由一个存储器和一个缓冲器核心单元组成的基本单元的另一个实施例的方框图;
图1C是一个由一个选择和存储器核心单元组成的基本单元的又一个实施例的方框图;
图1D是一个由一个选择和缓冲器核心单元组成的基本单元的又一个实施例的方框图;
图2A是一个具有同步复位的存储器单元的一个实施例的方框图;
图2B是一个具有异步复位的存储器单元的又一个实施例的方框图;
图3是一个通用逻辑门布局的一个实施例的方框图;
图4是一个存储器核心单元布局的一个实施例的方框图;
图5是一个缓冲器核心单元布局的一个实施例的方框图;
图6是一个从图3-5的核心单元邻接到一起的基本单元的一个实施例的方框图;
图7是一个两个基本单元布置在一起的一个实施例的方框图;
图8A是一个增强型晶体管的原理图;
图8B是一个耗尽型晶体管的原理图;
图8C是一个根据使用耗尽型晶体管的本发明实施例的通用逻辑门的电路布局;
图9A是一个显示在本发明的实施例中实现的逻辑表达式的反相是如何除去的流程图;
图9B是一个显示在本发明的实施例中实现的逻辑表达式的结点是如何减少的流程图;
图9C是一个显示在本发明的实施例中实现的逻辑表达式的结点是如何组合的流程图;
图9D是一个显示根据本发明的实施例置位和复位输入是如何用在优化过程中的流程图;
图10是一个显示ULG网表优化的实施例的流程图;
图11是一个可以体现本发明的方法的计算机系统的原理图;
图12是一个制备ULG ASIC单元库的过程的实施例的流程图;
图13是一个使用综合后的句法操作的设计流程的一个实施例的方框图;
图14是一个使用句法操作和ULG ASIC单元库的设计流程的又一个实施例的方框图;
图15是一个使用最终网表的ULG ASIC单元库的设计流程的又一个实施例的方框图;
图16是一个将综合和句法操作组合到一个单个工具的设计流程的又一个实施例的方框图;
图17是一个贯穿设计流程使用验证工具的设计流程的又一个实施例的方框图;
图18是一个贯穿设计流程和后期制作使用验证工具的设计流程的又一个实施例的方框图;
图19是一个设计过程的一个实施例的流程图。
在这些附图中,相似的部件和/或特征可以有相同的参考标记。而且,相同类型的不同部件用在参考标记后面的长划和区别相似部件的第二标记来区别。如果规格表中只有第一参考标记,这个说明就适用于具有相同第一参考标记不考虑第二参考标记的任何一个相似部件。
                              具体实施方式
随后的说明只提供作为示范的优选实施例,而不是限制本发明的范围,适用性或构型。更确切地说,随后的对作为示范的优选实施例的说明为业内专业人士提供了实现本发明的优选示范实施例的有益的说明。可以理解的是,功能和元件的布置可以作各种不同的改变而不违背在附后的权利要求中阐述的本发明的精神和范围。
I  单元
在一个实施例中,一个基本单元是一个包括通用逻辑门(ULG),存储器元件或触发器(F/F),和/或缓冲器中的一个或多个的构造。在这个实施例中,ULG是一个多路复用器或选择电路。ULG,存储器元件和缓冲器由较小数目的核心单元来实现,它们典型地具有往往用手工个别优化的布局。核心单元布置到具有ULG,存储器元件,和缓冲器中的至少一个的高阶基本单元中,但是本实施例中基本单元没有一个以上的任何类型的核心单元。对于一个已知的半导体工艺,有一个由基本单元和专用单元组成的ULG ASIC单元库。这些专用单元不同于基本单元构造,它可以包括比如说时钟分频器,存储器阵列,模拟电路,锁相环,振荡器,模拟电路等等。
首先参考图1A,方框图形式所示为基本单元100的实施例。这个实施例包括全部3个ULG或选择电路104,存储器单元108和缓冲器112。基本单元100的一些核心组件用归纳的方式显示。ULG104显示出具有任何数目的数据和选择控制输入,然而,对于一定数目的选择控制输入的最大数据输入之间的关系遵从下列关系式2y=I。存储器核心单元108被显示为是一个可复位的D F/F。所示的缓冲器核心单元112有一个反相和非反相输出,但是,其他的缓冲器装置可以具有反相或非反相输出。
本实施例中的ULG104是由一个多路复用器实现的。多路复用器可以用来实现任何布尔函数,但不是布尔运算符。传统设计中的组合逻辑不用选择功能实现,但应用了布尔逻辑门。而且,传统设计中的多路复用器在综合时被转换到布尔等价装置。
下表I显示在一个实施例中使用的14个核心单元:
                           表I
ULG部件   符号 说明
ULG   U 8到1(U8)4到1(U4)或2到1(U2)多路复用器
存储器单元   D D F/F(D1)
  DR 可复位的D F/F-同步(DR1),时钟边缘同步(DR2)或异步(DR3)
  DS 可置位的D F/F--同步(DS1),时钟边缘同步(DS2)或异步(DS3)
缓冲器   B 非反相缓冲器(B1)或混合反相和非反相缓冲器(B2)
  BN 反相缓冲器(BN1)
  CB 高驱动缓冲器(CB1)
  ZB 三态缓冲器(ZB1)
上表I中核心单元的实施例可以在其他实施例中增加到包括其他的单元。ULG可以包括任何规模的多路复用器比如说16到1,32到1,64到1等等。如果核心单元不支持大规模的多路复用器,它可以由一系列较小的多路复用器组成。诸如EEPROM,EPROM,PROM,DRAM,SRAM,NVRAM,磁芯存储器,J-K F/F,可置位的和可复位的F/F,具有扫描ATPG能力的各种F/F之类的各种不同的其他类型存储器单元也是被支持的。J-K,F/F的可置位的或可复位的功能可由能够在D F/F之前或之后被嵌入多路复用器的D F/F和逻辑来实现。在一些实施例中,F/F也可以用下降沿触发。缓冲器也可以是不同能力和规模的。某些缓冲器能够用不同阈值,电压等支持芯片的输入和输出引线脚。
表II列出不同的构型,其中核心单元用来建立如图1A所示应用全部的ULG104,存储器单元108和缓冲器单元112的基本单元100-1。这些基本单元100-2是ULG ASIC单元库的一个实施例中获得的各种变型。
                                    表II
  基本单元类型     构型MAX→MEM→BUF 各种基本单元布局名称
  UDB     U→D→B U2D1B1,U4D1B1,U8D1B1,U2D1B2,U4D1B2,U8D1B2,
  UDBN     U→D→BN U2D1BN1,U4D1BN1,U8D1BN1
  UDZB     U→D→ZB U2D1ZB1,U4D1ZB1,U8D1ZB1
  UDRB     U→DR→B U2DR1B1,U2DR2B1,U2DR3B1,U2DR1B2,U2DR2B2,U2DR3B2,U4DR1B1,U4DR2B1,U4DR3B1,U4DR1B2,U4DR2B2,U4DR3B2,U8DR1B1,U8DR2B1,U8DR3B1,U8DR1B2,U8DR2B2,U8DR3B2
  UDRBN     U→DR→BN U2DR1 BN1,U2DR2BN1,U2DR3BN1,U4DR1 BN1,U4DR2BN1,U4DR3BN1,U8DR1 BN1,U8DR2BN1,U8DR3BN1
  UDRZB     U→DR→ZB U2DR1 ZB 1,U2DR2 ZB 1,U2DR3 ZB 1,U4DR1 ZB 1,U4DR2ZB 1,U4DR3 ZB 1,U8DR1 ZB 1,U8DR2 ZB 1,U8DR3 ZB 1
  UDSB     U→DS→B U2DS1B1,U2DS2B1,U2DS3B1,U2DS1B2,U2DS2B2,U2DS3B2,U4DS1B1,U4DS2B1,U4DS3B1,U4DS1B2,U4DS2B2,U4DS3B2,U8DS1B1,U8DS2B1,U8DS3B1,U8DS1B2,U8DS2B2,U8DS3B2
  UDSBN     U→DS→BN U2DS1 BN1,U2DS2BN1,U2DS3BN1,U4DS1 BN1,U4DS2BN1,U4DS3BN1,U8DS1 BN1,U8DS2BN1,U8DS3BN1
  UDSZB     U→DS→ZB U2DS1 ZB 1,U2DS2 ZB 1,U2DS3 ZB 1,U4DS1 ZB 1,U4DS2ZB 1,U4DS3 ZB 1,U8DS1 ZB 1,U8DS2 ZB 1,U8DS3 ZB 1
参考图1B,方框图所示为由存储器和缓冲器核心单元108,112组成的基本单元100-2的另一个实施例。这不过是这个一般构型的基本单元100-2的一个范例。ULG ASIC单元库中能够找到的这个一般构型的其他基本单元列于表III。
                            表III
 基本单元类型  构型MEM→BUF  各种基本单元布局名称
 DB  D→B  D1B1,D1B2
 DBN  D→BN  D1BN1
 DZB  D→ZB  D1ZB1
 DRB  DR→B  DR1B1,DR2B1,DR3B1,DR1B2,DR2B2,DR3B2
 DRBN  DR→BN  DR1BN1,DR2BN1,DR3BN1
 DRZB  DR→ZB  DR1ZB1,DR2ZB1,DR3ZB1
 DSB  DS→B  DS1B1,DS2B1,DS3B1,DS1B2,DS2B2,DS3B2
 DSBN  DS→BN  DS1BN1,DS2BN1,DS3BN1
 DSZB  DS→ZB  DS1ZB1,DS2ZB1,DS3ZB1
接下来参考图1C,方框图所示为由ULG和存储器核心单元104,108组成的基本单元100-3的又一个实施例。这不过是可以形成ULG ASIC单元库的实施例的各种相似基本单元100-3的一个范例。其他可能的构型罗列于表IV。
                               表IV
基本单元类型  构型MUX→MEM 各种基本单元布局名称
UD  U→D U2D1,U4D1,U8D1
UDR  U→DR U2DR1,U4DR1,U8DR1,U2DR2,U4DR2,U8DR2,U2DR3,U4DR3,U8DR3
UDS  U→DS U2DS1,U4DS1,U8DS1,U2DS2,U4DS2,U8DS2,U2DS3,U4DS3,U8DS3
参考图1D,方框图所示为由ULG和缓冲器核心单元104,112组成的基本单元100-4的又一个实施例。这种类型的基本单元100-4还有其他可能的构型。ASIC单元库的一个实施例的这个基本单元的变型罗列在表V。从表II到V,142个可用基本单元的大约80%包括ULG电路。这142个基本单元是以表I的14个核心单元为基础的。
虽然表II到V的实施例显示了一些可能的基本单元,其他实施例可能包括另外的基本单元。这些另外的基本单元可以对输出功率,功耗,布局面积,响应时间,漏电流等进行优化,使得可以存在虽然具有相同逻辑性能却对具体环境进行了优化的为数众多的单元。举例来说,可以存在具有不同驱动能力来支持更大扇出和/或更高速度的3个非反相缓冲器。在各种不同的实施例中,可以少于例如100,75,50,40,30,20,或10个核心单元。在下限,在一个实施例中有3个核心单元,核心单元中的每种类型只具有一个单元。
                         表V
基本单元类型  构型MAX→BUF  各种基本单元布局名称
UB  U→B  U2B1,U4B1,U8B1,U2B2,U4B2,U8B2
UBN  U→BN  U2BN1,U4BN1,U8BN1
数字电路的结构单元块可以从ULG ASIC单元以外提取出来。在一些实施例中,ULG ASIC单元库的组件可以在诸如加法器,乘法器,寄存器,桶形移位器,ALU,比较器,解码器,状态机器,计数器等之类的高阶宏单元中组合。这可以有几千种可能的宏单元。而且,通过使用实现诸如微处理器,图形处理器,接口总线或端口,数字信号处理器等之类的高级功能的内核,设计可以被提取到一个高于宏单元水平的层次。这些内核可以使用来自ULG ASIC单元库的宏单元和/或组件。内核往往是用硬件描述语言(HDL)写的,它很容易被综合成用于具体工艺的任何ULG ASIC单元库。
参考图2A和2B,方框图形式所示为存储器核心单元108的各种实施例。这些实施例把D F/F208从存储器单元分隔出去并且用一个分立的缓冲器单元204来实现某些功能。在各种不同的实施例中,缓冲器单元204可以用来定做带有图2A的同步复位或带有图2B的异步复位的D F/F208。在其他实施例中,一个分立的电路可以用来使得一个D F/F起到一个可置位的D F/F,一个J-K F/F,或一个具有扫描能力的F/F的作用。在其他实施例中,分立电路可以用一个选择电路来实现。
这个在ASIC单元库中的缓冲器单元204也可以用作其他用途。举例来说,一个8到1的多路复用功能在某些情况下可以用一个缓冲器单元204和一个4到1的多路复用器104来实现以便减少实现该功能所必需的芯片面积。表VI显示用在这个实施例中的13个核心单元。表VII显示允许缓冲器204的真值表,其中允许输入是R,输入是D,输出是Q。
                                     表VI
核心框 符号 说明
ULG U 8到1(U8),4到1(U4),或2到1(U2)多路复用器
存储器单元 D D F/F(D1)
DS 可置位D F/F-同步(DS1),时钟边缘同步(DS2)或异步(DS3)
缓冲器 B 非反相缓冲器(B1)或混合反相和非反相缓冲器(B2)
BN 反相缓冲器(BN1)
EBN 带允许输入(EBN1)的反相缓冲器(EBN1)
CB 高驱动缓冲器(CB1)
ZB 三态缓冲器(ZB1)
    表VII
R  D  Q
0  0  1
0  1  1
1  0  1
1  1  0
II  单元的布局
芯片制造厂或制造设施的每一个制造工艺一般都有一个为那个工艺定制的传统ASIC单元库。通常,传统ASIC单元库中几百个单元中的每一个都用手工布局来优化它的构型。但在这个实施例中,少量的定制的核心单元用来自动或手工编制基本单元100。对于一个目标制造工艺,要注意采取小心的措施来优化核心单元104,108,112的布局,诸如对于功耗,芯片面积,掩模数,工艺步骤数,产量,电容,电感,电阻,故障,I/O位置等之类的因素。在某些情况下,该制造工艺与其他的制造工艺足够相似,只是对核心单元做了一点小小的改动。
参考图3,方框图所示为一个ULG布局300的实施例。一个云状图形用来表示实现2到1的ULG104的电路布局。输入端口316,320和I/O324在电路云中详尽展示,更为具体来讲,这些端口是输入(I0和I1)316和选择(Y0)320的端口,而一条迹线显示Q输出324。对于ULG核心单元,输入和选择信号是ULG布局300之内的端口316,320。ULG电路304被迹线附接到纬向的电源迹线308,312。
邻接是用来通过耦合相邻核心单元来连接某些信号的。单元的相邻位置可以连接相邻的I/O或一个小的导电迹线可以连接相邻的I/O。核心单元有一个均匀的高度和变化的深度,使得每一个核心单元的电源迹线308,312和下一个核心单元排齐。同样,某些I/O信号采用统一纬度。举例来说,ULG布局304的Q输出324要和一个相邻的存储器或缓冲器核心单元的输入在纬向排齐。
接下来参考图4,方框图所示为存储器核心单元400的一个实施例。这个存储器电路404实现一个带D输入412的D F/F,一个时钟输入408和一个Q输出416。耦合到存储器电路404的是VDD和VSS电源总线308,312。存储器核心单元布局400的高度相同于ULG单元布局300,使得两个核心单元的电源总线在纬向排齐。
参考图5,方框图所示为一个缓冲器核心单元布局500的实施例。和其他核心单元电路304,404一样,非反相缓冲器核心单元电路504以和其他核心电路304,404保持一致的高度耦合到电源总线308,312。该缓冲器电路包括一个D输入508和一个Q输出512,其中D输入508在纬向和来自ULG电路304或存储器电路404的输出排齐。在这个实施例中,Q输出512是在纬向偏离D输入508的。
接下来参考图6,方框图所示为3个核心单元300,400,500邻接在一起组成的基本单元600的一个实施例。U2 ULG,D1 F/F和B1非反相缓冲器核心单元300,400,500串联连接形成基本单元600。每个核心单元300,400,500的电源总线308,312排齐形成一个大的整体。U2 ULG电路300的Q输出324和D1存储器电路404的D输入412排齐,而D1存储器电路404的Q输出416和B1缓冲器电路504的D输入508排齐。其他实施例可能有附加的电源总线比如说一个衬底总线连接。
参考图7,方框图所示为两个基本单元600,704布置在一起成为一个排700的实施例。在芯片布局时,所有ULG ASIC单元都被布置好。基本单元600,704排齐成为水平的一排。在某些场合(没有画出),在基本单元600,704之间存在一个或多个信号的路由。在画出的实施例中,来自第一基本单元704的输出由迹线712耦合到第二基本单元600的输入。两个基本单元600,704的时钟输入都在纬向排齐,使得一个时钟总线能够严密地通过基本单元排700。
在某些实施例中,通过在ULG中使其包括一个或多个耗尽型晶体管而实现尺寸进一步缩小。图8A和图8B提供了比较增强型和耗尽型晶体管的原理图。图8A显示一个包括源极804,漏极806和一个栅极810的n-型增强型晶体管802的结构。和源极804和漏极806的连接是分别通过键合区812和814完成的。栅极810通常包括一个形成在诸如SiO2之类的氧化物上面的金属。对于这样一个n型晶体管802,源极804和漏极806由p掺杂衬底中的n掺杂区组成。晶体管的作用是当栅极810上施加了至少一个阈值电压时,电流通过一个中间沟道区域在源极804和漏极806之间流过。在电路中,增强型晶体管802用符号820表示。
图8B所示的耗尽型晶体管842也包括一个源极844,一个漏极846和一个形成在氧化物848上面的栅极850,其中到源极844和漏极846的连接是分别通过键合区852和854完成的。然而,对于耗尽型晶体管,源极844和漏极846之间的沟道区域也是n掺杂的,使得即使没有栅极电压也允许电流通过。这个电流可以通过施加至少一个负的截止电压到栅极850来使其停止。在电路中,耗尽型晶体管842用符号860表示。
图8C中提供的例子是一个利用增强型和耗尽型晶体管的不同性能来使得所占电路面积小于只用增强型晶体管的ULG设计的ULG元件的电路。这个图例是用于作为8∶1多路复用器的U8单元的。U8单元872包括标记为I0…8的8个输入874,标记为Y[0…2]的3个选择控制876,和一个标记为Q的输出878。单元的多路复用功能受制于48个晶体管的作用,其中的一半是耗尽型晶体管。控制信号876的每一个以及它的反相沿着输入874中的一个的路径提供给晶体管,其中反相信号是通过反相器880实现的。要实现多路复用功能,根据控制电平来分配耗尽型晶体管。对于最小有效控制,耗尽型晶体管是交替放置的;对于次小有效控制,它们是成对交替放置的;对于再次小有效控制,它们是四个交替放置的;依次类推。这样,对于U8单元872,Y[0]的耗尽型晶体管提供给输入I0,I2,I4和I6,对于反相控制YN[0],耗尽型晶体管提供给输入I1,I3,I5和I7。对于Y[1],耗尽型晶体管提供给输入I0,I1,I4和I5,对于反相控制YN[1],耗尽型晶体管提供给输入I2,I3,I6和I7。相似地,对于Y[2],耗尽型晶体管提供给输入I0,I1,I2和I3,对于YN[2],耗尽型晶体管提供给输入I4,I5,I6和I7
对于包括耗尽型晶体管的ULG的某些实施例,这个模型可以用于任何规模的单元。对于具有2n+1个输入和n+1个控制的U2n+1ULG,耗尽型晶体管可以提供给如下的每一个控制/输入组合:
(i)i对于控制Y[i=0…n],耗尽型晶体管提供给输入Ik,其中k<2imod 2i+1
(ii)ii对于控制YN[i=0…n],耗尽型晶体管提供给输入Ik,,其中k’≥2imod 2i+1
在其他实施例中,耗尽型晶体管的不同分配方法可以用来实现ULG的多路复用功能。
III  逻辑结构
除了上述的结构特性,还有许多逻辑性能和特征可以用来表征单个单元和表征这种单元的单元库。现在来叙述可以用来阐明实施例中基本单元的功能和至少可从中提取某些这样的逻辑特性的形式的范例。
如上所述,用来形成基本单元的ULG所体现的选择电路可以用2∶1,4∶1,8∶1,或甚至更大的多路复用器来实现。每一个多路复用器的输入和控制加以编程来达到所需的单元逻辑特性。下面的句法已经被开发出来说明在通用方式下这样的输入和选择控制的编程:Q<QN>.XXXX<E>Y[n-1:0]I2-1 n,I2-2 n,…I0<R/S><CLK>  (参数=选项);除了说明ULG核心单元的编程,该句法还可以用来说明包括含有ULG核心单元和不含有ULG核心单元在内的任何基本单元。句法中的选项参数用角括弧表示而句法的成分概括在表VIII中。
            表VIII
成分 意义
Q 非反相输出
<QN> 选项反相输出
.XXXX 单元名称
<E> 选项三态允许
Y[n-1:0] 控制变量状态变量
Ix 真值表状态下一个状态
<R/S> 选项复位或置位输入
<CLK> 选项时钟输入
(参数=选项) 选择一个选项
  ; 结束符
许多句法的特点是值得置评的。句法的第一个成分指出单元的输出,用Q或QN分别表示输出Q或Q-。这个后面跟着单元的名称,它一般是通过连系由单元组成的核心单元的名称而构成的。核心单元的名称已经在表VIII中列出。这样,比如说一个包括一个D F/F和一个非反相缓冲器的基本单元将命名为.DB(D→B);一个包括一个可复位D F/F和一个反相缓冲器的基本单元将命名为.DRBN(DR→BN);一个包括一个ULG多路复用器和一个可置位D F/F的基本单元将命名为.UDS(U→DS);而一个包括一个ULG多路复用器,一个D F/F和一个三态缓冲器的基本单元将命名为.UDZB(U→D→ZB)。要指出的是这些基本单元中的某些例子包括一个ULG多路复用器核心单元,而其他的则不包括,但是它们都可以用句法来描述。
在句法用来描述含有ULG的基本单元的某些场合,提供给ULG的选择控制输入的数目是n。在一个特定的实施例中,控制输入是按照有效数位排序的,最高位控制在左,最低位控制在右。虽然对于任何n值的基本单元的描述句法是同样地鲁棒,为了便于解释的目的,本文举出的例子一般对应于n≤3的情况。n个控制输入的状态规定2n个输入中的哪一个被传送到ULG的输出。虽然在某些场合控制输入可以单个地识别,其他场合是用自变量Y中的冒号来识别一个控制输入的范围。具体来讲,“Y[a:b]”是要指全部表达式“Y[a]Y[a-1]Y[a-2]…Y[b+2]Y[b+1]Y[b]”。参数组In 2-1,In 2-2,…I0代表将要由单元施加的逻辑函数,如下面将要详细讨论的那样,该参数组可以包括一个真值表来实现一个组合逻辑装置或可以包括一个时序电路的下一个状态的识别标志。在某些实施例中,这些逻辑状态In 2-1,1n 2-2,…I0可以赋值到逻辑1或逻辑0(本文中有时被称为“基本布尔值”),但更为一般的是可能也包括映射输入的变量。对于基本单元,这对应于对于逻辑1时连接到VDD,对于逻辑0时连接到VSS,对于映射输入变量连接到一个信号。诸如复位的类型,即异步,同步,或时钟边缘之类的参数被赋值并且写在语句末端的括弧内。
这个形式允许表达可以在本发明的实施例中实行的许多操作并且将要在下面详细讨论这些操作以便业内专业人士能够执行这些操作。这些操作的性质可以用组合逻辑函数C=A+B-的简单例子来阐明。这个逻辑函数可以在一种简洁的硬件描述语言(“CHDL”)形式中表达如下:
   C  .UB  A  B  VDD  VDD  VSS  VDD;
很显然这是一个逻辑函数C等于“A或非B”的正确实现,只要把表达式中的项目和上述的句法比较就可知道。单元名称.UB指出该函数是用包括一个通用逻辑门U和一个非反相缓冲器B的单元来实现的。在名称的两边表示函数中有关的参数,表达式最左侧的成分C指出输出,而名称右侧的变量A和B指出输入。在结束符之前的下面四个项目定义下面组合函数的真值表In 2-1,In 2-2,…I0,其中VDD等效于逻辑1而VSS等效于逻辑0。下面指出的是单个真值表状态I:
    真值表IX
    C     A     B
    I3     1     0     0
    I2     1     0     1
    I1     0     1     0
    I0     1     1     1
当逻辑运算进行在这个形式的表达式上时,它们直接指出结果的表达式如何用根据本发明的实施例的基本框块来实现。举例来说,一个简单的逻辑运算是输出求反,它可以用一个反相缓冲器来实现:
     CN    .UBN  A B  VDD  VDD  VSS  VDD;
可以看出,和表IX中所定义的相同的真值表被用来实现C,但是这个实现是用一个包括一个通用逻辑门U和一个反相缓冲器BN的基本单元来实现的。换一种C实现法采用同样的.UB基本单元,但是通过反相所有的输入状态,代之以使用了一个不同的真值表:
     CN  .UB  A  B  VSS  VSS  VDD  VSS  ;
在其他场合,通过执行控制输入上的运算可以达到相同逻辑函数的另一种实现。举例来说,控制输入A和B可以改变位置。改变函数的控制使得真值表重新布置。在一个包括这个例子的实施例中,真值表状态I3和I0保留在同样的位置,因为它们代表两个控制都是高或两个控制都是低的状态。代表一个控制是高而另一个控制是低的状态I3和I2就要交换位置:
      C    .UB  B  A  VDD  VSS  VDD  VDD  ;
真值表的改变位置也可以来自一个或多个控制输入的反相。在这个例子中,最低位控制B的反相交换了真值表中的相邻的状态:
       C   .UB  A  BN  VDD  VDD  VDD   VSS  ;
这个另一种表达式可以看作为定义一个C的实现,该定义使用X+Y的通用真值表,但是控制输入经过定义而使X=A Y=B-。如果次低数位位控制A是在原始表达式中被替代反相,真值表中的相邻的一对状态就被交换:
        C    .UB  AN  B   VSS  VDD  VDD   VDD   ;很明显这个表达式实现了 X+Y的通用真值表,但是控制输入经过定义而使X= A以及Y=B。如果两个控制输入被反相,
      C    .UB  AN  BN    VDD  VSS  VDD   VDD   ;这个表达式中的真值表实现了通用函数 X+Y,但是控制输入经过定义而使X= A以及Y= B。
CHDL句法也允许控制变量作为元素列入真值表状态。举例来说,句法很容易认出,任何时候只要A处于高,结果C就高,而当A处于低时C就取BN的值。这可以用CHDL句法表达为
      C    .UB  A  VDD  BN   ;而对应的真值表显示在表X:
    表X
C  A
 I1 1  0
 I0 B-  1
同样地,句法很容易识别,任何时候只要B处于低,结果C就高,而当B处于低时C就取A的值。这可以用CHDL句法表达为
          C    .UB  B  A  VDD   ;而对应的真值表显示在表XI:
表XI
C  B
 I1 A  0
 I0 1  1
不仅这里出现的CHDL句法方便地容许控制变量作为映射输入的变量出现,而且这个同样的能力也表现在利用上述的单元的实现上。特别是,上述两个例子中的每一个都可以用一个ULG和缓冲器(“.UB”)的组合来实现,就像只使用基本布尔变量0和1的任何真值表一样容易。实现所有这些逻辑功能只是简单地根据上述通用逻辑元件对真值表状态和控制变量赋值即可。
这样,这个形式就此明示本发明的实施例允许实现各种范围的逻辑功能。现在详细叙述这些性质的一些具体例子。在讨论可以用在本发明的某些实施例中的逻辑性能时,有时要参考上述的形式。这样参考的理由主要是为了方便,而决不是要限制本发明的范围。特别是,业内专业人士会知道可以用上述单元来实现该形式中的每一个合法的句法表达式。相应地,该形式的逻辑性质直接对应于可以用在不同的实施例中的单元布置实现的逻辑功能。
该形式的一个性质,因此也是该单元布置的性质,是在组合电路和时序电路之间没有高层次的区别;两个这样的电路仅是可以实现的更为一般类型的逻辑函数的特殊情况而已。组合电路是这样的电路,其输出是输入的预定函数。作为组合电路,由组合电路实现的逻辑可以用一个列出从所有可能的输入的布尔状态到输出的布尔状态之间的映射的真值表来代表。这可以和其中电路的逻辑应用取决于过去输入的历史的时序电路做一个对比。这样的逻辑的应用可以替代地用将过去的输入映射到输出的下一状态的等式来代表。本文叙述的本发明的实施例不限于组合的或时序的逻辑。举例来说,在实现下列句法的CHDL表达式中只需要单元的稍微差别:
           Q   .UB  A  B  VDD  VDD  C  VSS  ;
           Q   .UD  A  B  VDD  VDD  C  VSS  CLK  ;
这些表达式的第一个代表一个组合逻辑函数而第二个代表一个时序逻辑函数。在其他实施例中,该形式和对应的单元实现可以包括组合的和时序的方面,使得函数的特性不严格限于哪一个范畴。这个附加的灵活性允许在限定到组合的或时序的逻辑时没有的某些优化,其中的一些将要在下面讨论。
除了组合的和时序的逻辑之外,这个附加的灵活性部分也来自根据本发明的实施例形成的单元的更为通用的特性而实现选择逻辑。如本文所用的,“选择运算”是指其中为数众多的输入中的一个或多个被传递出去作为输出的功能。在一定的实施例中,这样的选择运算将为数众多的输入中的一个输入传递出去作为一个输出。这样一个选择运算有别于一个时序逻辑运算,因为它不取决于输入的过去历史。它也有别于一个组合逻辑运算,它不需要输出对应于输入中的一个。这一点对于一个NAND门是很明显的,它回应两个0输入而产生一个输出1;输出并不对应于任何一个输入。但这对于OR门也是正确的。虽然在每一种情况下OR门的输出等于输入的一个,但门并没有使得输入中的一个传递出去作为输出的作用;而是,执行从输入到输出的组合映射恰好包括了某个共同性。此外,选择运算不限于其中输入数是2和/或输出数是1的场合。更为普遍的是,任何为数众多pin(≥2)的输入都可以接受,其中一个数目pout(≥1)被传递出去。
本发明的实施例也不限于输入和输出是基本布尔值0和1。如联系表X和XI和有关句法表达式中指出的,用在本发明的实施例中的单元可以实现其中真值表项目代之是这样的基本布尔值的函数的运算。在该实施例中,本发明包括提供了实现布尔功能的实施例,本文中这些功能被定义为除了在它们的输入和/或输出之间容许基本布尔值之外还在它们的输入和/或输出之间容许布尔变量的函数的运算。
本文提出的形式和用上述单元的实现允许一个进一步的增加了数字设计和它的优化的灵活性的概括。这样一个概括可以参考本文将其定义为高阶布尔函数的内容来理解。传统数字电路设计只使用本文中被指为零阶布尔函数的内容,它在其输入和/或输出之间只容许基本布尔值。相比之下,本发明的某些实施例使用一个第一阶布尔函数,它对应于一个布尔功能并除了在其输入和/或输出之间容许基本布尔值之外还容许零阶布尔函数。其他实施例使用一个2阶布尔函数,它在其输入和/或输出之间容许第一阶布尔函数,零阶布尔函数和基本布尔值。在本发明的另外的其他实施例中,甚至使用更高阶的布尔函数,这样的高阶除了容许传统设计中用的基本布尔值之外还在其输入和/或输出之间容许所有低阶布尔函数。除了零阶布尔函数之外的所有阶次的布尔函数本文有时被总称为“高阶”布尔函数。
这个概括可以用上述例子C=A+B--基础上的例子来说明:
          J   .UB  G  H  VDD  VSS  F    C
          F   .UB  D  E  VSS  C    VDD  C
          C   .UB  A  B  VDD  VDD  VSS  VDD
在这个例子中,第三表达式对应于零阶函数C=A +B,它只允许在其自变量之间的基本布尔值0和1。这样一个函数使用一个组合映射并可以用诸如OR门和NOT门之类的门来实现。第二个表达式对应于第一阶函数或功能,它除了容许基本布尔值之外还允许零阶函数作为它的一个自变量。第一个表达式对应于一个第二阶函数,它在其自变量中容许第一阶函数F,零阶函数C和基本布尔值。第一和第二个表达式每个都对应于高阶函数的表达式。所有三个表达式都可以用上述的单元在本发明的实施例中实现。
使用高阶函数的能力的一个效果可以从对比于专用布尔运算来看出。这样的布尔运算符只对基本布尔值0或1,或代表基本布尔值0或1的变量,即已经有了和其密切相关的0或1的值的变量进行运算。布尔最小化或优化技术基于分解正在最小化的表达式来考虑对每个布尔变量赋值0或1的有意义的可能组合(某种情况下某些变量的“无关”状态的存在减少了从所有可能的组合集中减少有意义的可能的向下组合)。高阶函数允许人们进行优化,或最小化一个电路,而毋需把函数结果分解到每个可能值,和分别考虑每个值。换句话说。当一个电路用下述算法处理时,不需要知道函数或变量的值是什么;优化过程可以照样执行。在被限制只使用布尔运算符的传统方法中,每个变量和函数在可进行任何优化之前被分解到函数和变量的所有可能的值,就是定义出一张完整的真值表;在这样一个传统方法中必须毫无遗漏地对所有的变量和函数赋值。
IV.优化
采用基于ULG和由上述形式表述的单元的实施例提供的逻辑运算的扩展的可利用性允许经增加的优化。在许多场合,这些逻辑运算可以用来确定实现一个给定函数的优化方法。许多这样的逻辑运算进行了说明,业内专业人士将会知道还有其他逻辑运算可以从本发明的其他实施例的形式中衍生出来。而且,采用这个形式是为了便于说明优化的性质,可以理解到,所遵循的所有的表达式都可以用上述单元已解释过的方式来实现。在表达式对应于标准布尔逻辑达不到的函数的场合,上述的结论也是正确的。在某些场合,对该形式的使用可以显示要执行多少次操作来达到一个优化,只需要用以前讲过的单元来实现最终的结果以达到优化的函数,但这是必须的。
可以用本文所述的形式表达的逻辑函数执行的许多运算总结在图9A-9D中,它们提供的流程图解释了一些这样的运算是如何完成的。在不同的实施例中,可以执行一个或多个这样的运算的不同组合,本发明也不限于这样的运算的任何等级或数量。相应地,图9A-9B的每一个图指出它可以作为来自以前的变换的较大运算流程的一部分而列入。虽然包括了这样的指示指出本发明的某些实施例认为前面的变换可能已经执行过了,但前面的变换不必已经在任何场合执行过。同样,虽然图9A-9D的每一个图中的流程图显示一个执行运算的示范顺序,但这样的排序不是必需的,并且替代的实施例允许替代的排序。而且,在某些实施例中,某些运算可以同时执行,诸如一个大型结构的不同部分在同时被优化时的情形。
图9A总结了可以集中地认为是对应于除去反相的许多运算。相应地,图9A所示方法从框902随着可能但不一定是在某些先前的逻辑变换完成以后对一个单元的句法表达式开始。在框904,对于在句法表达式中是否有任何要除去的反相做一个识别。如果没有,方法进行到可能的后续变换的框906。在要求除去一个反相的场合,方法可以根据反相的类型沿着至少3个分支中的一个继续进行。分支903对应于控制或状态变量Y的反相;分支905对应于真值表中的反相;而分支907对应于缓冲器中的反相。
在一个实施例中,控制或状态变量的反相可以通过交换在真值表中相邻各组来在框908中继续进行下去。要进行交换的各组的大小取决于要反相的控制或状态变量的有效数位。这样,如果一个控制Y[k]要被反相,大小为2k的组被反相。这可以通过考虑一个包括一个ULG和一个缓冲器的单元来说明:
           Q  .UB  Y[2]  Y[1]  YN[0]  A  B  C  D  E  F  G  H;
在这个例子中,由k=0来定义的最低位控制Y[0]要被反相,使得相邻的状态被交换:
           Q  .UB  Y[2]  Y[1]  YN[0]  B  A  D  C  F  E  H  G;
在相似的方式下,当要被反相的控制k=1时,状态的相邻对要被交换:
           Q  .UB  Y[2]  YN[1]  Y[0]  A  B  C  D  E  F  G  H;
           Q  .UB  Y[2]  Y[1]   Y[0]  C  D  A  B  G  H  E  F;
当要被反相的控制k=2时,状态的相邻四重组要被交换:
           Q  .UB  YN[2]  Y[1]  Y[0]  A  B  C  D  E  F  G  H;
           Q  .UB  Y[2]   Y[1]  Y[0]  E  F  G  H  A  B  C  D;       ;
图9A的流程图提供了一个在通过状态的交换而反相了一个具体的控制后回到框904的循环。这就预期在众多控制上进行反相的可能性,因此这些控制受到连续进行的有关交换的影响。交换是可以互易的,使得结果的句法表达式与交换进行的次序无关:
            Q  .UB  YN[2]  YN[1]  YN[0]  A  B  C  D  E  F  G  H;
            Q  .UB  Y[2]   Y[1]   Y[0]   H  G  F  E  D  C  B  A;
可以用上述单元来实现的结果表达式必然会从任何控制反相的执行次序和各自的真值表交换中产生。
图9A的流程图在框910指出,在某些场合可以用输入控制作为一个映射输入的变量而不是执行交换来完成反相的除去。在这种情况,本发明实施例的容纳非布尔选择运算的能力被用来达到更高水平的优化。在用来说明本文叙述的原理的句法范围内,识别一个带有VSSVDD系列的反相控制就允许通过将控制输入到真值表来除去反相:
            Q  .UB  Y[1]  YN[0]  VSS  VDD  A  A  ;
            Q  .UB  Y[1]         Y[0]  A  ;
如所指出的,将控制输入到真值表中通常也会需要在适当的水平重复状态A。
在某些场合,可能需要改变真值表来通过改变控制的位置达到这样的VSS VDD系列:
           Q  .UB  YN[1]  Y[0]   VSS  A    VDD  A  ;
           Q  .UB  Y[0]   YN[1]  VSS  VDD  A    A  ;
           Q  .UB  Y[0]         Y[1]   A;
在上述的数列中,单元的优化是通过指出VSS VDD系列可以通过改变真值表的位置达到和通过指出重复状态A而达到的。改变控制的位置导致一个完全等同于前一个例子的真值表,因此,最低位的控制可以成为一个映射输入的变量。
同样的原理适合于更高有效数位的控制,在某些情况下它的优化可以通过输入更高有效数位控制作为映射输入的变量来除去一个反相。在一个实施例中,比如说,这是当次低位控制是冗余的时候达到的;
            Q  .UB  Y[2]  Y  N[1]  Y[0]  A  A  A  A  VSS  VSS  VDD  VDD
            Q  .UB  Y[2]                    A  Y[1] ;
优化已经通过识别一个模拟图样的存在,就是在高有效数位水平的A的重复和VSS VSSVDD VDD系列的存在而达到。现在对业内专业人士就很明显,控制的改变可以用来重组真值表来识别这样的系列,从而通过除去反相来优化函数。此外,同样明显的是,这些原理可以用到任何有效数位水平的控制。举例来说,一个和系列VSS VSS VSS VSS VDD VDDVDD VDD耦合的A的八重重复也许在改变控制的位置来达到这样一个真值表中的系列以后将允许除去一个YN[2]反相。
在图9A的框912,可以注意到真值表状态的反相可以通过单元中缓冲器的反相来达到:
           Q  .UB  Y[0]  AN  BN  ;
           Q  .UB  Y[0]  A   B   ;
通过缓冲器的反相,所有真值表中的项目都被反相。框914指出在其中缓冲器通过反相真值表中所有元素来反相的逆函数。虽然框912和914的功能效应是等同的,但在概念上它们是互逆的,因为在一个例子中反相真值表的目的是通过反相缓冲器来达到的,而在另一个例子中反相缓冲器的目的是通过反相真值表来达到的。
图9A中的每一个运算都循环回到框904。如框908指出的那样,这个实施例强调,这些多次变换可以用来实现优化以及它们可以以不同的次序进行。举例来说,对于某些单元,优化可以通过下述步骤达到:(1)首先,反相一个缓冲器来反相真值表;(2)其次,改变控制的位置使得结果真值表包括允许输入控制变量的系列;和(3)最后,在真值表范围内进行交换来除去其他控制反相。
正如有关图9A中的框910所讨论的,把控制变量列入到真值表中作为一个映射输入的变量不仅有除去一个反相的作用,而且也减少了单元中的结点数。还有其他真值表系列可以允许通过接受控制变量的列入和因此减少结点数来进行优化。图9B中的流程图提供了一个这样的系列如何达到的一般解释。基本上,是和所讨论的有关框910的反相遵循同样的步骤:识别一个具有一定系列的元素的真值表,改变该表来实现这些系列,再通过列入相应的控制变量来加以优化。一个简单的例子对应于有关框910所讨论的但是没有反相的例子如下:
            Q  .UB  Y[1]  Y[0]  VDD  VSS  A  A  ;
            Q  .UB  Y[1]     Y[0]  A  ;
在这个例子中,A和VDD VSS(而不是VSS VDD)系列的重复就足够把最低位的控制变量列入真值表。这是直接用控制变量完成的,而不是像框910中用它的反相。
这样,图9B中所示的一般步骤从框916随着对一个单元的句法表达式开始,它有数字指出,在某些实施例中一定的其他变换可能(不是必需)先前已经用句法表达式完成了。在框918,控制中的现存冗余度被除去。这样的冗余度通过在真值表中冗余控制,就是在2k规模的控制组Y[k]的水平上的重复展现出来。一个平凡的情况发生在控制的最低级:
            Q  .UB  Y[0]  A  A  ;
            Q  .UB        A  ;
这个例子是平凡的,因为单元只不过对于每一个输入产生结果A;控制是没有必要的,可以全部除去。然而同样的原理适用于更高级的控制。比如说,当k=1时,状态对的重复可以允许除去Y[1]:
            Q  .UB  Y[1]  Y[0]  A  B  A  B;
            Q  .UB  Y[0]        A  B  ;
这个结果简单地利用了更高级的控制没有作用,单元的输出单单取决于最低位控制的这样一个事实。相似地,当k=2时,四元组状态的重复允许除去Y[2]:
            Q  .UB  Y[2]  Y[1]  Y[0]  A  B  C  D  A  B  C  D;
            Q  .UB  Y[1]  Y[0]        A  B  C  D;
这个结果表示单元的输出只取决于两个最低级控制而最高级控制没有作用。这些原理可以延伸到更大的重复的框和随后更为高有效数位的控制的除去。
在框920,可以在控制中进行改变来重新布置真值表以识别允许列入控制变量的系列。为了列入一个最低水平的控制,要寻求与一对重复变量A A耦合的VDD VSS系列。为了列入一个次低级水平的控制,要寻求与四个重复变量A A A A耦合的VDD VDD VSS VSS系列。为了列入一个再次低级水平的控制,要寻求与八个重复变量A A A A A A A A耦合的VDD VDD VDD VDD VSS VSS VSS VSS系列。为了更高的控制级别的相似系列遵循相同的模式。在框922,控制变量列入真值表来解释这些模式。
这样,一个应用框920和922的例子如下:
            Q  .UB  Y[2]  Y[1]  Y[0]  VDD  VDD  VSS  VSS  A  B  A  B  ;
            Q  .UB  Y[2]  Y[0]  Y[1]  VDD  VSS  VDD  VSS  A  A  B  B  ;
            Q  .UB  Y[2]  Y[0]        Y[1] Y[1] A   B   ;
在初始的句法表达式中,出现系列VDD VDD VSS VSS,但是不可能除去k=1的控制,因为没有四个重复变量的相应系列。然而存在A和B的复本提示:控制可以被改变来达到与成对重复变量耦合的VDD VSS系列。这是在第二行中通过改变Y[1]和Y[0]达到的。相应地,有可能在第三行中将两个出现的Y[1]列入真值表中,它现在是最低级的控制。因此而相应的单元通过减少结点数和把原始Y[1]控制变量列入真值表来优化。
框924指出:识别和除去冗余度以及改变控制变量来允许它们列入真值表可以重复进行来达到进一步优化。这个方法就这样循环进行直至这些步骤以这种方式尽可能按照需要优化句法表达式。在框926,如果需要,这个方法就这样进行到另一种变换类型来实现进一步优化。
除了减少单个单元的结点,在本发明的实施例中可以通过组合来自多个单元的结点来提供优化。图9C中显示的流程图提供一个对应于组合结点的一个实施例的方法。这个方法从框928随着多个单元的句法表达开始。至于其他优化程序,图9C明确指出,前期的变换可以发生在这些句法表达式,虽然这不是必需的。在考虑结点是否可以组合时,在框930中进行一个核查,核查是否有任何句法表达式输出一个存在于另一个表达式中的控制变量。如果是,这个控制变量在框932中变换成映射输入的变量。在其中利用这种变换的组合结点的例子列出在下面,但是组合结点的原理最初是为没有这样的变换的场合说明的。
组合结点的一个方法就这样由框934和936汇总,其中多个句法表达式的控制被组合,于是在合并的表达式中的状态被定义。举例来说,考虑下列两个句法的CHDL表达式,其中第二个表达式中的输出A是第一个表达式的输入之一:
              Q  .UB  YQ     A  B;
              A  .UB  YA     C  D;
表达式被合并,由此结点用以下方式被组合。首先,在框934中通过把第二表达式的控制加到第一表达式而组合控制—于是YQ以k=1级控制的身份进行工作而YA以k=0级控制的身份进行工作:
              Q  .UB  YQ  YA  A  A  B  B;
可以看出,增加YQ控制的级别一个单级到k=1的作用是复制真值表的每一项。控制组合的次序由表达式的输入和输出之间的关系确定。具体是,既然Q的表达式具有表达式A的输出作为一个输入,YQ成为较高水平的控制而YA成为较低水平的控制。在组合了控制以后,状态根据框936的表达式被定义在合并的表达式中:
               Q  .UB  YQ  YA  C  D  B  B;
在这个例子中,系列A A根据A的句法表达式用C D置换。最终表达式通过允许用一个上述的单个单元来实现结果表达式来达到优化。
虽然这个例子显示两个表达式如何合并,它可以更广泛地应用到任何数目的表达式。比如说,下列三个表达式可以用一个顺序过程以相似的方式合并:
                 Q  .UB  YQ      A    B  ;
                 A  .UB  YA      C    D  ;
                 B  .UB  YB      E    F  ;
第二和第三表达式都有对应于第一表达式的输入的输出。相应地,在按照框934组合控制的过程中,第一表达式的控制用做最高级的控制。首先,第一和第二表达式通过组合它们的控制和以相同于两个表达式的例子的方式定义在合并表达式中的状态来合并:
              Q  .UB  YQ  YA      A  A  B  B;
              Q  .UB  YQ  YA      C  D  B  B;
接着,第三表达式合并到这个组合中。首先,附加的控制使得YQ变成一个k=2级的控制而YA变成k=1级的控制,YB仍旧为一个k=0级的控制:
               Q  .UB  YQ  YA  YB    C  C  D  D  B  B  B  B  ;
从这个表达式中看出,附加的控制级造成每个真值表元素的复本。现在这个表达式中的状态根据框936按照原始第三表达式通过用系列EF置换一对B来定义:
               Q  .UB  YQ  YA  YB    C  C  D  D  E  F  E  F  ;
这样,这个结果对应于一个组合原始的3个表达式的表达式并可以以上述方式作为一个单元来实现。
这两个例子都从对应于可以用相同规模的多路复用器实现的ULG单元的表达式开始。然而,本发明的实施例并没有要求它们一定是相同规模的。可以执行对组合结点的优化,这些优化对应于将一个较小的多路复用器合并到一个较大的多路复用器或将一个较大的多路复用器合并到一个较小的多路转换器。这可以从下列例子中看出,其中当使用这样的实现时初始表达式的每一个都对应于一个不同规模的多路复用器。举例来说,在下面的组中
               Q  .UB  YQ[1]  YQ[0]    A  B  C  D  ;
               A  .UB  YA              E  F  ;
第二个表达式有一个用做第一表达式的输入的输出,并对应于一个比第一表达式所对应的规模较小的多路复用器。结点以相同于上述方式的方式来组合。首先,控制根据框934来组合:
               Q  .UB  YQ[1]  YQ[0]    A  A  B  B  C  C  D  D  ;
接着,在这个例子中通过用E F置换一对A来在合并表达式中定义状态:
               Q  .UB  YQ[1]  YQ[0]  YA  E  F  B  B  C  C  D  D  ;
最终表达式可以这样作为一个单元来实现并且通过将一个较小的多路复用器合并到一个较大的多路复用器来达到优化。
在使用多路复用器的实施例中,相似地可以以对应于将一个较大的多路复用器合并到一个较小的多路复用器的方式来组合结点:
             Q  .UB  YQ                   A  B  ;
             A  .UB  YA[1]  YA[0]         C  D  E  F  ;
在这个例子中对应于较大多路复用器的表达式的输出是对应于较小多路复用器的表达式的输入。结点是以相同的方式来组合的,首先是根据框934来组合两个表达式的控制。因为来自第二表达式的两级控制要和第一表达式组合到一起,YQ变成一个k=2级的控制:
             Q  .UB  YQ  YA[1]  YA[0]  A  A  A  A  B  B  B  B  ;
接着,状态根据框936通过如第二原始表达式规定的那样用C D E F置换A的四元组来加以定义:
              Q  .UB  YQ  YA[1]  YA[0]  C  D  E  F  B  B  B  B  ;
这些例子的每一个都说明了在一个表达式的输出是另一个表达式的输入之一的不同场合如何组合结点。然而,在某些场合,一个表达式的输出可以是另一个表达式的控制中的一个,正如框930的核查情况所示。在这样的例子中,控制变量在组合控制和定义状态之前在框932被转换到一个映射输入的变量。这可以用下面两个例子来说明,其中第一个对应于一个AND子函数而第二个对应于OR子函数。
这样,考虑下面两个句法表达式的合并结点:
               Q  .UB      YQ[1]  YQ[0]  A  VDD  VSS  VSS  ;
               YQ[1]  .UB  YA            B  C  ;
这个例子中的情况不同于前面的例子,因为第二表达式的输出YQ[1]是一个第一表达式的控制而不是真值表项目中的一个输入。实施例接受真值表元素中的变量的能力就这样被利用来用真值表中的YQ[1]来重新表达第一表达式。首先,改变控制变量,使得YQ[1]是最低位控制:
               Q  .UB        YQ[0]  YQ[1]  A  VSS  VDD  VSS  ;
于是认识到,对于作为最低位控制的YQ[1]而言在I1-I0位置的VDD VSS系列简单地对应于YQ[1]。还可以认识到,在I3位置,YQ[1]和A是等效的。因此,在把控制变量按照框932变换到映射输入的变量后,表达式可以写为
              Q.UB        YQ[0]A        YQ[1]   VSS   YQ[1]  YQ[1]  ;
基本上,这个变换认识到真值表XIIA和XIIB的等效性:
    真值表XIIA ←→     真值表XIIB
 Q  YQ[0]  YQ[1]  Q YQ[0]  A
 0  0  0  YQ[1] 0  0
 1  0  1  YQ[1] 0  1
 0  1  0  0 1  0
 A  1  1  YQ[1] 1  1
在框934把控制和第二表达式组合起来导致
    Q  .UB  YQ[0]  A  YA  YQ[1]  YQ[1]  VSS  VSS  YQ[1]  YQ[1]  YQ[1]  YQ[1];
最后,在框936定义状态,使得按照原始第二表达式的要求用B C置换YQ[1]对就导致合并的表达式
       Q.UB       YQ[0]  A  YA  B  C  VSS  VSS  B  C  B  C;
相同的步骤也可用于下面两个句法表达式:
       Q  .UB      YQ[1]  YQ[0]  VDD  VDD  A  VSS  ;
       YQ[1]  .UB  YA            B  C  ;
在这个例子中,对于YQ[1]的表达式相同于前例中的表达式,但对于Q的表达式不同。改变控制变量的位置使得YQ[1]成为最低位的,
      Q  .UB       YQ[0]  YQ[1]  VDD  A  VDD  VSS  ;
认识到I1-I0位置的VDD  VSS系列对应于YQ[1]并且在I2位置YQ[1]和A是等效的,导致
       Q  .UB       YQ[0]  A    VDD  YQ[1]  YQ[1]  YQ[1];
这个变换有效地认识了真值表XIIIA和XIIIB的等效性:
    真值表XIII A ←→     真值表XIII B
 Q  YQ[0]  YQ[1] Q  YQ[0] A
 0  0  0  1  0  0
 1  0  1  YQ[1] 0  1
 A  1  0  YQ[1] 1  0
 1  1  1  YQ[1] 1  1
根据框934把控制和第二表达式组合起来,导致
   Q.UB  YQ[0]  A  YA  VDD  VDD  YQ[1]  YQ[1]  YQ[1]  YQ[1]  YQ[1]  YQ[1];
最后,在框938定义状态,使得按照原始第二表达式的要求用B C置换YQ[1]对就导致合并的表达式
   Q.UB        YQ[0]  A  YA  VDD  VDD  B  C  B  C  B  C  ;
要指出的是,在某些例子中,图9C画出的方法可以和向前移动触发器组合来促进减少。举例来说,考虑将这个方法应用到下列表达式组
       Q  .UB   Y[2:1]  A  B  C  D  ;
       A  .UB   Y[0]     E  F  CLK  ;
       B  .UB   Y[0]     G  H  CLK  ;
       C  .UB   Y[0]     I  J  CLK  ;
       D  .UB   Y[0]     K  L  CLK  ;
如上所述,符号Y[2:1]等效于表达式Y[2]Y[1]。这组表达式可以用5个单元来实现,一个包括一个ULG和一个缓冲器的单元和4个包括一个ULG和一个F/F的单元。把触发器向前移动的结果是
        Q  .UB  Y[2:1]  A  B  C  D  CLK  ;
        A  .UB  Y[0]     E  F  ;
        B  .UB  Y[0]     G  H  ;
        C  .UB  Y[0]     I  J  ;
        D  .UB  Y[0]     K  L  ;
因此,应用图9C的方法来组合结点导致
        Q  .UD  Y[2:0]  E  F  G  H  I  J  K  L  CLK  ;
在本发明的某些实施例中,这个表达式可以用包括一个ULG和一个D F/F的单元来实现。
这样,图9C画出的方法允许从多个句法表达式中减少结点。这包括各类不同的情况,包括存在任意数目的句法表达式,某些表达式对应于实现不同规模,和某些表达式具有对应于其他表达式的输入或控制的输出的情况。在结点合并后,这个方法可以进行到框938的另一个变换,虽然这并不是必须的。
附加的优化函数可以通过使用在该形式中设置的置位和复位设施来实现,以及它们可以根据本发明的实施例通过使用单元中的那些设施来实现。使用置位和复位的设施汇集在图9D中,它主要是在真值表状态的一半处于高或低的时候使用的。这样,一个优化的方法是从框940随着对单元的句法表达式开始,而图9D明确指出先前的变换也可以在单元表达式上完成,虽然这并不是必须的。在框944核查是否真值表状态的一半处于低。如果是,控制变量可以根据框946改变到一个F/F的复位。比如说,考虑句法函数
       Q  .UD  Y[2:0]  VSS  VSS  VSS  VSS  A  B  C  D  CLK  ;
在这个例子中,实现这个函数的单元包括一个ULG和一个D F/F。如上所述,符号Y[2:0]等效于Y[2]Y[1]Y[0]。这个表达式中的真值表状态的一半处于低,就是VSS,使得最高位控制可以列入图中作为一个F/F的复位输入:
       Q  .UDR  Y[1:0]  A  B  C  D  Y[2]  CLK  (RST=‘C’);
单元的名称明确指出使用了一个可复位的D F/F(DR)而且复位已经被指出。这个函数于是可以使用上述单元来实现。
图9D在框942指出:在某些场合改变控制变量的位置来把真值表置于允许为优化使用复位输入的形式可以是很有用的。如果真值表状态的一半处于低,但不作为一个组出现,它们可以通过改变位置来排齐。举例来说,函数
        Q  .UD   Y[1]  Y[0]  VSS  A  VSS  B  CLK  ;的真值表状态的一半处于低,但它们没有排齐。交换控制变量使它们排齐
        Q  .UD  Y[0]  Y[1]  VSS  VSS  A  B  CLK  ;使得在框946最高位控制变量可以列入图中作为F/F的一个复位输入:
        Q  .UDR  Y[1]      A  B  Y[0]  CLK  (RST=‘C’)  ;
要注意的是,在这个例子中,在低状态之间缺乏排齐已经导致是Y[0]而不是Y[1]作为优化的部分列入图中。
如在框948中核查的,如果真值表状态的一半处于高就可以达到相似的优化。如果这样,可以在框950进行控制变量改变位置来排齐高状态,在框952将控制变量作为F/F的一个置位输入列入到图中。比如说,考虑函数
         Q  .UD  Y[1:0]     VDD  A  VDD  B  CLK  ;真值表状态的一半处于高,就是VDD,使得可以达到用置位输入的优化。根据框950改变控制变量的位置来排齐高状态导致
        Q  .UD  Y[0]  Y[1]  VDD  VDD  A  B  CLK;列入作为映射输入变量的最高位控制作为F/F的一个置位输入导致
        Q  .UDS  Y[1]         A  B  Y[0]  CLK  (SET=‘C’);这个函数于是可以用实施例中上述的单元来实现。
还可以用扩展,反相,和/或改变位置的其他组合来达到利用置位或复位来优化的条件。一个说明几个上述优化操作的例子从句法表达式开始
        Q  .UD  AN              VSS  NOT_RESET  CLK  ;
这个函数的优化可以通过首先进行扩展作为一个控制变量的NOT_RESET来进行:
       Q  .UD  AN  NOT_RESET   VSS  VSS  VDD  VSS  CLK  ;
根据图9A的两个控制变量的反相导致真值表的两个交换,第一个交换基于单项,第二个交换基于成对:
       Q  .UD  A  RESET  VSS  VDD  VSS  VSS  CLK  ;
交换控制来准备将A作为映射输入的变量列入导致
       Q  .UD  RESET  A  VSS  VSS  VDD  VSS  CLK  ;
根据图9B,VDD VSS系列和重复的VSS元素的存在允许A控制变量列入图中:
       Q  .UD  RESET       VSS  A  CLK  ;
现在很明显,因为在真值表中只有两个状态而其中一个是低,也很明显一半状态是低,控制变量可以列入图中作为F/F的一个复位输入:
       Q  .DR              A  RESET  CLK  (RST=‘C’)  ;
因为所有的控制变量已经列入图中,在实现这个优化表达式中不需要一个ULG元素了。而是,在一个实施例中,即使原始表达式对应于包括一个ULG和一个D F/F的实现,它也可以只用一个可复位的D F/F来实现。
该形式的每个句法表达式可以看作定义一个数字电路的ULG网表的一个项目。ULG网表使用基本单元而且遵循CHDL句法。这样的ULG网表可以通过连续进行上述的几个个别的操作来达到至少部分优化。在某些实施例中,结果的优化ULG网表可以直接用上述的单元来实现。但在其他实施例中,ULG网表的操作可以看作已经表达在另一个网表格式中的数字设计优化的中间步骤。在这种情况下,使用另一个单元库和/或另一个句法(比如VHDL或Verilog)的其他网表格式在一开始就转化到ULG网表格式。在完成几步优化步骤后,优化的网表可以转化回到用于实现的原始格式。以这种方式,提供了一个在原先存在的网表格式范围内达到数字设计优化的实施例。
有多种方式可以实施包括一个ULG网表的句法表达式的各个操作而相应数字设计的优化程度取决于那些操作如何执行。虽然在某些场合可以由数字设计人员手工操作,但是期望至少可以应用一定程度的自动化。举例来说,在一个实施例中,可以提供一个允许数字设计人员选择要完成的操作类型和这些操作在其上面执行的ULG网表部分,而操作的执行是自动完成的。在另一个实施例中,以完全自动的方式使用一个预定的算法来执行操作或优化。
这样一个预定的算法的例子用在图10中提供的流程图说明,虽然业内专业人士一定会知道许许多多其他算法可以替代使用。在某些具体例子中,替代的算法使用相同的操作但以不同的次序完成它们。在某些其他的具体场合,替代的算法使用不同的操作组。如果要优化的设计一开始没有用ULG形式建立起来,在图10中显示的算法可以从框1004开始把现存的网表转化到ULG网表。在一个实施例中,从现存的网表转化到ULG网表是在句法表达式之间一对一的转化的基础上完成的。对于一个实施例,这个转化在概念上可以根据在这个实施例中使用的用于实现原始的和ULG网表的元素来看——诸如NAND,OR等之类的每个逻辑门被变换到一个容易进行由上述句法操作提供的优化的以多路复用器为基础的操作工具。
在框1008,数据和控制要素在结果ULG网表中被区别开来。这种数据和选择控制要素的之间的区别先前已经根据表VIII讨论过。在一个实施例中,这样的区别可以用一个高级设计语言来完成。在某些实施例中,在数据和控制从原始的行为网表中被识别的后续优化中还有附加的优势。一旦数据和控制要素被识别,在框1016-1018中识别的运算可以用上述的句法操作来完成。这样,在框1016,通过纳入相应的函数到句法表达式中,连接到基本布尔值的连接单元被除去。相似地,非反相缓冲器在框1020被除去并且被直接纳入到句法表达式中。在框1024,通过句法上反相在个别句法表达式中的相关数据元素来除去反相器。在框1028的冗余结点的除去可以通过减少,组合和改变句法表达式中的结点进行。对于一定的实施例的用于这样的减少,组合和改变结点的方法已经结合图9B和9C在上面说明了。在框1032,反相被除去。除去的反相可以包括控制/状态变量反相,真值表反相和缓冲器反相,它们的除去方法已经结合图9A在上面说明了。
可以执行一个包括框1036和1040的循环来识别和合并扇出结点。一个“扇出结点”说明一个其中单个输出被指向真值表的多个部分的构型,以及在某些场合优化可以通过合并这样的扇出结点来实现。首先在框1036进行核查来识别是否ULG网表包括任何扇出结点,在该种情况下这些结点通过执行如结合图9C所述的改变和减少在框1040被减少。因为在框1040执行的减少可能产生可以通过附加的改变和减少来识别和合并的某些新的扇出结点,框1036和1040之间的循环要被包括进去。这个方法就这样循环下去直至在框1036再没有结点被识别。
在扇出结点被这样合并后,在框1044做一个核查来识别对应于其中一半真值表状态是低的同步单元的句法表达式。如果识别了一个这样的表达式,在框1048相应的控制变量被移动到成为一个复位输入。这个做法的方法结合图9D来说明,它可以包括执行改变位置来排齐真值表的低状态。在框1052做一个相似的核查来识别对应于其中一半真值表状态是高的同步单元的句法表达式。如果识别了一个这样的表达式,在框1056相应的控制变量被移动到成为一个置位输入。这个做法的方法也结合图9D来说明,它可以包括执行改变位置来排齐真值表的高状态。
在框1060,句法表达式通过公共输入编组。在框1064这种编组允许识别子函数。公共子函数分享可以在减少其他结点之前提取出来的特性。在框1068,使缓冲器成为反相缓冲器。
如果在框1004产生的原始ULG网表是非优化的,执行上述操作可以产生一个容易实现较小面积,较大速度,和/或较低功率要求的不同的ULG网表。在某些实施例中,可能不是所有的操作都会被执行,某些操作会被执行多次,以及它们被执行的次序会与上述的不同。一旦这个方法产生了一个新的ULG网表,它可以在框1072中通过用上述的单元转化ULG网表中的句法表达式来实现。在这样的实施例中,方法的作用不仅是优化数字设计,而且也提供一个它的以多路复用器为基础的实现。在某些替代的实施例中,结果ULG网表容易转化回到原始网表句法来进行应用布尔逻辑门的实现。在这些实施例中,该方法可以看作在保留它的基础结构特性的同时提供一个数字设计的优化。
在某些实施例中,要求用作句法操作的技术嵌入到一个优化工具或综合器中。因此,本发明的变换一个网表到ULG网表和优化ULG网表的方法可以由计算机来执行,这方面的合适构型的一个例子如图11所示。这个图在充分说明了个别的系统元件是如何以一种分立的或更为集成的方式被实现的。所示的计算机1100的电气上通过总线1112耦合的硬件包括一个处理器1102,一个输入装置1104,一个输出装置1106,一个存储装置1108,一个计算机可读存储媒体阅读器1110a,一个通讯系统1114,一个诸如DSP或专用处理器之类的处理加速单元1116,和一个存储器1118。计算机可读存储媒体阅读器1110a进一步连接到一个计算机可读存储媒体1110b,这种组合综合性地描绘了远程的,本地的,固定的,和/或可移动的存储装置加上存储媒体用来暂时和/或更持久地保存计算机可读信息。一个通讯系统1114可以包括一个有线的,无线的,调制解调器,和/或其他类型的接口连接。
计算机1100也包括如显示为当前位于工作存储器1120内的软件,它包括一个操作系统1124和诸如用来实现本发明的优化方法而设计的程序的其他编码1122。业内专业人士一定会知道根据具体的要求可以使用许多实质上的变型。举例来说,也可以使用定制的硬件,和/或特殊的元件可以在硬件,软件(包括诸如applet之类的可移植软件),或两者之中实施。而且,连接到诸如网络输入/输出装置之类的其他计算机装置也是可行的。
实例:图10中所示的方法曾经用来优化一个微控制器的网表。市售的库单元的一个综合网表被转化到ULG网表形式并通过执行上述句法操作来进行优化。然后将用本文叙述的单元实现优化ULG网表的规模与原始实现的规模进行比较。整个规模显著地减少了约37%。
V.用句法操作的数字设计
接着参考图12,图中显示一个制备ULG ASIC单元库的工艺的实施例的流程图。在这个实施例中,一个新的制造工艺正在适应应用核心单元/基本单元的结构。所描绘的工艺部分从步骤1204开始,其中布局工程师或技术员分析目标制造工艺的布局规则。在布局时要考虑到制造工艺会有不同数量的金属化层,不同的半导体组成,不同的晶体管类型,和诸如SOI等的不同的结构。在步骤1208中核心单元至少部分地由手工设计来优化电路。某些实施例可以用手工定制的计算机路由设计来开始核心单元布局。要注意核心单元的一致高度和遵守邻接准则,使得时钟信号和一些I/O在纬向对齐。其他实施例可能完全依靠自动路由来建造核心单元。
核心单元可以有许多种方式来装配以潜在性地建立ULG ASIC单元库中的几百个基本单元100。基本单元的构型在步骤1212中规定。具体的做法是编辑一个计划提供给将核心单元组合到基本单元中去的工具。在步骤1216中,这个实施例的核心单元自动地装配到基本单元100。某些实施例可能通过手工或有技艺的手工来装配核心单元。一旦基本单元产生出来,它们在步骤1220中受到检验。这个检验确认基本单元的数字和模拟性能。检验中发现的任何问题可以在核心单元和/或基本单元中修正。为了完成ULG ASIC单元库,在步骤1224中设计专用单元。
在一个实施例中,在数字电路中用选择逻辑代替某些或全部组合逻辑。基本单元的相当部分使用一个ULG104。相比之下,传统半导体电路不使用包括ULG电路的ASIC单元库。在一个实施例中,ULG电路具有2到8个之间的输入和1到3个之间的选择线的各种不同的规模。
在本发明中ULG或选择电路的广泛使用是以各个实施例中的许多使用方式为特征的,这些特征包括:
(1)一个使用包括一定比例带选择电路的单元的ASIC单元库的数字IC设计。在各种不同的实施例中,在ASIC单元库中带选择电路的单元的比例可以包括比如5%或更多,10%或更多,25%或更多,50%或更多,75%或更多,80%或更多,90%或更多。
(2)一个使用包括一定百分比的基本单元的ASIC单元库的数字设计,每个基本单元都包括两个或更多核心单元。比如说这个百分比可以大于5%,10%,20%,30%,40%,50%,60%,70%,80%,或90%。
(3)一个包括一定比例选择电路的数字设计。其中比率是根据电路面积,功耗或核心单元数来定义的。在各种不同的实施例中,数字设计包括选择电路的比例可以包括1%或更多,2%或更多,5%或更多,10%或更多,20%或更多,30%或更多,40%或更多,或50%或更多。
(4)一个用半导体电路实现的数字设计,其中数字结构单元包括存储器单元,单输入布尔运算符和选择电路。选择电路是非布尔运算符并具有3个或更多输入。在某些场合,可能有一小比例,诸如1%或更少,2%或更少,5%或更少,10%或更少,或20%或更少的数字结构单元可以是布尔运算符。
那些数字设计可以在下列形式中体现,比如说一个结构网表,一个行为网表,一个HDL网表,一个全定制ASIC,一个半定制ASIC,一个IP核心电路,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,或一个具有一定数量集成电路的电路插件板的形式。全定制和半定制ASIC在本文被定义为定制的集成电路,并且可以使用至少一些标准单元。结构网表列出所用的低级单元和它们如何互相连接。行为网表具有相似于高级编程语言的电路功能的高级描述。情况语句,IF-THEN-ELSE语句很容易从行为构造转化到ULG电路。HDL网表的例子包括RTL,VHDL,Verilog和CHDL。HDL网表可以是高级行为网表或低级结构网表。ASIC设计可以是全定制或半定制设计。全定制设计有全套为每个设计制作的掩膜,而半定制设计有若干定义与某些独特掩膜关联定制的门阵列的可再利用掩膜。在进行半定制ASIC的场合,各种门就会包括ULG电路。IP核心电路是定义一个诸如微处理器,总线接口之类典型情况下由第三方供货的可再利用功能的网表或掩膜件。集成电路简单地就是一个半导体芯片。在一个封装内有一个以上的芯片的场合,这样的封装称为混合集成电路或多芯片模块。电路插件板可以把焊在上面的为数不少的使用ULG的集成电路耦合在一起。
有几个方法把句法操作集成到数字设计中。在某些实施例中,设计人员预计在设计过程的开始就使用句法操作。使用诸如情况语句这样的HDL构造很容易映射到HDL ASIC单元库中去。数字设计者往往从几个厂商那里混合和匹配工具来开发一个适合于一个具体数字设计的设计流程。记住这点,下面的各种不同的实施例以不同的方式和在不同的程度上结合了本发明的概念。业内专业人士一定知道,设计的处理过程可以通过应用在各种不同的设计文件上运行不同的工具的计划来实现某些程度的自动化。
参考图13,它显示一个在综合后使用句法操作的设计流程1300的实施例的方框图。包括在这个设计流程中的有一个HDL输入工具1304,一个综合工具1308,一个传统单元库1324,一个优化工具,一个静态和动态时序分析工具1316,和一个位置和路由工具1320。在这个实施例中,数字设计人员使用了他们的正常设计流程中的所有工具,但包括在综合工具1308之后的优化工具1312。优化工具1312在这个设计流程中执行句法操作。
HDL输入工具1304是一个允许数字设计人员输入HDL作为一个行为网表的软件编辑工具。HDL可以是VHDL,Verilog,或简明硬件描述语言(CHDL)。CHDL是专为有利于ULG单元设计的设计构造而调整的HDL。HDL输入工具1304能够从其他工具处接收反馈而识别那些带有通过其他工具所发现的问题的编码部分。其他设计获得工具也可以用来代替HDL输入工具,比如说状态机器工具,RTL工具,图解获得工具等。动态时序分析可以根据行为网表执行来确认正确的功能。
在本实施例中行为网表通过综合工具1308使用的传统单元库1324被变换为结构网表。行为构造被变换为布尔构造并且优化。来自传统单元库1324的单元用于优化的布尔构造。在某些场合,典型的时序值被综合工具用来识别在用静态时序分析作变换的过程中可能出现的潜在问题。动态时序分析也可以在结构网表的基础上执行来确认功能在变换时没有受到损害。
优化工具1312使用句法操作来改善至少一个下列方面的设计:功耗,漏电流,扇出,芯片面积,掩膜数,工艺步骤数,产量,电容,电感,电阻,故障等。在这个实施例中,变量可以馈送到优化工具1312以便在诸多设计因素中间排定优先次序。这些变量可以排列在一个1比10的标尺上来指出沿着滑标的相对值。
某些实施例可以通过应用ULG库中的替代单元来优化各种因素。某些单元可以对诸如功耗,漏电流,扇出,芯片面积,掩膜数,工艺步骤数,产量,电容,电感,电阻,故障等之类的不同的设计因素进行优化。在优化过程中,可以根据设计人员如何排定优先变量的情况来使用该替代的单元。
在这个实施例中,优化工具优化来自综合工具的结构网表来产生一个使用相同的传统单元库1324的优化了的结构网表。经综合的结构网表被读出并变换到一个使用一个ULG ASIC单元库的实施例的中间网表。这个ULG单元库的实施例可以一定程度上得到简化,因为用在ASIC中的变化在仅仅进行优化时可能是不必要的。如果有规定,根据优化的优先级,按照中间网表进行句法操作。某些实施例可以执行可以或不可以被数字设计人员改动的默认优化。一旦中间网表优化完成,它被变换到一个使用传统单元库1324的优化了的结构网表。
静态和动态时序分析在优化了的结构网表上进行。静态时序分析考虑了优化的结构网表的时序关系和识别可能达不到电路的时序要求的电路部分。可以列入参数到综合和/或优化工具1308,1312来优先执行某些电路部分使得更容易满足静态时序要求。
动态时序分析可以有几种形式。可以设计输入波形来促进该设计,之后数字设计人员核查正确的输出波形。为了使这个过程自动化,可以开发出测试向量并把它施加到电路的输入端,之后来测试相对照于实际输出的输出测试向量。把差异记录下来作为误差并通过微调行为码和通过综合/优化工具1308,1312来加以修正使得误差不被引入到过程中去。
一旦数字设计人员认可了结构网表,位置和路由工具1320进行电路的实体布局。优化的结构网表中的每个单元的位置被选好,进行迹线的布局以把那些单元根据网表互相连接起来。这些工具1320的类型是自动化或半自动化的。因为互相连接单元的迹线长度是已知的,在确定了位置和路由后可以获得更为精确的时序值。可以进行进一步的静态/动态分析1316来确保在定位和路由的过程中没有引入新的误差。一旦达到合适的布局,可以生产掩膜和开始制造。制造后可以进行结果芯片的动态测试以测试其功能。
参考图14,这是一个使用句法操作和ULG ASIC单元库的设计流程1400的另一个实施例的方框图。在该实施例中,在综合1308的过程中应用ULG单元库1404。由于以ULG单元库为目标,经综合的结构网表处于优化工具1312所容易理解的格式,所以不必再变换到中间网表。优化工具1312在从中间格式变换到传统单元库1324之前执行句法操作。优化的网表使用了为位置和路由工具1320和芯片制造厂或制造设施所理解的传统单元库1324。
参考图15,这是一个使用用于芯片制造厂或制造设施使用的最后网表的ULG ASIC单元库1404的设计流程1500的另一个实施例的方框图。在这个实施例中,为芯片制造厂或制造设施的目标过程而生产出ULG ASIC单元库1404。综合工具1308把行为网表变换到一个使用ULG ASIC单元库1404的经综合的结构网表。优化工具能够处理网表而无须单元库之间的任何变换,使得结果的优化结构网表也可以使用ULG ASIC单元库。
参考图16,这是一个将综合和句法操作组合到一个单个工具1604的设计流程1600的另一个实施例的方框图。综合和优化工具1604从HDL输入工具1304取得行为网表,把它变换到一个使用ULG ASIC单元库1404的中间结构网表。工具1604使用句法操作对中间结构网表进行优化来产生一个使用ULG单元库1404的优化的结构网表。在这个实施例中,HDL列入工具1304使用CHDL。
在某些实施例中,综合和优化工具1604可以没有用于目标ASIC工艺的ULG单元库1404。在这种情况下,综合和优化工具1604将中间网表变换到一个使用传统单元库1324的经优化的网表。
参考图17,这是一个贯穿设计流程1700使用交互直接验证工具1704的设计流程1700的另一个实施例的方框图。验证允许贯穿设计流程全过程对数字设计进行排错。在这个实施例中,交互直接验证工具1704从行为网表通过并直到一个已经定位和路由的结构网表跟踪该设计的进展。HDL输入工具使用CHDL,设计流程使用目标制造工艺的ULG单元库1504。体现在演化的网表中的设计的各种形式都可以使用交互直接验证工具1704。
使用交互直接验证工具可以通过设计流程1700的各个步骤来追踪电路的任何经识别的的部分。举例来说,CHDL行为代码中的一个情况语句可以通过并直到各个结构网表被跟随以发现情况语句是如何实现的。反过来,结构网表的一部分可以被跟随回到前面的结构网表或甚至行为网表。
参考图18,这是一个贯穿设计流程和后续制造使用交互直接验证工具1804的设计流程1800的另一个实施例的方框图。这个实施例显示了制造1808和设计流程中的最后测试1812。制造是在设计彻底地测试过后进行的。在生产后,芯片再进行测试。在最后测试1812的动态分析中测试向量被施加到芯片输入和扫描端口。在一个误差可以在最后测试1812中被隔离到一个引线脚或结点的地方,交互直接验证工具1804可以把和那个故障有关的设计进程显示给工程师。
参考图19,这是一个设计过程1900的实施例的流程图。在设计过程1900的画出部分中,显示了顺序的步骤和测试及再加工步骤。在步骤1904,数字设计用进入工具进入。诸如Verilog,VHDL或CHDL之类的HDL被用来进入被设计电路的行为网表。贯穿设计的进入阶段,在步骤1916中执行动态时序分析来验证行为网表或许正在被正确地制备中。在这个阶段,动态时序分析可能在一个波形模拟工具中进行。用模拟工具设计了各种方案来测试数字设计的各种状态。在步骤1916的时序分析时,问题可能被发现在步骤1906。回到发现问题的步骤1904可以对行为代码进行再加工。过程从步骤1916继续进行到没有发现问题的步骤1908。
在步骤1908进行综合和优化,把行为网表变换到一个优化的结构网表。单元库之间的变换也可以在这个步骤中执行。某些实施例可以以分开的步骤来执行综合和优化。静态和动态时序分析在步骤1912和1916中进行。如果发现问题,可以在步骤1904和步骤1908中进行再加工。步骤1908中的再加工可以包括更改馈送到综合和优化工具1604的参数或纠正库的问题。
一旦总体认可了优化的结构网表,过程继续进行到步骤1920的位置和路由设计。在这个步骤中,迹线长度和驱动要求要更加准确地分析来改进可以在数字设计上执行的验证。再一次在步骤1912和1916中进行静态和动态时序分析来验证布局的设计仍然行为正确。在步骤1906中发现问题的地方,可以在步骤1904,1908,或1920进行再加工。交互直接验证工具1804可以协助数字设计人员发现错误可能在何处引入网表的。布局后没有发现问题的场合,该设计在步骤1924进行制造。
已经描述了几个实施例,业内专业人士一定认识到,可以使用各种不同的改型,替代结构和等效物而不背离本发明的精神。因此,上述说明不应被视为对本发明范围的限制,本发明的范围应由附后的权利要求书限定。

Claims (128)

1.一种设计数字集成电路芯片的方法,其特征在于,该方法包括:
识别要由所述数字集成电路芯片来实现的逻辑结构;
根据为数众多的逻辑运算来表述该逻辑结构,其中为数众多的逻辑运算包括至少5%的选择运算,每个这样的选择运算把为数众多的输入中的至少一个传递出去作为一个输出;和
确定对应于实现这些逻辑运算的的逻辑单元。
2.如权利要求1所述的方法,其特征在于,其中每个这样的选择运算把为数众多的输入中的一个传递出去作为输出。
3.如权利要求1所述的方法,其特征在于,其中一个选择运算的为数众多的输入中的至少一个输入包括一个基本布尔值。
4.如权利要求1所述的方法,其特征在于,其中一个选择运算的为数众多的输入中的至少一个输入包括基本布尔值的一个高阶函数。
5.如权利要求1所述的方法,其特征在于,其中:
至少一个逻辑单元对应于一个选择运算的一个实现;和
这样至少一个的逻辑单元包括一个多路复用器。
6.如权利要求5所述的方法,其特征在于,其中多路复用器包括一个耗尽型晶体管。
7.如权利要求1所述的方法,其特征在于,其中没有一个逻辑单元包括一个具有多于一个单个输入的布尔逻辑元件。
8.如权利要求1所述的方法,其特征在于,还包括执行逻辑运算的句法操作。
9.如权利要求1所述的方法,其特征在于,还包括执行选择运算的句法操作。
10.如权利要求1所述的方法,其特征在于,其中为数众多的逻辑运算包括至少10%的选择运算。
11.如权利要求1所述的方法,其特征在于,其中为数众多的逻辑运算包括至少20%的选择运算,至少30%的选择运算,至少40%的选择运算,至少50%的选择运算,至少60%的选择运算,至少70%的选择运算,至少80%的选择运算,至少90%的选择运算和至少95%的选择运算中的一个。
12.一种设计数字集成电路芯片的方法,其特征在于,该方法包括:
识别要由数字集成电路芯片来实现的逻辑结构;
根据为数众多的逻辑运算来表述该逻辑结构,其中少于50%的该为数众多的逻辑运算包括具有多于单个输入的一个布尔逻辑运算;和
确定对应于实现该逻辑运算的逻辑单元。
13.如权利要求12所述的方法,其特征在于,其中少于25%的为数众多的逻辑运算包括一个具有多于一个的单个输入的布尔逻辑运算。
14.如权利要求12所述的方法,其特征在于,其中少于X%的为数众多的逻辑运算包括一个具有多于一个的单个输入的布尔逻辑运算,其中X从由20,15,10和5组成的数组中选择。
15.如权利要求12所述的方法,其特征在于,其中为数众多的逻辑运算中没有一个包括一个具有多于一个的单个输入的布尔逻辑运算。
16.如权利要求12所述的方法,其特征在于,其中至少一个逻辑单元包括一个耗尽型晶体管。
17.如权利要求12所述的方法,其特征在于,其中至少一个逻辑单元包括一个多路复用器。
18.一种计算机可读存储媒体,其内具体化有用来指导计算机系统操作的计算机可读程序,该计算机系统包括处理器和至少一个输入装置,其特征在于,该计算机可读程序包括用于操作该计算机系统根据下列步骤设计数字电路的指令:
从该至少一个输入装置接收要由该数字电路实现的逻辑结构的表达式;
根据为数众多的用该处理器进行的逻辑运算表述该逻辑结构,其中,该为数众多的逻辑运算包括至少5%的选择运算,每个这样的选择运算将该为数众多的输入中的至少一个传递出去作为输出;和
确定对应于实现用该处理器进行的逻辑运算的逻辑单元。
19.如权利要求18所述的计算机可读存储媒体,其特征在于,每个这样的选择运算传出该为数众多的输入中的一个作为输出。
20.如权利要求18所述的计算机可读存储媒体,其特征在于,其中,计算机可读程序还包括用于执行该逻辑运算的句法操作的指令。
21.如权利要求18所述的计算机可读存储媒体,其特征在于,其中,计算机可读程序还包括用于执行该选择运算的句法操作的指令。
22.如权利要求18所述的计算机可读存储媒体,其特征在于,其中,
计算机可读程序还包括用于从该至少一个输入装置接收命令的指令;和
根据该命令执行该选择运算的句法操作。
23.如权利要求18所述的方法,其特征在于,其中,为数众多的逻辑运算包括至少10%的选择运算。
24.如权利要求18的方法,其特征在于,其中,为数众多的逻辑运算包括至少20%的选择运算,至少30%的选择运算,至少40%的选择运算,至少50%的选择运算,至少60%的选择运算,至少70%的选择运算,至少80%的选择运算,至少90%的选择运算和至少95%的选择运算中的一个。
25.一种优化专用集成电路的方法,其特征在于,该方法包括:
将该专用集成电路的数字设计的第一表述转换到该数字设计的第二表述,该第二表述包括容许表述基本布尔值的高阶函数的为数众多的句法表达式;和
操作该为数众多的句法表达式来形成该数字设计的第三表述。
26.如权利要求25所述的方法,其特征在于,还包括识别在第二表述中的数据和控制。
27.如权利要求26所述的方法,其特征在于,其中,为数众多的句法表达式的操作包括对数据和控制的再赋值。
28.如权利要求27所述的方法,其特征在于,其中,为数众多的句法表达式的操作包括对至少一个句法表达式的作为这样的句法表达式的一个触发器输入的一个控制变量进行赋值。
29.如权利要求25所述的方法,其特征在于,还包括识别在第一表述中的数据和控制。
30.如权利要求25所述的方法,其特征在于,还包括数字设计的第三表述转换到该数字设计的一个第四表述,其中,该第一表述和第四表述是在相同的句法范围内表达的。
31.如权利要求30所述的方法,其特征在于,其中,第一表述和第四表述包括网表。
32.如权利要求31所述的方法,其特征在于,其中,第一表述和第四表述识别用于实现该数字设计的布尔逻辑元件。
33.如权利要求25所述的方法,其特征在于,其中,第二表述和第三表述识别包括用于实现该数字设计的多路复用器的单元元件组。
34.如权利要求33所述的方法,其特征在于,其中,至少一个多路复用器包括一个耗尽型晶体管。
35.如权利要求25所述的方法,其特征在于,其中,该为数众多的句法表达式的操作包括在句法表达式范围内除去逻辑反相。
36.如权利要求25所述的方法,其特征在于,其中,该为数众多的句法表达式的操作包括在句法表达式范围内减少结点数。
37.如权利要求36所述的方法,其特征在于,其中,至少一个结点包括一个扇出结点。
38.一种优化数字设计的方法,其特征在于,该方法包括:
将数字设计的第一表述转换到该数字设计的第二表述,该第二表述包括为数众多的句法表达式,其中,至少20%的句法表达式识别基本布尔值的高阶函数;
在该第一和第二表述的至少一个中识别数据和控制;和
操作该为数众多的句法表达式来形成该数字设计的第三表达式。
39.如权利要求38所述的方法,其特征在于,其中,大多数句法表达式识别基本布尔值的高阶函数。
40.如权利要求38所述的方法,其特征在于,还包括将数字设计的第三表述转换到该数字设计的第四表述,其中第一和第四表述包括网表。
41.如权利要求38所述的方法,其特征在于,其中,第二和第三表述识别包括用于实现该数字设计的多路复用器的单元元件组。
42.如权利要求38所述的方法,其特征在于,其中,为数众多的句法表达式的操作包括在句法表达式范围内除去逻辑反相。
43.如权利要求38所述的方法,其特征在于,其中,为数众多的句法表达式的操作包括在句法表达式范围内减少结点数。
44. 一种计算机可读存储媒体,其内具体化有体现的用来指导计算机系统操作的计算机可读程序,该计算机系统包括处理器和至少一个输入装置,其特征在于,该计算机可读程序包括用于操作该计算机系统根据下列步骤优化数字设计的指令:
从该至少一个输入装置接收该数字设计的第一表述;
将数字设计的所述第一表述转换到该数字设计的第二表述,该第二表述包括为数众多的容许基本布尔值的高阶函数表述的句法表达式;和
操作该为数众多的句法表达式来形成该数字设计的第三表述。
45.如权利要求44所述的计算机可读存储媒体,其特征在于,其中,计算机可读程序还包括用于将数字设计的第三表述转换到该数字设计的一个第四表述,其中,第一表述和第四表述包括网表。
46.如权利要求44所述的计算机可读存储媒体,其特征在于,其中,第一表述和第四表述识别包括用于实现该数字设计的多路复用器的单元元件组。
47.如权利要求44所述的计算机可读存储媒体,其特征在于,其中,第二表述和第三表述识别包括用于实现该数字设计的多路复用器的单元元件组。
48.如权利要求44所述的计算机可读存储媒体,其特征在于,其中,为数众多的句法表达式的操作包括在句法表达式范围内除去逻辑反相。
49.如权利要求44所述的计算机可读存储媒体,其特征在于,其中,为数众多的句法表达式的操作包括在句法表达式范围内减少结点数。
50.如权利要求44所述的计算机可读存储媒体,其特征在于,其中,计算机可读程序还包括识别在第二表述中的数据和控制的指令。
51.如权利要求44所述的计算机可读存储媒体,其特征在于,其中,为数众多的句法表达式的操作包括对数据和控制的再赋值。
52.如权利要求44所述的计算机可读存储媒体,其特征在于,其中:
计算机可读程序还包括用于从至少一个输入装置接收命令的指令;和
根据该命令执行该为数众多的句法表达式的操作来形成该数字设计的第三表述。
53.一种用来建立定制集成电路的ASIC单元库,该ASIC单元库包括:
为数众多的第一单元;
为数众多的第二单元;其中;
    该为数众多的第二单元中的每一个由两个或多个核心单元组成,和
    该ASIC单元库至少5%由第二单元组成。
54.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,ASIC单元库的10%或更多,20%或更多,30%或更多,40%或更多,50%或更多,60%或更多,70%或更多,80%或更多,90%或更多,和95%或更多之一由第二单元组成。
55.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,为数众多的第一单元不包括核心单元。
56.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,为数众多第一单元中的每一个不是完全由核心单元组成的。
57.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,核心单元的总数少于10,20,30,40,50,75和100之一。
58.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,为数众多的第二单元中的每一个具有选择电路,存储器电路和单输入布尔电路三电路中的至少两个电路。
59.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,为数众多的第二单元中的每一个都具有选择电路,存储器电路和缓冲器电路三电路中的至少两个电路。
60.如权利要求59所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,每个选择电路从由一个2到1多路复用器,一个4到1多路复用器,和一个8到1多路复用器组成的的组中选择。
61.如权利要求59所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,每个存储器电路从由一个D触发器,一个可置位的D触发器,一个可复位的D触发器,一个J-K触发器,和一个有扫描能力的触发器组成的组中选择。
62.如权利要求59所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,每个存储器电路从由一个异步触发的触发器,一个上升沿同步触发的触发器,一个下降沿同步触发的触发器,一个同步触发的触发器,和一个边缘触发的触发器组成的组中选择。
63.如权利要求59所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,缓冲器电路从由一个非反相缓冲器,一个反相缓冲器,一个高驱动缓冲器,和一个三态缓冲器组成的组中选择。
64.如权利要求59所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,缓冲器电路从由一个非反相缓冲器,一个反相缓冲器,一个高驱动缓冲器,一个三态缓冲器,和一个带一个允许输入的反相缓冲器组成的组中选择。
65.如权利要求59所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,选择电路传递出为数众多的输入中的一个到它的输出。
66.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,基本上所有核心单元具有至少某个手工布局。
67.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,核心单元基本上具有一致的高度。
68.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,为数众多的第二单元中的至少一个由两个或多个用邻接连接的核心单元组成。
69.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,核心单元由邻接连接起来形成为数众多的第二单元。
70.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中,邻接沿着一个穿过集成电路的纬线使第一核心单元的第一I/O和第二核心单元的第二I/O排齐。
71.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中:
核心单元包括为数众多的不同的选择电路类型,存储器电路类型和缓冲器电路类型,
选择电路类型包括一个输出,
存储器电路类型包括一个存储器输入,
缓冲器电路类型包括一个缓冲器输入,和
输出穿过一排在集成电路上的核心单元和存储器输入和缓冲器输入中的至少一个输入在纬向排齐。
72.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中:
核心单元包括为数众多的不同的选择电路类型,存储器电路类型和缓冲器电路类型,
存储器电路类型包括一个存储器输出,
缓冲器电路类型包括一个缓冲器输入,和
存储器输出穿过一排在集成电路上的核心单元和缓冲器输入在纬向排齐。
73.如权利要求53所述的用来建立定制集成电路的ASIC单元库,其特征在于,其中:
核心单元包括为数众多的不同的存储器电路类型,和
带一个时钟输入的存储器电路类型穿过一排在集成电路上的核心单元在纬向排齐时钟输入。
74.一种用在具有数字逻辑的电路中的集成电路单元库,该集成电路包括:
为数众多的集成电路单元库的第一百分比的第一单元;
为数众多的集成电路单元库的第二百分比的第二单元;其中:
为数众多的第二单元中的每一个由一个选择电路组成,
第二百分比大于集成电路单元库的5%。
75.如权利要求74所述的用在具有数字逻辑的电路中的集成电路单元库,其特征在于,其中,第二百分比在由10%或更多,20%或更多,30%或更多,40%或更多,50%或更多,60%或更多,70%或更多,80%或更多,90%或更多,和95%或更多组成的组中选择。
76.如权利要求74所述的用在具有数字逻辑的电路中的集成电路单元库,其特征在于,其中,核心单元具有基本上一致的高度。
77.如权利要求74所述的用在具有数字逻辑的电路中的集成电路单元库,其特征在于,其中,为数众多的第二单元中的至少一个单元是由两个或多个用邻接连接起来的核心单元。
78.如权利要求74所述的用在具有数字逻辑的电路中的集成电路单元库,其特征在于,其中,核心单元被邻接连接起来形成为数众多的第二单元。
79.如权利要求74所述的用在具有数字逻辑的电路中的集成电路单元库,其特征在于,其中,邻接沿着穿过一个集成电路的一个纬线把一个第一核心单元的第一I/O和一个第二核心单元的第二I/O排齐。
80.一种用在具有数字逻辑的电路中的集成电路单元库,该集成电路包括:
为数众多的集成电路单元库的第一百分比的第一单元;
为数众多的集成电路单元库的第二百分比的第二单元,
为数众多的用来形成所述为数众多的第二单元的核心单元,其中所述为数众多第二
单元中的至少一些单元包括至少两个通过邻接耦合到一起的核心单元。
81.如权利要求80所述的用在具有数字逻辑的电路中的集成电路单元库,其特征在于,其中,核心单元具有基本上一致的高度。
82.如权利要求80所述的用在具有数字逻辑的电路中的集成电路单元库,其特征在于,其中,邻接沿着穿过一个集成电路的一个纬线把一个第一核心单元的第一I/O和一个第二核心单元的第二I/O排齐。
83.一种用于操作数字电路网表的数字设计方法,该数字设计方法包括:
加载第一网表,其中该第一网表由第一为数众多的核心单元组成的第一为数众多的基本单元组成;
操作该第一网表来建立第二网表,其中第二网表是由第二为数众多的核心单元组成的第二为数众多的基本单元组成,其中:
所述第一和第二为数众多的核心单元的百分比是选择电路,和
所述第二为数众多基本单元所占芯片面积小于所述第一为数众多基本单元所占芯片面积;和
储存该第二网表。
84.如权利要求83所述的操作数字电路网表的数字设计方法,进一步包括下列步骤:
至少通过用一些布尔单元替代第一为数众多的基本单元的来将使用一种语言格式的网表变换到第一网表;
至少通过替代一些用于布尔单元的第二为数众多的基本单元来将第二网表变换到一个第三网表,其中第三网表也使用该语言格式。
85.如权利要求83所述的操作数字电路网表的数字设计方法,其特征在于,其中,另一个第一和第二为数众多的核心单元的百分比是存储器电路。
86.如权利要求83所述的操作数字电路网表的数字设计方法,其特征在于,其中,另一个第一和第二为数众多的核心单元的百分比是缓冲器电路。
87.如权利要求83所述的操作数字电路网表的数字设计方法,其特征在于,其中,每一个选择电路包括一个多路复用器。
88.如权利要求83所述的操作数字电路网表的数字设计方法,其特征在于,其中,第一和第二为数众多的核心单元中的不同核心单元的总数少于10,20,30,40,50,75,和100中的一个。
89.如权利要求83所述的操作数字电路网表的数字设计方法,进一步包括将一个布尔运算变换到一个选择运算的步骤,其中选择运算是一个函数,其中该函数所有为数众多的输入可以交替地传递到该函数的一个输出。
90.如权利要求83所述的操作数字电路网表的数字设计方法,其特征在于,其中,百分比从由2%或更多,5%或更多,10%或更多,20%或更多,30%或更多,和40%或更多组成的组中选择。
91.如权利要求83所述的操作数字电路网表的数字设计方法,进一步包括一个接收一个或多个优化参数的步骤,该优化参数影响根据该优化参数的操作步骤。
92.如权利要求91所述的操作数字电路网表的数字设计方法,其特征在于,其中,优化参数影响到用于操作步骤中的可能的核心单元的子集的选择。
93.如权利要求83所述的操作数字电路网表的数字设计方法,其特征在于,其中:第二网表由为数众多的句法表达式组成,
为数众多的句法表达式的一个百分比识别基本布尔值的一个高阶函数,
该百分比从由10%或更多,20%或更多,30%或更多,40%或更多,50%或更多,和60%或更多组成的组中选择。
94.如权利要求83所述的操作数字电路网表的数字设计方法,其特征在于,其中,操作步骤优化了功耗,漏电流,扇出,芯片面积,掩膜数,工艺步骤数,产量,电容,电感,电阻,和故障诸因素中的至少一个因素。
95.一种调整数字电路网表的数字设计方法,该数字设计方法包括:
加载第一网表,其中第一网表由第一为数众多的核心单元组成的第一为数众多的基本单元组成;
操作该第一网表来建立第二网表,其中第二网表由第二为数众多的核心单元组成的第二为数众多的基本单元组成,其中:
每个第一和第二为数众多的核心单元从由选择电路,存储器电路和缓冲器电路组成的组中选择,和
第二为数众多的核心单元中的核心单元少于第一为数众多的核心单元中的核心单元;和
储存该第二网表。
96.如权利要求95所述的调整数字电路网表的数字设计方法,进一步包括下列步骤:
至少通过用一些布尔单元替代第一为数众多的基本单元将使用一种语言格式的网表变换到第一网表;
至少通过替代一些用于布尔单元的第二为数众多的基本单元将第二网表变换到一个第三网表,其中第三网表也使用该语言格式。
97.如权利要求95所述的调整数字电路网表的数字设计方法,其特征在于,其中,每个选择电路包括一个多路复用器。
98.如权利要求95所述的调整数字电路网表的数字设计方法,进一步包括一个接收一个或多个优化参数的步骤,该优化参数影响根据该优化参数的操作步骤。
99.如权利要求98所述的调整数字电路网表的数字设计方法,其特征在于,其中,优化参数影响到用于操作步骤中的可能的核心单元的子集的选择。
100.如权利要求95所述的调整数字电路网表的数字设计方法,其特征在于,其中,操作步骤优化了功耗,漏电流,扇出,芯片面积,掩膜数,工艺步骤数,产量,电容,电感,电阻,和故障诸因素中的至少一个因素。
101.一种操作一个数字电路网表的数字设计方法,该数字设计方法包括:加载数字电路网表;
至少通过用第一为数众多的基本单元替代一些布尔单元将具有一种语言格式的数字电路网表变换到第一网表,其中第一网表由第一为数众多的核心单元组成的第一为数众多的基本单元组成;
操作该第一网表来建立第二网表,其中第二网表由第二为数众多的核心单元组成的第二为数众多的基本单元组成,其中:
所述第一和第二为数众多的核心单元的百分比是选择电路,和
所述第二为数众多的基本单元所占芯片面积小于所述第一为数众多的基本单元所占的芯片面积;
至少通过用布尔单元替代一些第二为数众多的基本单元将第二网表变换到第三网表,其中该第三网表也使用该语言格式;和
储存该第三网表。
102.如权利要求101所述的操作数字电路网表的数字设计方法,进一步包括将行为构造综合到布尔单元中去的一个步骤。
103.如权利要求101所述的操作数字电路网表的数字设计方法,其特征在于,其中,每个选择电路包括一个多路复用器。
104.如权利要求101所述的操作数字电路网表的数字设计方法,进一步包括一个接收一个或多个优化参数的步骤,该优化参数影响根据该优化参数的操作步骤。
105.如权利要求104所述的操作数字电路网表的数字设计方法,其特征在于,其中,优化参数影响到用于操作步骤中的可能的核心单元的子集的选择。
106.如权利要求101所述的操作数字电路网表的数字设计方法,其特征在于,其中,操作步骤优化了功耗,漏电流,扇出,芯片面积,掩膜数,工艺步骤数,产量,电容,电感,电阻,和故障诸因素中的至少一个因素。
107.一种在结构网表,行为网表,硬件描述语言网表,全定制ASIC,半定制ASIC,IP核心,集成电路,混合芯片,一个或多个掩膜,FPGA,和电路插件板组的至少之一中实施的数字电路设计,该数字电路设计包括:
包括数字电路设计的第一百分比的为数众多的第一子电路;和
包括数字电路设计的第二百分比的为数众多的第二子电路,其中:
每个第二子电路基本上由一个或多个核心电路组成,
该核心电路由为数众多的选择电路组成,而第二百分比至少是5%。
108.如权利要求107所述的具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中的数字电路设计,其特征在于,其中每个为数众多的第二子电路是一个基本单元。
109.如权利要求107所述的具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中的数字电路设计,其特征在于,其中第二百分比从一个由10%或更多,20%或更多,30%或更多,40%或更多,50%或更多,60%或更多,70%或更多,80%或更多,90%或更多,和95%或更多组成的组中选择。
110.如权利要求107所述的具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中的数字电路设计,其特征在于,其中每个核心电路从一个由一个选择电路,一个存储器电路和一个单输入布尔电路组成的组中选择。
111.如权利要求107所述的具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中的数字电路设计,其特征在于,其中每个核心电路从由一个选择电路,一个存储器电路和一个缓冲器电路组成的组中选择。
112.如权利要求107所述的具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中的数字电路设计,其特征在于,其中每个选择电路包括一个多路复用器。
113.如权利要求107所述的具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中的数字电路设计,其特征在于,其中数字电路设计中的核心电路总数少于10,20,30,40,50,75,和100中的一个数。
114.如权利要求107所述的具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中的数字电路设计,其特征在于,其中为数众多的第一子电路不包括核心电路。
115.一种以实体和/或图表形式体现的数字电路设计,该数字电路设计包括:
包括数字电路设计的第一百分比的为数众多的第一子电路;和
包括数字电路设计的第二百分比的为数众多的第二子电路,其中:
    每一个第二子电路基本上由一个或多个核心电路组成,
    每一个核心电路从由选择电路类型,存储器电路类型,和一个缓冲器电路类
型组成的组中选择,和第二百分比至少是5%。
116.如权利要求115所述的以实体和/或图表形式体现的数字电路设计,其特征在于,其中,数字电路设计具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中。
117.如权利要求115所述的以实体和/或图表形式体现的数字电路设计,其特征在于,其中,第二百分比从由10%或更多,20%或更多,30%或更多,40%或更多,50%或更多,60%或更多,70%或更多,80%或更多,90%或更多,和95%或更多组成的组中选择。
118.如权利要求115所述的以实体和/或图表形式体现的数字电路设计,其特征在于,其中,每个核心电路从由一个选择电路,一个存储器电路,和一个单输入布尔电路组成的组中选择。
119.如权利要求115所述的以实体和/或图表形式体现的数字电路设计,其特征在于,其中,每个核心电路从由一个选择电路,一个存储器电路,和一个缓冲器电路组成的组中选择。
120.如权利要求115所述的以实体和/或图表形式体现的数字电路设计,其特征在于,其中,选择电路类型的每个选择电路包括一个多路复用器。
121.如权利要求115所述的以实体和/或图表形式体现的数字电路设计,其特征在于,其中,核心电路总数少于10,20,30,40,50,75,和100中的一个数。
122.如权利要求115所述的以实体和/或图表形式体现的数字电路设计,其特征在于,其中,为数众多的第一子电路不包括核心电路。
123.一种描述为数众多的单元的数字电路设计,其中,该数字电路设计体现在计算机信号中,该数字电路设计包括:
包括对第一基本单元和该第一基本单元的第一互连的第一描述的第一代码节段;
包括对第二基本单元和该第二基本单元的第二互连的第二描述的第二代码节段,其中:
第一描述指出选择电路类型,存储器电路类型,和缓冲器电路类型中的哪一种电路类型包含第一基本单元,和
第二描述指出选择电路类型,存储器电路类型,和缓冲器电路类型中的哪一种电路类型包含第二基本单元。
124.如权利要求123所述的描述为数众多的单元的数字电路设计,其中数字电路设计体现在一个计算机信号中,其特征在于,其中数字电路设计具体体现在一个结构网表,一个行为网表,一个硬件描述语言网表,一个全定制ASIC,一个半定制ASIC,一个IP核心,一个集成电路,一个混合芯片,一个或多个掩膜,一个FPGA,和一个电路插件板组的诸因素中的至少一个因素中。
125.如权利要求123所述的描述为数众多的单元的数字电路设计,其中数字电路设计体现在一个计算机信号中,其特征在于,其中第一互连耦合到第二互连。
126.如权利要求123所述的描述为数众多的单元的数字电路设计,其中数字电路设计体现在一个计算机信号中,其特征在于,其中选择电路类型的每个电路包括一个多路复用器。
127.如权利要求123所述的描述为数众多的单元的数字电路设计,其中数字电路设计体现在一个计算机信号中,其特征在于,其中选择电路类型,存储器电路类型和缓冲器电路类型的电路总数少于10,20,30,40,50,75,和100中的一个数。
128.如权利要求123所述的描述为数众多的单元的数字电路设计,其中数字电路设计体现在一个计算机信号中,其特征在于,其中为数众多的第一子电路不包括核心电路。
CNA028158261A 2001-06-15 2002-06-17 具有选择运算符的数字电路 Pending CN1541364A (zh)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US29883201P 2001-06-15 2001-06-15
US60/298,832 2001-06-15
US10/172,742 US6829750B2 (en) 2001-06-15 2002-06-14 Pass-transistor very large scale integration
US10/172,746 2002-06-14
US10/172,745 2002-06-14
US10/172,744 US6779156B2 (en) 2001-06-15 2002-06-14 Digital circuits using universal logic gates
US10/172,743 2002-06-14
US10/172,743 US6779158B2 (en) 2001-06-15 2002-06-14 Digital logic optimization using selection operators
US10/172,494 US6792589B2 (en) 2001-06-15 2002-06-14 Digital design using selection operations
US10/172,744 2002-06-14
US10/172,746 US6993731B2 (en) 2001-06-15 2002-06-14 Optimization of digital designs
US10/172,494 2002-06-14
US10/172,742 2002-06-14
US10/172,745 US6892373B2 (en) 2001-06-15 2002-06-14 Integrated circuit cell library

Publications (1)

Publication Number Publication Date
CN1541364A true CN1541364A (zh) 2004-10-27

Family

ID=29273962

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA028158261A Pending CN1541364A (zh) 2001-06-15 2002-06-17 具有选择运算符的数字电路

Country Status (4)

Country Link
EP (1) EP1407392A4 (zh)
CN (1) CN1541364A (zh)
AU (1) AU2002344835A1 (zh)
WO (1) WO2002103757A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104965937A (zh) * 2014-03-31 2015-10-07 德克萨斯仪器股份有限公司 经由布尔可满足性的设备引脚复用配置求解和代码生成
CN105404728B (zh) * 2015-11-03 2018-12-21 京微雅格(北京)科技有限公司 一种基于fpga芯片多控制信号的布局方法
US11099814B2 (en) 2016-10-12 2021-08-24 Semiconductor Energy Laboratory Co., Ltd. Neural network semiconductor device and system using the same
US11471623B2 (en) 2012-02-21 2022-10-18 Respira Therapeutics, Inc. Powder dispersion methods and devices
CN115952754A (zh) * 2022-10-11 2023-04-11 北京云枢创新软件技术有限公司 用于生成标准单元目标显示结构的数据处理系统
CN116804865A (zh) * 2023-08-28 2023-09-26 成都飞机工业(集团)有限责任公司 一种三轴自动化程编特征识别与刀轨生成方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6892373B2 (en) 2001-06-15 2005-05-10 Science & Technology Corporation At Unm Integrated circuit cell library
US6993731B2 (en) 2001-06-15 2006-01-31 Science & Technology Corporation @ Unm Optimization of digital designs

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5051917A (en) * 1987-02-24 1991-09-24 International Business Machines Corporation Method of combining gate array and standard cell circuits on a common semiconductor chip
US5225991A (en) * 1991-04-11 1993-07-06 International Business Machines Corporation Optimized automated macro embedding for standard cell blocks
US5349659A (en) * 1992-01-23 1994-09-20 Cadence Design Systems, Inc. Hierarchical ordering of logical elements in the canonical mapping of net lists
US5596742A (en) * 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5526276A (en) * 1994-04-21 1996-06-11 Quicklogic Corporation Select set-based technology mapping method and apparatus
US5649165A (en) * 1995-01-31 1997-07-15 Fujitsu Limited Topology-based computer-aided design system for digital circuits and method thereof
US5953519A (en) * 1995-06-12 1999-09-14 Fura; David A. Method and system for generating electronic hardware simulation models
US5805462A (en) * 1995-08-18 1998-09-08 Vlsi Technology, Inc. Automatic synthesis of integrated circuits employing boolean decomposition
US5712806A (en) * 1995-10-30 1998-01-27 International Business Machines Corporation Optimized multiplexer structure for emulation systems
US5987086A (en) * 1996-11-01 1999-11-16 Motorola Inc. Automatic layout standard cell routing
US6185719B1 (en) * 1997-06-06 2001-02-06 Kawasaki Steel Corporation Pass-transistor logic circuit and a method of designing thereof
US6275973B1 (en) * 1998-10-30 2001-08-14 Lsi Logic Corporation Integrated circuit design with delayed cell selection
US6282695B1 (en) * 1998-12-16 2001-08-28 International Business Machines Corporation System and method for restructuring of logic circuitry
US6467074B1 (en) * 2000-03-21 2002-10-15 Ammocore Technology, Inc. Integrated circuit architecture with standard blocks
US7225423B2 (en) * 2000-06-30 2007-05-29 Zenasis Technologies, Inc. Method for automated design of integrated circuits with targeted quality objectives using dynamically generated building blocks
US20020087939A1 (en) * 2000-09-06 2002-07-04 Greidinger Yaacov I. Method for designing large standard-cell based integrated circuits

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11471623B2 (en) 2012-02-21 2022-10-18 Respira Therapeutics, Inc. Powder dispersion methods and devices
CN104965937A (zh) * 2014-03-31 2015-10-07 德克萨斯仪器股份有限公司 经由布尔可满足性的设备引脚复用配置求解和代码生成
CN104965937B (zh) * 2014-03-31 2020-01-14 德克萨斯仪器股份有限公司 经由布尔可满足性的设备引脚复用配置求解和代码生成
CN105404728B (zh) * 2015-11-03 2018-12-21 京微雅格(北京)科技有限公司 一种基于fpga芯片多控制信号的布局方法
US11099814B2 (en) 2016-10-12 2021-08-24 Semiconductor Energy Laboratory Co., Ltd. Neural network semiconductor device and system using the same
TWI755428B (zh) * 2016-10-12 2022-02-21 日商半導體能源研究所股份有限公司 半導體裝置及使用該半導體裝置的系統
US11755286B2 (en) 2016-10-12 2023-09-12 Semiconductor Energy Laboratory Co., Ltd. Neural network semiconductor device and system using the same
CN115952754A (zh) * 2022-10-11 2023-04-11 北京云枢创新软件技术有限公司 用于生成标准单元目标显示结构的数据处理系统
CN115952754B (zh) * 2022-10-11 2023-11-24 北京云枢创新软件技术有限公司 用于生成标准单元目标显示结构的数据处理系统
CN116804865A (zh) * 2023-08-28 2023-09-26 成都飞机工业(集团)有限责任公司 一种三轴自动化程编特征识别与刀轨生成方法
CN116804865B (zh) * 2023-08-28 2023-12-08 成都飞机工业(集团)有限责任公司 一种三轴自动化程编特征识别与刀轨生成方法

Also Published As

Publication number Publication date
EP1407392A4 (en) 2006-06-14
EP1407392A2 (en) 2004-04-14
AU2002344835A1 (en) 2003-01-02
WO2002103757A3 (en) 2003-11-06
WO2002103757A2 (en) 2002-12-27

Similar Documents

Publication Publication Date Title
CN100347710C (zh) 多端线网插入缓冲器优化时延的标准单元总体布线方法
CN1049539C (zh) 同步电路
CN100336066C (zh) 电阻值计算方法
CN1253790C (zh) 指令调度方法和指令调度设备
CN1230767C (zh) 数字内容作成方法
CN1369114A (zh) 修改集成电路的方法
CN1319210A (zh) 可配置的硬件块的配置方法
CN1437083A (zh) 基准电压发生电路和方法、显示驱动电路、显示装置
CN1574289A (zh) 半导体集成电路装置操作分析方法和系统及最优设计方法
CN1046625A (zh) 在结构式文件中制作、扩展及收缩组元标记的技术
CN1558348A (zh) 将基于模式的分级数据结构转换成平面数据结构的方法以及系统
CN1295686A (zh) 分析基于状态的系统模型的方法和设备
CN100351639C (zh) 半导体集成电路验证方法和测试模式准备方法
CN1783075A (zh) 用于显示网络数据的方法、设备、处理器配置
CN1855306A (zh) 非易失性半导体存储器及其控制方法
CN1680820A (zh) 半导体试验装置的校准方法
CN1941616A (zh) 差动放大器、数字模拟变换器以及显示装置
CN1529864A (zh) 在布局中考虑到斜布线的方法和装置
CN1011824B (zh) 测试集成电路用的测试向量的产生方法
CN1873625A (zh) 一种基于功能覆盖率的随机激励的自动产生方法
CN1258729C (zh) 基于虚拟模块的大规模混合模式布图方法
CN1541364A (zh) 具有选择运算符的数字电路
CN1629760A (zh) 使输出电压稳定化的电流放大电路和具备其的液晶显示装置
CN1526200A (zh) 电平变换电路
CN1786968A (zh) Fpga逻辑单元的功能模型和通用性逻辑单元装箱算法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20041027