为什么需要FPGA验证
1)FPGA可以模拟真实应用场景,对芯片的性能进行验证,规避算法的风险;
2)其次可以实现和外部器件对接,验证和外部器件(尤其是模拟器件)之间的接口;
3)再者FPGA速度快,对于一些长时间、大流量场景的验证可以放在FPGA上进行
4)软硬件协同验证:主要目的是验证系统级芯片软硬件接口的功能和时序,验证系统级芯片软硬件设计的正确性, 以及在芯片流片回来前开发应用软件。
FPGA验证流程
资源评估
方法1: FPGA与ASIC面积换算,业界常规的FPGA LUT与ASIC gate换算比例为1:9;可以在早期评估出大概结果,误差<30%;
方法2:根据历史数据,汇总各功能模块
平台选择
根据资源评估结果,确认选择平台;确认前需要同硬件讨论平台的数量和使用时间段,确定有足够硬件资源。
实际项目中需根据实际FPGA平台量进行规划。
xcvu440
方案规划
硬件方案 CRG方案…
代码适配
blackbox
将不需要的模块BLACKBOX掉,有利于资源及时序的收敛。
注意hready信号必须赋值为1,否则会导致总线挂死;其它一般赋值0
(建议对照define.lst将所有的BLACKBOX的代码都检查一遍,关注有没有对输出赋值,以保证避免VIVADO布局布线失败情况的发生。
CRG
分析ASIC的时钟方案,确认每一个时序MUX和分频,通CRG设计人员明确FPGA分支的选择,尽量减少时钟MUX和分频,关闭CG。后面的时序约束和时序优化都需要以此为基础。
MEM适配
抓线
1 代码中增加抓线ILA
2 在VIVADO 工程中增加抓线,再重新布局布线,生成BIN文件。
filelist 适配
FPGA与ASIC不一致的代码都放于replacement下
约束
位置约束
FPGA1 FPGA2 FPGA3 FPGA4
FPGA1和FPGA4:管教位置J1C和J1D互换
FPGA1和FPGA3一致;FPGA2和FPGA4一致
两个FPGA有一组AHB总线互联,需要MASTER来指定时序约束需求,INPUT DELAY (0,70%T),OUTPUT DELAY(0,30%T)。
时钟约束
端口时钟约束;衍生时钟约束;时钟分组;
综合
DesignWare是Synopsys提供的知识产权(Intellectual Property,简称IP)库。由于DesignWare库中的所有器件都是事先验证过的,使用该IP库我们可以设计得更快,设计的质量更高,增加设计的生产力和设计的可重复使用性,减少设计的风险和技术的风险。Vivado不支持DesignWare库。但是我们的适配器FPGA是xilinx的要用Vivado编译。如果遇到这种模块,DWxxx.v可综合解决方法有以下两种:
一种方法是自己手写一个Design Ware模块或者用Design Ware的仿真模型上修改而来。自己写可能有问题不推荐自己写;
另一种方法是用synplify_premier解决,implementation options-Verilog 选择Use DesignWare Foundation Library,配置Design Compiler Instailation Loation 与ASIC保持一致。
synplify run constraint check检查约束情况
Vivado布局布线
最开始跑版本可以先跑各模块,确定每个模块时序没有问题后再跑全版本。Synplify确认时钟约束的正确性,vivado timing report中requirement异常小的一般是时序约束有误;
时序优化
使用双端口RAM替换单端口RAM
注意在viavado中生成ram时,选无输出reg。
处理高扇出信号
高扇出的复位信号,设为false path。
多周期路径
确认时序报告中时序违例路径的时序需求; 可以和模块设计人员一起分析时序报告,对某些时序路径可以约多周期。
false path
CBB 提供的可以False Path 或者多周期的路径;
分析Worst Slack/关键路径,确认是否可以False Path或者约束多周期;
分析Inter-Clock Paths,两个时钟间是否需要分析;
DSP优化
dsp style : logic/dsp48,某项目经验为不使用dsp时序比较好。
分DIE
V900上有3个SLR,由某项目经验得到:不手工分die时序较好。
时序快满足要求时措施:回退到上个步骤,在OPTION选择优化,再重新跑版本
一般方案中,寄存器是实现在FPGA内部,因此到PAD的延时相对比较长,尤其是设计较大较复杂的时候。使用IOB Packing则将寄存器实现在FPGA边缘的IOB中,大大缩短延迟时间,提高了时序性能
跨片时序约束
两个FPGA有一组AHB总线互联,一般作为AHB总线的Slave设备都有2根hready信号,一个为input类型(hready_in),另一个为output类型(hready_out)。在AHB总线协议中,如果Master设备发起读写操作的时候,Slave设备不能及时响应的话,由Slave设备把hready_out信号拉低来拖延DataPhaze周期。hready_in是Slave设备用来判断Master设备是否对其它Slave设备的操作已经完成的信号。对于SLAVE侧hready_in是一个输入信号,由MASTER提供;而hready_out是一个输出信号,反馈给MASTER。
AHB总线跨片连接,需要MASTER来指定时序约束需求,一般INPUT DELAY (0,70%T),OUTPUT DELAY(0,30%T),留给片间走线40%T的裕量。
ECO
场景:EMMC CMD以及data需要做上拉处理。
解决方法:1 在VIVADO.xdc中增加相关约束,重新跑版本,耗时长,不推荐。
2 VIVADO 的ECO功能。具体实现如下:
(1) 打开floorplanning
(2)搜索要修改的端口,由下图可知端口的各种属性。
(3)重新按具体需求完成配置
(4)产生可供下载的bit 文件,此时必须在Tcl Console 中或是Tcl 模式下直接输入命令产生bit文件,而不能使用IDE 上的“Generate Bitstream”按钮。原因是后者读到的还是ECO 前已经完成布局布线的原始设计,生成的bit 文件自然也无法使用。文章来源:https://www.toymoban.com/news/detail-473824.html
总结
代码 spyglass +filelist irun 发布版本给验证人员(自己先SOURCE tag编译一下,避免本地文件存在) EDA验证pass 各模块跑综合布局布线查看时序情况 跑全版本(满足checklist后再发布)。
注意:1 确保代码经过spyglass检查,满足《FPGA 设计入口Checklist》。
2 确保上板版本与EDA验证版本的一致性。
3 及时上库,版本记录。修改代码及时上库,做好版本记录,记录清楚每个版本修改的内容。
4尽量减少FPGA目录下的replacement file。文章来源地址https://www.toymoban.com/news/detail-473824.html
到了这里,关于FPGA 验证 why what how的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!