对于学习IC设计的一点建议(转载 EDN CHINA)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
发现不少同学都非常关心如何编写代码,如何通过代码来实现某种模块或者功能,比如分频器,FIFO等等。这也是可以理解的,比较学校里面做项目有需要,出来找工作面试也需要这些知识。
但是其实,数字设计(前端)真正的技能并非在于编写代码的技能,许多国内外的设计公司都制订了严紧的代码风格,而代码是在系统设计+详细设计完成后才开始编写的。这里所谓的详细设计,主要是指画出详细的电路图,而代码是一种“语言”,用于描述你设计好的电路,而并非用于设计你的电路。越高手的人越能够在编写代码前画出细化到寄存器+组合逻辑的电路图,哪怕是非常大型的设计。不要以为一个高性能的CPU是用代码编写出来的。
当然,优秀的代码技巧是需要的,行为级代码的编写对于建立TESTBENCH也是很有帮助的。优秀的代码风格在于可读性和条理性,而并非在于抽象性。所以建议初学者要从画电路图开始,哪怕是一个简单的FIFO,培养好最基本的逻辑设计思维,这才是长远发展的根本。
要不工作2-3年之后,无论你是做设计或者测试,你的瓶颈都会很快到来,例如某些工程师发现,他的设计离不开代码,他必须一边编写,一边进行仿真来尝试,一边建立自己的设计思路,这样设计出来的电路是很不安全的,而且性能也是很差的,往往需要重复测试和修改多次才能勉强实现功能。这样的设计方法缺乏全局观念和稳妥性,个人认为,如果要做好IC设计,千万要避免这种设计方法才是,这也要从学校里面开始学起和练起了!
希望我的这些意见对大家有用。
系统设计(系统架构=>功能划分=>画出时序)
详细设计(画出详细的电路图=>RTL=>仿真)
这些的确在IC设计公司,IC设计流程明确要这样进行的. 当然在系统设计阶段, 如果某个以前未涉及的关键设计技术会涉及到系统架构的选择(如多位乘法器),可以在此阶段Coding并仿真综合此关键电路,看是否满足需求,然后确定系统架构.而从长远来看,这些关键技术以前都积累到IP复用库后,根据SPEC,直接选择相应合用的IP,也不会在系统设计Coding.
http://huaer448.blog.163.com/blog/static/117401382007016111112701/
用户1196145 2007-1-26 16:15
very good suggestion!