You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SKILL脚本将.lvs.report格式LVS报告导出为.csv文件?

解决LVS报告转CSV的SKILL脚本方案

首先明确:inPort函数是用于读取Cadence设计数据库中的端口对象,完全不适合读取普通文本格式的LVS报告文件,这是你之前尝试失败的核心原因。下面是用SKILL原生文件操作函数实现的完整解决方案:

完整脚本示例

; 配置文件路径,根据实际情况修改
lvsReportPath = "/path/to/your/design.lvs.report"
csvOutputPath = "/path/to/your/output.lvs.errors.csv"

; 打开LVS报告文件,只读模式
lvsFile = open(lvsReportPath "r")
unless(lvsFile
    printf("ERROR: 无法打开LVS报告文件 %s\n" lvsReportPath)
    exit()
)

; 创建并打开CSV输出文件,写入模式
csvFile = open(csvOutputPath "w")
unless(csvFile
    printf("ERROR: 无法创建CSV输出文件 %s\n" csvOutputPath)
    close(lvsFile)
    exit()
)

; 写入CSV表头(根据需要提取的字段修改)
fprintf(csvFile "错误类型,布局位置,原理图位置,错误描述\n")

; 标记是否进入错误数据段(以Calibre LVS报告为例,可根据实际报告格式调整)
inErrorSection = nil
line = fgets(lvsFile)
while(line
    ; 定位到错误区域,比如Calibre报告的"Electrical Errors"部分
    if(regexp(line "Electrical Errors")
        inErrorSection = t
        ; 跳过后续的分隔标题行,直到看到数据行
        line = fgets(lvsFile)
        while(line && regexp(line "^-+")
            line = fgets(lvsFile)
        )
    )
    
    ; 如果在错误区域,解析每行数据
    if(inErrorSection && !regexp(line "^-+") && !regexp(line "^$")
        ; 示例解析:假设每行格式为 "类型 布局坐标 原理图坐标 描述",需根据实际报告调整正则
        if(match = regexp(line "^([A-Za-z]+)\\s+([0-9./-]+)\\s+([0-9./-]+)\\s+(.*)$")
            errorType = match[1]
            layoutLoc = match[2]
            schematicLoc = match[3]
            errorDesc = match[4]
            ; 写入CSV,转义描述中的逗号避免破坏列结构
            errorDesc = substitute(errorDesc "," "\\,")
            fprintf(csvFile "%s,%s,%s,%s\n" errorType layoutLoc schematicLoc errorDesc)
        )
    )
    
    ; 读取下一行
    line = fgets(lvsFile)
)

; 关闭文件
close(lvsFile)
close(csvFile)
printf("LVS报告数据已成功导出至 %s\n" csvOutputPath)

关键说明

  • 文件操作逻辑:使用open打开普通文本文件、fgets逐行读取、fprintf写入内容,是SKILL处理普通文本文件的标准方法。
  • 报告格式适配:不同工具(Calibre、Hercules等)生成的LVS报告格式差异较大,你需要根据自己的报告内容调整正则表达式和数据段定位关键字(比如Hercules报告的错误段可能是"Layout vs Schematic Mismatches")。
  • 异常处理:脚本加入了文件打开失败的判断,避免无意义崩溃。
  • CSV规范兼容:如果导出字段包含逗号,用substitute转义,防止破坏CSV列结构。

调试技巧

  • 先单独读取几行报告内容,用printf(line)打印确认格式,再调整正则表达式。
  • 先提取少量数据测试逻辑,确认正确后再处理完整文件。

内容的提问来源于stack exchange,提问作者shweta tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:43:24