技术文章

Ansys Circuit中导入第三方Sink进行PI仿真

时间:2024-05-08

作者·孙明源

电源完整性(Power Integrity, PI)设计和仿真是电子系统设计中的一个重要方面,尤其是在高速数字电路和复杂系统中。电源完整性设计的目的主要包括:

1. 确保稳定供电:电源完整性仿真帮助确保所有电子组件能从电源系统获得稳定且干净的电源供应。这对于维持电路的正常运行和避免由于电源问题引起的错误至关重要。

2. 降低噪声和干扰:在电路中,电源线可能会受到来自其他部分的电磁干扰或者高频开关噪声的影响。通过电源完整性仿真,设计人员可以识别并减少这些干扰,优化电源平面和地平面的布局,以及使用去耦电容来滤除噪声。

3. 优化电源分配网络(Power Distribution Network, PDN):仿真可以帮助工程师评估和优化PDN的设计,确保电源在整个系统中均匀分布,避免电压掉落和电源不稳定。

4. 提高系统的可靠性和性能:稳定的电源供应可以显著提升电子设备的性能和可靠性。电源完整性设计通过确保所有设备部件在规定的电压和电流条件下运行,帮助提高整体系统性能。

通过使用专门的仿真工具和技术,设计人员可以在产品开发的早期阶段发现和解决潜在的电源问题,这样不仅可以节省成本,还能缩短产品上市的时间。

今天给大家带来的一个在时域上进行电源完整性(Power Integrity, PI)分析的简单案例,这个案例使用了sink模型(描述负载随时间序列电流需求)来模拟系统在真实工作条件下的电源需求。这种分析帮助确定电源系统是否能在各种操作条件下稳定地供电给负载,以确保电源在负载突然增加或减少时不会造成电压跌落或峰值超出允许范围。借助于Ansys Electronics Desktop,我们可以很方便的完成PI的分析。今天我们主要用到的模块是Ansys Circuit。

 

一、Ansys Circuit 软件基本介绍

Circuit是一个电路仿真软件,用户可以在Circuit里集成HFSS、SIwave的模型,进行进一步的时域或频域分析,比如SIPI、EMC的仿真,如图1。在Circuit里面,也支持各种各样的第三方模型导入,比如spice、IBIS等。

 

图1 EMC分析示例

 

下面我们利用Ansys Circuit创建一个简单的case,看一下基本应用,它有三个基本的组成部分:

  • Source、PCB(或者其它实体路径)、Sink。

我们假定Source是一个DC 5V电源,当中的PCB用一组简单的RLC参数来替代(这里未对实际的模型做抽取,这组参数只是在本例中用于功能演示),导入一个从外部拿到的sink模型。

 

常见的sink模型是一个spice,假如我们的sink模型如下:

.subckt  currentsink pi gnd

I1 pi gnd pwl(

+ 0.000000ps 9mA

+ 15.000000ps 8.92mA

+ 26.000000ps 71.3mA

+ 45.000000ps 52.8mA

+ 50.000000ps 9mA

+  )

.ends

它描述了50ps内,需求电流与时间的关系。

要注意,这个sink的电流方向问题,针对这个spice,它有“pi”和”gnd”两个节点,从节点“pi”流入电流,从节点”gnd”流出电流(很多场合里,经常把电流“源”和“汇”统称为电流源。我几年前对这个称呼产生过疑惑,从哪个节点流入和流出决定了这个模型为“源”还是“汇”,但是从模型上来说,“源”和“汇”只是电流方向上的区别)。

我们做一个简单的电路,把它导入到软件里,如图2,导入的spice在电路的左侧。

 

 图2 导入spice

定义一个简单的时域仿真任务,如下图:

 

 图3 仿真任务设置

仿真结束后的波形如图4,可以看到这符合我们在上面spice语句的定义。

 

图4.1 sink的电流波形

 

图4.2 sink的电压波形

 

但仅仅如此还不够,实际应用中,绝大多数的sink都有自己的工作频率,它会在时域上不断重复,上面的sink里只定义了一个周期的电流需求,用来模拟实际的电路不足以提供完整的信息,我们也无法知道在一定时间内,sink上的完整的电压、噪声等信息。那么有没有可能让上面的spice反复激励呢。当然是可以的,下面给大家介绍两种方法:

1. 方法 修改Spice文件

绝大多数spice文件是可以用Notepad++等文字编辑工具直接打开的(对于加密的文件我们可以借助于方法二),我们打开本例的spice文件,做一点修改:

.subckt  currentsink pi gnd

 

I1 pi gnd pwl(

+ 0.000000ps 9mA

+ 15.000000ps 8.92mA

+ 26.000000ps 71.3mA

+ 45.000000ps 52.8mA

+ 50.000000ps 9mA

+ R=0

+  )

.ends只需要在定义结束后,增加一个R=xy,即可定义这个sink在一段定义结束后,从哪个时间点重新开始,那么我们重新导入后,即可得到一个不断重复的电流需求,并能看到这个电流在sink上产生的电压波形:

 

图5.1 修改后的电流波形

 

图5.2 修改后的电压波形

 

2. 方法二 PWL文件导入导出

让我们回到上面的图4,Ansys Circuit提供多种的结果导出形式,我们可以把结果导出,如图6:

 

图6 结果导出

这里可以自己定义导出的文件名,可以自己选择格式,推荐导出成表格,方便对数据进行处理。导出后的文件如图7,注意,单位在每列的title上。

 

图7 导出后的数据

这个文件我们还不能直接使用,一来它存在一些无用的数据,具体到图7上,0.05ns之后的数据对于我们都是无效的,我们要把它们删除;二来这些数据的单位不是SI单位制,我们需要对数据进行一些转换。这里具体的处理方法就省略了,大家可以自行查找表格数据处理的技巧。我们需要把所需要的数据保存成一份txt文件,采用SI单位制。

修改后的文件如图8,注意我们是从外置电流探头上导出的数据,这里要把数据×(-1):

 

图8 修改后的文件(上图没截全)

接下来通过Ansys Circuit的PWL激励源接口将它导入,电路如图9,导入的文件还是放在最左侧。导入时额外勾选上R=xy,即可实现在某个时间节点,让此文件反复激励:

 

 

图9 修改PWL激励

最后,我们通过方法二也得到了期望的结果,可以正常观测到sink上的电压和电流:

 

 

结语

本文假定了一个PI仿真的简单案例,为大家介绍了在Ansys Circuit软件里使用sink模型进行时域PI仿真,并介绍了如何让sink文件重复激励。

技术文章

姓名

公司

电话

邮箱