魔天记柳鸣失忆是哪章:IC设计学习技巧(若干篇)

来源:百度文库 编辑:中财网 时间:2024/05/08 15:09:54

新手学习技巧!ZZ 

 1. 不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人

     的提示,你就知道自己和别人思路的差异。 

 2. 初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分

     功能熟悉而已,不系统还是不够的。 

 3. 看帮助。不要因为很难,而自己又是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文

     字有时候很难看懂,或不够直观。 

 4. 不要被一些专用词汇所迷惑;最根本的是先了解最基础知识。 

 5. 不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不

     会举一反三你就永远学不会。 

 6. 知道一点东西,并不能说明你会用,会用是需要实践经验和时间积累的。 

 7. 入门并不难,难的是长期坚持实践和不遗余力的学习和实践。 

 8. 看再多的书是学不会用的,要多实践,多动手。 

 9. 把时髦的技术挂在嘴边,还不如把基本的技术记在心里。 

 10.在任何时刻都不要认为自己手中的书已经足够了。 

 11.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。 

 12.别指望看第一遍书就能记住和掌握什么??请看第二遍、第三遍。 

 13.请把书上的例子亲手去实践一下。 

 14.把在书中看到的有意义的例子进行扩充;并将其切实的运用到自己的设计中。 

 15.不要漏掉书中任何一个练习和实例??请全部做完并记录下思路。 

 16.别心急,应用确实不容易,水平是在不断的实践中完善和发展的。 

 17.每学到一个知识点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理

    解了。 

 18.记录下在和别人交流时发现的自己忽视或不理解的知识点。 

 19.保存好你做过的所有的源文件----那是你最好的积累之一。 

 20.对于网络,还是希望大家能多利用一下。很多问题不是非要到论坛来问的,首先你要学会自己找答

    案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待

    别人给你希望,看的出你平时一定也很懒! 

 21.到一个论坛,你要学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过

    了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。 

 22.虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你总期望有高手

    总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太

    远了,连基本操作都需要别人给解答,谁还跟你讨论呢。 

   浮躁的人容易问:我到底该学什么;----别问,学就对了; 

   浮躁的人容易问:有钱途吗;----建议你去抢银行算了; 

   浮躁的人容易说:我要中文版!我英文不行!----不行?学呀! 

   浮躁的人分两种:只观望而不学的人;只学而不坚持的人; 

   浮躁的人永远不是(也成不了)一个高手。    

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

欢迎光临微电子设计研究所论坛:

http://www.antecedesign.com.cn/bbs 

---------------------------------------------------------------------------------------------------------------------------

给你转载一篇文章把 

这是网友的原话,我只是转载而已:P

发帖时间:2004-11-29 17:12:23   

深深感到中国半导体工艺学习资料的缺乏,也看过点国人写的东西,实在也是不敢恭维,下面就谈谈我个人对这方面的一点感受。 

学习工艺知识就像武侠小说里练武艺,一来需要高人指点可以省很多时间,二来要找到秘籍,呵呵,可惜这两点都是中国缺少的。还有就是亲身实践。我这个人是比较幸运,大学毕业后就到华虹,第一年参加了很多设备的谈判,从侧面了解了很多工艺知识和当时发展的趋势。因为设备厂商总是想把设备卖给你,所以对他们在其他大公司得到的信息总是愿意和你共享。同时公司发了两本WolfTauberSilicon Processing For The VLSI Era,下面还会谈到。有足足一年的时间可以消化这些准备知识。然后去日本NEC的八寸线实习了半年,完全领会了大规模生产的精髓,因为工艺人员有两项任务,一提高成品率,二是降低成本,保证生产稳定。回国参加建立大陆第一条八寸线,然后负责湿法和CMP的工艺。因为湿法和CMP的步骤占整个流程的1/4,加上还要负责显微镜检查制作不良见本,所以对整个工艺流程也烂熟于胸。在美国在唯一有微电子系的学校学习,把整个知识系统又有条理地整理了一次。而且老板是光刻方面的专家,特别努力地学习了一次,现在觉得清晰的很。又把本科的器件知识补了一次,可以从器件的高度层次理解工艺的发展和未来的要求。实习在一个做GaAs Substrate的公司做,虽然没有器件,但对以后的新材料发展也算有点了解了。现在在世界一流的CMP设备公司做,虽然还做工艺,但设备的了解突飞猛进,对自家公司设备的了解和动手解决问题的能力不比一般Fab的设备人员。要知道很强的设备知识对工艺是非常关键的。同时在IBM12寸厂里服务,因为有服务合同,所以基本上所有工艺问题的解决我都会参与。IBM的技术是世界第一的,即使Intel也望尘莫及,CMP就是IBM80年代发明的。我有机会和IBM发展CMP的几个工程师交流,向他们学习,的确是受益匪浅。 

