集成电路EDA设计精英挑战赛 集成电路EDA设计精英挑战赛 登录 注册
  • 首页
  • >
  • 赛题指南


集成电路EDA设计精英挑战赛赛题指南

集成电路EDA设计精英挑战赛组委会   2019.10.11更新


Synopsys篇


1.赛题名称

Exploring AI SoC System Design with Virtual Prototyping–Pushing the Speed Barrier


2.赛题描述
Modern SoCs are getting more and more complicated as they integrate more and more functionality, not only in hardware (HW) side but also in software (SW). Developing SW after the HW ready is no longer efficient and competitive in the industry. There is a strong need to design HW and SW in parallel using Virtual Prototyping technology especially in the hot & fast paced vertical market of AI and ML


Synopsys’ solution for Virtual Prototyping are Virtualizer Development Kits (VDKs). It is a transaction-level simulation technology based on the IEEE SystemC language, which can run the actual binary software images. The VDK targeted in this competition consists of several Arm Cortex A55s, GIC500, DDR & SRAM memory, UART, and a model of the NVDLA AI accelerator, the open source AI accelerator from Nvidia (www.nvdla.org).  This VDK boots Linaro Linux less than one minute and provides simple CNN network examples including LeNet. 


Below are target tasks that you can choose to work on (Task 1 and Task 2 are mandatory, task 3 and 4 you can choose one of them, or even both):

1.Be able to successfully run the example LeNet with one given picture for classification on the provided VDK, explain VDK usage and values for what types of development work. Create your own image with handwrite numbers as input to the LeNet and run the VDK to get correct classification result.


2.Select one image classification NN (Neural Network, e.g. AlexNet, ResNet18) algorithm, train it on the host (or get ready trained network from open source community) and port it to the VDK utilizing the NVDLA AI accelerator. Be able to input one picture as source and run selected NN on VDK to classify the object successfully.


3.Optimize the simulation speed of the NVDLA accelerator model: the open source NVDLA model is written in SystemC and currently its simulation speed is medium level, partially as its abstraction level targets high-level synthesis. Criteria is here is to push the speed limit of the NVDLA model, highest simulation time wins. Here are some suggested techniques you can try:

a.Idea 1: use specialized x86 (SIMD) instructions to speed up critical algorithm computational functions (convolution, pooling, …) inside the NVDLA model.

b.Idea 2: utilize a host GPU to accelerate computation of the NVDLA model.


Other (creative) ideas are accepted too, as long as the ML software executes “as is” on the VDK target.


Compiler optimization: the hardware design (i.e. RTL) of NVDLA is open sourced by Nvidia; however, the NVDLA ML compiler is only available in binary format, preventing the detailed tuning & optimization of the ML compiler.  Port an open source ML compiler of choice and target it to support the NVDLA accelerator (reference: https://github.com/ONNC/onnc). And instrument the NVDLA model with statistics collection (e.g. NVDLA sub-core occupation %, data & weights transfer latency, …), allowing to give feedback on the compiler tuning.


3.评分标准

a)技术评分:60%
任务1:正确理解任务,分解需要步骤达到所需结果 30%
任务2:对NN inference任务正确认知并设计达到要求结果 20%
任务3:正确理解仿真平台速度瓶颈,提出并实现加速解决方案,对同一NN运算有显著仿真加速 10%
任务4:附加题,实现题目需求 10%


b)现场表现:40%
方案及平台介绍:介绍工具应用场景,方向及价值, 准确回答评委提问 20%
平台演示及问答:

(1)完成任务1和2演示,演示步骤准确流畅,介绍简洁清晰,正确理解问题,准确回答问题 10%
 (2)完成任务3或者(和)4演示 并问题解答 10%


 说明:相关FAQ解答指南请进Synopsys技术解答QQ群:719055561

1.jpg


Cadence篇


1.赛题名称
数字综合与层次化实现



2.赛题描述

使用Genus给定数字集成电路RTL进行综合并用Innovus层次化流程对其进行后端实现。 

涉及知识点:

· 基于Genus,Innovus的数字集成电路综合与物理实现流程

· Tcl脚本

目标:

依照给定的数据和库文件,以及评分标准中的约束条件,自行搭建Genus和Innovus运行环境,完成RTL->GDS的全流程。在满足签核(Signoff)标准的前提下,尽可能改善评分标准中的面积、时钟频率、总绕线长度、功耗等指标。

