刊文精选

《VLSI设计综合实践》课程教学实践与改革

来源:教育教学论坛     2019-3-18 20:47:48      点击:

马胜 李振涛 陆洪毅 王志英 刘必慰

摘要:VLSI设计人才的培养对理论性和实践性要求都很高,国防科技大学自2012年起就开设了《VLSI设计综合实践》课程以提升所培养人才的VLSI设计工程实践能力。课程通过将理论讲授与实验环节交叉设置加深学生对理论知识的理解,提高学生的实践能力。针对业界最新发展趋势,教学团队持续对课程教学方法、教学内容、实验设置和实验环境进行改革,取得了良好的教学效果。本文对课程教学实践和改革情况进行总结。

关键词:VLSI设计;实践教学;BOPPPS;卷积运算加速器

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2018)39-0136-06

一、引言

集成电路产业是支撑经济社会发展和保障国家安全的战略性、基础性和先导性产业,也是工业经济的命脉产业。当前,我国已成为全球第三大集成电路产品制造国,正在从一个集成电路“消费大国”变成“生产大国”,形成了以集成电路技术为基础的集成电路设计、芯片制造、芯片封装协调发展的局面。目前我国集成电路专业人才培养取得一定成绩的同时,也面临着巨大的问题。我国虽然已成为集成电路产品的生产大国,但还不是强国,大而不强的特征反映在核心技术没有掌握在自己手中,造成这种局面的主要原因是传统的人才培养模式不能适应产业发展的需要。集成电路人才培养的一个显著特色是对理论性和实践性要求都非常高[1]。传统人才培养模式重理论轻实践,重讲授轻动手,造成所培养的人才理论研究能力较强,工程实践能力较弱,理论和实践相脱节,无法满足集成电路产业急速发展对工程实践人才的迫切需求。针对这种情况,教育部等七部门于2016年5月发布了“关于加强集成电路人才培养的意见”,重点强调了要提高集成电路人才培养过程中的实践实训水平。在产业界的推动和上级主管部门的重视下,我国很多高校都相继开展了集成电路实践课程的建设,其中国防科技大学计算机学院于2012年开始就面向微电子学与固体电子学专业的工程硕士研究生开设了《VLSI设计综合实践》课程,以提高研究生的集成电路设计工程实践能力。

课程教学目标是使学生理解VLSI设计流程中的各个环节的基本原理,熟悉和掌握VLSI设计流程中多种EDA工具的使用。课程内容涵盖了从前端RTL设计和验证,到后端布局布线和物理验证的VLSI设计完整流程。课程教学将理论讲授和实验环节交叉设置,通过实验环节提升学生对理论知识的理解和实践能力。在课程五年的发展历程中,教学团队不断提升课程教学水平,持续对课程的教学方法、教学内容、实验設置和实验环境等进行改革。首先,将国际前沿的BOPPPS教学模式[2-4]引入到课程教学中,将教学方式从“以教师为中心”转换到“以学生为中心”。其次,追踪VLSI设计领域最新发展趋势,将UVM验证方法学[5]引入到课程教学中;针对功耗已成为VLSI设计的首要限制因素[6],在教学中强调从RTL级到门级的低功耗设计技术。最后,针对近年各种神经网络加速器层出不穷的情况[7],课程将实现卷积运算加速器作为大作业。本文对课程五年来的教学实践和改革情况进行了总结。

二、国内外相关课程设置和教学情况

为提升所培养人才的VLSI设计实践能力,国内外知名大学均开设VLSI设计实践类课程。各所高校根据自身的专业设置和特色,在实践类课程方面各有侧重和不同,本节简要介绍美国斯坦福大学、加州伯克利大学、加拿大多伦多大学、英国南安普顿大学和复旦大学等国内外知名大学所开设的VLSI设计实践类课程的教学内容和方法。

