原文参考:
http://m.openpcba.com/web/contents/get?id=3388&tid=15&clicktime=1575946378&enterid=1575946378
芯片设计流程:
1.设计输入
设计输入方式
输入方式使用探讨
2.综合
编译
映射
3.布局布线
布局
布线
4.约束
综合约束
位置约束
时序约束
5.FPGA开发仿真
测试平台
RTL级仿真
静态仿真
时序仿真
6.静态时序分析
7.在线调试
8.配置及固化
FPGA配置过程
配置模式
模式选择
9.开发工具总结
一 设计输入方式:
1.IP(Intellectual Property)核
*未加密RTL级IP
*加密的RTL级IP
*未经布局布线的网表级IP
*布局布线后的网表级IP
2.原理图:直观,简洁
3.HDL:严密,易移植,方便仿真调试
VHDL,Verilog:仿真时间长
System Verilog,硬件C语言:系统级,行为级的补充
抽象层次:
*结构级抽象(开关级,逻辑门级)
*功能级(RTL)
*行为级
*系统级
二 综合:
得到设计输入后,都得把设计输入得到一个可以和FPGA硬件资源相匹配的一个描述(门级网表)
编译:
原理图、HDL、IP核等通过编译后生成门级网表;
门级网表与具体器件无关,所以具有平台移植性。
映射:
与硬件平台结合。映射与器件有关,不同映射生成性能不一样的电路。
三 布局布线
**布局:**根据网表里的元素结构特点,将不同结构配置到FPGA具体SLICE位置上。
**布线:**实现线路最优的slice连接,且整体性能好。
四 约束
对操作制定的规则,开发环境可以设置。
位置约束: 布局策略,例如:I/O约束
时序约束: 寄存器反应时间,信号传递的延时。例如周期约束,输入偏移约束和输出偏移约束
综合约束: 添加综合约束可以实现速度和消耗面积间的平衡
五 FPGA开发仿真
*RTL级仿真
- 静态仿真
- 时序仿真
- 测试平台testbench
- 结构化测试:
激励 -> 待验证设计 -> 响应 -> (观察对比波形,终端打印生成文本,自动对比结果)
RTL级仿真(功能仿真)
*工程在寄存器转送级描述的测试,查看在RTL级描述时候实现的功能正确性
静态仿真(门级仿真)
*工程在LUT门级网表描述时,在功能上检查验证工程的正确性
专业的第三方综合工具不具备综合功能的,需要添加工程用到的具体的FPGA型号
时序仿真
*在布局布线后进行, 布线完成后会生成延时信息文件SDF(Standard dealy format)
包含最大值,典型值,最小值。min:typ:max
六 静态时序分析STA(Static Timing Analysis)
根据时序分析报告,提取延时信息比较突出的信号节点流,得到不满足时序要求的路径。
七 在线调试(板级调试)
将工程下载到FPGA芯片上分析代码运行情况。
*使用情况: 仿真不全面没有发现的设计错误(异步事件,互连可靠性,电源,信号干扰)
*调试方式: 嵌入式逻辑分析仪,外部测试工具
八 配置及固化
配置过程:
SRAM配置存储器(configure RAM)载入配置数据到芯片内的配置RAM
配置完成后,初始化内部寄存器及I/O管脚
初始化完成后,进入用户模式
配置模式:
在线调试配置:
通过JTAG模式完成。PC和FPGA通信的时钟为JTAG接口的TCLK,数据直接从TDI进入FPGA完成配置
JTAG接口是业界标准接口,主要用于芯片测试等功能。
JTAG接口有4个必需的信号TDI,TDO,TMS,TCK以及一个可选信号TRST。
1.TDI:用于测试数据的输入
2.TDO:测试数据的输出
3.TMS:模式控制管脚,决定JTAG电路内部的TAP状态机的跳变
4.TCK:测试时钟,其他信号线须与之同步
5.TRST:可选,如果JTAG电路不用,可以将其连到GND
固化: 将工程配置到相应存储单元
* 主模式:
FPGA器件引导配置操作过程,控制外部存储器和初始化过程
* 从模式:
由外部计算机或控制器控制配置过程
主从模式从传输数据宽度上,又分别可以分为串行和并行
主串,主并,从串,从并,多片级联
九 开发工具
注:FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,
既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点