具体步骤:

1. 搭建工作目录,尽可能使其结构化、自动化、容易调试。

2. 编写综合脚本,在Genus中完成RTL到门级网表的综合流程。

3. Genus产生的网表和SDC约束,连同库文件、MMMC配置等导入Innovus进行初始化,并按照评分标准设计floorplan。

4. 观察分析设计中的数据通路、时序关系等因素,合理划分Partition。注意需要满足评分标准中的Partition数量和大小约束。

5. 参照Innovus的层次化设计流程,完成每个Partition(包括顶层Partition)的Place到Postroute实现。在顶层进行Assemble,依照评分标准中的签核条件,报出最终的面积、时序、线长、功耗等指标。

6. 在满足签核条件的情况下,尽可能改善上述指标。

技术评分点:

· 任务流程完成度(前端综合,后端层次化设计实现)。

· Partition划分的理由以及最终实现完成度

· 签核条件是否满足(时序、DRC等)。

· 满足签核条件的前提下,额外的指标提升:
面积、时钟频率、总绕线长度、功耗。

· 附加题的完成度(Tcl脚本相关,稍后发布)。

现场答辩,回答问题(对技术流程的理解)。


3.评分标准

a) 技术评分(70%

l 设计流程的完成度 —— 任务流程设计完整,作品完成度高40%

根据以下要求完成前端综合,后端层次化设计物理实现及时序、物理签核:

1. Genus

o RTL to Gate-netlist

o No DFT requirement.

2. Innovus

使用Top-down 层次化设计流程:

o Full chip floorplanning

o Divide the design into partitions

§ Timing budgeting

§ Pin assignment

o Save partition into sub directories

o Foreach partition (including top)

§ PlaceOpt

§ CTS

§ Route

§ Postroute Opt

o Assemble all the partitions back to full chip

o Report final setup/hold timing, area, DRC, total signal wire length, and power

3. 将上述所有步骤整理成一套脚本(Shell脚本、Makefile皆可),做到一键执行。

l 设计要求的完成度 —— 满足各项设计要求(20%

 微信图片_20191012125559.png

微信图片_20191012125659.png

微信图片_20191012125704.png

l 创新性 10%)

1. 设计过程思路新颖,利用到工具的进阶功能(5%)

2. 附加题 5%)

 l 高性能附加分 (5%~15%)

在符合签核条件的情况下,根据最终实现的面积、频率、总线长及功耗的顺序进行排名,前五名分别有15%10%8%6%5%的加分
(性能指标优先级为:面积>频率>线长>功耗)

b) 现场表现(30%

1. 答辩陈述内容紧扣主题,表达简要准确、思路清晰20%)

2. 回答问题正确理解问题,准确、迅速回答问题10%)

 说明:相关FAQ解答指南请进Cadence技术解答QQ群:474560202

微信图片_20191012130123.jpg

 


华大九天篇

Compressing方向


1.赛题名称

针对电路仿真输出结果的高效压缩


2.赛题描述   

在电路仿真过程中,会存储电路的一些信号随时间变化的状态,以便进行后续的查看和分析。随着电路规模的增大和对精度要求的提高,需要查看的信号个数和时间点也急剧增加,导致所存储的波形文件达到几GB甚至几百GB,给存储空间带来了压力。考虑到电路信号的一些特点,可以对其进行压缩,减小波形文件大小。


在电路仿真过程中,会存储电路的一些信号随时间变化的状态,以便进行后续的查看和分析。随着电路规模的增大和对精度要求的提高,需要查看的信号个数和时间点也急剧增加。例如一个包含100万MOS管的电路,在提取寄生RC参数之后,可能会包含1000万量级的RC,节点数也会达到100万量级。如果设置仿真时间为10us,由于高精度的需要,平均步长为0.1ns,会产生1e5个时间点。如果所有信号和所有时间点都需要保存,那么产生的波形文件大小就是1e6*1e5*8*1e-9=800GB。即使只保存1%的信号,那也需要8GB的存储空间,这给存储空间带来了压力。考虑所存储的电路信号的特点和精度要求,可以将这些信号进行压缩,然后存储下来。希望能够开发一种针对电路仿真结果波形的高效压缩算法,使得存储文件的大小能够明显减小。


