Using Equations and User Defined Functions in ADS
Using Equations and User Defined Functions in ADS
记录一个ADS的使用tip
下图显示了在ADS中两种不同的方程(函数)的使用方法:

1.ADS数据显示中的“动态”简单方程
2.用于数据显示或目标定义优化的用户定义函数(代码)
“动态”的简单方程式
这是在ADS中经常使用的方式。
在数据显示中,“动态”添加方程,将数学函数应用于仿真的数据。然后,新创建的数据将显示在“Equations”列表中。
例如:

优点是创建这样的方程非常容易。通过将整个数据显示保存为“模板”,并在以后重复使用确切的数据显示,可以重复使用。
然而,如果想比较多个数据集,这种方法并不方便,因为这些数据集都需要用同一个方程来计算。在这种情况下,最好定义一个自定义的数学函数,然后使用该用户定义的数学函数处理所有数据集。
用户定义的函数
对于经常需要的数学函数,可以通过在文本编辑器中编写代码来创建用户定义的函数。把它存储在一个文本文件中,并使用一些标头来声明函数名称和参数。
一旦定义,这可以类似于数据显示中的ADS内置功能,或用于原理图中的测量方程和优化目标。

对于上面的电感计算,我们可以将数学分解为两个自定义函数。第一个函数从二端口数据中提取串联路径阻抗:
defun Zseries_from_S2P (S)
{
decl aZ = stoz (S);
decl aZseries = aZ(1,1) – aZ(1,2) – aZ(2,1) + aZ(2,2);
return aZseries;
}
S是传递到函数中的2端口S参数
stoz是一个预定义的ADS函数,它根据S参数计算Z参数。使用它(而不是在ADS频率扫描控制中启用Z参数输出)的优点是,它还可以处理导入的S参数数据集,其中数据集中没有可用的Z参数数据。
aZseries是一个变量,它保存我们计算的数据,然后将其作为函数结果返回。
第二个函数根据二端口S参数计算串联电感。它在内部调用第一个函数。
defun Lseries_from_S2P (S)
{
decl aOmega = 2*pi*indep(S);
decl aLseries = imag(Zseries_from_S2P (S)) / aOmega;
return aLseries;
}
为什么使用indep(S)而不是使用freq变量作为频率。同样,原因是这也适用于导入的S参数数据集,其中数据集中不存在freq变量。
为什么变量名称有“a”前缀。原因是这里定义的所有变量对ADS数据显示都是可见的,如果发现重复的名称,ADS数据显示会自动重命名数据显示中的变量。因此,最好在自定义方程代码中使用一个“唯一”名称,该名称与数据显示中变量名称不冲突。
User Defined Functions存储在哪里
有不同的方法可以使用户定义的功能可用。如果在ADS的help文档搜索“User-Defined Functions”,其中就包含如何将它们添加到本地ADS安装中的说明,以便所有ADS项目都可以使用它们。
然而,如果将函数定义存储在本地安装中,而使用不同的ADS项目,则该项目将无法在计算机上正常工作。或者说,当更换新的计算机后,该函数功能不能正常使用,因为还需要将该功能单独安装到该计算机的ADS中。
有一种更好的方法可以与用户定义的函数共享项目:
即将文件直接存储在ADS项目中,并让ADS自动加载,如下所述。通过这种方式,可以共享workspce,并且可以立即使用自定义功能,而无需手动安装。加载机制与ADS PDK中使用的加载机制相同。
在workspace中包含User Defined Functions
ADS提供了一种机制,当workspace打开时,可以在启动时加载和执行某些文件。我们将使用它来加载我们的用户定义函数。
ADS总是在库目录中检查文件“eesoflib.cfg”,并能够执行在那里定义的“启动”文件。在该文件中,一个特殊变量告诉ADS在哪里搜索User Defined Functions(表达式)文件。也就是说可以为该目录选择任何名称,然后在eesof_lib.cfg中指定该名称。

对于表达式目录的位置,建议将其放置在库目录中。
方程文件的名称被硬编码到ADS中,并且始终相同:“dk_defined_fon.ael”

有了这些设置,当ADS加载workspace(更具体地说:库)时,应该加载User Defined Functions文件。如果成功了,那么应该会看到一个编译后的文件(.atf)。如果.atf文件丢失,说明出现了问题,并且的*.ael没有加载,或者在ADS试图加载和编译它时出错。
这时候需要强制重新加载工作区(包括代码),可以使用菜单中的文件历史记录: File > Recent Workspaces
每一次更改代码后,都需要执行此操作,以重新加载最新的代码版本。在重新加载项目之前,没有必要关闭该项目。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
