时间:2024-07-26 来源:网络搜集 关于我们 0
对于在校生或刚学习数字IC/FPGA设计的小伙伴来说,通常迷惑于一个问题:
这个方向需要掌握哪些基础知识,学习路径是什么样的?
更准确来说是掌握怎样的知识和技能就可以安心进入IC设计行业?
即可以参考如下知识点与顺序:
一、基础知识
1、电路分析,数字电路基础;
2、微机原理,汇编语言;
3、C/C++语言,数据结构;
4、Verilog语言;
5、晶体管原理;(做数字IC/FPGA设计,只需大致了解)
二、专业知识
1、数字IC前端/FPGA设计的专业知识学习,推荐数字IC设计入门“圣经”:《CMOS VLSI Design A Circuits and Systems Perspective》
基本电路结构,加减法器结构,组合逻辑,时序逻辑,跨时钟设计都有涉及。
2、要理解On-Chip-Bus的基本知识与数字系统的基本结构,建议学习理解AMBA总线,含APB/AHB/AXI。
毕竟ARM在数字IP领域处于绝对碾压地位,所以AMBA总线已经成为数字IC的必学内容。
3、熟悉相关EDA工具
a、功能验证:对于初学者(在校生)来说,能modelsim/questasim上做仿真测试,熟悉波形窗口;debug RTL code,再使用下windows版的nLint/Debussy就能完成数字IP功能设计验证了。
b、综合与实现:这部分首先(重点)要掌握STA原理,比如:cell delay在cell library里面是怎么标定的,tool是怎么计算delay的,setup/hold timing check的计算公式是什么。
clk skew、clk uncertainty、create_clock、create_generateclock、set_ideal_network、set_input_delay、set_false_path、set_multi_cycle_path、OCV…是什么意思,对STA有何作用。
懂了STA原理,就可以用TCL脚本语言写SDC(DC综合)/XDC(vivado综合实现)timing constraint了。
三、进阶知识
1、算法方向:信号与系统,数字信号处理(DSP);
2、接口方向:UART/IIC/SPI/DDR等常用接口协议;如有余力,可以看看USB/PCIE/SATA/MIPI;
3、日常工作的OS平台:linux操作系统使用;vim(emac)使用;bash(csh);makefile;
4、脚本语言:Perl(Python)/TCL;
5、版本管理工具:SVN/Git;
熟练掌握以上知识与技能,便可以说是已经能迈入IC设计的大门了。