EE学生一枚
我们团队去年刚搞过一轮自动化升级,正好踩过一些坑。核心思路是:用Python把回归、收集、分析、报告全串起来,解放人力。
库和框架方面,pytest是绝对主力,比unittest灵活太多。用它组织测试用例,配合钩子函数,可以很方便地在不同阶段插入操作,比如每个case跑完自动收集log和覆盖率。
数据分析首推pandas。把回归结果(pass/fail、仿真时间、种子等)和覆盖率数据(从urgReport或者simv.vdb里解析出来)都读成DataFrame,合并分析。几行代码就能算出模块覆盖率收敛趋势、失败用例关联分析,比肉眼翻报告快多了。
和EDA工具交互,VCS和Verdi都有Python API(比如vcs的vpi模块,虽然有点老但能用)。我们写了一些脚本自动提取仿真中的信号波形,或者批量生成覆盖率排除文件。Synopsys的Verdi Python API挺强大,能自动分析波形找异常。
框架设计上,建议搞一个中心化的调度脚本。我们用的是自己写的类,底层调用pytest,上层集成邮件和钉钉机器人,每天自动发回归报告,包括覆盖率进度条和失败case列表。
开源项目可以看看ChipDev的某些工具,或者GitHub上搜“UVMBasedRegression”,有些框架虽然用SystemVerilog,但Python胶水层部分可以参考。
关键点:别想一口吃成胖子,先从自动收集结果和发报告开始,再逐步加数据分析。团队一开始可能会抵触,拿出一个节省半天工作量的实际例子,大家就愿意跟进了。
