光子电路设计系统的制作方法

文档序号:13426422
光子电路设计系统的制作方法

本发明是在政府支持下进行的,合同编号N66001-12-2-4007,由国防高级研究计划署授予。政府对发明具有一定的权利。



背景技术:

随着针对高速计算和通信的需求变得越来越普遍,对如通过光子电路实现的光学系统的使用正在增加。由信息技术行业制定的计算性能预期将很快需要一种全新的互连架构和实现方法,导致对使用光子电路有了更大的需求。特别是,实现大量数据传输的许多通信应用程序将需要由具有每秒艾字节(Exabyte)范围内的聚合带宽能力的高性能光纤互连而成的、具有前所未有的主存储容量级别的、更大的仓储级数据中心。

附图说明

图1示出光子电路设计系统的示例。

图2示出光子电路网表的示例图。

图3示出用于生成光子电路设计图的方法的示例。

具体实施方式

光子电路可以以类似于电子电路的方式来制造。为了设计光子电路,可以手动地执行光子电路部件的布局(例如,通过“点击和拖动”类型的软件来实现)。该方法需要设计者在各个细节层面了解光子部件的物理设计,并且通常使用图形界面来摆放这些光子部件。这种方法可能是乏味且耗时的,这可能会使对工作光子电路的制造和操作大大延迟。该方法也可能是非常容易出错的,因为可能无法保证将被摆放在光子电路中的大量部件在尺寸和位置上是正确的,并且难以验证光子电路的正确操作。这些问题随着开发出更大更复杂的光子电路以满足日益增长的通信要求而变得更加普遍。为此,光子电路设计系统和相关算法可以提供更加精确和更少错误的设计光子电路的方式。

图1示出光子电路设计系统10的示例。光子电路设计系统10可以被实现为对能够在光学通信或其他光学应用领域中以各种方式中的任何一种来发挥作用并且能够用于各种目的的各种光子电路设计图中的任何一种进行设计。光子电路设计系统10包括光子电路设计工具12。光子电路设计工具12可以被配置为接收用户输入以设计光子电路的各种类型的用户界面中的任意一种,诸如计算机、专用工作站、互连网门户网站、图形用户界面(GUI)、或任何其他各种类型的用户界面。因此,光子电路设计工具12可以配置为对可存储在存储器系统16中的光子电路网表14进行设计。作为示例,例如在包括光子电路设计工具12的相关计算机系统中,存储器系统16可以被配置为一个存储器设备或多个存储器设备的排列,而存储器设备被配置为对数据进行存储。如本文所描述的,光子电路网表14可以与生成光子电路设计图18相关联,该光子电路设计图18可以被实现为例如通过制造工具来制造相关联的光子电路。

在图1的示例中,存储器系统16还被配置为对部件库20进行存储。部件库20包括多个规定光子电路部件22和多个规定电子电路部件24。作为示例,规定光子电路部件22可以包括各种类型的光学设备中的任何一种,诸如光栅、反射器、谐振器、偏振部件、滤波器、多模干涉设备、定向耦合器、螺旋移相器、光栅耦合器等。规定光子电路部件22例如可以基于光学信号的波长、偏振或其他特性上的变化而包括各种各样的设备。作为另一示例,规定电子电路部件24可以包括被配置为与规定光子电路部件22相互作用的各种电子部件中的任何一种。例如,规定电子电路部件24可以包括用于热调谐的电阻器、用于载波处理(例如,注入或耗尽)的CMOS放大器、或者可以提供电光效应的各种其他电气接口中的任何一种。

例如,规定光子和/或电子电路部件22和24可以通过光子电路设计工具12被加载到部件库20中,并且被存储在部件库20中,以便基于部件库20中的规定光子和电子电路部件22和24的组合来生成光子电路设计图18。例如,光子电路设计工具12可以被实现为在生成光子电路设计图18的期间对将被存储在部件库20中的规定光子和/或电子电路部件22和24中的给定的一个进行设计和/或定义,例如如本文所描述的,用以满足光子电路设计图18所需的设计要求。