1.美国斯坦福大学的《Design Projects in VLSI Systems》课程.该课程是斯坦福大学电子工程系(Department of Electrical Engineering)面向研究生开设的课程,教学目标是使学生掌握芯片流片前的完整设计流程,要求学生使用现代VLSI设计方法和EDA工具完成芯片从RTL设计到布局布线的完整流程,实验基于90nm工艺展开。教学内容包括:使用Verilog HDL语言对芯片进行RTL级描述,对设计进行测试验证,基于标准单元库对设计进行综合,对设计进行布局布线。课程鼓励学生设计模拟信号与数字信号混合芯片。

2.美国加州伯克利大学的《VLSI Systems Design》课程。该课程是加州伯克利大学计算机科技系(Department of Computer Science)面向本科生和研究生开设的课程。教学目标是使学生熟悉VLSI设计的标准流程,同时能对设计的面积/性能/能耗等方面进行权衡,并对设计的微体系结构进行探索。与其他大学使用Verilog HDL对硬件结构进行描述不同,课程使用伯克利大学自己开发的开源硬件构建语言ChiSel对设计进行描述。课程讲授内容包括CAD工具简介、ChiSel语言简介、ASIC设计流程、电路和系统时序、功耗和面积分析、存储单元设计。每名学生需单独完成4次实验,依次是:ChiSel语言的入门、面向SHA3加密算法的加速器实现及基于VCS软件的功能验证、SHA3加速器的流水化及基于Design Compiler的综合、SHA3加速器存储单元的设计权衡及基于ICC的布局布线。最后,课程要求学生以2人为一组,完成一个大作业,内容可以是实现专用加速器或对RISC-V处理器的微体系结构进行探索。

3.加拿大多伦多大学的《VLSI Systems and Design》课程。该课程是多伦多大学电子与计算机工程系(Department of Electrical and Computer Engineering)面向研究生开设的课程。教学目标是使学生掌握VLSI设计的原理和实现流程。授课内容涵盖深纳微米工艺下的设计、时钟和功耗控制、CAD工具和算法、集成电路的模拟、验证、测试和设计方法学。课程包含6个实验,两名学生一组完成实验,实验1是一个加法器的设计和布局布线,实验2-5完成一个四位微处理器的设计和布局布线,其中实验2和实验3使用定制设计方式完成处理器数据通路的设计,实验4使用标准单元库完成处理器控制通路的设计,并使用Synopsys Design Analyzer对设计进行逻辑综合,实验5将数据通路和控制通路整合在一起,并使用Cadence First Encounter对整体设计进行布局布线。实验6对设计进行静态时序分析。

4.英国南安普顿大学的《VLSI Design Project》课程。该课程是南安普顿大学电子与计算机科技系(Department of Electronics and Computer Science)面向研究生开设的课程。教学目标是使学生熟悉基于標准单元库的VLSI设计的完整流程。课程包括4次授课和10次实验,授课内容分别是逻辑综合、布局布线、布局布线后仿真和片上系统设计。实验以3—4名学生为一组,基于0.35 um工艺完成一个简单计算器芯片的设计。所实现的计算器要能支持加减乘除四则运算,支持16位、24位和32位数据精度。实验内容涵盖概要设计规划、行为级描述、逻辑综合、布局布线、布局布线后仿真。课程将选择部分最好的设计进行流片验证。

5.复旦大学的《专用集成电路设计方法实验》课程。该课程是复旦大学的《专用集成电路设计方法》课程的配套实验课程,是向集成电路设计方向的本科生重点推荐的一门课程。课程教学内容主要包括ASIC设计流程的描述、综合、深压微米设计方法、布局布线、可测性设计等。教学过程中学生需要完成的实验包括利用EDA工具对CMOS反相器进行电路设计和仿真,并对反相器进行版图设计和版图验证。从上述分析可以看出,国内外高校在开设VLSI设计实践类课程时都强调对VLSI设计完整流程的熟悉和掌握,实验内容涵盖从前端概要设计到后端布局布线的过程。但各所高校也结合自己的专业特色设计教学和实验内容。比如,伯克利大学有悠久的计算机体系结构研究传统,更重视微体系结构的探索,同时他们也要求学生使用该大学自己开发的开源硬件构建语言ChiSel,也希望学生在完成大作业时能着眼于优化该大学自己推出的开源RISC-V处理器。又如,各所高校的实验案例各有不同,多伦多大学要求学生实现一个完整的4位微处理器,南安普顿大学要求学生实现一个简单计算器,斯坦福大学鼓励学生设计模拟和数字信号混合的芯片,复旦大学通过对CMOS反相器的设计和仿真加深学生对专用集成电路设计方法的理解和掌握。国防科技大学的《VLSI设计综合实践》课程的设计充分借鉴吸收了上述多所大学相关课程的设置,并进行了符合自己特色的创新。

