LEF/DEF物理设计文件解析:从5.8手册语法到自动检查脚本
简介LEF/DEF 5.8语言参考是Cadence官方发布的EDA领域重要规范文档面向数字IC后端设计工程师、物理验证人员和EDA工具开发者。文档系统阐述了LEF库交换格式与DEF设计交换格式的定义前者覆盖工艺技术层定义、单元模型、间距规则及宏模型后者描述模块布局、网络连接、约束设置与物理分区帮助读者建立从工艺库到物理实现的数据交互体系。资源包以单个PDF文件形式提供大小仅2.48MB便于离线查阅内容包含Preface、What’s New等章节完整呈现LEF/DEF 5.8语法结构及2017年5月产品版本特性并附有版权与权限说明适合个人学习参考。已有2171人学习该文档是数字IC物理设计入门与进阶的重要参考资料除了掌握语法规则外读者还能结合设计流程理解EDA工具链中数据交换的关键细节为布局规划、布线验证等环节提供扎实理论支撑。1. 一本 PDF 手册解决了物理设计里的什么“翻译”问题lefdefref-5.8.pdf 是很多后端工程师桌面上躺着却很少被翻开的参考文档。它定义的是 LEF 与 DEF 这两种物理设计交换格式的完整语法一个是库交换格式描述工艺层、标准单元几何与 Pin一个是设计交换格式描述一颗芯片里实例怎么摆放、网络怎么连接。当一个 LEF 里的 pin 坐标始终跟版图对不上或者 DEF 里的 net 少了一条线翻手册比开 GUI 更快定位根因。这篇笔记面向要读懂、编写、校验 LEF/DEF 文件的从业者把 5.8 版里最常用的对象、语法和踩坑点串一遍。新手可以照着示例文件把最小单元跑通熟手可以直接跳到后面几节的边界参数和排查记录。2. LEF 和 DEF 的分工以及 5.8 手册怎么组织这些内容2.1 LEF 管“长什么样”DEF 管“摆在哪”LEF 是 Library Exchange Format 的缩写它描述的是工艺库和单元库的物理属性。一个 LEF 文件里会看到 LAYER、SITE、MACRO、PIN、OBS、VIA 这些关键字。以 LAYER 为例里面定义了金属层的名字、类型ROUTING 还是 CUT、布线方向HORIZONTAL / VERTICAL、最小宽度、间距、Pitch。这些参数不是摆设后续布线器能走几条线、过孔怎么阵列全由它们决定。如果 LEF 里的 spacing 比真实工艺大工具会在密度不高的地方也绕远无端增加面积。DEF 是 Design Exchange Format它记录某个具体设计实例的状态。DIEAREA 给出芯片整体边界COMPONENT 列出每个子模块或标准单元放在哪个坐标、什么朝向NET 记录各 Pin 之间的连接关系ROUTING 则存放已经走好的线段。可以这么理解LEF 是“零件目录”DEF 是“装配说明书”。同一个 LEF 可以服务几十个 DEF因为库属性是共用的换一颗芯片只是换一个新 DEF。我在实际调试时经常遇到布局文件里某个单元位置和 LEF 的 SITE 不匹配。这时候我会同时打开两份文件DEF 里查 component 的放置坐标与方向LEF 里查这个 macro 的 ORIGIN 和 SIZE两边的坐标系都以 DIEAREA 左下角为原点。大多数错位问题都出在坐标基准不一致这个后面会细说。2.2 5.8 手册里最值得先读的四个章节拿到 lefdefref-5.8.pdf 这样的参考手册不建议从头当小说看。常见的手册结构会把语法说明、关键字约定和每种对象的完整定义分成几个大块。我一般会先读四部分语法表示法、单位与精度、LEF 的 MACRO 定义、DEF 的 COMPONENT 与 NET。语法表示法说明如何看那些带尖括号和问号的“公式”比如pin name [layer ...]。单位与精度部分决定了你写的数字是纳米还是微米是 1000 倍误差还是 1 倍误差。MACRO 定义是我翻得最勤的一段因为标准单元或 IP 的形状、Pin 位置、禁止布线区全在这里。手册里会给出每个语句的允许范围比如CLASS CORE还是CLASS BLOCK哪些语句可选哪些必须出现。同样DEF 的 COMPONENT 章节会写清楚component语句怎么与 LEF 里的 macro 名称关联以及PLACED与FIXED状态的差别。很多新人会在 COMPONENT 里把PLACED和FIXED混写导致后续布线时工具把固定单元移走。最后必须看示例样例。5.8 版手册里通常附有简化的 LEF 和 DEF 完整文件哪怕只有几十行也比一段段孤立语法更容易理解对象间引用。我的习惯是把样例文件保存下来先跑通解析再一点点改成自己项目的格式出了问题能确定是“改坏的地方”还是“原来就不支持”。2.3 手册中反复出现的 BNF 式语法怎么读在我常用的 5.8 版手册里每种对象的定义都会用类似 BNF 的形式给出。比如 MACRO 的定义里会出现MACRO macroName [CLASS ...] [ORIGIN ...] [SIZE ...] ;。读这种语法时方括号代表可选竖线代表“或”省略号代表可重复。我第一次读时习惯在关键词之间画连线把可选项展开形成一棵“语法树”。这样写自定义脚本时能清楚知道每一行从哪里开始、到哪里结束。还有一个容易被忽略的点手册里所有语句末尾的分号是语法的一部分不是排版装饰。我见过很多手写 LEF 的人漏掉分号导致整段解析失败报错指向下一行。所以读语法规则时我会特意把分号也当成 token。另外注释符号在 LEF/DEF 里是#整行注释不支持行内注释。如果你想在一段描述后面加说明只能在下一行从#开始。这些细节在手册的“Notation”部分都会写但一般人都跳过了。3. 照着 5.8 手册写一个最小 LEF关键语法与参数怎么定3.1 LAYER / SITE / MACRO 三段式先给一个能通过解析器检查的最小 LEF 文件。这个文件定义了一个 M1 金属层、一个 CORE 放置单元和一个 inverter 宏单元共三个部分。实际工艺库里会有几十层金属和上百个 macro但语法骨架是一样的。VERSION 5.8 ; BUSBITCHARS [] ; DIVIDERCHAR / ; MANUFACTURINGGRID 0.001 ; UNITS DATABASE MICRONS 1000 ; END UNITS LAYER M1 TYPE ROUTING ; DIRECTION HORIZONTAL ; PITCH 0.14 ; WIDTH 0.07 ; SPACING 0.07 ; END M1 SITE CORE SIZE 0.56 BY 1.26 ; END CORE MACRO INV CLASS CORE ; ORIGIN 0 0 ; SIZE 0.56 BY 1.26 ; SITE CORE ; PIN A DIRECTION INPUT ; PORT LAYER M1 ; RECT 0.01 0.50 0.10 0.76 ; END END A PIN Y DIRECTION OUTPUT ; PORT LAYER M1 ; RECT 0.30 0.30 0.40 0.56 ; END END Y OBS LAYER M1 ; RECT 0.10 0.76 0.56 1.26 ; END END INV END LIBRARY逻辑说明文件头部的VERSION 5.8表示这份 LEF 文件遵循 5.8 语法版本它和参考手册版本号正好对应。MANUFACTURINGGRID 0.001声明工艺制造网格为 1 纳米所有坐标必须落在这个网格上。UNITS DATABASE MICRONS 1000表示一个数据单位等于千分之一微米也就是说“微米数值 × 1000”才是文件里的整数但我在示例里直接写小数是为了阅读方便真实工具通常接受两位小数并自动换算。参数说明LAYER 中TYPE ROUTING表示这是布线层DIRECTION HORIZONTAL告诉布线器该层首选水平走线这会影响绕线策略。PITCH是相邻走线中心到中心的距离决定该层能塞多少条线。WIDTH和SPACING是最小线宽与最小间距。SITE 里的SIZE 0.56 BY 1.26是行高和单元宽度方向的基础网格DEF 里建立 ROW 时会引用这个名字。MACRO 的CLASS CORE告诉工具这是可自动放置的标准单元而不是硬核或块。ORIGIN 0 0定义宏在单元格子里的坐标原点SIZE必须与 SITE 的倍数关系一致否则工具会认为该单元不能放进这一行。这里的 INV 宽度是 0.56正好等于一个 SITE 宽度高度等于行高所以它只占一个 site 格。3.2 PIN 和 OBS 的边界条件PIN 是工具连接单元的关键。在 INV 中我写了两个 pinA 是输入Y 是输出。每个 pin 的DIRECTION声明信号流向PORT内给出物理金属图形可以是一个或多个LAYER配合多个RECT。如果 pin 分布在两层金属上需要写多个 LAYER 块。注意每个PORT必须完整闭合END而 PIN 本身也要闭合END A。少一个 END 都会导致解析错乱且报错行未必是缺 END 的那一行。OBS 是 Obstruction 的缩写表示单元内部禁止布线器走线或放置过孔的区域。这个区域通常是单元里的扩散区、内部金属或电源走线。在示例里我把 OBS 放在从 x0.10 到 0.56 的上半部分覆盖了 Y pin 的右侧。如果 OBS 和某个 PIN 的 PORT 重叠工具会认为该 pin 无法接入或者接入后引起短路于是最终网表里这个连接会被绕到很远的地方时序反而恶化。所以写 PIN 和 OBS 时我的习惯是先画一张单元俯视图把每个 RECT 的坐标点标在纸上再用布尔运算确认 PIND 和 OBS 交集为空。这个动作虽然原始但比在 GUI 里放大几十倍查坐标更快。手册里对 OBS 的定义同样遵循“层名 多个 RECT”的结构而且 RECT 必须落在 MACRO 的 SIZE 范围内越界语句会直接报错。另外SITE名字必须和 DEF 中的行列定义一致。如果 LEF 里叫 CORE而 DEF 里写ROW r0 CORE_X工具会提示找不到 site。这类命名一致性是 LEF/DEF 联调的常见问题我会在写文件前把命名清单统一检查一遍比如用grep提取所有 SITE 和 ROW 的第二个 token 排序对比。4. 用 DEF 描述一次布局布线结果手动解析并验证4.1 DIEAREA / COMPONENT / NET 三个核心对象DEF 是结果文件它的语法比 LEF 更强调“实例”的概念。下面这段 DEF 描述了一个 4 个 INV 组成的简单设计芯片边界是 4.2 微米见方一行 CORE 行四个单元分别摆在不同方向三个网络把它们连接起来。VERSION 5.8 ; DIVIDERCHAR / ; BUSBITCHARS [] ; UNITS DATABASE MICRONS 1000 ; END UNITS DIEAREA ( 0 0 ) ( 4.20 4.20 ) ; ROW CORE_ROW_1 CORE 0 0 N DO 7 BY 1 STEP 0.56 0 ; COMPONENTS 4 ; - U1 INV PLACED ( 0.00 0.00 ) N ; - U2 INV PLACED ( 0.56 0.00 ) FN ; - U3 INV PLACED ( 1.12 0.00 ) S ; - U4 INV PLACED ( 0.00 1.26 ) N ; END COMPONENTS PINS 2 ; - IN1 NET in DIRECTION INPUT LAYER M1 ( 0.01 0.50 ) ( 0.10 0.76 ) PLACED ( 0.00 0.00 ) N ; - OUT1 NET out DIRECTION OUTPUT LAYER M1 ( 0.30 0.30 ) ( 0.40 0.56 ) PLACED ( 0.00 0.00 ) N ; END PINS NETS 3 ; - in ( IN1 A ) ( U1 A ) ; - n1 ( U1 Y ) ( U2 A ) ( U3 A ) ; - out ( U4 Y ) ( OUT1 ) ; END NETS END DESIGN逻辑说明DIEAREA给出两个对角坐标定义了芯片的物理边界所有 component 的坐标必须落在这个矩形内。ROW定义了一条名为 CORE_ROW_1 的行它引用 LEF 里的 CORE site原点在 (0,0)方向为 NDO 7 BY 1 STEP 0.56 0表示沿 X 方向重复 7 次每次步进 0.56 微米。这决定了单元可以放在哪些 x 位置上。COMPONENTS部分每行以-开头后面是实例名 U1、宏名 INV PLACED表示已放置坐标是相对于 DIEAREA 原点的位置最后的方向标识 N、FN、S 表示四种旋转状态N 是 0 度FN 是垂直翻转S 是旋转 180 度。这些方向定义手册里有专门一张表我不建议死记用到时翻表即可。NETS是连接关系表。括号里第一个 token 如果是只有一个名字比如( IN1 A )它指芯片引脚 IN1 的 A 端口如果是两个名字( U1 Y )指实例 U1 的 Y pin。这里in网络把芯片输入 IN1 和 U1 的 A 连在一起。注意 net 名不能与关键字符冲突而且每个括号对与上一行之间可以用分号结束。4.2 一致性检查DEF 里 component 对应哪个 LEF macroDEF 文件本身不包含单元内部几何它只是引用了 LEF 中的 macro 名。所以验证 DEF 的第一步是看每个 component 的第二个 token 是否都能在 LEF 文件中找到同名 MACRO。如果 DEF 里写的是INV而 LEF 中只有INV_X1解析器会直接在加载 DEF 时报出 “component type INV not found” 之类的错误。手动比对时我常用的命令是分别从两个文件里提取名字grep -hi ^MACRO design.lef | awk {print $2} | sort -u lef_macros.txt grep -hi ^- design.def | awk {print $3} | sort -u def_macros.txt diff lef_macros.txt def_macros.txt这个脚本把 LEF 里的 MACRO 名字和 DEF 里 component 引用的类型名分别排序然后 diff。输出中出现在 def_macros.txt 而不在 lef_macros.txt 里的就是引用缺失。注意grep -hi的-h是不显示文件名-i忽略大小写但真实 LEF/DEF 关键字是严格大小写敏感的这里忽略大小写只是为了快速发现拼写差异确认后要回头用区分大小写的方式修。一致性检查和坐标检查要一起做。比如 DEF 中 U2 放在 (0.56, 0.00) 方向 FN但 INV 的 ORIGIN 是 (0,0)SIZE 是 0.56×1.26那么 U2 的实际占位范围是 x 从 0.56 到 1.12y 从 0 到 1.26没有越界。如果改成方向 S占位矩形会基于原点旋转但 x 宽度不变仍然要验证四个角落在 DIEAREA 内。我一般会把这类检查写成脚本把每个 component 的占位矩形与 DIEAREA 做相交判断一旦越界就按实例名打印出来。5. 读 5.8 手册的常见问题排查四处分分钟翻车5.1 版本不一致旧工具吞掉 5.8 新语法现象用 5.8 语法写的 LEF 放进某老版本后端工具里加载工具不报错但文件里某些语句被静默忽略导致生成的版图缺层或缺 pin。原因旧工具对不认识的语法采取“读到就跳过”的策略它只解析自己版本支持的子集。比如 5.8 中某些层属性或过孔扩展项旧版本不识别就直接略过看起来文件加载成功实际信息已经丢了。解决在写文件头部强制声明VERSION 5.8 ;然后在验证阶段用工具本身的 dump 功能把读到的 LEF 再写出来对比原始文件凡是丢掉的语句逐个查手册确认是“工具不支持”还是“我写错”。最省事的做法是找一台装有 5.8 配套工具的机器做解析不要拿老版本碰新格式。5.2 单位换算MANUFACTURINGGRID 和 DATABASE MICRONS 的精度现象DEF 里 pin 的坐标与 LEF 中 macro 的 pin 坐标明明一样但在 GUI 里显示偏离了几十个纳米。原因两边的MANUFACTURINGGRID不一致或者DATABASE MICRONS的换算系数不同。LEF 里写DATABASE MICRONS 1000DEF 里也写 1000但它们各自配合的 MANUFACTURINGGRID 一个 0.001 一个 0.005那么实际允许的坐标网格不同四舍五入后产生偏差。解决检查两份文件头部的UNITS和MANUFACTURINGGRID保证完全一致。我通常将所有坐标写成该 grid 的整数倍例如 grid0.001 时所有 x/y 的小数位数不超过 3 位。调试脚本里也加入一个取模检查如果坐标不在 grid 整数倍上直接警告。5.3 大小写敏感缺一个 END 或错一个字母现象手写 LEF 时把END A写成END a解析器直接报 unexpected keyword甚至把后续几十行都当成一个对象。原因LEF/DEF 的关键字和对象名都是大小写敏感的END A里的 A 必须与PIN A里的 A 完全一样。而end、END这样的关键字也严格区分。很多人从文本直接复制引号变成全角或分号用成中文分号也会触发类似问题。解决写完后先运行文本格式检查确保所有引号、分号都是半角。再用sed -n提取每个PIN到END的缩进层次人工核对闭合关系。我自己的写法是每个 PIN 开头和结尾都顶格写PIN和END A中间 PORT 缩进一层这样错位一眼能看到。5.4 OBS 与 PIN 重叠连接永远拉不出来现象布线时某条 net 明明连接了两端但生成的版图上该 pin 处没有过孔芯片验证时该 net 开路。原因LEF 里 OBS 覆盖了 PIN 的 PORT 区域。布线器在避让 OBS 时认为 pin 不可用于是连接从外部绕但最终没有可接入点只能丢弃连接。GUI 里检查时 net 显示为 dangling。解决写单元时把所有 PIN 的 RECT 坐标收集到一个列表再把所有 OBS RECT 收集起来做矩形相交判断。相交面积超过 0 就重新画。我通常在 LEF 文件最末尾放一组注释记录每个 pin 和 obs 的边界坐标方便日后复查。这个校验逻辑也可以直接写进自动检查脚本见下一章。6. 把手册变成自动化检查工具一个解析 LEF/DEF 的脚本思路与其每次手工去 diff不如做一个最简单的 Python 脚本用正则把 LEF 里的 MACRO 定义提取出来把 DEF 里的 COMPONENT 引用提取出来做映射检查。这个脚本不依赖任何第三方库纯标准库就能跑适合放在项目根目录当作预检查工具。import re def get_macros_from_lef(path): macros {} with open(path, r, encodingutf-8) as f: text f.read() for m in re.finditer(rMACRO\s(\S)(.*?)(?END\s\1\s*;|MACRO\s), text, re.S): macros[m.group(1)] m.group(2) return macros def get_components_from_def(path): comps [] with open(path, r, encodingutf-8) as f: lines f.readlines() inside False for line in lines: stripped line.strip() if stripped.startswith(COMPONENTS): inside True continue if inside and stripped.startswith(END COMPONENTS): break if inside and stripped.startswith(- ): parts stripped.split() comps.append((parts[1], parts[2])) return comps def check_def_lef_lef(def_path, lef_path): macros get_macros_from_lef(lef_path) comps get_components_from_def(def_path) missing [c for c in comps if c[1] not in macros] if missing: for inst, mtype in missing: print(f[MISSING] DEF instance {inst} references macro {mtype} not in LEF) else: print(All components have matching macro definitions.) check_def_lef_lef(design.def, design.lef)逻辑说明get_macros_from_lef用正则把MACRO 名字到END 名字之间的文本作为一个对象提取保存到字典。这里用非贪婪匹配和正向预查保证不会跨 macro 截断。get_components_from_def只关心COMPONENTS段到END COMPONENTS之间那一行行以-开头的记录取出实例名和宏名。参数说明正则里的\.\*?必须配合re.S使用否则无法跨行匹配(?END\s\1\s*;|MACRO\s)是零宽断言代表“主体文本后面要跟 END 或下一个 MACRO”。如果你希望同时检查 PIN 与 OBS 重叠可以继续扩展get_macros_from_lef返回的信息把每个 PIN 内所有 PORT 的 LAYER/RECT 解析出来再与 OBS 的 RECT 做矩形相交判断。我每次改完 LEF 或 DEF都会把这个脚本放在根目录跑一遍低成本挡住 80% 的低级错误。剩下的 20% 才是真正需要开 GUI 或对照手册逐条理解的问题。希望这份基于 5.8 版手册的实操思路帮到你。本文还有配套的精品资源点击获取