部件库20还被配置为对与规定光子电路部件22中相应的每一个相关联的物理数据26和与规定电子电路部件24中相应的每一个相关联的物理数据28进行存储。物理数据26和28可以包括与相应的规定光子和电子电路部件22和24的各物理方面有关的各种数据,诸如物理规模;端口(输入和/或输出)的数量、尺寸和/或取向;以及与其他相应的规定光子和电子电路部件22和24的接近和/或取向有关的约束。因此,部件库20可以将规定光子和电子电路部件22和24作为参数化的单元格而存储在存储器系统16中,该存储器系统16包括以单独方式以及以共同方式与规定光子和电子电路部件22和24中相应的每一个的物理布局相关的信息。

作为另一示例,规定光子电路部件22可以在部件库20中被定义为预定义的低级别光子部件,例如具有非常基础的光学功能。作为另一示例,规定光子电路部件22可以在部件库20中被定义为高级别光学设备集合,例如包括多个预定义的低级别光学设备和/或电子设备(例如,规定电子部件24)。例如,高级别光学设备集合可以包括具有各种更复杂的光学功能的各种光学设备,例如光学逻辑门或光学调制器等,其包括各种互连的低级别光学设备和/或电子设备。因为低级别光学设备可以被包括在具有已定义的相应的物理数据26和28的规定光子电路部件22和/或规定电子电路部件24中,所以高级别光学设备可以同样地被包括在规定光子电路部件22中并且可以具有预定义的物理数据26。作为示例,光子电路设计工具12可以被实现为生成规定光子电路部件22来作为高级别光学设备,例如如本文所描述的基于在存储为光子电路设计图18之后被存储在部件库20中的高级别光学设备。因此,光子电路设计图18可以随后被实现为更大的光子电路设计图18的一部分(例如,不存在光子电路封装并且具有已定义的物理数据26)。

如前所述,通过光子电路设计工具12来生成光子电路网表14。因此,光子电路网表14可以包括将被包含在要生成的光子电路设计图18中的所有的光子和电子电路部件的列表,并因此将制造出所得光子电路。

图2示出光子电路网表50的示例图。光子电路网表50可以与图1的示例中所描述的光子电路网表14相对应。例如,可以通过光子电路设计工具12来生成光子电路网表50。因此,在以下对图2的示例的描述中将参考图1的示例。

光子电路网表50包括封装约束52,该封装约束52可以是由设计者基于封装(例如,集成芯片)而施加的限制,所得光子电路将在该封装中被制造出。作为示例,封装约束52可以包括与光子电路设计图18的各物理方面有关的规模约束和/或物理约束或各种条件。例如,封装约束52可以包括对光子电路设计图18的输入端口和输出端口的数量和/或位置的约束、以及封装的尺寸和/或规模方面的考虑,其中所得光子电路将在该封装中被制造。此外,如本文所描述的,封装约束52可以包括用于生成光子电路设计图18的另外的约束,诸如响应于设计规则检查(DRC)的突发事件,而该设计规则检查可能会在生成光子电路设计图18的期间出现。

光子电路网表50还包括多个(X个)光子设计部件54和多个(Y个)电子设计部件56,其中X和Y是可以相等也可以不相等的整数。光子设计部件54与将被包括在光子电路设计图18中的光子部件中的每一个相对应,并且可以相对于与波长、偏振、模式或其他光学特性有关的特定光学要求而具体化。作为示例,光子设计部件54可以包括光栅、反射器、谐振器、偏振部件、滤波器、多模干涉设备、定向耦合器、螺旋移相器、光栅耦合器等。在图2的示例中,光子设计部件54中的每一个还可以包括位置约束58和取定约束60。作为示例,位置约束58可以例如基于或考虑到封装约束52或光子设计部件54和/或电子设计部件56中的其他相应的一个,来指定相应的光子电路的所得封装中的光子设计部件54中的给定的一个的优选或所需的位置。作为另一示例,取向约束60可以指定相应的光子电路的所得封装中的光子设计部件54中的给定的一个的优选或所需的取向,例如用以确保相应的光子设备56的适当功能(例如,相对于到光栅耦合器的输入的入射角等)。

