据本人实际测试Cadence Spectre 6.1.8版本, 曾遭遇网表导入时出现报“parser error”以及“missing pin”这样的状况, 对于新手而言, 若按照步步流程去做, 可以较为轻易地躲开……
据本人实际测试Cadence Spectre 6.1.8版本, 曾遭遇网表导入时出现报“parser error”以及“missing pin”这样的状况, 对于新手而言, 若按照步步流程去做, 可以较为轻易地躲开此类常见问题。
第一步 检查网表格式与版本匹配
拿出文本编辑器, 将网表文件予以打开, 去查看第一行的语法状况。当中绝大多数的报错情况, 乃是源于网表属于HSPICE格式, 然而工具却把默认设置成了Spectre格式。动手把网表文件头转变为以.subckt或者.global开头的样子, 确保每行结尾不存在多余的空格。要是文件是从别的EDA工具当中导出来的、那就先用sed命令对特殊字符进行批量替换后的结果才是。
【新手避坑】
常规出现的报错情形为: 呈现出“unrecognized statement”这种状况, 或者出现“unknown element”这种情况。其缘由在于: 文件里头混进了注释行, 并且有空行没有得到处理。解决的办法是: 将所有以*或者$做开头的行给删掉, 要保证每一行仅仅包含一个器件定义, 要是出现多行并列报错, 那就直接复制到新的文件里重新运行。
第二步 统一模型路径与库引用
于网表之中寻觅引用模型库的语句, 诸如.lib或者.include之类。将路径转变为绝对路径, 以此防止相对路径在工程目录存有差异之际无法找到文件。与此同时, 核查模型文件名的大小写情况, Linux系统之下大小写敏感, MOS.mod与mos.mod属于不同文件。
【新手避坑】
常出现的报错情形为: file not found或者cannot open library , 核心缘故在于路径之中运用了中文或者空格, 这致使解析出现中断的状况。解决的办法是将库文件全部放置到工程的根目录, 网表里仅仅书写文件名, 而不书写路径。要是存在多层引用, 借助 -y 参数去指定搜索目录?
第三步 正确设定端口与电源地
在网表中的每一个端口名, 都非得要和原理图顶层端口保持全然一致, 这里面涵盖了大小写以及格子数方面。对于电源和地这种情况, 要进行单独宣告, 利用.global vdd vss将它们设定成为全局节点。要是用到了IO pad, 在网表里要手动去添加DD和SS的端口连接。
【新手避坑】
常常出现的报错情形为: floating pin 或者 undriven net。其缘由在于端口名书写错误或者遗漏撰写电源节点。颇为迅速的解决途径是运行一回 check netlist 工具, 该工具会罗列出全部未连接的节点。将报错的节点名在网表之中进行搜索, 寻觅到缺失的连线并添加上去。要是网表里面没有电源地声明, 那么仿真便会自动呈现浮空状态。
第四步 执行前语法校验与调试
于Cadence ADE界面之中, 点击Simulation, 接着点击Netlist, 再点击Create Final Netlist, 以此来生成最终的网表文件。随后取spectre -c命令于终端运行校验, 其便会返回带有具体行号的错误。推荐的参数设置是, 把analogOption之下的maxstep设定为10ns, 此值能够使仿真精度与速度达到平衡, 防止因步长过小致使网表导入后仿真出现卡死状况。
【新手避坑】
普遍出现的报错情况为, 在网表扁平化过程当中出现内部错误, 这属于层次化网表里最为常见的问题。其成因在于, 并不能保证顶层与子模块的端口双方之间保持着匹配,出现或的关系致使子模块当中运用了不符合规范的字符。存在两种解决办法, 其一为将子模块全都展开成为平面网表, 其具备的优点是调试较为简单, 而缺点则是文件体积庞大;其二是采用hierarchical模式保持层次, 其优点是便于顶层进行修改, 而缺点是子模块必须要独立且完整。要是你的工程存在重复调用的模块, 采用方案二会更加高效。
对于高频出现的“FATAL: Cannot find instance definition for ‘M1’”报错, 其完整的解决方案为: 头一步,于网表里搜寻M1定义, 以此来确认它归属于哪一个子电路;紧接第二步, 在网表顶部添加.lib “path/to/model.lib” mos引用模型文件;然后第三步, 要是模型文件之中不存在该器件, 那就使用m=”model_name”参数指定替代模型;最后第四步, 再度生成网表并运行校验, 直至不存在报错为止。
这个方法仅仅适用于标准数字或是混合信号网表, 要是网表里含有Verilog – A或者Verilog – AMS混合描述, 那就需要先单独进行导出模拟部分的操作。替代方案乃是使用vlogan工具把Verilog网表转变为Spectre可读格式, 之后再予以整合进来。在实际工程里面, 当碰到复杂三层嵌套子电路的情况时, 直接采取分段导入的方式相较于全量处理而言更为稳定。
微信扫一扫
还没有评论呢,快来抢沙发~