首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
UPF低功耗设计实战:Power Switch与State Retention实现要点
📅 2026/10/6 11:50:18
✍️ 爱科研究院
👁 阅读 3,247
做低功耗设计做到后期大家都会碰上同一个现实问题时钟门控、DVFS这些手段确实能省但省不到根子上。尤其是28nm以下工艺漏电功耗占比越来越高一颗待机为主的芯片什么活都不干漏电照样在烧电池。很多工程师在MCU项目里盯STM32L151C8T6A这类芯片的待机电流软件里切Sleep模式很简单但芯片内部真正能把数字内核和SRAM的供电断开靠的是一整套电源域管理机制。落到数字IC设计流程里这套机制的标准描述方式就是UPF。UPF里有两个东西你早晚绕不开Power Switch和State Retention。Power Switch解决的是“怎么把电源真正断掉”State Retention解决的是“断了之后唤醒时怎么把现场捞回来”。这两个机制单独拿出来都不难理解但真正落到UPF代码、多电压域规划、以及后端实现的时候里面全是细节。这篇就按我实际做项目的顺序把UPF实现Power Switch和State Retention的要点以及一个多电压域案例完整拆一遍。1. 关断电源不算完Power Switch与State Retention要解决的真实问题1.1 漏电功耗为什么非关电源不可先纠正一个常见误区时钟门控Clock Gating不是低功耗的全部。时钟门控只能砍掉动态功耗中由时钟翻转带来的那部分也就是充放电功耗。芯片里每个cell只要接着电源管子的源漏之间就有泄漏电流这个电流不受时钟控制只要VDD还在它就一直漏。DVFS也一样降压确实能显著降低漏电但电压只能从1.0V降到0.7V左右不可能降到0。降到0的方法只有一个——把供电通路彻底断开。这就是Power Gating也叫电源关断。Power Gating的结构本质上很简单在电源网格和逻辑单元之间插一个开关这个开关由控制信号控制。开关断开时后级逻辑的VDD浮空漏电通路基本被切断。听起来简单但真正的问题是断开之后这一片逻辑里所有的寄存器状态全部丢失。放在CPU里就意味着程序计数器、状态寄存器、缓存内容全没了。1.2 关断电源后系统面临“失忆”与唤醒成本如果系统允许冷启动直接断电没什么问题。但很多低功耗场景不允许冷启动。举个例子一个带蓝牙协议栈的穿戴设备从待机到正常收发数据如果每次唤醒都要重新初始化射频、重新加载协议栈上下文唤醒时间可能从几十微秒变成几毫秒唤醒过程的平均功耗也会高得离谱。这时候就出现了一个折中方案允许你把主电源断掉但保留一小部分寄存器的状态。这部分寄存器不能挂在被关断的VDD上而是挂在一个常开的备份电源上。它们内部有额外的状态保持逻辑在主电源断电时仍然可以维持数据。这就是State Retention也叫状态保持。所以Power Switch和State Retention从来不是二选一的关系而是配套使用Power Switch负责断主电State Retention负责在断主电期间把需要的数据留着。实际项目里这俩的UPF描述经常出现在同一个power domain定义里。1.3 UPF在整个流程中的角色没有UPF之前做多电压域设计是一件很痛苦的事。前端工程师要在RTL里插入一堆隔离逻辑和电源控制信号后端工程师要在网表里手工约束哪些cell属于哪个电源域仿真和验证阶段还要反复对齐两边的理解稍有偏差流片回来就是唤醒失败或者寄存器数据错乱。UPFUnified Power FormatIEEE 1801标准把这件事统一了。它用文本方式描述电源域划分、供电网络、电源开关、状态保持、隔离和电平转换策略。RTL仿真工具能读UPF逻辑综合工具能读UPF后端PR工具能读UPF功耗签核工具也能读UPF。同一个低功耗意图从架构定义一直到GDS输出全程保持一致。一个多电压域项目的UPF实现核心就是把这些内容写清楚机制解决什么问题不做的后果Power Domain逻辑划分和供电归属工具不知道哪个cell由谁供电Power Switch真正切断电源通路只能降压不能断电State Retention断电时保留寄存器状态唤醒必须冷启动Isolation关断域输出不再浮空后级逻辑收到不定态Level Shifter不同电压域之间电平转换漏电增大甚至闩锁2. UPF供电意图建模域、供电网络和开关单元的关系2.1 先理解UPF的三个基本概念UPF里最基础的概念有三个Power Domain、Supply Net、Supply Port后面还有一个Supply Set。Power Domain是逻辑上的分组它把一组逻辑单元划到一起表示这些单元由同一组供电网络供电。一个模块可以单独划成一个域也可以把多个模块划进同一个域。划分的原则通常是“一起断电”或“一起调压”。Supply Port是芯片边界上的供电引脚比如外部电源进来就是通过一个Supply Port。Supply Net就是内部的供电网络相当于片内的VDD走线。Supply Port和Supply Net之间通过connect_supply_net连接起来。你可以把整个供电系统理解成供水系统Supply Port是自来水厂的总出水口Supply Net是通往各栋楼的主管道Power Switch就是每户门口的分水阀。UPF要做的就是把这些阀门、管道和用水区域的关系写成一份可被工具识别的清单。2.2 域和供电网络的连接set_domain_supply_net每个Power Domain必须声明自己的主供电源和地网络这一步通过set_domain_supply_net完成。例如create_power_domain PD_CPU -elements {u_cpu_top} create_supply_net VDD_CPU -domain PD_CPU create_supply_net VSS_CPU -domain PD_CPU set_domain_supply_net PD_CPU -primary_power_net VDD_CPU -primary_ground_net VSS_CPU这里的意思很直白PD_CPU域里的所有cell默认接到VDD_CPU和VSS_CPU上。如果这个域的VDD_CPU是经过Power Switch之后的输出那就意味着这个域可以被整体关断。容易忽略的一点是-elements这个选项决定了哪些RTL实例属于这个域。如果在划分domain时漏掉了某个子模块工具会把它当成always-on处理或者直接报错。在实际项目中domain划分漏掉的模块通常出现在验证阶段表现为某个寄存器在关断后竟然还能保持数据。2.3 Retention需要额外的常开供电网络State Retention的关键在于需要被保留的寄存器必须连接到一个常开的备份电源上。这个备份电源不能挂在主开关的输出侧否则主电源一断备份也没了。常规做法是在顶层always-on域里创建一个专门的retention电源网络比如VDD_RET然后把这个网络从外部常开电源直接引出不经过任何Power Switch。UPF里的set_retention命令会指定这个retention电源网络工具后续会把保留寄存器的备份电源pin连到该网络上。这块是新手最容易犯的错误给一个可关断域同时定义了主电源和retention电源但retention电源网络本身却创建在被关断的域内部或者连接到被关断的switch输出上。结果就是关断后retention电源也跟着掉电State Retention形同虚设。2.4 两个邻居Isolation和Level ShifterPower Switch和State Retention不是孤立存在的。当一个域被关断它的输出信号会浮空产生不定态X后级逻辑可能采到未知值甚至导致漏电。因此必须在关断域的输出路径上加隔离单元把输出钳到固定电平。UPF里用set_isolation和set_isolation_control来描述。另外如果两个域的工作电压不同比如1.0V域和0.8V域信号从高电压域进入低电压域时如果没有电平转换后级mos管可能无法完全关断产生贯通电流。UPF中通过set_level_shifter描述这部分需求。很多刚开始做低功耗设计的同学只盯着Power Switch和State Retention本身忽略isolation和level shifter结果综合之后一堆时序违例或者仿真报X态。这几个机制必须放在一起建模缺一个都不完整。3. Power Switch的UPF写法与落地细节3.1 create_power_switch的命令逐项拆解UPF里描述一个电源开关用的是create_power_switch命令。一个最典型的写法如下create_power_switch SW_CPU \ -domain PD_CPU \ -input_supply_port {vdd_in VDD_TOP} \ -output_supply_port {vdd_out VDD_CPU} \ -control_port {sleep cpu_sleep} \ -on_state {on_state vdd_in {!cpu_sleep}} \ -ack_port {ack cpu_ack}逐项解释-input_supply_port开关输入侧的供电端口通常接常开的顶层电源。-output_supply_port开关输出侧的供电端口这个端口连到被关断域的primary power net上。-control_port开关控制信号比如cpu_sleep为高时表示进入睡眠。-on_state定义开关在什么条件下导通。{on_state vdd_in {!cpu_sleep}}的意思是当cpu_sleep为假时vdd_in和vdd_out之间导通。-ack_port开关状态确认信号用于指示开关已经完成导通或关断。这个信号在上下电顺序控制里非常重要。创建完开关之后还要把输出端口连到域的供电网络上connect_supply_net VDD_CPU -ports {SW_CPU/vdd_out}到这里PD_CPU域的电源通路就建立起来了VDD_TOP → Power Switch → VDD_CPU → PD_CPU内的所有cell。3.2 开关控制信号的同步与ack处理电源开关不是瞬间完成的。一个大的power domain里通常并联了几十个甚至上百个开关单元每个单元的导通延迟有差异。如果控制信号cpu_sleep在不同的开关单元之间到达时间不一致就会导致部分单元先关断部分单元还开着电流集中在还没关断的路径上产生局部压降和热问题。所以cpu_sleep信号必须从always-on域产生并且经过同步器之后再送进开关控制端口。同步器的作用是避免睡眠/唤醒控制信号与时钟域之间产生亚稳态。ack信号也一样它是开关对控制信号的应答。在确认开关已经真的关断之前系统不能断言“域已掉电”否则逻辑状态可能正好在关断瞬间被破坏。UPF的power state table里也经常利用ack状态来约束上下电顺序。3.3 Header Switch与Footer Switch的选择Power Switch从物理实现上分为header switch和footer switch两种类型开关位置常用管型优点代价Header SwitchVDD侧PMOS对地噪声影响小容易实现状态保持开关导通电阻导致IR drop更明显Footer SwitchVSS侧NMOS面积略小开关速度更快地弹噪声需要额外注意UPF本身不直接区分header还是footer它只描述“输入供电端口到输出供电端口之间的导通关系”。但底层库里的switch cell会区分。综合和后端工具会根据库单元特性以及UPF中的供电连接关系来做匹配。另一个注意点是一个power domain可能同时存在多个Power Switch的实例比如一个大CPU域为了满足电流能力会并联4组开关。UPF里可以把它们分别创建也可以用一个switch cell的多个实例来表示。工具在物理实现时最终会把每组开关的输入、输出、控制、应答这些端口全部对应到真正的开关单元引脚上。3.4 关断与唤醒过程中的常见错误实际项目中Power Switch相关的UPF问题主要体现在几个地方。第一个是on_state条件写反。很多新手把{!cpu_sleep}误写成{cpu_sleep}结果睡眠时开关反而导通一省电就死机。这类问题在仿真中通常表现为正常的关断流程走不下去PST状态和实际供电状态对不上。第二个是漏写ack_port。没有ack等于是让下游逻辑盲等工具在检查上下电顺序时会报时序违规。实际上UPF工具需要ack来推导power switch的状态切换完成时间没有ack就无法生成正确的UPF仿真模型。第三个是开关输出网络被多个域复用。VDD_CPU这个net如果同时被两个Power Switch驱动工具会认为存在两个驱动源在形式化检查阶段直接报错。一个被关断域的primary power net只能由一个开关的输出端口驱动。4. State Retention的UPF声明、单元选型与恢复时序4.1 set_retention 怎么用UPF中描述State Retention的核心命令是set_retention。下面是一个典型用法set_retention PD_SRAM \ -retention_power_net VDD_RET \ -retention_control {sram_save sram_restore} \ -elements {u_sram/state_ff_*}这里PD_SRAM是你要做状态保持的power domainVDD_RET是常开备份电源网络sram_save和sram_restore是保存和恢复控制信号-elements指定哪些寄存器需要保持。-elements如果省略工具默认对域内所有可保留的寄存器做retention处理。但在实际工程里通常只选择一小部分关键状态做保持而不是全保留。原因有两点一是retention cell的面积比普通cell大二是每个retention cell即使不工作它的备份电源部分也会有额外漏电。全保留导致的结果往往是休眠功耗不降反升失去了低功耗的意义。4.2 Retention Cell的库侧要求UPF只是表达意图真正实现状态保持的是库里的retention cell。一个retention flip-flop通常有两个电源pin一个是主电源pin接到被开关的VDD上另一个是备份电源pin接到常开的VDD_RET上。综合工具在识别到set_retention声明后会尝试把普通寄存器映射成库里的retention寄存器。如果工艺库提供的是普通D触发器没有retention版本综合工具会直接报错提示找不到可用的retention cell。所以做UPF项目之前第一件事不是去写UPF脚本而是去查工艺库文档确认库里有没有retention flip-flop、电源pin名字是什么、控制信号是同步还是异步。有些库的retention cell要求控制信号必须来自常开域这个约束会直接影响你对save/restore信号的处理方式。4.3 Save与Restore的完整时序State Retention不是“断电数据自动留着通电数据自动回来”这么简单。它需要一套完整的控制时序。关断流程大致是这样系统进入睡眠请求。在时钟仍然运行且主电源仍然正常的状态下断言save信号把寄存器当前值打入retention锁存器。等待save完成释放主电源域的逻辑时钟关闭。断言isolation信号把关断域输出钳住。关断Power SwitchVDD掉电。此时retention cell的备份电源仍然供电数据稳定保持。唤醒流程反过来先打开Power SwitchVDD重新上电。等待电源稳定。断言restore信号把保留的数据恢复到主触发器。等待restore完成。解除isolation恢复时钟系统从断点继续运行。这套时序在UPF里通过set_retention_control以及PSTPower State Table来约束。仿真时工具会检查restore是否在isolation解除之前完成如果restore还没做完就解除了isolation输出端可能出现毛刺。4.4 Retention与Isolation必须配合很多人忽略的一点是retention域在断电期间不止内部寄存器要保持它的输出信号也必须处于可控状态。因为retention域的输出经常连到always-on域如果断电期间输出浮空always-on域会采到X态甚至造成漏电。所以retention域通常既要配State Retention也要配输出隔离set_isolation PD_SRAM -clamp_value 0 set_isolation_control PD_SRAM -isolation_signal sram_iso -assertion_level high在唤醒流程里restore完成之后要把isolation释放掉这样恢复后的有效数据才能顺利送到下游。这里的顺序如果反了下游模块会先看到一段垃圾数据然后才看到恢复后的正确数据。5. 一个三域SoC的完整UPF案例从PST到隔离策略5.1 系统结构设计下面用一个典型的三域SoC来做完整案例。这个系统包含PD_TOP常开域包含电源管理单元PMU、时钟控制器、唤醒控制器一直供电。PD_CPU可关断域包含CPU core关断时不需要保持状态唤醒走重新初始化流程。PD_SRAM可关断状态保持域包含SRAM控制器和部分关键状态寄存器需要在休眠期间保持数据。顶层只有一个外部主电源VDD和一个地VSS。VDD直接给PD_TOP供电再通过两个Power Switch分别给PD_CPU和PD_SRAM供电。PD_SRAM的一小部分寄存器使用VDD_RET常开供电。5.2 完整UPF代码下面是这个系统的一份精简版UPF实现按IEEE 1801-2019的常用写法整理# 1. 常开域 create_power_domain PD_TOP create_supply_port VDD -direction in create_supply_port VSS -direction in create_supply_net VDD_TOP -domain PD_TOP create_supply_net VSS_TOP -domain PD_TOP connect_supply_net VDD_TOP -ports VDD connect_supply_net VSS_TOP -ports VSS set_domain_supply_net PD_TOP -primary_power_net VDD_TOP -primary_ground_net VSS_TOP # 2. CPU可关断域 create_power_domain PD_CPU -elements {u_cpu} create_supply_net VDD_CPU -domain PD_CPU create_supply_net VSS_CPU -domain PD_CPU connect_supply_net VSS_CPU -ports VSS set_domain_supply_net PD_CPU -primary_power_net VDD_CPU -primary_ground_net VSS_CPU create_power_switch SW_CPU \ -domain PD_CPU \ -input_supply_port {vdd_in VDD_TOP} \ -output_supply_port {vdd_out VDD_CPU} \ -control_port {sleep cpu_sleep} \ -on_state {on_state vdd_in {!cpu_sleep}} \ -ack_port {ack cpu_ack} connect_supply_net VDD_CPU -ports {SW_CPU/vdd_out} # 3. SRAM可关断且保留域 create_power_domain PD_SRAM -elements {u_sram} create_supply_net VDD_SRAM -domain PD_SRAM create_supply_net VSS_SRAM -domain PD_SRAM connect_supply_net VSS_SRAM -ports VSS set_domain_supply_net PD_SRAM -primary_power_net VDD_SRAM -primary_ground_net VSS_SRAM create_power_switch SW_SRAM \ -domain PD_SRAM \ -input_supply_port {vdd_in VDD_TOP} \ -output_supply_port {vdd_out VDD_SRAM} \ -control_port {sleep sram_sleep} \ -on_state {on_state vdd_in {!sram_sleep}} \ -ack_port {ack sram_ack} connect_supply_net VDD_SRAM -ports {SW_SRAM/vdd_out} # Retention备份电源 create_supply_net VDD_RET -domain PD_TOP connect_supply_net VDD_RET -ports VDD set_retention PD_SRAM \ -retention_power_net VDD_RET \ -retention_control {sram_save sram_restore} \ -elements {u_sram/state_ff_*} # 4. 隔离和电平转换 set_isolation PD_CPU \ -isolation_power_net VDD_TOP \ -isolation_ground_net VSS_TOP \ -clamp_value 0 set_isolation_control PD_CPU -isolation_signal cpu_iso -assertion_level high set_isolation PD_SRAM \ -isolation_power_net VDD_TOP \ -isolation_ground_net VSS_TOP \ -clamp_value 0 set_isolation_control PD_SRAM -isolation_signal sram_iso -assertion_level high set_level_shifter PD_CPU -applies_to inputs -threshold 0.7 -location self set_level_shifter PD_SRAM -applies_to inputs -threshold 0.7 -location self # 5. Power State Table create_pst PST -supplies {VDD_TOP VDD_CPU VDD_SRAM VDD_RET} add_pst_state FULL_ON -pst PST -state {ON ON ON ON} add_pst_state CPU_OFF -pst PST -state {ON OFF ON ON} add_pst_state SRAM_RETENTION -pst PST -state {ON OFF OFF ON}这份代码中有几个值得注意的细节Retention电源网络VDD_RET放在PD_TOP域内创建然后直接连接到外部VDD端口不经过任何开关保证它在PD_SRAM断电时仍然供电。set_retention的-elements只列了u_sram/state_ff_*这类关键状态寄存器其他普通逻辑不做保持。set_isolation的钳位值选了0这是最常用的安全值。如果关门后输出需要保持高电平可以改成-clamp_value 1。set_level_shifter的-location self表示电平转换单元放在当前域边界内部具体布局由后端工具处理。5.3 综合与后端的检查点这份UPF文件写好之后每个阶段都要跑一遍一致性检查。逻辑综合阶段重点检查所有power domain是否都有明确的primary power和ground每个power switch的on_state是否与PST中的状态一致retention cell是否成功映射备份电源是否连接正确。物理实现阶段重点检查switch cell的布局是否均匀避免IR drop集中在某个区域isolation cell和level shifter cell是否插入在正确的位置是否被放到了always-on域而不受开关控制。签核阶段重点检查power state table的每条状态是否与实际电压/功耗仿真对齐retention控制时序在低电压条件下能否满足时序要求。6. Power-Aware仿真、检查和实测最常踩的坑6.1 仿真里最典型的三类问题Power-Aware仿真里最痛苦的不是代码逻辑Bug而是低功耗流程导致的X态传播。第一类是isolation没加或者控制方向反了。关断域输出悬空后级always-on域直接采到X然后X在整个设计里雪崩式传播最后表现为整个系统状态不可预期。这种问题在仿真波形里查起来很累因为X会从任何位置冒出来。第二类是retention控制时序不对。restore信号有效时主电源还没有稳定或者isolation已经先解除了。仿真工具如果支持UPF的动态检查会直接报restore和isolation之间的时序违规。第三类是PST状态定义与实际电源行为不符。例如PST里写了VDD_CPU为OFF但UPF仿真模型发现SW_CPU的控制信号并没有被断言为关断模式工具会报出电源状态冲突。这类冲突在真实芯片里可能表现为唤醒失败。6.2 排查问题的一条实用路径我自己的排查路径一般是这样的先看PST定义的每个状态确认它和预期电源策略一致。打开power-aware波形直接看各power switch的控制信号、ack信号、isolation信号、save/restore信号的时序。如果某个域的输出出现X先查该域的isolation控制信号是否在关断前一拍已经有效。如果retention数据恢复后仍然是X先查备份电源网络VDD_RET在断电期间是否稳定再查retention cell是否真的被映射成功。如果综合阶段报retention cell未找到去库目录确认retention cell的电源pin命名是否与UPF里的net名称匹配。6.3 实测中容易翻车的几个物理问题UPF在仿真和综合层面都跑通了到了实际芯片上还会遇到几个难以预料的坑。一个是唤醒瞬间的电流冲击。Power Switch重新导通的瞬间原本掉电的区域所有cell同时充电会产生很大的峰值电流。如果开关单元的尺寸和数量设计不足VDD会被瞬间拉低导致同一时刻正在工作的always-on域复位。解决方法是把开关分组、分时打开或者用带限流设计的软启动开关但成本是唤醒时间变长。另一个是retention cell的备份电源在长时间休眠期间的漏电。很多retention cell的备份电源部分用的是常开的超低漏电晶体管但超低漏电往往也意味着恢复速度慢。如果你的产品要求微秒级唤醒这里需要仔细对照库的datasheet选型不能只看面积。还有一个常见问题是多个地网络之间的电位差。如果PD_SRAM的地网络VSS_SRAM和常开域的地网络VSS_TOP在物理上最终是同一层金属那问题不大。但如果后端为了降噪把不同域的地网络分开走在retention cell的备份电源和主地之间就可能出现电压差长期工作会加速老化。项目里曾有同事遇到过休眠模式下retention数据偶发性丢失最后追到就是地网络分块之后电位差引起的。6.4 一个小技巧善用UPF自带的检查命令主流EDA工具都提供UPF一致性检查命令比如综合阶段的check_power_domain、验证阶段的UPF断言检查、物理实现阶段的电源域重叠检查。不要等到仿真挂掉才开始查UPF写完后第一时间跑一遍静态检查很多笔误当时就能发现。另外建议把UPF文件和RTL版本放到同一个版本管理仓库里任何一处改动都要同步更新。多电压域设计里UPF和RTL不一致造成的麻烦比RTL本身有Bug还难查。我自己在做了几个多电压域低功耗项目之后最大的体会是Power Switch和State Retention的UPF语法其实不难难的是把整个电源策略想清楚。哪个域需要常开哪个域需要保持保持哪些寄存器隔离钳到0还是1唤醒顺序怎么安排这些问题在架构阶段就决定了UPF的复杂程度。UPF只是把策略变成工具能读懂的语言而已。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/6 11:50:18
AMS1117-3.3V压降特性与负载能力实测:LDO稳压芯片深度解析
2026/10/6 11:50:18
车载以太网线束测试全解析:从TC2到TC9的工程实践指南
2026/10/6 11:45:17
基于STM32F103与SC8701的10A数控电源硬件设计实战
2026/10/6 12:35:21
一种“凶险到需要 80 位专家联手“的罕见病——噬血细胞综合征 2026 版诊疗指南来了
2026/10/6 12:35:21
海外版外卖源码:部署后订单导出接口怎么验收
2026/10/6 12:35:21
大模型应用开发入门指南:大数据小白也能轻松掌握,收藏提升你的竞争力!
2026/10/6 12:35:21
前端逆袭AI!8个月从Java后端到AI应用开发完整路线(小白零踩坑)
2026/10/6 12:35:21
小白也能看懂的大模型学习指南:抓住AI风口,高薪就业不是梦!
2026/10/6 12:30:20
Slim 模板引擎 Logic Less 模式完全指南:Mustache 式字典渲染、配置与源码实现
2026/10/6 1:04:29
搭建无线EEG采集前端:BW16+ESP32-CYD实时波形显示实战
2026/10/6 1:04:29
CH10D功放芯片DIY音箱实战:从选型到调试的完整指南
2026/10/6 1:04:29
视频序列目标跟踪实战:解决ID跳变与遮挡丢失
2026/10/5 4:43:56
Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化
2026/10/6 4:47:52
多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系
2026/10/5 13:05:37
hindsight:面向LLM应用的事后可观测性工程实践
2026/10/5 20:28:25
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/5 20:28:23
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/5 20:28:21
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)