三、课程内容

(一) 教学目标

国防科技大学《VLSI设计综合实践》课程是该校计算机学院微电子与微处理器研究所面向微处理器设计专业和计算机体系结构专业的研究生开设的实践课程。课程教学目标是通过对VLSI设计流程从前端RTL设计到后端布局布线的学习和实践,使学生理解VLSI设计流程中的各个环节的基本原理,熟悉和和掌握VLSI设计流程中多种EDA工具的使用,一方面为从事科学研究的学生进一步在微处理器设计和计算机体系结构领域展开科学研究提供VLSI设计方面的理论和实践指导,另一方面为从事工程实践的学生下一步在VLSI设计领域就业奠定一定的工程基础。

(二)教学体系

图1描述了《VLSI设计综合实践》课程的教学体系,课程包括36个学时,分为四讲内容,分别是RTL设计与验证、逻辑综合与静态时序分析、全定制和半定制结合设计、布局布线和物理验证。课程总体将理论讲授与实验环节交叉设置,每一讲都是先进行理论知识讲授,之后进行相应的实验加深对理论知识的理解,课程以一个加法器阵列的设计贯穿所有四次实验环节。四讲的具体内容如下。

1.RTL设计与验证。主要讲授基于Verilog HDL语言的RTL设计方法学和覆盖率驱动的验证策略。由于选修本课程的学生已普遍具备一定的Verilog HDL语言的知识,因此课程不讲授Verilog HDL语言的基础知识,而是直接面向工程实践需求,集中讲授层次化设计方法,强调可综合的代码编写风格,指出代码编写中易犯的错误,如生成不必要的latch等。覆盖率驱动的验证主要讲授基于覆盖率的验证方法学。本讲配套实验是使用Verilog HDL语言编写一个具备特定功能的加法器阵列,要求采用流水线方式尽量降低加法器数量,实验使用Cadence公司的NC-Verilog模拟器对加法器阵列进行模拟验证,覆盖率驱动基于NC-Verilog自带的Incisive Comprehensive Coverage (ICC)工具进行。

2.逻辑综合与静态时序分析。首先讲授逻辑综合的原理,着重强调各种综合约束条件和环境变量的设置,其次讲授静态时序分析原理,着重强调基于路径的静态时序分析方法以及单元延迟模型和线延迟模型。本讲配套实验是使用Synopsys公司的Design Compiler工具对第一次实验实现的加法器阵列进行综合优化,之后使用Synopsy公司的PrimeTime工具对综合后网表进行静态时序分析。综合是基于一款商用0.13 um工艺库进行的。

3.全定制和半定制结合设计。讲授内容包括寄生参数提取、功能验证、几何视图LEF文件提取、时序视图LIB文件提取。本讲配套实验是设计一个全定制加法器,并将其应用到加法器阵列中。实验过程使用Synopsys公司的StarRC和NanoSim对全定制加法器进行LIB提取,使用Cadence公司的Abstract对全定制加法器进行LEF提取,采用全定制和半定制相结合的方式对加法器阵列重新进行逻辑综合。

4.布局布线与物理验证。讲授内容包括布局布线流程介绍、初始化布局、IO布局、宏单元布局、电源规划、标准单元布局、全局布线、布线后优化、物理验证等。本讲配套实验是使用Cadence公司的SoC-Encounter工具对前面得到的加法器阵列的逻辑综合网表进行布局布线,使用Mentor公司的Calibra工具对物理设计进行验证。

