模拟电路设计的制作方法

专利2023-04-06  110



1.本公开涉及用于模拟电路设计的方法和系统,特别是用于自动化模拟电路的设计过程的方法和系统。


背景技术:

2.模拟组件引起大多数芯片生产测试失败和高达95%的现场失效。虽然近来数字电路的电路设计已在某种程度上实现自动化,但是模拟电路设计的自动化已经证明是有问题的,不仅是由于例如寄生效应。传统的模拟电路设计方式可涉及由工程团队依靠先验知识和经验而手动执行的“最佳猜测”估计或规范保护间隔,通常导致电路过度设计而效率低下,或容易故障。因此,创建更有效和更可靠的设计模拟电路的方法是有需求的。


技术实现要素:

3.本发明的各方面如独立权利要求中所述,可选特征如从属权利要求中所述。本发明的各方面可以相互结合,且一个方面的特征可以应用于其他方面。
4.在第一方面,提供了一种模拟电路设计装置。装置包括至少一个设计单元,该设计单元被配置为:
5.接收表示所述模拟电路的技术要求的信息;
6.基于所接收的信息,识别用于形成所述模拟电路的多个电路部分;
7.为所述多个电路部分的每个电路部分确定所述每个电路部分的相应技术标准;
8.产生包括每个电路部分的相应设计的一组设计;
9.对于所述多个电路部分中的至少一个电路部分,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,所述模拟电路中将经历所述寄生;
10.基于所获取的与寄生相关的信息来改动至少一个电路部分的设计;以及
11.输出包括完整的电路设计,所述完整的电路设计基于所获取的与寄生相关的信息来改动的至少一个电路部分。
12.可以理解的是,获取与寄生相关的信息可以包括提取与寄生相关的信息。
13.有利地,这种设计装置使得能够估计寄生并将其考虑为初始设计过程的一部分,这在以前对于模拟电路来说是非常困难的。此外,模拟电路设计装置可以自动设计模拟电路以满足客户的要求,以及实现机器学习。因此,设计者不必再手动地(重新)设计模拟电路。
14.在一些示例中,可以获取与电路的该组件或部分的上下文相关的信息,并将其用作设计过程的一部分——换句话说,当将电路的该部分或部件原位放置在所完成的电路中时将经历什么(在一些示例中,上下文可以作为技术标准的一部分来提供,尽管在其他示例中,上下文可以作为技术标准之外的某些内容来提供)。上下文可以包括电路的部分或组件在使用中经历的参数和变量。可以基于模拟与该给定电路部分或组件交互的一个(或多个)电路部分或组件的性能,或者甚至通过模拟包括该给定电路部分或组件的已完成电路来生
成任何给定电路部分或组件的上下文。例如,至少一个设计单元可以被配置为:基于至少一个其他电路部分的上下文为对应电路部分产生至少一个相应的设计。
15.可以理解的是,模拟电路设计装置可以包括初级设计单元和多个二级设计单元。每个初级设计单元可以被配置为:
16.基于所接收的信息,识别用于形成所述模拟电路的多个电路部分;
17.为所述多个电路部分中的每个电路部分确定所述每个电路部分的相应技术标准;以及
18.向所述多个二级设计单元中的至少一个二级设计单元提供所述每个电路部分的相应技术标准。
19.模拟电路设计装置的多个二级设计单元中的每个二级设计单元被配置为:
20.a)基于由所述初级设计单元提供的技术标准设计所述多个电路部分的相应电路部分;以及
21.b)输出所得到的、所述相应电路部分的设计。
22.初级设计单元还可以被配置为:
23.c)从每个二级设计单元获得包括每个电路部分的相应设计的一组设计;
24.d)基于该组设计生成所述模拟电路的至少一个初始设计;
25.e)获取与寄生相关的信息,其中,如果所述模拟电路包括该电路部分,在所述模拟电路中将经历所述寄生。
26.至少一个二级设计单元可以被配置为:基于与寄生相关的信息改动相应电路部分的设计。
27.初级设计单元可以被配置为输出包括至少一个所改动的电路部分的完整电路设计。
28.在一些示例中,模拟电路设计单元被配置为:通过多次重复步骤a)至e)来填充寄生和电路设计的数据库,其中,每次重复步骤a)至e)时,通过所述初级设计单元提供新的技术标准。模拟电路设计单元可被配置为:针对与所识别的或所选择的电路结构匹配的预定义电路部分或元件,和/或针对已知的或所选择的结构或功能块(例如,dac、电平移位器、比较器等)重复步骤a)至e)。预定义电路部分可对变化敏感。例如,dac上的桥接依赖于比较器输入级的总电容,其中包括输入设备的寄生电容和任何路由。
29.模拟电路设计装置可以被配置为:通过在虚拟测试台中数学模拟以下至少之一的性能:(i)设计的电路部分和(ii)包括设计的电路部分的完整模拟电路,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,所述模拟电路中将经历所述寄生。
30.额外地或可选的,设计装置可以被配置为:通过在电路设计和寄生的数据库中执行查找,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。例如,寄生可以使用各种术语(包括但不限于配置、过程、拓扑和任何其他尺寸因素)从单个电路元件(电路的部分)的数据库查找中导出。
31.额外地或可选地,模拟电路设计装置可以被配置为:通过在电路设计和寄生的数据库中对相似的生成的设计进行查找,获取与所生成的设计经历的寄生相关的信息。可以理解的是,相似的生成的设计可以包括具有大于所选定的相似性阈值水平(例如,大于所选定的共同特征阈值水平)的设计。
32.额外地或可选地,设计装置被配置为:在电路设计和寄生的数据库中查找相似的各个电路部分的相应电路部分中的至少一个电路部分,并且其中,所述设计装置被配置为:基于通过对所述相应电路部分中的至少一个电路部分的查找获取的寄生的值,获取与所生成的设计经历的寄生相关的信息。
33.在一些示例中,设计装置被配置为:通过使用机器学习模型来预测寄生,以获取与所生成的设计所经历的寄生相关的信息。额外地或可选地,设计装置可以被配置为:使用机器学习模型来预测寄生,来获取与每个相应电路部分经历的寄生有关的信息。在一些示例中,机器学习模型可已使用设计装置进行了训练。
34.可以理解的是,寄生包括以下至少之一:寄生电容、寄生电阻和寄生电感。
35.在一些示例中,模拟电路设计装置被配置为:在与所生成的设计经历的寄生相关的信息指示所述寄生大于选定的寄生阈值水平的情况下,改动相应电路部分的设计。在一些示例中,技术标准可以指定寄生的可接受阈值水平。在这样的示例中,与所生成的设计经历的寄生相关的信息可以指示电路(和/或电路的部分)不再满足技术标准。在这样的示例中,基于与寄生相关的信息改动相应部分的设计可以包括:改动技术标准,例如,改动至少一个相应电路部分的技术标准。
36.另一方面,提供了一种训练用于预测所设计的模拟电路中的寄生的机器学习模型的方法。该方法包括:
37.在模拟电路设计装置的多个二级设计单元中的每个二级设计单元处:
38.a)基于由所述初级设计单元提供的技术标准设计所述多个电路部分的相应电路部分;以及
39.b)输出所得到的、所述相应电路部分的设计;以及
40.在模拟电路设计装置的初级设计单元中:
41.c)从所述多个二级设计单元中的至少一个二级设计单元获得包括每个电路部分的相应设计的一组设计;
42.d)基于该组设计生成所述模拟电路的至少一个初始设计;
43.e)通过使用虚拟测试台对所生成的设计的性能进行数学模拟,获取与所述电路部分中的至少一个电路部分以及所生成的设计经历的寄生相关的信息和与所生成的设计相关的信息;以及
44.多次重复步骤a)至e),其中,每次重复步骤a)至e)时,由初级设计单元提供新的技术标准。
45.可以理解的是,在一些示例中,步骤d)是可选的,并且可以在生成模拟电路的初始设计之前获得与电路部分的寄生相关的信息。还可以理解的是,获取与寄生相关的信息可以包括提取与寄生相关的信息。
46.在一些示例中,方法可进一步包括步骤f)填充寄生和对应电路设计的数据库。当重复步骤a)至e)时,可以重复此步骤。然后,可以使用数据库来训练机器学习模型(例如,神经网络、卷积神经网络或深度学习模块),以估计电路设计的寄生,例如不包含在数据库中的电路设计的寄生。神经网络可以包括以下至少之一:深度残差网络(resnet,resnet)、高速公路网络(highway network)、密集连接网络(densenet,densely connected network)和胶囊网络(capsule network)。
47.在另一方面,提供了一种设计模拟电路的方法。该方法包括:
48.接收表示所述模拟电路的技术要求的信息;
49.基于所接收的信息,识别用于形成所述模拟电路的多个电路部分;
50.为所述多个电路部分的每个电路部分确定所述每个电路部分的相应技术标准;产生包括每个电路部分的相应设计的一组设计;
51.对于所述多个电路部分中的至少一个电路部分,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,所述电路部分和/或模拟电路中将经历所述寄生;
52.基于所获取的与寄生相关的信息来改动至少一个电路部分的设计;以及
53.输出包括完整的电路设计,所述完整的电路设计基于所获取的与寄生相关的信息来改动的至少一个电路部分。
54.方法还包括:在模拟电路设计装置的初级设计单元处:
55.基于所接收的信息,识别用于形成所述模拟电路的多个电路部分;
56.为所述多个电路部分中的每个电路部分确定所述每个电路部分的相应技术标准;以及
57.向所述多个二级设计单元中的至少一个二级设计单元提供所述每个电路部分的相应技术标准;
58.方法还包括:在模拟电路设计装置的每个二级设计单元处:
59.a)基于由所述初级设计单元提供的技术标准设计所述多个电路部分的相应电路部分;以及
60.b)输出所得到的、所述相应电路部分的设计;以及
61.还包括,在所述初级设计单元处:
62.c)从每个二级设计单元获得包括每个电路部分的相应设计的一组设计;
63.d)基于该组设计生成所述模拟电路的至少一个初始设计;
64.e)获取与寄生相关的信息,其中,如果所述模拟电路包括该电路部分,在所述模拟电路中将经历所述寄生。
65.可以理解的是,获取与寄生相关的信息可以包括提取与寄生相关的信息。
66.方法还可以包括:
67.在至少一个二级设计单元处:基于与寄生相关的信息改动相应电路部分的设计;以及
68.在所述初级设计单元处:输出包括至少一个所改动的电路部分的完整电路设计。
69.方法还可以包括:通过多次重复步骤a)至e)来填充寄生和电路设计的数据库,其中,每次重复步骤a)至e)时,通过所述初级设计单元提供新的技术标准。方法可以包括:针对与所识别的或所选择的电路结构匹配的预定义电路部分或元件,和/或针对已知的或所选择的结构或功能块(例如,dac、电平移位器、比较器等)重复步骤a)至e)。预定义电路部分可对变化敏感。例如,dac上的桥接依赖于比较器输入级的总电容,其中包括输入设备的寄生电容和任何路由。
70.在一些示例中,方法包括:通过在虚拟测试台中数学模拟所生成的设计的性能,获取与寄生有关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。
71.额外地或可选的,方法可以包括:通过在电路设计和寄生的数据库中执行查找,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。
72.额外地或可选地,方法可以包括:通过在电路设计和寄生的数据库中查找相似的生成的设计,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。可以理解的是,相似的生成的设计可以包括具有大于所选定的相似性阈值水平(例如,大于所选定的共同特征阈值水平)的设计。
73.额外地或可选地,方法可以包括:在电路设计和寄生的数据库中查找相似的各个电路部分的相应电路部分中的至少一个电路部分;以及基于通过对所述相应电路部分中的至少一个电路部分的查找获取的寄生的值,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。
74.额外地或可选的,方法可以包括:通过使用机器学习模型预测寄生来获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。额外地或可选地,方法可以包括:使用机器学习模型来预测寄生,来获取与每个相应电路部分经历的寄生有关的信息。在一些示例中,机器学习模型可已使用设计装置进行了训练。
75.可以理解的是,寄生包括以下至少之一:寄生电容、寄生电阻和寄生电感。
76.在一些示例中,在与寄生相关的信息指示所述寄生大于选定的寄生阈值水平的情况下,执行对相应电路部分的设计的改动。在一些示例中,技术标准可以指定寄生的可接受阈值水平。在这样的示例中,与所生成的设计经历的寄生相关的信息可以指示电路(和/或部分电路)不再满足技术标准。在这样的示例中,基于与寄生相关的信息改动相应部分的设计可以包括:改动技术标准,例如,改动至少一个相应电路部分的技术标准。
77.在一些示例中,基于与寄生相关的信息改动相应部分的设计包括:改动相应电路部分的相应技术标准。
78.可以理解的是,该方法还可以包括根据输出设计制作模拟电路。
79.在另一方面,提供了一种计算机可读非瞬时性存储介质,包括用于计算机的程序,该程序被配置为使处理器执行上述任意方法。
附图说明
80.现将参照附图仅以示例的方式对本公开的实施例进行说明,在附图中:
81.图1a示出了示例模拟电路的功能示意图;
82.图1b示出了划分为概念块的图1a的功能示意图;
83.图2示出了用于设计模拟电路的计算机实现的层级模型的功能示意图;
84.图3示出了用于设计模拟电路的计算机实现的模型的另一示例实现方式的功能示意图;
85.图4示出了例如使用图2或图3的示例计算机实现的模型的设计模拟电路的方法的功能示意流程图;
86.图5示出了例如使用图2或图3的示例计算机实现的模型的设计模拟电路的另一示例方法的功能示意流程图;
87.图6a示出了由计算机实现的层级模型(例如,参考图1a至图5中的任一描述的模型)设计的模拟电路的部分(portion);
88.图6b示出包括图6a的电路部分的所设计的模拟电路的示例;以及
89.图7示出了用于训练机器学习模型以估计或预测寄生的示例方法的示意图。
具体实施方式
90.图1a示出了示例模拟电子电路的简化功能示意图,该模拟电子电路在该示例中是模数转换器(adc)1000。模拟电路可以包括多个部分或组件,例如,比较器1001、数模转换器(dac)1002、电平移位器1003和运算放大器(op-amp)1004。虽然最初可以单独考虑每个部分或组件,但当作为整体原位应用于电路中时,该部分或组件在其中操作的上下文(context)或环境可影响该组件/块的操作,并因此影响电路部分以及电路作为整体所经历的寄生。,由于模拟电路的不同部分/组件之间涉及复杂的反馈回路和数学关系,先前已证明模拟电路的设计难以自动化。
91.权利要求的实施例涉及用于自动化模拟电路的设计的方法和系统,该方法和系统可以预测或预计所设计的电路或所设计的电路的部分中的寄生,从而可以设计更有效的电路。本技术的发明人已经通过开发一种计算机实现的模型来实现这一点,该模型将设计模拟电路的部分或组件的责任委托给相应的单元或“块”。该模型的示例如图2所示。这样的层级模型涉及使用用作控制实体的初级设计单元900(称为“父块”(parent block)),以及多个称为“子块”(child block)的二级设计单元950a-950d,该二级设计单元从初级设计单元或父块接收关于它们需要设计什么的指令。每个二级设计单元或子块950a-950d被配置为基于从父900接收的指令来设计模拟电路的相应组件或部分。这些指令包括组件或部分需要满足的技术要求(“标准”)(例如功能要求)。
92.指令还可以包括与该电路的组件或部分的上下文有关的信息——换句话说,当将该电路的部分或组件原位放置在已完成电路中时会经历什么(在一些示例中,上下文可以作为技术标准的一部分来提供,尽管在其他示例中,上下文可以作为技术标准之外的某些内容来提供)。上下文可以包括电路的部分或组件在使用中经历的参数和变量。可以基于模拟与该给定电路部分或组件交互的一个(或多个)电路部分或组件的性能,或者甚至通过模拟包括该给定电路部分或组件的所完成的电路来生成任何给定电路部分或组件的上下文。例如,父块900可被配置为从每个子块950a-950d设计的部分或组件组装所完成的电路,并模拟所组装的电路的操作。可基于数学计算或提取来额外地或可选地生成任何给定电路部分或组件的上下文。
93.通过以这种方式设计模拟电路,可以(例如,通过父块900)估计由相应电路部分或包括多个相应电路部分的电路经历的寄生,并且如果需要,可以创建能够减轻寄生的适配电路。
94.计算机实现的层级模型是迭代的。一旦父块900已指示每个子块950a-950d设计它们各自的部分,则很可能需要对电路及其相应部分进行一定程度的重新设计,以考虑从其他子块950a-950d设计的相应电路部分产生的寄生和/或可选地的上下文。
95.特别地,一旦设计了电路部分或所完成的模拟电路的初始设计,由于特定电路部分或所完成的模拟电路可能经历的所估计的寄生,可能需要改动电路部分和/或所完成的
模拟电路的设计。因此,可以重复设计电路部分的过程,以改动一个或多个电路部分的设计,以考虑所估计的寄生,试图减轻和减少寄生。可由子块950a-950d迭代地重复改动电路部分的设计的过程,例如直到考虑到对模拟电路的任何其他部分或组件的任何调整引起的所估计的寄生中的任何变化为止。例如,该过程可以迭代地重复,直到所估计的寄生中的任何变化小于所选择的寄生中变化的阈值水平。
96.可以基于模拟与该给定电路部分交互的一个(或多个)电路部分的性能,或者甚至通过模拟包括该给定电路部分的所完成的电路来生成任何给定电路部分的寄生。例如,父块900可被配置为从每个子块950a-950d设计的部分组装所完成的电路,并模拟所组装的电路的操作。可基于数学计算或提取来额外地或替代地生成任何给定电路部分的寄生。额外地或可选地,任何给定电路部分的寄生可以通过在电路设计和寄生的数据库中执行查找来获得和/或使用机器学习模型来预测。
97.本发明人已发现有利地是,这种迭代层级模型允许模拟电路的设计自动化。因此,有利地,这意味着可以避免过度设计的模拟电路和/或具有不可接受的寄生的电路,而是设计和创建更有效的电路。
98.如上所述,图1a出了示例模拟电路1000,在该示例中,模拟电路1000是模数转换器(adc)。从概念上来讲,例如基于它们各自的功能,电路可以划分为与电路的不同部分或组件对应的功能块。例如,adc可包括比较器1001、数模转换器(dac)1002、多个电平移位器1003和一个或多个op-amp 1004。在图1a示的示例中,可以概念性地将电路划分为与这些不同部分或组件对应的块。例如,如图1b示,比较器可在概念上被划分为第一“子块”950a、dac被划分为第二子块950b、电平移位器被划分为第三子块950c、以及op-amp被划分为第四子块950d。adc作为整体可在概念上分类为其自身的块(在图1b标记为“父(parent)”900)。可以理解的是,adc本身可在较大的模拟电路内形成概念块。
99.如上所述,在原位使用中,在模拟电路的每个不同块之间存在相互影响。这些块之间的原位相互作用(可能包括当各个部分放置在所完成的电路中时所经历的寄生),以及因此,当每个块被放置在该电路中时经历的参数和变量会影响该电路的性能。例如,电路中使用的op-amp的规格可取决于比较器、dac和/或电平移位器的选择和设计以及它们之间的连接所产生的许多参数和变量。
100.本发明人已经认识到,相应电路部分的设计和选择因此应该以考虑完整的电路和/或相应电路部分所经历的寄生(可选地,以及由每个相应电路部分的上下文引起的相互作用)的方式执行,从而设计具有最小寄生的完整模拟。
101.可影响这些不同块的选择和设计的参数和变量的示例的非详尽列表可包括:硅工艺、温度范围、输出负载、输出阻抗、输入电容、输入共模范围、输入差分摆幅、供应电压、可用晶体管类型、输出共模范围、输出摆幅、稳定时间、噪声容限、电源抑制比(psrr)、共模范围-输入(输入cmr)、共模范围-输出(输出cmr)、线性度、最大偏移、带宽、最小回转速率、固有延迟、最小相位裕度、有源功耗、静态功耗、ip3点、滤波器中心频率、滤波器带通范围、负载阶跃响应、线阶跃响应、输出精度、噪声系数、校准范围、噪声下限、信噪比(snr);有效位数(enob)、信噪失真比(sinad)、输出频率范围、峰峰值抖动(jitter-ptp)、均方根抖动(jitter-rms)、输出纹波ptp、总谐波失真、启动时间、通道隔离、参考电压、增益误差、偏移误差、增益漂移。
102.这些参数和变量可称为块所在的“上下文”(context)或环境。为了创建最优的模拟电路,了解这上下文可以改进电路的设计。然而,当然可以理解的是,模拟电路的设计是迭代过程,其中一个块的选择和调整可影响另一个块的上下文,等等。因此,一旦选择/调整一个块的组件,则可能需要调整或重新选择另一个块的组件以形成电路部分,以考虑到所完成的电路/电路部分所经历的寄生和/或可选地该块所在的新的上下文。这样的迭代过程手动执行是不实际的,容易出错,只能通过通信来检测。
103.如上所述,图2中示出了模拟电路的设计自动化的方法中使用的示例计算机实现的模型。图2示意性地示出了图1b中所示和上面讨论的块、以及块之间的交互作用。
104.在图2所示的示例中,模型的每个块负责设计由该块指示的组件/功能。在图2中,子1 950a负责设计比较器1001,子2 950b负责设计dac 1002,子3 950c负责设计电平移位器1003,以及子4 950d负责设计op-amp 1004。父块900负责整体上设计adc 1000,并将设计adc的部分/组件/功能的责任委派给子块950a-950d。在一些示例中,父块900可以选择需要多少子块950a-950d,以及赋予每个块的责任。尽管子块950a-950d以顺序示出,但应理解,该顺序不一定代表设计电路的部分的顺序。例如,父块900可以指示负责op-amp的子块950d首先设计电路的该部分。在一些示例中,子块950a-950d可以被配置为首先设计输出,并由此向后工作。
105.虽然每个对应的电路部分最初可以由对应的相应块独立地设计,但当作为整体原位应用于电路时,每个对应的电路部分在其中工作的上下文可能影响相应电路部分以及作为整体的电路的工作方式。该操作还将包括电路作为整体在使用时将经历的寄生。因此,虽然父块可以指示每个子块设计它们各自的部分,但是一旦父块900从每个子块950a-950d所设计的部分或组件组装出所设计的电路的初始版本,则很可能需要一定程度地改动或者甚至重新设计电路1000及其部分或组件,以考虑到产生的寄生以及可选地由其他子块950a-950d所设计的部分所创建的上下文。如上所述,这将是迭代过程。
106.因此,父块900被配置为用作控制器,处理及操纵由每个子块执行的设计过程。为了执行该功能,如图2所示,父块900可以包括多个不同模块,每个模块被配置为执行作为设计过程的一部分的不同功能。图2中的父块包括指示模块901、组装模块902以及验证和模拟器模块903。
107.指示模块901被配置为接收对要设计的电路的客户要求,以及诸如工艺设计工具包(process design kit,pdk)/条件/控制参数之类的例如由代工厂指示的其他需求,并被配置为将这些转换成一系列或一组技术标准,每个子块950a-950d在设计其各自的电路组件时需要满足这些标准。指示模块901还被配置为准备并向每个子块950a-950d发送说明他们需要设计什么以及他们在如此做时需要满足什么标准的指令。指令还可以包括由其他子块设计的电路的其他设计部分的上下文,以及电路的该部件或部分要在其中操作的电路的更宽的上下文。例如,可考虑到上下文来调整技术标准。
108.组装模块902被配置为接收和整理由每个子块950a-950d提供的模拟电路的所有各自的设计部分或组件,并基于各个所设计的部分或组件组装完整的模拟电路。然后,验证和模拟器模块903可以测试所完成的模拟电路。
109.验证和模拟器模块903被配置为从每个子块接收所设计的组件,并将这些组件与技术要求集进行比较,以确定所设计的部分或组件是否令人满意。这可包括将它们的性能
与客户要求进行比较,例如,通过验证所设计的相应电路部分或组件是否满足其对应的技术标准和/或所设计的模拟电路是否满足客户需求。它可以额外地或替代地包括确认检查,以在某些技术限制内操作的意义上确定所设计的电路是否有效。
110.验证和模拟器模块903还被配置为作为“测试台”并模拟电路的组装组件的工作。这样的模拟可产生寄生信息以及可选的上下文信息。例如,验证和模拟器模块903可以被配置为:通过在虚拟测试台中数学模拟以下至少之一的性能:(i)设计的电路部分和(ii)包括设计的电路部分的完整模拟电路,获取与寄生相关的信息,其中如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。额外地或可选地,验证和模拟器模块903可被配置为:通过在电路设计和寄生的数据库中执行查找(例如,通过在电路设计和寄生的数据库中执行查找相似的生成的设计),获取与寄生相关的信息,其中,如果模拟电路包括设计的电路部分,将在模拟电路中经历该寄生。额外地或可选地,验证和模拟器模块903可被配置为:在电路设计和寄生的数据库中查找相似的各个电路部分的相应电路部分中的至少一个,并基于通过对相应电路部分中的至少一个电路部分的查找获取的寄生的值,获取与所生成的设计经历的寄生相关的信息。在一些示例中,验证和模拟器模块903被配置为:通过使用机器学习模型来预测寄生,以获得与所生成的设计所经历的寄生相关的信息。
111.验证和模拟器模块903还可以被配置为:填充寄生和电路设计的数据库,例如,如果指示模块901指示子块950a-950d多次重复基于(新的或所改动的)相应技术标准设计电路部分的过程。
112.验证和模拟器模块903可额外地将电路的模拟的性能与客户需求进行比较,并可选地验证设计的电路部分是否满足其对应的技术标准和/或所设计的模拟电路是否满足客户需求。在一些示例中,可以理解的是,模拟器模块可以代替验证模块903。
113.每个子块950a-950d还包括多个不同的模块,每个模块被配置为执行作为设计过程的一部分的不同的功能。在图2所示的示例中,每个子块950a-950d包括转换器模块951a-951d、组装模块952a-952d和模拟器模块953a-953d。可以理解的是,在一些示例中,每个子块950a-950d可进一步包括用于指示第三级设计单元或“孙”(grandchild)块的附加模块,类似于图2中的父块900包括例如用于由子块950a-950d指示和验证的设计过程的指示模块和验证模块的方式,如下文将参考图3至图6更详细地描述。
114.每个子块950a-950d的转换器模块951a-951d被配置为接收由父块900接收的技术标准、以及可选地作为整体的电路的上下文以及电路的其他组件的上下文,并将这些转换成用于设计模拟电路的部分或组件以满足这些标准的一组要求。可以理解的是,在一些示例中,可作为技术标准的一部分来提供和接收上下文信息,但在其他示例中,可以以另外的(例如,分开的)技术标准来提供上下文信息。
115.组装模块952a-952d被配置为选择和/或设计电子组件以满足其提出的要求,这些要求满足由父块和作为整体的电路的上下文和/或电路的其他组件的上下文所规定的标准。
116.模拟器模块953a-953d还可以被配置为模拟那些组件将如何原位运行以检查/验证由组装模块设计的已设计部分或组件在技术上是否可行。在一些示例中,模拟器模块953a-953d还可以以类似于上述父块900的验证和模拟器模块903的方式获取与其块设计的
相应电路部分的寄生相关的信息(可以理解的是,在这些示例中,由于这可能已经由每个子块950a-950d的模拟器模块953a-953d执行,因此父块900的验证和模拟器模块903可以不需要获取与寄生相关的信息)。
117.在使用中,父块900接收一组要设计的模拟电路1000的要求。在图2所示的示例中,父块900接收要设计的adc的一组要求,该adc具有某些特性,包括例如由将制造adc的代工厂指定的特性。父块900接收这些要求,并且指示模块901将这些转换成一组技术标准。然后将这些技术标准发送到每个子块950a-950d。
118.指示模块901可以并行地(即全部同时)或串行地(例如,其中,将标准被发送到子1,然后是子2,然后是子3,等等)将这些技术标准发送至每个子块950a-950d。在一些示例中,指示模块901在将一组技术标准发送给下一子块之前,可以等待直到从第一个子块接收到所设计的电路,且在一些示例中,指示模块可以被配置为基于从先前的子块接收到的设计的电路——换句话说,基于从先前的子块所接收的设计的电路的上下文来调整发送给下一子块的技术标准。
119.在将技术标准串联发送到子块950a-950d的示例中,技术标准可以包括区分技术标准的哪些部分与哪些子块950a-950d相关的方式——例如,技术标准可以包括识别技术标准的特定部分是否与子块950a-950d相关的报头或标志。这些报头或标志可以由父块900确定,并且相应地调整技术标准以将他们合并。
120.每个子块950a-950d从父块900接收这些技术标准,并且每个相应的转换器模块951a-951d将这些转换成用于设计模拟电路的部分或组件以满足这些技术标准的一组要求。组装模块952a-952d接收这些要求并设计满足这些要求的电路的组件/部分。可以理解的是,该设计过程可包括在已知电路设计(或电路部分)的数据库中进行查找,并找到最匹配技术标准的电路设计。
121.然后,模拟器模块953a-953d模拟电路的这些组件/部分将如何在原位工作,以检查由组装模块设计的电路的已设计组件/部分在技术上是否可行和/或验证相应设计的相应电路部分是否满足其相应的技术标准。如果设计的电路部分满足其相应的技术标准,那么子块950a-950d被配置为将电路的所设计部分或组件发送或输出至父块900。如果设计的电路部分不满足其对应的技术标准,则子块950a-950d被配置为改动其电路部分的设计并重复该过程。
122.一旦父900从所有子块950a-950d接收回电路的所有设计部分或组件,则父900的组装模块902接着从每个子块设计的部分或组件组装完整的电路(在此案例中是adc),并通过验证和模拟器模块903验证所设计的电路是否满足技术要求。可以通过模拟所组装的电路如何执行并将该模拟的性能与客户要求和/或技术要求进行比较来做到这一点。可以理解的是,在一些示例中,所完成的模拟电路设计的这种模拟性能可以(例如对于另一设计单元)获取寄生和/或可选地上下文信息,且父900可以基于通过所完成的模拟电路设计的模拟获得的获取寄生和/或上下文信息来调整技术标准。
123.如果所设计的电路的模拟性能不满足客户要求或技术要求(例如,所模拟的电路的参数大于与技术要求规定的参数不同的阈值水平,例如寄生在寄生的阈值水平之上),则验证模块903将此传送给指示模块901。然后,指示模块901可以基于电路的模拟性能与技术要求之间的差异来调整技术标准,并将这些修订的技术标准发送回子块950a-950d。
124.在一些示例中,父块900(例如,验证模块903/指示模块901)可以被配置为确定电路的哪个部分或组件对不满足技术要求的电路负责(例如,哪个部分负责较大比例的寄生),并在可以识别子块950a-950d的情况下,父块900可以被配置为仅向对电路的不满足部分或组件负责的子块发送修订的技术标准。然而,在其他示例中,可将所修订的标准发回所有子块950a-950d。还可以理解的是,在一些示例中,父模块900可以确定可能需要额外的和/或可选的子块950a-950d和/或孙块来设计电路的相关部分或组件,例如以满足修订的技术标准。
125.然后,该过程以迭代的方式继续,其中,每个子块950a-950d的转换器模块951a-951d从父块900接收这些所修订的或改动的技术标准,并将这些转换成用于设计模拟电路的部分或组件以满足那些改动的技术标准的新的一组要求。组装模块952a-952d接收这些新的要求并设计满足这些要求的电路的组件/部分。然后,模拟器模块953a-953d可以模拟电路的重新设计的组件/部分将如何在原位工作,以检查由组装模块设计的电路的已设计的组件/部分在技术上是否可行。然后,子块950a-950d被配置为将电路的(重新)设计的组件/部分发送回父块900。
126.一旦父900从所有子块950a-950d接收回电路的所有(重新)设计的组件/部分,则父900接着从每个子块设计的组件/部分组装完整的电路(在此案例中是adc),并通过验证和模拟器模块903验证所设计的电路是否满足技术要求,验证和模拟器模块903可以模拟所组装的电路如何执行并比较该模拟性能与技术要求。如果模拟性能不满足技术要求,则重复该过程,由此将所修订的标准组发送回子块950a-950d。在一些示例中,父900(例如验证和模拟器模块903)可以用设计电路/电路部分及其所模拟的寄生来填充数据库,例如,以用于训练机器学习模型或用于将来估计寄生。
127.可以理解的是,子块950a-950d和/或父块900还可以包括循环缓解模块,以停止无休止的重新设计循环的发送。例如,循环缓解模块可配置为具有先前设计的电路的记录,并且如果重新设计的电路的组件/部分或所完成的电路与先前设计的电路的组件/部分或所完成的电路相同,或者仅与先前设计的电路的组件/部分或所完成的电路的差异小于选定的差异的阈值水平,则输出循环指示。例如,父块900可以包括循环缓解模块,并可被配置为在循环缓解模块提供循环指示的情况下,结束设计过程并接受最后设计的电路作为完成的电路。额外地或可选地,例如,如果以所选定的迭代次数重复设计过程,父块900可被配置为降低选定的差异的阈值水平。这可具有发现满足技术要求的“最佳折衷”工作电路的效果。
128.图3示出了用于设计模拟电路的计算机实现的模型的另一示例实现方式的功能示意图;模型的实现在许多方面类似于图2中所示的模型,且图3中的父块和子块可认为具有上文针对图2中的父900和子块950a-950d所描述的功能。此外,图3中的二级设计单元或子块950a-950d可认为具有图2中描述的关于初级设计单元或父块900的一些功能,其中,子块在其下具有第三级设计单元或“孙”块,以此类推。
129.更详细地,如图3所示,模型层级结构包括核心设计层,该核心设计层包括初级设计单元或父块。尽管在图3中的核心设计层中仅示出了一个父块900,但可以理解的是,在一些示例中可能存在一个以上的父块900,例如其中每个父块900并行地操作。例如,每个父块900可以被配置为设计模拟电路的不同方面(例如,功能和/或结构上彼此不同)。
130.在核心设计层下面是第一设计层。第一设计层包括耦接至上一层(在此案例中是
核心设计层)的父块900的二级设计单元或子块950。在所示的示例中,有六个子块,都耦接至核心设计层的父块。子块950被分组为两个不同的组:第一组包括子块1、2和3;以及第二组包括子块3、4和5。每个子块950耦接至父块900。这两个组可以表示父块900指示并行设计的模拟电路的不同功能区域或部位。
131.在所示的示例中,第一组的子块950并联耦接至核心设计层的父块900,第二组的子块950并联耦接至核心设计层的父块900。可以用这样的方式对子块950进行分组,以设计模拟电路的不同区域或方面(例如,功能和/或结构上彼此不同)。然而,可以理解的是,在一些示例中,并非第一设计层的所有子块950都需要并联耦接至核心设计层的父块。例如,第一设计层的子块1和3可以耦接至核心设计层的父块900,第一设计层的子块2可以分别串联耦接至第一设计层的子块1和3。
132.子块950的分组可由核心设计层的父块900确定。例如,父块900可以被配置为对第一设计层的子块进行分组,以设计模拟电路的不同方面(例如,功能和/或结构上彼此不同)。核心设计层的父块900可被配置为基于来自客户规范的要求的确定来做到这点。
133.在第一设计层下面是第二设计层。第二设计层包括第三级设计单元或子块1、2、3、4、5、6、7和8 960。孙块960耦接至上一层(第一设计层)的子块。并非第一设计层的每个子块都耦接至第二设计层的孙块。在所示的示例中,第二设计层的子块1、2和3并联地耦接至第一设计层的子块2。然而,如上对于第一设计层的子块950的描述,可以理解的是,在一些示例中,并非第二设计层的所有孙块950都需要并联耦接至第一设计层的子块。例如,第二设计层的孙块1和3可以耦接至第一设计层的子块2,第二设计层的孙块2可以分别串联耦接至第二设计层的孙块1和3。
134.在第二设计层下面是另一(第n)设计层。第n设计层包括重孙块(greatgrandchild block)1、2、3和4 970。重孙块970以与第二设计层的孙块960耦接至第一设计层的子块950几乎相同的方式耦接至上一层(第二设计层)的孙块960。因此可以理解的是,位于第二设计层下方可以存在多个另外的设计层,每个另外的设计层包括耦接至上一层的块的它们自身的块。
135.图3所示的块层级结构使得模型的不同层的块被配置为以不同的复杂程度设计模拟电路的方面或部分。例如,父块900可以被配置为设计完整的模拟电路,子块950被配置为设计模拟电路的功能组件(例如运算放大器、ac/dc转换器、电平移位器、比较器、电压调节器、电源开关等),以及子块960被配置为设计该功能组件的组件(例如,针对该组件的电阻器、晶体管、电容器、二极管、电感器等的配置)。然而,可以理解的是,孙块960可被配置为设计更多层级的块,例如运算放大器或电压基准或比较器等。
136.(核心设计层的)父块900可被配置为确定所选层的块被配置为设计的复杂程度,和/或一层的块可被配置为确定下面层的块被配置为设计的复杂程度。
137.额外地或可选地,图3所示的块层级结构使得模型的不同层的块被配置为基于不同的功能或结构要求来设计模拟电路的方面或部分。例如,一层可以包括被配置为基于一个功能要求(例如尺寸)设计模拟电路的方面或部分的块,而另一层可以包括被配置为设计另一功能要求(例如电流或电压)的块。
138.图4示出了例如使用图2或图3的示例计算机实现的层级模型的设计模拟电路的方法的功能示意流程图;
139.更详细地,在步骤300,父块900接收客户要求。例如,客户要求可以界定电路的功能和由其要求的某些限制——例如峰值电流、电压等。客户要求还可以指定其他特征,例如将由其制造电路的pdk/代工厂。父块900被配置为将客户要求转换302为一组技术标准。父块900可以额外地或可选地被配置为确定是并行地或串行地将这些技术标准发送给子块950,和/或是否将不同的标准组发送给下面层的子块950。
140.在此阶段,父块900还可以被配置为确定模型的层的数量,或者可选地,每一层的块可以被配置为当设计由上层中的块负责设计的电路的部分时,确定是否需要下方层的块。
141.一旦父块900已将客户要求转换302成标准,则父块900将客户要求发送304到第一层的子块。在所示的示例中,父块900并行地向子块1、子块2和子块3发送304技术标准。
142.一旦接收到技术标准,在该示例中,子1确定306其需要接合下面层的块(孙块960),并指示孙1基于标准来设计电路的第一部分。同时,子2基于技术标准设计307电路的初始第三部分,而子3基于技术标准设计308电路的初始第四部分。
143.孙1基于技术标准设计308电路的第一部分,并将该设计的第一部分发送312回给子1,然后子1可以(可选地,在首先执行了一些模拟/验证之后)将该第一部分转发给父。然后子1指示314孙2基于标准设计电路的第二部分。孙2基于标准设计316电路的第二部分,并将该第二部分发送318回子1,然后子1可将该第二部分转发给父。
144.一旦子1(通过孙1和孙2)设计了电路的第一和第二部分,子1向子2发送320上下文信息。子2可以基于从子1获得的上下文信息来改动或调整从父接收的技术标准。然后子2基于从子1接收的上下文信息来改动电路的初始设计的第三部分。
145.在图4所示的示例中,一旦电路的第三部分已由子2设计,则可以将设计的所改动的第三部分发送到父,并将上下文信息发送324到子3。上下文信息可以包括由电路的第一、第二和第三部分创建的上下文。然后子3基于所接收的上下文信息改动326电路的第四部分的初始设计,并将所设计的第四部分发送328到父块900。
146.一旦父块900已接收到电路的所有所设计的部分,父块900就基于从子块获得的一组设计生成模拟电路的初始设计,并检查或验证330所设计的完成的电路是否满足客户要求。如上所述,父块900可通过使用验证和模拟模块来做到这一点,以模拟所完成的电路的性能。父块900还获取与如果所述模拟电路包括所有设计的电路部分时所述模拟电路中将经历的寄生相关的信息。
147.在所设计的完成的电路不满足客户要求的情况下,父块可以将所调整的标准直接重新发送332到负责设计对不满足要求负责的电路部分的块,并提供关于需要调整什么内容(以及可选地由哪个块调整)的额外的信息——例如,可以调整标准以考虑用于重新设计块以满足客户要求的额外的信息。在一些示例中,父块900可以仅将所设计的电路的部分发送332回负责设计该部分的块——例如,父块900可以将模拟电路的第一部分发送回孙1,例如具有关于需要调整的信息和/或具有所调整的标准。
148.在上述示例中可以理解,模拟电路的第一、第二、第三和第四部分可以是电路的独立部分和/或在功能上相互依赖。在其它示例中,模拟电路的第一、第二、第三和第四部分可以是模拟电路的选定子集。例如,第二部分可以包括第一部分的部分,第三部分包括第一和第二部分的部分,第四部分包括第一、第二和第三部分的部分。
149.虽然图4所示的示例示出了父块仅在所有子块都设计了他们各自的电路部分之后才获得与寄生相关的信息,但在一些示例中,父块900可以在每个子块设计了其对应的部分之后以及在下一个子块设计其对应的电路部分之前获得与寄生相关的信息。
150.图5示出了例如使用图2或图3的示例计算机实现的层级模型的设计模拟电路的另一示例方法的功能示意流程图。图5的方法具有许多与图4的方法相同的特征。
151.在步骤500,父块900接收客户要求。如上述参考图4的方法,客户要求可以界定电路的功能和由其要求的某些限制——例如峰值电流、电压等。客户要求还可以指定其他特征,例如将由其制造电路的pdk/代工厂。
152.父块900被配置为将客户要求转换5202为一组标准。父块900可以附加地或可选地被配置为确定是并联地或串联地将这些标准发送给子块950,和/或是否将不同的标准组发生给下面的层的子块950。
153.在此阶段,父块900还可以被配置为确定模型的层的数量,或者可选地,每一层的块可以被配置为当设计由上层中的块负责设计的电路的部分时,确定是否需要下方层的块。
154.一旦父块900已将客户要求转换502成标准,则父块900将客户要求发送504到第一设计层的子1。这些标准可以指定要使用该层的多少子块950、以及哪个子块950将负责设计模拟电路的每个部分。
155.在接收到标准时,子1基于所接收到的标准设计506模拟电路的第一部分。可以理解的是,子1可被配置为基于由父模块确定的、适用于它的标准的子集/第一部分来设计模拟电路的第一部分。
156.一旦子1设计了模拟电路的第一部分,则从父块900接收的标准可以指示子1将所设计的电路的第一部分和标准发送508到同一层的第二子(子2)。子2可以基于所接收的标准设计510模拟电路的第二部分,并在一些示例中,可以仅基于标准的子集(例如,仅适用于它的那些部分)或基于所有标准设计模拟电路的第二部分。
157.子2还基于由子1设计的模拟电路的所设计的第一部分创建的上下文来改动模拟电路的第二部分的设计。在一些示例中,该上下文可以以所调整的一组标准的形式来表示——例如,子1和/或父块可被配置为基于由子1设计的电路的所设计的第一部分提供的上下文和/或寄生来调整标准,尽管将理解的是,在其他示例中,上下文和/或寄生可以在标准之外/单独地提供。例如,在父块包括验证和仿真器模块的示例中,验证和仿真模块可以模拟电路的所设计的部分或组件的性能以获得上下文和/或寄生。另外或可选地,在每个子块包括验证和仿真器模块的示例中,验证和仿真模块可以模拟电路的所设计的部分或组件的性能以获得上下文和/或寄生。
158.在一些示例中,子2可确定需要使用较低层的块来设计其负责设计的电路的部分,和/或确定是否串联和/或并联地使用较低层的这些块。额外地或可选地,子2接收的标准可以指示(例如,由父块确定)子2将使用较低层的块来设计子2负责设计的电路的部分(以及是串行还是并行地使用这些块)。例如,如图6所示,子2可以可选地指示512孙1和孙2来设计模拟电路的第二部分的子集。在这样的示例中,子2可可选地验证513由下面层的块设计的电路的部分(在所示的示例中,孙1和孙2)是否满足对它们所要求的标准。
159.然后,子2向子3发送514所设计的第一部分、所设计的第二部分和标准。在一些示
例中,可由先前的子修改标准。例如,在将标准发送给下一个子之前,可以由子1和/或子2来修改标准。例如,子2可以被配置为基于电路的所设计的第一部分和/或电路的所设计的第二部分来修改其发送给子3的标准。
160.然后,子3基于所接收的标准以及额外地或可选地电路的所设计的第一部分和/或所设计的第二部分来设计516模拟电路的第三部分。
161.然后,子3将所完成的电路发送518到父块,父块基于相应电路部分设计的组生成模拟电路的初始设计,并检查或验证520所设计的完整的电路是否满足客户要求。如上所述,父块可通过使用验证和模拟模块来做到这一点,以模拟所完成的电路的性能。父块900还获取与如果所述模拟电路包括所有设计的电路部分时所述模拟电路中将经历的寄生相关的信息。
162.如果所设计的完成的电路不满足客户要求,父块可以将所设计的完成的电路重新发送522到子块1,其中具有关于需要调整什么(以及可选地由哪个块进行调整)的额外的信息。额外地或可选的,在所设计的完成的电路不满足客户要求的情况下,父块可仅将所设计的电路的部分发送524回负责设计该部分的块——例如,父块可以将模拟电路的第二部分发送回子2,例如具有关于需要调整的信息和/或具有所调整的标准。然后,子2可以设计电路的该部分,并将其直接发送回父块以检查是否满足客户要求,或者发送至子3,然后子3可以基于所重新设计的电路的第二部分(和/或可选地基于所调整的标准)来重新设计电路的第三部分。
163.在上述示例中,可以理解的是,模拟电路的第一、第二、第三和第四部分可以是电路的独立部分和/或在功能上相互依赖。在其它示例中,模拟电路的第一、第二、第三和第四部分可以是模拟电路的选定子集。例如,第二部分可以包括第一部分的部分,第三部分包括第一和第二部分的部分,第四部分包括第一、第二和第三部分的部分。
164.虽然图5所示的示例示出了父块仅在所有子块都设计了他们各自的电路部分之后才获得与寄生相关的信息,但在一些示例中,父块900可以在每个子块设计了其对应的部分之后以及在下一个子块设计其对应的电路部分之前获得与寄生相关的信息。
165.图6a示出了输入缓冲器、电平移位器、dac和比较器。这些中的每一个可以形成所完成的模拟电路的一部分,例如图6b中所示的所完成的adc。
166.如上所述,图6a和6b中所示的示例已使用计算机实现的层级模型来设计。父块(或初级设计单元)负责设计整个adc,而子块(或二级设计单元)分别负责输入缓冲器、电平移位器、dac和比较器中的每一个。父块接收来自用户的技术要求,并将这些技术要求转换成由每个子块用来设计电路的各个部分的技术标准。子块在设计电路的各个部分时考虑并使用电路的其他部分的上下文。模型也是迭代的,其中,一旦父块900已指示每个子块950a-950d设计它们各自的部分或组件,就执行电路及其部分的一定程度的重新设计,以在设计各个电路部分和整个电路时使用由电路的其他部分提供的上下文。如上所述,每个子块和/或父块还可以执行确认/验证以确定所设计的部分/完整电路是否满足所要求的的技术要求。
167.在图6b所示的所设计的电路中,之所以有两个dac,是因为电路提供了差分adc工作
……
之所以有多个(在所示的示例中,是三个)输入缓冲器,是因为使用两个缓冲器来缓冲两个输入,且基准也被缓冲作为输入。
168.如上所述,模拟电路设计装置可以利用机器学习模型来估计其设计的任何电路或电路部分的寄生。
169.机器学习模型可以包括神经网络。所述神经网络可以包括以下至少之一:深度残差网络、高速公路网络、密集连接网络和胶囊网络。
170.对于任何这种类型的网络,网络可以包括多个不同的神经元,多个不同的神经元被组织成不同的层。每个神经元被配置为接收输入数据,处理该输入数据并提供输出数据。每个神经元可被配置为对其输入执行特定操作,例如,这可涉及对输入数据进行数学处理。每个神经元的输入数据可以包括来自多个其他前面的神经元的输出。作为神经元对输入数据的操作的一部分,对每个输入数据流(例如,针对每个向神经元提供其输出的前面的神经元的一个输入数据流)分配权重。这样,神经元对输入数据的处理包括对不同的输入数据流应用权重,使得输入数据的不同项将或多或少对神经元的总体输出作出贡献。对神经元的输入值的调整,例如作为输入权重改变的结果,可引起该神经元的输出值的改变。来自每个神经元的输出数据可以被发送至多个后续神经元。
171.神经元是分层的。每层包括多个神经元,该多个神经元对前面各层中的神经元的输出提供给他们的数据进行操作。在每层中可能有大量不同的神经元,每个神经元对其输入数据应用不同的权重并对其输入数据执行不同的操作。层中所有神经元的输入数据可以是相同的,神经元的输出将传递给后续层中的神经元。
172.不同层中的神经元之间的精确路由形成了胶囊网络和深度残差网络(包括如高速公路网络和密集连接网络等变体)之间的主要区别。
173.对于残差网络,层可以被组织成块,使得网络包括多个块,每个块包括至少一个层。对于残差网络,来自一层神经元的输出数据可以遵循不止一条不同的路径。对于传统的神经网络(例如,卷积神经网络),来自一层的输出数据被传递到下一层,并且这一直持续到网络的末尾,使得每一层接收来自紧接在他前面的层的输入,并向紧接在他后面的层提供输出。然而,对于残差网络,层之间可能会发生不同的路由。例如,来自一个层的输出可以传递到多个不同的后续层,并且对于一个层的输入可以从多个不同的前面的层接收。
174.在残差网络中,神经元层可以被组织成不同的块,其中,每个块包括至少一层神经元。块可以与堆叠在一起的层一起设置,使得前一层(或前面多层)的输出馈入下一层块的输入。残差网络的结构可以是使得来自一个块(或层)的输出被传递到紧随其后的块(或层)和至少一个其他后来的后续块(或层)中。可以在神经网络中引入捷径,将数据从一个层(或块)传递到另一个层(或块),同时绕过两者之间的其他层(或块)。因为这可以使得在训练网络时能够解决与退化相关的问题(下面将更详细地讨论),因此这可以使得例如在处理非常深的网络时能够更有效地训练网络。残差神经网络的布置可以使分支能够发生,使得将提供给一个层或层块的相同输入提供给至少一个其他层或其他层块(例如,使得其他层可以对来自一个层或层块的输入数据和输出数据进行操作)。当使用反向传播算法训练网络时,这种设置使得能够更深地渗透进网络。例如,这是因为在学习期间,层或层块可以将前面的层/块的输入和前面的层/块的输出作为输入,并且在更新网络的权重时可以使用捷径来提供更深的渗透。
175.对于胶囊网络,层可以嵌套在其他层的内部以提供“胶囊”。可以改动不同的胶囊,使得他们比其他胶囊更擅长执行不同的任务。胶囊网络可以提供胶囊之间的动态路由,使
得对于给定任务,将任务分配给最有能力处理该任务的胶囊。例如,胶囊网络可以避免将输出从层中的每个神经元路由到下一层中的每个神经元。较低级别的胶囊被配置为将其输入发送到更高级别(后续)的胶囊,所述更高级别(后续)的胶囊被确定为是最有可能处理该输入的胶囊。胶囊可以预测更高层胶囊的活动。例如,胶囊可以输出向量,向量的方向表示所讨论对象的属性。作为响应,每个后续胶囊可以提供训练胶囊以识别的对象存在于输入数据中的概率作为输出。该信息(例如,概率)可以被反馈至胶囊,然后胶囊可以动态地确定路由权重,并将输入数据转发至最有可能处理该数据的相关胶囊的后续胶囊。
176.对于任一类型的神经网络,可以包括具有不同功能的多个不同层。神经网络可以包括至少一个卷积层,该卷积层被配置为在其高度和宽度上对输入数据进行卷积。神经网络还可以具有多个滤波层,每个滤波层包括多个神经元,该多个神经元被配置为聚焦于输入数据的不同部分并将滤波器应用于输入数据的不同部分。可包括用于处理输入数据的其他层,例如,诸如最大池化和全局平均池化的池化层(以引入非线性)、整流线性单元层(relu,rectified linear units layer)和损失层,例如,其中一些层可包括正则化函数。最后一个层块可以接收来自最后一个输出层(或者更多的层,如果存在分支的话)的输入。最后的块可以包括至少一个完全连接的层。
177.最后的输出层可以包括分类器,例如,softmax、sigmoid或tanh分类器。不同的分类器可适用于不同类型的输出;例如,sigmoid分类器可适用于输出为二元分类器的情况。本公开的神经网络可以被配置为预测目标和测试对象之间的结合亲和力。在这种情况下,输出可以是对平衡解离常数值的预测。神经网络的输出可以提供目标和测试对象适合的概率的指示。可以提供是否需要对目标和测试对象之间的配合进行更详细的分析的指示作为输出,例如以二进制形式,其中,第一输出指示“是”,第二输出指示“否”。在这种情况下,网络可以作为筛选器,用于提取需要更详细检查的更小的化合物组。
178.图7示出了用于训练机器学习模型以估计寄生的示例方法的示意图。神经网络700被配置为接收设计的电路部分和/或模拟电路作为输入710。设计的电路部分和/或模拟电路可以存储在数据库中,并可能已使用初级设计单元和二级设计单元的层级模型、使用上述参考图1a至图6b的计算机实现的模型来设计。电路部分和/或模拟电路可以矢量化和/或编码,例如,通过使用独热编码来提供二进制格式。然后,这个输入被输入到神经网络中的一组3d层中。该网络有多个特征,随着网络训练的进行,这些特征可能会发生变化。对于每个神经元,可以有多个权重,每个权重应用于针对来自前面的层中的神经元的输出数据的相应输入流。这些权重是可以修改的变量,以提供对神经网络的输出的改变。这些权重可以根据训练进行修改,以便提供更准确的数据。作为对训练这些权重的响应,所修改的权重被称为已“学习”。此外,层的大小和连接性可以依赖于网络的典型输入数据;尽管这些也可以是变量,可以在训练中修改和学习,包括加强连接。
179.为了训练网络,例如学习权重的值,这些权重被分配初始值。这些初始值本质上可以是随机的;然而,为了改进网络的训练,可以对这些值应用适当的初始化,例如,xavier/glorot初始化。这样的初始化可以抑制初始随机权重过大或过小的情况发生,而神经网络永远不能正确训练以克服这些初始偏见。这种类型的初始化可以包括使用具有零均值但固定方差的分布来分配权重。
180.一旦分配了权重,训练对象数据可以被馈送或输入710至神经网络700中。这可以
包括在已知的所设计的电路(和/或电路部分)对和相应的所估计的/所模拟的和/或已知寄生上操作神经网络,以输出720针对输入电路部分/模拟电路的所预测的寄生。基于该信息,在网络上执行例如使用梯度下降(例如,随机梯度下降)和损失函数的反向传播优化方法,以将所预测的寄生与针对该电路部分/模拟电路的预期或已知的寄生进行比较730。例如,使用虚拟测试台可能已获取预期的或已知的寄生。在此过程中可以使用小批量梯度下降、rmsprop、adam、adadelta和nesterov等算法。这可以使得能够识别网络中的每个不同点(神经元)或(在后续层中的神经元之间)路径对确定不正确分数有多大贡献,从而使得能够确定740需要进行的任何权重调整。然后可以根据所计算的误差来调整750权重。例如,将对错误判断有贡献或贡献最大的神经元的贡献最小化或删除。
181.在用不同的所的设计的电路(和/或电路部分)对和相应的寄生训练网络的一次迭代之后,可以更新750权重,且可以重复该过程可以很多次。为了抑制过度训练网络的可能性,训练变量(例如,学习速率和动量)可以改变和/或控制在所选定的值。此外,可以使用例如l2或随机失活(dropout)正则化技术,这些技术减少不同层变得过度训练而对训练数据过于具体,而不能普遍适用于其他相似数据的可能性。同样,批量归一化可以用于帮助训练和提高准确性。一般说来,调整权重,使得如果再次对相同的训练图像进行操作,网络将产生预期的结果。虽然这在多大程度上是真的将取决于训练变量,例如学习率。
182.可以理解的是,例如,由于消失梯度问题,增加神经网络的深度可能在训练时引起问题,并且还可能提供较慢的网络。然而,本公开可以使得能够提供具有增加的深度和精确度的网络,而不牺牲充分训练网络的能力。
183.可以选择所使用的网络的深度以提供精度和提供输出所花费的时间之间的平衡。增加网络的深度可以提供更高的精确度,尽管它也可能增加提供输出所花费的时间。使用分支结构(与在卷积神经网络中相反)可以使网络的充分训练随着网络深度的增加而发生,这反过来又使网络的精确度增加。
184.在本公开的上下文中可以理解的是,可形成标准基础的示例模拟参数的非穷尽列表包括:噪声容限、电源抑制比(psrr)、共模范围-输入(输入cmr)、共模范围-输出(输出cmr)、线性度、最大偏移、带宽、最小回转速率、固有延迟、最小相位裕度、有源功耗、静态功耗、ip3点、滤波器中心频率、滤波器带通范围、负载阶跃响应、线阶跃响应、输出精度、噪声系数、校准范围、噪声底限、信噪比、enod、sinad、输出频率范围、jitter-ptpt、jitter-rms、输出纹波ptp、总谐波失真、启动时间、通道隔离、参考电压、增益误差、偏移误差、增益漂移。
185.还可以理解的是,设计单元(诸如主、二级和第三级设计单元)可以以软件或硬件(例如作为专用电路)来实现。例如,设计单元可以作为计算机系统的一部分来实现。计算机系统可以包括用于在计算机系统的各个组件之间传递信息数据、信号和信息的总线或其它通信机制。这些组件可以包括输入/输出(i/o)组件,该i/o组件处理用户(即,发送者、接收者、服务提供者)动作,例如,从小键盘/键盘中选择按键、选择一个或多个按钮或链接等,并向总线发送相应的信号。i/o组件还可以包括输出组件,例如显示器和光标控制(例如键盘、小键盘、鼠标等)。收发器或网络接口可以通过网络在计算机系统和其他设备(例如,另一用户设备、商家服务器或服务提供商服务器)之间发送和接收信号。在一个实施例中,传输是无线的,尽管其他传输介质和方法也可为合适的。处理器可以是微控制器、数字信号处理器(dsp)或其他处理组件,并处理这些各种信号,例如用于在计算机系统上显示或通过通信链
路传输到其他设备。处理器还可以控制诸如cookie或ip地址的信息到其他设备的传输。
186.计算机系统的组件还可以包括系统存储器组件(例如,随机访问存储器(ram))、静态存储组件(例如,只读存储器(rom))和/或磁盘驱动器(例如,固态驱动器、硬盘驱动器)。计算机系统通过执行包含在系统存储器组件中的一个或多个指令序列,由处理器和其他组件执行特定操作。
187.逻辑可在计算机可读介质中进行编码,计算机可读介质可指参与向处理器提供指令以供执行的任何介质。这种介质可以采取多种形式,包括但不限于非易失性介质、易失性介质和传输介质。在各种实现方式中,非易失性介质包括光盘或磁盘,易失性介质包括动态存储器,例如系统存储器组件,传输介质包括同轴电缆、铜线和光纤。在一个实施例中,逻辑在非瞬时性计算机可读介质中进行编码。在一个示例中,传输介质可以采取声波或光波的形式,例如,在无线电波、光学和红外数据通信期间产生的声波或光波。
188.计算机可读介质的一些常见形式包括,例如软盘、软性磁盘、硬盘、磁带、任何其他磁性介质、cd-rom、任何其他光学介质、穿孔卡、纸带、任何其他具有孔图案的物理介质、ram、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、闪存eprom(flash-eprom)、任何其他存储芯片或盒式存储器、或计算机适于从中读取的任何其他介质。
189.在本公开的各种实施例中,用于实践本公开的指令序列的执行可由计算机系统执行。在本公开的各种其他实施例中,通过通信链路耦合到网络(例如,诸如局域网(lan)、无线局域网(wlan)、公共交换电话网络(ptsn)和/或各种其他有线或无线网络,包括电信、移动和蜂窝电话网络)的多个计算机系统600可执行指令序列以彼此协调地实施本公开。
190.还可以理解的是,本公开的各方面可以使用硬件、软件或硬件和软件的组合来实现。此外,在适用的情况下,在不脱离本公开的精神的情况下,本文所述的各种硬件组件和/或软件组件可以组合成包括软件、硬件和/或两者的复合组件。在适用的情况下,在不脱离本公开的范围的情况下,本文所述的各种硬件组件和/或软件组件可以被分离成包括软件、硬件或两者的子组件。此外,在适用的情况下,可以预期的是,软件组件可以实现为硬件组件,反之亦然。
191.根据本发明的软件,例如程序代码和/或数据,可以存储在一个或多个计算机可读介质上。还可以预期的是,本文所标识的软件可以使用一个或多个通用或专用计算机和/或计算机系统、联网和/或以其他方式来实现。在适用的情况下,可以改变本文描述的各种步骤的顺序,将其组合成复合步骤,和/或将其分离成子步骤,以提供本文描述的特征。
192.本文描述的各种特征和步骤可以实现为系统,该系统包括存储本文描述的各种信息的一个或多个存储器以及耦合到一个或多个存储器和网络的一个或多个处理器的系统,其中,一个或多个处理器可操作以执行如本文所述的步骤,作为包括多个机器可读指令的非瞬时性机器可读介质,当由一个或多个处理器执行时,该机器可读指令适于使一个或多个处理器执行包括本文所述步骤的方法,以及由一个或多个设备(例如,硬件处理器、用户设备、服务器和本文所述的其他设备)执行的方法。
193.在本公开的上下文中,对本领域技术人员来说,在此描述的设备和方法的其他示例和变型将是显而易见的。

