EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如何成长为一名优秀的FPGA 工程师?; C* d( O7 u) r& u1 `
第一部分:FPGA 工程师的成长 第一阶段:入门 -> 熟练7 V7 u, ]6 I7 J. B
2 t9 P9 ~ T) k# a6 x0 o. Y$ c
克服心理恐惧 – 代码这么写可以编译通过
$ P* `+ P, ^2 Z0 K2 C! C: W/ l3 \
; a$ [1 W m* j8 E– 下载程序不会烧毁电路板 建立思维定势 – “事非经过不知易” 学会了便是“自古华山一条路” 没用过便是“乱花渐欲迷人眼 第二阶段:提高 -> 精通 EDA工具——从感性认识到理性认识) o( q! p# I% Z. ?9 l7 v/ q
7 _' n* ]- W, ?
– 站在EDA工具的角度理解FPGA开发流程 EDA工具各个流程的意义,各个阶段的输入输出 EDA工具输出的报告:Infor和warning HDL语言——积累设计模式 – 跨时钟域处理电路
, b$ p' Q1 C8 m" }. \0 F5 S; d7 J3 P! e# Q) b
– 有限状态机电路/ O3 W. J# R& k
9 k h, V4 p1 }2 h4 y
– 特定领域的数据通路电路
, G" y6 r9 h/ X# U9 D- u A) ~# y @( _
– 片上总线 FPGA芯片——从逻辑特性到物理特性 – 搞定时序分析和约束
8 s9 O1 K: N* c; V9 f1 E/ L. t8 W7 r9 }0 x& \ n% G. M9 m3 j8 f
– 看懂RTL视图和Technology视图 第三阶段:从业 -> 专业 从产品需求出发认识你的芯片 – 芯片之内 深刻理解FPGA底层结构与应用场合的对应关系 – 芯片之外 FPGA外围支持电路以及高速接口 FPGA与软件接口的设计和调试 做出你的产品 – 公司业务
& q, B* h# F0 X" ^! p1 j3 ~
Z9 ^) i& M- C* J3 s. T6 E– 项目流程
9 C4 q) e! A/ _& z
0 v9 u) K3 |9 x2 y) Y+ {" ?0 {– 领域知识 个人的成长+成功的项目 给刚刚从业的FPGA工程师的几点忠告 – 珍视你的第一份工作 从工作中学习,在工作中成长 记工作日志,写博客 – FPGA工程师学点软件,学点“不可综合语句” 数据的分析和可视化 工具之间的“胶水” – 使用Linux OS 脚本 免费工具 开源精神 第二部分:FPGA开发中的敏捷实践 FPGA开发本质上是敏捷的 – 相对于芯片开发:灵活 + 快速 = 敏捷 可以随时更新– 更短的迭代周期 可以上板验证 – 更快的反馈速度 敏捷开发的思想需要结合FPGA的自身特点 – 相对于软件开发: 上板调试代价更高 – 仿真验证的必要性 距离真实世界更近 – 开发验证、调试工具的必要性 » 验证、调试工具不是最终产品的一部分
) U& ~3 h& R& m/ v
5 b. x1 s! x/ `2 `2 U» 开发工具、积累工具,合理重用 刻意地模仿芯片或者软件开发都是不可取的
6 {% t$ n. W' f+ g6 J1 D9 D7 K# G) `$ |; c
案例分享 案例一:用Virtual JTAG加速上板验证 – 问题1:
! |5 [+ p9 C' s4 S; O* C# @4 x- V: x' ]0 o) Z+ L" v5 U! c
缺少外部芯片的仿真模型。 – 解决1:. E! z- ]/ [7 @7 j
. b" }' |& {2 _
用VJ虚拟出一个“串口控制台”,通过接口逻辑层,向外部芯片发送“写”和“读”命令。验证接口逻辑层,积累操作外部芯片的脚本。
1 O! u# G o; Z& y: L. D% B
. f* k$ x: [7 c8 @2 U通过这一接口,把最终产品中需要用状态机来实现的控制电路,暂时替换为可以用PC机软件来实现的脚本;把FPGA上
3 Q4 m. h6 t( t5 u9 t, i9 |# J1 b8 y# G1 O
的硬件调试转化为了PC端软件调试,加速了调试过程。
+ U, [# L/ D, g, C. j @" C
+ k# x7 B8 S" b. Y– 敏捷思想:- H$ Y2 d. V: f/ x; J$ F& p
7 c1 i3 C9 s3 f5 i0 [$ u把项目中的风险,在早期的迭代中加以解决。 – 问题2:
3 W& |" s4 i1 o2 i: C6 }7 n# P$ h' M3 n: X' V
外部设备行为复杂,测试向量覆盖率不够、仿真速度慢。 – 解决2:
: ]2 | D# e" u: V f, C# L2 C
! H7 V- P3 {: R, P W3 F) A4 i/ o用VJ设计一个真实行为捕获模块,丰富测试向量。! ` U3 [6 Z0 V9 o' K* }" j$ g
1 I; z9 N& b" b' E2 }( V0 ?5 Z/ l
用VJ虚拟未实现的关键逻辑模块,上板测试调试。 – 敏捷思想:
% m; ], w& V& @+ t0 c4 c: I/ P9 M# J+ h2 V3 `( }
反思回顾,发现开发瓶颈,持续改进方法、工具。) C6 }) ?3 T. {. Z
8 @# c: J' W5 C6 g5 N- w3 h
提早集成、提早测试。 案例二:FPGA开发中引入回归测试和持续构建 – 问题1:
% F8 ^4 t) x, Q& H; D
6 O1 k" g3 ~! w/ V+ J& a软件的驱动层(C)和FPGA的接口层(V)需要测试和调试1 O- N r. \3 B5 I
6 t- y5 [+ f1 z
FPGA需要回归测试来保证持续开发的质量 – 解决1:
7 u. Y# j; W& e2 ~+ ^& L1 H1 R. I: L7 i; D" ]1 M: m9 @0 T
用SystemVerilog DPI连接C和Verilog
0 I, l- H0 W+ K1 D# h9 L
; [8 v; y7 M$ C4 \/ ~+ B; A: o用CppUtest测试框架搭建FPGA回归测试环境 – 敏捷思想:
# |8 P1 E, h" W" W& N4 u
! M3 b; P9 I* M0 J- X回归测试 – 问题2: 多人协作开发中代码的质量保证
0 Q/ u/ ?* v. a, U, D
" u, Q( g/ i8 L/ p- C1 vFPGA需要自动构建来实现及时发布 – 解决2:( h. M% Q( o* x' \) N5 t
( W( w2 b: G4 z$ h+ A5 u用Tcl脚本实现项目编译、仿真的自动化
# V' `! s+ ?! D4 J+ \6 L7 Y- f# p; B Y
/ t6 Y+ j8 p9 k Q用Hudson CI来实现多个仿真、编译工程的自动构建和健康度报告 – 敏捷思想:( P6 Y8 T; b) N1 C0 I
2 s; Y; [) c, [, {+ C每日构建
# g( O4 S; @0 T! X# e: r" ]6 N+ o9 g |