0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

写RTL代码时,尽可能地做到代码风格与硬件结构相匹配

FPGA技术驿站 来源:Lauren的FPGA 作者:Lauren的FPGA 2020-09-24 14:02 次阅读

两个数相加,三个数相加有什么不同 接下来,我们考虑4个32-bit有符号数相加该如何实现,其中目标时钟频率仍为400MHz。以UltraScale Plus系列芯片为目标芯片。 第一种方案:四个数直接相加此方案对应的电路图如下图所示。这里不难看出关键路径是三个加法器所在路径,这将是时序收敛的瓶颈。

此电路对应的SystemVerilog代码如下图所示。

从综合后的结果来看,逻辑级数最高为7。

第二种方案:加法树

加法树的结构如下图所示,两两相加。与第一种方案相比,可以有效降低逻辑级数。

此电路对应的SystemVerilog代码如下图所示。

从综合后的结果来看,逻辑级数最高为6。 第三种方案:加法链之所以选用加法链的结构是因为DSP48本身就是这种链式结构。对应的电路如下图所示。其中a0和a1端口有一级寄存器,a2端口有两级寄存器,a3端口有三级寄存器。

此电路对应的SystemVerilog代码如下图所示。

接下来,我们对这三种方案进行比较,如下图所示。不难看出,第一种方案逻辑级数最高,消耗的LUT也最多,时序结果也是最差的(尽管达到了收敛的目的)。后两种方案不相上下。

如果将这三种方案通过综合属性USE_DSP使其映射到DSP48上,结果如何呢?如下图所示。不难看出,第一种方案只消耗了两个DSP,资源利用率最低,但时序也是最糟糕的。后两种方案都用了三个DSP,但第三种方案由于可以很好地匹配硬件结构,故时序最好。

对比下来不难得出这样的结论:写RTL代码时,尽可能地做到代码风格与硬件结构相匹配,可达到更好的性能。

Tcl之$$a 80%的概率...... AI Engine到底是什么?

ACAP不可不知的几个基本概念

嵌套的for循环,到底对哪个执行pipeline更好

HLS中循环的并行性(2)

HLS中循环的并行性(1)

HLS优化方法DATAFLOW你用了吗

HLS中如何控制流水程度

Vivado HLS学习资料有哪些

如何查看可综合C代码的中间结果

如何在C代码中插入移位寄存器

HLS IP Library? HLS Math Library:csim ?C/RTL co-sim(2) HLS Math Library:csim ?C/RTL co-sim(1) 加法运算很简单? AXI-4 Lite与AXI-4 Memory Mapped有什么区别? 深入理解AXI-4 Memory Mapped 接口协议 AXI是Interface还是Bus? 如何阅读时序报告 时序报告要看哪些指标 如何使set_max_delay不被覆盖 一些小巧的IP IP是用DCP还是XCI? 如果使用第三方综合工具,Xilinx IP… IP生成文件知多少 IP的约束需要处理吗? IP为什么被Locked? copy_ip你用过吗? IP是XCI还是XCIX 如何降低OSERDES/CLK和CLKDIV的Clock Skew 如何获取Device DNA 谈谈设计复用 过约束到底怎么做 时序收敛之Baseline 什么情况下要用OOC综合方式 异步跨时钟域电路该怎么约束 如何复用关键路径的布局布线信息 Vivado学习资料有哪些? 异步跨时钟域电路怎么设计 ECO都有哪些应用 FPGA中的CLOCK REGION和SLR是什么含义 FPGA中的BEL, SITE, TILE是什么含义 约束文件有哪些 如何高效复用Block的位置信息? 如何复用关键寄存器的位置信息 部分可重配置都生成哪些.bit文件 VIO你用对了吗 Device视图下能看到什么 Schematic视图下能看到什么 都是pin,有什么区别 都是net,有什么区别 如何快速查找目标cell 学习笔记:深度学习与INT8 学习笔记:多层感知器 学习笔记:单层感知器的局限性 学习笔记:单层感知器基础知识 学习笔记:神经网络学习算法 学习笔记:神经网络模型 学习笔记:ReLU的各种变形函数 学习笔记:神经元模型(2) 学习笔记:神经元模型(1) 学习笔记:深度学习之“深” 学习笔记:深度学习之“学习” 学习笔记:人工智能机器学习和深度学习 2019文章汇总

原文标题:加法树还是加法链?

文章出处:【微信公众号:Lauren的FPGA】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路图
    +关注

    关注

    10286

    文章

    10707

    浏览量

    523689
  • 32-bit
    +关注

    关注

    0

    文章

    7

    浏览量

    6396