3.竞赛规则

1.将给定的电路仿真输出后的波形数据(简称为原始波形文件)进行压缩后存储到磁盘上,然后读取压缩后的文件,对给定的信号进行解压缩。解压完成后,对解压缩后的数据与原始波形文件中的对应数据按规则8中的方法进行验证,看是否满足设定的基本精度要求。在满足基本精度要求的前提下,再综合考虑压缩比、压缩时间和解压缩时间等方面的性能,最后得到这个文件的分数(具体评分标准见第4部分)。竞赛的基本流程如图1和图2所示。

赛题图1.png

图1

图片6.png

图2


2.用于竞赛的原始波形文件有多个,文件大小在5G到50G之间。每个波形文件经过测评后,都会得到一个分数。将所有波形文件的分数加起来,得到的总分数,将作为比赛的最终评分。


3.原始波形文件是一个二进制文件,为了便于参赛者读取得到原始数据,华大九天将会提供一个读取原始波形文件的动态库(以.so的形式),同时提供依次读取每个时刻所有信号的值的接口。参赛者必须按照这种方式读取原始波形文件,禁止自行破解原始波形文件然后读取,违者取消资格。


4.由于原始波形文件是在仿真过程中产生,仿真一个时间点,产生各个信号的值。因此,压缩过程需要考虑实际应用场景,禁止先将所有波形数据全部读取出来,然后利用波形本身固有的特征进行算法的设计。如果发现这种行为,视为无效,直接取消资格。另外,本赛题还规定程序的整个运行过程中总的内存不能超过2G(包括压缩和解压缩以及自身运行需要的内存等),因此,理论上,通过先读取原始波形文件中的所有数据再进行压缩的算法设计是不可能实现的。


5.压缩比定义为原始波形文件大小与压缩后文件大小的比值,压缩比越大,分数越高;压缩时间为读取原始波形文件,到输出压缩文件完成的时间,时间越短,分数越高;解压缩时间为对随机给定数目的信号,从压缩文件中读取并解压缩后,将对应的信号值写入二进制波形文件的时间,时间越短,分数越高。


6.规则5中所述的”给定数目”,是指原始波形文件中信号总数的某个比例,范围可能为(0%,100%],其中小范围在实际应用中更为常用,因此也是主要的测试点。针对每个波形的解压缩,有5个测评点,给定数目分别为1%,2%,5%,10%,100%,各自占本项评分的20%。


7.规则5中所述的“随机”,是指给定信号在原始波形文件中的顺序可能是不连续的。例如,原始波形文件中总共有100个信号,指定的信号有5个,这5个信号在原始波形文件中的序号可能是1,2,3,4,5,也可能是2,6,8,59,96(完全随机)。


8.数据的压缩,需要保证一定的精度。通过将压缩文件解压之后的信号值与原始波形文件中的信号值进行比较,得到相应的误差值(容差)。这个误差包括两个方面:绝对误差和相对误差。绝对误差跟具体信号的值有关,因此,为了方便算法设计以及测评,比赛中只提供了存储电压信号的原始波形文件。对于电压信号,要求绝对误差不能大于1e-5,相对误差不能大于1e-3,这是基本精度要求。所有信号在所有时刻点的值必须满足上述基本精度要求,任何一个点不满足则为不可接受精度,算法无效。另外,为了鼓励参赛者设计出高压缩比而且接近无损的压缩算法,我们还设定了高精度误差范围,绝对误差为不超过1e-9,相对误差不作要求。在评分标准中,达到基本精度要求后,绝对误差每降低一个量级,都会有相应的加分。


9.虽然比赛中只提供存储电压信号的原始波形文件,但是,参数者应该设计出适应所有类型信号的压缩算法。由于不同类型信号的数值量级差异较大,因此对绝对精度的要求会各不相同。压缩算法本身不应该只针对某个数值量级范围内的数据,而应该具有通用性。


10.精度要求的测评程序,将由华大九天提供。先将指定信号解压后的数据输出到一个二进制文件中,这个二进制文件的格式与原始波形文件完全相同,接口由华大九天提供(以.so的形式)。解压缩时,参赛者必须将解压后的数据输出到一个二进制文件中,因为每个参赛者设计的算法不同,华大九天提供的测评程序无法直接获得解压后的波形数据。测评程序将这个二进制文件与原始波形文件作为输入,运行后,将得到一个测评报告,里面有具体的各个信号的误差值和整个文件的精度评分。


