在MMSIM610或以上版本仿真遇到SpectreHDL is no longer supported的解决办法
时间:03-15
整理:3721RD
点击:
原因是这样子的,Cadence自己有做一个Spectrehdl用来描述模拟和混合信号集成电路,是私有的开放使用的。然后有了开放的verilog-AMS或者叫做Verilog-A的模拟与混合信号硬件描述语言之后,SpectreHDL自然停止开发。
自MMSIM61起,Cadence停止支持SpectreHDL改投入Verilog-A阵营。
因此如果你目前使用的PDK或者前辈的设计用到了SpectreHDL模型,你只有两个选择:
1)使用IC5141自带spectre
2)将原SpectreHDL修改为Verilog-A模型
不过据说两者还是有渊源的,所以修改起来也不是很难,下面介绍一下目前我发现的主要区别:
修改相应SpectreHDL文件为等效的Verilog-A文件,或者使用5141自带spectre。
通常这是电阻的AHDL模型出了问题,不过SpectreHDL和Verilog-A语法还算接近,所以修改还算容易。
例如module定义语法不同,前者是
- module(端口1,端口2,端口3……)(参数1,参数2,参数3,……)
- {
- ……
- }
复制代码
后者是
- module (端口1,端口2,端口3……);
- ……
- endmodule
复制代码
例如热力学温度定义不同,
前者是$temp(),后者是$temperature。
例如节点语法不通,前者是
- node [V,I]
复制代码
后者是
- electrical
复制代码。
例如analog语法不通,
前者是
- analog {
- ……
- }
复制代码
后者是
- analog begin
- ……
- end
复制代码在例如模拟赋值语法不同,
前者是
- V(p,n)<-Expression
复制代码
后者是
- V(p,n)<+Expression
复制代码
另外建议Verilog-A的文件开头加上一句
- `include "discipline.h"
复制代码
总的来说,举个例子,一个电阻的模型被修改成了Verilog-A格式如下:
- `include "discipline.h"
- module polyres_hdl (n2, n1, ctrl2, ctrl1); //(wr, lr, rtemp, jc1a, jc1b, jc2a, jc2b, tc1, tc2, etch, tnom, rsh0, rmaxvcoef, rminvcoef)
- electricaln2, n1, ctrl2, ctrl1;
- parameter real lr=0.0;parameter real wr=0.0;
- parameter real rtemp=($temperature - 273.15);
- parameter real jc1a = 0;parameter real jc1b = 0;
- parameter real jc2a = 0;parameter real jc2b= 0;
- parameter real tc1 = 0;parameter real tc2 = 0;
- parameter real etch = 0;parameter real tnom = 25.0;
- parameter real rsh0 = 1;parameter real rmaxvcoef = 3;
- parameter real rminvcoef = 0.33;
- real dt, absv, vc1, vc2, tcoef, vcoef, r0, weff;
- analog begin
- dt = (rtemp - tnom);
- vc1 = jc1a + jc1b / lr;vc2 = (jc2a + jc2b / lr) / lr;
- absv = abs(V(ctrl2, ctrl1));
- tcoef = 1.0 + dt * (tc1 + dt * tc2);
- vcoef = 1.0 + absv * (vc1 + absv * vc2);
- vcoef = min(vcoef, rmaxvcoef);
- vcoef = max(vcoef, rminvcoef);
- weff = (wr - 2.0 * etch);
- r0 = rsh0 * lr / weff * tcoef * vcoef;
- V(n2, n1) <+ I(n2, n1) * r0;
- end
- endmodule
复制代码
参见
Modeling Diffusion Resistors Using Verilog-A
http://www.designers-guide.org/Modeling/diffusion-resistors.pdf
赞一个,,,找到解决办法了。
啦啦啦。、、。修改可以仿真了。真是感谢啊~
我的也是按照上面修改的 ,为什么还是不能仿真呢?
我的也不行,请问你解决了吗?
仔细检查语法,要理解语法,不要照抄。不同PDK对电阻的描述可能不完全一样。
你改完后需要把文件后缀改成.va
谢谢
Cadence 官方似乎有提供一个叫做 shdl2vloga 的脚本给Foundry,用于把resistor的SpectreHDL的模型转换为Verilog-A的。但这一文件似乎并未对用户提供。 不知道谁会有 shdl2vloga 这个脚本?相信一定会比我小编位提到的手动修改要方便的多。
参考:
http://community.cadence.com/cad ... forums/f/38/t/29190