这儿我谈谈我的一些经历和咱们共享,期望能对 IC 规划的新手有必定的协助,能使得他们能少走一些弯路!
在 IC 工业中有许多不同的范畴, IC 规划者的特征也会有些不同。在 A 范畴的一个好的IC 规划者或许会花很长时刻去了解 B 范畴的常识。在咱们职业生涯的开端,咱们应该问咱们自己一些问题,咱们想要成为怎样的 IC 规划者?消费?PC 外围?通讯?微处理器或 DSP?等等?IC 规划的根本规矩和流程是相同的,不管啥样的都会加到其间。 HDL, FPGA 和软件等是协助咱们了解芯片的最好东西。 IC 的魂灵是常识。因而咱们遇到的第一个应战将是取得规划的相关信息,然后了解信息并运用它。
可是有些信息不是免费的,咱们需求参加一些协会或从如 IEEE/ISO 等那些安排购买一些文档。规划者应该有很强的布景常识来很快的了解他们,乃至能改善存在的标准或。一个好的规划者应该应该有满意的规划技能和东西运用常识而且不断的堆集他们。
例如: 8 口以太网转化 HUB 控制器
需求常识: IEEE802.3 标准,包含 10MHZ 以太网和 100MHZ 快速以太网。
相关范畴:异步传输形式(ATM), IEEE802.11 无限局域网, IEEE1394, USB 等。HDL,核算机仿真和只能处理 ASIC 规划流程的数字部分。假如在 IC 中有任何模仿部分,他将依托模仿规划者或从别的的厂家购买。乃至一些纯数字部分也能从别的一些厂家购买以加快上市时刻。那些不是被咱们规划的部分称为 IP,包含 HDL 代码,网表,硬核。关于咱们规划的技能取决于硬核。一些 IP 是十分贵的,如在 USB2.0 中的 PHY。一些小的公司没有满意的人力和软件资源来完结有些作业,乃至他们不能在缺货期预订满意的晶原,因而触及服务公司替代了他们的作业。但并不是每个 IP 都满意咱们的需求,有时咱们需求在购买后作一些批改。咱们要在规划前决议所要用到的 IPs。
在规划开端,规划者有必要了解一切相关的标准、标准和算法。可是有许多办法来运用这些标准和算法。最好的结构是快速和最小芯片尺寸的结合。不幸的是,快速的需求常常和最小芯片尺寸的需求是敌对的。因而,在 HDL 编码作业前规划一个最优的结构也是一个重要的问题。
例如: 1:除法器
除数被固定。最快的办法是查表,可是这个办法需求大的内存。咱们可以可以从被除数中不断的减去除数直到新的被除数比除数小。它会花更多的时刻但用最少的硬件。还有许多的办法来构建除法器,每种办法都有他自己的长处和缺陷。
2:图画处理的动态评估器
早年一个图片中发现最类似的 8×8 模块,在整个电影编排中。最根本的有全查找和三步查找的办法。许多的论文现已讨论过优化硬件杂乱度和速度的结构,这儿我不再祥解说。一个好的规划者应该要被实践经历培训和不断的。咱们要在每个规划作业中十分当心和耐性。由于一个 NRE 将会耗费许多的金钱和数周的时刻,假如他不当心犯错,规划者将会对金钱和方案失利担任。经历和当心或许是来完结一个成功的规划项目最好的办法。以下条款是一些对一个稳步的和成功的规划的主张: (或许有些朋友也指出了其间的部分,我这儿只作扼要阐明,或许稍有不同)
命名风格:
1 不要用关键字做信号名;
2 不要在顶用 VERILOG 关键字做信号名;
3 命名信号用意义;
4 命名 I/O 口用尽量短的姓名;
5 不要把信号用高和低的状况混合命名;
6 信号的第一个字母有必要是 A-Z 是一个规矩;
7 使模块名、实例名和文件名相同;
编码风格:记住,一个好的代码是其他人可以很简略阅览和了解的。
1 尽或许多的添加阐明句子;
2 在一个规划中固定编码格局和共同一切的模块,根从项目领导者界说的格局;
3 把悉数规划分红合适数量的不同的模块或实体;
4 在一个 always/process 中的一切信号有必要相关;
5 不要用关键字或一些经常被用来安全归纳的语法;
6 不要用杂乱逻辑;
7 在一个 if 句子中的一切条件有必要相关;
规划风格
1 强烈主张用同步规划;
2 在规划时总是记住时序问题;
3 在一个规划开端就要考虑到地电平或高电平复位、同步或异步复位、上升沿或下降沿触发等问题,在一切模块中都要恪守它;
4 在不同的状况下用 if 和 case;
5 在锁存一个信号或总线时要当心;
6 坚信一切寄存器的输出信号可以被复位/置位;
7 永久不要再写入之前读取任何内部存储器(如 SRAM)
8 从一个时钟到另一个不同的时钟传输数据时用数据缓冲,他作业像一个双时钟 FIFO;
9 在 VHDL 中二维数组可以运用,它是十分有用的。在 VERILOG 中他只是可以运用在测验模块中,不能被归纳;
10 恪守 register-in register-out 规矩;
11 像 synopsys 的 DC 的归纳东西是十分安稳的,任何 bugs 都不会从归纳东西中发生;
12 确保 FPGA 版别与 ASIC 的版别尽或许的类似,特别是 SRAM 类型,若版别共同是最理想的;
13 在嵌入式存储器中运用 BIST;
14 虚单元和一些批改电路是必需的;
15 一些简略的测验电路也是需求的,经常在一个芯片中有许多测验模块;
16 除非低功耗不要用门控时钟;
17 不要依托脚原本确保规划。可是在脚本中的一些好的束缚可以起到更好的功能(例如前向加法器);
18 假如时刻富余,经过时钟做一个多锁存器来替代用 MUX;
19 不要用内部 tri-state, ASIC 需求总线坚持器来处理内部 tri-state;
20 在 top level 中作 pad insertion;
21 挑选 pad 时要当心(如上拉才能,施密特触发器, 5 伏耐压等);
22 当心由时钟误差引起的问题;
23 不要试着发生半周期信号;
24 假如有许多函数要批改,请一个一个地作,批改一个函数查看一个函数;
25 在一个核算等式中摆放每个信号的位数是一个好习惯,即便归纳东西能做;
26 不要运用 HDL 供给的除法器;
27 减少不必要的时钟。它会在规划和布局中引起许多费事,大多数 FPGA 有 1-4 个专门的时钟通道;
以上是咱们在规划中最好恪守的关键,它可以使你的规划更好。