AMS 环境、Virtuoso 操作与分阶段排错
本页为六课共用操作指南。课程各课说明具体电路与参数;这里解决如何确认工具流程真的运行到目标阶段。总纲 · 记录。
当前真实状态与开课条件
服务器已确认 Virtuoso IC25.1-64b.38、Spectre25.1.0.054、DDI25.10-p002_1。官方 AMSDInADE 已独立解压,PLL top/config 可读;首次runams退出255,在缺connectLib的网表阶段失败,未进入AMS仿真。
当前SSH PATH及已检查Cadence目录未找到xrun/irun/数字引擎,IC/Spectre树未找到所需连接库,不排除其他安装位置。AMS/Xcelium许可未验证。详见 实际尝试 与 工具栈,不重复解压或启动旧任务。
实际运行新实验之前需要:兼容的Xcelium/AMS安装及连接库,IC/Spectre配套组合,所需授权许可,个人工作目录中的最小例子通过。Xcelium25.03维护版只是候选,精确ISR/OS支持以官方矩阵及安装内 spectre_compatible_version.xml 核对,不能直接写“25.03一定兼容”。本课不自动安装软件、不改全局PATH。
暂未具备工具时:完成解析题、接口表、独立RTL/数值参考和testbench设计;把真实联合仿真项留待运行。纯Spectre+Verilog-A可跑模拟模型,但不替代RTL数字事件引擎;wreal/RNM也不自动解节点阻抗与KCL/KVL。
个人目录与数据边界
远程项目为 /home/userone/AAAIC/test_tb/digital_ic_learning。后续实现建议自有源码放 lessons/ams/(当前尚未创建),个人OA库放项目 .tools/ams_course/<run_id>/,仿真/波形/报告放 results/ams_course/<run_id>/。专有PDK、官方教程和连接库仍引用已授权安装位置,不能复制入Git。
独立批处理与个人ADE状态不修改其他GUI会话或共享服务。脚本只给子进程配置必要工具路径,不更改全局环境。远程传输使用普通scp,并在两端比较SHA-256;若文本异常先检查哈希、编码和行尾,不能直接使用另一个转码方式掩盖损坏。
Virtuoso 共用操作顺序
- 建立模型与symbol。 将RTL导入合适文本视图,模拟行为选择Verilog-A或Verilog-AMS并区分端口域;导入菜单/视图名取决于版本。保证symbol与源码的端口名、方向、总线位序一致。
- 建立top schematic。 放数字模块、模拟对象、驱动、供电和地,指定元件参数/初态,标记每个测量节点。使用PDK时加入对应model section,不混用不相关工艺模型。
- 建立config。 用AMS相关模板/设置逐实例指定视图,填写counter/FSM、DAC、cmp、RC和适配器绑定表。确认stop/switch view list与实例覆盖规则没有隐藏地选中另一个视图。
- 从config打开ADE。 当前IC25.1 FAQ在Explorer给出的设置为
Simulation → Netlist and Run Options → AMS Unified netlister with xrun;其他版本按本机帮助确认。检查实际top和保存状态属于个人试验台。 - 定义边界。 对IE/connect rule显式检查VDD/VSS、阈值、rout、tr/tf、初始化及X/Z。选择自写桥时确认没有重复自动插桥。总线混合DAC的逻辑输入与electrical-bit DAC的接口要分别处理。
- 配置短tran和保存。 记录stop time、模拟容差/maxstep、数字timeunit/timeprecision、initial condition及保存信号;先跑几个受控事件,再做长码流。数字边界可先用1ns/1ps的精度计划,非整数时钟周期需记录实际量化误差;它不是模拟求解精度。
- 逐阶段检查。 检查netlist、compile、elaborate、simulate的退出/完成情况,确认实际参数/绑定/插桥;再读波形与独立检查结果。
- 导出和存档。 数字按sample_event/id导出,模拟测量用实际节点和时间;保存工具版本、模型版本、随机种子、绑定表和误差阈值。导出的报告/波形仍在忽略目录。
不要照抄旧教程中OSS/irun状态到新流程。已有PLL示例保存的旧连接规则为 ConnRules_18V_full_fast,不能因此把本课1 V/2 V接口也设为1.8 V;应重新建立适配状态。
两种时间机制如何一起检查
数字寄存器在clk事件后按NBA等调度更新;模拟电压按方程连续演化。mixed模型更新目标会触发新的模拟响应,crossing再产生离散事件。把LOAD、模拟跳变、sample、valid、消费边沿分别保存;同一时刻竞争要用保持窗口/明确相位消除,不能通过“这次仿真先执行谁”证明硬件正确。
一阶RC理想基准从maxstep≤τ/20开始只是初始选择。AM02阈值误差要求通常需要更细步长/事件定位;有2 ns边沿或1 ns缺口时需按最短特征进一步限制并复核。只保存稀疏点可能丢掉波形,即使求解器内部已解析事件,因此保存/导出网格也要记录。
收敛操作:固定电路与刺激→减半maxstep→收紧reltol及相关电压/电流绝对容差→加密导出/测量网格,比较关键电压/时间/谱线。数字precision另做测试;容差变化导致结果变化大时优先找事件、初态、模型不连续和测量插值。
按失败阶段排错
| 阶段/现象 | 优先检查 | 可以证明什么 |
|---|---|---|
| OA/config读不开 | library路径、view、端口/总线 | OA可读只证明设计数据库可读 |
| 网表报connectLib缺失 | 安装/引用路径、连接规则、旧状态 | 尚未进入编译/仿真 |
| 编译/展开失败 | HDL语法、discipline、缺模块、参数 | 无运行结果;不可解读“模拟精度” |
| 许可/进程启动失败 | 对应产品与子进程环境 | Virtuoso框架许可不证明AMS许可 |
| 模拟初始解/收敛失败 | 浮空节点、理想源冲突、初态/模型连续性 | 先修模型,不直接降级为RNM掩盖阻抗问题 |
| 电压合理但码错误 | 位序、量程、signed、阈值、采样时刻 | 定位模型/数字契约 |
| 结果随步长变化 | crossing、最短脉冲、保存网格、FFT重采样 | 尚未完成数值收敛 |
| 仿真退出正常但检查失败 | 独立oracle、身份/时序/性能 | 工具完成不等于实验通过 |
后续脚本必须同时检查进程退出码、各阶段完成、检查器完成和PASS/FAIL。建议自建课程检查器使用 AMxx_CHECKS_COMPLETE+明确用例统计;这是待实现要求,当前没有这些运行标记。失败保留原始日志和第一个错误,不只保留最后一行退出码。
学习结果分类为“解析完成/数字验证/AMS行为验证/电路替换验证”。每类写实际证据;课程设计完成与实验掌握分别登记。