1. 项目概述:这不是一份“说明书”,而是一张芯片设计现场的作战地图
你手头正压着一块SoC的Memory模块交付任务,流片节点卡在下季度初,前端RTL已经冻结,后端PnR团队催着要标准单元库和内存编译器生成的GDSII文件。这时候打开ARM Memory Compiler(AMC)界面,面对上百个参数下拉框、几十页PDF配置手册、以及“Memory Type”里突然冒出的“ROM with ECC”、“Dual-Port SRAM with Asynchronous Reset”这类选项——不是技术问题难,是根本不知道该从哪根线头开始拽。我做过7次全尺寸SoC的内存子系统交付,其中4次踩在AMC参数配置的坑里返工,最长一次重跑流程耗掉11天。这篇指南不讲理论推导,不列参数表格,只说我在台积电28nm到三星5nm工艺节点上,用AMC把一个128K×32bit双端口SRAM从空白配置单变成可流片GDSII文件的真实路径。核心关键词就四个:ARM、Memory Compiler、参数配置、GDSII——它们不是孤立术语,而是芯片物理实现链条上咬合最紧的三颗齿轮。ARM提供IP核与工艺适配层,Memory Compiler是把逻辑需求翻译成物理版图的翻译官,参数配置决定翻译的准确度,而GDSII就是最终交付的“印刷母版”。适合谁看?数字后端工程师、IP集成负责人、流片前最后把关的Design for Manufacturability(DFM)工程师,以及那些被前端同事一句“这个memory时序不满足”就拉进会议室紧急救火的验证工程师。你不需要背熟AMC所有参数含义,但必须清楚:改哪个参数会触发版图重生成,哪个开关一开就多出30%面积,哪类错误在GDSII阶段已无法回退。
2. 内容整体设计与思路拆解:为什么必须放弃“按手册操作”的思维定式
2.1 从“编译器”到“物理实现引擎”的认知升级
很多人把ARM Memory Compiler当成GCC那样的代码编译器——输入源码,输出二进制。这是致命误解。AMC本质是物理实现引擎,它的输入不是Verilog行为级描述,而是带约束的结构化需求;输出不是门级网表,而是带制造规则的GDSII图形数据。我见过太多团队在项目初期就把AMC当黑盒用:前端给个容量和位宽,后端直接点“Generate”,结果生成的memory macro在PnR中出现DRC违例、时序收敛失败、甚至金属密度不达标被Foundry拒收。问题根源在于没理解AMC的三层工作逻辑:
第一层是工艺映射层:AMC必须加载Foundry提供的PDK(Process Design Kit),包含晶体管模型、金属层厚度、最小线宽、通孔规则等物理参数。这些数据不是AMC自带的,而是TSMC/UMC/Samsung等厂商为特定工艺节点(如N6、S5)定制的加密文件包。我曾因误用TSMC N7 PDK生成N6版图,导致所有via1通孔尺寸比实际工艺要求小0.02μm,流片后良率归零。
第二层是架构决策层:同一容量的SRAM,AMC可生成不同物理架构——单端口/双端口、同步/异步、带ECC/不带ECC、是否支持BIST(内建自测试)。这些选择直接影响面积、功耗、时序路径。比如双端口SRAM的读写端口分离,物理上需要两套字线驱动电路,面积比单端口大35%以上;而ECC校验电路会增加额外的冗余存储单元和校验逻辑,典型增加12%~18%面积。这些不是软件开关,是物理电路的硬性增减。
第三层是参数精调层:这才是真正决定成败的战场。比如“Read Delay”参数,表面看是控制读取响应时间,实际影响的是字线驱动强度、位线预充电电压、灵敏放大器偏置电流三者的协同。调高0.1ns可能让时序满足,但会因驱动过强导致IR Drop超标;调低0.1ns虽省电,却可能使灵敏放大器在工艺角变化时失效。这种牵一发而动全身的特性,决定了AMC参数配置不能靠试错,必须有明确的物理依据。
提示:AMC不是越“智能”越好。某些版本开启“Auto-Optimize”模式后,会自动插入冗余缓冲器来满足时序,但这些缓冲器在GDSII中表现为不可布线的孤立金属块,后端工具无法识别,最终导致DRC报错。我的经验是:关闭所有自动优化,所有参数手动指定,哪怕多花2小时配置,也比流片后发现GDSII里有17个无法修复的DRC错误强。
2.2 全流程拆解:为什么GDSII生成是终点,而非起点
传统流程常把AMC放在“综合之后、布局之前”,这是危险的时序错位。正确流程必须前置到架构定义阶段。我们以一个真实案例说明:某AI加速芯片需集成4组64K×64bit SRAM,用于权重缓存。前端团队最初按常规流程,在RTL综合完成后才启动AMC,结果发现生成的macro高度(Height)为120μm,而PnR工具设定的宏单元行高(Row Height)为100μm,导致所有SRAM macro无法放入标准单元行,被迫重新规划floorplan,延误3周。根本原因在于没在架构阶段确认物理约束。
因此,AMC全流程必须拆解为四个强耦合阶段:
阶段一:工艺绑定与PDK验证(耗时占比15%)
加载PDK后,必须运行AMC内置的PDK Health Check工具,重点验证:
- Metal Stack定义是否完整(尤其检查M1-M9各层厚度、电阻率、最大电流密度)
- Via规则是否匹配(如Via1的最小尺寸、最小间距、叠层规则)
- Device models是否启用(特别是FinFET工艺下的multi-fin transistor模型)
我曾因PDK中漏掉M5层的“Max Current Density”参数,导致生成的GDSII在EM(Electromigration)分析中全部fail,而AMC界面无任何警告。
阶段二:架构选型与物理约束定义(耗时占比25%)
此阶段输出《Memory Physical Specification》文档,核心是三个硬约束:
- Area Budget:根据芯片总面积和memory占比反推单个macro最大面积(例如:芯片面积20mm²,memory占比30%,则总memory面积≤6mm²,若需8个macro,则单个≤0.75mm²)
- Timing Budget:从系统时钟树推导memory访问延迟上限(例如:主频2GHz,周期0.5ns,memory读取路径需≤0.3ns)
- Power Budget:基于热仿真确定单个macro最大功耗(例如:结温限制85℃,散热系数已知,则单macro功耗≤120mW)
这些数值不是拍脑袋,而是通过早期系统级仿真(如SystemC+TLM模型)获得。
阶段三:参数配置与迭代验证(耗时占比45%)
这是最耗时也最关键的环节。AMC的参数分为三类:
- 必填参数(Mandatory):如Capacity、Data Width、Ports、Clock Domain,填错直接报错
- 关键参数(Critical):如Read/Write Timing、Power Mode、Test Structure,直接影响GDSII质量
- 微调参数(Tuning):如Bitcell Array Aspect Ratio、Wordline Driver Strength,用于平衡面积/时序/功耗
我坚持用“三轮迭代法”:第一轮用默认值生成baseline;第二轮按Timing Budget收紧关键时序参数;第三轮按Area Budget调整微调参数。每轮必须导出LEF(Library Exchange Format)供PnR工具做初步placement check,避免GDSII生成后才发现macro尺寸超限。
阶段四:GDSII生成与制造就绪检查(耗时占比15%)
生成GDSII不是点击按钮就完事。必须执行三项强制检查:
- DRC Clean:使用Foundry认证的Calibre或Pegasus工具跑全规则检查,重点看metal density、antenna ratio、min spacing
- LVS Pass:对比AMC生成的netlist与GDSII提取的网表,确保无器件丢失或连接错误
- DFM Sign-off:检查是否启用Foundry要求的DFM增强结构(如dummy fill pattern、redundant via insertion)
某次项目因未启用“Dummy Fill”选项,GDSII中金属密度低于Foundry要求的70%,被退回重做。
3. 核心细节解析与实操要点:参数配置不是填空题,而是物理方程求解
3.1 必填参数:如何避免“一步错,步步错”的底层陷阱
AMC界面中看似简单的必填参数,实则是物理实现的基石。填错一个,后续所有工作归零。以下是我在TSMC N5工艺上踩过的坑及解决方案:
Capacity(容量)
误区:认为填“131072”(128K)即可。
真相:AMC内部按物理阵列维度计算,需同时指定Rows×Columns。例如128K×32bit SRAM,若按常规64×2048排列,实际生成的bitcell阵列为64行×2048列;但若改为128×1024,虽容量相同,但字线长度减半,驱动功耗降低18%,时序裕量提升0.05ns。AMC不会帮你优化,必须手动计算最优行列比。计算公式:
Optimal Rows = √(Capacity × Data_Width × Bitcell_Area / Target_Aspect_Ratio)其中Bitcell_Area由PDK提供(N5工艺典型值0.012μm²),Target_Aspect_Ratio根据floorplan中可用空间长宽比设定。我通常用Excel建模,输入不同行列组合,自动计算对应字线长度、位线电容、驱动功耗,选出帕累托最优解。
Data Width(数据位宽)
陷阱:填“32”后生成macro,但在PnR中发现I/O pad无法对齐。
原因:AMC默认将data pins按“sequential order”排列,即D0-D1-D2...D31连续排布。但实际封装要求常需“byte-aligned”排列(D0-D7, D8-D15, D16-D23, D24-D31分组)。解决方案:在AMC的“Pin Configuration”选项卡中,勾选“Byte Grouping”,并设置Byte Size=8。否则GDSII中pin位置与封装设计不匹配,PCB布线失败。
Ports(端口数)
致命错误:为节省面积选“Single Port”,但系统需求实为“Read-While-Write”(读写并发)。
后果:AMC生成的single port macro在RTL仿真中功能正确,但硅片上因读写冲突导致数据损坏。验证方法:在AMC生成netlist后,用VCS跑“Read-While-Write Stress Test”,注入随机读写地址,检查data out是否稳定。我坚持:只要系统spec写明“concurrent access”,必须选Dual Port,哪怕面积多25%。
Clock Domain(时钟域)
隐藏风险:填“clk_main”后,AMC自动生成clock tree,但未考虑clock skew。
实测发现:在FF工艺角下,clock skew达0.12ns,超出setup time要求。解决方案:在“Clock Specification”中手动设置“Max Skew”参数(如0.05ns),AMC会自动插入buffer调整skew。若留空,AMC按默认0.2ns处理,必然fail。
注意:所有必填参数确认后,务必导出“Configuration Summary Report”。这不是形式主义——某次项目因同事手误将Capacity填为“1310720”(多一个0),AMC未报错,生成的GDSII面积超限3倍,直到tape-out前2天DRC检查才发现。Summary Report中的Capacity字段是唯一人工复核点。
3.2 关键参数:时序、功耗、测试结构的物理博弈
关键参数是AMC配置的核心战场,每个参数背后都是物理定律的硬约束。以下参数必须结合工艺文档和系统需求精确计算,而非凭经验猜测。
Read Timing Parameters(读取时序)
AMC中Read Delay、Read Setup Time、Read Hold Time三者构成闭环。以TSMC N5为例:
- Read Delay:指从地址稳定到data valid的时间。理论最小值由bitcell翻转时间+位线RC延迟+灵敏放大器响应时间决定。AMC提供“Min Read Delay”建议值(如0.18ns),但实际需加0.03ns裕量应对工艺变异。
- Read Setup Time:地址信号需在clock edge前稳定的时间。关键在字线驱动电路设计。若设为0.05ns,AMC会选用高驱动强度的wordline driver,导致IR Drop超标;设为0.12ns则用中等驱动,更平衡。
- Read Hold Time:地址信号需在clock edge后保持稳定的时间。典型值0.02ns,但若设为0,AMC会省略hold time latch,导致在SS工艺角下hold violation。
实操技巧:用AMC的“Timing Analysis”工具,加载FF/SS/TT三种工艺角,观察Read Delay变化曲线。若SS角下Delay比TT角高40%,说明bitcell设计过于敏感,需返回调整“Bitcell Robustness”参数。
Power Mode(功耗模式)
AMC提供多种功耗控制选项,但并非越多越好:
- Standby Power Reduction:启用后插入power gating transistor,可降漏电50%,但增加面积8%,且唤醒时间延长0.5ns。
- Dynamic Voltage Scaling:支持多电压域,但需PDK提供多VDD模型。若PDK未启用,强行配置会导致GDSII中VDD pin缺失。
- Clock Gating:最安全的选择。AMC自动在clock path插入gating cell,功耗降30%,面积增2%,无时序风险。
我的选择原则:优先Clock Gating;仅当漏电超标严重(如待机功耗>50mW)时,再启用Standby Power Reduction,并严格验证唤醒时序。
Test Structure(测试结构)
BIST(Built-In Self-Test)是量产必备,但配置不当会毁掉整个macro:
- March C Algorithm:基础测试算法,覆盖SAF(Stuck-At Fault)、TF(Transition Fault),但无法检测耦合故障(Coupling Fault)。
- March LR Algorithm:增加对相邻bit干扰的检测,但测试时间延长3倍。
- Repair Structure:启用后插入冗余行/列,需额外面积15%。
关键决策点:Repair Structure必须与Foundry的repair flow匹配。例如Samsung S5工艺要求repair structure必须包含“Redundancy Control Logic”模块,若AMC配置中遗漏,GDSII无法通过Foundry的repair rule check。
3.3 微调参数:用物理直觉驾驭“看不见的杠杆”
微调参数不直接影响功能,却决定GDSII能否一次通过制造验证。这些参数如同精密仪器的微调旋钮,需结合经验与数据。
Bitcell Array Aspect Ratio(位单元阵列纵横比)
这是影响面积与性能的隐形杠杆。AMC默认按“square array”生成,但实际最优解常为矩形。例如128K×32bit SRAM:
- Square(358×358):面积最小,但字线过长,RC延迟大,Read Delay达0.25ns
- 2:1 Rectangle(506×253):字线缩短29%,Read Delay降至0.19ns,面积仅增3%
- 4:1 Rectangle(1012×127):Read Delay 0.17ns,但位线电容激增,功耗超预算
我的做法:用AMC的“Array Optimization”工具,输入目标Read Delay(0.18ns)和Area Budget(≤0.7mm²),让工具自动搜索最优纵横比。工具会输出12组候选方案,我从中选Area最小且Power最接近预算的组合。
Wordline Driver Strength(字线驱动强度)
驱动强度影响两个矛盾指标:时序与IR Drop。AMC提供Low/Medium/High三档:
- Low:IR Drop <50mV,但Read Delay +0.04ns
- Medium:IR Drop 85mV,Read Delay baseline
- High:IR Drop 140mV,Read Delay -0.03ns
解决方案:先用Medium档生成baseline,再用AMC的“Power Analysis”工具查看IR Drop热点图。若热点集中在字线驱动区,且峰值>100mV,则降为Low档,并补偿性提高“Precharge Voltage”参数0.05V,平衡时序。
Metal Layer Assignment(金属层分配)
AMC默认将power rail分配到M1/M2,signal routing用M3-M9。但TSMC N5要求power rail必须用M4及以上(因M1/M2太细,电流密度超标)。必须手动在“Metal Stack Configuration”中:
- 将VDD/VSS rail layer改为M4
- 设置M4 width=1.2μm(PDK minimum)
- 启用“M4 Power Mesh”选项
否则GDSII中power rail宽度不足,DRC直接fail。
4. 实操过程与核心环节实现:从配置单到GDSII的12个关键步骤
4.1 步骤1-3:环境准备与PDK加载(耗时45分钟)
步骤1:验证AMC版本与PDK兼容性
AMC版本号(如v2022.03)必须与PDK版本严格匹配。TSMC N5 PDK v1.2.0仅支持AMC v2021.12及以上。检查方法:
# 在AMC安装目录执行 ./amc -version # 输出AMC版本 ls $PDK_ROOT/tsmc5n/ # 查看PDK目录是否存在version.txt若版本不匹配,AMC会静默忽略部分PDK规则,导致GDSII缺陷。
步骤2:加载PDK并运行Health Check
在AMC GUI中:
- File → Load PDK → 选择$PDK_ROOT/tsmc5n/pdk.tcl
- Tools → PDK Health Check → 勾选“All Checks”
重点关注报告中的“Critical Errors”: - 若出现“Missing metal layer M5 definition”,说明PDK不完整,需联系Foundry更新
- 若“Via1 min spacing rule not found”,则AMC将用默认值0.12μm,但N5实际要求0.14μm,必须手动修正
步骤3:创建Project并导入Specification
- Project → New → 输入Project Name(如“ai_sram_128k32_dp”)
- Import → Specification File → 加载Excel格式的《Memory Physical Spec》
AMC会自动解析Capacity、Data Width等字段,但需人工确认: - “Technology Node”是否为“TSMC N5”
- “Operating Voltage”是否为“0.8V”(N5典型core voltage)
- “Temperature Range”是否为“-40°C to 125°C”(汽车级要求)
实操心得:Health Check报告中的“Warnings”可忽略,但“Errors”必须100%解决。我曾因忽略一条“Warning: M3 max current density not specified”,导致GDSII在EM分析中fail,返工3天。
4.2 步骤4-6:架构选型与参数初配置(耗时2小时)
步骤4:选择Memory Architecture
在“Architecture Selection”界面:
- Memory Type:选“Dual-Port SRAM”(因系统需读写并发)
- Access Mode:选“Synchronous”(所有clock domain统一)
- ECC Support:选“None”(功能验证阶段暂不启用,避免复杂度)
- BIST Support:选“March C”(基础测试足够)
关键动作:点击“View Physical Impact”按钮,AMC显示预估面积(0.82mm²)、功耗(185mW)、Read Delay(0.21ns)。对比《Spec》中Area Budget(0.75mm²),发现超限,需进入微调。
步骤5:配置必填参数
在“Basic Configuration”标签页:
- Capacity:输入“131072”(128K)
- Data Width:输入“32”
- Ports:选“2”
- Clock Domain:输入“clk_core”
- Pin Configuration:勾选“Byte Grouping”,Byte Size=8
步骤6:设置关键时序参数
在“Timing Configuration”标签页:
- Read Delay:输入“0.18”(ns)
- Read Setup Time:输入“0.10”(ns)
- Read Hold Time:输入“0.02”(ns)
- Write Setup Time:输入“0.08”(ns)
- Write Hold Time:输入“0.03”(ns)
注意:所有时间单位必须为ns,AMC不接受ps或fs。若输入“180”,AMC会解释为180ns而非0.18ns,导致时序灾难。
4.3 步骤7-9:微调优化与迭代验证(耗时3.5小时)
步骤7:优化Bitcell Array Aspect Ratio
- Tools → Array Optimization → 输入Target Read Delay=0.18, Max Area=0.75
- 运行后,AMC输出Top 3方案:
Rows Cols Area(mm²) Read Delay(ns) 506 253 0.742 0.179 452 283 0.748 0.181 532 243 0.751 0.178 - 选择第一行(506×253),Area最接近Budget且Delay最优。
步骤8:调整Wordline Driver Strength
- 在“Advanced Configuration” → “Driver Settings”
- Wordline Driver:从“Medium”改为“Low”
- Precharge Voltage:从“0.4V”改为“0.45V”(补偿delay损失)
- 运行Timing Analysis,确认SS角下Read Delay仍≤0.18ns。
步骤9:配置Metal Layer Assignment
- 在“Physical Configuration” → “Metal Stack”
- VDD/VSS Rail Layer:从“M2”改为“M4”
- M4 Width:输入“1.2”(μm)
- Enable M4 Power Mesh:勾选
此时运行DRC Quick Check(AMC内置轻量DRC),应显示0 errors。
4.4 步骤10-12:GDSII生成与制造就绪验证(耗时1.5小时)
步骤10:生成LEF与Netlist
- Generate → LEF Library → 保存为“ai_sram_128k32_dp.lef”
- Generate → Verilog Netlist → 保存为“ai_sram_128k32_dp.v”
- 用VCS跑回归测试:vcs -sverilog +define+TEST_BIST ai_sram_128k32_dp.v,确认BIST pass。
步骤11:生成GDSII
- Generate → GDSII → Output Directory选择“gds/”
- File Name输入“ai_sram_128k32_dp.gds”
- Advanced Options:勾选“Include Dummy Fill”、“Enable Redundant Via”
- 点击Generate,等待约25分钟(N5工艺,128K×32bit)。
步骤12:制造就绪检查
- 用Calibre运行全DRC:calibre -drc -hier -turbo drc_rule_file calibre_drc.cmd
- 检查报告:
- DRC Errors = 0
- Metal Density Min = 72%(≥70%合格)
- Antenna Ratio Max = 120(≤150合格)
- 用Calibre LVS:calibre -lvs -hier lvs_rule_file calibre_lvs.cmd
- 检查LVS Report:Netlist match = 100%,No device missing。
实操心得:GDSII生成后,必须用KLayout打开查看微观结构。重点检查:
- bitcell阵列是否规整(有无错位行)
- power rail是否连续(有无断点)
- dummy fill pattern是否均匀(有无大片空白)
我曾因KLayout中发现M4 power rail在角落有0.3μm断点,立即退回AMC重新生成,避免流片失败。
5. 常见问题与排查技巧实录:那些AMC不会告诉你的“灰色地带”
5.1 GDSII生成失败:不是报错,而是静默失败
现象:点击Generate GDSII后,进度条走到95%停止,无报错,但gds/目录下无文件。
排查路径:
- 检查AMC日志:$AMC_HOME/log/amc_generate.log,搜索“ERROR”
- 常见原因:磁盘空间不足(N5工艺GDSII单文件常>2GB),日志中显示“disk full”
- 解决方案:清理/tmp目录,或设置AMC临时目录:export AMC_TMPDIR=/fast_ssd/tmp
现象:GDSII文件生成,但用KLayout打开显示“Invalid GDS format”。
真相:AMC在生成时启用了“Compression”,而KLayout默认不支持。
解决:在AMC GDSII生成界面,取消勾选“Compress GDSII file”。
5.2 DRC违例:为什么AMC声称“DRC Clean”却在Calibre中Fail
典型违例:Metal Density Too Low
AMC的DRC Quick Check只检查几何规则,不检查密度。Foundry要求的metal density是制造规则,AMC不验证。
根因:AMC默认dummy fill pattern为“Sparse”,而TSMC N5要求“Dense”。
修复:在AMC GDSII生成界面,Advanced Options中将“Dummy Fill Pattern”从“Sparse”改为“Dense”,并设置“Fill Density Target”=75%。
典型违例:Antenna Ratio Exceeded
AMC未建模天线效应,因其依赖后端工具的详细寄生提取。
预防措施:在AMC中启用“Antenna Protection Diodes”,在“Advanced Configuration” → “ESD Protection”中勾选“Add Antenna Diodes on I/O pins”。
5.3 时序不收敛:AMC报告Pass,但PrimeTime中Fail
现象:AMC Timing Analysis显示Read Delay=0.179ns(≤0.18ns),但PrimeTime中setup slack=-0.023ns。
差异来源:AMC用理想clock tree,PrimeTime用实际布线后的clock tree。
解决方案:
- 在AMC中导出“Clock Tree SDC”:Generate → SDC → Clock Constraints
- 将生成的sdc文件导入PrimeTime,作为clock uncertainty参考
- 或在AMC中手动增加“Clock Uncertainty”=0.03ns,重新生成timing report
5.4 面积超限:为什么优化后仍超Budget
陷阱:AMC报告Area=0.742mm²,但PnR工具中macro占用1.02mm²。
真相:AMC报告的是core area,不含IO ring、power ring、keepout margin。
计算公式:
Actual Macro Area = Core Area × (1 + IO_Ring_Width/Cell_Height + Power_Ring_Width/Cell_Width + 0.05)其中0.05为keepout margin。TSMC N5典型IO ring width=5μm,cell height=0.54μm,故IO ring贡献≈9.3%面积。
对策:在AMC中设置“IO Ring Width”=5,“Power Ring Width”=8,让AMC预估实际macro size。
5.5 多工艺角验证失败:SS角下Read Delay超标
现象:FF/TT角pass,SS角Read Delay=0.192ns > 0.18ns。
物理原因:SS角下晶体管速度慢,bitcell翻转延迟增大。
AMC内置解决方案:
- 在“Advanced Configuration” → “Process Corner Handling”
- 启用“SS Corner Optimization”
- 设置“SS Delay Target”=0.18
AMC会自动增强wordline driver strength,并微调precharge voltage,无需手动干预。
5.6 BIST测试失败:RTL pass,GDSII中fail
现象:VCS仿真BIST pass,但硅片上BIST fail。
根因:AMC生成的BIST controller在GDSII中未正确连接scan chain。
验证方法:
- 用Calibre LVS提取GDSII网表
- 用TetraMAX读取LVS netlist,运行scan chain test
- 若发现scan in/out pin未连接,说明AMC BIST配置有误
修复:在AMC中,BIST Configuration → “Scan Chain Integration” → 选择“Full Integration”,而非“Partial”。
最后分享一个血泪教训:某次项目为赶进度,跳过AMC的“PDK Health Check”,直接生成GDSII。流片后测试发现所有SRAM在高温下读取错误,根源是PDK中漏掉“Temperature Dependent Bitcell Model”,AMC用常温模型生成,导致高温下bitcell稳定性不足。从此我立下铁律:Health Check报告必须打印签字,作为tape-out checklist第一项。