CN102902839A - 管理集成电路设计的装置和方法 - Google Patents
管理集成电路设计的装置和方法 Download PDFInfo
- Publication number
- CN102902839A CN102902839A CN2012102866847A CN201210286684A CN102902839A CN 102902839 A CN102902839 A CN 102902839A CN 2012102866847 A CN2012102866847 A CN 2012102866847A CN 201210286684 A CN201210286684 A CN 201210286684A CN 102902839 A CN102902839 A CN 102902839A
- Authority
- CN
- China
- Prior art keywords
- design
- user
- assembly
- storehouse
- information
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit 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)
- Stored Programmes (AREA)
Abstract
本发明是关于一种管理集成电路设计的装置和方法,包括对设计的配置、设计参数和设计功能的管理,其中设计者能够控制定制指令或其他设计元素。在一个实施例中,使用了面向对象仿真技术(202、204)。为了增强在设计、层次结构和设计过程中的其他方面中关于与其他组件的接口功能,运用了设计迭代、组件封装、人类可读文件格式的使用、可扩展动态GUI和工具箱及其他特点。
Description
本申请是国际申请号为PCT/US03/13014、中国申请号为03815223.1的名称为“管理集成电路设计的装置和方法”的专利申请的分案申请,原申请的国际申请日是2003年04月25日。
优先权和相关申请
本申请要求2002年4月25日提交的名称为《管理集成电路设计的装置和方法》美国临时专利申请60/375,997的优先权,该申请包括附录在内的全部内容作为参考并入本申请。本申请与1999年10月14日提交的名称为《管理半导体设计的配置和功能的方法和装置》的共同审查中的美国专利申请09/418,663是相关申请,该申请要求1998年10月14日提交的同名美国临时专利申请号60/104,271的优先权,该申请也全文并入本申请。
版权
本专利文件的部分公开内容涉及受版权保护的内容。版权所有人对任何人对出现在专利商标局专利文献或记录中的专利文件或专利公开内容进行复制,但除此以外版权所有人保留所有版权。
技术领域
本发明涉及半导体设计和集成电路的计算机自动化设计领域,特别是涉及一种管理系统设计中的配置、设计参数和功能性的方法以及一种可以由设计者控制的定制指令或其他设计元素的管理集成电路设计的装置和方法。
背景技术
目前已有若干种用于集成电路(integrated circuit,IC)设计的计算机辅助设计(computer aided design,CAD)工具。此类计算机辅助或计算机自动化的IC设计工具中可包括具有综合与优化处理功能的模块或程序。通常,综合(synthesis)被定义为一种由高一级抽象层次向低一级抽象层次转化的方法,可包括任何必要的各级抽象层次的综合技术的组合。所谓“行为综合”(behavioral synthesis)是指一种设计工具,它将所需要的IC的行为(例如:输出、输出和函数)输入一计算机程序,从而设计出能够表现出所需要的行为的器件。这类工具与人工布线等人工设计方法相比而言,能够使IC设计者在在非常短的时间内设计出更为复杂的器件,比如具有上百万个逻辑门的器件,而很少产生或根本没有错误。
不同抽象层次的综合处理的例子包括体系结构层次的综合(architectural level synthesis)和逻辑层次的综合(logic level synthesis),这两种综合都可应用于IC设计过程中。
体系结构层次的综合主要涉及电路的宏观结构,采用功能块的方式(包括与其相互连接和内部功能相关的信息)。体系结构层次的综合包括寄存器传送级(register transfer level,RTL)的综合,可以包含多位元件如寄存器和算子。
逻辑层次的综合涉及门电路层次的设计。通过逻辑层次的综合确定电路的微观结构并将逻辑模型转化为实际的库单元(library cell)之间的内部连接。逻辑层次的综合的产物就是逻辑器件及其互相连接的连线表。目前市场上已经有若干供货商可以提供商业逻辑层次综合器(所谓综合“引擎”)。
综合过程通常是首先由设计者根据目标器件所要实现的功能编制出一套IC规范(specification)。然后利用硬件描述语言(hardware descriptionlanguage,HDL)将这些规范编码。硬件描述语言包括位于纽约的IEEE提供的(VHSIC硬件描述语言)或位于加洲圣克拉拉的凯登斯设计系统公司(Cadence Design Systems,Inc)提供的IC规范规定IC所需要的输入和输出以及需要的功能,如可使用内存的大小或时钟脉冲速度。然后设计者通过HDL生成一个“连线表”(netlist),该连线表包括门电路及其连接线路的列表,是对所需IC的电路系统的描述。最终将设计方案编译并制造出用于生产物理IC的掩模。图1是现有技术中基于综合法的IC设计和制造方法。另外可参考2001年11月27日授予Dangelo等人的名为《生成并验证电子设计低层次描述的方法和系统》的美国专利6,324,678。该专利公开了一种从高层次描述和规范生成复杂数字器件的结构描述的方法。该方法利用系统技术将原始的、高层次描述的意图中所包含语义的一致性映射并执行。设计活动实际上是一系列不同层次设计描述的转化操作。获取某一层次的指定含义(语义)和形式软件操作(formal software manipulations)并导出下一描述符合设计目标的硬件的更为具体的层次。该方法的主要特点在于:获取用户的构思、意图、规范、描述、限制和权衡;体系结构划分;高层次的仿真假设分析;规模估计;定时估计;体系结构权衡;有执行估计的概念设计;时序收敛。
遗憾的是,上述现有技术尽管十分适合于较简单的器件和单一元件,但是对于自动化IC设计还存在若干局限,特别是当用于设计更为复杂的IC如CPU处理器时局限性就更大。问题的原因是要是,由于必需在设计和综合之前事先将指令集确定,而不能在设计和综合的过程中对指令集进行修改,从而大大减少在设计过程中和完成后能够提供给设计者的灵活性和能力。这些问题在为用户提供定制CPU设计时尤为突出,这些用户需要将处理器集成到他们的系统集成电路设计中。特别是在综合的过程中,由于不能够考虑使用某些指令、函数或元件,就要求设计者试图在设计中对这些元件进行“改形”,这样常常会导致兼容性或其他方面的问题。这一缺陷还大大限制了对某些参数(如晶圆尺寸和时钟脉冲速度)的设计优化,因为设计结果必然是门数的上升,并且不具有针对所需体系结构和体系结构的定制指令。还有,上述现有技术不能对整个处理器进行HDL模型的自动汇编并仿真其操作。而具有这一能力会大大提高设计的效率和效果。
针对上述提供用户配置功能和增加可扩展生的问题,已经提出了若干种解决方案。其中最引人注意的是由本申请的受让人开发并销售的“ARChitect”用户可配置设计环境。它是第一个真正的用户可配置交互式处理器设计环境。ARChitect配置工具具有“指向并点击”的用户界面,能够帮助定制基础处理器配置。开发人员可以通过菜单一步一步进入并选择各种选项增加新指令、配置指令/数据高速缓存、选择DSP扩展、增加暂存器、配置中断、整合外围设备,以及定制许多其他基础处理器体系结构的特性。ARChitect工具能够显示出用户设计的框图和程序员的模型,并向开发人员报告需要的门数。ARChitect工具可以为定制设计自动生成RTL文件、综合脚本和HTML格式文件。ARChitect还与其他开发工具兼容,例如:(1)MetaWare High C/C++TM Tool Suite,该工具提供High C++编译器、连接器、汇编器、效能评测器、和SeeCodeTM任务相关调试器,外加ARC处理器的指令集仿真器;(2)ARC信号可视化工具(SVT),该工具可以显示信号处理算法生成的可视图象,还可以大大提高带有DSP扩展配置的ARC处理器上DSP软件的开发和测试的速度;(3)CASSEIA(Cycle-Accurate SignalSimulator with Extensible Instruction Architecture)开发和验证工具。
2002年11月5授予Killian等人的名称为《设计可配置处理器的自动化处理器生成系统及其方法》的美国专利6,477,683公开了另一种有关处理器设计的方法。该专利中描述了一种自动化处理器设计工具。该工具包括:为开发目标指令集的可配置定义而使用一种标准化语言对用户定制的处理器指令集扩展的描述;实现该指令集所必需的电路系统的HDL描述;开发工具,如编译器、汇编器、调试器和仿真器,其可以用于为该处理器开发应用软件并对其进行检验。处理器电路系统的实现可以对几个不同方面的标准进行优化,如面积、耗电、速度等。处理器配置被开发出来后,可以对其进行测试并将其输入改进后的系统,以便对处理器的实现进行反复优化。
类似地,2002年11月5日授予Killian等人的名称为《为制造目标指令集的可配置定义而在微处理器设中加入标准语言中定义的复杂指令扩展、实现该指令集所必须的电路的HDL描述和该指令集的开发和验证工具》的美国专利No.6,477,697中,也公开一种自动化处理器设计工具。该专利中公开的标准语言能够处理修改处理器状态或使用可配置处理器的指令集扩展。
上述6,477,683号专利中提出的“描述”语言(TIE或Tensilica指令扩展)非常复杂,并且能够定义的指令类型有限,TIE定义的指令不能够对专用寄存器中储存的信息进行存取或修改,如处理器状态,这样就大大限制了能够可获得指令的范围,从而限制了可获利的性能的提高。
现有技术中有许多所谓“硬件/软件协同设计”的方法。举例来说,已经有人提出了很多种处理器的行为(例:指令集)和结构描述。例如,刊登在1998年9月的《技术报告》第98-29号中的“EXPRESSION:An ADL forSystem Level Design Exploration”,1996年10月Zivoinovic等人发表的“LISA-Machine Description Language and Generic Machine Model forHW/SW Co-Dsign”,以及Hadjiyiannis等人在1997年DAC发表的“ISDL:AnInstruction Se Description Language for Retargetability”。Cadence nML语言也较引人注目;参见ACM1997年6月第303-306页中Hartoog等人的“Generation of Software Tools From Processor Descriptions forHardware/Software Codesign”。
Leupers等人在“Design Automation for Embedded Systems”1998年1月第1号第3卷中发表的“Retargetable Code Generation based on StructuralProcessor Descriptions”中描述了一种有些类似的协同设计方法,其中描述了MIMOLA/TREEMOLA设计语言和工具箱。MIMOLA与在很大程度上适合于精确周期(cycle-accurate)行为(指令)仿真和仿真的Expression、nML、LISA或ISDL相比,更接近于硬件描述语言(如VHDL)。
1999年9月7日授予Fritz的名称为《通过机器描述生成ISA仿真器和汇编器的生成方法》的美国专利No.5,949,993公开了一种生成用于软件和硬件开发的软件开发工具的方法。该发明通过对可编程电子器件如微处理器的硬件描述和语法描述进行处理,并生成一套对硬件和/或软件开发人员非常有用的开发工具。这些工具包括,例如,仿真器、汇编器、解码器、行为语义和属性语法。但是,Fritz并没有从为设计的硬件描述语言表示增加扩展和其他特性的角度明确提出用户可配置性。Fritz的发明在本质上是利用硬件描述模型(如VHDL模型)作为生成软件工具的输入。
上述解决方案尽管各具特色,但对于用户定制处理器的设计来说仍非最优方案。特别是这些解决方案往往极其复杂并且需要“手工”定制,从而使其对于不同设计任务和目标的灵活性和适应性大打折扣,特别是当这些设计任务被分配给两个或以上的团体或个人时尤其如此。
上述现有解决方案在操作上也受到很大限制,也就是说,为了使设计生成过程便于管理,作为基础的设计在一开始就要受到限制,并且尽量将设计变量保持到最小。但是这样做就会使设计者希望拓展与前述“受限制的”模式的设计空间时受到限制。
还有,设计工具配置基本上是固定的,用户不能针对其特定任务或项目改变或扩展设计工具配置。
基于上述原因,需要提供一种对集成电路设计中的配置、设计参数和功能性进行管理的方法及相关装置,并且可以由用户以交互的形式改变集成电路设计中的配置,包括处理器和类似部件的指令集。特别是这种经过改进的方法能够让用户速度地选出需要的设计属性(如扩展指令、缓冲配置等)并生成基于这些选择的设计。对这些生成的设计可以通过交互的方式以最短的时间和最小的努力进行评估并按照需要进行修改。这种改进的设计装置还可以在配置上具有高度灵活性,从而允许用户对需要的设计环境和IC设计本身进行扩展,如在环境中加入可以增加附加的功能的插件或附加工具。这种软件环境还会使设计过程更为透明(特别是对于技术不熟练者),从而增加系统的潜在用户。它还与其他环境兼容,从而允许个人设计者通过其他环境、设备和网络共亨信息。
发明内容
本发明通过利用一交互式计算机程序提供对集成电路设计中的配置、设计参数和函数进行管理的自动化手段,从而满足上述需求。
根据本发明的第一个方面,提出了一种集成电路设计中对配置、设计参数和函数进行管理的方法。和现有技术相比,该方法采用“迭代的”设计过程,使设计者能够将他们的扩展组件(如扩展指令或外围组件)集成到软件库中。这就意味着通过由软件库中建立设计描述,增加的扩展组件被自动地集成到编译中。
根据本发明的第二个方面,前述的方法还可以进一步包括在一个在微型计算机等类似设备中使用的计算机程序中,用于设计和管理集成电路的配置。在一实施例中,该计算机程序包括一能够执行各种相关函数集或函数群的组件的面向对象的环境。在一变化例中,使用可扩展置标语言(XML)、Java和Javascript的结合用于存储静态和动态数据。
在本发明的第二实施例中,一种现有的非面向对象程序和一用于对该非面向对象程序进行翻新而改进的“工具箱”模块进行配置。
根据本发明的第三个方面,提出了一种利用上述方法对集成电路进行生成、仿真、和/或综合的装置。在本发明第一实施例中,使用一包含有微处理器、显示和输入设备的微型计算机运行上面提及的计算机程序,使设计者在设计、仿真和/或综合过程中可以与该程序进行交互。该微型计算机还进一步包括一存储设备和网络接口,用于配置了前述计算机程序的微型计算机之间的信息存储、检索和共亨。
根据本发明的第四个方面,提出了一种在具有多个组件(component)的集成电路设计内部生成层次结构(hierarchy)的方法。该方法主要包括:至少为部分上述多个组件提供代码,每个组件都有一个第一类型的节点(site);在上述多个没有代码的组件上定义一个第二类型节点
根据本发明的第五个方面,提出了一种包含有多个组件的创建集成电路编译的方法。该方法主要包括以下步骤:向多个组件中的至少若干个组件提供代码,每个组件都具有一个第一类型节点;为多个组件中没有代码的组件规定一第二类型节点;将至少部分的第一类型节点和第二类型节点连接,从而创建一个层次结构;查询层次结构中最顶端组件的代码;从最顶端组件中读取代码;从至少一个与最顶端组件连接的组件中合并代码;在整个层次结构中重复上述查询和合并,创建编译。
根据本的第六个方面,提出了一种用硬件描述语言描述并使用本发明的前述方法综合的集成电路设计。在本发明的一个实施例中,该集成电路由一嵌入式应用软件(embedded application)中使用的扩展RISC处理器构成。
根据本的第七个方面,提出了一种使用前述综合设计制造的集成电路。在本发明的一个实施例中,该集成电路由一流水线精减指令集CPU(RISC)处理器构成。
根据本的第八个方面,前述的程序包括一完整Javascript调试器,允许用户为其数据设定断点(breakpoint),并在实际的设计过程中对出现的各种计算或操作进行单步调试。
根据本的第九个方面,提供了一种改进的将组件实例存入固定存储器的方法。在本发明的一个实施例中,使用操作系统(OS)文件系统将数据存储于简单分级数据结构中。可选地,还可以通过使用系统API函数仿真操作系统文件行为的方式采用如dBase、Oracle等类似的数据库管理系统实现相同的功能。对于用户来说使用标准文件系统就意味着用户可以使用多种现有的工具对其设计项目进行管理。
根据本的第十个方面,提供了一种改进的便于管理且没有术语表的设计库结构。该结构的特点是确保库中的组件都具有唯一的命名,这样不同的设计机构就不会创建同名的组件,还包括将对象(如:Java)类集成到库结构中的方法。
根据本的第十一个方面,提供了一种改进的以逐个节点方式指定缺省连接方案的方法。这种方法是需要的,因为对于某一组组件可以存在许多种可供使用的连接方案,而其中没有一种连接方案适用于全部组件。本发明使组件的创建者在其组件上能够为每个节点(接口)指定一个连接方案。该方案即可以是一段脚本程序(如:Javascript),也可以是一个(Java)类,运行该脚本/类,向系统提供关于如何连接组件的信息。
根据本的第十二个方面,提出了一种改进的创建项目模板或设计块的方法。模板存储于库中,并且能够全部或部分地发布给其他设计者或设计的最终用户。还有,设计者可以使用一个被多次实例化的单一模板创建一个具有相同组件或块的多重实例的设计。改变模板就同时改变了组件/块的所有实例,从而避免对各个组件逐个进行修改。
根据本的第十三个方面,提出了一种改进的管理GUI的方法。本发明使用了作为组件定义组成部分的GUI。为了实现这一功能,将组件分配给部分GUI代码。在本发明的一个实施例中,利用Java语言定义包括GUI对象在内的跨平台代码。可以将该代码运行时插入GUI,而不需要将代码重新编译。GUI例程(例如:“wizards”)作为对象类发布,所以可以被动态加入实时运行中的应用软件。
根据本的第十四个方面,提供了一种管理涉及各种设计组件信息的显示的方法。在本发明的一个实施例中,根据一个或多个分类标准将组件分类,并将这些组件配置为包含该分类信息。这样显示/GUI函数就可以根据组件的分类属性对其进行识别并根据需要将其显示。
根据本的第十五个方面,提出了一种改进的管理组件依赖关系和约束条件的方法。与设计依赖关系/约束条件有关的数据被存储于组件定义自身之内。这些依赖关系被称为脚本(例如:Javascript)或Java类,其复杂或简单程度可以按需要决定。
此外,本发明通过利用来自每个组件的编译信息创建一个“编译层次结构”从而利用信息封装。为各个组件定义“父”和“子”节点,从而在组件被连接连接时有效地规定编译层次结构。
根据本的第十六个方面,提出了一种用户可扩展的工具箱,使用户能够添加“插件”。在本发明的一个实施例中,在存储器件的预定目录中置入Java类文件。该工具使用Java反射对该目录中的类进行检查,从而便于该工具对插件的使用。
根据本的第十七个方面,提出了一种改进的使用点运算符(dot operator)进行数据寻址的方法。向系统库中储存的脚本提供使用“dot”算子检索信息(包括来自组件类型或实例数据)的方法。系统内的路径被分为子组件(第一个子组件指出类型或实例数据),并且每个随后的子组件被连续地调用以返回与上述功能相关的一个或多个组件。
根据本的第十八个方面,提出了一种适于生成集成电路设计的计算机化系统。在本发明的一个实施例中,该设计包括多个由封装对象(encapsulated objects)表示的组件,每个对象具有至少一个对另一个对象的接口,该接口包含通过该接口传送的数据的相关信息。例如,这些组件可以包括一个处理器内核和一个扩展指令,该信息包含有HDL,必需加入与用于实现该扩展的内核相关联的HDL。
根据本的第十九个方面,提出了一种用于生成集成电路设计的计算机化系统。在本发明的一个实施例中,提供了至少一个可扩展的GUI树,该可扩展的GUI树允许用户指定树与至少一个插件模块之间的关系。
根据本的第二十个方面,提出了一种改进的设计系统,其中所述的系统被适合于自动生成与该用户选定的特定配置相关的用户定制的文件。
根据本的第二十一个方面,提出了一种生成集成电路设计的计算机化系统,其中提供了一种编译定序器(build sequencer),其允许用户在生成设计的过程中有选择地利用一个或多个独立的编译序列。
根据本的第二十二个方面,提出了一种生成集成电路设计的计算机化系统,其包括至少一个根据设计内部每个组件提供的信息生成该设计的拓扑表示(topologyical representation)的模块。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并为了让本发明的上述和其他目的、特征和优点能更明显易懂,以下特举出多个较佳实施例,并配合附图,详细说明如下。
附图说明
图1是一典型的处理器内核及相关组件的方块图。
图2是根据本发明的IP项目和IP库之间关系的示意图。
图3是根据本发明的示例性的IP库的示意图。
图4是根据本发明的用于生成设计的各种结构的示意图。
图5是与图4所示的结构相关的设计层次结构的示意图。
图6是一示例性的项目目录结构的示意图。
图7是一示例性的连接两个设计组件的连接的示意图。
图8是一示例性的组件层次结构的示意图。
图9~9c是组件集中的各种方式的复杂系统的示意图
图10是一示例性的具有自带库和扩展的组件的内核示意图。
图11是根据本发明生成多内核IC设计的方法的逻辑流程图。
图12是一示例性的内核模板的示意图。
图13是一示例性列模板的示意图。
图14是图11所示的多内核IC的示意图。
图15是一示例性本地机器目录结构的示意图。
图16是另一多项目的具有多个库的示例性配置的示意图。
图17是一设计项目的示例性的含有两个内核的芯片组件。
图18是图17所示的设计项目的示例性的目录结构。
图19是位于内核1内用于保持一新扩展设计的库的示意图。
图20是图18和图19所示的项目的目录结构的示意图。
图21是一示例性的具有两个扩展内核的项目的示意图。
图22是一根据本发明的示例性的单用户开发系统的功能方块图。
图23是根据本发明的示例性的多用户开发系统的功能方块图,该系统具有(i)多用户;(ii)单一IP库;(iii)多个IP项目;(iv)没有源代码控制系统。
图24是一示例性的带SCCS的单用户开发系统的功能方块图。
图25是一示例性的带SCCS的多用户开发系统的功能方块图。
图26是一示例性的多用户、多个库的开发系统的功能方块图。
图27是一示例性的带SCCS的多用户、多个库的开发系统的功能方块图。
图28是一示例性的多用户、多个库、多项目的开发系统的功能方块图。
图29是根据本发明的一示例性的目录结构中的类存储的示意图。
图30是根据本发明的共用对象其及结果库结构的实例的示意图。
图31是一示例性的ARCtangent内核的IP目录结构的示意图。
图32是图30所示的内核相关的示例性目录结构。
图33是示例性项目的组件类型和组件实例的目录结构的示意图。
图34是两个示例性的设计组件及其节点和将它们连接起来的连接的示意图。
图35是用于接口的具有固定属性值的工具数据使用的示意图。
图36是一示例性组件内容和该组件内容与另一组件之间关系的示意图。
图37是一示例性的组件语境该组件与另一组件之间的关系的示意图。
具体实施方式
附图中所有相同的附图标记都代表相同的部件。
在本文中,术语“计算机程序”、“程序”、“子程序”和“算法”的含义基本相同。“计算机程序”主要(但不唯一地)指后三者的集合或组。这些计算机程序、程序/子程序和算法可采用任何一种语言,例如面向对象语言。但是,一般来说,本文中使用的上述所有术语意指用于实现某一给定目的按一定序列执行的一系列逻辑步骤。
在本文中,术语“IP”一般指知识产权,包括但不限于:可由个体或系统使用或生成的IC设计、方法、过程、方案、代码、硬件描述语言模型、编译、脚本、逻辑层次表示和软件对象及组件(及其描述)。
本文中提及的硬件描述语言(HDL)或VHSIC HDL(VHDL)在含义上还包括其他硬件描述语言,如VHDL、Systems C、或基他任何设计的程序语言表示。还有,为本发明的各个实施例所进行综合还可能使用综合引擎如Design Compiler 2000.05(DC00),或其他综合引擎,如Cadence Design Systems公司提供的等。IEEE标准1076.3-1997,IEEE标准VHDL综合包描述了用于规定基于硬件描述语言的设计和本专业普通技术人员应该具有的综合能力。
在本文中,术语“处理器”(processor)包括任何能够执行至少一个指令字操作的集成电路或其他电子设备(或电子设备的集合),包括(但不限于),精简指令集(RISC)处理器,例如,由本发明受让人生严的ARCompactTMA5、和ARCompactTMA4用户可配置ISAs/cores(下文将详细描述)、中央处理器单元(CPU)和数字信号处理器(DSP)。这些设备的硬件可被集成到一个衬底之上(例如:硅片),或分配到两个或以上的衬底之上。还有,处理的各个功能部可以单独作为软件或与处理器相关的固件实现。
此外,本文中使用的术语“级”(stage)指流水线处理器内各个连续的级。例如,1级指第1流水线级、2级指第2流水线级,依此类推。例如,这些级可以包括取指令、解码、执行和写回级。
ARCompactTM是一种先进的指令集体系结构(instruction set architecture,ISA),它允许用户在其32位用户可配置处理器上将16位和32位指令混合在一起。该ISA的最大优点是能够将片上系统(system-on-chip,SoC)上的内存要求按非常好的百分比切分,使无线通信和高容量用户电子产器等深度嵌入的应用实现低耗能和低成本。
ARCompact的指令集体系结构主要特点包括:旨在提高代码密度的32位指令、最常用操作的16位指令集和没有模式转换的的任意混合的16位和32位指令。由于和相应的模式转换的体系结构相比而言,能够降低编译器使用的复杂程度,因此这些特点具有重要的意义。ARCompact指令集扩展了能够让用户加入base-case ARCtangentTM处理器指令集的用户扩展指令的数量。现有的处理器体系结构已经可以允许用户增加多达69条新指令用以加速关键例程(critical routine)和算法。ARCompact的ISA可以使用户增加256条新指令。用户还可以增加新的核心寄存器、辅助寄存器和条件码。这样ARCompact的ISA就保持并发展了ARC的可扩展处理器技术中的用户可定制和可扩展的特点。
随着深度嵌入系统中越来越广泛地使用32位体系结构,代码密度对系统的成本会产生直接的影响。典型的是,片上系统(Soc)硅晶面积的很大一部分被内存占用了。
ARCompact的ISA提供高密度代码以便有效降低嵌入式器件对内存的需要量,而这对于大容量消费产品如闪速记忆卡来说是关键因素。此外,将代码适合于较小存储区可以潜在地降低处理器对内存的存取访问。这样,对于MP3播放器、数字相机和手机等便携式设备来说,就可以减少耗电并延长电池工作寿命。此外,通过在一个时钟周期完成过去需要两条或更多条指令,这些新而且较短的指令可以提高系统的吞吐量。这样不需要让处理器在更高时钟频率下工作就可以大大提高设备的性能。
由于支持16位和32位指令自由使用,这就使编译员和程序员能够为一个给定任务选用最合适的指令,而不需要绝对代码分区或系统模式管理。用新16位指令直接替换32位指令会直接提高代码密度,而这一工作可以在整个设备中在各人指令级别实现。由于不要求编译员重组代码,这样就可以在更在范围的指令内提供更大范围的优化。由于新生成的代码与原来的源代码的结构一致,应用程序的调试也更为直观。
有关对ARCompact的ISA更为具体的描述参见共同审查中的名称为《多长度指令集体系结构的可配置数据处理器》的美国临时专利No.60/353,377,该专利申请同被转让给本申请的受让人,其全部内部并入本申请以供参考。
ARCtangentTM处理器是一种用于ASIC、片上系统(SoC)和FPGA集成的用户可定制32位RISC内核。该处理器具有可综合、可配置和可扩展的特性,允许开发人员对体系结构进行修改和扩展以便更好地适合于某一特点的应用程序。ARCtangent微处理器包括一个具有4级执行流水线的32位RISC体系结构。指令集、寄存器堆、条件码、高速缓存、总线和其他体系结构都是用户可配置和可扩展的。它具有一个32x32位的核心寄存器堆,还可以根据需要加倍。此外,还可以使用大数量的辅助寄存器中(可达到2E32)。该处理器核心的功能元件包括算术逻辑单元(ALU)、寄存器堆(例如:32x32)、程序计数器(PC)、指令取(i-fetch)接口逻辑,以及各种级锁(stage latch)。图1是典型的ARCtangent处理器核心100和相关扩展指令102的方框图。
总结
本发明的实施形态之一是一种用于设计、配置和评测集成电路的计算机程序,对于该实施形态下面还会详细说明。该计算机程序提供大量的用户定制从而获得需要的结果;即,高效快捷地设计出具有特定属性和功能的IC。特别是对于流水线处理器核心,该用户定制使设计者能够很方便地向核心中加入适合于执行特定操作的扩展(例如:指令),如Viterbi译码、FTT等。
设计者可以在设计过程中将这些指令和其他元件(如特殊用途寄存器、新条件码选择、本地暂存器、用于3D或DSP的多媒体扩展库,等等)任意地加入现有指令集。与综合后加入外部ASIC或其他元件不同,这些指令将包含在处理器指令和寄存器组之内,因此可以消除集成问题,并且能够根据一条或多条选定的属性进行最大化的优化。该方法还向设计者提供生成整个IC的HDL模型的能力,从而大大提高设计过程的效率。对于复杂处理器设计来说这一能力特别有用,当然还可以很容易地将其应用于其他类型元件。
现有的提供此种用户可配置设计的解决方案包括1999年10月14日提交的名称为《管理半导体设计的配置和功能的方法和装置》的美国专利申请09/418,663中提出的通用方法。作为与本申请共同审查和共同拥有的专利申请,该申请的全部内容纳入本申请,如本申请前述的”ARChitect”设计软件。本发明通过采用面向对象的程序和脚本编制和其他相关优点对该现有技术提出了重大改进。特别是,本发明满足了现有解决方案未能解决的问题,包括:(1)在设计中简便高效地加入大量的扩展;(2)为数据驱动工具提供存储其驱动数据的存储器,实现数据驱动工具;(3)为所有工具的每个处理器或IC设计提供单一存储库,实现共享;(4)规定信息交换的格式。以下对这些优点和特性以及本发明的实施例进行详细说明。
(1)实现数据驱动工具
设计者每次向处理器内核增加扩展时,都会将大量时间花费在将该扩展集成到现有工具箱中。特别是必需更新EDA工具和改变图形用户界面(GUI)等。尽管针对某一处理器设计或少量扩展进行配置是可行的,但对于芯片设计上的系统常用遇到的较大数量时(即:上百甚至上万个新增扩展)就无法进行了。因此,为了加速扩展开发和外设集成的速度,本发明将现有工具进行了有益的转换,从而能够使用更加“数据驱动”的模型。用于驱动新工具的数据必需储于即集中化又可通过若干不同方面存取的理想地点,因此在本发明的一个实施例中使用了“配置数据库”。
本申请的受让人还意识到对现有IP库(包含处理器和外围设备)实现“插件”的优点,中心概念就是IP供货商能够确定他们自己的扩展组件,并利用本发明将该扩展组件集成到IP库中。IP供货商扩展组件可以独立发布,并包含于硬件和软件测试过程中,从而创建一个完全集成的设计工具。这对于现有技术(如前面提及的本申请受让人生产的ARChitect软件)来说,只有通过大量的工作将现有技术(即,ARChitect)的功能进行扩展才有可能实现。因此,本发明的目的之一就是尽可能做到前述发布/集成过程的无缝连接。本发明的配置数据库通过向内核和工具提供这一接口而实现这一目的。
(2)单一设计储存库
本发明的另一主要特点是为所有工具的每个处理器内核或IC设计使用了一个单一的集中的或分散的储存库。例如,在下面将要详细说明的一个实施例中,用户从程序工具中选择与其他软件工具(如:SeeCode调试器、评估器(proifiler)等)相同的内核设置。因此本发明通过为每个配置提供一个公共存储,从而允许将该软件工具作为一个结合单元共同工作。某些现有的解决方案中采用了储存控制设定的模板的概念,但这一信息不能被其他工具使用。
本方法还可以用于具有单一扩展内核、带有同类扩展指令/特点集的多内核、或带有不同扩展指令/特点集的多内核的设计。
(3)规定信息交换的格式
采用本发明提供的标准信息交换具有以下优点:
a)设计组织效率-现有技术中处理器/IC的每个组件或扩展都是由若干设计小组合作完成的。这些设计小组的成果被集成并生成产品。如本发明提供的数据库为与组件相关的所有信息提供一个单一的逻辑存储器,每个小组负责自己的组件/扩展的开发。例如,该逻辑存储器可以由以下构成:单一文件、在单一存储介质上的多个文件、一本地数据库或一分布式数据库。由于对程序集成的需要减少了,结果就提高了使组织效率。
b)设计组织/客户集成-前述的设计组织内部使用的用于开发组件或扩展的数据库可以用来形成向客户发送的产品的基础,从而有助于提高这两部分之间有效的交互,减少“翻译”量。此外,使用标准交换格式有助于第三方设计者为客户和/或原设计组织生成对内核/IC有用的新的定制扩展。
特殊设计属性
上述特点和功能是通过以下设计属性在本发明中实施的。本申请的附录I中包含有关于这些属性的示例性的实现(基于Java的)。当然,根据开发人员的需要还可以采用其他编码和语言。
1)使用XML、JavascriptTM和JavaTM的可配置IP封装-在本发明的一实施例中,使用了可扩展标示语言(XML)、Java和Javascript的混合方式存储静态和动态数据。对数据使用平台无关(platform-independent)或不可知格式(agnostic format)具有特别的优点,这样数据和相关的IP能够在所有的平台和操作系统上工作。有一种变化形式为了简单起见将数据作为文件存储,但是,正如下面将要详细说明的,如果需要可以实现关系数据库或对象数据库。这样就提供了一种查看存储数据(代码“透明度”)和与现有开发工具如源代码控制系统集成的简单方式。利用一种非专利的加密方案将XML和IP在发布前完全加密,而解密在用户节点受到控制。
将Java集成到数据中使数据和处理数据该数据的工具之间形成一个紧密耦合(close coupling)。例如,数据自动由碟片或其他存储地区装入Java对象,这样读写信息的代码就不必执行任何转换。
集成的Javascript还提供广泛的脚本支持。通过将字串嵌入XML,可以将Javascript语句和表达式插入数据中。所使用的Javascript解释器也允许脚本使用Java对象,因此本发明的该实施例具有XML、Java和Javasccript之间完全的互操作性。
2)IP著作工具内集成的调试器-本发明包括描述IP内动态数据的能力。例如,前述的ARCtangent内核的门数并非是静态的。改变总线宽度和增加扩展等都会改变门数。因此关于门数的信息必需是动态表示(例如:一段Javascript)的,而不是静态数值。该动态表示根据用户选择的不同设计选项和加入内核的扩展执行不同的数学计算,并返回一个数值。为了将这些计算包括到IP之中,就要求在一个调试环境(包括对计算的单步调试、观察可变值等)中运行它们的工具。这样,本发明就可选地包括一个完整的Javascript调试器,能够允许用户为他们的数据设定断点,并对真实(即,非仿真的)IP项目中出现的各种计算进行单步调试。
3)集成的IP著作和配置-本发明与现有技术相比,采用了一种“迭代”设计过程。在现有技术中,设计者用需要的扩展建立内核,并对HDL和其他组件进行修改,使其适应增加的指令。如果由于某种原因,设计者又希望改变处理器内核设计,就需要他们重新生成HDL,并重新加入指令HDL代码(不论采用手工或其他方式)。
相比之下,本发明的迭代方法使设计者将其扩展组件(例如:指令)集成到软件库中。这意味着通过在库中建立HDL(例如:VHDL),增加的指令被自动集成到编译中。因此该方法有效地从手工VHDL中转移出来以容纳令从而将其集成到软件库中。
为了有助于这一方法上的转变,软件必需强调IP向库的集成。对此在本文中已经作为“IP著作”有所提及。为了使这一过程高效工作,就需要集成的著作和使用。换句话说,著作功能必需与现有的使用IP的功能相一致。前述的植于软件内的(Javascript)调试器允许用户看到在使用中看到其脚本的运行。例如,VHDL中的替换变量(replacement variables)在建立VHDL时被扩展了;用户现在可以在他们的可变脚本上放置断点,并在VHDL建立过程中看到它的执行过程。
4)将IP定义和实例分为库和项目-作为IP交付的面向对象方法的一部分,需要一个或多个储存库存储IP组件定义和实例。为了实现这一目标,本发明使用了封装(encapsulation)、数据隐藏(data hiding)和小量的多态(polymorphism)的概念。
5)IP项目文件结构-本发明使用一种将组件实例存储于易于管理的永久性存储器的方法。它组成一个所谓的“IP项目”。“操作系统”(OS)的文件系统被用来存储具有简单层次结构数据结构的数据。也可选用数据库管理器如dBase、Oracle或类似的数据库管理系统通过系统API(应用程序界面)函数模仿操作系统的文件处理行为来实现同样的功能。对于操作系统领域的专业技术人员来说,上述的API是熟知的,因此不再详细说明。在一个实施例中,采用了一个基于文件系统的目录结构的简单树结构。项目中的每个组件实例在存储设备(如:硬盘驱动器)上都有其自己的目录,存储设备上还可以包括有其他组件。此外,每个组件都有一个“_data_”目录,用于存储任何与该组件有关的数据(例如:选项)。可选地,还可以提供一个“_library_”目录,这是组件拥有的一个库,以下还会更为详细地说明。
标准文件系统的使用就意味着用户可以利用很多现有的工具管理他们的项目。例如,用户可以利用现有文件服务器和源代码控制系统等将项目共享。还有,不必为了向数据库或专有数据存储器中存储数据而对利用IP或相关的现有工具进行修改。例如,作为某一组件组成部分的C/C++代码已经存储于某一目录中,现有的编译器就可以直接使用该代码而不需要进行修改。
6)IP库结构-本发明还提供一种易于管理且不需要命名法的库结构。特别是提供一种确保库中组件命名唯一(这样不同的设计单位就不会创建名称相同的组件)的方法,同时还提供一种将(Java)类集成到库结构中的方法。基础库存储器就是OS的文件系统。但是,在本发明的实施例中,目录的展开方法与Java包结构类似。
利用文件系统进行存储使库易于管理。可以使用现有的工具对库进行查看、管理和修改。基于Java包约定的库格式使Java类可以作为库中组件的组成部分,并且该组件的命名是唯一的。这样同样允许与Java包结构的紧密集成。可以将库加入Java应用程序的类路径中,并且存储在库中的类可以被正常存取。
在一个示例性的目录结构中,最低一级目录表示组件类型和连接类型。其又由其他目录构成,并相应地包含其他文件和目录。
7)利用节点、连接和变量定义IP关系-本发明提供定义不同IP组件的功能,以及这些组件之间的相互关系。IP组件的连接关系和定义这些连接关系的信息类型被通知给系统工具。而现有技术中,这些信息被硬编码到使用IP的每个应用程序中。
通过指定不同IP组件的关系类型和作为这些关系组成部分而被传递的信息,就可以确保按正确的拓扑的组件连接关系。此外,设计者还能够验证所有将组件集成到工具中所需要集成的信息都存在。
8)组件连接式样-当组件被加入设计中时,存在许多可能的连接方式。本发明提供一种基于逐个节点方式指定缺省连接策略的技术。由于对于一组给定的组件可以采用许多种不同的连接方案,而没有一种方案适合于所有组件,因此这种技术是有必要的。本发明使组件的创建者能够为每个节点(接口)的组件指定一个连接方案。该方案被编写成一段脚本(例如:Javascript)或一个(Java)类,运行该脚本/类以便向系统提供关于如何连接组件的信息。这一技术中采纳了前述的封装概念;该工具不知道如何连接某一给定组件,但是该组件本身已经将相关信息封装在自身之内。
9)作为模板存储在库中的项目-设计者经常不需要从头开始创建一个项目,而是需要一个可以修改的预配置的IP项目并生成最终设计。设计者可能还需要可以纳入一现有项目的预配置的设计“块”。本发明提供生成项目模板或设计块的能力以满足这一需求。模板存储于库中,并且可以全部或部分地分配给设计者或设计的最终用户。还有,设计者可以使用一个用过多次的模板生成具有相同组件或块的多个实例的设计。改变模板同时会改变所有组件/块的实例,从而避免了对组件逐一进行修改。
10)构建存储于库中的工具定义-设置某一给定项目建立过程的方法在许多方面与作为结果的HDL本身一样,都是唯一性的。在一个实施例中,构建过程是一系列用户可以进行修改/增加/删除的步骤。现有技术使用例如Unix“makefiles”来规定构建过程。而本发明在库和项目中存储一个或多个构建“过程”。例如,可以向库中存入“VHDL builder”、“Hierarchy Builder”和“Tests Builder”等构建过程,并将其加入到设计中,并规定其被如何构建。还提供子过程,如“Generate Hierarchy”、“Async to Sync”、“Generate Rams”等,从而使设计者能够以使用单个设计组件构建一个设计相同的方式由这些子组件中生成用户定制的构建过程。这些构建过程可以创建具有唯一生成的不同名字的IP,从而在每个设计中都可以使用IP块的多个副本。这一优点对于创建多处理器片上系统的设计十分有用。
11)可扩展的/动态的GUI-新组件通常需要对图形用户界面(GUI)进行改变,以便为该组件增加新的面板、菜单和对话框等。本发明通过提供作为组件定义组成部分的GUI来解决这一问题。为了实现这一功能,GUI代码的一部分被分配给了组件。在一个实施例中,利用Java语言定义包括GUI对象在内的跨平台代码。该代码可以作用插件被实时插入GUI,不需要对代码进行重新编译。GUI。GUI例程(例如:“wizards”)作为Java类分配,所以可以被动态加入进行中的应用软件。这就意味着组件的开发人员还可以创建需要使用的GUI组件,并将它们分配到组件中。
本发明的GUI还是由存储在库中的信息自动实时生成的。例如,一个组件的选项被存储在组件定义中,相关工具对其进行分析,并由分析结果实时生成合适的GUI。
12)IP数据的自动更新-本发明还可选地被配置为可通过一“IP更新”服务器或其他单位提供的网络接口(如Internet、互联网、内联网、LAN、WAN等)自动收集组件更新或其他相关数据,并将已经定位或下载的新数据、更新等通知给用户。通过这种方式,用户本地系统中的过时数据在软件使用过程中被自动更换,从而提供一种实时更新功能。这种更新为用户支持提供一种改进的机制,使需要的IP更新被自动地包括在“编译”中,以确保消除与IP过时副本有关的错误行为。
13)用于显示的IP分类-本发明的库可以包含许多不同的IP组件,包括硬件、软件、测试等。相应地,本发明提供用户对这些不同组件的显示信息进行管理的能力。特别是,这些组件是基于一个或多个分类标准进行分类的,并含有该分类信息。这样显示/GUI函数就可以根据组件的分类属性对组件进行识别并按要求将其显示。
14)人类可读连接-现有技术中对IP项目的描述使用连接、节点和组件,即使有经验的设计者也不能总是看懂这些描述。如果设计者对IP设计的细节不甚了解就更是如此。本发明通过生成对项目进行描述的描述性的连接元素来解决这一问题。在一个实施例中,这种描述采用明语(例如:英语),这样用户就可以迅速确定组件之间的关系。这样就使该设计工具整体上对于更为广泛的潜在用户来说更为直观和易于理解。
15)组件包含其依赖条件-设计中的每个组件都有许多依赖条件和限制条件,并且随着内容的改变而改变。例如,指令高速缓存的存储总线宽度不能大于内核使用的总线宽度。工具需要知道对这些依赖条件和限制条件,使其不能成为工具内的硬编码。相应地,本发明将这些依赖/限制条件的数据存储到组件定义自身之中。这些依赖条件用脚本(例如:Javascript)或Java类表达,使其能够按照需要任意复杂或简单。
16)存储于组件定义中的组件构建信息-现有技术中的解决方案是利用如果构建一给定设备和任何相关扩展的“硬编码”信息。与此对比的是,本发明通过使用来自每个组件的构建信息利用封装信息生成一“构建层次结构”。所谓的“父”和“子”节点在不同组件上被定义,从而在组件被连接连接起来时有效地指定构建层次结构。
17)使用插件的工具可扩展性-本发明还进一步提供一个用户可扩展工具箱,帮助用户增加“插件”。在一个实施例中,Java类文件被置于存贮设备的预定目录中。该工具使用Java反射功能对该目录中的类进行检查,从而协助工具对插件的使用。
18)使用“点”运算符的数据寻址-为存储于系统的库中的脚本提供了一种使用“点”运算符检索信息(包括来自组件类型或实例的数据)。系统内的路径被分为子组件(第一个指出类型或实例数据),每个后续的子组件被调用返回与该函数相关的一个或多个对象。
19)变量交叉连接
这些连接确定组件之间的关系。关系的确定经常包括必需经过这些连接传送的数据。例如,扩展指令必需让内核知道它向内核VHDL中加入了什么样的VHDL。本发明设置为某一给定组件中的每一个节点都包含有关通过该节点传送的数据的信息。该信息以“变量”(variables)的形式存在。在一个实施例中,每个变量都是一条运行时评估的Javascript以便检索数据。
20)使用插件的可扩展GUI树-本发明的GUI基本上是基于现有的树用户界面组件。但是由于工具是配置成允许第三方开发人员向库中加入他们自己类型的数据,该数据必须以一种有用的方法显示在树上。理想的是数据设计者能够规定他的数据如何在树上显示。相应地,本发明允许工具获取告诉工具如何将数据加到树上的信息或指令。
最佳软件实施例
下面对包含了本明的方法和体系结构的示范性版本的软件进行详细说明。应该理解下面讨论主要是以前述ARCompact ISA和ARCtangent处理器使用的设计软件为基础的。本发明还可用于其他类型的处理器和IC(包括ASIC、FPGA、DSP、CISC处理器、微处理器),以及上面提到的ISA。
此外,尽管以下说明是根据在微型计算机或其他其他类似的处理设备中在Java环境下运行的,应该可以理解还可以使其他用软件和硬件环境(包括微型计算机、工作站、网络计算机、“超级计算机”和特大型机)采用本发明的方法。此外,如果需要还可以将计算机程序的一个或多个部分可以被固化在相对于软件而言的硬件或固件上,这一变化实施例是计算机领域的专业技术人员所容易实现的。
还有,应该可以理解本发明还可以和著名的公用对象请求代理程序体系结构(Common Object Request Broker Architeture,CORBA)协同使用。BORBA提供了一种用于编写分布式面向对象的应用程序的平台无关体系结构。COBRA对象可以驻留在同一台机器和同一过程中,或其他本地或非本地平台之中。Java语言从许多方面对于编写CORBA程序都非常有用,例如在实现CORBA能力的Java IDL中。
最后,注意到尽管此处公开的实例和讨论内容主要涉及硬件IP和VHDL,本方法和装置还可以用于很多其他应用领域,例如,软件或仿真硬件设计。
不同类型的数据-前述的系统“配置数据库”中存有两种类型的数据。首先是用于驱动工具的数据,包括对各种组件的描述。该数据然后就成为一IP库,用户可以从中选择设计系统要使用的组件。其次是描述由用户创建的真实设计的数据。该数据必须描述用户在编译设计中所选择的选项,该信息被传送到各个工具。
由于这两种数据通常是十分不同的,它们分别分类为“IP库”和“IP项目”。IP库存储组件描述和驱动软件工具的数据。IP项目存储用户设计,包括用户选定的扩展和选项。
基于组件的IP-使用可以转入和转出的设计“组件”形成一个IC设计目前已得到广泛接受和应用。通常IC是为了执行某一特定任务而设计的,并且具有被很好证明过的接口。一旦设计出电路,IC就可以用另一制造商提供的IC更换(只要与接口兼容)。
不过这种基于组件的概念已经被扩展到创建所谓的“可配置”IP。这就使用户能够改变设计中一个或多个组件的性能从而更好地满足需要。这种新发现的灵活性有很多优点,也和现代软件设计,特别是基于组件的软件设计有许多相似之处。
近年来软件工程师一直在努力利用组件提高软件开发的速度。从零开始创建一个复杂的应用软件已经不为人所接受。通常更有效的是从标准软件块开始编译应用软件,可以使用开发工具将这些标准软件块插接到一起。这些软件块可以是库、DLL、ActiveX控件等等。例如,一名想创建一带有日历显示窗口的应用软件的开发人员不会去从头开始编写整个日历的代码,他只要获取一个已经存在的日历控件“标准产品”,并将其放入应用软件中就可以了。
但是,开发人员必需还能够对这种“标准产品”进行定制。仍以上述日历为例,可能需要某种特定的颜色方案可日期显示方式。还有,二次开发人员可能想要定制控件功能。只要该组件的原始或主要开发人员首先预期到这些性能和属性可能要被用户定制,并提供了允许将定制内容替代组件中的默认设置的“覆盖”机制,这种定制是相对来说比较实现的。
前述的例子在许多方面是对本明的操作方式的一种仿真。ARC处理器也具有类似的能力,最重要的是可扩展指令和寄存器。例如,在一示例性ARCtangent内核中,高速缓存的大小可以在预定的范围(例如0.5K~32K)之间按需要设定。通常在设计内核/IC时还不太清楚用户可能需要创建哪些用户定制的指令。但是通过为内核提供标准“连接类型”,开发人员就可以随意创建并增加指令。这种扩展能力基本上就是一种覆盖内核默认行性能的一种方式。
类型和实例-本发明还进一步区分所谓的“类型”(types)和“实例”(instantces)。类型和实例的区分是很重要的概念,在上述的IP库和IP项目中十分有用。这一概念是对早已为人熟知的面向对象编程术语中的类(class)和对象(object)之间的区分的直接仿真(即:类型=类;实例=对象)。对这一区别在下文中还会进一步详细说明。
类型-类型用于描述对象的类。例如,一个ARCtangent处理器会有一个类型定义,对如何使用类型和可以使用何种组件将其扩展均有详细说明。这种定义不是一个真正的内核,只是一个适用于所有同类设备(即:ARCtangent处理器)的描述。内核类型定义可包括关于其支持何种时钟、如何将其转换为VHDL或其他描述语言表示、如何将其与扩展连接等信息。
实例-当用户要求ARChitect创建一个ARCtangent内核时,就是在创建一个实例。一个内核的实例包含关于寄存器RAM类型、或其是否具有指令高速缓存等信息。
本发明的IP库和项目中的类型和实例有三个主要用途,即组件、节点和连接类型。图2显示了他们之间的关系。在图2中,“类型”用圆角方框202表示,“实例”用直角方框204表示。实体之间的虚线表示一种“是......的一个实例”的关系。
IP库-前文中提及的IP库中保存有关于各种可以用来创建IC器件的组件、节点类型和连接类型的信息。
组件类型定义-组件类型定义构成了库中的大量信息。它们是对可以在设计中使用的各种组件的定义。例如:内核、扩展、外设等都有他们自己的组件定义。每个组件定义都有自己的子目录,基中将该组件所有的数据都保存在同一位置。被用来定义这些组件的主要信息是它们的节点和工具数据。节点描述了组件是如何连接在一起的。组件使用该节点将总是存储于一IP库中的节点类型定义的实例。图3显示了节点类型定义、组件类型定义和连接类型定义之间的关系。
连接类型定义-连接类型定义了组件之间的关系。每个连接类型定义都有其自己的子目录,其中保存有所有其节点类型定义在内的数据。
此外,本发明采用“通俗英语”的连接类型指定。典型的是在现有技术中,连接完全是根据组件和与其连接的节点来描述的,例如:Link1 connects′core′(VHDL_Parent)to′icache′(VHDL_Child)(连接1将“core”(VHDL_Parent)与“icache”(VHDL_Child)连接)。很明显这不能提供用户任何有用的信息。对于其关系的更为有用的描述可能是:
′icache′inserts VHDL code into′core′
(‘icache’将VHDL代码插入‘core’)
这样用户立即就会确定其关系。
在本发明中是通过将信息放入连接类型来实现这一功能的。回想到连接类型是对某一类型的所有连接的定义。在这种情况下,存在一种被称为‘VHDL’的连接类型,它有两个端点‘父’(Parent)和‘子’(Child),关于它下面还有详细说明。连接类型中存储的信息告诉程序如何根据那个连接类型(这里是指将内核连接到高速缓存的连接)的实例创建一个串(String)。
对于上面的例子,代码可能是下面的样子:
Parent.getName()+″inserts VHDL code into″+Child.getName();
关于连接的信息就这样封装在连接类型里了,因此就不需要程序去发现有关信息了。
模板-模板是存储在IP库中十分有用的IP项目。它们主要有以下两个用途:
1)启动配置-软件形式实施例中具有若干默认设置或配置,如“基础”(basecase)处理器配置(即,尚未添加任何扩展)、DSP、常规(general)等等。这些配置可以存储在模板中,并允许用户选择开始他们的设计所适合的设置。
2)重复配置-如果用户创建了设计的一部分并想将其复制,用户可以将其存储在一个模板中,然后在设计中将其多次实例化。
下面还会对模板进行更为详细的说明。
封装-现有技术的设计系统中与提出工具方法有关的缺陷之一就是没有使用IP封装。换句话说,在这种系统中关于某一条IP的信息可以在许多工具之间产生“涟漪”(传播)。例如,加入一条新的扩展就需要对许多应用程序做出改变,包括编译器(builder)、调试器、编译器、仿真器,等等。事实上,该信息被频繁地硬编码到这些应用程序的源代码中。此外,关于IP的使用规则也被硬编码到工具中。
这里描述的本发明的实施例不仅鼓励,实际上是要求强制封装。特别是所有与一条IP有关的信息都存储在(封装在)这条IP的定义中了。每个IP组件都“了解”自己以及如何与其他IP发生关系,但是对于任何设计中使用的其他IP一无所知。例如,一条扩展指令知道它必需被放入一个内核,但是它对该内核除了知道并入其VHDL的要求以外对该内核的其他情况一无所知。这就意味着该内核可以在不对该扩展指令造成影响的情况下被更新/替换。
例如,按照某一典型的现有技术方案,设计者可能在编译软件GUI代码时遇到依存性的问题,如下:
You cannot have the XMAC without the memory sequencer in the core.
但是在本发明中XMAC和内核被看作是独立的组件,并且依存关系被放入了与其相关的组件(即:上例中的XMAC)。该依存关系是XMAC组件的组成部分,如下:
This XMAC requires a memory sequencer.
另一方面,考虑到需要存储指示高速缓存不能具有大于内核的总线宽度的信息。这一储存关系显然归属于高速缓存,因此,我们将该数据放入高速缓存组件类型。根据编码,可能会采用如下编码:
if the core bus with is greater than X,then print(″cache bus width too small″)
为了实现上述,很明显内核和高速缓存需要交换信息。即内核需要告诉高速缓存它的总线宽度。因此在内核和高速缓存之间必需有一个用来传送该数据的连接。这种连接是存在的,它被称为‘ICache_cache’。该连接类型的实际定义规定该高速缓存可以要求一个来自该连接另一端(即内核)被称为‘CoreBusWidth’的变量。因此,为了获得内核总线宽度,Javascript可能如下:
ICache_cache.BusWidth
然后,该高速缓存必需知道它自己的总线宽度。该信息由高速缓存实例的选项数据获取,即:id.options.Bus.Width。因此,依存关系可为:
编译层次结构-如前述,使用封装就要求没有一个软件或组件具有全部的代码(例如:VHDL)。每个组件都仅有其自身的VHDL代码。因此,必需有一个能够从各个组件中提取VHDL并将其进行汇编从而构成一个元素的一元VHDL层次结构。本发明的基本编译体系结构的好处在于其非常简单,如下:
1)每个具有需要编译到项目中的VHDL的组件都有一个VHDL_Child节点。
2)每个需要将其他组件的VHDL并入其自身VHDL的组件都有一个VHDL_Parent节点。
3)当节点被连接连接后,产生一个被组件VHDL节点连接的层次结构树。
4)编译器查询最顶部组件的VHDL代码。该最顶部的组件然后试图通过读取自身VHDL文件创建VHDL并从其子组件并入所有VHDL。子组件可通过类似的过程创建其自身VHDL。
5)由于编译过程是由树自上而下地进行的,因此该过程是递归的。每个组件都从其组件类型读取其自身的VHDL,并与其子组件的VHDL合并。
6)当VHDL完成递归并且进行到树的顶端,编译过程完成并且所有组件的代码都已经合并到一起了。
注意本发明中使用的封装还提供了生成VHDL的另一方法,特别是考虑到组件不想通过由磁盘读取VHDL生成自身VHDL的情况;例如:一个被给予基本参数如大小和总线宽度“不停步”(on the fly)地生成自身VHDL的RAM组件,等等。在这样情况下,磁盘中没有存储VHDL,只是一个如所需要的生成VHDL文本的Java类。
通过从工具中提取编译信息,每个组件都包含有将其编译入VHDL的足够信息。这样就使设计者能够发布新的扩展和外设而不需要对现有的组件进行修改。
应该明白尽管上述内容是基于VHDL代码的,同样的过程还适用于Verilog、C++、综合脚本等等。
硬件层次结构生成-在VHDL自身生成的同时,硬件层次结构也通过存储在每个组件中的数据被建立。不能将该硬件层次结构与组件层次结构混淆,在此对其无须提及。
每个硬件组件都描述其自身层次结构,该信息存储于一段工具数据中。该信息是动态的,用JavaScript定义,因为在设计期间该层次结构可以改变,这取决于用户作出的选择。例如,欲在ARCangel测试硬件上运行的编译会经常会具有在软件仿真中所没有的额外的层次结构级别(hierarchy level)。
该组件可以随意规定任意多的层次结构级别。每个层次结构级别都可以是结构(structural)、行为(behavioural)或可综合(synthesissable)这三种类型之一。如果有必要可以对他们分别对待,这取决于其他应用设置。值得注意的是结构层次结构级别对一种可能将许多其他层次结构级别连接到一起的层次结构级别进行描述。
每个规定的级别都有一个上层块名称和一个或多个属于该上层块的下层HDL块。在编译时间该应用程序为每个唯一的上层块名称创建一个项,并将该项下的所有组件中找到的所有下层块归类,从而创建一个用于将组件连接到一起并指示汇编的最终的HDL层次结构。
数据隐藏和多态性-本发明中使用的封装实际上意味着一个组件只能知道其自身及其关系。但这不意味着该组件不能交换信息。组件几乎从不单独使用,因此必需能够互相传递信息。但是如果一个组件从另一个组件需要一条数据,那么该事实就成为组件定义的一部分。一般是使用连接类型和节点(上面已经讨论,但在图示的实施例中基本上与Java中的接口相同)来实现这一点的。如果两个组件之间存在关系,那么就为这个关系定义一个连接类型。然后信息被加入该连接类型以规定何种信息经过其传递。注意连接类型只规定传送了何种类型的信息,而不是传送了什么信息或其是如何生成的。由IP的创建者确定该信息是如何创建的。
库和项目-如前述,数据被分为对象实例和类型。实例是用户放入设计的真正IP组件,类型是对这些对象的元数据描述。它是对Java/C++中的类和对象的仿真。类型存储于库中,实例存储于IP项目中。注意,库中不仅存有组件类型,还存有连接类型。类似地,项目中也包含连接实例。
IP项目-请参阅图4~7,是本发明的IP项目。图4是构成一个IP项目400的基本结构。这些结构排列在图5中所示的层次结构500中。一个项目是由通过连接连接起来的若干组件和模板组成的。图6显示了一个典型项目的目录结构。
连接-连接用于将连接节点,也就将组件连接到一起。图7显示了连接两个组件704和706的连接702。本实施例中的连接存储其连接的两个对象的名称和这些对象中的连接节点的名称,尽管如果需要他们还可以被配置为存储其他类型的信息。
父组件和子组件-在系统设计中,几乎总是存在一种组件的层次结构关系,一些组件为“父”,另一些为“子”。在本文中术语“父”、“子”等仅指层次结构起源或组件间的联接。例如,内核组件被认为是其扩展的父,一个芯片级组件可能是内核的父。这种基于块的设计反映了VHDL被写入的方式和SOC设计。图8是一典型的组件层次结构800。
请参阅图8,最高一级是芯片组件802。一个包含两个内核804的芯片(该芯片是内核的父)。每个内核也是一个父,包含两个扩展组件806。对于这种父-子关系的深度没有限制,但一般每个组件只能有一个父组件。
空白组件-有时将组件集中到一起以便隐藏执行细节是有用的,但是这样就缺少一个父组件。这时用户可以创建一个空白组件作为这些对象的容纳器。空白组件最简单的一种组件,没有变量或自身的节点。
图9中显示的是没有将组件集中的复杂系统900。如图9a所示,内核902、904可以利用空白组件与其外设和本地存储器集中。集中之后用户就能够在系统级别查看其设计,将会显示存储器和两个被命名为‘系统1’和‘系统2’的空白组件910和912(参见图9b)。用户可“放大”组件之一以便显示出它是由内核920、外设922外加本地RAM924组成的(参见图9c)。
用户可以将其设计分拆成能够被单独开发的逻辑块(组件)。例如,用户的设计可包括两个执行完全不同任务的内核。这些内核是分立组件,因此可以由不同的开发小组开发。这些内核常常需要为其自身特定任务量身定制的扩展指令。这些扩展指令可由不同的开发小组定义并保存在IP库中。这些新扩展的指令将成为使用这些指令的内核的组成部分。因此,如图10所示,内核组件可包含其自身的含有其扩展在内的的库。
在图10所示的实例中,两个扩展“我的扩展1”1002和“我的扩展2”1004只有从其相应的内核内部才是可见的。因此内核2就不能够创建我的扩展1的实例,因为后者不在范围内。类似地,内核1也不能将我的扩展2实例化。
用户将关于组件的所有信息封装并将其一并存储到一个地方。这一方式有利地使用户能够将组件由一个项目移到另一个项目并且相关的组件类型定义也一同移动。
作用域规则-将库放入组件内要求必需有一定的规则来控制其可见性(作用域规则“scope rules”)。这些规则一般按如下设立:
●库的父组件可以看到该库。这是指存有该库的组件可以使用该库。
●库的父组件的子组件可以看到该库。如果存有该库的组件有子组件,那么这些子组件也可以使用该库。这种可性性延伸到孙组件、重孙组件等等。
●全局库可以被所有组件看到。有些库是全局性的,不属于任何组件。这些库对于所有的组件都是可见的。
模板-本发明的主要目的之一就是使其成为可扩缩的。具体来说,这种可护缩性使软件能够代表单一内核系统、小型多内核系统或大型多内核系统。这种可护缩性很大一部分是取决于前述的模板。这些模板允许用户设计一些共用的组件设计,然后将这些模板放入IP库待用。例如,一个与USB控制器连接ARCtangent内核和一些共享存储器可以组成一个模板。用户只需要简单地在其设计中生成一模板实例就可以在一个新的芯片上使用这个模板。模板还提供一种很好的创建非常大具有数十到数百个组件的的系统的方式。例如,如图11所示的实施例1100,可以按照下列方法创建一个由100个相同的处理器按10x10排列的芯片设计。
首先,由用户创建一个最终将容纳全部100个处理器的芯片。用户在芯片组件内仰取创建一个库以容纳模板。然后,用户打开库并创建一个新模板,并设计出一个内核及其必要扩展的简单设计。这个设计将成为创建100个内核的模板,参见图12。
内核模板完成并保存后,用户在库中创建另一个模板。在上述步骤2中创建的内核模板这时可以使用了,并且可以在其设计中使用10个模板创建一行10个处理器。处理器之间按要求互相连接,新模板被存储在库中,参见图13。
上述两个新模板现在可供设计时使用了。用户将10个处理器行1402导入其设计中,然后按要求将他们连接。这样就生成了每行10个共10行相同处理器的设计,参见图14。
最后,如果用户想要正在使用的处理器设置,可以简单地编辑原始内核模板,所作的改变就会在列模板和项目中“产生涟漪”,从而免除了用户逐一修改每个内核组件(或行组件)的工作。
主要有三种在设计中使用模板的方式。首先,用户可以选择一个模板作为其进行设计的起点。这时来自模板项目的信息可以被拷贝到他们的设计中,从而对其进行修改。
其次,用户可能会希望在已有的设计上增加一个模板并对且进行修改。例如,如果他们已经在其设计中加入了一个处理器内核,并且还想增加另一个处理器内核(基于DSP模板),这一点已经实现。这时模板项目信息被直接复制到他们的项目中,并且用户可以对新内核进行修改使其符合需要。
最后,用户可使在其设计中利用模板复制大型结构(例如:就象前述的100内核)。这种情况下用户可能不希望模板信息被包括在他们的设计之中,而是仅要求一个引用。这种方式允许用户须不需要重新创建其自身的设计就可以对模板进行更新。由于在项目中只存有一处模板的引用,用户不改变所有上述类型的其他模板就不能修改一个模板。
IP库使用方法-如前述,本发明的IP库是一个有关组件类型、连接类型和模板等信息的存储库,但是针对某一给定设计没有可采纳的最个数目。本实施例利用一个存有一个目录路径清单的全系统环境变量。该变量被称为ARCLIB,它允许IP库应用程序编程接口(application programminginterface,API)找到设计者使用的所有全局库。还有,某一库中的数据可以引用另一库中的数据。例如,为系统工具提供的ARC库包括若干将被其他库中的组件类型引用的连接类型。
应该理解大多数用户会将只使用一到两个库。例如,存在一个某一公司的所有工程师使用的主库。该为某一公司提供的主库可包括提供任何其他该公司已经获得许可IP库的标准处理器内核。可将该库配置为存有工程师们正在从事的组件。他们的本地机器可被配置为如图15所示。在这一配置1500中,“C:\”是他们的本地驱动器,“S:\”是一个所示开发人员共享的网络驱动器。该处理器内核库存储于网络驱动器中,因此可以供所有开发人员使用。这就使库管理员可随时加入新的组件或进行错误调试。在本地驱动器上是他们自己的不希望全范围共享的组件的用户库。
在图式的实施例中前述的ARCLIB环境变量被配置为具有以下目录:
S:\ARC Library
C:\User Library
[注意目录“Project1”和“Project2”是IP项目]
有经验的用户可以为其从事的每一个项目设置一个库,这样其为某一特定项目开发的组件(例如:扩展指令)就会成为IP项目的组成部分。该IP管理工具允许用户将这些组件在必要时转移到另一个库中。图16显示一个高级设置。
再次说明,用户计算机上的“S:\”是一个网络驱动器,因此可以被所有用户共享,并且它被用于作为全公司库的主机(例如:ARC库)。“C:\”是用户的本地驱动器,一般用于存储非共享的内容。图中的示例的特定用户已经创建了一个用户库,用户在其中保存所有有用的扩展和模板。除了用户库以外,用户还有两个当前正在从事的项目:Project1和Project2(这里是IP项目)。作为这些项目的组成部分,用户已经为ARC创建了一些用户定制扩展,因此,他们已经创建了用于将其存储的库。这些库被存储于IP项目目录中,因此对项目是本地的。
ARCLIB环境变量可以保存在以下目录中:
S:\ARC Library(Absolute path)
C:\User Library(Absolute path)
除全局库外,每个项目都有其自己的本地库。这样,Project1使用的库的全部列表可以是如下的:
S:\ARC Library (Absolute path)
C:\User Library(Absolute path)
Library(Relative path)
类似地,对于Project2:
S:\ARC Library(Absolute path)
C:\User Library(Absolute path)
Library(Relative path)
注意列表中最后一个库是相对路径,它允许用户不需要编辑到库的路径将可将其项目移动。尽管两个项目使用了被称为“Library”的库,并不代表它们是同一库,因此该路径是相对于项目路径的。
IP项目使用方法-IP项目就是一个存储到磁盘上的组件。但是如前所述,组件可以包含有其他组件,因此将一个组件保存到磁盘上也会导致其子组件的保存(及子组件的子组件等等)。在图示实施例中,每个父组件都是作为硬盘上的一个子目录保存的,这意味着最终目录结构与项目结构是相对等的。例如,下面的图形表示一个简单的项目。如图17所示,最高级别是一个芯片组件1702,它包含两个内核1704。
图18显示了一个被称为“My Chip”的项目的目录结构1800。可以看到所有的父组件都有其自己子目录。因此,在该例中,芯片和内核都有子组件,因此都有它们自己的子目录。
很清楚,一个IP库可以包含于一个项目中的任何一个组件子目录中。这就是组件如何可以拥有与其相关的自己的IP库。在上实例中,设计者可创建他们自己的扩展用于内核1。
如图19所示,用户已经在内核1 1902内创建了一个库来存放其新扩展设计。用户一旦指定了新扩展,就通过将其实例化在内核中使用该新扩展。该项目具有图20所示的目录结构2000。
设计者很有可能会决定在即在内核2中也在内核1中使用该扩展。为了使该扩展能够在这两个内核中使用,设计者必需将该扩展放入一个对两内核都可见的库中。如图21所示,放置该库最明显的地方(但不是唯一的)就是“My Chip”组件2100。现在,“我的扩展ension”组件定义2102在两个内核里就都是可见的。
前述的本发明的父-子关系(包括其他类似关系)允许设计者将其项目划分成逻辑块,每个逻辑块都被看做是一个独立的子项目。本文中使用的术语IP项目是指一个存储在存储设备(如:硬盘)中的组件,并且能够引用到任何存储在用户的硬盘上的组件。一个典型的IP项目包括一个芯片组件,该芯片组件包括一个或多个内核,每个该一个或多个内核(有可能地)包括一个或多个扩展,如此等等。
开发系统
以下讨论是对库和项目在各种开发系统中使用的描述。例如,一个开发系统包括一个开发工具,如前述的设计软件(如:“ARChitect”)编译器、调试器、等等,以及IP管理工具和各种库。应该理解下面的描述仅仅是示例性的,并不代表所有类型的符合本发明的开发系统或其组件的各种组合。
注意部分下面将要详细描述的开发系统利用所谓的“源代码控制系统”(source code control systems,SCCS)。这些系统对于大型复杂系统的编译常常是非常关键的,特别是在当多名开发人员同时从事同一组文件时。作为一个例子,可以使用一个会等待需要的资源的所谓的“测试并等待”函数(比如一个信号量(semaphore))来实现SCCS。如本专业技术人员所熟知的,信号量就是用于针对是某个资源的可用性而发出信号的一种机制。一个或多个过程可以无限等待资源信号量发出可用性信号。可选地,可以使用一个队列实现上述的测试并等待功能。术语“队列”(queue)一般是指一个工序间通信的实体并允许信息在一个发布的系统上的各个应用程序部分之间传递。因此某一给定的过程可以向其他任何一个创建其自己的队列的过程发出信息。本专业的普通技术人员能够知晓许多工序间队列的变化形式。源代码控制系统的特定实现对于程序设计领域的普通技术人员都是熟知的,因此这里不再详细说明。
可以预见处理器内核和SoC系统会越来越复杂,用户会需要通过SCCS来管理他们的项目。为了便于这种集成工作,本发明的IP库和IP项目格式允许单独地对逻辑部分进行检入和检出(check-in/check-out)。源代码控制系统的设计初衷是以文件的形式工作(通常是文本文件)。例如,检入/检出操作通常是对单个文件或整个子目录进行的。因此,库和项目中的逻辑结构由于是以单个文件或子目录形式存储而受益。例如,一个具有许多内核的多内核项目,如果每个内核及其扩展都作为一个文件或子目录存储,就会得到最好的实现。这样,用户可以“检出”一个要开始从事的内核,同时另一个用户可以从事另一个内核。如果所有的内核都存储在同一文件中是不可能做到这一点的。
单一用户开发系统-图22是本发明的单一用户开发系统2200。该系统的属性包括:(1)单一用户;(2)单一IP库;(3)多IP项目;和(4)无源代码控制系统。这是一个IC开发系统最简单的实例。用户单独开发各个项目。
多用户开发系统-图23是本发明的多用户开发系统2300,该系统具有如下属性:(1)多用户;(2)单一IP库;(3)多IP项目;和(4)无源代码控制系统。在这一实施例中,多个用户开发不同的项目,但是使用一个(或有限数目的)组件类型定义库。因此,它具有一个共享IP库(由所有用户使用),但是有多个本地IP项目。
SCCS单一用户开发系统-图24是本发明的带SCCS的单一用户开发系统2400,该系统具有如下属性:(1)单一用户;(2)单一IP库;(3)多个存储于源代码控制系统(SCCS)中的IP项目。这一实施例与前述的单一用户开发系统基本相同,但是引用了用于管理项目的源代码控制系统。在开发一个复杂系统时,建议使用源代码控制系统。它使用户能够在IP项目上使用所有的普通SCCS函数;例如:版本控制、检入、检出、分支等等。
SCCS多用户开发系统-图25是本发明的带SCCS的多用户开发系统2500,该系统具有如下属性:(1)多用户;(2)单一IP库;(3)多个存储于源代码控制系统(SCCS)中的IP项目。这一实施例说明了多个用户是如何利用普通的源代码控制系统同时进行相同项目的开发的。这时在SCCS中存储了一个项目,但是在相关用户的本地机器上检出。
多IP库多用户开发系统-图26是本发明的多IP库多用户开发系统2600,该系统具有如下属性:(1)多用户;(2)多IP库(部分本地,部分共享);(3)多IP项目;和(4)无源代码控制系统。
图22~25的实施例都只有一个IP库,有时在多用户中共享。但是有时用户可能会希望创建自己的组件,或修改已有的组件,并将这些新的IP段放入一个IP库中(参见图26)。在图26中所示的实施例中,两个(或更多)用户共享一个IP库,该IP库中存有主要组件(内核、扩展等)。他们还有自己的存储于本地的库,这些库中存有用于他们自己的项目的用户定制的组件。存储于本地库中的某些自用组件很有可能是值得在整个开发组织中使用,比如正在进行类似项目开发的其他开发人员可能会需要使用,这时这些组件可以被传送到共享库中。
多IP库SCCS多用户开发系统-图27是本发明的多IP库SCCS多用户开发系统2700,该系统具有如下属性:(1)多用户;(2)多IP库(部分本地,部分共享);(3)多IP项目;和(4)SCCS。该实施例类似于上一个实施例,不同之处在于两个用户同时在一个共享项目和一个共享IP库上工作,并且它们都存储于SCCS中。
多IP库、项目库和SCCS的多用户开发系统-图28是本发明的多IP库、项目库和SCCS的多用户开发系统2800,该系统具有如下属性:(1)多用户;(2)多IP库(部分本地,部分共享,部分对项目本地);(3)多IP项目;和(4)SCCS。该实施例中引入了将库作为项目的部分的概念。两个(或更多)的用户使用一个存储在文件服务器上的全局IP库,加上他们自己的本地库。此外,用户们正在从事的项目之一要求一些用户们已经创建的项目特定组件。这些组件被存储在IP项目内的一个库中。
库目录格式
本发明的实施例中的IP库的目录结构是基于Java的包结构。尽管还可以采用其他方式(和语言)。示例性的目录结构反映了下面的目录结构,并且是基于用句点或“点”分隔的包名称的。例如,在Java中,可以从目录‘\com\arc’下的文件‘architect.class’中找到类‘com.arc.architect’。目录树的深度没有限制,因此开发人员可把他的类以任何方式分组。但是如果包的名称没有冲突,最高一级的包应该相应地命名。有一种命名方法是将公司的URL(去掉‘www’)倒过来为包命名。例如,ARC网站位于‘www.arc.com’,因此将URL倒过来就是‘com.arc.www’。然后将‘www’删除,留下‘com.arc’。因此,对于任何来自ARC的Java类的最首两个包的名称就是‘com’和‘arc’。该示例性的类应该是如下的:
com.arc.architect
com.arc.builder.filereader
com.arc.ipmt.gui.componenttree
这些类将被存储于图29所示的目录结构中。
Java-在图示的实施例中,广为人知的Sun Microsystems“JavaTM”语言不仅被用来实现本发明的软件实施例,还被用于IP模型自身的集成部分。如前述,该“IP模型”的一种体系结构采纳了“传统的”静态IP和更大的超集可配置IP。生成设计IP时,设计者一般不仅会加入使用组件的基本信息,还会插入各种工具,使终端用户能够更有效地使用IP。IP的设计者不希望为每个终端用户可能使用的用来开发自己的IP平台(Windows,Unix等)编写插件。因此,本发明交付IP插件最好使用Java的与平台无关和“任何地方运行”代码。由于更多的第三方开始使用给定的工具箱开发IP,Java包模型还是一个确保组件名称不冲突的很好的方式。
下面提供了实施例中使用的XML格式的例子:
从上面的例子可以看出,XML明确地引用了一个Java类;即:‘com.arc.data.OptionInst’是一个Java类。Javascript能够通过以串的形式保存而被嵌入XML,如下面的例子所示:
Javascript可以通过使用前述的“点运算符”引入XML,下面将继续说明。
使用点运算符检索数据的基本方法如下。首先,每个路径总是与某些东西相关的,通常是一个组件实例。这样通过路径就给出了查找要引用的数据的基本范围。该路径被划分为若干单词,例如‘id.options.BusWidth’被分为‘id’、‘options’和‘BusWidth’。路径的首部分(即‘id’)被检查,并且请求当前范围以查找该对象。这时,向组件实例请求‘id’导致返回一个用于查找实例数据的对象。接着,请求该返回的实例数据对象以便提供该对象,它被称作‘options’。在这个例子中,将涉及从硬盘装入一个XML文件,并返回一个Java对象,该Java对象就是文件内容。
最后,向文件内容对象询问一个名为‘BusWidth’的对象。在这个例子中,BusWidth实际上是一个OptionInstance。
如果在寻找过程中的任何时候,软件发现了一个不知如何正确处理的对象,就从一个告知如何使用该对象的插件中搜索。这就用到了本文中另有说明的插件框架。
通过使用点运算符,脚本可以从组件中检索数据。例如:‘id.options.cachewidth’将从选项文件(option file)中返回高速缓存宽度。在只规定了类型和实例数据的实施例中,第一个对象必需是‘td’或‘id’,以便指定该数据是否应该来自类型数据或实例数据。
IP库和对象-库可存放许多不同种类的对象,例如:组件类型、连接类型、节点类型、模板等等。重要的是这些对象都有唯一的标识符,道理是和Java类必需唯一标识是一样的。在Java中,一个类可以利用其完整包路径被精确地标识;例如:‘com.arc.builder.filereader’。
同样的方式也被用于本发明,以便在各个库中找到对象。例如:来自某一公司(例如:ARC公司)的硬件组件可能具有路径:‘com.arc.ip.hardware.cores.tangent5_0’。和Java的类一样,存储于库中的对象在包的子目录中。下面给出一个共用对象及其库结构的例子:
com.arc.ip.hardware.cores.tangent5_0
com.arc.ip.hardware.extensions.multiplier
com.arc.ip.hardware.extensions.barrelshifter
com.arc.ip.software.libraries.mathlib
参见图30所示的目录结构。和Java包一样,顶层包的名称应该采用无冲突命名法(例如:将公司的URL倒过来并去掉‘www’)。之后,IP开发人员可以选择其他的包名称。
Java类经常是作为一个IP组件的组成部分交付的。为了做到这一点,IP开发人员会将一个或多个类文件作为工具数据(下面将详细说明工具数据)的组成部分随组件运送。为了将Java类作为组件的一部分示出,采用了下面的将一个类文件插入一个示例性的ARCtangent处理器的例子
图31是示例性的ARCtangent内核IP的目录结构3100。从图中可以看出,CoreEditor.class文件存储于tangent5_0组件下的子目录中。现在,如果该文件被放入库中,就得到了图32的目录结构3200。通过将库变为Java类路径的一部分,就可以通过使用下面的路径这个类:
com.arc.ip.hardware.cores.tangent5_0.arc.gui.editor.CoreEditor
工具数据和实例数据
本发明的图示实施例中的存储于IP库和IP项目被分为两种类型的数据:(1)工具数据,它存储于一个组件、连接和节点类型中,以便让工具知道如何处理这些组件;(2)实例数据,它在IP项目中存储于组件、连接和节点中,并且是仅与该组件的该实例相关的信息。
(1)工具数据-工具数据包括让工具知道某一特定组件、节点或连接类型是工具数据的信息。因此,例如,工具可能需要找到以下相关信息:
1)如何编译某个给定组件;
2)对于某个组件适用哪些警告信息,何时显示该信息;
3)用户如何将这个组件与其他组件连接;
4)用户可以为这个组件选择哪些选项,例如:当前ARC代码具有高速缓存、总线宽度等选项;
5)编译器如何识别该组件加入内核的指令;
6)组件使用的断点。
(2)实例数据-任何将组件实例区分的数据都是实例数据,工具应该获得以下信息:
1)用户为某个给定组件选择的选择;
2)内核评估数据的地点;
3)用户将组件在屏幕上的显示位置
工具数据和实例数据存储方式的一个重要部分就是工具数据的寻址方式。例如,某一特定组件类型的工具数据可以是以若干兆字节(Mb)的文件的形式。这些文件通常被安排入逻辑目录结构。在一具实施例中,建立目录的方式与安排Java包的方式类似。所有工具数据都存在库中的组件子目录中。但是应该理解,还可以采用与本发明一致的其他结构。
本实施例的实例数据存储于类似的目录结构中。但是,它存在组件实例目录下的‘_data_’子目录中。
根据上述,组件类型和组件实例的目录结构3302、3304如图33所示。
工具在从库中寻代工具数据时使用完整路径进行数据寻址。此外,类似Java,路径使用‘.’代替‘/’或‘\’。此外,在规定这两大类别时,路径的首部分必需是‘id’(对实例数据)或‘td’(对工具数据)。例如,为了在一个组件类型中寻找一个称为‘CacheSize’的选项的定义时,路径可能如下:
td.options.CacheSize
注意,在上面的例子中,‘options’是一个文件,而‘CacheSize’是该文件中的一个XML元素。给出该信息,工具就知道关于选项定义;即:它是何种类型、它可以采用什么范围的值,等等。现在,用户为组件的一特定实例选择的实际值被确定。为了做到这一点,利用了选项实例数据。当工具从项目中寻找各种实例数据时,利用完整路径为数据寻址(除了省略‘_data_’目录并使用‘.’代替‘/’或‘\’)。因此,变量实例‘CacheSize’的完整路径可能如下:
id.options.CacheSize
使用工具数据中的实例数据-在本发明中,工具数据频繁引用实例数据。例如,如果用户为组件选择了某些选项,可能仅会显示一条出错信息。因此工具数据可能会寻找类似于以下的内容:
Message:
“Cache size cannot be greater than 16K with a bus width greater than 24”
Condition:
id.options.CacheSize>16000&&id.options.BusWidth>24
上述的条件表达式很明显是信息工具数据的一部分,但是脚本翻译器必需知道当前的高速缓存大小和总线宽度。高速缓存大小和总线宽度是实例数据,因此被存储于组件实例中。注意脚本是如何使用完全合格的到选项的路径的。这就允许脚翻译器在目录结构中搜索需要的文件,并于其后在寻找该文件内正确的XML元素。
节点内的变量-组件利用变量经过节点交换信息。在一个实施例中变量是作为被执行的脚本片段以便向调用者返回一个Java对象。例如,芯片对象可具有一个‘Clock’选项,用来设计芯片的时钟频率。但是该时钟频率必需让芯片内的所有组件知道,这样它们才能知道运行速度。为了向其他组件通知时钟频率,必需有一个组件上的时钟连接类型和节点来连接它们。
简单的时钟连接类型需要两个节点类型:主节点类型和从节点类型。时钟主节点类型规定它的组件必需提供一个时钟频率。类似地,时钟从节点类型规定该组件将要接收一个时钟频率。当时钟主节点被置于芯片之上时,设计者会得到需要通过该新节点提供一个时钟频率的通知。图34显示了这两个组件3402、3404以及它们的节点3406、3408和将它们连接的连接3410。
现在,考虑从组件中的一段工具数据,例如,一条警告信息。和其他工具数据一样,它会引用实例数据,如变量实例等。
Message:
“Cache size cannot be greater than 32K with a chip clock speedgreater than 200MHz”
Condition:
id.options.CacheSize>32000&&Clock[0].ClockSpeed>200
通过将‘Clock’节点的名称放在变量之前,API就知道如何从芯片的主节点获得时钟频率。
所有的变量都与组件或其节点之一相关联。为了实际这一点,变量存储在组件类型的‘variables’目录下的文件中。每个节点都有一个相同名称的‘axml’文件带有该节点可获得的变量。此外,还有一个‘self.axml’文件带有仅属于组件的变量。
IP库中的脚本
XML是一种为表达数据结构而设计的格式;它不是一种程序语言。不将自身用于数据驱动的方式的组件类型定义中有若干条需要表达的信息。通常的做法是使用脚本语言扩展XML的功能,因此这些脚本是在运行时被翻译的,而且代码可以以文本的方式直接被放入XML内。
工具数据-某些工具数据受益于表达式求值。例如,考虑一条存储关于某一组件使用的门数信息的工具数据。该信息根据用户选择的选项是可变的。例如,桶形移位器使用的门数取决于用户选择了快或是小(对于更为复杂的对象,门数可能是几个变量的乘积)。例如,桶形移位器的门数信息可能会按下列方式计算:
if(id.arc.variables.FastOrSmall==”Small”)
1234;
else
5678;
但是,更为复杂的例子可以是内核使用的逻辑门的数量。这个数量值需要考虑“高速缓存类型”、“高速缓存大小”、“存储器子系统”等等。
还考虑到使用更换节点更换一段功能的情况。例如,如果指令高速缓存能被另一个高速缓存组件替换,那么内核使用的门数会减少,而新的组件自己的门数又会加到总门数中。因此,内核的门数计算必需知道是否正在使用默认高速缓存。如果发生了上述,计算时必需考虑到是否已经使用了高速缓存覆盖节点的情况。请考虑下面的例子:
...
[Other calculations here]
...
if(CacheOverride.isConnected==false)
NumberOfGates+=1234;
工具数据中另一个脚本的使用是为了变量值加入驱动工具的数据中。例如,考虑一个加到内核中的增加了一条新指令的扩展。在一种安排中,每个扩展指令都有一个在生成组件时就设定的预定代码数。如图35所示,接口的工具数据被用于向各个工具提供信息3500。但是,代码数可以是指令连接类型的一个变量。这就使用户能够对其希望为新指令采用何种代码进行选择。连接类型的工具数据包括一个‘com.arc.ARCtangent1.Instruction’,但是对于代码没有一个固定值。取而代之的是使用了一段脚本3600,如图36所示。在图36中所示的工具数据中,代码数不再是图35中的“33”,而是一段求整数值的脚本。这样,当用户从软件中改变代码时,这一改变就理想地通过工具链传递给了编译器、调试器等。
脚本语言-在本发明的一个实施例中,采用ECMA脚本作为脚本语言,但是应该理解还可以成功地使用其他语言代替。这种语言是基于JavaScript(Netscape)和Jscript(Microsoft)的,并且最初是为创建动态网页设计的。这种语言被欧洲计算机制造商协会标准化为ECMA脚本,并且成为HTML(HTML是XML的子集)的官方脚本语言。ECMA脚本的语法与Java/C/C++类似,并且是基于宿主程序提供对象并于脚本操作的原理的。类似于C语言的语法结构的好处是许多软件工程师对它都感到十分熟悉。它包括函数、if循环、for循环、if/else语句,以及普通数字运算符(+、-、*、/、&、|、》、《等).它提供内核对象数学函数(sin,cos,log等等)和串处理。
本发明的一个示例性代码包括一个完整的JavaScript(ECMA)翻译器,对嵌入工具数据的代码进行评估。还可用于用户自己需要的应用程序的编译器,例如,用户接口脚本、测试脚本。
为了使脚本按要求工作,需要获利一些信息。需要的主要信息如下:
1.该组件的各个实例和工具数据。
2.该组件如何连接到其他组件(通过连接)
3.来自已连接组件的变量
每段脚本都在一个存有所有该脚本可读写的Javascript变量的语境内执行。在组件对象模型中这些Javascript变量中含有关于实例数据和连接的信息。下面的对象是在一个组件的语境中的:
●它能够看到当前组件的所有实例数据
●它能够看到当前组件的类型的所有工具数据
●它能够看到当前组件的所有变量节点
●它能够看到所有连接另一端的变量
上述内容在图37中的关系3700中用图形表示。
如果执行的脚本是在‘Component’中的,那么它就应该能够‘看到’下面的变量:
Current1,Current2和Current3:-它们作为脚本属于相同组件。
Var1和Var2:-它们属于组件的一个节点。
Var3和Var4:-它们属于连接另一端的一个节点。
但是,它不能‘看到’Other1、Other2和Other3,因为它们在范围之外。节点-和实例数据的情况一样,脚本能够获取关于节点的信息。对于每个节点都存在一个同名语境中的对象。该对象脚本可读的不同成员变量。这些成员如下:
1)numLinks:-连接到这一节点的数量。
2)[n]:-得到连接到此节点的第n个连接。
下面的例子能够说明这些概念。
实例1-下面的代码说明一个高速缓组件如何能够找到相关内核的信息:
实例2-这个例子说明了这一方式如何能用于定义非常复杂的关系。在这个例子中,内核组件具有一个称为‘Signal’的连接节点。所有插入该连接节点的组件都对信号加入一个延迟。内核必需确认所有组件的总延迟小于1.0。该延迟可以是一个单一连接类型的扩展角色的一个变量。
内核组件也可具有一个警告信息,以便在延迟大于1时告知用户。该警告具一相关联的脚本,该脚本被评估以便判断该警告是否有效。下面是脚本的例子。
可以看出,脚本在所有被连接的组件中迭代操作,并将它们的延迟值累加得到一总数。该总数与1.0进行比较以确定其是否有效。
实例3-在上述实例中,用户以选择不同扩展指令使用的操作码,如果两个扩展试图使用同一操作码,可以出现一个警告信息。该警告信息可以用一段脚本实现,该脚本可被评估以确定该警告是否有效。该脚本可以按如下配置:
此代码对一个阵列进行分配,并且对于每个与内核相连接的指令扩展,它将代码号给出的阵列位置设置为“真”。如果任何扩展试图使用一个已经使用的代码号,那个阵列入已经被设为真,这时显示警告。
树管理-本发明还提供加强的树管理。这一功能是基于前述的插件框架的。当一个工具遇到一段不知如何插入树中的数据时,就搜索一个能够指示它如何处理的插件。例如,如果第三方开发人员想加入关于需要向一个C文件加入什么样的包含文件的信息时,这条信息可以是一个文件名列表的形式。假设前述工具不知道如何在树中显示这一信息,该开发人员可能为其数据写一个将告知工具如何将其加入树中的“treeable provider”。工具需要知道的信息包括子组件的数量,应显示何种图标等等。这一方式的优点在于软件可以被第三方开发人员或终端用户扩展,而不需要原开发人员输入。这就允许其他为了自身利益想要将自己的数据加入组件而为IP加入支持的其他单位。
工具可扩展性-如前所述,本发明利用基于Java反射机制的可扩展工具在运行时找到类。这就允许终端用户向应用程序中加入自己的类而不需要原设计者进行额外的修改。这些包括用于装入和查看不同文件类型的插件,用于定制库和项目树的插件,用于查看存储于组件中的不同类型的数据,等等。例如,如果第三方希望向库中加入包含其自有数据格式的文件,可以创建一个用于向软件中装放该数据并可在GUI中查看的插件。在实施例中是通过Java类或Jar文件放入启动时就进行分析以找到插件位置的存储设备(如系统硬盘)上的一个目录中来实现的。
可以通过把Java类放入正确的目录而将插件加入工具。然后该工具利用Java反射检查这些类,以确定其能力。这些插件可以自动执行任务。例如,某个插件可将一个类串行化,或为一段新数据提供一个编辑器。
生成HTML文档-在本发明的另一个方面中,应用程序为用户选定的特定项目配置自动生成文档。在定制的HTML用户文档中记录了各个方面。其中包括的信息是从组件定义中的数据动态建立但由组件实例中的选项配置的,这表明为一个项目建立一个定制的文档是非常重要的。例如,如果在设计中包含有乘法器-指令集文档中就要包括该扩展增加的指令并显示组件使用的门数。对乘法器选项进行配置以便将乘法器设计为小型实现,而对于该组件门数会减少。该信息有必要在定制HTML文档中反映出来。
在生成HTML文档的过程中,从项目中包括的所有组件中提取数据,大多数情况下这些组件都是硬件组件-但实际上它可以适用于软件实施例中。数据被比较、格式化,并作为HTML以用户可读的表格形式输出。硬件项目生成表的例子是设计总结、中断、寄存器组、指令集和门数。
编译定序器-在本发明的实施列中,编译设计的过程由编译定序器控制。它在编译过程中每个原子步(atomic step)都具有一个独立的“序列”(sequence),它允许用户更好地控制现有技术的方法。举例来说,用户可以决定对测试代码重新编译并返回验证试验,而不需要重新编译HDL或编译脚本,这样在开发新组件时会节省许多时间。该序列器受用户设定的选项的控制。例如用户通过将数值设定为真或假来决定在序列中的哪一步执行。
每个序列步都是一段能够从项目和IP库中存取实例和工具数据的JavaScript。还以预定义JavaScript的形式提供了用于执行一般动作的附加功能,如运行命令行程序、向输出窗口记录消息和文件处理。用户还可随意向框架中加入这些全部存储于IP库本身的预定义的脚本。
拓扑显示-本发明的实施例还包括一个“拓扑视图”,适合于查看用户设计的图形表示。拓扑数据存储于每个组件中并给出该组件如果包括在设计是应该如何显示的,不论是与其他组件分组或独立表示。该拓扑视图然后自动处理图形、分组和图形显示,特定的连接信息。它还提供一个用于选择组件的“指向并点击”界面,这样就可以改变其选项值并设计中将其删除。结合可显示当前IP库中所有可用组件的组件查看器后,它还可以提供“拖放”方式用于从向当前项目加入组件。
利用组件提供的数据它还提供给用户关于在某一特定设计中每种类型的组件的允许数量,从而防止用户创建不合法的组件组合,例如,将多个指令高速缓存连接到一个内核。
附录II提供了实现这一拓扑功能的示例性代码。
集成电路(IC)设备
如前述,本申请受让人的ARCtangent处理器内核配置被用作上述实施例的IC设备的基础。但是如果需要还可以用其他的配置替代。该设备是利用下述的方法定制的VHDL设计得到的,然后将其综合到逻辑层次的表达,然后用编译、布图和制造技术等半导体生产中常用的手段将其实现为物理器件。例如,本发明与0.35、0.18和0.1微米工艺兼容,并且最终可用于更小或其他精度的工艺。一个示例性的器件制造工艺是IBM公司的0.1微米“Blue Logic”Cu-11,当然也可采用其他工艺
本领域的技术人员应该理解,本发明的IC设备还可包含任何一常见的外围设备,如串行通信设备、并行端口、计时器、计数器、高电流驱动器、模/数转换器、数/模转换器、中断处理器、LCD驱动器、存储器等其他类似设备。还有,该处理器还可包括其他用户定制或专用电路,如形成一个如前述的在一个组件上提供具有若干不同功能的SoC设备。本发明不受外围设备的类型、数量或复杂程度的限制,也不受其他可以结合本发明的方法和装置的电路的限制。而且,即使存在限制也是因为未来仍会不断进步提高的半导体工艺的物理能力造成的。因此可以预见随着半导体工艺水平的提高,可以使用本发明的集成度和复杂程度会进一步增加。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但是凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (23)
1.一种生成具有多个组件的集成电路设计的方法,其特征在于包括:
(a)针对一个项目为至少部分所述多个组件提供代码,每个所述至少部分多个组件都有一个第一类型节点;
(b)为所述多个组件中没有所述代码且从其它组件处获取代码的组件定义一第二类型节点;
(c)连接至少部分所述第一和第二类型节点以生成一个层次结构,所述的层次结构包括一个最顶端组件;
(d)查询所述层次结构中最顶端组件的代码;
(e)从所述最顶端组件中读取代码;
(f)从至少一个与所述最顶端组件连接的组件中合并代码;以及
(g)在整个层次结构中重复所述(e)和(f),以创建所述集成电路设计。
2.一种用于生成用户配置集成电路(Ics)设计的计算机化系统,其特征在于包括:
一用户界面,被配置为向用户提供信息并从用户处接收信息;
一面向对象的设计环境,具有多个相关联的设计工具,与所述用户界面连接,其中,与所述IC设计相关联的多个组件被表示为对象,所述对象的至少一部分被封装并包括与界面和构建的层次结构相关的信息,所述设计工具使用所述对象中的信息以创建所述的设计,在所述环境内通过所述用户界面所述对象成为用户可配置且可选择;
其中,所述用户可配置包括向所述的IC设计增加一个扩展指令,所述扩展指令包括利用没有模式转换的至少两个长度的指令的混合长度指令集体系结构。
3.根据权利要求2所述的系统,其特征在于其中所述设计中的对象表示组件包括两种类型和实例。
4.根据权利要求3所述的系统,其特征在于其中至少一个所述类型被存储在至少一个库中,并且至少一个所述实例被存储在至少一个项目中。
5.根据权利要求4所述的系统,其特征在于其还进一步包括至少一个连接类型和至少一个连接实例。
6.根据权利要2所述的系统,其特征在于其中所述面向对象的环境被适合于以一种层次数据结构将多个组件实例作为一项目存储。
7.根据权利要求6所述的系统,其特征在于其中所述层次数据结构包括一个树结构,所述项目的每个所述组件实例都包括与所述系统相关联的一个存储设备上的其自身的目录。
8.根据权利要求7所述的系统,其特征在于其中至少一个所述组件具有一个被配置为存储与该组件相关联的数据的第一目录,和一个包括至少一个所述组件所拥有的至少一个库构成的第二目录。
9.根据权利要求2所述的系统,其特征在于其中所述的面向对象的环境具有一个被配置为与所述系统相关联的多个不同种类的工具相兼容的标准化数据结构。
10.根据权利要求2所述的系统,其特征在于其中所述的设计中的多个组件包括封装的对象,所述封装的对象包含关于如何将两个或更多所述组件连接的信息。
11.根据权利要求2所述的系统,其特征在于其中所述系统包括存储于一个库中的多个不同的编译过程。
12.根据权利要求11所述的系统,其特征在于其中至少一个所述编译过程是与至少一个项目相关联的,所述至少一个编译过程规定与所述项目相关联的一个设计的构建方式。
13.根据权利要求12所述的系统,其特征在于其中至少一个所述的编译过程是被配置成生成具有唯一的实例化变量名称的输出,从而允许所述设计中使用的所述输出进行多份复制。
14.根据权利要求2所述的系统,其特征在于其中所述的设计包括多个组件定义,至少部分的所述组件定义中的每个组件用至少部分的GUI代码进行编码。
15.根据权利要求14所述的系统,其特征在于其中所述GUI代码包括Java语言GUI对象。
16.根据权利要求15所述的系统,其特征在于其中所述GUI代码包括作为Java类分配的能够被动态包括进一个运行中的应用程序的例程。
17.根据权利要求2所述的系统,其特征在于其中所述面向对象的设计环境通过一个网络接口与至少一个远程信息源连接,其中所述的系统被配置为与所述至少一个信息源协作并通过所述网络接口自动获取组件或其他相关数据的更新。
18.一种用于生成用户配置集成电路(Ics)设计的计算机化系统,包括:
一用户界面,适合于向用户提供信息并从用户处接收信息;
一面向对象的设计环境,具有多个相关联的设计工具,与所述用户界面连接,其中,与所述IC设计相关联的多个组件被表示为对象,所述对象的至少一部分被封装并包括与界面和构建的层次结构都相关的信息,所述界面和构建的层次结构与各自的设计组件有关,所述设计工具使用所述对象中的信息以创建所述的设计,在所述环境内通过所述用户界面所述对象成为用户可配置且可选择;
其中,所述多个组件中的至少一个组件包括具有至少一个用户可配置选项的基础处理器,所述至少一个用户可配置选项包括下述至少一个:
增加一新指令,
配置一现有指令,
为所述基础处理器配置一数据高速缓存,
为所述基础处理器选择一DSP(数字信号处理)扩展,以及
为所述基础处理器增加暂存器。
19.一种用于生成用户配置集成电路(Ics)设计的计算机化系统,包括:
一用户界面,适合于向用户提供信息并从用户处接收信息;
一面向对象的设计环境,具有多个相关联的设计工具,与所述用户界面连接,其中,与一IC设计相关联的多个组件被表示为对象,所述对象的至少一部分被封装并包括与界面和构建的层次结构相关的信息,所述设计工具使用所述对象中的信息以创建所述的设计,在所述环境内通过所述用户界面所述对象成为用户可配置且可选择,其中所述面向对象的设计环境根据所述方法产生所述集成电路的一定制描述语言模式包括:
针对对象的至少一个定制参数,从所述的用户处接收一个或者多个输入,所述至少一个定制参数包括:至少一个集成电路总线带宽或者高速缓存的大小;以及
基于至少一个定制参数通过一自动过程产生一定制描述语言模式,所述自动过程包括:基于至少一个定制参数通过在至少一个原型描述中取代数值或者并入的附加描述来修改至少一个原型描述。
20.一种用于生成集成电路(Ics)设计的计算机化系统,包括:一用户可扩展软件工具箱,所述用户可扩展软件工具箱中有多个适合于允许添加至少一个插件模块的工具;
其中,至少一个对象类文件被存放于一存储设备的一预定目录中,所述工具使用实时机制对所述至少一个类文件进行检验,以便允许所述工具使用所述至少一个插件模块。
21.根据权利要求20所述的系统,其特征在于其中所述实时机制包括Java反射机制。
22.根据权利要求21所述的系统,其特征在于其中所述至少一个插件模块包括:用于装入和查看不同文件类型的模块。
23.根据权利要求21所述的系统,其特征在于其中所述至少一个插件模块包括:用于定制库和项目树的模块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37599702P | 2002-04-25 | 2002-04-25 | |
US60/375,997 | 2002-04-25 | ||
CN038152231A CN1666202A (zh) | 2002-04-25 | 2003-04-25 | 管理集成电路设计的装置和方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN038152231A Division CN1666202A (zh) | 2002-04-25 | 2003-04-25 | 管理集成电路设计的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102902839A true CN102902839A (zh) | 2013-01-30 |
CN102902839B CN102902839B (zh) | 2016-04-06 |
Family
ID=29270745
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210286684.7A Expired - Lifetime CN102902839B (zh) | 2002-04-25 | 2003-04-25 | 管理集成电路设计的装置和方法 |
CN038152231A Pending CN1666202A (zh) | 2002-04-25 | 2003-04-25 | 管理集成电路设计的装置和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN038152231A Pending CN1666202A (zh) | 2002-04-25 | 2003-04-25 | 管理集成电路设计的装置和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7475000B2 (zh) |
EP (1) | EP1502214A1 (zh) |
KR (1) | KR100818826B1 (zh) |
CN (2) | CN102902839B (zh) |
AU (1) | AU2003223746A1 (zh) |
WO (1) | WO2003091914A1 (zh) |
Families Citing this family (153)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6724220B1 (en) | 2000-10-26 | 2004-04-20 | Cyress Semiconductor Corporation | Programmable microcontroller architecture (mixed analog/digital) |
US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US8160864B1 (en) | 2000-10-26 | 2012-04-17 | Cypress Semiconductor Corporation | In-circuit emulator and pod synchronized boot |
US20030005396A1 (en) * | 2001-06-16 | 2003-01-02 | Chen Michael Y. | Phase and generator based SOC design and/or verification |
US7406674B1 (en) | 2001-10-24 | 2008-07-29 | Cypress Semiconductor Corporation | Method and apparatus for generating microcontroller configuration information |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US8042093B1 (en) | 2001-11-15 | 2011-10-18 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
US7844437B1 (en) | 2001-11-19 | 2010-11-30 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US6971004B1 (en) | 2001-11-19 | 2005-11-29 | Cypress Semiconductor Corp. | System and method of dynamically reconfiguring a programmable integrated circuit |
US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
US7278137B1 (en) | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
US7308608B1 (en) | 2002-05-01 | 2007-12-11 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
US7761845B1 (en) * | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
US7418666B2 (en) * | 2002-10-21 | 2008-08-26 | Bentley Systems, Incorporated | System, method and computer program product for managing CAD data |
DE10254012A1 (de) * | 2002-11-19 | 2004-06-17 | Siemens Ag | Projektierverfahren |
US20040220998A1 (en) * | 2002-12-26 | 2004-11-04 | Michael Shenfield | System and method of building wireless component applications |
US7555538B2 (en) | 2002-12-26 | 2009-06-30 | Research In Motion Limited | System and method for building and execution of platform-neutral generic services' client applications |
JP2007526539A (ja) * | 2003-06-18 | 2007-09-13 | アンブリック, インコーポレイテッド | 集積回路開発システム |
US20070186076A1 (en) * | 2003-06-18 | 2007-08-09 | Jones Anthony M | Data pipeline transport system |
US20050049843A1 (en) * | 2003-08-29 | 2005-03-03 | Lee Hewitt | Computerized extension apparatus and methods |
US7346838B2 (en) * | 2003-09-25 | 2008-03-18 | Hewlett-Packard Development Company, L.P. | System and method for displaying document metadata |
US7725299B2 (en) * | 2004-03-01 | 2010-05-25 | Purdue Research Foundation | Multi-tier and multi-domain distributed rapid product configuration and design system |
US7295049B1 (en) | 2004-03-25 | 2007-11-13 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
US8286125B2 (en) | 2004-08-13 | 2012-10-09 | Cypress Semiconductor Corporation | Model for a hardware device-independent method of defining embedded firmware for programmable systems |
US8069436B2 (en) | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
US7797661B2 (en) * | 2004-09-03 | 2010-09-14 | Abb Research Ag | Method and apparatus for describing and managing properties of a transformer coil |
US7263672B2 (en) * | 2004-09-03 | 2007-08-28 | Abb Research Ltd. | Methods, systems, and data models for describing an electrical device |
US20060136188A1 (en) * | 2004-12-22 | 2006-06-22 | Lacey David J | Capturing curation data |
US7332976B1 (en) | 2005-02-04 | 2008-02-19 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
US8788787B2 (en) * | 2005-03-02 | 2014-07-22 | The Boeing Company | Systems, methods and architecture for facilitating software access to acceleration technology |
US20060236303A1 (en) * | 2005-03-29 | 2006-10-19 | Wilson Thomas G Jr | Dynamically adjustable simulator, such as an electric circuit simulator |
ITMI20050799A1 (it) * | 2005-05-03 | 2006-11-04 | Atmel Corp | Metodo e sistema di configurazione dei parametri per una memoria flash |
US7400183B1 (en) | 2005-05-05 | 2008-07-15 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
EP1736905A3 (en) * | 2005-06-21 | 2007-09-05 | Nvidia Corporation | Building integrated circuits using logical units |
US7363610B2 (en) | 2005-06-21 | 2008-04-22 | Nvidia Corporation | Building integrated circuits using a common database |
US7483823B2 (en) | 2005-06-21 | 2009-01-27 | Nvidia Corporation | Building integrated circuits using logical units |
US8089461B2 (en) | 2005-06-23 | 2012-01-03 | Cypress Semiconductor Corporation | Touch wake for electronic devices |
US7308668B2 (en) | 2005-06-30 | 2007-12-11 | International Business Machines Corporation | Apparatus and method for implementing an integrated circuit IP core library architecture |
US7444610B1 (en) * | 2005-08-03 | 2008-10-28 | Xilinx, Inc. | Visualizing hardware cost in high level modeling systems |
US20070106960A1 (en) * | 2005-11-09 | 2007-05-10 | L-3 Integrated Systems Company | System and method for the development and distribution of a VHDL intellectual property core |
WO2007062379A2 (en) * | 2005-11-21 | 2007-05-31 | Prismtech Corporation | Method and apparatus for accelerating generic inter-orb protocol for a corba orb |
US7793248B1 (en) | 2005-11-23 | 2010-09-07 | Altera Corporation | Method and apparatus for parameterizing hardware description language code in a system level design environment |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
US8473754B2 (en) | 2006-02-22 | 2013-06-25 | Virginia Tech Intellectual Properties, Inc. | Hardware-facilitated secure software execution environment |
US7958487B2 (en) * | 2006-03-21 | 2011-06-07 | International Business Machines Corporation | Apparatus, system, and method for modifying an integration software template |
US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
JP4682245B2 (ja) * | 2006-06-13 | 2011-05-11 | 富士通株式会社 | Hdl処理方法、プログラム及びコンピュータ読み取り可能な記憶媒体 |
EP1873634A3 (en) * | 2006-06-29 | 2013-10-09 | Rockwell Automation Technologies, Inc. | HMI framework for extensible automation system engineering platforms |
US8516418B2 (en) * | 2006-06-30 | 2013-08-20 | Oracle America, Inc. | Application of a relational database in integrated circuit design |
US7802222B2 (en) * | 2006-09-25 | 2010-09-21 | Cadence Design Systems, Inc. | Generalized constraint collection management method |
US7685413B2 (en) * | 2006-11-01 | 2010-03-23 | Dell Products L.P. | Use driven configurator and system optimization |
US8977995B1 (en) * | 2007-01-10 | 2015-03-10 | Cadence Design Systems, Inc. | Timing budgeting of nested partitions for hierarchical integrated circuit designs |
US8365113B1 (en) * | 2007-01-10 | 2013-01-29 | Cadence Design Systems, Inc. | Flow methodology for single pass parallel hierarchical timing closure of integrated circuit designs |
TWI402705B (zh) | 2007-02-01 | 2013-07-21 | Via Tech Inc | 積體電路元件之模擬實例產生方法與裝置 |
US8219374B1 (en) * | 2007-02-21 | 2012-07-10 | University Of Central Florida Research Foundation, Inc. | Symbolic switch/linear circuit simulator systems and methods |
US7669155B2 (en) * | 2007-03-26 | 2010-02-23 | Lsi Corporation | Generic methodology to support chip level integration of IP core instance constraints in integrated circuits |
US20080244475A1 (en) * | 2007-03-30 | 2008-10-02 | Tseng Chin Lo | Network based integrated circuit testline generator |
US7782073B2 (en) * | 2007-03-30 | 2010-08-24 | Taiwan Semiconductor Manufacturing Company, Ltd. | High accuracy and universal on-chip switch matrix testline |
US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US8065653B1 (en) | 2007-04-25 | 2011-11-22 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
US8266575B1 (en) | 2007-04-25 | 2012-09-11 | Cypress Semiconductor Corporation | Systems and methods for dynamically reconfiguring a programmable system on a chip |
TW200849049A (en) * | 2007-06-14 | 2008-12-16 | Elan Microelectronics Corp | Speech IC simulation method, system and storage medium thereof |
US8122428B2 (en) * | 2007-06-26 | 2012-02-21 | Analog Devices, Inc. | Methods and apparatus for automation and facilitating design of register maps |
US8863056B2 (en) * | 2007-08-23 | 2014-10-14 | Taiwan Semiconductor Manufacturing Company, Ltd. | Integrated design-for-manufacturing platform |
US8049569B1 (en) | 2007-09-05 | 2011-11-01 | Cypress Semiconductor Corporation | Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes |
JP5163308B2 (ja) * | 2008-06-23 | 2013-03-13 | 富士通セミコンダクター株式会社 | Ipモデル生成装置、ipモデル生成方法、およびipモデル生成プログラム |
US7825678B2 (en) * | 2008-08-22 | 2010-11-02 | Taiwan Semiconductor Manufacturing Company, Ltd. | Test pad design for reducing the effect of contact resistances |
US9092110B2 (en) * | 2008-12-16 | 2015-07-28 | Cadence Design Systems, Inc. | Method and system for implementing a user interface with ghosting |
US9003340B2 (en) * | 2009-01-30 | 2015-04-07 | Active-Semi, Inc. | Communicating configuration information across a programmable analog tile to another tile |
KR101553652B1 (ko) * | 2009-02-18 | 2015-09-16 | 삼성전자 주식회사 | 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법 |
JP5521349B2 (ja) * | 2009-02-20 | 2014-06-11 | 富士通セミコンダクター株式会社 | Ipモデル生成プログラム、ipモデル生成装置、およびipモデル生成方法 |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US8707158B2 (en) * | 2009-08-05 | 2014-04-22 | Microsoft Corporation | Customizing a form in a model-based system |
US9703550B1 (en) * | 2009-09-29 | 2017-07-11 | EMC IP Holding Company LLC | Techniques for building code entities |
US8762873B2 (en) * | 2009-10-26 | 2014-06-24 | Hewlett-Packard Development Company, L.P. | Graphical user interface component identification |
US9477928B2 (en) * | 2010-07-14 | 2016-10-25 | Fujitsu Limited | System and method for comparing software frameworks |
CN102012954B (zh) * | 2010-11-29 | 2013-01-02 | 杭州中天微系统有限公司 | 用于系统芯片集成设计的子系统集成方法及其子系统集成系统 |
US9405433B1 (en) | 2011-01-07 | 2016-08-02 | Trimble Navigation Limited | Editing element attributes of a design within the user interface view, and applications thereof |
US20120185820A1 (en) * | 2011-01-19 | 2012-07-19 | Suresh Kadiyala | Tool generator |
US8555217B1 (en) * | 2011-06-20 | 2013-10-08 | Lattice Semiconductor Corporation | Integrated circuit design software with cross probing between tool graphical user interfaces (GUIs) |
US8713519B2 (en) * | 2011-08-04 | 2014-04-29 | Trimble Navigation Ltd. | Method for improving the performance of browser-based, formula-driven parametric objects |
US9146660B2 (en) | 2011-08-22 | 2015-09-29 | Trimble Navigation Limited | Multi-function affine tool for computer-aided design |
US20130074033A1 (en) * | 2011-09-16 | 2013-03-21 | International Business Machines Corporation | Designing a configurable pipelined processor |
CN102510422B (zh) * | 2011-10-09 | 2014-06-25 | 惠州Tcl移动通信有限公司 | 一种移动终端及其调节运行负荷的方法 |
JP5910297B2 (ja) | 2012-01-17 | 2016-04-27 | ソニー株式会社 | 情報処理装置、icチップ、情報処理方法、プログラム、及び情報処理システム |
US9021349B1 (en) * | 2012-04-25 | 2015-04-28 | Cadence Design Systems, Inc. | System, method, and computer program product for identifying differences in a EDA design |
EP2680147A3 (en) * | 2012-06-26 | 2014-05-21 | LG Electronics, Inc. | In-vehicle infotainment processor and data processing method using the same |
US9015644B2 (en) * | 2012-08-06 | 2015-04-21 | Wistron Corp. | Crosstalk analysis method |
TWI502387B (zh) * | 2012-08-06 | 2015-10-01 | Wistron Corp | 串擾分析方法 |
KR20160005682A (ko) * | 2013-02-07 | 2016-01-15 | 서울대학교산학협력단 | 사건구동 방식의 스위칭 회로 모의 시험 방법 및 이를 이용한 회로 모의 시험 프로그램이 저장된 저장 매체 |
WO2014204400A1 (en) * | 2013-06-20 | 2014-12-24 | Plunify Pte Ltd | System and method for designing an integrated circuit |
US20150088482A1 (en) * | 2013-09-25 | 2015-03-26 | International Business Machines Corporation | Simulated component connector definition and connection process |
US9292398B2 (en) * | 2013-12-13 | 2016-03-22 | International Business Machines Corporation | Design-based weighting for logic built-in self-test |
US9501594B2 (en) * | 2014-04-13 | 2016-11-22 | Vtool Ltd. | Graphical design verification environment generator |
US9547735B2 (en) | 2014-06-30 | 2017-01-17 | Synopsys, Inc. | System and method for viewing and modifying configurable RTL modules |
US10281507B2 (en) | 2014-11-21 | 2019-05-07 | Kohler Co. | Generator sizing |
CN105760563A (zh) * | 2014-12-19 | 2016-07-13 | 吴国盛 | 可视化集成电路设计架构 |
US20160179161A1 (en) * | 2014-12-22 | 2016-06-23 | Robert P. Adler | Decode information library |
CN104536772B (zh) * | 2015-01-30 | 2017-12-12 | 浪潮(北京)电子信息产业有限公司 | 实现高速缓存一致性协议表达转换的方法及系统 |
EP3062142B1 (en) | 2015-02-26 | 2018-10-03 | Nokia Technologies OY | Apparatus for a near-eye display |
AU2016339028A1 (en) | 2015-10-13 | 2018-05-17 | Invensys Systems, Inc. | Systems and methods of Hierarchical Smart Asset Control Application development and optimization |
USD811423S1 (en) | 2015-11-16 | 2018-02-27 | Kohler, Co. | Display screen with graphical user interface |
USD810104S1 (en) | 2015-11-16 | 2018-02-13 | Kohler, Co. | Display screen with graphical user interface |
US10110233B2 (en) * | 2016-06-23 | 2018-10-23 | Altera Corporation | Methods for specifying processor architectures for programmable integrated circuits |
US11270053B2 (en) | 2016-07-08 | 2022-03-08 | efabless corporation | Systems and methods for assembling and developing an SoC efficiently using templates and designer input data |
US10467366B2 (en) * | 2016-10-14 | 2019-11-05 | Oracle International Corporation | Methods and systems for simulating high-speed link designs |
CN106548079A (zh) * | 2016-10-26 | 2017-03-29 | 安徽扬远信息科技有限公司 | 基于密码系统芯片的附加子系统集成方法 |
US10650552B2 (en) | 2016-12-29 | 2020-05-12 | Magic Leap, Inc. | Systems and methods for augmented reality |
EP4300160A3 (en) | 2016-12-30 | 2024-05-29 | Magic Leap, Inc. | Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light |
US10578870B2 (en) | 2017-07-26 | 2020-03-03 | Magic Leap, Inc. | Exit pupil expander |
US11836676B2 (en) * | 2017-08-04 | 2023-12-05 | Evolve Mep, Llc | Determining vendor components, kits, and logistics based on construction drawings |
CN108228965B (zh) * | 2017-12-06 | 2022-01-11 | 北京物芯科技有限责任公司 | 一种存储单元的仿真验证方法、装置和设备 |
KR102714924B1 (ko) | 2017-12-10 | 2024-10-07 | 매직 립, 인코포레이티드 | 광학 도파관들 상의 반사―방지 코팅들 |
US10996970B2 (en) * | 2017-12-14 | 2021-05-04 | Samsung Electronics Co., Ltd. | Method for data center storage evaluation framework simulation |
KR20200100720A (ko) | 2017-12-20 | 2020-08-26 | 매직 립, 인코포레이티드 | 증강 현실 뷰잉 디바이스용 인서트 |
US10896476B2 (en) * | 2018-02-22 | 2021-01-19 | Netspeed Systems, Inc. | Repository of integration description of hardware intellectual property for NoC construction and SoC integration |
WO2019178567A1 (en) | 2018-03-15 | 2019-09-19 | Magic Leap, Inc. | Image correction due to deformation of components of a viewing device |
US11885871B2 (en) | 2018-05-31 | 2024-01-30 | Magic Leap, Inc. | Radar head pose localization |
US11579441B2 (en) | 2018-07-02 | 2023-02-14 | Magic Leap, Inc. | Pixel intensity modulation using modifying gain values |
US11856479B2 (en) | 2018-07-03 | 2023-12-26 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality along a route with markers |
WO2020010226A1 (en) | 2018-07-03 | 2020-01-09 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
WO2020023545A1 (en) | 2018-07-24 | 2020-01-30 | Magic Leap, Inc. | Temperature dependent calibration of movement detection devices |
WO2020023543A1 (en) | 2018-07-24 | 2020-01-30 | Magic Leap, Inc. | Viewing device with dust seal integration |
WO2020028834A1 (en) | 2018-08-02 | 2020-02-06 | Magic Leap, Inc. | A viewing system with interpupillary distance compensation based on head motion |
CN112789544B (zh) | 2018-08-03 | 2023-06-30 | 奇跃公司 | 图腾在用户交互系统中的融合姿势的基于未融合姿势的漂移校正 |
US11366672B2 (en) | 2018-08-21 | 2022-06-21 | Synopsys, Inc. | Optimization of application level parallelism |
JP7487176B2 (ja) | 2018-08-22 | 2024-05-20 | マジック リープ, インコーポレイテッド | 患者視認システム |
WO2020102412A1 (en) | 2018-11-16 | 2020-05-22 | Magic Leap, Inc. | Image size triggered clarification to maintain image sharpness |
WO2020163603A1 (en) * | 2019-02-06 | 2020-08-13 | Magic Leap, Inc. | Target intent-based clock speed determination and adjustment to limit total heat generated by multiple processors |
JP2022523852A (ja) | 2019-03-12 | 2022-04-26 | マジック リープ, インコーポレイテッド | 第1および第2の拡張現実ビューア間でのローカルコンテンツの位置合わせ |
CN114127837A (zh) | 2019-05-01 | 2022-03-01 | 奇跃公司 | 内容提供系统和方法 |
JP2022542363A (ja) | 2019-07-26 | 2022-10-03 | マジック リープ, インコーポレイテッド | 拡張現実のためのシステムおよび方法 |
JP2023501574A (ja) | 2019-11-14 | 2023-01-18 | マジック リープ, インコーポレイテッド | 仮想および拡張現実のためのシステムおよび方法 |
CN114667538A (zh) | 2019-11-15 | 2022-06-24 | 奇跃公司 | 用于在外科手术环境中使用的观看系统 |
GB2603402B (en) * | 2019-11-19 | 2024-07-31 | Efabless Corp | Systems and methods for assembling and developing an SoC efficiently using templates and designer input data |
CN111209719A (zh) * | 2019-12-31 | 2020-05-29 | 西安翔腾微电子科技有限公司 | Ic设计环境的自动化实现方法、装置、设备及存储介质 |
CN111709215B (zh) * | 2020-06-01 | 2024-09-24 | 哈尔滨工业大学 | 一种ip管理系统及ip管理方法 |
US11669314B2 (en) * | 2021-03-30 | 2023-06-06 | Tata Consultancy Services Limited | Method and system to enable print functionality in high-level synthesis (HLS) design platforms |
WO2023196124A1 (en) * | 2022-04-08 | 2023-10-12 | Microchip Technology Incorporated | System-level design tool for selecting and confirming compatability of electrical components |
CN117150515B (zh) * | 2023-10-31 | 2024-01-26 | 上海合见工业软件集团有限公司 | Eda二次开发源代码的安全保护方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0844576A2 (en) * | 1996-11-22 | 1998-05-27 | Lsi Logic Corporation | Computer system and method for performing design automation in a distributed computing environment |
US6135647A (en) * | 1997-10-23 | 2000-10-24 | Lsi Logic Corporation | System and method for representing a system level RTL design using HDL independent objects and translation to synthesizable RTL code |
CN1376283A (zh) * | 1998-09-30 | 2002-10-23 | 凯登丝设计系统公司 | 基于块的设计方法 |
US6536033B1 (en) * | 1999-01-28 | 2003-03-18 | International Business Machines Corp. | Uniform mechanism for building containment hierarchies |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4831543A (en) * | 1986-02-21 | 1989-05-16 | Harris Semiconductor (Patents) Inc. | Hierarchical net list derivation system |
US5535331A (en) | 1987-09-04 | 1996-07-09 | Texas Instruments Incorporated | Processor condition sensing circuits, systems and methods |
US5555201A (en) | 1990-04-06 | 1996-09-10 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information |
US5867399A (en) | 1990-04-06 | 1999-02-02 | Lsi Logic Corporation | System and method for creating and validating structural description of electronic system from higher-level and behavior-oriented description |
US5544067A (en) | 1990-04-06 | 1996-08-06 | Lsi Logic Corporation | Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation |
US5553002A (en) | 1990-04-06 | 1996-09-03 | Lsi Logic Corporation | Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, using milestone matrix incorporated into user-interface |
US5450586A (en) | 1991-08-14 | 1995-09-12 | Hewlett-Packard Company | System for analyzing and debugging embedded software through dynamic and interactive use of code markers |
US5491640A (en) | 1992-05-01 | 1996-02-13 | Vlsi Technology, Inc. | Method and apparatus for synthesizing datapaths for integrated circuit design and fabrication |
EP0592715B1 (en) | 1992-10-15 | 1997-06-11 | Siemens Aktiengesellschaft | Checking design for testability rules with a VHDL simulator |
US5361373A (en) | 1992-12-11 | 1994-11-01 | Gilson Kent L | Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor |
US5404319A (en) | 1993-02-11 | 1995-04-04 | Analog, Inc. | Translation of behavioral modeling properties into an analog hardware description language |
US5519630A (en) * | 1993-03-22 | 1996-05-21 | Matsushita Electric Industrial Co., Ltd. | LSI automated design system |
US5493508A (en) | 1994-06-01 | 1996-02-20 | Lsi Logic Corporation | Specification and design of complex digital systems |
US5590049A (en) | 1994-09-07 | 1996-12-31 | Cadence Design Systems, Inc. | Method and system for user programmable design verification for printed circuit boards and multichip modules |
US5732192A (en) | 1994-11-30 | 1998-03-24 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Global qualitative flow-path modeling for local state determination in simulation and analysis |
US5537580A (en) | 1994-12-21 | 1996-07-16 | Vlsi Technology, Inc. | Integrated circuit fabrication using state machine extraction from behavioral hardware description language |
US5794062A (en) | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
US6026219A (en) | 1995-05-12 | 2000-02-15 | Synopsys, Inc. | Behavioral synthesis links to logic synthesis |
US5867400A (en) | 1995-05-17 | 1999-02-02 | International Business Machines Corporation | Application specific processor and design method for same |
US5898595A (en) | 1995-05-26 | 1999-04-27 | Lsi Logic Corporation | Automated generation of megacells in an integrated circuit design system |
US5841663A (en) | 1995-09-14 | 1998-11-24 | Vlsi Technology, Inc. | Apparatus and method for synthesizing integrated circuits using parameterized HDL modules |
SE505783C3 (sv) | 1995-10-03 | 1997-10-06 | Ericsson Telefon Ab L M | Foerfarande foer att tillverka en digital signalprocessor |
US5870588A (en) | 1995-10-23 | 1999-02-09 | Interuniversitair Micro-Elektronica Centrum(Imec Vzw) | Design environment and a design method for hardware/software co-design |
US5819064A (en) | 1995-11-08 | 1998-10-06 | President And Fellows Of Harvard College | Hardware extraction technique for programmable reduced instruction set computers |
US6035123A (en) | 1995-11-08 | 2000-03-07 | Digital Equipment Corporation | Determining hardware complexity of software operations |
US5696956A (en) | 1995-11-08 | 1997-12-09 | Digital Equipment Corporation | Dynamically programmable reduced instruction set computer with programmable processor loading on program number field and program number register contents |
WO1997022925A1 (en) | 1995-12-15 | 1997-06-26 | Object Dynamics Corp. | Method and system for constructing software components and systems as assemblies of independent parts |
GB2308470B (en) | 1995-12-22 | 2000-02-16 | Nokia Mobile Phones Ltd | Program memory scheme for processors |
EP0782187B1 (en) * | 1995-12-29 | 2000-06-28 | STMicroelectronics S.r.l. | A library of standard cells for the design of integrated circuits |
US5850554A (en) * | 1995-12-29 | 1998-12-15 | Intel Corporation | Compiler tool set for efficiently generating and easily managing multiple program versions of different types |
US5819050A (en) | 1996-02-29 | 1998-10-06 | The Foxboro Company | Automatically configurable multi-purpose distributed control processor card for an industrial control system |
US5854929A (en) | 1996-03-08 | 1998-12-29 | Interuniversitair Micro-Elektronica Centrum (Imec Vzw) | Method of generating code for programmable processors, code generator and application thereof |
US6173434B1 (en) | 1996-04-22 | 2001-01-09 | Brigham Young University | Dynamically-configurable digital processor using method for relocating logic array modules |
US5748875A (en) | 1996-06-12 | 1998-05-05 | Simpod, Inc. | Digital logic simulation/emulation system |
US5812416A (en) | 1996-07-18 | 1998-09-22 | Lsi Logic Corporation | Integrated circuit design decomposition |
US5994892A (en) | 1996-07-31 | 1999-11-30 | Sacramento Municipal Utility District | Integrated circuit design automatic utility meter: apparatus & method |
US6110223A (en) | 1996-10-28 | 2000-08-29 | Altera Corporation | Graphic editor for block diagram level design of circuits |
US6122634A (en) * | 1996-11-12 | 2000-09-19 | International Business Machines Corporation | Fractal nested layout for hierarchical system |
US6006022A (en) | 1996-11-15 | 1999-12-21 | Microsystem Synthesis, Inc. | Cross-linked development and deployment apparatus and method |
US5812130A (en) | 1996-12-06 | 1998-09-22 | International Business Machines Corporation | Data management system and method for concurrent engineering |
US5854930A (en) | 1996-12-30 | 1998-12-29 | Mci Communications Corporations | System, method, and computer program product for script processing |
US5912678A (en) * | 1997-04-14 | 1999-06-15 | Texas Instruments Incorporated | Process flow design at the module effects level through the use of acceptability regions |
US6195593B1 (en) | 1997-09-03 | 2001-02-27 | Seiko Epson Corporation | Reusable modules for complex integrated circuit devices |
US6226776B1 (en) | 1997-09-16 | 2001-05-01 | Synetry Corporation | System for converting hardware designs in high-level programming language to hardware implementations |
US6360350B1 (en) | 1997-10-07 | 2002-03-19 | International Business Corporation | Method and system for performing circuit analysis on an integrated-circuit design having design data available in different forms |
US5999734A (en) | 1997-10-21 | 1999-12-07 | Ftl Systems, Inc. | Compiler-oriented apparatus for parallel compilation, simulation and execution of computer programs and hardware models |
US5949993A (en) | 1997-10-31 | 1999-09-07 | Production Languages Corporation | Method for the generation of ISA simulators and assemblers from a machine description |
US6064382A (en) * | 1997-11-19 | 2000-05-16 | International Business Machines Corporation | Object oriented apparatus and method for providing a graphical user interface for host-based software applications |
US6836877B1 (en) * | 1998-02-20 | 2004-12-28 | Lsi Logic Corporation | Automatic synthesis script generation for synopsys design compiler |
US6421818B1 (en) | 1998-02-20 | 2002-07-16 | Lsi Logic Corporation | Efficient top-down characterization method |
US6378123B1 (en) | 1998-02-20 | 2002-04-23 | Lsi Logic Corporation | Method of handling macro components in circuit design synthesis |
US6425762B1 (en) | 1998-02-24 | 2002-07-30 | Wind River Systems, Inc. | System and method for cosimulation of heterogeneous systems |
US6292925B1 (en) * | 1998-03-27 | 2001-09-18 | Xilinx, Inc. | Context-sensitive self implementing modules |
US6260182B1 (en) | 1998-03-27 | 2001-07-10 | Xilinx, Inc. | Method for specifying routing in a logic module by direct module communication |
US6421808B1 (en) | 1998-04-24 | 2002-07-16 | Cadance Design Systems, Inc. | Hardware design language for the design of integrated circuits |
WO2000022553A2 (en) | 1998-10-14 | 2000-04-20 | Arc Cores Limited | Method and apparatus for managing the configuration and functionality of a semiconductor design |
US6282633B1 (en) | 1998-11-13 | 2001-08-28 | Tensilica, Inc. | High data density RISC processor |
US6477683B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6701515B1 (en) | 1999-05-27 | 2004-03-02 | Tensilica, Inc. | System and method for dynamically designing and evaluating configurable processor instructions |
US6477697B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Adding complex instruction extensions defined in a standardized language to a microprocessor design to produce a configurable definition of a target instruction set, and hdl description of circuitry necessary to implement the instruction set, and development and verification tools for the instruction set |
US6738964B1 (en) * | 1999-03-11 | 2004-05-18 | Texas Instruments Incorporated | Graphical development system and method |
US6449745B1 (en) * | 1999-04-22 | 2002-09-10 | Synopsys, Inc. | Method and apparatus for random stimulus generation |
US6408428B1 (en) | 1999-08-20 | 2002-06-18 | Hewlett-Packard Company | Automated design of processor systems using feedback from internal measurements of candidate systems |
US6457173B1 (en) | 1999-08-20 | 2002-09-24 | Hewlett-Packard Company | Automatic design of VLIW instruction formats |
US6385757B1 (en) | 1999-08-20 | 2002-05-07 | Hewlett-Packard Company | Auto design of VLIW processors |
WO2001033334A1 (en) | 1999-10-29 | 2001-05-10 | Antrim Design Systems, Inc. | Mixed signal synthesis behavioral models and use in circuit design optimization |
JP2001160080A (ja) * | 1999-12-02 | 2001-06-12 | Nec Corp | オブジェクト指向言語によるシステムのシミュレーション方法、装置及びそのプログラムを記録した記録媒体 |
US6763327B1 (en) | 2000-02-17 | 2004-07-13 | Tensilica, Inc. | Abstraction of configurable processor functionality for operating systems portability |
US6425116B1 (en) * | 2000-03-30 | 2002-07-23 | Koninklijke Philips Electronics N.V. | Automated design of digital signal processing integrated circuit |
US6587995B1 (en) * | 2000-04-19 | 2003-07-01 | Koninklijke Philips Electronics N.V. | Enhanced programmable core model with integrated graphical debugging functionality |
US6631508B1 (en) * | 2000-06-07 | 2003-10-07 | Xilinx, Inc. | Method and apparatus for developing and placing a circuit design |
US6546524B1 (en) | 2000-12-19 | 2003-04-08 | Xilinx, Inc. | Component-based method and apparatus for structured use of a plurality of software tools |
US6732238B1 (en) | 2001-06-08 | 2004-05-04 | Tensilica, Inc. | Set-associative cache memory having variable time decay rewriting algorithm |
-
2003
- 2003-04-25 US US10/423,745 patent/US7475000B2/en active Active
- 2003-04-25 EP EP03719949A patent/EP1502214A1/en not_active Withdrawn
- 2003-04-25 AU AU2003223746A patent/AU2003223746A1/en not_active Abandoned
- 2003-04-25 CN CN201210286684.7A patent/CN102902839B/zh not_active Expired - Lifetime
- 2003-04-25 CN CN038152231A patent/CN1666202A/zh active Pending
- 2003-04-25 KR KR1020047017409A patent/KR100818826B1/ko active IP Right Grant
- 2003-04-25 WO PCT/US2003/013014 patent/WO2003091914A1/en not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0844576A2 (en) * | 1996-11-22 | 1998-05-27 | Lsi Logic Corporation | Computer system and method for performing design automation in a distributed computing environment |
US6135647A (en) * | 1997-10-23 | 2000-10-24 | Lsi Logic Corporation | System and method for representing a system level RTL design using HDL independent objects and translation to synthesizable RTL code |
CN1376283A (zh) * | 1998-09-30 | 2002-10-23 | 凯登丝设计系统公司 | 基于块的设计方法 |
US6536033B1 (en) * | 1999-01-28 | 2003-03-18 | International Business Machines Corp. | Uniform mechanism for building containment hierarchies |
Also Published As
Publication number | Publication date |
---|---|
CN1666202A (zh) | 2005-09-07 |
AU2003223746A1 (en) | 2003-11-10 |
KR100818826B1 (ko) | 2008-04-01 |
EP1502214A1 (en) | 2005-02-02 |
KR20050010775A (ko) | 2005-01-28 |
US20030229482A1 (en) | 2003-12-11 |
WO2003091914A1 (en) | 2003-11-06 |
US7475000B2 (en) | 2009-01-06 |
CN102902839B (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102902839B (zh) | 管理集成电路设计的装置和方法 | |
US6292931B1 (en) | RTL analysis tool | |
US6366874B1 (en) | System and method for browsing graphically an electronic design based on a hardware description language specification | |
US6173435B1 (en) | Internal clock handling in synthesis script | |
US6378123B1 (en) | Method of handling macro components in circuit design synthesis | |
Sutherland et al. | SystemVerilog for Design Second Edition: A Guide to Using SystemVerilog for Hardware Design and Modeling | |
US6289498B1 (en) | VDHL/Verilog expertise and gate synthesis automation system | |
US6836877B1 (en) | Automatic synthesis script generation for synopsys design compiler | |
US6205572B1 (en) | Buffering tree analysis in mapped design | |
US6421818B1 (en) | Efficient top-down characterization method | |
US6263483B1 (en) | Method of accessing the generic netlist created by synopsys design compilier | |
Wasserman et al. | The future of programming | |
US7100133B1 (en) | Computer system and method to dynamically generate system on a chip description files and verification information | |
KR101336516B1 (ko) | Eda 툴 설계 뷰들에서 정보를 보호하기 위한 방법 및프로그램 제품 | |
US6957206B2 (en) | Computer system and method with adaptive N-level structures for automated generation of program solutions based on rules input by subject matter experts | |
CN100435154C (zh) | 支持配置实体的选择性表示的配置说明语言的方法和系统 | |
US6289491B1 (en) | Netlist analysis tool by degree of conformity | |
Simpson | FPGA design | |
CN115935872A (zh) | 一种可扩展的fpga仿真验证自动化方法 | |
US7505991B2 (en) | Semantic model development and deployment | |
US6272665B1 (en) | Method and tool for automatically generating engineering change order | |
Wolf et al. | High-level modeling and synthesis of communicating processes using VHDL | |
Bose | Change analysis in an architectural model: a design rationale based approach | |
Dong et al. | Extending UML to Visualize Design Patterns In Class Diagrams. | |
Foulk et al. | Aids-an integrated design system for digital hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: SYNOPSYS TECHNOLOGY CORP. Free format text: FORMER OWNER: ARC INTERNAT Effective date: 20130516 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20130516 Address after: The Middle East Mountain Road No. 700, CA94043 Applicant after: SYNOPSYS Inc. Address before: New Hampshire Applicant before: ARC INTERNATIONAL |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20160406 |
|
CX01 | Expiry of patent term |