呵呵,不自吹了。说实际的了 

1。几本好书: 

Wolf and Tauber, Silicon Processing For VLSI Era, Vol 1 and 2 

这个行业的圣经(我有旧版的第12卷),新版前几年刚出,加了很多新东西,我花了400美金买了第一卷,感觉是样样都有但缺乏深度,而且编辑粗糙。第1卷是讲工艺,第2卷是讲器件,第3卷没看到,第4卷是Advanced CMOS Processing 280美金)专门讨论最新的器件和工艺发展。 

Michael Quirk and Julian Serda, Semiconductor Manufacturing Technology 

非常好的入门书。我看了以后才发现以前前辈向我解释的东西有很多错误。 

Bruce Smith, Microlithography 

我老板主写的书,是很多人合写的,的确在光刻理论方面的著作无出其右。因为是把合写的章节合起来对整体的统一性有一定的削弱。但WolfTauber的新版的光刻章节大多就是转载这本书的内容,可以见其权威。 

Stephen A. CampbellThe Science and Technology of Microelectronic Fabrication, Oxford, 1996. 

呵呵他是我在University of Minnesota 的未来博士导师,虽然我估计多半最近不会辞职去读书,还是把他的书列上了。这本书是本科用的,我没学过,但公式很多,可读性稍次。 

2。工艺的种类 

这是最一般的分法,但不同公司会把几个并称一个组,如Thin Film什么的。 

Lithography, Dry Etching, Wet Etching and Cleaning, CVD(AP, PE, LP,SA), PVD(sputter), CMP, Furnace (Diffusion,sometime including LPCVD), Ion Implantation, Inline Monitor (KLA). 

Wafer Thinning(Back grinding)是比较小的,而且是纯机械。现在也有SEZ发展的化学方法。此外Plating(主要是镀铜)是随着Cu 联线发展起来的新工艺。 

一般做一个工艺需要2年才能说是精通,做完所有的工艺是几乎不可能的。我最精通WetCMP,其他只能说是了解了。 

3。一些杂志 

Solid State是最权威的, Semiconductor International 也是不错。杂志上发表的都是最新的发展,要普及知识只有看书了。还有Semicon,可以去拿点资料。中国上海北京好像每年轮换,在3月左右,但中国的Semicon实在是不能和Semicon JapanSemicon West(美西)比,连设备展示都很少。 

4。一些必要的工具 

要学DOEDesign of Experiment),使用Jump软件。GRE的分析对建立严密的逻辑思维很有帮助。做工艺要细心,耐心,而且要敏感,这些是可以培养的。要知道,任何一个小错误都会造成成品率下滑,损失几千万,换句话说,早一天发现问题,就可以挽回很多钱哦。 

呵呵,看个人的修行了。一般这个行业内个人之间技术的交流是非常少的,所以要珍惜每一次机会。 

 

--------------------------------------------------------------------------------------------------------------------------

转贴:设计经验,看看 

时序是设计出来的
   我的boss有在华为及峻龙工作的背景,自然就给我们讲了一些华为及altera做逻辑
的一些东西,而我们的项目规范,也基本上是按华为的那一套去做。在工作这几个月中
,给我感触最深的是华为的那句话:时序是设计出来的,不是仿出来的,更不是?出来
的。

   在我们公司,每一个项目都有很严格的评审,只有评审通过了,才能做下一步的工
作。以做逻辑为例,并不是一上来就开始写代码,而是要先写总体设计方案和逻辑详细
设计方案,要等这些方案评审通过,认为可行了,才能进行编码,一般来说这部分工作
所占的时间要远大于编码的时间。

   总体方案主要是涉及模块划分,一级模块和二级模块的接口信号和时序(我们要求
把接口信号的时序波形描述出来)以及将来如何测试设计。在这一级方案中,要保证在
今后的设计中时序要收敛到一级模块(最后是在二级模块中)。什么意思呢?我们在做
详细设计的时候,对于一些信号的时序肯定会做一些调整的,但是这种时序的调整最多
只能波及到本一级模块,而不能影响到整个设计。记得以前在学校做设计的时候,由于
不懂得设计时序,经常因为有一处信号的时序不满足,结果不得不将其它模块信号的时
序也改一下,搞得人很郁闷。

   在逻辑详细设计方案这一级的时候,我们已经将各级模块的接口时序都设计出来了