11.如果程序运行过程中出现了一些错误,例如数组越界,莫名其妙地crash,或者死循环等等,导致没法获得压缩文件或者解压后的数据,也就无法使用精度测评程序进行评分,则该波形文件对应的分数为0。


12.除了需要完成程序设计和测试,还需要完成一份设计报告,包含算法设计和测试效果。


4.评分标准

a)  技术评分,共80分

(1)精度,共10分。
解压后的数据与原始波形数据之间的误差必须符合规则8中所给出的精度要求,如果不符合,算违规,该波形文件对应的分数为0。满足了基本精度要求,则可得到4分。在满足基本精度要求的前提下,因为从基本精度到高精度共4个量级(只考察绝对误差),前两个量级每降低一个,加1分,后两个量级每降低一个,加2分。


(2)压缩比,共30分。
压缩比小于等于1,算法无效,该波形文件对应的分数为0;压缩比大于1但小于等于1.5,给5分;大于1.5但小于等于3,每增加0.5,加1分;大于3但小于等于5,每增加0.5,加2分;大于5,每增加0.5,加3分,直到获得本项满分为止。


(3)压缩时间,共10分。
每个波形都有一个对应的压缩参考时间,是将所有信号的值直接从原始波形文件中读出来的时间。参赛者所用的压缩时间,理论上不会少于这个时间,因为读完数据之后还需要进行压缩。压缩时间比参考时间每多10%,扣1分。        


(4)解压时间,共20分。
针对每次所指定的信号,都有一个对应的解压缩参考时间,它是将这些指定信号的值直接写入二进制波形文件的时间。参赛者所用的解压缩时间,理论上不会少于这个时间,因为在将这些信号值写入二进制文件之前必须进行解压缩操作。解压缩时间不超过参考时间的50%范围内,每增加10%,减1分;超过参考时间的50%后,每增加10%,减2分,扣完为止。


(5)内存,共10分
不超过1G,满分。超过1G,扣2分,之后每增加64M,扣1分,扣完为止。若超过2G,算违规,该波形文件对应的分数为0。



b) 现场表现,共20分 

(1)设计陈述,共15分
 评分点:算法思路的合理性;算法表述的清晰性;算法分析的全面性;算法本身的复杂度。


(2)回答问题,共5分
评分点:正确理解问题;快速准确地回答问题


整个评分标准如表1所示。如果表中内容与上述某条评分标准的描述相互矛盾,以表为准。


评分项

该项总分

评分细则

得分

附加条款

技术评分

精度

10

绝对误差>1e-5或相对误差>1e-3

0

对应的波形文件总得分为0

绝对误差<=1e-5且相对误差<=1e-3

6

绝对误差<=1e-6

7

绝对误差<=1e-7

8

绝对误差<=1e-8

9

绝对误差<=1e-9

10

压缩比

30

(0,1.0]

0

对应的波形文件总得分为0

(1.0,1.5]

10

(1.5,3.0]

15

(3.0,3.5]

18

(3.5,4.0]

21

(4.0,4.5]

24

(4.5,5.0]

27

(5.0,+∞)

30

压缩时间

10

比参考时间多(0, 20%)

10

比参考时间多[20%,40%)

8

比参考时间多[40%,60%)

6

比参考时间多[60%,80%)

4

比参考时间多[80%,100%)

2

比参考时间多[100%,+∞)

0

解压时间

20

比参考时间多(0, 40%)

20

比参考时间多[40%,60%)

15

比参考时间多[60%,80%)

10

比参考时间多[80%,100%)

5

比参考时间多[100%,+∞)

0

内存使用

10

(0, 1G)

10

[1G,1.5G)

5

[1.5G,2.0G)

0

(2G,+∞)

0

对应的波形文件总得分为0

现场表现

设计陈述

15

考察算法设计的合理性、清晰性、全面性、复杂度等

由评委会进行综合评分

回答问题

5

考察参赛者的对问题理解的正确性和回答问题的准确性

由评委会进行综合评分

1



5.附件

以下程序以及相关接口定义将作为附件,后续将由华大九天提交给挑战赛组委会。

