----------------------------------入门学习-------------------------
一、 学习数电,掌握数电中的一些基本概念(特别是要学会看时序图)
二、 查找资料,了解FPGA的一些基本结构和用途以及发展方向
三、 学习Verilog语言,掌握一些基本的语法,最好是能够根据时序图或者原理编写代码实现其功能。期间还要学会FPGA的开发流程,ISE或者vivado软件的使用。
在以上学习过程中,要注重基础的学习。在学习Verilog语言时,可以培养编写代码的风格以及掌握文本编辑器的快捷键使用技巧,特别是要学会解决问题的能力。对于软件的使用,推荐重点学习vivado工具使用,最好买一本关于vivado软件使用的书籍看看。
书籍推荐:Verilog语法书《Verilog数字系统设计教程(第2版) 》,《Verilog HDL应用程序设计实例精讲》中的例子可以用来锻炼设计思想(根据时序图和电路原理编写自己的代码)。

---------------------------------基本设计思想和工程实现---------------------
一、 掌握FPGA设计的一些思想(异频时钟的处理、基本总线的原理、同步异步等)
二、 掌握testbench的概念,学会写基本的testbench。(掌握modelsim的基本使用)
三、 根据开发板,在硬件上实现功能。
在这个阶段,培养设计思想,理解代码和电路之间的关系。对于testbench,要学会编写基本的激励,并根据时序来分析RTL中设计是否规范。其次,根据开发板的例程,学会下载和测试工程功能实现,并在这个学习中,掌握下抓信号的技能。(***代码风格***)。
推荐书籍《深入浅出玩转FPGA》和《高级FPGA设计结构、实现和优化》

-------------------------------------选择方向------------------------------
在前期的积累中,对FPGA有一定的了解了,这时候就要开始具体选择一个方向深入研究。其中根据自己的见解,大概分了以下方向:
1、信号处理——信号与系统、数字信号处理、数字图像处理、现代数字信号处理、盲信号处理、自适应滤波器原理、雷达信号处理
2、接口应用——如:UART、SPI、IIC、USB、CAN、PCIE、Rapid IO、DDR、TCP/IP、SPI4.2(10G以太网接口)、SATA、光纤、DisplayPort
3、无线通信——信号与系统、数字信号处理、通信原理、移动通信基础、随机过程、信息论与编码
4、CPU设计——计算机组成原理、单片机、计算机体系结构、编译原理
5、仪器仪表——模拟电子技术、高频电子线路、电子测量技术、智能仪器原理及应用
6、控制系统——自动控制原理、现代控制理论、过程控制工程、模糊控制器理论与应用
7、压缩、编码、加密——数论、抽象代数、现代编码技术、信息论与编码、数据压缩导

--------------------------数字IC验证、FPGA验证-------------------------
接下来就根据自己的情况,大概讲讲自己目前所学方向。数字IC验证和FPGA验证是属于工程设计中的仿真阶段,用于检查RTL设计的功能实现和一些潜在的bug。至于属于上面哪个方面,暂时可以归为接口应用方向。

••••••••••••••••••••••••••••••••••testbench进阶•••••••••••••••••••••••••••••••
在入门学习、基本设计思想和工程实现阶段学习中,对编写testbench有一定基础后,在这个阶段将深入理解验证的思想。
1、 学习systemverilog语法,掌握面向对象的概念,并会systemverilog搭建基本的验证平台。
2、 掌握linux的基本知识,熟练使用linux和vim的操作命令
3、 了解makefile的使用和能够利用makefile运行基本的命令
4、 学会VCS的使用(或者学会verdi工具的使用)。
这个阶段所有的验证环境都是基于linux系统的(也可以在window上学习systemverilog,利用modelsim编译和仿真systemverilog的验证代码,建议在linux上学习,毕竟在企业都是基于linux服务器去运行仿真文件)。学习步骤可以在看systemverilog语法时,同时在linux上搭建基本的验证平台。在这一过程中,还是强调熟练掌握各种快捷键技巧。要学的很多,最主要的是掌握systemverilog语法。
推荐书籍:《Synopsys SVTB workshop》、《SystemVerilog 测试平台编写指南 》
linux:鸟哥的私房菜《[鸟哥的Linux私房菜]基础学习篇(第三版)》