,各级模块内部是怎么实现的也基本上确定下来了。

   由于做到这一点,在编码的时候自然就很快了,最重要的是这样做后可以让设计会
一直处于可控的状态,不会因为某一处的错误引起整个设计从头进行。
做逻辑的难点在于系统结构设计和仿真验证
   刚去公司的时候BOSS就和我讲,做逻辑的难点不在于RTL级代码的设计,而在于系统
结构设计和仿真验证方面。目前国内对可综合的设计强调的比较多,而对系统结构设计
和仿真验证方面似乎还没有什么资料,这或许也从一个侧面反映了国内目前的设计水平
还比较低下吧。

   以前在学校的时候,总是觉得将RTL级代码做好就行了,仿真验证只是形式而已,所
以对HDL的行为描述方面的语法不屑一顾,对testbench也一直不愿意去学--因为觉得画
波形图方便;对于系统结构设计更是一点都不懂了。

   到了公司接触了些东西才发现完全不是这样。

   其实在国外,花在仿真验证上的时间和人力大概是花在RTL级代码上的两倍,现在仿
真验证才是百万门级芯片设计的关键路径。仿真验证的难点主要在于怎么建模才能完全
和准确地去验证设计的正确性(主要是提高代码覆盖),在这过程中,验证速度也是很
重要的。

   验证说白了也就是怎么产生足够覆盖率的激励源,然后怎么去检测错误。我个人认
为,在仿真验证中,最基本就是要做到验证的自动化。这也是为什么我们要写testbenc
h的原因。在我现在的一个设计中,每次跑仿真都要一个小时左右(这其实算小设计)。
由于画波形图无法做到验证自动化,如果用通过画波形图来仿真的话,一是画波形会画
死(特别是对于算法复杂的、输入呈统计分布的设计),二是看波形图要看死,三是检
错率几乎为零。

   那么怎么做到自动化呢?我个人的水平还很有限,只能简单地谈下BFMbus funct
ion model,总线功能模型)。

   以做一个MACcore为例(背板是PCI总线),那么我们需要一个MAC_BFMPCI_BFM
PCI_BMPCI behavior model)。MAC_BFM的主要功能是产生以太网帧(激励源),随
机的长度和帧头,内容也是随机的,在发送的同时也将其复制一份到PCI_BM中;PCI_BFM
的功能则是仿PCI总线的行为,比如被测收到了一个正确帧后会向PCI总线发送一个
请求,PCI_BFM则会去响应它,并将数据收进来;PCI_BM的主要功能是将MAC_BFM发送出
来的东西与PCI_BFM接收到的东西做比较,由于它具有了MAC_BFM的发送信息和PCI_BFM
接收信息,只要设计合理,它总是可以自动地、完全地去测试被测是否工作正常,
从而实现自动检测。

   华为在仿真验证方面估计在国内来说是做的比较好的,他们已建立起了比较好的验
证平台,大部分与通信有关的BFM都做好了,听我朋友说,现在他们只需要将被测放
在测试平台中,并配置好参数,就可以自动地检测被测功能的正确与否。

   在功能仿真做完后,由于我们做在是FPGA的设计,在设计时已经基本保证RTL级代码
在综合结果和功能仿真结果的一致性,只要综合布局布线后的静态时序报告没有违反时
序约束的警告,就可以下到板子上去调试了。事实上,在华为中兴,他们做FPGA的设计
时也是不做时序仿真的,因为做时序仿真很花时间,且效果也不见得比看静态时序分析
报告好。

   当然了,如果是ASIC的设计话,它们的仿真验证的工作量要大一些,在涉及到多时
钟域的设计时,一般还是做后仿的。不过在做后仿之前,也一般会先用形式验证工具和
通过静态时序分序报告去查看有没有违反设计要求的地方,这样做了之后,后仿的工作
量可以小很多。

   HDL语言方面,国内语言很多人都在争论VHDLverilog哪个好,其实我个人认为
