01
Lattice FPGA 与约束文件概述
了解Lattice FPGA家族(ECP5、CrossLink、MachXO3等),认识约束文件(.lpf)的作用与地位。
家族概览.lpf 地位
02
开发环境搭建
安装Lattice Diamond或Radiant软件,创建第一个空白工程,熟悉界面布局。
DiamondRadiant工程创建
03
认识 .lpf 文件
.lpf 文件的基本结构、语法规则、注释方式,以及它与 .sdc 文件的区别。
语法.sdc区别
04
引脚分配基础
在 .lpf 中使用 LOCATE 命令为顶层端口分配物理引脚号。
LOCATE引脚号
05
引脚电气特性设置
使用 IO_TYPE 命令配置引脚的电平标准(LVCMOS33、LVDS25等)与驱动强度。
IO_TYPELVCMOSLVDS
06
引脚分组与差分对
使用 LOCATE 和 IO_TYPE 配置差分信号对(如 LVDS、BLVDS),理解 P/N 引脚的对应关系。
差分对P/N
07
未使用引脚处理
使用 BLOCK 和 PULLMODE 命令处理未使用引脚,防止浮空导致功耗问题。
BLOCKPULLMODE
08
引脚复用功能配置
了解Lattice FPGA引脚的多功能特性,使用 CONFIG 命令配置专用功能引脚(如 PROGRAMN、DONE)。
CONFIGPROGRAMN
09
时钟约束基础
使用 FREQUENCY 命令约束主时钟频率,理解周期与频率的关系。
FREQUENCY主时钟
10
衍生时钟约束
使用 FREQUENCY 命令约束由 PLL 或分频产生的衍生时钟。
衍生时钟PLL
11
输入延迟约束
使用 INPUT_SETUP 和 INPUT_HOLD 命令约束输入信号相对于时钟的建立/保持时间。
INPUT_SETUPINPUT_HOLD
12
输出延迟约束
使用 OUTPUT_SETUP 和 OUTPUT_HOLD 命令约束输出信号相对于时钟的建立/保持时间。
OUTPUT_SETUPOUTPUT_HOLD
13
异步路径约束
使用 TIG (Timing Ignore) 命令忽略跨时钟域或异步复位等非关键路径。
TIG异步
14
多周期路径约束
使用 MULTICYCLE 命令约束跨多个时钟周期的路径,如慢速外设接口。
MULTICYCLE慢速外设
15
假路径约束
使用 FALSE_PATH 命令约束实际不存在的逻辑路径,减少综合与布局布线压力。
FALSE_PATH优化
16
时钟分组与跨时钟域约束
使用 CLOCK_GROUP 命令定义异步时钟组,配合 TIG 处理跨时钟域路径。
CLOCK_GROUP跨时钟域
17
物理约束:区域约束
使用 BLOCK 和 RESERVE 命令将特定逻辑约束到 FPGA 的特定区域,优化时序与布线。
BLOCKRESERVE区域
18
物理约束:逻辑位置约束
使用 RLOC 或 BEL 命令将寄存器或LUT精确绑定到特定逻辑单元。
RLOCBEL
19
物理约束:I/O 约束与压摆率控制
使用 SLEWRATE 命令控制输出信号的压摆率,减少 EMI。
SLEWRATEEMI
20
综合属性与约束
在 RTL 代码中使用综合属性(如 keep、syn_keep)配合 .lpf 实现精细控制。
keepsyn_keep
21
时序分析基础
使用 Lattice 的 Timing Analysis 工具解读时序报告,理解 Setup/Hold 违例。
Timing AnalysisSetup/Hold
22
时序收敛策略
通过调整约束、修改代码、增加流水线等方法修复时序违例。
收敛流水线
23
多电压域与电平转换
在 .lpf 中配置不同 Bank 的电压,使用 VCCIO 和 IO_TYPE 实现跨电压域通信。
VCCIO电压域
24
配置模式与引脚约束
约束 SPI、I2C、Slave SPI 等配置模式的专用引脚,确保 FPGA 正常启动。
配置模式SPI
25
调试接口约束
约束 JTAG 引脚(TCK、TMS、TDI、TDO)以及 ChipScope 类似调试核的引脚。
JTAG调试
26
约束文件管理
使用多个 .lpf 文件进行模块化约束管理,使用 include 命令实现复用。
模块化include
27
版本控制与团队协作
将 .lpf 文件纳入 Git 管理,编写约束文件修改日志,避免团队冲突。
Git协作
28
从原理图到约束
根据原理图符号与 PCB 布局,反推并编写正确的引脚约束。
原理图PCB
29
常见错误与调试
解析 Lattice 编译报错(如 Pin Mismatch、IO Bank Violation),快速定位问题。
Pin MismatchBank Violation
30
综合实战:UART 收发器项目
从 RTL 设计、引脚分配、时序约束到上板验证的全流程。
UART全流程