类似地,电子设计部件56与将被包括在光子电路设计图18中的电子部件中的每一个相对应,并且可以相对于特定的电气要求或相对于光子设计部件54的相互作用而具体化(例如,相对于设置电压、电流和/或温度的具体振幅)。在图2的示例中,电子设计部件56中的每一个还可以包括位置约束62和/或取向约束63。作为示例,位置约束62可以例如基于或考虑到封装约束52或光子设计部件54中的相应的一个,来指定相应的光子电路的所得封装中的电子设计部件56中的给定的一个的优选或所需的位置。作为另一示例,取向约束63可以指定相应的光子电路的所得封装中的电子设计部件56中的给定的一个的优选或所需的取向,例如用以确保相应的电子设备56的适当功能(例如,基于与具有取向约束60的相应的光子设备54的关联)。在图2的示例中,电子设计部件56可以与光子设计部件54中的具体相应的一个相关联,以基于电子设计部件56的操作来提供光子设计部件54的具体功能。例如,给定的电子设计部件56可以是用于对相应的光子设计部件54(例如,配置为环形谐振器)的波长进行控制的电阻加热元件。因此,给定的电子设计部件56的位置约束62可以提供给定的电子设计部件56与相应的光子设计部件54之间的关联,例如用以建立给定的电子设计部件56与相应的光子设计部件54之间希望或所需的接近度。

另外,光子电路网表50包括端口连接数据64,该端口连接数据64被配置为对光子电路设计图18中的光子设计部件54与电子设计部件56的光学互连以及电气互连进行指定。例如,端口连接数据64可以与光子设计部件54中的每一个相关联,使得光子设计部件54中的每一个可以被表示为数据元素,该数据元素提供相应的光子设计部件54在每个端口(例如,每个输入端口和每个输出端口)处被光学耦合到每个其他的光子设计部件54的列表。另外,在图2的示例中,端口连接数据64包括连接约束66。连接约束66可以例如基于或考虑到封装约束52、位置约束58和/或62、取向约束60、或光子设计部件54和/或电子设计部件56中的其它相应的一个的位置,来指定相应的光子电路的所得封装中的一个或多个波导和/或电气连接(例如,通孔)54的优选或所需的位置。因此,连接约束66可以在生成光子电路设计图18之前对与光子设计部件54和/或电子设计部件56的互连相关联的偏好和/或规定进行定义。

因此,端口连接数据64可以对光子设计部件54中的每个之间的波导连接进行定义。另外,端口连接数据64可以对从一个或多个光子设计部件54到相应的光子设备封装的一个或多个相应的输入和/或输出端口的光学连接进行定义,例如被定义在封装约束52中。此外,以类似的方式,端口连接数据64可以对一个或多个电子设计部件56相对于彼此之间的电气连接进行定义,并且可以对一个或多个电子设计部件56相对于光子设备封装的输入和输出电气信号端口之间的电气连接进行定义,例如被定义在封装约束52中。

因此,光子电路网表50可以包括:将被包括在光子电路中的所有的光子和电子设计部件54和56的列表、以及与光子电路封装有关的数据、与光子和电子设计部件54和56的位置和/或取向有关(例如,基于位置约束58和62以及取向约束60)的设计约束、以及与光子和电子设计部件54和56的互连有关的数据。作为示例,光子电路网表50可以是软件元件(例如,可执行的软件文件),例如可以通过各种不同类型的编程代码(例如,行为寄存器传输级(RTL)代码、VHSIC硬件描述语言(VHDL)代码、或Verilog代码)来生成。如先前在图1的示例中所描述的,光子电路网表50可以保存在存储器系统16中以供访问,用以生成光子电路设计图,如本文更详细描述的那样。

返回参考图1的示例,光子电路设计系统10包括光子电路设计图生成器30。光子电路设计图生成器30可以被配置为软件程序,或者可以被实现为一个或多个专用集成电路(ASIC)或作为一个或多个专用集成电路(ASIC)的一部分。光子电路设计图生成器30被配置为访问光子电路网表14和部件库20以生成光子电路设计图18。作为示例,光子电路设计图生成器30可以访问光子电路网表14以确定将被包括在光子电路设计图18中的光子设计部件54和电子设计部件56。在从光子电路网表14中确定光子和电子设计部件54和56后,光子电路设计图生成器30可以从部件库20中访问与相应的规定光子和电子设计部件22和24相关联的物理数据26和28,该物理数据26和28与光子电路网表14中的相应的光子和电子设计部件54和56相关联。因此,光子电路设计图生成器30可以基于相应的物理数据26和28来提供相关联的光子电路封装中的光子和电子设计部件54和56的物理布局和光学/电气互连,用以按分层方式生成光子电路设计图18。

