一、杯赛题目:数字波形的快速高效压缩算法
二、参赛组别:A组、B组
三、赛题背景:
在电路仿真过程中,会存储电路的一些信号随时间变化的状态,以便进行后续的查看和分析。随着电路规模的增大和对精度要求的提高,需要查看的信号个数和时间点也急剧增加,导致所存储的波形文件达到几GB甚至几百GB,给存储空间带来了压力。考虑到电路信号的一些特点,可以对其进行压缩,以减小波形文件的大小。
四、赛题任务:
设计一套高效快速数字波形压缩、解压缩算法。
五、设计指标:
1. 精度要求:数字波形X轴数据为整数,Y轴为0, 1,Z,X因此压缩波形文件解压后与原文件不能存在精度误差。
2. 压缩率:压缩率要求所有华大九天提供的案例与华大九天提供的REF压缩率相当。计算公式:
3. 运行内存:程序在整个运行过程中总的内存不能超过2G(包括压缩和解压缩以及自身运行需要的内存等)。
4. 压缩时间为读取原始波形文件,到输出压缩文件完成的时间,时间越短,分数越高。
5. 解压缩时间为对随机、给定数目的信号,从压缩文件中读取并解压缩后,将对应的信号值写入波形文件的时间,时间越短,分数越高。
6. 支持增量式压缩/解压波形文件:支持指定信号从指定的起始时间,到结束时间读取压缩波形数据;支持并行读取原波形文件输出压缩文件。
六、附加题或进阶指标:
1. 压缩率高于华大九天提供的参考压缩率,华大九天将在开赛时提供参考VCD波形文件已经对应参考压缩率。
2. 解压缩时间少于华大九天提供的参考时间。
3. 支持异步波形的解压缩: 与同步信号相比,异步信号使用非统一的X坐标轴,即每个信号使用单独的X坐标轴。每个信号的点数不一样,甚至start和stop都可能不一样。
七、杯赛阶段及提交内容:
1. 初赛和企业技术评分:
1) 技术文档;除了需要完成程序设计和测试,还需要完成一份设计报告,包含算法设计和测试效果
2) 算法测试数据;
2. 分赛区决赛提交内容
1) 汇报PPT:算法介绍、关键技术介绍、性能指标
2) 详细设计方案:解压缩算法、关键技术原理分析及性能指标要求
3) 算法验证文件:解压后的波形文件。
3. 总决赛提交内容
1) 汇报PPT:算法介绍、关键技术介绍、性能指标
2) 详细设计方案:解压缩算法、关键技术原理分析及性能指标要求
3) 算法验证文件:解压后的波形文件。
八、评分标准:
大项 | 内容 | 分值 | 评分要求 |
性能指标(60分) | 1.精度 | 10分 | 1. 满足解压后波形文件正确性前提 解压后数据与原波形文件原则上不能存在误差。 |
2.压缩率 | 20分 | 每个波形文件压缩率(R)跟参考压缩率相比(Rref),若Rref/R • 大于3,算法无效,对应的波形文件总得分为0 ; • 大于2.5但小于等于3,给5分; • 大于2但小于等于2.5,给10分; • 大于1.5但小于等于2,给15; • 大于1 小于1.5,每小0.1,加1分。 • 小于等于1, 满分。 | |
3.压缩时间
| 15分 | • 每个波形都有一个对应的压缩参考时间,是将所有信号的值直接从原始波形文件中读出来的时间。参赛者所用的压缩时间,理论上不会少于这个时间,因为读完数据之后还需要进行压缩。 • 压缩时间比参考时间多20%以内,满分;之后每增加20%,扣2分。 | |
4.解压时间 | 15分 | • 针对每次所指定的信号,都有一个对应的解压缩参考时间,它是将这些指定信号的值直接写入波形文件的时间。参赛者所用的解压缩时间,理论上不会少于这个时间,因为在将这些信号值写入文件之前必须进行解压缩操作。 • 解压缩时间比参考时间多40%以内,满分;之后每增加20%,扣3分,扣完为止。 | |
优化指标(20分) | 1.优化目标 | 20分 | 1. 创新性:解压缩算法是否有创新; 2. 内存:满足技术指标下,内存越小越好; 3. 压缩比:满足技术指标下,压缩优于华大九天提供的REF |
文档与现场表现 (20分) | 1.现场答辩和演示 | 10分 | 1.答辩和问答表现 2.现场演示效果 |
2.文档质量 | 10分 | 1. 汇报PPT重点突出、条理清晰。 | |
2. 设计方案原理分析合理、逻辑清晰。 | |||
3. 波形验证报告内容详细充分。5分 |
九、参赛资源说明
1. 华大九天提供用于竞赛的原始波形文件(VCD格式),文件大小在几十M到50G之间。每个波形文件经过测评后,都会得到一个分数。将所有波形文件的分数加起来,得到的总分数,将作为比赛的最终评分;
2. 压缩前,为了方便参赛者读取原始波形文件,得到用于压缩的原始波形数据,华大九天将提供读取原始波形文件的接口(以.so的形式);解压后的数据需要输出到一个文件中,输出数据的接口由华大九天提供(以.so的形式)。
十、其他注意事项:
1. 波形文件的接口都是用C/C++写的。另外,由于需要对运行时间和内存进行评分,因此,必须排除语言本身带来的性能差别。gcc的版本限定为gcc 4.8.2 ,最高支持版本为C++11(暂时不支持C++14及更高的版本)。
2. 我们会提供服务器以及运行环境,包括编译器,操作系统等都会配置好。总体而言,我们的环境为linux,操作系统为Redhat CentOSXXX x86_64。
3. 对具体算法没有限定,但是不能将整个波形文件的数据全部读出来再进行压缩,这个也是设定内存使用限制的最大原因。
4. 杯赛企业与参赛团队共同拥有作品的所有权。
5. 参赛项目可以参考现有公开发表的文献和论文内容,但应当在技术论文和答辩PPT中注明来源,且不能将参考的内容作为自己作品的创新部分。