本人目前大三升大四,电子相关科系,目前在IC公司暑期实习。在连被电三周后,整理了一些观察给同学参考。
学校 (学界)
学校皆以 RTL 为主,其余合成和 backend 都是偏公式化行为,仅有验证用途。依照使用场合又可以分为以下几种
1. 课堂
以我修过的IC课为例,学校除了基本硬体架构与观念外 (加法、乘法、计数器等),作业方面从 gate level 教起,要求我们用 single bit 的 and, or, nand, xor, FF 等等逻辑闸来写一些简单的排序逻辑与除法器,一方面熟悉硬体思维一方面学习 verilog 。整堂课虽名为 IC design ,但连 testbench 都不需要自己写。
2. 實驗
实验课指的是上课量少,且多以实作、报告等形式为主的课程。目前笔者修过两门实验课,分别以 FPGA 与 ASIC 为载体。
前者在三周教完 RTL 与 Qsys,再经过三次如录音器等作业后,便放牛吃草让我们自主设计。最终我们用 fpga 完成用人声的音高与音量控制的音乐游戏,强一点的组有做类似立体视差或物件辨识等主题。结论来说确实对于 FPGA 的 DSP 、 RAM 与影像传输有一定程度的认识,也对 FFT 等演算法的硬体实践有较清晰的了解,但对于 synthesis 以后的 design flow 就毫无涉猎了。
后者则是完整从 RTL 一直到 TSMI 晶片下线申请,我们这组以一个新的 GCN 架构做硬体实践,从 spec 到 scheduler 的设计花了相当多时间,验证也花了好几周,而合成与 APR 却只藉由打几行讲义上的指令就完成,因此仅大概知道指令控制的是什么数值,但对这些数值为何如此设定却完全不了解。