光子电路设计图生成器30可以在第一层级访问封装约束52以确定与光子电路设计图18相关联的光子电路封装的物理属性,诸如封装尺寸(例如,包括深度、纵横比、和各种其他规模方面的考虑)、输入端和输出端、和/或用户定义的限制等。随后,光子电路设计图生成器30可以在生成光子电路设计图18的过程中进入后续的层级,其中每个层级建立相关联的光子电路封装中的光子和电子设计部件54和56的位置布局和互连。光子电路设计图生成器30可以在生成光子电路设计图18的过程中将光子电路网表14作为整体来处理,例如通过为相关联的光子电路封装中的光子和电子设计部件54和56建立摆放和互连的规则。

例如,光子电路设计图生成器30可以首先在第二层级中为光子设计部件54提供摆放规则,在第三层级中为光子设计部件54提供互连规则,在第四层级中为电子设计部件56提供布局规则,并且在第五层级中为电子设计部件56提供互连规则。因此,由光子电路设计图生成器30实现的分层算法可以在建立所有的摆放和互连规则后,定义相关联的光子电路封装中的光子和电子设计部件54和56的最终摆放和互连,而不是建立摆放和互连并且仅在光子和电子设计部件54和56中的每一个的本地位置处建立DRC(例如,不对相关联的光子和电子设计部件54和56的摆放进行校正)。

作为另一示例,光子电路设计工具12可以被实现为按分层方式来对规定光子和/或电子电路部件22和24进行设计和/或定义。例如,光子电路设计工具12可以被实现为开始于对低级别的规定光子和/或电子电路部件22和24(例如,环形谐振器、定向耦合器或其他低级别设备)的定义,例如通过光子电路设计图生成器30来实现。然后光子电路设计工具12可以被实现为使用已定义的规定光子和/或电子电路部件22和24中的低级别的一个,来形成可以被定义为规定光子和/或电子电路部件22和24中的另外一个的下个更高级别的设备(例如,调制器、光子逻辑门、或另一设备),例如通过光子电路设计图生成器30来实现。然后光子电路设计工具12可以被实现为定义更高级别的设备,例如可以被定义为规定光子和/或电子电路部件22和24中的另外一个的电路部件(例如,诸如锁存器和触发器等较低级别的电路)。因此,光子电路设计工具12和光子电路设计图生成器30可以被实现为生成光子电路设计图18,该光子电路设计图18能够以分层方式来形成规定光子和/或电子电路设备22和24。

在图1的示例中,光子电路设计图生成器30包括位置布局算法32,该位置布局算法32被配置为基于在光子电路网表14中定义的位置约束58和/或取向约束60,将光子设计部件54布置在由封装约束52定义的光子电路封装中,并且基于在光子电路网表14中定义的位置约束62和/或63,将电子设计部件56布置在由封装约束52定义的光子电路封装中。位置布局算法32还可以基于与在光子电路网表14中定义的封装约束52有关的物理数据26和28来提供光子和电子设计部件54和56的布局,例如用以大致上使与光子电路设计图18相关的光子电路的物理尺寸最小化。此外,位置布局算法32可以基于端口连接数据64来提供光子和/或电子设计部件54和56的布局,以大致上使光子和/或电子设计部件54和56之间的连接长度最小化。因此,位置布局算法32可以基于已定义的封装约束52以比如空间有效的方式来提供光子和电子设计部件54和56的物理布局。