••••••••••••••••••••••••••••••••理论学习和实践••••••••••••••••••••••••••••••••••
1、 掌握基本的一些接口原理,能看懂时序图。
2、 根据接口时序和原理,利用systemverilog搭建验证环境。
3、 进一步学习脚本,学会添加makefile中的一些基本命令(包括添加IP库,编译工程)。
4、 学会看文档(在前期的学习过程中就可以开始学习看官方文档)。
在这个阶段,对上一阶段的巩固和加强。
推荐资料:xilinx官网上的各种文档(英文的哈)

••••••••••••••••••••••••••••••••••验证方法学•••••••••••••••••••••••••••••••
1、 掌握UVM验证方法学思想和UVM语法
2、 在linux上搭建UVM环境。
3、 继续学习接口方面的理论知识
4、 利用UVM搭建各种验证环境,并且考虑未来流用。
在经过这个阶段后,你会发现systemverilog搭建的环境是多么难控制,流用性不强。在学习UVM后,就要考虑验证环境的流用性和扩展性。
推荐书籍:《UVM1.1应用指南及源代码分析》

••••••••••••••••••••••••••••••••••脚本学习••••••••••••••••••••••••••••••••••••
1、 掌握perl语言的使用,能够对数据进行处理。
2、 学会利用perl提取的数据进行分析。
3、 继续学习makefile脚本语言,有多余时间可以学习下cshell脚本
4、 (有多余时间)学习下systemverilog   assertion。
之所以学习perl脚本,是由于我们在搭建验证环境的时候,会添加很多打印的命令,需要通过perl提取数据,有利于后续分析。最终的验证是基于波形和打印出来的文本去分析验证结果的正确性。
推荐书籍:《Perl语言入门(第五版)》
•••••••••••••••••••••••••••••••••学习其他语言••••••••••••••••••••••••••••••••
1、 学习C++,掌握C++语法,能够利用C++实现一些功能模块
2、 完善验证平台,掌握期待值比较方法
之所以学习C++,是为了保障我们的验证环境更加可靠。通过利用C++来实现RTL同样的功能,通过check两种语言实现同样的功能的结果来增加验证的可靠性(主要是用来check一些复杂计算结果)。

----------------------------总结-------------------------------------
最后强调几点:
1、 书不在于多而在于精。(在走过不少弯路后才明白的道理)
2、 语言和理论同样重要。(理论是方法,语言是工具,培养用语言实现理论的能力)
3、 遇到问题尽量自己解决。(多思考,多寻找办法,只有这样才能加深印象)
4、 注重英语和数学的学习。(网上资料太杂,多看官方文档)
5、 要多实践,多总结,敢于尝试。(有些看起来很难,其实做起来也就那样)
6、 学的东西很多,要坚持下去,要静下心去学。(****关键*****)

---------------------------宽度学习-----------------------------------
如果前面是深度,那么现在就来讲讲宽度。FPGA涉及到的领域很多,在深度的学习过程中,我们也可以适当去接触下宽度,比如ARM领域,linux驱动领域,视频图像处理、各类算法等。毕竟在深度学习的过程中,可能会枯燥乏味,所以适当的了解一些其他的知识,也可以为了以后更好的发展。