(三)教学团队和实验环境

本课程教学内容涵盖了从前端逻辑设计到后端布局布线的VLSI设计完整流程,涉及知识面广泛,使用的EDA工具较多,因此对本课程教学团队的水平和能力提出了较高要求。本课程教学团队由三名教师组成,其中一名教师负责第一讲和第二讲的内容,另外两名教师分别负责第三讲和第四讲的内容。教师都来自于学校微电子与微电子研究所的工程实践团队,均具有博士学历和丰富VLSI设计理论知识,同时长期从事军用DSP和CPU芯片的设计,具备丰富的VLSI设计实践经验,对设计流程和各类EDA软件非常熟悉。课程在课内安排了实验时间,但考虑到实验需使用的EDA软件种类众多,功能较复杂,课内实验时间远远不够。为方便学生课外实验,教学团队设计了基于VMware Workstation的虚拟机平台,在虚拟机内部安装了RedHat Linux操作系统,在该操作系统上安装了课程所需的多种EDA软件,包括NC-Verilog、Design Compiler、StarRC、NanoSim、Abstract、SoC-Encounter和Calibra等。同时将综合所使用的0.13 um工艺库拷贝到虚拟机系统中。通过这种方式,学生只需将虚拟机镜像文件拷贝到自己的PC机上就可以使用,避免了安装各种EDA软件的复杂过程,有利于学生将精力集中在课程实验上。

四、教学改革情况

自课程开设以来,为提升教学效果,教学团队不断借鉴吸收先进教学方法,紧跟VLSI设计的最新发展趋势,在教学方法、教学内容、实验内容和实验环境等方面进行了大量改革,本节对这些改革的具体情況进行描述。

(一)教学方法改革

长期以来,传统教学方法采用“以教师为中心”的教学模式,一味强调教师如何有效地传授知识,而忽略了学生的认知过程,导致教学过程中存在诸如教学目标不明确、学生参与度不够、对知识理解困难等问题。为此,本课程教学团队将国际上先进的BOPPPS教学模式引入到教学中。根据学生注意力只能持续集中约15分钟的自然规律,BOPPPS模式将课堂教学切割为15分钟左右的多个教学小单元,规划为六个阶段,如表1所示。

教学团队在开展理论授课时按照BOPPPS模式实施。每次授课前,教学团队都增加了导入环节。比如,课程第一次课的时候给学生讲授了从沙子变成芯片的过程,激发了学生的好奇心,调动了学生学习这门课程的积极性。又如,在讲授逻辑综合这一讲内容时,通过“抖包袱”的方式开始课堂的内容,先给出一段Verilog HDL语言的代码,提问这段代码是怎么变成实实在在可见的芯片的,让学生带着问题学习。通过在每次理论授课时增加导入环节,抓住了学生的注意力,提高了学生学习的主观能动性,课堂教学效果得到显著提升。基于参与式学习模式,教师在课堂教学过程中引入了研讨环节,具体分为两类,一是随机研讨,即在授课过程中教师随机抛出一个问题,组织学生现场进行研讨,之后进行讲评和总结。比如,在教授RTL设计这一讲时,教师随机抛出如何设计异步对接FIFO这个问题。随机研讨能很好地改善教学过程中教师与学生的互动,增强学生学习的积极性。第二类研讨是专题研讨,由于国防科技大学的研究生授课采用三学时制,在连续进行两学时的听课之后,学生已有所疲劳,注意力也难以集中,因此教学团队一般将第三个学时安排为专题研讨课,研讨内容在上次课时布置好,研讨题目包括:CRC校验码产生器的设计与实现、随机数产生电路的设计、Power-gating电路的设计等。教师鼓励所有学生参与研讨,允许听报告的学生随时打断正在报告的学生参与研讨,提高所有学生的参与度。由于本课程是一门实践类课程,在之前的教学模式中,基本没有布置课后作业。但是BOPPPS教学模式强调对学习内容进行后测试,检验教学成果,因此教学团队特意在每次理论授课环节设计了一些课后习题,考查学生对理论授课的掌握水平。这些习题包括Verilog HDL语言的常见错误的纠错、综合约束条件的设置、布局布线的端口摆放规则等。通过对学生答题情况进行评阅,教师能准确掌握学生对知识的接受水平和学习进度,并及时对后续教学内容进行调整。

