微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > TSMC .18um工艺mos管总栅宽改了仿真结果不变

TSMC .18um工艺mos管总栅宽改了仿真结果不变

时间:10-02 整理:3721RD 点击:



ic 617环境下,TSMC .18um工艺下总栅宽并不会随着finger number和width的变化而变化,如果手动改total width的话仿真结果跟没改是一样的,也就是说mos'管栅宽最大只有8um,不知坛友是否也有遇到上述情况的?能否给小弟支支招?

增加M不就增大栅宽了?

谢谢回复,增大m也没有,跟没增大之前一样的

增大之前仿真你看了什么参数?没有变化?怎么可能

电流电压,改了和没改一模一样

把finger设成10试试看呢

可能是工艺库没有装全?比如说skill文件丢失?


这是我在tsmc .18工艺库安装文件夹下搜skill文件的结果,也不知道缺不缺文件,能麻烦帮忙看一下吗?
这是 libInit.il 文件的内容:

  1. ;;; If you rename the library you will have to change the
  2. ;;; libName definition in the following let statement.
  3. let( ( (libName "tsmc18rf") libId libPath file element)
  4. ;;
  5. ;; Load PDK Skill Code
  6. ;;
  7. libId = ddGetObj( libName )
  8. if( ddIsId( libId ) then
  9. libPath = ddGetObjReadPath( libId )
  10. envSetVal("layoutXL" "setPPConn" 'boolean nil)
  11. ;envSetVal( "layout" "xSnapSpacing" 'float 0.005 )
  12. ;envSetVal( "layout" "ySnapSpacing" 'float 0.005 )
  13. libPath = strcat( libPath "/../skill")
  14. foreach( file setof(element getDirFiles(libPath) equal(".cbe" index(element ".cbe")))
  15. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  16. load( strcat( libPath sprintf(nil "/%s" file)))
  17. )
  18. foreach( file setof(element getDirFiles(libPath) equal(".ile" index(element ".ile")))
  19. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  20. load( strcat( libPath sprintf(nil "/%s" file)))
  21. )
  22. foreach( file setof(element getDirFiles(libPath) equal(".cb" index(element ".cb")))
  23. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  24. load( strcat( libPath sprintf(nil "/%s" file)))
  25. )
  26. foreach( file setof(element getDirFiles(libPath) equal(".il" index(element ".il")))
  27. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  28. load( strcat( libPath sprintf(nil "/%s" file)))
  29. )
  30. else
  31. printf( "An error occured while initializing the libInit.il file.\n" )
  32. printf( "The library, %s, specified in this file, could\n" libName )
  33. printf( "not be found. If you have:\n" )
  34. printf( "omoved/copied the library to a new name.\n" )
  35. printf( "oedited this file and made a typographical error.\n" )
  36. printf( "ocopied this file from another library.\n" )
  37. printf( "you must edit the libInit.il file and correct the\n" )
  38. printf( "library name.\n" )
  39. )
  40. ;;
  41. ;; Set the Spectre Model Path
  42. ;;
  43. if(isContextLoaded("schView") then
  44. envSetVal("asimenv.startup" "simulator" 'string "spectre")
  45. libPath = ddGetObjReadPath( libId )
  46. asiSetEnvOptionVal(asiGetTool('spectre) "modelFiles"
  47. list(
  48. list(strcat( libPath "/../models/spectre/rf018.scs") "tt")
  49. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3v")
  50. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_na")
  51. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3vna")
  52. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_m")
  53. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3m")
  54. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bip")
  55. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bip3")
  56. list(strcat( libPath "/../models/spectre/rf018.scs") "dio")
  57. list(strcat( libPath "/../models/spectre/rf018.scs") "dio3")
  58. list(strcat( libPath "/../models/spectre/rf018.scs") "dio_dnw")
  59. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_res")
  60. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_mim")
  61. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmos")
  62. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmos33")
  63. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmim")
  64. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfind")
  65. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmvar")
  66. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfjvar")
  67. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_sa")
  68. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_rpo")
  69. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_hri")
  70. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfesd")
  71. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bbmvar")

  72. )
  73. )

  74. asiSetEnvOptionVal(asiGetTool('hspiceS) "modelPath" strcat(libPath "/../models/hspice") )
  75. asiSetEnvOptionVal(asiGetTool('hspiceS) "includeFile" "hspice.mdl")
  76. if(getd('ADSsim) then
  77. asiSetEnvOptionVal(asiGetTool('ADSsim) "modelFiles"
  78. list(
  79. list(strcat( libPath "/../models/ADS/rf018_inc.net") "")
  80. list(strcat( libPath "/../models/ADS/ResModel.net") "res_t")
  81. )
  82. )
  83. );end ADS if
  84. ); if schematic context is loaded
  85. ;;
  86. ;; Set the VXL significan Digits
  87. ;;
  88. when( getd('aelPushSignifDigits)
  89. aelPushSignifDigits(6)
  90. )

  91. auCdlCDFPinCntrl = 't

  92. )

复制代码



这是我在tsmc .18工艺库安装文件夹下搜skill文件的结果,也不知道缺不缺文件,能麻烦帮忙看一下吗?
这是 libInit.il 文件的内容:

  1. ;;; If you rename the library you will have to change the
  2. ;;; libName definition in the following let statement.
  3. let( ( (libName "tsmc18rf") libId libPath file element)
  4. ;;
  5. ;; Load PDK Skill Code
  6. ;;
  7. libId = ddGetObj( libName )
  8. if( ddIsId( libId ) then
  9. libPath = ddGetObjReadPath( libId )
  10. envSetVal("layoutXL" "setPPConn" 'boolean nil)
  11. ;envSetVal( "layout" "xSnapSpacing" 'float 0.005 )
  12. ;envSetVal( "layout" "ySnapSpacing" 'float 0.005 )
  13. libPath = strcat( libPath "/../skill")
  14. foreach( file setof(element getDirFiles(libPath) equal(".cbe" index(element ".cbe")))
  15. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  16. load( strcat( libPath sprintf(nil "/%s" file)))
  17. )
  18. foreach( file setof(element getDirFiles(libPath) equal(".ile" index(element ".ile")))
  19. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  20. load( strcat( libPath sprintf(nil "/%s" file)))
  21. )
  22. foreach( file setof(element getDirFiles(libPath) equal(".cb" index(element ".cb")))
  23. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  24. load( strcat( libPath sprintf(nil "/%s" file)))
  25. )
  26. foreach( file setof(element getDirFiles(libPath) equal(".il" index(element ".il")))
  27. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  28. load( strcat( libPath sprintf(nil "/%s" file)))
  29. )
  30. else
  31. printf( "An error occured while initializing the libInit.il file.\n" )
  32. printf( "The library, %s, specified in this file, could\n" libName )
  33. printf( "not be found. If you have:\n" )
  34. printf( "omoved/copied the library to a new name.\n" )
  35. printf( "oedited this file and made a typographical error.\n" )
  36. printf( "ocopied this file from another library.\n" )
  37. printf( "you must edit the libInit.il file and correct the\n" )
  38. printf( "library name.\n" )
  39. )
  40. ;;
  41. ;; Set the Spectre Model Path
  42. ;;
  43. if(isContextLoaded("schView") then
  44. envSetVal("asimenv.startup" "simulator" 'string "spectre")
  45. libPath = ddGetObjReadPath( libId )
  46. asiSetEnvOptionVal(asiGetTool('spectre) "modelFiles"
  47. list(
  48. list(strcat( libPath "/../models/spectre/rf018.scs") "tt")
  49. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3v")
  50. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_na")
  51. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3vna")
  52. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_m")
  53. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3m")
  54. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bip")
  55. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bip3")
  56. list(strcat( libPath "/../models/spectre/rf018.scs") "dio")
  57. list(strcat( libPath "/../models/spectre/rf018.scs") "dio3")
  58. list(strcat( libPath "/../models/spectre/rf018.scs") "dio_dnw")
  59. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_res")
  60. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_mim")
  61. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmos")
  62. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmos33")
  63. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmim")
  64. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfind")
  65. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmvar")
  66. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfjvar")
  67. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_sa")
  68. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_rpo")
  69. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_hri")
  70. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfesd")
  71. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bbmvar")

  72. )
  73. )

  74. asiSetEnvOptionVal(asiGetTool('hspiceS) "modelPath" strcat(libPath "/../models/hspice") )
  75. asiSetEnvOptionVal(asiGetTool('hspiceS) "includeFile" "hspice.mdl")
  76. if(getd('ADSsim) then
  77. asiSetEnvOptionVal(asiGetTool('ADSsim) "modelFiles"
  78. list(
  79. list(strcat( libPath "/../models/ADS/rf018_inc.net") "")
  80. list(strcat( libPath "/../models/ADS/ResModel.net") "res_t")
  81. )
  82. )
  83. );end ADS if
  84. ); if schematic context is loaded
  85. ;;
  86. ;; Set the VXL significan Digits
  87. ;;
  88. when( getd('aelPushSignifDigits)
  89. aelPushSignifDigits(6)
  90. )

  91. auCdlCDFPinCntrl = 't

  92. )

复制代码


这是我在tsmc .18工艺库安装文件夹下搜skill文件的结果,也不知道缺不缺文件,能麻烦帮忙看一下吗?
这是 libInit.il 文件的内容:

  1. ;;; If you rename the library you will have to change the
  2. ;;; libName definition in the following let statement.
  3. let( ( (libName "tsmc18rf") libId libPath file element)
  4. ;;
  5. ;; Load PDK Skill Code
  6. ;;
  7. libId = ddGetObj( libName )
  8. if( ddIsId( libId ) then
  9. libPath = ddGetObjReadPath( libId )
  10. envSetVal("layoutXL" "setPPConn" 'boolean nil)
  11. ; envSetVal( "layout" "xSnapSpacing" 'float 0.005 )
  12. ; envSetVal( "layout" "ySnapSpacing" 'float 0.005 )
  13. libPath = strcat( libPath "/../skill")
  14. foreach( file setof(element getDirFiles(libPath) equal(".cbe" index(element ".cbe")))
  15. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  16. load( strcat( libPath sprintf(nil "/%s" file)))
  17. )
  18. foreach( file setof(element getDirFiles(libPath) equal(".ile" index(element ".ile")))
  19. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  20. load( strcat( libPath sprintf(nil "/%s" file)))
  21. )
  22. foreach( file setof(element getDirFiles(libPath) equal(".cb" index(element ".cb")))
  23. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  24. load( strcat( libPath sprintf(nil "/%s" file)))
  25. )
  26. foreach( file setof(element getDirFiles(libPath) equal(".il" index(element ".il")))
  27. printf( "Initializing %s from libInit.il for library %s...\n" file libName )
  28. load( strcat( libPath sprintf(nil "/%s" file)))
  29. )
  30. else
  31. printf( "An error occured while initializing the libInit.il file.\n" )
  32. printf( "The library, %s, specified in this file, could\n" libName )
  33. printf( "not be found. If you have:\n" )
  34. printf( " o moved/copied the library to a new name.\n" )
  35. printf( " o edited this file and made a typographical error.\n" )
  36. printf( " o copied this file from another library.\n" )
  37. printf( "you must edit the libInit.il file and correct the\n" )
  38. printf( "library name.\n" )
  39. )
  40. ;;
  41. ;; Set the Spectre Model Path
  42. ;;
  43. if(isContextLoaded("schView") then
  44. envSetVal("asimenv.startup" "simulator" 'string "spectre")
  45. libPath = ddGetObjReadPath( libId )
  46. asiSetEnvOptionVal(asiGetTool('spectre) "modelFiles"
  47. list(
  48. list(strcat( libPath "/../models/spectre/rf018.scs") "tt")
  49. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3v")
  50. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_na")
  51. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3vna")
  52. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_m")
  53. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_3m")
  54. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bip")
  55. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bip3")
  56. list(strcat( libPath "/../models/spectre/rf018.scs") "dio")
  57. list(strcat( libPath "/../models/spectre/rf018.scs") "dio3")
  58. list(strcat( libPath "/../models/spectre/rf018.scs") "dio_dnw")
  59. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_res")
  60. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_mim")
  61. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmos")
  62. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmos33")
  63. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmim")
  64. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfind")
  65. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfmvar")
  66. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfjvar")
  67. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_sa")
  68. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_rpo")
  69. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfres_hri")
  70. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_rfesd")
  71. list(strcat( libPath "/../models/spectre/rf018.scs") "tt_bbmvar"))
  72. )asiSetEnvOptionVal(asiGetTool('hspiceS) "modelPath" strcat(libPath "/../models/hspice") )
  73. asiSetEnvOptionVal(asiGetTool('hspiceS) "includeFile" "hspice.mdl")
  74. if(getd('ADSsim) then
  75. asiSetEnvOptionVal(asiGetTool('ADSsim) "modelFiles"
  76. list(
  77. list(strcat( libPath "/../models/ADS/rf018_inc.net") "")
  78. list(strcat( libPath "/../models/ADS/ResModel.net") "res_t")
  79. )
  80. )
  81. );end ADS if
  82. ); if schematic context is loaded
  83. ;;
  84. ;; Set the VXL significan Digits
  85. ;;
  86. when( getd('aelPushSignifDigits)
  87. aelPushSignifDigits(6)
  88. )auCdlCDFPinCntrl = 't)

复制代码

是其他管子都这样还是就你这个管子这样?你这个管子怎么看着像是个电容?

libPath = strcat( libPath "/../skill")
会不会是你的skill文件夹没有?看目录是与PDK的文件夹相同目录。

试着用总线的形式来表示

所有的MOS管都这样,这个管子是二极管连接的MOS,因为选中了所以看起来有点像电容

我以前碰到过改w无效的问题,不过不是.18工艺
问题出在我同时include了两个pdk,我把另一个pdk注释掉就ok了
不太清楚你是不是同样的问题

多谢帮忙,我现在弄好了,原来是我没有把TSMC.18库的models和skill文件夹放到自己的工作库里,把着两个文件夹放进去就好了

多谢帮忙,我现在弄好了,原来是我没有把TSMC.18库的models和skill文件夹放到自己的工作库里,放着两个文件夹放进去就好了

多谢帮忙,我现在弄好了,原来是我没有把TSMC.18库的models和skill文件夹放到自己的工作库里,放着两个文件夹放进去就好了

不客气,互相学习。

路过 看看看看

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

网站地图

Top