|
接着又想到在I/V转换模块里减去这个输入电压,再定义一个节点去掉这个电压的影响,也是一遍一遍调一遍一遍仿,有是明明感觉理论上已经去掉了这个电压,但是仿真波形总是有1000V,一连4个多小时的重复调试几近崩溃。。
上
述调试皆失败,花了将近两天,心灵极受摧残。第三天,干脆写了个极简单的test模块模拟电流源加载到I/V转换模块,输出正确。现在就比较test与
sensor的输出,把它们的输出节点电流电压调的完全一样,然后连I/V模块。接着奇怪的问题出现了,用test连无1000v正确,用sensor连
有1000v错误,尽管这两个模块的输出电压电流完全一样,这样在逻辑上感觉无懈可击事实确不是的东西最是让人头疼。这时想到了几个原因,一个一个试都失
败了,于是开始屏蔽sensor里面的程序,屏蔽一点试一下,最后将sensor里面的程序改的几乎跟test一样,就多个跟DAC的接口,而且确定这个
接口没用。一样代码的两个模块,输出一模一样,但是接I/V转换就不一样了,逻辑理论上无懈可击,这时我都要开始怀疑神是不存在,心里极受打击。没办法,
我在DAC、sensor、I/V所在的Schemetic里断开所有的线,然后调用test模块跟I/V连,这个时候两个Schematic里的模块连
接是一样的,所有仿真参数设定都是一样的。奇怪的事情出现了,1000v依然存在于之前的那个Schematic,另一个正确。明明两个
Schematic的仿真模块一样,我都开始认为自己证明了神的存在。。
这个时候求教于陈敏老师,陈老师也很奇怪,然后慢慢的,她让我把
前一个Schematic里闲置没用的DAC、sensor模块一个一个删掉再试,奇迹出现了,当删完这两个模块后仿真一样了。原来闲置没有连接的DAC
模块都能对I/V输入节点电压影响,直接导致1000v,这谁能想到呢,这可以算上Spectre仿真器的一个bug了。
现在回忆反思,
还是逻辑上有漏洞,其实科研是严谨的。另外整个调试过程也比较混乱,有漏洞,其实刚开始我在仿真模块两两之间连接的情况时如果尝试了不连接DAC的情况,
这个问题就能很早发现了。这次调试的过程可以算是给了我一个很好的教训,相信以后的调试能力会更好一些。