(二)教学内容改革

VLSI设计是一个发展非常迅速的行业,新的设计方法和验证技术不断出现,同时设计也面临着各种新的挑战,教学团队紧跟业界最新发展趋势,对教学内容进行改革,具体如下。

首先,以UVM验证方法学为代表新型验证技术已成为业界事实上的验证标准[5],相比于传统激励测试反馈的验证模式,UVM验证方法学的效率更高,对代码的覆盖更为全面。因此课程教学引入了UVM验证方法学的内容,以工程实践中某军用DSP中DMA部件的UVM验证平台为案例向学生详细讲解了UVM验证的过程,并要求学生在实验环节增加UVM验证平台的实现。其次,随着VLSI集成度的提升,功耗已成为限制芯片规模的最重要因素,低功耗设计越来越受到业界的重视[6]。课程教学中增加了低功耗设计的内容,包括体系结构级的低功耗设计技术、RTL编码级的低功耗设计和逻辑综合中的低功耗设计。通过这些内容的学习,初步培养了学生进行低功耗设计的相关能力。最后,在课程早期教学中,比较重视对学生掌握EDA工具能力的培养,忽视了对设计的微结构进行探索的能力,为此,教学团队在课程教学和实验环节增加了对微结构进行探索的内容。比如,要求学生比较采用寄存器文件和Memory Compiler生成的存储单元实现不同规模FIFO的面积、功耗和延迟开销。又如,要求学生实现不同的加法器算法,并比较它们在各种不同综合约束条件下面积、功耗和时序的关系。

(三)实验设置改革

课程早期教学将课程分成四讲,每讲设计单独的实验环节,学生在做完每一讲的实验后,较难将其与以前的实验串联起来,导致知识视野缺乏全局观,理解掌握不牢固。为此教学团队在课程中引入了大作业环节。大作业内容的选取紧跟业界发展趋势,针对神经网络加速器设计已成为业界热点[7],教学团队2017年设计的大作业是要求学生实现一个卷积运算加速器,包括RTL设计验证、逻辑综合、布局布线和物理验证。在深度学习神经网络中,卷积运算占所有操作的绝大部分。比如,在图2给出的典型LeNet-5神经网络中,两个卷积层的运算占所有运算的85%[8]。卷积运算涉及到对大量数据的操作,如在图2的LeNet-5神经网络中包含大量的输入特征图、输出特征图和卷积核。因此,卷积运算加法器设计面临的主要挑战是存储体系和数据搬移机制的设计,通过完成这个大作业也提升了学生进行芯片体系结构设计的能力。

大作业以2人一组的方式进行,其中一人负责前端RTL设计验证以及逻辑综合工作,一人负责后端布局布线和物理验证。在第一次课的时候教师就将大作业题目布置给所有学生,学生按照自愿原则分组,在最后一次课之前每个组提交一份大作业报告,并在最后一次课的时候进行汇报和演示,教师和其他学生进行点评。从现场情况看,由于所选取的大作业是业界热点,学生参与积极性很高,讨论气氛热烈,参与报告的同学获得了一次在教师和同学面前展示自己学习成果的锻炼机会,其他同学也从中学习了更好的思路和方法,达到了以作业促学习的目的。对于做得比较好的小组,在课程结束后教师鼓励他们继续将工作完善,力争发表一篇学术论文或申请一篇国家发明专利。由于所选取的大作业题目是一个研究热点,与很多学生的研究课题有一定的吻合,因此大部分同学都完成得较好,其中有两个小组以大作业设计为基础发表了学术论文,有一个小组的同学将自己的设计申请了国家发明专利,较好地达到了教学目标。

(四)实验环境的改革