技术特征:
1.一种模拟电路设计装置,包括至少一个设计单元,所述设计单元被配置为:接收表示所述模拟电路的技术要求的信息;基于所接收的信息,识别用于形成所述模拟电路的多个电路部分;为所述多个电路部分的每个电路部分确定所述每个电路部分的相应技术标准;产生包括每个电路部分的相应设计的一组设计;对于所述多个电路部分中的至少一个电路部分,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生;基于所获取的与寄生相关的信息来改动至少一个电路部分的设计;以及输出完整的电路设计,所述完整的电路设计包括基于所获取的与寄生相关的信息而改动的至少一个电路部分。2.根据权利要求1所述的模拟电路设计装置,包括:初级设计单元和多个二级设计单元;其中,所述初级设计单元被配置为:基于所接收的信息,识别用于形成所述模拟电路的多个电路部分;为所述多个电路部分中的每个电路部分确定所述每个电路部分的相应技术标准;以及向所述多个二级设计单元中的至少一个二级设计单元提供所述每个电路部分的相应技术标准;其中,所述模拟电路设计装置的所述多个二级设计单元中的每个二级设计单元被配置为:a)基于由所述初级设计单元提供的技术标准设计所述多个电路部分的相应电路部分;以及b)输出所得到的、所述相应电路部分的设计;以及其中,所述初级设计单元还被配置为:c)从所述多个二级设计单元中的每个二级设计单元获得包括所述每个电路部分的相应设计的一组设计;d)基于该组设计生成所述模拟电路的至少一个初始设计;e)获得与在电路部分中和/或如果所述模拟电路包括该电路部分时在所述模拟电路中将经历的寄生相关的信息;以及其中,所述二级设计单元中的至少一个二级设计单元被配置为:基于与寄生相关的信息改动相应电路部分的设计;以及其中,所述初级设计单元被配置为输出包括至少一个所改动的电路部分的所述完整电路设计。3.根据权利要求2所述的模拟电路设计装置,其中,所述模拟电路设计单元被配置为:通过多次重复步骤a)至e)来填充寄生和电路设计的数据库,其中,每次重复步骤a)至e)时,通过所述初级设计单元提供新的技术标准。4.根据前述权利要求中任一项所述的模拟电路设计装置,其中,所述设计装置被配置为通过在虚拟测试台中数学模拟以下至少之一的性能:(i)设计的电路部分;和(ii)包括设计的电路部分的完整模拟电路,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。
5.根据前述权利要求中任一项所述的模拟电路设计装置,其中,所述设计装置被配置为通过在电路设计和寄生的数据库中执行查找,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。6.根据前述权利要求中任一项所述的模拟电路设计装置,其中,所述设计装置被配置为通过在电路设计和寄生的数据库中查找相似的生成的设计,获取与生成的设计经历的寄生相关的信息。7.根据前述权利要求中任一项所述的模拟电路设计装置,其中,所述设计装置被配置为:在电路设计和寄生的数据库中查找相似的各个电路部分的相应电路部分中的至少一个电路部分;并且其中,所述设计装置被配置为:基于通过对所述相应电路部分中的至少一个电路部分的查找获取的寄生的值,获取与所生成的设计经历的寄生相关的信息。8.根据前述权利要求中任一项所述的模拟电路设计装置,其中,所述设计装置被配置为:通过使用机器学习模型来预测寄生,获得与所生成的设计所经历的寄生相关的信息。9.根据前述权利要求中任一项所述的模拟电路设计装置,其中,所述寄生包括以下至少之一:寄生电容、寄生电阻和寄生电感。10.根据前述权利要求中任一项所述的模拟电路设计装置,其中,所述模拟电路设计装置被配置为:在与所生成的设计经历的寄生相关的信息指示所述寄生大于选定的寄生阈值水平的情况下,改动相应电路部分的设计。11.根据前述权利要求中任一项所述的模拟电路设计装置,其中,所述装置被配置为:通过改动相应电路部分的对应技术标准,基于与寄生相关的信息来改动相应部分的设计。12.一种训练机器学习模型的方法,所述机器学习模型用于预测设计的模拟电路中的寄生,所述方法包括:在模拟电路设计装置的多个二级设计单元中的每个二级设计单元处:a)基于由所述初级设计单元提供的技术标准设计所述多个电路部分的相应电路部分;以及b)输出所得到的、所述相应电路部分的设计;以及在模拟电路设计装置的初级设计单元处:c)从所述多个二级设计单元中的至少一个二级设计单元获得包括每个电路部分的相应设计的一组设计;d)基于该组设计生成所述模拟电路的至少一个初始设计;e)通过使用虚拟测试台对所生成的设计的性能进行数学模拟,获取与所述电路部分中的至少一个电路部分以及所生成的设计经历的寄生相关的信息和与所生成的设计相关的信息;以及多次重复步骤a)至e),其中,每次重复步骤a)至e)时,由初级设计单元提供新的技术标准。13.一种用于设计模拟电路的方法,包括:接收表示所述模拟电路的技术要求的信息;基于所接收的信息,识别用于形成所述模拟电路的多个电路部分;为所述多个电路部分的每个电路部分确定所述每个电路部分的相应技术标准;产生包括每个电路部分的相应设计的一组设计;
对于所述多个电路部分中的至少一个电路部分,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,所述模拟电路中将经历所述寄生;基于所获取的与寄生相关的信息来改动至少一个电路部分的设计;以及输出完整的电路设计,所述完整的电路设计包括基于所获取的与寄生相关的信息而改动的至少一个电路部分。14.根据权利要求13所述的方法,还包括:在模拟电路设计装置的初级设计单元处:基于所接收的信息,识别用于形成所述模拟电路的多个电路部分;为所述多个电路部分中的每个电路部分确定所述每个电路部分的相应技术标准;以及向所述多个二级设计单元中的至少一个二级设计单元提供所述每个电路部分的相应技术标准;在所述模拟电路设计装置的所述多个二级设计单元中的每个二级设计单元处:a)基于由所述初级设计单元提供的技术标准设计所述多个电路部分的相应电路部分;以及b)输出所得到的、所述相应电路部分的设计;以及还包括,在初级设计单元处:c)从所述多个二级设计单元中的每个二级设计单元获得包括所述每个电路部分的相应设计的一组设计;d)基于该组设计生成所述模拟电路的至少一个初始设计;e)获取与寄生相关的信息,其中,如果所述模拟电路包括该电路部分,在所述模拟电路中将经历所述寄生;以及还包括:在至少一个二级设计单元处,基于与寄生相关的信息改动相应电路部分的设计;以及在所述初级设计单元处,输出包括至少一个所改动的电路部分的完整电路设计。15.根据权利要求14所述的模拟电路设计方法,还包括:通过多次重复步骤a)至e)来填充寄生和电路设计的数据库,其中,每次重复步骤a)至e)时,通过所述初级设计单元提供新的技术标准。16.根据权利要求13、14或15所述的模拟电路设计方法,包括:通过在虚拟测试台中数学模拟所生成的设计的性能,获取与寄生有关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。17.根据权利要求13至16中任一项所述的模拟电路设计方法,包括:通过在电路设计和寄生的数据库中执行查找,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。18.根据权利要求13至17中任一项所述的模拟电路设计方法,包括:通过在电路设计和寄生的数据库中查找相似的生成的设计,获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。19.根据权利要求13至18中任一项所述的模拟电路设计方法,包括:在电路设计和寄生的数据库中查找相似的各个电路部分的相应电路部分中的至少一个电路部分;以及基于通过对所述相应电路部分中的至少一个电路部分的查找获取的寄生的值,获取与寄生相关的
信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。20.根据权利要求13至19中任一项所述的模拟电路设计方法,包括:通过使用机器学习模型预测寄生来获取与寄生相关的信息,其中,如果所述模拟电路包括设计的电路部分,在所述模拟电路中将经历所述寄生。21.根据权利要求13至18中任一项所述的模拟电路设计方法,其中,所述寄生包括以下至少之一:寄生电容、寄生电阻和寄生电感。22.根据权利要求13至21中任一项所述的模拟电路设计方法,其中,在与寄生相关的信息指示所述寄生大于选定的寄生阈值水平的情况下,执行对相应电路部分的设计的改动。23.根据权利要求13至22中任一项所述的模拟电路设计方法,其中,基于与寄生相关的信息来改动所述相应部分的设计包括:改动相应电路部分的对应技术标准。24.根据权利要求13至23中任一项所述的方法,还包括:根据输出设计制作模拟电路。25.一种计算机可读非瞬时性存储介质,包括用于计算机的程序,所述程序被配置为使处理器执行权利要求13至24中任一项所述的方法。

技术总结
公开了一种模拟电路设计装置,包括初级设计单元和多个二级设计单元。初级设计单元被配置为:接收表示模拟电路的技术要求的信息;基于所接收的信息,识别用于形成模拟电路的多个电路部分;为多个电路部分的每个电路部分确定每个电路部分的相应技术标准;产生包括每个电路部分的相应设计的一组设计;对于多个电路部分中的至少一个电路部分,获取与寄生相关的信息,其中,如果模拟电路包括设计的电路部分时,模拟电路中将经历寄生;基于所获取的与寄生相关的信息来改动至少一个电路部分的设计;以及输出完整的电路设计,所述完整的电路设计包括基于所获取的与寄生相关的信息来改动的至少一个电路部分。一个电路部分。一个电路部分。


技术研发人员:麦可
受保护的技术使用者:阿集尔安罗格有限公司
技术研发日:2021.02.22
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-2212.html

最新回复(0)