在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1269|回复: 1

[解决] MMSIM610或以上版本仿真SpectreHDL is no longer supported的问题,基于SMIC_018_MMRF修改(参考)

[复制链接]
发表于 2021-4-18 00:58:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 老干部金戈 于 2021-4-18 16:18 编辑

     本人大三学生,自学cadence EDA软件一月左右,遇到了在MMSIM610或以上版本仿真遇到Spectrehdl is no longer supported的问题,这个问题论坛上已经有大神解决了(http://bbs.eetop.cn/forum.php?mod=viewthread&tid=393251(解决方案))  

      根据前文的大神的提示修改SMIC_018_MMRF中的res.def和res.df.def,目前已经可以使用,现在分享给大家,建议大家使用前先备份原件,本人的代码基础不是很好,有错误的话希望大佬们多多指正,也希望能帮助各位
   
res.def  修改后的:   




  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. electrical       n2, n1, ctrl2, ctrl1;
  4. parameter real lr=0.0;
  5. parameter real wr=0.0;
  6. parameter real rtemp=($temperature - 273.15);
  7. parameter real jc1a = 0;
  8. parameter real jc1b = 0;
  9. parameter real jc2a = 0;
  10. parameter real jc2b= 0;
  11. parameter real tc1 = 0;
  12. parameter real tc2 = 0;
  13. parameter real etch = 0;
  14. parameter real tnom = 25.0;
  15. parameter real rsh0 = 1;
  16. parameter real rmaxvcoef = 3;
  17. parameter real rminvcoef = 0.33;

  18. real dt, absv, vc1, vc2, tcoef, vcoef, r0, weff;
  19.    
  20.    
  21.    

  22.     Analog begin
  23.        dt = (rtemp - tnom);
  24.         vc1 = jc1a + jc1b / lr;
  25.         vc2 = (jc2a + jc2b / lr) / lr;
  26.         absv = abs(V(ctrl2, ctrl1));
  27.         tcoef = 1.0 + dt * (tc1 + dt * tc2);
  28.         vcoef = 1.0 + absv * (vc1 + absv * vc2);
  29.         vcoef = min(vcoef, rmaxvcoef);
  30.         vcoef = max(vcoef, rminvcoef);
  31.         weff = (wr - 2.0 * etch);
  32.         r0 = rsh0 * lr / weff * tcoef * vcoef;
  33.         V(n2, n1) <+  I(n2, n1) * r0;
  34.       end
  35.     endmodule
  36.    
  37.       
  38.    



  39. module diffres_hdl (n2, n1, ctrl2, ctrl1); //(wr, lr, rtemp, jc1a, jc1b, jc2a, jc2b, tc1, tc2, etch, tnom, rsh0, rmaxvcoef, rminvcoef)
  40. electrical       n2, n1, ctrl2, ctrl1;
  41. parameter real lr=0.0;
  42. parameter real wr=0.0;
  43. parameter real rtemp=($temperature - 273.15);
  44. parameter real jc1a = 0;
  45. parameter real jc1b = 0;
  46. parameter real jc2a = 0;
  47. parameter real jc2b= 0;
  48. parameter real tc1 = 0;
  49. parameter real tc2 = 0;
  50. parameter real etch = 0;
  51. parameter real tnom = 25.0;
  52. parameter real rsh0 = 1;
  53. parameter real rmaxvcoef = 3;
  54. parameter real rminvcoef = 0.33;

  55. real dt, vc1, vc2, tcoef, vcoef, r0, weff;
  56.    
  57.    
  58.    

  59.     analog begin
  60.        dt = (rtemp - tnom);
  61.         vc1 = jc1a + jc1b / lr;
  62.         vc2 = (jc2a + jc2b / lr) / lr;
  63.         tcoef = 1.0 + dt * (tc1 + dt * tc2);
  64.         vcoef = 1.0 + V(ctrl2, ctrl1) * (vc1 + V(ctrl2, ctrl1) * vc2);
  65.         vcoef = min(vcoef, rmaxvcoef);
  66.         vcoef = max(vcoef, rminvcoef);
  67.         weff = (wr - 2.0 * etch);
  68.         r0 = rsh0 * lr / weff * tcoef * vcoef;
  69.         V(n2, n1) <+  I(n2, n1) * r0;
  70.     end
  71.     endmodule

  72.    
  73.       
  74.    



  75. module absrint_hdl (n2, n1, ctrl2, ctrl1); //(wr, rtemp, jc1a, jc1b, jc2a, jc2b, tc1, tc2, etch, tnom, rshc, rsh0, rsh1, rmaxvcoef, rminvcoef)
  76. electrical       n2, n1, ctrl2, ctrl1;
  77. parameter real wr=0.0;
  78. parameter real rtemp=($temperature - 273.15);
  79. parameter real jc1a = 0;
  80. parameter real jc1b = 0;
  81. parameter real jc2a = 0;
  82. parameter real jc2b= 0;
  83. parameter real tc1 = 0;
  84. parameter real tc2 = 0;
  85. parameter real etch = 0;
  86. parameter real tnom = 25.0;
  87. parameter real rshc = 1;
  88. parameter real rsh0 = 0;
  89. parameter real rsh1 = 0;
  90. parameter real rmaxvcoef = 3;
  91. parameter real rminvcoef = 0.33;

  92. real dt, absv, vc1, vc2, tcoef, vcoef, r0, weff;
  93.    
  94.    
  95.    

  96.     analog begin
  97.        dt = (rtemp - tnom);
  98.         weff = (wr - 2.0 * etch);
  99.         vc1 = jc1a + jc1b * weff;
  100.         vc2 = jc2a + jc2b * weff;
  101.         absv = abs(V(ctrl2, ctrl1));
  102.         tcoef = 1.0 + dt * (tc1 + dt * tc2);
  103.         vcoef = 1.0 + absv * (vc1 + absv * vc2);
  104.         vcoef = min(vcoef, rmaxvcoef);
  105.         vcoef = max(vcoef, rminvcoef);
  106.         r0 = (rshc + rsh0 / weff + rsh1 / (weff * weff)) * tcoef * vcoef;
  107.         V(n2, n1) <+  I(n2, n1) * r0;
  108.     end
  109.     endmodule

  110.    
  111.       
  112.    



  113. module rint_hdl (n2, n1, ctrl2, ctrl1); //(wr, rtemp, jc1a, jc1b, jc2a, jc2b, tc1, tc2, etch, tnom, rshc, rsh0, rsh1, rmaxvcoef, rminvcoef)
  114. electrical       n2, n1, ctrl2, ctrl1;
  115. parameter real wr=0.0;
  116. parameter real rtemp=($temperature - 273.15);
  117. parameter real jc1a = 0;
  118. parameter real jc1b = 0;
  119. parameter real jc2a = 0;
  120. parameter real jc2b= 0;
  121. parameter real tc1 = 0;
  122. parameter real tc2 = 0;
  123. parameter real etch = 0;
  124. parameter real tnom = 25.0;
  125. parameter real rshc = 1;
  126. parameter real rsh0 = 0;
  127. parameter real rsh1 = 0;
  128. parameter real rmaxvcoef = 3;
  129. parameter real rminvcoef = 0.33;

  130. real dt, vc1, vc2, tcoef, vcoef, r0, weff;
  131.    
  132.    
  133.    

  134.     analog begin
  135.        dt = (rtemp - tnom);
  136.         weff = (wr - 2.0 * etch);
  137.         vc1 = jc1a + jc1b * weff;
  138.         vc2 = jc2a + jc2b * weff;
  139.         tcoef = 1.0 + dt * (tc1 + dt * tc2);
  140.         vcoef = 1.0 + V(ctrl2, ctrl1) * (vc1 + V(ctrl2, ctrl1) * vc2);
  141.         vcoef = min(vcoef, rmaxvcoef);
  142.         vcoef = max(vcoef, rminvcoef);
  143.         r0 = (rshc + rsh0 / weff + rsh1 / (weff * weff)) * tcoef * vcoef;
  144.         V(n2, n1) <+  I(n2, n1) * r0;
  145.    
  146.     end
  147.     endmodule
  148.    
  149.       
  150.    




复制代码






                  
res.df.def修改后的:




  1. `include "discipline.h"
  2. module polyres_hdl (n2, n1, ctrl2, ctrl1); //(wr, lr, rtemp, jc1a, jc1b, jc2a, jc2b, tc1, tc2, etch, dl, tnom, rsh0, rmaxvcoef, rminvcoef)
  3. electrical      n2, n1, ctrl2, ctrl1;
  4. parameter real lr=0.0;
  5. parameter real wr=0.0;
  6. parameter real rtemp=($temperature - 273.15);
  7. parameter real jc1a = 0;
  8. parameter real jc1b = 0;
  9. parameter real jc2a = 0;
  10. parameter real jc2b= 0;
  11. parameter real tc1 = 0;
  12. parameter real tc2 = 0;
  13. parameter real etch = 0;
  14. parameter real dl = 0;
  15. parameter real tnom = 25.0;
  16. parameter real rsh0 = 1;
  17. parameter real rmaxvcoef = 3;
  18. parameter real rminvcoef = 0.33;

  19. real dt, absv, vc1, vc2, tcoef, vcoef, r0, weff;
  20.    
  21.    
  22.    

  23.     analog begin
  24.        dt = (rtemp - tnom);
  25.         vc1 = jc1a + jc1b / lr;
  26.         vc2 = (jc2a + jc2b / lr) / lr;
  27.         absv = abs(V(ctrl2, ctrl1));
  28.         tcoef = 1.0 + dt * (tc1 + dt * tc2);
  29.         vcoef = 1.0 + absv * (vc1 + absv * vc2);
  30.         vcoef = min(vcoef, rmaxvcoef);
  31.         vcoef = max(vcoef, rminvcoef);
  32.         weff = (wr - 2.0 * etch);
  33.         r0 = rsh0 * (lr -2*dl) / weff * tcoef * vcoef;
  34.         V(n2, n1) <+   I(n2, n1) * r0;
  35.    
  36. end
  37. endmodule
  38.    
  39.       
  40.    



  41. module diffres_hdl (n2, n1, ctrl2, ctrl1); //(wr, lr, rtemp, jc1a, jc1b, jc2a, jc2b, tc1, tc2, etch, dl, tnom, rsh0, rmaxvcoef, rminvcoef)
  42. electrical      n2, n1, ctrl2, ctrl1;
  43. parameter real lr=0.0;
  44. parameter real wr=0.0;
  45. parameter real rtemp=($temperature - 273.15);
  46. parameter real jc1a = 0;
  47. parameter real jc1b = 0;
  48. parameter real jc2a = 0;
  49. parameter real jc2b= 0;
  50. parameter real tc1 = 0;
  51. parameter real tc2 = 0;
  52. parameter real etch = 0;
  53. parameter real dl = 0;
  54. parameter real tnom = 25.0;
  55. parameter real rsh0 = 1;
  56. parameter real rmaxvcoef = 3;
  57. parameter real rminvcoef = 0.33;

  58. real dt, vc1, vc2, tcoef, vcoef, r0, weff;
  59.    
  60.    
  61.    

  62.     analog begin
  63.        dt = (rtemp - tnom);
  64.         vc1 = jc1a + jc1b / lr;
  65.         vc2 = (jc2a + jc2b / lr) / lr;
  66.         tcoef = 1.0 + dt * (tc1 + dt * tc2);
  67.         vcoef = 1.0 + V(ctrl2, ctrl1) * (vc1 + V(ctrl2, ctrl1) * vc2);
  68.         vcoef = min(vcoef, rmaxvcoef);
  69.         vcoef = max(vcoef, rminvcoef);
  70.         weff = (wr - 2.0 * etch);
  71.         r0 = rsh0 * (lr -2*dl) / weff * tcoef * vcoef;
  72.         V(n2, n1) <+   I(n2, n1) * r0;
  73.    
  74. end
  75. endmodule
  76.    
  77.       
  78.    




复制代码


 楼主| 发表于 2021-4-18 01:01:31 | 显示全部楼层
我在仿真时还遇到一个问题,既是port元件没有参数设置,导致无法做噪声的仿真,求助
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 23:11 , Processed in 0.018525 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表