作为示例,位置布局算法32可以使用用于计算(X,Y,Z)的位置与取向的理想集合(例如,基于位置约束58和62和/或定向约束60和/或63)的例程,并且基于端口连接数据64,来实现光子和电子设计部件54和56的自动摆放。位置布局算法32可以在光子电路网表14中的所有光学链路中循环,以将光学链路确定为两个光子设计部件54的两个端口的元组。如果上述的两个光子设计部件54中的一个尚未被布置,则位置布局算法32可以基于先前的光子设计部件54的摆放来计算该光子设计部件54的期望位置。作为示例,可以通过使用矢量匹配变换例程来执行光子设计部件54的理想位置的计算,所述矢量匹配变换例程对应当在将被摆放的光子设计部件54上执行的变换进行计算,使得两个端口可以对齐。相应的光子设计部件54的两个端口之间的缺省距离可以是基于相关掩模制造技术的最小特征尺寸的。位置布局算法32还可以对两个光子设计部件54的不期望的重叠进行检测,并且在这种情况下,可以对减轻光子设计部件54的这种碰撞所需的最小平移进行检测。位置布局算法32可以同样地对电子设计部件56相对于光子设计部件54并且相对于彼此的布局执行大致相似的处理。

在图1的示例中,光子电路设计图生成器30向电路设计工具12提供反馈FDBK,例如用以向用户提供反馈以允许用户对光子电路设计图18做出变更和/或便于对其进行校正。作为示例,除了初始自动计算出的摆放之外,用户可以提供对光子和/或电子设计部件54和56的布局的缺省摆放进行覆盖的能力,例如通过指定可被执行的另外的变换来实现。例如,用户可以指定对位置约束58和62和/或取向约束60和/或63的变更,以便基于反馈FDBK来对光子电路设计图18进行变更。例如,用户可能希望指定光子和/或电子设计部件54和56中的给定的一个的所有输入和/或输出端口应当指向封装中的特定方向并且应当通过位置布局算法32被那样布置。因此,用户可以基于反馈FDBK来提供对光子电路设计图18的变更。

在图1的示例中,光子电路设计图生成器30还包括互连算法34,该互连算法34被配置为基于在光子电路网表14中定义的端口连接数据64,将由封装约束52定义的光子电路封装中的光子设计部件54和/或电子设计部件56互连。作为示例,互连算法34可以基于端口连接性数据64来识别光子电路网表14中的相应的光子设计部件54之间的光学连接,并且可以在相应的光子设计部件54的端口之间提供波导连接,例如用以大致上使与光子电路设计图18相关联的光子电路的物理尺寸最小化。例如,互连算法34可以被配置为通过波导来定义光子设计部件54之间在三维中的光学互连。

另外,互连算法34可以对可与最优的封装尺寸约束相对应(例如,基于封装约束52)的最优阈值进行定义(例如,可通过电路设计工具12进行调节),使得互连算法34可以基于最优阈值来定义相应波导在正交角度下的交点。例如,如果互连算法34确定出用以避免波导碰撞的对给定的一个或多个光子设计部件54的重新定位导致了光子电路封装的尺寸增加超过了最优阈值,则互连算法34可以允许相应的光子设计部件54之间的波导的正交相交。作为示例,互连算法34可以实现简单的曼哈顿布线算法,以使用仅通过90°的弯曲而彼此连接的垂直和水平的波导段,来计算连接两个端口的最有效方式。如果互连算法34检测到避免交叉是并不期望的或者是不可避免的(例如,通过最优阈值),则互连算法34可以记录相关波导的正交交点的位置,并为正交交点添加优化后的低损耗布局修复。

互连算法34可以同样地对电气导体的布局执行大致类似的处理,用于电子设计部件56相对于光子电路的电气信号端口并且相对于彼此的互连。作为另一示例,可以不用通过在安排互连之前摆放光子和电子设计部件54和56来按顺序地实现位置布局算法32和互连算法34,而是可以按光子和电子层的序列来操作。例如,在布置光子层的摆放和连接之后(例如,包括光子设计组件54和相关联的互连波导这两者),位置布局算法32可以在电子层中提供电子设计部件56的布局,随后才是用于提供相关联的电气布线的互连算法34。作为示例,可以基于物理数据28、位置约束62和端口连接数据64这三者的组合来标记电气通孔的位置,以通过金属线连接通孔,例如拥有具有给定间距(例如,被放置在相应的电子设计部件的北部、南部、东部或西部)的焊盘阵列。互连算法34还可以实现针对电气导体的曼哈顿布线,具有附加的重新布线功能,其可以避免当某些通孔共享相同的X或Y位置时金属线之间的冲突。基于电气导线的数量,互连算法34还可以对允许在光子电路设计图18的焊盘阵列和通孔之间的无碰撞电气布线而所需的最小距离进行计算。

