首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA设计和模块化的建议——读书笔记(一) 

FPGA设计和模块化的建议——读书笔记(一) 

“不务正业”快一个多月了,是该看看专业方面的书籍了。
最近看的是《A Practical Guide for Designing, Synthesizing, and Simulating ASICs and FPGAs using VHDL or Verilog 》,作者是Douglas J. Smith
有人这样评价这本书:最为经典的讲述VHDL以及Verilog 设计的宝典书籍!设计范例涵盖很多设计中经常用的设计模块,堪称IC设计的 “词典”, 书中的很多范例都可以作为你设计应用中的IP进行应用!
从书的第四章开始,也是本书的重点,下面是一些重要的读书笔记,其实应该是全段的翻译,尽管翻译的水平有限,还是记录下来了,以备复习
注:如果读者看得糊里糊涂的,在底下给出了电子书的链接
设计和模块化的建议
设计和处理的建议
*采用自顶向下设计和模块化的方法,以及通过等级模块来采用自底向上的优化策略
*在写hdl模块之前,尽可能清晰的明确设计的需求,包括输入、输出、相关的时序和功能等(easy to design the "wrong thing right")
*尽可能的使用全局的时钟和reset信号
*在设计整个系统的过程中,尽早的考虑可测试性的事宜;否则综合意味着快速有效的生成了一大堆无法测试的逻辑。从技术上考虑有:boundary scan, internal scan(full or partial)和BIST,例如LFSRs。Full scan 在area和timing方面太昂贵,所以一般采用parital scan和BIST的混合
降低功耗的建议
*使用动态功耗管理
   a)开关电路(switch circuits)进入低频率待机模式(low frequency standby mode),当需要使用的时候,使用中断唤醒
   b)在三态总线上使用弱驱动器(weak drivers)
以测试为目的的设计(design-for-test)和测试
*避免异步反馈
*消除任何竞争冒险条件
*拆分大计数器(large counters)
*使用空闲的管脚以辅助控制和观察内部电路节点
*使电路容易初始化到已知状态
*在同一个时钟域下对合适的寄存器单元进行用scan testing
*在没有使用scan techiques的区域,运行故障模拟。事例包括接到microprocessor的门控时钟或者异步接口
*在仿真的时候使用向量比较技术(test vector comparison techniques),以确保测试模块插入后不改变原有设计的功能
*将扫描链分成长度类似的若干小段,使用空闲的管脚用来增加扫描链的个数和减少他们的长度。这会减少测试向量的个数和测试的周期。芯片厂商通常他们的测试成本取决于时钟周期的数量。 最小化扫描链的长度可以帮助削减成本。如果没有多余的管脚可以使用,可以考虑使用一个管脚置芯片于测试模式中,然后用于输入输出功能的管脚同时可以作为测试管脚,实现功能复用
测试工具建议
*只在需要验证功能行为时才使用测试工具。昂贵的测试工具没有必要在等级较低的层次使用
*充分挖掘hdl的结构优势(full richness of constructs in the HDL)
返回列表