Presentation is loading. Please wait.

Presentation is loading. Please wait.

水煮FPGA 传统FPGA设计流程简介.

Similar presentations


Presentation on theme: "水煮FPGA 传统FPGA设计流程简介."— Presentation transcript:

1 水煮FPGA 传统FPGA设计流程简介

2 FPGA? Field Programmable Gate Array 可编程逻辑器件 适合高密度,复杂时序逻辑 供应商:
Xilinx、Altera、Actel、Lattice、Quicklogic

3 FPGA结构 可编程IO 可编程逻辑单元 LUT(查找表) 寄存器 布线 全局线(低Skew、强驱动) 普通互连(长、短) 专用进位链
内嵌功能单元 PLL/DLL RAM DSP SERDES ……

4 DCM IOB XC3S50 overview Switch box CLB RAM&DSP Lan (global、short、long)

5 LUT Register 进位链 XC3S50 CLB overview

6 FPGA设计流程 电路设计 功能仿真 综合 综合后仿真 布局布线 布局布线后仿真 板级仿真(optional) 加载配置,在线调试

7 FPGA设计平台 ? Xilinx ISE — 界面简洁的工具接口 Altera Quarters II — 高集成度的工具箱
MAXPLUS II ?

8 模型设计 数字系统模型设计层次 ESL Behavior level RTL Gate level 设计输入
SystemC, SystemVerilog HDL 原理图 — simple 网表 – IP core TOP DOWN

9 高性能电路HDL描述 1、提升频率 算法:并行、乒乓、流水线……合理按排数据流 结构:源逻辑复制,减少扇出…… 2、减少资源、功耗 资源共享,时钟使能

10 功能仿真 Tools Modelsim VCS NCsim …… Working in Test Bench 建议在设计中估算并加入延时信息
测试激励 测试目标 测试监控 Test Bench

11 综 合 将模型映射到现有资源 Tools Synplify Pro – for most FPGA
XST – for xilinx FPGA Quartus – for Altera FPGA ……

12 可综合HDL设计 HDL是描述性语言,非设计语言,原则上先有电路后有HDL。 可综合的特点:可以直观反应到一个或几个具体的简单电路上 if()…else…  mux2 posedge clk) begin …  DFFs end for()…  ? a÷b  ? 传说中可综合的RTL不一定可综合 对应的映射区间限制在FPGA现有的资源内

13 HDL模型优化 — 我们的目标是,没有不确定性 — 不要让综合器替你做决定 用HDL设计描述你的设计 尽量使用厂商所提供的库 使用综合约束

14 A+B+C+D or Example

15 综合约束 模型优化(speed、area) 模型映射自由度 设置方式: 1、菜单选择 – for global
2、HDL内嵌入 – for special 3、约束文件编辑

16 优化目标 优化力度 FSM选项 资源识别 Example

17 综合结果观察 1、综合报告 资源利用率 最大设计速率 – 注意你的Warning 2、RTL View/Technology View 跟踪、分析关键模块、路径

18 Synplify Pro RTL overview
Technology view Critical path Net/port/inst

19 综合后仿真 目的: 验证综合后的实际功能与模型所描述功能的一致性 添加器件延时信息,初步验证时序(optional)

20 实 现 流程 布局 单元放置 物理综合(optional) 布线 单元连接 单元重放置 组合逻辑优化(复制,交换)
时序逻辑优化(复制,平衡) 布局后仿真

21 约束 附加约束 唯一人为干预实现过程的接口 决定实现效果好坏的主要因素
约束不会提升设计的最佳性能,同综合一样,它只增加实现过程的可控性,结果的唯一性 PIN 分配管脚、电压标准 驱动能力、速度 输入延迟 端接阻抗 Timing …… Area 附加约束

22 Area Constraint 绝对位置  触发器  LUT  RAM/DSP ……(primitive) 绝对区域  模块
 group of primitive 相对位置 …… (primitive) 相对区域 指定布线  net

23 Floorplanner overview
区域约束 模块列表 Map结果

24 !区域约束主要目的是关联耦合逻辑,减少后续布线压力;其次是加大资源利用率。
!靠的近信号延迟不一定就小,信号线上延迟主要来自线与线之间的转接(如LUT,switch-box)。由于FPGA内部连接的结构是横纵两向的,斜向的连接延迟会大于横纵方向上最大跨度连接。所以,在做位置约束时尽量避免斜向;而区域约束要松,如果没有资源上的顾虑,约束面积建议为所需的3倍以上。 !对时序的改善贡献很小,紧的约束甚至有恶化时序的可能。

25 Timing Constraint 端口输入输出约束  IO端口 时钟约束 单时钟域约束  同步器件 多时钟域约束  关联时钟组 Skew约束  同源时钟 线延迟约束  net TIG  all 设计的最高速度已经由设计的构造和器件的性能决定,时序约束只提供了设计需求,明确了设计内部各单元哪些需要被优待,哪些可以随意。所以,没必要在时序上加上很紧的约束,跟自己的电脑过不去,还浪费青春,浪费电。适可而止才是正道。

26 布局布线后验证&仿真 时序分析 动态时序分析 需要测试向量 效率低 覆盖率不能保证 静态时序分析 不需要外部测试激励 效率高 全覆盖
精确度不高

27 STA时序模型

28 TPmin = Tcko +Tdelay +Tsetup -Tskew Tcko + Tdelay - Tskew ≥Thold Slack = Tp - Tpmin

29 Xilinx STA tool overview
!尽量保证实现结果留有一定的余量

30 后仿 仿真模型 时序标注 .sdf文件 提供三种延时值,最大、典型、最小 打印信息 $setup, $hold, $recovery
# ** Error:/path/to/xilinx/verilog/src/simprims/X_RAMD16.v(96): $setup(negedge WE:29138 ps, posedge CLK:29151 ps, 373 ps); # Time:29151 ps Iteration:0 Instance: /test_bench/u1/\U1/X_RAMD16\ 要求时间 相关信号 出错模型 错误类型 信号最后改变时间 错误报告事件 出错位置

31 END…


Download ppt "水煮FPGA 传统FPGA设计流程简介."

Similar presentations


Ads by Google