华为FPGA设计高级技巧xilinx篇阅读笔记一

  • 前言
    • 综合
    • 器件结构对Coding Style的影响
    • For Example

前言

个人觉得前言部分是这篇的精华,一个FPGA工程师应该具备的基础。总结起来就是,在用HDL语言描述电路时,头脑中应该清楚综合出来是什么样的,映射到芯片后又是什么样子的。因此在进行HDL电路设计时应该了解FPGA内部的硬件结构以及基础资源,掌握与结构相关的设计技巧,具体可以参考博主之前的博客。前言指出目前大多数FPGA工程师的一个弊端,曾经博主也是这样的人。

随着HDL语言,综合工具以及相关工具的推广,广大工程师不再进行繁琐的画原理图,连线等工作,这样虽然提高了工作效率,但同时也带来了弊端。使现在越来越多的工程师不关心自己电路的实现形式,再进行HDL电路设计时,脑袋里没有任何电路的概念,以及自己的设计综合出来是什么样的,映射到芯片后又是什么样的,有没有充分利用FPGA的资源。这样过分依赖综合工具就会造成,遇到问题时,想到的只是还更好的芯片,自己束手无策。导致成本上升,影响开发周期。

随着器件工艺的提升,已经步入深亚微米时代,我们在设计时要更多关注以前很少关注的线延时,因此我们应该提高自己的设计技巧,以及设计方法来面对这些庞大的基于深亚微米技术的电路设计。
很多人称呼HDL代码为程序,但博主觉得这样有些不妥,博主觉等更好的应该是电路。各位同志自行体会。

综合

综合工具通常包括两个过程:

  • Synthesis
  • Optimization
    其中synthesis是把行为级的描述通过一定的算法转化成门级的描述,该过程与设计的工艺库无关,与用户约束无关。
    Optimization 则是把已转化的门级描述在用户的约束下,通过算法映射到相应的工艺库中的器件上,对FPGA而言就是映射到器件的单元结构中。其中设计的代码风格,在综合的第一步就决定了设计的性能
    代码风格:

    • 1 资源共享的应用限制在同一个module里。
    • 2 尽可能将Critical path上所有相关逻辑放在同一个module里
    • 3 Critical path所在的module与其他module分别综合,对critical path 采用速度优先的综合策略,对其他module采用面积优先的策略。
    • 4 尽可能register所有的output。该做法对加约束方便。
    • 5 一个module 的 size不能太大。具体有综合工具而定。
    • 6 一个module尽量只有一个时钟,或整个设计只有一个时钟。

器件结构对Coding Style的影响

第三部分主要讲的是器件结构对Coding Style的影响,这个主要看所用的器件,需要对FPGA底层资源结构有一定的了解。具体可以参考博主之前的博客

只要是在一个LUT内实现的逻辑,不管是几输入,逻辑延时基本一样。
对FPGA设计而言,如果速度想要更快,应当努力减少路径上的LUT的个数,而不是逻辑技术(ASIC则是减少逻辑级数);如果想要面积更小,应当努力减少LUT的个数,而不是逻辑门数。(与ASIC设计完全不一样)

For Example


图a结构前面的2输入与门占用一个LUT,后面的2个三输入或门各占用一个LUT,总共占用3个LUT,LUT级数是2级。
图b结构,虽然增加了一个2输入与门,并且逻辑级数与a一样,也是2级,但它只占用了2个LUT,LUT级数只有1级。
门数增加,逻辑未变,但资源占用减少,速度更快

未完待续…

