微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 综合技术问答 > EDA使用问答 > 在MMSIM610或以上版本仿真遇到SpectreHDL is no longer supported的解决办法

在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定义语法不同,前者是




  1. module(端口1,端口2,端口3……)(参数1,参数2,参数3,……)
  2. {
  3. ……
  4. }


复制代码


后者是




  1. module (端口1,端口2,端口3……);
  2. ……
  3. endmodule


复制代码


例如热力学温度定义不同,
前者是$temp(),后者是$temperature。
例如节点语法不通,前者是




  1. node [V,I]


复制代码


后者是




  1. electrical


复制代码


例如analog语法不通,
前者是




  1. analog {
  2. ……
  3. }


复制代码


后者是




  1. analog begin
  2. ……
  3. end


复制代码

在例如模拟赋值语法不同,
前者是




  1. V(p,n)<-Expression


复制代码


后者是




  1. V(p,n)<+Expression


复制代码


另外建议Verilog-A的文件开头加上一句




  1. `include "discipline.h"


复制代码


总的来说,举个例子,一个电阻的模型被修改成了Verilog-A格式如下:




  1. `include "discipline.h"

  2. module polyres_hdl (n2, n1, ctrl2, ctrl1); //(wr, lr, rtemp, jc1a, jc1b, jc2a, jc2b, tc1, tc2, etch, tnom, rsh0, rmaxvcoef, rminvcoef)
  3. electricaln2, n1, ctrl2, ctrl1;

  4. parameter real lr=0.0;parameter real wr=0.0;
  5. parameter real rtemp=($temperature - 273.15);
  6. parameter real jc1a = 0;parameter real jc1b = 0;
  7. parameter real jc2a = 0;parameter real jc2b= 0;
  8. parameter real tc1 = 0;parameter real tc2 = 0;
  9. parameter real etch = 0;parameter real tnom = 25.0;
  10. parameter real rsh0 = 1;parameter real rmaxvcoef = 3;
  11. parameter real rminvcoef = 0.33;

  12. real dt, absv, vc1, vc2, tcoef, vcoef, r0, weff;

  13. analog begin
  14. dt = (rtemp - tnom);
  15. vc1 = jc1a + jc1b / lr;vc2 = (jc2a + jc2b / lr) / lr;
  16. absv = abs(V(ctrl2, ctrl1));
  17. tcoef = 1.0 + dt * (tc1 + dt * tc2);
  18. vcoef = 1.0 + absv * (vc1 + absv * vc2);
  19. vcoef = min(vcoef, rmaxvcoef);
  20. vcoef = max(vcoef, rminvcoef);
  21. weff = (wr - 2.0 * etch);
  22. r0 = rsh0 * lr / weff * tcoef * vcoef;
  23. V(n2, n1) <+ I(n2, n1) * r0;
  24. end
  25. 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

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

网站地图

Top