微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > verilog-A建模针中遇到的问题

verilog-A建模针中遇到的问题

时间:10-02 整理:3721RD 点击:
我在编写模型时,用下面的代码实现+-1v固定频率的方波作为锁相环的参考频率。但仿真出来时(图在附
件内),只有开始半个周期是-1伏,后来却只在200mA浮动并且是锯齿波。问题出在哪呢。
analog begin
@(initial_step) begin
n=0; t=Tc/2; end
@(timer(t)) begin
n=!n;
t=t+Tc/2; end
V(ref)<+transition((n?v1:v0),td,tr,tf);
这个代码是参照一个例子写的,对verilog-A的语法还不熟。

看起来没有问题阿!
请注意 tc td tr tf的关系,是不是td trtf 太长了!

我td,tr,tf设的都是0,仿真的是理想情况啊

你的搞得太复杂了! 我没有看出来你的房拨周期怎么设定的!
其实最简单的就是 将abstime 引入程序就可以了吧

你的代码没有问题,我已经仿真验证!
我认为应该是 仿真设置的问题,请将td tr tf 设置一下,比如1n,然后仿真 就可以了!

问题是仿真器不知道在哪些地方信号会突然变化,如果用Spectre仿真,加一条语句可以解决问题的,我忘了是什么什么语句了,在帮助中找一下吧。

代码没问题

印象中我也遇到过这种问题。好像tr tf 不能为零的,你需要设置一个很小的值,但不能为零。microuser兄弟的解决方法应该是对的。

td,tr,tf可以是零的,我仿过没有问题的,小编可以自己拿个信号试试

上面我说了,加一条语句应该可以解决问题。我查了查Cadence中的手册,这条语句是$bound_step,例如,你可以试试:

  1. $bound_step(0.01*Tc);

复制代码

谢谢大家的帮助!
我现在知道是什么问题了,瞬态仿真时我设的时间太长,系统默认的步长》方波的周期,当然采样不到正确的信号了。
希望大家也别范我这种低级错误了~

仿真时间太长害死人啊

学习中 哈哈

I met the same problem and I found I made the same mistake as #1

t=t+T/2? plase remove

的确仿真步长在仿vco或者环路稳定性的时候非常的重要 要仔细设置

学学习了,

哦,小细节的问题,学习了

bound_step()是一个限定仿真步长的语句,括号中给的数值限定了仿真步长的最大值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top