EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如何成长为一名优秀的FPGA 工程师?$ O% K* W6 g9 ~# A# x
第一部分:FPGA 工程师的成长 第一阶段:入门 -> 熟练
# Q) M$ Q; A1 r9 v" D( `. U0 W. W1 A: \* R& p5 u' f% o
克服心理恐惧 – 代码这么写可以编译通过
8 `" a8 c- x; w, S9 R; W0 F8 i2 U' k; V
– 下载程序不会烧毁电路板 建立思维定势 – “事非经过不知易” 学会了便是“自古华山一条路” 没用过便是“乱花渐欲迷人眼 第二阶段:提高 -> 精通 EDA工具——从感性认识到理性认识
+ |8 K) X/ @( a1 E
- ~* d8 ~' h$ a7 y: T5 k4 ?– 站在EDA工具的角度理解FPGA开发流程 EDA工具各个流程的意义,各个阶段的输入输出 EDA工具输出的报告:Infor和warning HDL语言——积累设计模式 – 跨时钟域处理电路2 W* n$ N: N! h9 V
$ H- F+ K5 a# p$ b C
– 有限状态机电路
; C2 |+ l2 X" y: G4 C3 s: N+ m( ~; N* z4 s. T; @) q
– 特定领域的数据通路电路
. B* H. A/ ]2 v+ X( h \/ f2 T2 ]) F. n9 ~* D- Q
– 片上总线 FPGA芯片——从逻辑特性到物理特性 – 搞定时序分析和约束. @$ r M+ G" C* u$ w& _, \
8 L/ y0 ^8 ~8 M, h5 O: z
– 看懂RTL视图和Technology视图 第三阶段:从业 -> 专业 从产品需求出发认识你的芯片 – 芯片之内 深刻理解FPGA底层结构与应用场合的对应关系 – 芯片之外 FPGA外围支持电路以及高速接口 FPGA与软件接口的设计和调试 做出你的产品 – 公司业务- b- H, d& E: z
1 F, s, v/ C5 \0 k) l6 c6 T0 I8 t* x3 F– 项目流程. ^, {( H6 }, ^) Z/ k6 N. \
a! p8 Y% [7 h! S– 领域知识 个人的成长+成功的项目 给刚刚从业的FPGA工程师的几点忠告 – 珍视你的第一份工作 从工作中学习,在工作中成长 记工作日志,写博客 – FPGA工程师学点软件,学点“不可综合语句” 数据的分析和可视化 工具之间的“胶水” – 使用Linux OS 脚本 免费工具 开源精神 第二部分:FPGA开发中的敏捷实践 FPGA开发本质上是敏捷的 – 相对于芯片开发:灵活 + 快速 = 敏捷 可以随时更新– 更短的迭代周期 可以上板验证 – 更快的反馈速度 敏捷开发的思想需要结合FPGA的自身特点 – 相对于软件开发: 上板调试代价更高 – 仿真验证的必要性 距离真实世界更近 – 开发验证、调试工具的必要性 » 验证、调试工具不是最终产品的一部分
! `5 A* l/ }4 a2 g. z4 A5 S3 j7 {: @2 l4 X( n# }$ _
» 开发工具、积累工具,合理重用 刻意地模仿芯片或者软件开发都是不可取的7 T0 _- C6 y" Y/ P! D
" H) X0 r9 M. V) o6 m: Q案例分享 案例一:用Virtual JTAG加速上板验证 – 问题1:3 H' w3 D' @( c3 u& e
( z1 ^& q- o9 U7 A3 c' L( o
缺少外部芯片的仿真模型。 – 解决1:7 L8 Q3 q% B2 C' f9 B* D6 l9 @
7 H8 |6 G# A9 d' P; z7 y4 g ?$ B
用VJ虚拟出一个“串口控制台”,通过接口逻辑层,向外部芯片发送“写”和“读”命令。验证接口逻辑层,积累操作外部芯片的脚本。: R! S* c$ x5 h' w1 X
7 n- ^' F! i7 v6 n4 Z3 R+ U
通过这一接口,把最终产品中需要用状态机来实现的控制电路,暂时替换为可以用PC机软件来实现的脚本;把FPGA上- s0 V9 r) Q/ p E* q. v
( f# C9 n( Z( m7 a0 j+ x2 B- x) s
的硬件调试转化为了PC端软件调试,加速了调试过程。. V+ a4 L9 `8 b3 [
; s. V, X: M8 J' w a7 C. O0 i
– 敏捷思想:
8 M3 M, y U; L$ E% p. ?" H; u; E1 ]) s+ ]& e# F
把项目中的风险,在早期的迭代中加以解决。 – 问题2:
5 v* n4 z% F( r5 V5 z
; o1 F! l; p' Y* Z外部设备行为复杂,测试向量覆盖率不够、仿真速度慢。 – 解决2:
1 S/ H2 U2 E1 c6 y
5 L! f' d l0 A' v) \* u用VJ设计一个真实行为捕获模块,丰富测试向量。 S5 X; o& ^ a8 H
, \% b' N% H5 f& N2 H用VJ虚拟未实现的关键逻辑模块,上板测试调试。 – 敏捷思想:
7 R0 s q4 N0 z8 f* M) O* n' M/ h7 e9 L P( K
反思回顾,发现开发瓶颈,持续改进方法、工具。
4 ^/ g, Y, z5 t7 a
: ^) j$ C7 O v& n, f* v提早集成、提早测试。 案例二:FPGA开发中引入回归测试和持续构建 – 问题1:
5 f- l) _# J! l' z# g3 [/ A2 j6 V3 ~
软件的驱动层(C)和FPGA的接口层(V)需要测试和调试
6 u9 c1 R+ `4 x7 F7 Z- V# F! c6 p+ q* }' m$ a
FPGA需要回归测试来保证持续开发的质量 – 解决1:
% P5 F- e( Q) L* W$ K- N {( \2 B6 h0 `& m
用SystemVerilog DPI连接C和Verilog6 Q8 w' r' |; ]) V, @3 L# J/ u
3 v. p2 `6 h; S用CppUtest测试框架搭建FPGA回归测试环境 – 敏捷思想:: F3 J$ p+ Z4 C0 n1 G8 Y. c) o
4 q5 M1 |9 h3 O8 ^+ |: d
回归测试 – 问题2: 多人协作开发中代码的质量保证
7 U) j& o6 P0 x' p) m
! i P2 T: F& p7 V, S5 XFPGA需要自动构建来实现及时发布 – 解决2: H+ Y6 Z/ r; v9 P
( D5 M0 X5 p/ k- {7 ~/ A$ C! d
用Tcl脚本实现项目编译、仿真的自动化( Y" q6 Y; @. z! Z6 r
3 z, P4 N# ^0 S! H, w
用Hudson CI来实现多个仿真、编译工程的自动构建和健康度报告 – 敏捷思想:3 Q( v$ ~3 [* G. B# S) X
; N1 ?' q1 v' E9 r5 }# f$ l2 }: @每日构建 , r- x" Y9 n2 d# X) K5 }. {8 @
|