FPGA工程师如何写简历的几点建议(转载)FPGA工程师如何写简历的几点建议(转载)rickyice 发表于2006-11-10 10:18:00本来是给下面一篇帖子的回复,写了写,觉得还是放在前面,看得人会多点。
我做了10年的FPGA了,中间也做过ASIC(前端),DSP 也有10年了,嵌入式短些,只有2年。
在小公司待过,也在大公司待过,给别人写过简历,也收过简历,有一点心得,写出来和大家分享1、首先要确认你的竞争力,下面的帖子在问是否会被大公司看中,你说的知名大公司指的是哪些公司?各公司的业务范围和需求都不一样。
大小也很难从人数和资产上界定,我认识一个公司只有80人,但是在业界绝对是老大,别的公司设计产品都要借鉴一下他们的。
招聘的重点是看你是否能适应公司的业务,所以,写简历的第一点是简历要有侧重点,不能只有一份,ASIC工程师和FPGA工程师的要求就不一样,其中分前端工程师、后端工程师、编码工程师、算法工程师、测试工程师等等,要求不一样,你都投一份简历,就很难从HR那里被送到实际要招人的组长手里,HR会觉得你专业或经历不适合。
这是刚出校门的人简历最大的弊病。
2、大部分人简历最大的问题是只有做过的项目简介,但是没有描述你的工作和最后的效果。
要知道真正招人的很关心你做过哪些项目,主要关心的是在项目中做了什么,达到了什么效果。
比如我以前收到的简历就有写做过ASIC的,但是一看时间只有3个月,根本不可能做完,再问问做的内容,主要是做测试,这样写是不行的。
3、另外还有效果,每一个设计应该是功能和性能的结合。
最后要描述你实现了哪些功能和效率有多高。
这样人家起码会认为你是个严谨的工程师,无论ASIC还是FPGA,最后的性能报告都是很重要的。
比如E1的接口设计,很多人都会做,但是你能实现得比别人效率高、或者面积小,就能说明你的能力。
这也是面试时公司会去了解的重点,这样连后面的面试你也会占优势。
4、一个公司的招聘流程(真正招人的,不是为了人才储备的)一般不会搞海选,HR把认为基本符合要求的简历给要人的组长,他看好了才会通知面试,而这些人都是资深工程师,你的项目他一看就知道有没有水分,一般有水分的都难以面试,因为组长需要的工程师是能干活少吹牛的,写明白你在以前的项目中做了什么有很多好处,没人指望刚毕业的就什么都会,只要组长觉得有潜质就有希望。
所以把你做的写清楚,组长才能看出你是否有潜质。
5、简历里另一个误区是经验,每个公司都需要有经验的工程师,但是每个老板都知道,真正有经验的工程师报价不会低,老板可是要在能完成任务的前提下尽量解决开支的。
所以一个组常常是一个巨有经验的,带两个很有经验的,几个有点经验的,加上几个刚入门的。
所以不要夸大自己的经验,放低姿态,重点表现你的潜力,反而有利。
组长不太喜欢要很有经验的,因为会打破小组的平衡;更不喜欢巨有经验的,会踢了自己的饭碗;所以有点经验的是首选,刚入门也不错,因为比较好调教。
所以刚毕业的学生只要在简历中让人觉得有点经验就够了。
6、简历要重点突出。
简历先给HR看,他们多半不懂技术,只是根据招人指标看是否符合,所以一定要把你符合招聘要求中的部分写成一个模块,比较靠前,HR一看见这部分就ok了,后面根本不看。
第二个看的人多半是你将来的上司,所以要把他关心的部分单独写几个模块,要详细:你从哪毕业(学的什么就可以简略)、做过些什么、做得怎么样、会什么、程度如何、还有哪些辅助本领(技术上的),最后看的人是你的大老板,他就看看你的资历(好评价你的成本),有的企业文化好的地方会看看课外的爱好什么的(都不是主要的)。
所以要写得模块分明,字得间隔要大,标题要明显,让每个人看到他想看的,尽量少费话。
没话说宁可少说,起码给人一个简洁的映象。
要知道FPGA或者说硬件工程师大部分都是有些急脾气的,未必耐烦看完很长的简历。
FPGA设计者的5项基本功得《佟林传》里,佟林练的基本功是“绕大树、解皮绳”,然后才练成了什么“鬼影随行、柳叶绵丝掌”。
在我看来,成为一名说得过去的FPGA设计者,需要练好5项基本功:仿真、综合、时序分析、调试、验证。
需要强调的一点是,以上基本功是针对FPGA设计者来说的,不是针对IC设计者的。
对于IC设计,我不懂,所以不敢妄言.对于FPGA设计者来说,练好这5项基本功,与用好相应的EDA工具是同一过程,对应关系如下:1. 仿真:Modelsim, Quartus II(Simulator Tool)2. 综合:Quartus II (Compiler Tool, RTL Viewer, Technolog y Map Viewer, Chip Planner)3. 时序:Quartus II (TimeQuest Timing Analyzer, Technology Map Viewer, Chip Planner)4. 调试:Quartus II (SignalTap II Logic Analyzer, Virtual JTA G, Assignment Editor)5. 验证:Modelsim, Quartus II(Test Bench Template Writer)掌握HDL语言虽然不是FPGA设计的全部,但是HDL语言对FPGA设计的影响贯穿于整个FPGA设计流程中,与F PGA设计的5项基本功是相辅相成的。
对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。
练好仿真、综合、时序分析这3项基本功,对于学习“HD L语言的可综合子集”有如下帮助:1. 通过仿真,可以观察HDL语言在FPGA中的逻辑行为。
2. 通过综合,可以观察HDL语言在FPGA中的物理实现形式。
3. 通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。
对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。
1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。
2. 全面的仿真验证可以减少FPGA硬件调试的工作量。
3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。
FPGA 设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。
反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。
对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。
如此反复,就可以逐步提高设计水平。
采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。
市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。
这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。
如何使用现有的书籍进行自学,这是后话。
对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。
但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。
入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。
在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。
FPGA与CPLD内部结构区别?CPLD以altraMAX7000这种PLD为例,可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。
宏单元是PLD的基本结构,由它来实现基本的逻辑功能。
可编程连线负责信号传递,连接所有的宏单元。
I/O控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。
这种基于乘积项(实际就是与或阵列)的PLD基本都是由EEPROM和Flash工艺制造的,一上电就可以工作,无需其他芯片配合。
布线方式是全局的,所以延时可预测。
CP LD适合做逻辑设计。
FPGAFPGA基于LUT,LUT本质上就是一个RAM,每一个LU T可以看成一个有4位地址线的16x1的RAM。
这也是为什么FPGA需要外接一个rom来上电配置。
以xilinx的Spartan-II为例,主要包括CLBs,I/O 块,RAM块和可编程连线。
在spartan-II中,一个CLB包括2个Slices,每个slices包括两个LUT,两个触发器和相关逻辑。
Slices可以看成是SpartanII实现逻辑的最基本结构。
FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,F PGA的平均逻辑单元成本大大低于PLD。
所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就是一个很好选择。
tch和Register区别?行为描述中Latch如何产生?本质的区别在于:latch是电平触发,reg是边沿触发。
时序设计中尽量使用reg触发。
行为描述中,如果对应所有可能输入条件,有的输入没有对应明确的输出,系统会综合出latch。
比如:always@( a or b) //缺少else语句beginif(a==1)q <= b;end3.对竞争冒险的理解,以及如何消除?在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。
产生毛刺叫冒险。
如果布尔式中有相反的信号则可能产生竞争和冒险现象。
解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。
4.用Verilog设计一个5分频器。
5分频,奇数分频都可以类似这么做,只需要改div1和div2的参数。
div1为奇数分频除2的余数。
采用上升延和下降延分别触发不同波形,最后叠加的方式产生奇数分频。
module divfreq(clk, clk1x, rst, clk1xpose, clk1xne ge, coutpose, coutnege);input clk;input rst;output clk1x;output clk1xpose;output clk1xnege;output[2:0] coutpose;output[2:0] coutnege;reg clk1xpose;reg clk1xnege;reg[2:0] coutpose;reg[2:0] coutnege;parameter div1 = 2 , div2 = 4; // div1 =5 / 2, div2 = 5 - 1assign clk1x = clk1xpose | clk1xnege;always@(posedge clk or negedge rst)beginif(!rst)clk1xpose = 0;else if(coutpose == div1)clk1xpose = ~clk1xpose;else if(coutpose == div2)clk1xpose = ~clk1xpose;elseclk1xpose = clk1xpose;endalways@(negedge clk or negedge rst)beginif(!rst)clk1xnege = 0;else if(coutnege == div1)clk1xnege = ~clk1xnege;else if(coutnege == div2)clk1xnege = ~clk1xnege;elseclk1xnege = clk1xnege;endalways@(posedge clk or negedge rst) beginif(!rst)coutpose = 0;else if(coutpose == div2)coutpose = 0;elsecoutpose = coutpose + 1;endalways@(negedge clk or negedge rst)beginif(!rst)coutnege = 0;else if(coutnege == div2)coutnege = 0;elsecoutnege = coutnege + 1;endendmodule写给即将毕业的电子信息工程专业的女生写给即将毕业的电子信息工程专业的女生在这里,我没有言传身教的意思。