前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经典ASIC开发流程

经典ASIC开发流程

作者头像
网络交换FPGA
发布2019-10-29 17:52:49
1.3K0
发布2019-10-29 17:52:49
举报
文章被收录于专栏:网络交换FPGA网络交换FPGA

最近收拾书架,翻出一张多年以前的ASIC项目开发流程图,一起回顾一下。典型的瀑布式开发流程:

  • 以算法设计为主导
  • 算法C代码手工转换为RTL
  • RTL与算法C代码生成的测试向量对比进行验证
  • 依赖FPGA做大量实时、现场测试
  • 适合通信信号处理,音视频处理产品

1. 算法预研

确定了产品方向之后,算法工程师开始进行调研。

要学习研究行业内最新的研究成果、论文,提出创造性的方法来获得最好的性能。要使用真实的测试数据和仿真结果进行评估。最终交付为算法描述的C语言源码。

算法调研结束后需要进行审核(review):确定算法性能,确定系统架构设计,确认是否可以正式立项。审核过程需要算法设计、RTL设计、软件、硬件系统、市场、管理层共同参与。

正式立项时,需要提供功能spec,以及算法C代码功能仿真环境。与此同时,硬件组需要根据项目需求开始搭建硬件FPGA测试平台。

2. 算法优化

接下来进行算法的优化,主要考虑以下几个方面:

  • 算法复杂度
  • 算法运算量
  • 变量精度
  • 算法设计以及状态机控制要具有自恢复能力
  • 算法代码要足够stable,对于各种滤波器系数和变量要有一定的噪声容忍度。

算法最终确定需要通过审核:算法架构,算法功能仿真,算法定点化和性能验证。

3. 面向ASIC的C代码实现

在此阶段,算法C仿真代码改变为模块结构代码,分解为若干ASIC功能模块,代码的接口与RTL接口接近:

  • 容易实现
  • 高效率
  • 节省逻辑
  • 重用现有模块
  • 对带有反馈的模块中增加仿真延时
  • 在接口增加仿真延时

最终的C代码中:

  • 主函数只包含连接关系和子模块
  • 所有子模块以各自的时钟速率调用
  • 接口采用cycle based timing

需要准备以下review和文档:

  • ASIC模块和接口设计指导
  • 性能验证报告
  • 接口变量的时序图和精度描述

4. C到RTL的实现

RTL设计工程师完成从C代码到verilog的实现。算法工程师负责产生相应的测试向量,包括子模块测试和系统联调测试。要使用各种典型的测试场景数据,以及一些子模块级别的随机测试数据。

根据RTL设计以及综合结果,可以获得整个系统的时序信息,gate count和die size预估。

5. FPGA on-board test

由于RTL仿真的速度较慢,可以借助FPGA来进行测试加速。硬件工程师准备FPGA平台,FPGA工程师进行RTL到FPGA的代码移植,软件工程师协助相关测试软件的开发与使用。

在FPGA上可以做到与RTL仿真一样的效果,比如从内存中提供输入,并抓取输出结果,与算法C产生的数据进行比对。需要测试尽可能多的测试用例。

6. FPGA field test

如果项目代码可以在FPGA上跑到与真实应用同样的速度(full speed),就可以用FPGA代码直接做实时现场测试。在现场测试的任何问题,需要反馈给算法组进行分析解决。

7. Final Check and Review

现场测试通过后,需要做最后的检查和review全部代码,然后开始芯片后端设计。


站在今天(2018年)的角度看过去上述流程有存在一些问题:

  • 采用算法C到Cycle C再到RTL实现的流程,迭代长,易出错
  • RTL验证以直接定向测试为主,缺少随机验证,覆盖率不够
  • 依赖FPGA实时测试作为验证主要手段,FPGA平台开发需要专门的人力资源和硬件平台,而且FPGA平台不够灵活,且容易出现不稳定的问题。

现在已经有很多新技术可以借鉴,比如

  • 基于High level synthesis,缩短开发周期
  • 采用各种验证方法学,提高验证覆盖率
  • 使用专用的硬件加速器平台

最后,以上开发流程简单,投资少,对于算法(大牛)主导的创业型公司,或者以IP开发为主的小型团队,还是可以使用的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络交换FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
媒体处理
媒体处理(Media Processing Service,MPS)是一种云端音视频处理服务。基于腾讯多年音视频领域的深耕,为您提供极致的编码能力,大幅节约存储及带宽成本、实现全平台播放,同时提供视频截图、音视频增强、内容理解、内容审核等能力,满足您在各种场景下对视频的处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档