原文标题:加法树还是加法链?

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    低噪声放大器的第一级放大电路要尽可能的放大,为什么?

    为什么低噪声放大器的第一级放大电路要尽可能的放大?
    发表于 08-30 07:40

    请问怎样修改电路使带宽尽可能加宽到200MHz以上,增益不要有太大的波动?

    在此电路中输入为100mV,但是在50MHz到100MHz才能进行五倍的增益,超过这个频率就会迅速衰减,我想请问怎样修改电路使带宽尽可能加宽到200MHz以上,增益不要有太大的波动谢谢。
    发表于 08-23 07:04

    电路的阻抗如何匹配

    电路的阻抗匹配是指调整电路组件(包括源和负载)之间的阻抗,使电源能尽可能多地传递能量,而不是产生反射。当源、传输线以及负载的阻抗都相等时,可以达到最佳的阻抗匹配,从而最大限度地减少信号的反射和损耗
    的头像 发表于 06-28 08:29 1172次阅读
    电路的阻抗如何<b class='flag-5'>匹配</b>

    如何提升代码质量与效率的秘诀

    提高编程能力其实没有捷径,最佳方式就是多代码。 不过,除了大量代码,提升编程能力还需要大量阅读别人
    的头像 发表于 04-28 14:53 285次阅读
    如何提升<b class='flag-5'>代码</b>质量与效率的秘诀

    阿里云内部全面推行AI代码

    阿里云正在内部全面推行 AI 编程,使用通义灵码辅助程序员代码、读代码、查 BUG、优化代码等。
    的头像 发表于 04-07 09:22 461次阅读

    为什么低噪声放大器的第一级要尽可能的放大呀?

    为什么低噪声放大器的第一级要尽可能的放大?
    发表于 11-21 08:01

    浅谈Verilog HDL代码编写风格

    深层次的问题,对于这个行业来说可能我才是一直脚踩在门外面。所以这篇文章是写给一些刚开始学习FPGA、Verilog HDL的同学,我看过一些大神代码,然后尽量模仿大神写法,经过好几个大神的影响和自己
    的头像 发表于 11-20 10:04 577次阅读
    浅谈Verilog HDL<b class='flag-5'>代码</b>编写<b class='flag-5'>风格</b>

    如何在不受电线等的影响下尽可能准确地测量如mΩ数量级的电阻值呢?

    如何在不受电线等的影响下尽可能准确地测量如mΩ数量级的电阻值呢? 引言: 电阻测量是电路分析和电子工程中非常重要的技术。然而,在测量低阻值时,电线、接触电阻、温度等因素可能对结果产生较大的影响。因此
    的头像 发表于 11-17 14:48 383次阅读

    llama.cpp代码结构&amp;调用流程分析

    llama.cpp 的代码结构比较直观,如下所示,为整体代码结构中的比较核心的部分的代码结构
    的头像 发表于 11-07 09:23 1806次阅读
    llama.cpp<b class='flag-5'>代码</b><b class='flag-5'>结构</b>&amp;调用流程分析

    从可综合的RTL代码的角度聊聊interface

    SystemVerilog引入了interface,这里我们从可综合的RTL代码的角度聊聊interface。
    的头像 发表于 10-12 09:06 1492次阅读
    从可综合的<b class='flag-5'>RTL</b><b class='flag-5'>代码</b>的角度聊聊interface

    为什么在MCU中要尽可能少用全局变量?

    为什么在MCU中要尽可能少用全局变量
    发表于 10-11 07:07

    JK触发器与T触发器的Verilog代码实现和RTL电路实现

    JK 触发器的 Verilog 代码实现和 RTL 电路实现
    的头像 发表于 10-09 17:29 3744次阅读
    JK触发器与T触发器的Verilog<b class='flag-5'>代码</b>实现和<b class='flag-5'>RTL</b>电路实现

    为什么在MCU中要尽可能少用浮点数运算?

    为什么在MCU中要尽可能少用浮点数运算
    发表于 10-09 08:06

    如何在开始码代码的时候就考虑时序收敛的问题?

    硬件描述语言(verilog,systemVerilog,VHDL等)不同于软件语言(C,C++等)的一点就是,代码对应于硬件实现,不同的代码风格
    的头像 发表于 09-21 09:07 1000次阅读
    如何在开始码<b class='flag-5'>代码</b>的时候就考虑时序收敛的问题?

    为什么DC-DC转换器应尽可能靠近负载的负载点(POL)电源?

    效率和精度是两大优势,但实现POL转换需要特别注意稳压器设计。接近电源,这是提高电源轨的电压精度、效率和动态响应的最佳方法之一。负载点转换器是一种电源DC-DC转换器,放置在尽可能靠近负载的位置,以
    的头像 发表于 09-19 11:15 639次阅读
    为什么DC-DC转换器应<b class='flag-5'>尽可能</b>靠近负载的负载点(POL)电源?