0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

模拟IC工程师都不知道的Cross高级玩法

冬至子 来源:模拟混合信号设计验证 作者:王忆 2023-11-07 14:14 次阅读

Cross 函数经常被用来处理仿真波形,从而获得波形通过某个特定阈值时对应的x轴数值。

图片

在Number of occurrences”限定为“single”的情况下,通过变换“Edge Number”,能得到何种功效呢?

Edge Number的含义

“Edge Number”你填写过什么值呢?它的含义是什么呢?

简单而言,“Edge Number”指定cross函数将返回第几个信号沿通过给定阈值时对应的x轴数值。当这个参数正数时, 从左往右数 ;当参数为负数时, 从右往左数 。例子如下图所示:

图片

理论看完了,大家可以想想“Edge Number”为啥会如此设置,有哪些具体应用实例呢?尤其还能写“负数”的“Edge Number”。

例子****1:POR的释放时间

普通青年知道的。。。

POR(Power On Reset)作为一个常用的模拟模块,用来检测电源上电的情况。在上电过程中,当电源电压小于给定阈值时,POR输出高电平。当电源电压高于给定阈值时,POR输出低电平。

当POR的输出没有毛刺(Glitch)的时候(如下图所示),可以通过获取第一个下降沿的时间来获得POR的释放时间。对应的cross函数为:

cross(VT(“/POR”), 0.5, 1,“falling”, nil, nil, nil)

图片

资深工程师所考虑的。。。

但是当POR的输出有毛刺时,特别是毛刺的个数不确定时(受到工艺,电压或者温度的影响),那么通过使用负值的“Edge Number”参数来获取最后一个下降沿,则是一个很好的方法。

图片

cross(VT(“/POR”), 0.5, -1 ,“falling”, nil, nil, nil)

例子2: 闭环负反馈系统的相位裕度

普通青年知道的。。。

对于一个闭环负反馈系统,一个重要指标就是系统的稳定性。这个指标通常是通过“相位裕度”来衡量的。

相位裕度的计算是,当环路增益为1(0dB)时,对应的相移和180度之间的差值。大多数仿真工具中,默认计算相位裕度的方法为(例如:调用“phase Margin”函数):

如在下图所示的开环频响波形中:

图片

首先获得单位增益频率,UGF, (Unit Gain Frequency)

UGF = cross(Gain, 0, 1 ,“falling”, nil, nil, nil)

此后计算相位裕度

PM = 180 – (Phase(0) –Phase(UFG))

其中Phase(x)是给定频率下,对应的相移。

这里需要注意的是,在获取UGF时,是通过cross函数选则增益曲线中从左往右的第一个过零点。

资深工程师所考虑的。。。

下面考虑这样一种情况(简化起见,相位曲线没有做出针对性调整)

图片

如上图所示,当增益曲线随频率增加,穿过0dB线后,由于高频零极点的存在,再次上升,并产生一个大于0dB的尖峰。

如果仍然采用默认的相位裕度计算方法,以从左往右的第一个过零点为UGF,那么在上述情况下,会获得一个错误的相位裕度。并且因为这个开环增益在更高频率上仍有单位增益,此时可能由于大于180度的相移,而最终造成闭环后系统开始震荡。

解决方法很简单,仅仅需要把cross函数中的“Edge Number”参数从“1”,改为“-1”即可:

UGF = cross(Gain, 0, -1 ,“falling”, nil, nil, nil)

PM = 180 – (Phase(0) –Phase(UFG))

这样,永远是最高频的一个增益过零点被记为UGF。

在上面的例子中,“EdgeNumber”的参数可以为正数,也可以为负数,那么这个参数可不可以为零呢?答案是可以的。

图片

对应开篇举得正弦波的例子,当使用“0”作为cross函数的参数时,函数返回的是一个“list”,里面包含了波形所有通过给定阈值时对应的x轴的数值,而次序是从左往右。如下图所示的CIW窗口。Cross函数和他的返回值依次给出。

图片

这里简单说明下,“list”是SKILL语言中的一个数据类型,可以理解为数列。而Cadence中的API都是通过SKILL语言给出的。而且大家常用的OCEAN也是SKILL中的一部分。

如果以“0”作为“EdgeNumber”参数的cross函数,在ADE(L/XL/GXL)的表达式中直接使用,会得到“evalerr”。这是因为“list”不是ADE(L/XL/GXL)接受的数据类型。

在ADE(L/XL/GXL)可以输出的结果要么是波形(waveform),或者是个实数。在上面的截图中,cross函数是在CIW窗口中直接输入的,这个时候Cadence把他当作SKILL脚本来处理。这里返回值的类型不受限制。

那么以“0”作为“EdgeNumber”参数的cross函数有用么?答案是:非常有用。

例子3:POR的输出是否有毛刺

资深玩家所知道的。。。

为什么要设置函数来检查POR的输出是否有毛刺呢?第一个是为了效率,例如在处理大量仿真结果的时候(2000 个Monte Calro仿真),已经无法来肉眼检查每一个波形;第二个是为了可靠性,假如毛刺很靠近第一个下降沿,如果没有充分的放大,就会很容易的漏掉。

图片

