IC、FPGA验证学习

----------------------------------入门学习-------------------------
一、 学习数电,掌握数电中的一些基本概念(特别是要学会看时序图)
二、 查找资料,了解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驱动领域,视频图像处理、各类算法等。毕竟在深度学习的过程中,可能会枯燥乏味,所以适当的了解一些其他的知识,也可以为了以后更好的发展。




评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南国之邱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值