这并没有多大的意义,外面的大公司基本上都是用verilog在做RTL级的代码,所以还是
建议大家尽量学verilog。在仿真方面,由于VHDL在行为级建模方面弱于verilog,用VH
DL做仿真模型的很少,当然也不是说verilog就好,其实verilog在复杂的行为级建模方
面的能力也是有限的,比如目前它还不支持数组。在一些复杂的算法设计中,需要高级
语言做抽象才能描述出行为级模型。在国外,仿真建模很多都是用System CE语言,用
verilog的都算是很落后的了,国内华为的验证平台好像是用System C写。

   在系统结构设计方面,由于我做的设计还不够大,还谈不上什么经验,只是觉得必
须要具备一些计算机系统结构的知识才行。划分的首要依据是功能,之后是选择合适的
总线结构、存储结构和处理器架构,通过系统结构划分要使各部分功能模块清晰,易于
实现。这一部分我想过段时间有一点体会了再和大家分享,就先不误导大家了。
RE: 转贴:设计经验,看看 

规范很重要

   工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件
还是硬件),不按照规范走几乎是不可实现的。逻辑设计也是这样:如果不按规范做的
话,过一个月后调试时发现有错,回头再看自己写的代码,估计很多信号功能都忘了,
更不要说检错了;如果一个项目做了一半一个人走了,接班的估计得从头开始设计;如
果需要在原来的版本基础上增加新功能,很可能也得从头来过,很难做到设计的可重用
性。

   在逻辑方面,我觉得比较重要的规范有这些:

   1.设计必须文档化。要将设计思路,详细实现等写入文档,然后经过严格评审通过
后才能进行下一步的工作。这样做乍看起来很花时间,但是从整个项目过程来看,绝对
要比一上来就写代码要节约时间,且这种做法可以使项目处于可控、可实现的状态。

   2.代码规范。
   a.设计要参数化。比如一开始的设计时钟周期是30ns,复位周期是5个时钟周期,我
们可以这么写:
         parameter  CLK_PERIOD = 30;
         parameter  RST_MUL_TIME = 5;
         parameter  RST_TIME = RST_MUL_TIME * CLK_PERIOD;
         ...
         rst_n = 1"b0;
         # RST_TIME rst_n = 1"b1;
         ...
         # CLK_PERIOD/2 clk <= ~clk;
    如果在另一个设计中的时钟是40ns,复位周期不变,我们只需对CLK_PERIOD进行重
新例化就行了,从而使得代码更加易于重用。

   b.信号命名要规范化。
   1) 信号名一律小写,参数用大写。
   2) 对于低电平有效的信号结尾要用_n标记,如rst_n
   3) 端口信号排列要统一,一个信号只占一行,最好按输入输出及从哪个模块来到哪
个模块去的关系排列,这样在后期仿真验证找错时后  方便很多。如:
      module a(
               //input
               clk,
               rst_n,   //globle signal
               wren,
               rden,
               avalon_din,  //related to avalon bus
               sdi,         //related to serial port input
               //output
               data_ready,
               avalon_dout, //related to avalon bus
               ...
              );
      4) 一个模块尽量只用一个时钟,这里的一个模块是指一个module或者是一个en
tity。在多时钟域的设计中涉及到跨时钟域的设计中最好有专门一个模块做时钟域的隔
离。这样做可以让综合器综合出更优的结果。
      5) 尽量在底层模块上做逻辑,在高层尽量做例化,顶层模块只能做例化,禁止
出现任何胶连逻辑(glue logic),哪怕仅仅是对某个信号取反。理由同上。
      6) FPGA的设计上禁止用纯组合逻辑产生latch,带D触发器的latch的是允许的
,比如配置寄存器就是这种类型。
      7) 一般来说,进入FPGA的信号必须先同步,以提高系统工作频率(板级)。
       所有模块的输出都要寄存器化,以提高工作频率,这对设计做到时序收敛也
是极有好处的。
      9) 除非是低功耗设计,不然不要用门控时钟--这会增加设计的不稳定性,在要
用到门控时钟的地方,也要将门控信号用时钟的下降沿 打一拍再输出与时钟相与。
               clk_gate_en      --------                    ----
              -----------------|D     Q |------------------|     \ gate_clk
_out
                               |        |         ---------|      )--------
-
                        ------o|>       |         |        |     /
                clk    |       --------           |         ----
              ------------------------------------
      10)禁止用计数器分频后的信号做其它模块的时钟,而要用改成时钟使能的方式
