在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1097|回复: 4

[求助] 为什么Verilog-A写的代码会改变仿真的步长?

[复制链接]
发表于 2024-2-7 17:09:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

麻烦各位大佬指点,谢谢
1. 楼主写了一个比较器的verilogA模块,希望能加快仿真,但是使用这个代码之后,仿真的步长变得特别短,仿真变得更慢了。这个问题我一直不知道怎么解决。

2. 还有一个问题,请问analogLib里的激励源是用什么东西写的?我希望能用verilogA自定义一个随时间变化的激励源,是一个斜率固定的斜坡信号,但是直接用transition函数出来的是一段一段的弧,V(vout) = transition(k*$realtime,1p,1p,1p)。

比较器的代码

比较器的代码
发表于 2024-2-8 17:11:50 | 显示全部楼层
听你说的现象,感觉应该是你的运放太理想了(突变的特性、绝对的高阻节点、无限大的增益等等),影响了仿真的收敛性,仿真老是不收敛表现为仿真的步长变得特别短。
你把比较器的特性改平滑一些试试;可以eetop看看能不能搜到现成的代码。
发表于 2024-2-13 20:52:20 | 显示全部楼层
一个可能的原因是transiiton filter里面的变量有电压信号. 比如这句
V(COMP)<+transition(V(LATCH),...)
transition filter里面最好使用值为常数的分段线性变量.

Use the transition filter only to smooth piecewise constant waveforms.
• The transition filter causes the simulator to place timepoints at both corners of a transition when the input signal changes. If a transition filter is applied to a continuous signal, each time the signal changes, the simulator would place time-points. This can dramatically slow down the simulation.
– Bad practice: V(out) <+ transition(discVal * V(in), 0, tr, tf);
– Good practice: V(out) <+ transition(discVal, 0,tr, tf) * V(in);

 楼主| 发表于 2024-2-18 14:01:38 | 显示全部楼层
本帖最后由 爱的战士 于 2024-2-18 14:06 编辑


david_reg 发表于 2024-2-13 20:52
一个可能的原因是transiiton filter里面的变量有电压信号. 比如这句
V(COMP)


明白了,我去试试,感谢回复!

====
请问您这段英语内容是从哪本书上引用的?我在我有的资料里搜索了一下,没有找到这段话。
发表于 2024-2-19 17:34:48 | 显示全部楼层


爱的战士 发表于 2024-2-18 14:01
明白了,我去试试,感谢回复!

====


这是cadence support网站里面的一篇文档中:

"Verilog-A Compact Models - Best Coding Practices"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-29 12:52 , Processed in 0.019736 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表