IC、FPGA验证学习相关推荐

  1. 跟sky学数字IC/FPGA设计学习培训课程:全集已出

    经过2年的努力,数字IC设计前端/FPGA设计培训课程已经录制完毕.并在腾讯课堂收到很多支持和点赞. 授课理念: verilog只是语言,表达的是"思想"(硬件俗称Architec ...

  2. FPGA验证学习(五):SoC的总线架构

    前言 SoC的发展离不开应用领域的需求牵引.在根据需求进行片上系统设计时,不仅要考虑SoC本身,而且还要考虑SoC应用产品的需求,重点关注特定IP获取和系统总体结构(性能.功耗.成本.可靠性.适用性) ...

  3. 数字IC/FPGA设计之——学习路径

    对于在校生或刚学习数字IC/FPGA设计的小伙伴来说,通常迷惑于一个问题:这个方向需要掌握哪些基础知识,学习路径是什么样的? 面对网上各种公众号,知乎分享,应该怎么学习呢? SiliconThink( ...

  4. FPGA系统性学习笔记连载_Day19【综合实验】之【数字钟】【Intel Cycle IV FPGA平台验证】

    FPGA系统性学习笔记连载_Day19[综合实验]之[数字钟][Intel Cycle IV FPGA平台验证] 本系列为FPGA系统性学习学员学习笔记整理分享,如有学习或者购买开发板意向,可加交流群 ...

  5. IC验证学习-从小白到放弃

    第一天-69岁的验证老同志 诶,朋友们好啊,我是混子随意验证门掌门人马宝宝. 刚才有一个朋友问我:'马老师发生肾摸事了?' 然后给我发来了几张截图, 我一看, 哦!原来是佐田,有两个年轻人,一个近视8 ...

  6. FPGA设计/数字IC前端设计学习交流群

    FPGA设计/数字IC前端设计学习交流群 我们的目标 做啥的 怎么玩 我们的目标 Help you make good designs. 做啥的 本群以技术讨论为主,偶尔娱乐:要谈谈日常工作,生活也行 ...

  7. 数字IC/FPGA设计面试与工作_sky

    请问:对于找工作刷题,怎么看? 热身有必要,但是规劝一句:题目是刷不完的.面试通过了,后面还得再工作15年.你咋刷? 得想的长远些.做题不是终点.刷题,面试为了啥? 建议刷题是补充,平时多积累数字IC ...

  8. 【芯片验证学习纪实】System Verilog语法(1)

    [芯片验证学习纪实]System Verilog语法(1) 继学习了FPGA设计之后,学习IC验证也有一段时间了,学习过程中参考了很多互联网上的优秀资源,在此感谢各位前辈们的无私分享!现在,利用闲暇之 ...

  9. FPGA基础学习与方向

    问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导. 如果想速成,那就上网看视频吧,这样主要是面对 ...

最新文章

  1. 让浏览器不记住表单元素输入过的内容
  2. C#教程之自己动手写映射第四节[封装删除]
  3. ##安装MySql数据库并解决如果安装出错卸载的注意事项
  4. 5G技术标准制定已加速 所有炒作都将变成现实
  5. ubuntu 安装过程所需软件
  6. php 获取手机设备的ID,开源 | 通过提取神经元知识实现人脸模型压缩:MobileID可在移动设备上快速运行...
  7. php文档头,头部文档(header.php)
  8. eslint 验证vue文件 报错 unexpected token =解决方法
  9. css清除浮动的几种方法_清除浮动的几种方法
  10. 拓端tecdat|R语言对股票风险“溃疡指数”( Ulcer Index)曲面图可视化
  11. Spring Tool Suite 4(STS)的下载安装
  12. linux下的ps4手柄驱动,DS4 To XInput Wrapper
  13. 004_Makefile的编译
  14. DLP和DMD的区别
  15. Spark 报错 Failed to delete: C:\Users\lvacz\AppData\Local\Temp\spark-*
  16. 7z压缩 lzma流式压缩、解压缩的实现 C语言
  17. 共享单车之租赁需求预估
  18. codeforces.1253 B
  19. 软件测试的艺术 读书笔记完整版
  20. homeassistant主动推送信息

热门文章

  1. 记录Hbuilder项目使用xcode离线打包上传苹果商店踩过的坑
  2. 英文赞美句子,大家应该看看
  3. 何苦蹲点预售抢交尾款 这款电竞游戏显示器就超值
  4. Android仿同花顺自选股列表控件
  5. iOS苹果内购详细步骤
  6. python项目开发案例集锦 豆瓣-Python 的练手项目有哪些值得推荐?
  7. Java 心心跳动,能把女朋友感动哭的效果
  8. linux 网络管理之iptables命令详解
  9. NEO改进协议提案9(NEP-9)
  10. java音频剪辑_Java混剪音频