华为FPGA设计高级技巧xilinx篇阅读笔记一相关推荐

  1. 华为FPGA设计高级技巧xilnx篇-阅读笔记2

    华为FPGA设计高级技巧xilnx篇-阅读笔记2 设计技巧 合理选择加法电路 串行进位与超前进位 使用圆括号处理多个加法器 IF语句和Case语句:速度与面积的关系. 减少关键路径的逻辑级数 通过等效 ...

  2. 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1--赛题一

    阿里云天池大赛赛题解析(深度学习篇)–阅读笔记1 [x]表示遇到不懂的知识,将在[知识补充]给出具体讲解. 文章目录 阿里云天池大赛赛题解析(深度学习篇)--阅读笔记1 前言 赛题一 瑞金医院MMC人 ...

  3. 货运服务网络设计:经典文献阅读笔记(3)复现Netplan

    **货运服务网络设计:经典文献阅读笔记(2)**提到说要把Crainic T G(1984年)文献使用的模型复现一下,但是文章给出的通用框架还是太笼统,在尝试后决定使用Jacques Roy & ...

  4. 华为FPGA设计设计规范

    最近看到了一份华为早年的FPGA设计规范文档,分享给大家. 前言 本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型验证.编写本流程的目的是: 在于规范整个设计流程,实现 ...

  5. 人月神话第一篇阅读笔记

    我先通读了全本书,对整书的大概内容进行了了解.第一遍的阅读中我知道了许多.软件开发的多少人参与和完成时间不成正比的,过多的人参与并不一定能缩短开发时间.如战争,部队多,人多并不是关键,更多需要武器的先 ...

  6. 《NASA对N+3代先进飞行器概念设计最终报告》阅读笔记

    民用航空的爆炸式增长已是未来的必然,灿烂的前景也意味着巨大的挑战,谁能发掘到未来技术的潜力,谁就能称霸下一个30年的天空! 文章目录 总概述 单双争霸 四点发现 方案分析 多维度分析 设计要求 品质因 ...

  7. linux 内存管理优化,Linux性能优化实战 内存篇 阅读笔记

    第十五讲 基础篇:Linux内存是怎么工作的(2020.6.8) 这一讲相关的内容正好之前看csapp的时候总结了一下,可以直接贴出来作为总结了. Linux的内存工作原理,这又是一个特别大的话题.一 ...

  8. 货运服务网络设计:经典文献阅读笔记(1)

    服务网络设计 --(1984,Crainic,Multicommodity, Multimode Freight Transportation: A General Modeling and Algo ...

  9. 《Redis设计与实现》阅读笔记(二)--简单动态字符串

    简单动态字符串 Redis只在一些无需对字符串进行修改的地方使用C字符串,大部分时候使用简单动态字符串(simple dynamic string, SDS),字符串的抽象类型.二进制安全,可以存放任 ...

  10. idl linux运行效率,Linux性能优化实战 CPU篇 阅读笔记

    第十一讲 如何快速分析出CPU的性能瓶颈(2020.6.3) 这一讲干活真是太多了,将之将使用的各种工具串联起来.其实系统出问题之后第一感觉就是感觉就是系统相应变慢了.我们可以使用<> 里 ...

最新文章

  1. 行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...
  2. 独家 | 将人们困于贫穷之中的隐藏算法战争即将到来
  3. Console控制台的正确打开方式
  4. linux命令补遗 - 4
  5. Android之Lollipop DevicePolicyManager学习(下)
  6. Thymeleaf与Spring集成(第1部分)
  7. java移动接口发短信_Java面试零碎知识点
  8. 学神python笔记
  9. 多数据源一致性事务解决方案
  10. 大数据是如何改变零售行业的
  11. Java常量不能二次赋值与常量不能修改值意思一样吗?
  12. 初入steam避坑请进
  13. hdoj3085 / acwing177 Nightmare
  14. android接入qq广告,QQ接入华为HMS 安卓生态迎巨变?
  15. MASC: Multi-scale Affinity with Sparse Convolution for 3D Instance Segmentation
  16. #华为模拟器eNSP
  17. 论文中英文摘要、目录、每章的页眉不同,页脚处的页码自动连续设置方法
  18. MobileNet论文翻译
  19. 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)
  20. RedHatAS4U3下实现南北互通的DNS配置

热门文章

  1. php中怎样添加文字水印,php给图片添加文字水印
  2. 移动端日历组件设计与实现
  3. 外贸个人自建站有哪些比较友好的收款方式?
  4. spss变量视图转数据视图_教大家SPSS如何导入数据进行分析
  5. 进程间通讯的5种方式
  6. 如何将区块链技术用于版权保护?
  7. Running MaxQuant——蛋白质组学建库软件(一)
  8. E-day0003:generate
  9. 仿射变换再次秒杀2011山东理科高考压轴题(圆锥曲线)
  10. 开发人员的 Chrome 翻译设置