如何来实现检查毛刺的函数:

length函数是SKILL语言中的一个基本函数,它可以用来获取一个“list”中有多少个项。那么通过length和cross函数的组合:

length( cross( VT(“/POR”), 0.5, 0 , “falling”, nil, nil, nil) )

则可以获取POR的输出中有多少个下降沿。

当下降沿个数大于1时,则表示有毛刺的产生。

除此之外,还可以利用如果以“0”作为“Edge Number”参数的cross函数获取电荷泵每个周期输出电荷的数量,然后以波形的方式输出。

由此可以很直观的观察各种外界环境(PVT)对电荷泵输出能力的影响。这样的后处理会稍微复杂一下,没有办法通过几个简单函数的组合在ADE的表达式中实现。

需要通过SKILL语言,把他包装成“User Defined Skill Function”,然后在Calculator中调用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真器
    +关注

    关注

    14

    文章

    1016

    浏览量

    83627
  • 电源电压
    +关注

    关注

    2

    文章

    983

    浏览量

    23939
  • Cross
    +关注

    关注

    0

    文章

    2

    浏览量

    6764
收藏 人收藏

    评论

    相关推荐

    IC设计工程师

    大家好,我学FPGA也有几个月了,都是学习板上的设计,现在可以随便的编写一些简单的逻辑;我琢磨着以后想往IC设计工程师这个职位走,不知道IC设计工程
    发表于 05-25 01:02

    模拟IC设计工程师

    模拟IC设计工程师工作地点:上海。杭州,广东职位职能:集成电路IC设计/应用工程师 职位描述:职责:从事
    发表于 04-22 12:11

    硬件工程师要学习哪些知识

    大家好,版主好,本人新来报道,好多事情要问要请教呀.......本人想考硬件工程师这个专业,但却不知道给如何下手,从何学起.......在网上百度了一晚,硬件工程师分许多种,搞的我都不知道
    发表于 09-02 01:45

    如何成为一个硬件工程师

    我是刚毕业的应届生,进入电子行业初涉硬件工程师这份工作,发现自己什么都不会,而且不知道自己不会什么,就是不知道要学习什么,没人教,求大家赐教{:34:}
    发表于 09-15 14:16

    高级模拟IC设计工程师(LED AC-DC电源)-上海

    高级模拟IC设计工程师(LED AC-DC电源)-上海岗位职责:1、模拟电路模块包括带隙基准源、低压差稳压电路、运放、比较器、振荡器、锁相环
    发表于 01-26 16:23

    高级模拟IC设计工程师-上海

    高级模拟IC设计工程师(LED AC-DC电源)-上海岗位职责:1、模拟电路模块包括带隙基准源、低压差稳压电路、运放、比较器、振荡器、锁相环
    发表于 02-28 14:03

    高级模拟IC设计工程师(电源DC-DC)-上海 昆山 深圳

    高级模拟IC设计工程师(电源DC-DC)-上海 昆山 深圳岗位职责:1、电源管理芯片模拟电路的设计;2、协助layout
    发表于 03-19 17:15

    招聘数字ic设计工程师/数字集成电路工程师/DFT负责人/高级DFT工程师

    招聘三个人1、专做ic设计流程的高级工程师2、主要做pcie开发的高级工程师3、dft负责人,全模块都负责过的高级工程师(ATPG,MBIST,SCAN 等)招聘2-5年的数字
    发表于 09-07 17:04

    苏州某医疗器械公司招聘高级模拟ic设计工程师

    高级模拟IC设计工程师JD 岗位职责 1、负责集成电路中模拟电路子电路模块的原理图设计与仿真; 2、指导版图
    发表于 02-17 12:25

    急招模拟IC设计工程师

    1、模拟IC设计工程师25-60W(电源方向:初级、高工、经理、 目前需求职位如下1、模拟IC设计工程师
    发表于 06-29 16:47

    电气工程师知道哪些平常人不知道的事情?

    `1)插座有额定电流,普通人知道用电电器的电流不能超过插座额定电流,电气工程师知道它的原因是插座发热不允许超过它的额定温升。2)普通人理解的温升就是电器的使用温度与环境温度的差值,电气工程师
    发表于 04-15 17:45

    招聘射频IC工程师模拟IC版图工程师-上海浦东+苏州

    招聘射频IC工程师模拟IC版图工程师,工作地点上海浦东,苏州。要求2年及以上工作经验或优秀毕业生欢迎自荐或推荐cadeor@sina.co
    发表于 11-26 10:23

    电气工程师100条运营知识

    对于刚入门的电气工程师,对于很多技术问题都不知道如何下手,本身为大家介绍你必须知道的电气工程师100条运营知识,共大家学习参考!
    发表于 11-28 13:23 2175次阅读

    软件工程师如何获得更好的发展

    我得面对现实,成为软件工程师需要有很多技能,这些我之前都不知道。回顾过去,显然学会那些东西是很好的。
    的头像 发表于 12-12 11:36 2588次阅读

    MDK下99%用户都不知道的万能printf方法

    本篇将介绍MDK下99%用户都不知道的万能printf方法。
    的头像 发表于 04-12 10:21 2181次阅读