课程早期教学中使用基于VMware Workstations虚拟机的实验环境,虽然方便学生课外进行实验,但是安装的EDA软件版本普遍偏旧,同时受限于学生个人PC的性能,不能展开较大规模的设计。此外,虚拟机中包含的是0.13 um的工艺库,虽然足以用于课堂实验,但是用于大规模VLSI设计相对比较落伍,尤其是学生需要以大作业为基础发表学术论文时,工艺库的落伍会在一定程度阻止论文被接收。为了方便学生开展大作业实验,教学团队申请微电子与微处理器研究所开放了部分高性能EDA服务器的账号供学生使用,这些高性能服务器上安装了更为先进的EDA软件和更为先进的工艺库,足以满足学生完成大作业,甚至发表学术论文的需求,学生可以通过校园内部网连接到这些服务器上。

五、教学效果

课程通过将理论讲授与实验环节交叉设置的方式,既提升了学生从事VLSI设计的理论水平,又提高他们的实践能力。课程自开设以来受到越来越多学生的欢迎,选修该课程的学生数量也从最初2012年的30人左右增加到2017年的70人左右。选修该课程的学生类型从2012年最初开设时所面向的非军人工程硕士研究生扩展到军人和非军人工学硕士研究生,甚至部分低年级军人博士研究生也选修了这门课程。选修课程的学生专业类型也从微电子专业扩展到计算机科学与技术专业,甚至学院一些从事计算机体系结构研究的导师要求自己的研究生必须选修本课程。学生通过学习本课程收获了VLSI设计实践的第一手经验,也熟悉了大量EDA软件的使用方法,对于后续的工程实践和科学研究都有较大的帮助。比如,对于工程硕士而言,本课程的学习相当于进行了一个岗前培训。又如,对于从事计算机体系结构研究的学生而言,本课程使用的Design Compiler等工具是其从事研究时必须掌握的工具,通过学习本课程,提前熟悉了该工具的原理和使用方法,对于其后续科研工作很有帮助。教学团队持续对课程授课方式、授课内容等进行改革,课程教学团队每年都对选修本课程的学生进行调查,绝大部分学生都对课程的教学方式和教学内容表示出认同,也表示自己通过选修本课程学习到很多对自己今后学习工作有用的知识。

六、结语

本文对国防科技大学计算机学院开设的《VLSI设计综合实践》课程的教学实践与改革情况进行了描述。该课程着眼于提升学生的VLSI设计工程实践能力,课程内容涵盖自前端RTL设计与验证到后端布局布线的VLSI设计的完整流程,课程教学采用理论讲授与实验实践交叉设置的方式加深学生对理论知识的理解和运用。在5年的教学实践中,课程教学团队紧跟业界最新发展趋势,对课程教学方法、教学内容、实验设置和实验环境等多方面进行了改革,取得了良好的教学效果。

参考文献:

[1]袁宇丹.集成电路设计人才培养之实践教学探索[J].常州工学院学报,2014,(4):87-89.

[2]Pat Pattison,Russell Day.Instruction Skills Workshop(ISW) Handbook for Participants[M].Vancouver.The Instruction Skills Workshop International Advisory Committee,2006.

[3]譚春娇,周海芳,刘越,等.结合加拿大模式开展我国教师教学技能培训[J].计算机教育,2014,(4):47-50.

[4]罗宇,付绍静,李暾.从BOPPPS教学模型看课堂教学改革[J].计算机教育,2015,(6):16-18.

[5]张强.UVM实战(卷1)[M].北京:机械工业出版社,2014:1-48.

[6]Nell H.Weste,David M.Harris. CMOS VLSI Design:A Circuits and Systems Perspective[M].Boston:Addison-Wesley,2011:181-210.

[7]杜子东.神经网络加速器研究[D].北京:中国科学院计算技术研究所,2016:1-140.

[8]Y.LeCun,L.Bottou,Y.Bengio,P.Haner.Gradient-Based Learning Applied to Document Recognition[J].Proceedings of the IEEE,1998,(86):2278–2324.


本文版权归教育教学论坛杂志社及本文作者所有,未经同意,不得转载! ——《教育教学论坛》查稿电话:0311-85178286