请教一个AMS混合仿真的问题
在仿真中,数字部分采用TSMC的标准单元构成的网表进行仿真(标准单元调用verilog代码进行仿真);模拟部分采用晶体管进行仿真。数字部分没有反标基本单元的延迟信息。
在这种情况下,仿真发现了一个问题。问题的现象是:一个基本的D触发器不能正常工作。由于采用基本单元的行为级进行仿真,并且没有反标延迟信息,因此整个数字电路中,触发器的数据跳变沿和时钟跳变沿是同一时刻。
此时,仿真器给出的触发器输出完全是一个随机的值;即触发器的输出有时候是时钟上升沿前一时刻的值,有时候是时钟下降沿后一时刻的值。
请教板上的同学,AMS中有什么设置可以来克服这个问题吗?即:触发器的输出时钟是时钟上升沿的前一时刻值。
PS:将上述数字电路的网表导入到modelsim中进行仿真,无上述现象出现。电路能够正常工作。
谢谢!
为啥要这么仿?相当于ZeroDelay的Netlist?
直接用RTL仿不行么?
现有的数字电路是由一堆基本门构成,基本门有RTL的描述;整个数字模块无对应的RTL。
把时钟delay一下不就行了,或者把data delay,这是在模拟域可以做的,对verilog来讲无所谓的。
如果不想改底层描述,做一个verilog单位延迟单元,需要的地方放一个就行了。
cadence 要加 delta_seq_delay 的选项吧 就是为了避免这种情况的
为啥不用spectreverilog?
这也太奇怪了吧,还有这种情况?这直接仿真器bug了。看看其他warning 什么的 ,e2l和l2e设置的合适不?reset 了么?ams调用的是ncsim ,使用正确不会出现这种问题的
这个应该解决不了。因为是内部某个触发器出了问题。这个触发器的输出是前一个触发器的输出。而这两个触发器的时钟是一样的。
谢谢!
这个选项在哪里勾或者是在哪里添加呢?
这个工具不会用。。。能稍微介绍一下这个工具吗?需要额外购买吗?
是数字电路内部的逻辑。情况是这样的:整个寄存器链,中间突然有个寄存器的输出和输入就完全一样了。。。没有一个时钟周期的延迟。。。所以我觉得不涉及到e2l 和l2e。
这个不如ams,是个老旧的东西
直接加到irun 后边啊
数字逻辑是没有el转换,看看其他设置吧,这种情况一般换换仿真器,改步长,改精度,改算法,修改电路,增加一些有利于仿真器的理想原件,设初始值,看似不相干的地方也有可能造成仿真错误,
仿真器是死的,人是活的,软件永远不会错,只有我们使用不当,需要慢慢积累的,呵呵,
建议你学习些仿真计算原理吧
irun已经统一天下了,直接升级软件版本吧
哦,如此。。。
我用的是GUI模式,这个选项在GUI模式下有么?谢谢!
谢谢!
你的建议是从长期的角度来看待这个问题。
具体的方法如:改步长,该精度等方法,我试过一两个,没有什么明显的效果。当然,我没有试完(因为电路比较大,整个电路仿真寻找稳定的工作点需要三到四天,峰值memory约为6GB)
另外,能推荐一些仿真计算原理方面的资料吗?paper或者书籍或者是app notes均可以。谢谢!
我猜你这个是仿真时间精度的设置问题,以前用spectreverilog的时候遇到过,AMS应该也有类似设置
把时间精度设小?
跟模式没关系 查user guide 给你指了明路你不试 就没办法了 搞ic的动手能力还是需要的
汗!
不过仍然感谢你的回复!
哎 看样子你是放弃我的方法了 要不你问问你那里比较有经验的同事? 用eda工具不会加选项我也是无语了
谢谢!
gui里面肯定有加option的地方,你仔细找找
大不了去/sim下面把它跑仿真的脚本手动改一下,然后不用netlist&run,直接用run来跑
还是问题解决了再谢吧
如果模拟为主,spectreverilog用起来更方便,也容易debug。
数字规模很大时,ams快得多,运行方式也更贴近ncsim。
但ams内部网表结构比较复杂,对做模拟的人来说工具出问题很难解决,需要花大量时间研究工具。
是这个意思,我记得当时出这个错误的原因是设置成了自由还是什么的,时间久远了点。
恩,不错的建议。节后试试。
节前我把数字部分和PAD部分单独用schematic仿了,功能应该无错。
恩,好的。太感谢了。。。
一个问题引起了大家不同的思考。
我这几天是这么解决的:将数字部分用schematic仿真,然后模拟我建立了个veriloga的理想模型。。。
我做芯片的整体前仿真的目的是检查是否连接出错。