,否则这种时钟满天飞的方式对设计的可靠性极为不利,也大大增加了静态时序分析的
复杂性。如FPGA的输入时钟是25M的,现在系统内部要通过RS232PC通信,要以rs232_
1xclk的速率发送数据。
        不要这样做:
        always (posedge rs232_1xclk or negedge rst_n)
        begin
            ...
        end
        而要这样做:
        always (posedge clk_25m or negedge rst_n)
        begin
            ...
            else if ( rs232_1xclk == 1"b1 )
            ...
        end
      11)状态机要写成3段式的(这是最标准的写法),即
         ...
         always @(posedge clk or negedge rst_n)
         ...
             current_state <= next_state;
         ...
         always @ (current_state ...)
         ...
         case(current_state)
               ...
               s1:
                  if ...
                    next_state = s2;
               ...
         ...
         always @(posedge clk or negedge rst_n)
         ...
             else
                a <= 1"b0;
                c <= 1"b0;
                c <= 1"b0;            //赋默认值
                 case(current_state)
                     s1:
                         a <= 1"b0;   //由于上面赋了默认值,这里就不用再对b
c赋值了
                     s2:
                         b <= 1"b1;
                     s3:
                         c <= 1"b1;
                     default:
                     ...
        ...

      3.ALTERA参考设计准则
       1) Ensure Clock, Preset, and Clear configurations are free of glitch
es.
       2) Never use Clocks consisting of more than one level of combinatori
al logic.
       3) Carefully calculate setup times and hold times for multi-Clock sy
stems.
       4) Synchronize signals between flipflops in multi-Clock systems when
the setup and hold time requirements cannot be met.
       5) Ensure that Preset and Clear signals do not contain race conditio
ns.
       6) Ensure that no other internal race conditions exist.
       7) Register all glitch-sensitive outputs.
        Synchronize all asynchronous inputs.
       9) Never rely on delay chains for pin-to-pin or internal delays.
       10)Do not rely on Power-On Reset. Use a master Reset pin to clear al
l flipflops.
       11)Remove any stuck states from state machines or synchronous logic.

    其它方面的规范一时没有想到,想到了再写,也欢迎大家补充。

-----------------------------------------------------------------------------------------------------

(转载:网友rickyice的原创IC设计经验) 