在通过位置布局算法32对光子和电子设计部件54和56进行布局并且通过互连算法34对光子和电子设计部件54和56进行互连之后,光子电路设计图生成器30可以将光子电路设计图18保存在存储器系统16中。因此,光子电路设计图18可以被访问或者被提供给制造工具,以基于光子电路设计图18来制造一个或多个相应的光子电路封装。因此,可以以比典型的手动光子电路设计方法更省时高效的方式来制造光子电路,并因此可以在开发和设计速度方面节省出大量成本。

此外,因为光子和电子设计部件54和56是从部件库20中的规定光子和/或电子部件22和/或24中选择出的,并且因为光子电路设计图生成器30可以在光子电路设计图18的设计期间提供反馈FDBK,所以光子电路设计图18中的误差可以被大大减轻。例如,部件库20将规定光子和/或电子部件22和/或24存储为光子电路设计图18的基本构建块,先前与基本构建块一起创建了参数设置,使得仅在适当的情况下才创建新的实例。可以使用对部件库20的“生成”功能的调用来创建规定光子和/或电子部件22和/或24的新定义,该新定义可以包括用于当前缺省设置的查找表,而该当前缺省设置用于创建与规定光子和/或电子部件22和/或24中的一个相对应的新的构建块。然后,可以通过阶梯式地接口连接到部件库20来容易地执行扫描,在该部件库20中可以针对规定光子和/或电子部件22和/或24的新实例来实现缺省参数。光子电路设计图生成器30可以在每个扫描点处以正确的设置自动地将规定光子和/或电子部件22和/或24实例化。结果,物理数据26和/或28可以不在较高层级明确地指定相应的光子和/或电子部件22和/或24的属性。因此,可以避免将光子和/或电子部件22和/或24的期望参数从最高层级明确传递到最低层级的需要,使电路扫描的定义更少出错,并且需要显著更少的用户代码。

鉴于前述的结构和以上描述的功能特征,参考图3将更好地理解示例方法。虽然为了简化说明的目的,图3的方法被示出并描述为串行执行,但是应当理解和意识到,本发明不受所示顺序的限制,因为一些实施例可以在其他实施例中以不同的顺序发生和/或与本文所示出和描述的同时发生。

图3示出用于生成光子电路设计图(例如,光子电路设计图18)的方法100的示例实施例。在102,通过在电路设计工具(例如,电路设计工具12)处提供的用户输入来生成光子电路网表(例如,光子电路网表14)。光子电路网表可以包括与光子电路设计图相关联的多个光子设计部件(例如,光子设计部件54)。在104,对与光子电路封装的物理特性相关联的封装约束(例如,封装约束52)进行确定,与光子电路设计图相关联的光子电路将在该光子电路封装中被制造出。在106,从存储在存储器系统(例如存储器系统16)中的部件库(例如,部件库20)中访问与多个光子设计部件中的每一个相关联的物理数据(例如,物理数据26)。在108,实现位置布局算法(例如,位置布局算法32),以基于物理数据和光子电路网表中定义的封装约束,将光子设计部件布置在光子设计封装中的光子电路设计图的物理布局中。在110,实现互连算法(例如,互连算法34),以基于光子电路封装中的光子电路设计图的物理布局并响应于在光子电路网表中定义的端口连接数据(例如,端口连接数据64)和封装约束,来定义多个光子设计部件之间的光学互连。在112,将光子电路设计图存储在存储器系统中。

以上所描述的是示例。当然,不可能对部件或方法的每个可能想到的组合进行描述,但是本领域普通技术人员将认识到许多进一步的组合和排列是可能的。因此,本发明旨在包括落入包含所附权利要求在内的本申请的范围内的所有这样的变更、修改和变化。此外,如果公开内容或权利要求详述了“一”、“第一”或“另一”元素或其等同物,则应将其解释为其包括一个或多于一个的此类元件,既不要求也不排除两个或更多个这样的元件。如本文所使用的术语“包括”是指包括但不限于,术语“包含”是指包含有但不限于。术语“基于”是指基于至少一部分。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1