VLSI-Final-Project:小型卷积核单元设计-项目总结.docx

VLSI-Final-Project:小型卷积核单元设计-项目总结.docx

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? ? 【Chips】VLSI Final Project 小型卷积核单元设计 项目总结 ? ? VLSI Final Project:小型卷积核单元设计 项目总结 0 项目背景 ? VLSI流程课程在期末要求完成一个project,来让我这样的小白简单走一遍VLSI的设计流程有个概念。作业内容是实现一个简单的小型卷积核,给定输入的数据后能计算并返回相应正确的卷积运算结果。整个project主要分功能仿真,然后是综合,再综合后仿真,形式验证。我个人任务主要是根据需要设计并完成verilog部分工作,队友完成了后续的综合、后仿真、形式验证等内容,所以我对verilog内容熟悉一些,也主要记录这一块的内容与感受。 ? 作为一个芯片、verilog等知识点的小白,边学边写,并在deadline截至前两天快速迭代代码版本着实是非常刺激。趁自己还记着点project细节,以及纪念一波撰写第一个小型verilog任务、实现了本project的前仿、综合、后仿、形式验证等环节,我记录一下此project的思路以及相关的基础知识。 1 项目要求 ? 设计简单的卷积核运算模块,限定了模块的输入端口、输出端口,在保证正确性的前提下能完整的通过后续的dc过程、后仿与形式验证等过程。在同等情况下, 卷积核单元的面积、速度、功耗将成为评判性能优劣的标准。(我并没有考虑这玩意儿( ̄▽ ̄)) 2 常规概念 ? 作为一个IC设计小白,有一些基础知识与概念得去了解以后才能实施后续的模块设计。简单把相关内容分为verilog与IC流程相关吧。 2.1 Verilog语法 ? 用程序的形式 “写出” 一个芯片 来, 那肯定是要用一个 “能够描写电路工作逻辑”的程序语言 来写才行吧!HDL,(Hardware Description Language),就是专门写电路运行逻辑的编程语言,比C语言更底层一丢丢,是所有能干这个事情的程序语言的大类名称。其中有两个很有名的常用语言,一个是VHDL,但是以前美国军方用的,咱不提他;另一个是Verilog语言,好,俺用的也是这个。所以Verilog语言属于HDL。 ? 我们用Verilog劈里啪啦写了一个project以后,这些代码文件后缀是.v格式的。 ? verilog的语法内容和C语言有很多是相像的,在学习的时候对照一下有那些相同点和不同点即可快速入门。在课程上有老师多次提到,在网络上也有别的博主说过:撰写verilog的时候,心中要有电路!起初我觉得这是一句废话,我写c语言的时候脑子也会有算法的运行逻辑,这不是很正常的吗?随着这个project的撰写推进,直到后续的dc环节、后仿真环节时,我才意识到这句话内部的真正含义:要想你你写的verilog模块得是真实、有效、能流片的芯片逻辑,必须要心中有“电路”而不是仅仅有逻辑而已!!!——verilog代码能运行,和能产生相对应的电路(即可综合)是两码事!( ̄▽ ̄) 相同点: 注释、标识符命名规范、运算符(逻辑与或非、转义符等,但是verilog没有自增运算符,即‘i++’) 常用的基本语句块,如if-else、for语句、while. 但是{}变成了begin和end. 不同点:(仅写了部分,) 所有.v文件写的时候要先声明模块名字module xxx(x..x); endmodule,这并不等价于c语言里的函数的概念,而是和matlab的所有.m文件的模块化一个意思。也可以理解为一个“类”,后续可以用这个module的名字进行实例化不同个数的模块。 对于模块的参数,要在后文中写明是输入类型(input)还是输出类型(output),并声明其类别(是reg类还是wire等,不写就默认是wire类型). 常量的定义语法不同,verilog中写法是parameter xx=... verilog不怎么使用for语句,尽量少用,因为这样会让后续生成的电路比较复杂,一般都是无脑写出来(没错,是你想那样)。 verilog的switch和if-else语句,一定要把每个分支都考虑到位,switch要养成写default的习惯,不然后续综合出的电路多出来一堆latch的时候,有你好受的( ̄▽ ̄). verilog里最大的两个多出来的部分,一个是alway语句块,一个是assign赋值语句,这个学习一下即可。 verilog中多出来两个重要的变量类型,分别是reg和wire类型。要搞清楚它们之间的联系与区别,不然最基础的代码逻辑都没法写,这是俩verilog中最最常用也是最最核心的两个变量类型。一般来说,对于一个module的输入输出端口可以都是wire类型。但是在实例化模块的时候要区别对待:把形参是wire类型的输入端口变量用实参是reg类型的变量代进去。 veriog的过

文档评论(0)

科技之佳文库 + 关注
官方认证
内容提供者

科技赋能未来,创新改变生活!

版权声明书
用户编号:8131073104000017
认证主体重庆有云时代科技有限公司
IP属地浙江
统一社会信用代码/组织机构代码
9150010832176858X3

1亿VIP精品文档

相关文档