原创,呵呵。上午参加了NVIDIA2009笔试, ASIC Design Engineer, 一个大教室满满的,3,400人。题目出的不错,全英文题目和回答,不许用verilog/VHDL,全部门级。我觉得这样很好,能考查一些深入的东西,毕竟做ASIC不是编程序。总的来说题目很简单。
下面是记忆中的题目:
题1,给一个eco后的3输入变量的逻辑表达式,用NAND2和 NOR2表示。
这个很简单,不多说了。
题2,一个逻辑串行输入3-bit in, 与一3bit stored pattern比较。输入1位比较结果match. 当3-bit in为000时,pattern变为101。当3-bit in为111时,pattern变为010。Pattern可以变化。设计电路。
这个题搞state machine就太复杂了,直接两组shift register + NOR3 + AND3再有个3-bit comparator就搞定。
题3,给一段verilog代码,找错误并改正。
本题关键是要找出代码的用意,理解了目的后再改写成正确的代码,而不是检查语法错误。这个题的意思是对4个输入的与,或,XOR,NXOR用几个控制信号做选择。错误很多,至少有4个。其中包括漏写的begin..end,两个漏写的else, reset后应为 8’b0而不是1’b0, 等等。
题4,描述f的用途。其中A[7:0]为8-bit vector.
a) f=A[0]|A[1]|A[2]|A[3]| A[4]|A[5]|A[6]|A[7]
b) f=(A[0]&A[1]| A[2]&A[3]| A[4]&A[5]| A[6]&A[7]) | ((A[0]|A[1])& (A[2]|A[3])| (A[4]|A[5])& (A[6]|A[7])) | ((A[0]|A[1]|A[2]|A[3]) & (A[4]|A[5]|A[6]|A[7]))
第一个大家都知道,A中是否有1。第二个看起来很复杂,如果要根据这个表达式去化简是不容易的。需要仔细观察表达式的对称性。功能是检测A中是否有2个以上的1,其工作原理类似于2分法。本题难度本来不低,但因为给了a)的提示,所以落得沦为一个简单的题目。答的时候最好把分析思路写上。
题5,输入一个文件 mail_list,包含 zhang [a href="mailto:aaa@a_com"]aaa@a_com[/a]) li [a href="mailto:bcd@sohu_com"]bcd@sohu_com[/a]) song [a href="mailto:cde@nvidia_com"]cde@nvidia_com[/a]) ... 找到该文件中邮件地址包含@nvidia_com的名字,按字母顺序排序,输出到新文件ndivia_list中。
PERL20行之内搞定,用C的话恐怕很痛苦。
题6,A,B两人,卖了x头羊,每头羊x元,然后分钱,他们定的方案是A,B轮流取10 dollar, A先去。请你建议更好的方案以保证fair。
这个题目比较搞,如果规则都定了何来fair or unfair。我想大概考查的是应变和分析能力。我的答案是分析了一下原方案的利弊,然后给用流程图给出了一个简单的新方案。
[ 本帖最后由 glisten 于 2008-10-11 14:16 编辑 ] |