相关新闻

2020年VM Pro16.1.0注册、安装以及使用教程

2020年VM Pro16.1.0注册、安装以及使用教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:45:13 阅读更多 →
PCL 半径滤波器【2026最新版】

PCL 半径滤波器【2026最新版】

半径滤波器 一、算法原理 1、原理概述 2、实现流程 3、算法特点 4、参考文献 二、代码实现 三、结果展示 四、相关链接 博客长期更新,本文最新更新时间为:2026年10月13日。 一、算法原理 1、原理概述 半径滤波器的滤波思想非常直接,就是在点云数据中,设定每个点一定半径范…

2026/10/14 1:45:13 阅读更多 →
GPRMC 格式

GPRMC 格式

大论文中英文文献混排!!!其实不用在endnote里面加editor list 了 每次参加论文答辩,我几乎都会听到参考文献格式方面的问题。自己整理论文时也常遇到类似的麻烦,尤其是下面两类: **中英文作者格式混在一起…

2026/10/14 1:45:13 阅读更多 →

最新新闻

风电水电联合调度优化算法与工程实践

风电水电联合调度优化算法与工程实践

1. 项目背景与核心价值去年参与某省级电网清洁能源消纳项目时,我第一次接触到风-水联合调度这个课题。当时面对风电出力的强随机性和水电调节的滞后性,团队在制定优化运行方案时遇到了不少挑战。这个经历让我深刻认识到:在双碳目标下&#xf…