a)读取原始波形文件的代码(以.so方式提供)和相关的接口定义(文档形式提供)

b)解压后波形数据写入二进制文件的代码(以.so方式提供)和相关的接口定义(文档形式提供)

c)精度测评程序(以可执行程序的方式提供)和相关的误差计算方法(文档形式提供)


6.赛题讨论QQ群:792345737


Routing方向


1.赛题名称

反求图形中心线


2.赛题描述

背景:由于IC版图设计中,path线是使用非常广泛的图形,它由一系列点组成的点序列作为中心线,带有一定的线宽,从而形成连线图形。如下图所示:

微信图片_20191012111004.png

在制作mask时,通常需要进行opc校正,各种path线图形,由于opc校正会通常变成不规则的多边形。此时的多边形,如果还想还原path线,就需要计算出原有path的中心点列。因此会产生此类问题。

微信图片_20191012111146.png

基于上述背景,同时进行一定的扩展,形成如下的问题:


问题描述:给定一个任意不含洞的多边形,指定这个多边形的不相邻的两条边。剩余的所有的边会自动分成两组。现求一条中心线,希望这条线上的任意一条边到这两组边的距离都尽可能相等。


说明:(1)边,是指中心线上相邻两个点构成的线段。

(2)一条边到一组边的距离定义为该边和组内所有边的距离的最小值。


示例:下图有个简单图形的示例,供参考。

微信图片_20191012111150.png

测例类型

case以文本文件的形式提供,命名为boundary_id.txt,语法格式,请查看附录。我们会准备三种类型的case,

类型一,长条形,提供多边形顶点和起始,终止边。

类型二,长条形,提供多边形的顶点。起始,终止边不提供,交给学生判断,但合理的起始,终止边是唯一的。

类型三,和类型一二中的长条形不同的是,类型三中的多边形会有分叉,比如说人字形,甚至鱼骨形。

三种case数量比例约为2:2:1。


评分标准:评分标准主要包括程序评分,源代码评分,设计报告评分,现场表现三部分,其中程序评分100分,源代码和设计报告评分总分25分,现场表现25分,总分150分) 。

一、技术评分

(1)中心线精度

      考察学生提取中心线和原始中心线的吻合程度,满分为100分。

考察原则:分别对两条中心线,产生两个多边形轮廓P1,P2:

Score = areaP1 P2/  area(P1P2)

微信图片_20191012111154.png

如图:score = A2 / (A1 + A2 + A3)

(2)中心线点数

如果中心线的点太多,版图数据量会上升,不符合工程上的需求。因此每个case会设定一个参考点数,在这个范围内,不扣分,每超过10%,扣2分,扣分上限20分。

(3)运行时间

      每个case 的基准时间为20s,这个时间内出结果,不扣技术分。超过20s的部分,每超过 10%(2s),扣1分,扣分上限15分。

       60s内不出结果,这个时候认为程序死循环了,技术得分判0分。

      基准时间会根据服务器环境,有所调整。

(4)运行内存

      每个case运行内存小于100M,不扣技术分,超过100M的部分,每超过20%(20M),扣1分,扣分上限5分。

      内存超过200M,技术得分判0分。

      基准内存会根据服务器环境,有所调整。

(5)如果有两只队伍程序,技术评分一致,我们会根据运行时间和运行内存来判断高下。

二、源代码

源代码和设计报告我们将组织技术专家进行匿名评审,对如下方面进行考察:

(1)代码风格是否优美,组织架构是否清晰,可读性是否良好

(2)有无良好的模块化设计

(3)有无长函数

(4)命名风格是否良好

三、设计报告

行文要求条理清楚,详略得当,清楚易读,内容应该包括以下几个方面:

(1)算法原理,测试结果

(2)时间/空间复杂度分析

(3)代码设计上其他亮点(如果有),比如架构设计,模块复用

四、现场表现

(1) 陈述程序设计思路是否清晰合理,表述是否清晰,算法复杂度分析是否全面。(15分)(2) 理解问题是否准确、回答问题是否正确、回答问是否迅速。(10分)

 

说明:测例下载及相关FAQ解答指南请进华大技术解答QQ群:647577133

微信图片_20191012111617.jpg


关于轮廓反求中心线试题说明扫码了解

轮廓反求中心线试题说明.png