原文:
谈谈我的建议,希望对新手帮助(原创经验) 
这里我谈谈我的一些经验和大家分享,希望能对IC设计的新手有一定的帮助,能使得他们能少走一些弯路,欢迎讨论!Rickyice
我相信“如果有梦想,就会实现!”
IC工业中有许多不同的领域,IC设计者的特征也会有些不同。在A领域的一个好的IC设计者也许会花很长时间去熟悉B领域的知识。在我们职业生涯的开始,我们应该问我们自己一些问题,我们想要成为怎样的IC设计者?消费电子?PC外围?通信?微处理器或DSP?等等?
IC设计的基本规则和流程是一样的,无论啥样的产品都会加到其中。HDL,FPGAEDA软件等是帮助我们理解芯片的最好工具。IC的灵魂是知识。因此我们遇到的第一个挑战将是获得设计的相关信息,然后理解信息并应用它。
但是有些信息不是免费的,我们需要加入一些协会或从如IEEE/ISO等那些组织购买一些文档。设计者应该有很强的背景知识来很快的理解他们,甚至能改进存在的标准或算法。一个好的设计者应该应该有足够的设计技芎凸ぞ哂τ锚识并且不断的积累他们?
例如:8口以太网转换HUB控制器
需要知识:IEEE802.3标准,包括10MHZ以太网和100MHZ快速以太网
相关领域:异步传输模式(ATM),IEEE802.11无限局域网,IEEE1394,USB
HDL,计算机仿真和FPGA验证只能解决ASIC设计流程的数字部分。如果在IC中有任何模拟部分,他将依赖模拟设计者或从另外的厂家购买。甚至一些纯数字部分也能从另外一些厂家购买以加速上市时间。那些不是被我们设计的部分称为IP,包括HDL代码,网表,硬核。对于我们设计的技术取决于硬核。一些IP是非常贵的,如在USB2.0中的 PHY。一些小的公司没有足够的人力和软件资源来完成有些工作,甚至他们不能在缺货期预定足够的晶原,因此涉及服务公司取代了他们的工作。但并不是每个IP都满足我们的需要,有时我们需要在购买后作一些修改。我们要在设计前决定所要用到的IPs
在设计开始,设计者必须理解所有相关的标准、规范和算法。但是有许多方法来应用这些规范和算法。最好的结构是快速和最小芯片尺寸的结合。不幸的是,快速的需求常常和最小芯片尺寸的需求是对立的。因此,在HDL编码工作前规划一个最优的结构也是一个重要的问题。
例如:1/除法器
除数被固定。最快的方法是查表,但是这个方法需要大的内存。我们可以可以从被除数中不断的减去除数直到新的被除数比除数小。它会花更多的时间但用最少的硬件。还有许多的方法来构建除法器,每种方法都有他自己的优点和缺点。
2/图像处理的动态评估器
从前一个图片中发现最相似的8×8模块,在整个电影剪辑中。最基本的有全搜索和三步搜索的方法。许多的论文已经讨论过优化硬件复杂度和速度的结构,这里我不再祥解释。
一个好的设计者应该要被实际经验培训和不断的学习。我们要在每个设计工作中非常小心和耐心。因为一个NRE将会消耗大量的金钱和数周的时间,如果他不小心犯错,设计者将会对金钱和计划失败负责。经验和小心也许是来完成一个成功的设计项目最好的方法。
以下条款是一些对一个稳步的和成功的设计的建议:(可能有些朋友也指出了其中的部分,我这里只作简要说明,可能稍有不同)
命名风格:
1不要用关键字做信号名
2不要在VHDL中用VERILOG关键字做信号名
3命名信号用含义
4命名I/O口用尽量短的名字
5不要把信号用高和低的情况混合命名
6信号的第一个字母必须是A-Z是一个规则
7使模块命、实例名和文件名相同
编码风格:记住,一个好的代码是其他人可以很容易阅读和理解的
1尽可能多的增加说明语句
2在一个设计中固定编码格式和统一所有的模块,根从项目领导者定义的格式。
3把全部设计分成适合数量的不同的模块或实体
4在一个always/process中的所有信号必须相关
5不要用关键字或一些经常被用来安全综合的语法
6不要用复杂逻辑
7在一个if语句中的所有条件必须相关
设计风格
1强烈建议用同步设计
2在设计时总是记住时序问题
3在一个设计开始就要考虑到地电平或高电平复位、同步或异步复位、上升沿或下降沿触发等问题,在所有模块中都要遵守它
4在不同的情况下用ifcase
5在锁存一个信号或总线时要小心
6确信所有的信号被复位
7永远不要再写入之前读取任何内部存储器(如SRAM
8从一个时钟到另一个不同的时钟传输数据时用数据缓冲,他工作像一个双时钟FIFO
9VHDL中二维数组可以使用,它是非常有用的。在VERILOG中他仅仅可以使用在测试模块中,不能被综合
10遵守register-in register-out规则
11synopsysDC的综合工具是非常稳定的,任何bugs都不会从综合工具中产生
12确保FPGA版本与ASIC的版本尽可能的相似,特别是SRAM类型,若版本一致是最理想的
13在嵌入式存储器中使用BIST
14虚单元和一些修正电路是必需的
15一些简单的测试电路也是需要的,经常在一个芯片中有许多测试模块
16除非低功耗不要用门控时钟
17不要依靠脚本来保证设计。但是在脚本中的一些好的约束能够起到更好的性能(例如前向加法器)
18如果时间充裕,通过时钟做一个多锁存器来取代用MUX
19不要用内部tri-state, ASIC需要总线保持器来处理内部tri-state
20top level中作pad insertion
21选择pad时要小心(如上拉能力,施密特触发器,5伏耐压等)
22小心由时钟偏差引起的问题
23不要试着产生半周期信号
24如果有很多函数要修正,请一个一个地作,修正一个函数检查一个函数
25在一个计算等式中排列每个信号的位数是一个好习惯,即使综合工具能做
26不要使用HDL提供的除法器
27削减不必要的时钟。它会在设计和布局中引起很多麻烦,大多数FPGA14个专门的时钟通道
以上是大家在设计中最好遵守的要点,它可以使你的设计更好。至于写测试模块的一些感想以后有机会在和大家分享,我真诚希望和大家交流互相学习进步! 

-----------------------------------------------------------------------------------------------------