2026/10/14 2:21:24 阅读更多 →
从PowerDesigner迁移到PDMan:开源数据库建模与Git版本管理实践

从PowerDesigner迁移到PDMan:开源数据库建模与Git版本管理实践

1. 为什么我最终把数据库建模从商业软件迁到了PDMan做后端开发时间长了,数据库建模这件事几乎绕不开。早些年团队里清一色用PowerDesigner,画物理模型、生成DDL、导出字段文档,一套流程走下来确实顺手。但问题也很明显:正版授权费…

2026/10/14 2:21:24 阅读更多 →
微信小程序仿智行火车票开发实战:云开发+数据离线化方案

微信小程序仿智行火车票开发实战:云开发+数据离线化方案

简介:本资源是一套完整的微信小程序仿智行火车票12306系统实战项目,面向Java后端与小程序前端初学者及全栈学习者,聚焦铁路订票核心业务场景,涵盖用户查询、车次管理、订单生成等全流程功能实现。项目采用SSM(SpringSp…

2026/10/14 2:21:23 阅读更多 →
RTMP Flash播放插件替代方案:flv.js迁移实战与参数调优

RTMP Flash播放插件替代方案:flv.js迁移实战与参数调优

简介:这份资源是面向需要在网页中播放RTMP流媒体的开发者与运维人员的一套Flash播放插件实现方案,核心解决旧系统或特定场景下通过Flash技术播放RTMP直播、点播流的问题。压缩包共5个文件,约1.15MB,包含2个swf播放器与安装检测组件…

2026/10/14 2:21:23 阅读更多 →
AI编程助手代码质量救星:TypeScript静态类型约束实战

AI编程助手代码质量救星:TypeScript静态类型约束实战

AI 编程助手越帮越乱,这个话题我最近真的是感同身受。我们团队接入 AI 编程助手之后,合并请求里的代码量倒是上去了,可编译期错误非但没减少,反而冒出来一批"语法完全合法、类型对不上、一跑就崩"的代码。后来大家坐下来…

2026/10/14 2:21:23 阅读更多 →
LaTeX 2025环境配置:texlive + TeXstudio

LaTeX 2025环境配置:texlive + TeXstudio

文章目录Latex2025环境配置一、LaTeX 简介1.1 什么是 LaTeX?1.2 为什么使用 LaTeX?1.3 如何开始使用 LaTeX?二、texlive下载安装2.1 texlive下载2.2 texlive安装2.3 常见问题2.3.1 用管理员权限打开install-tl-windows.bat 报错2.3.2 Latex安…

2026/10/14 2:20:23 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →