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】欢迎添加关注!文章转载请注明出处。

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

    关注

    10459

    文章

    10749

    浏览量

    551743
  • 32-bit
    +关注

    关注

    0

    文章

    7

    浏览量

    6491

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HarmonyOS应用代码混淆技术方案

    代码混淆技术可以增加代码的复杂性和模糊性,从而提高攻击者分析代码的难度。
    的头像 发表于 11-21 16:17 5342次阅读
    HarmonyOS应用<b class='flag-5'>代码</b>混淆技术方案

    E203 代码结构梳理

    一、队伍介绍 本篇为蜂鸟E203系列分享第五篇,本篇介绍的内容是E203 代码结构梳理。 二、层次图 三、模块具体功能
    发表于 10-30 06:56

    代码格式化工具Clang-Format提升你的CW32工程质量

    它能自动统一团队代码风格,让不同开发者写出的代码如出一辙。就像 CW32 官方库函数遵循统一规范一样,Clang-Format 能让团队所有成员的代码瞬间保持一致,彻底消除 "tabs
    的头像 发表于 10-09 17:43 906次阅读
    <b class='flag-5'>代码</b>格式化工具Clang-Format提升你的CW32工程质量

    代码如何重塑硬件设计,AI如何加速创新?

    “  TS Circuit 创始人 Sebe 与 Atopile 创始人 Matt 之间非常有意思的一段对话,讨论了代码如何重塑硬件设计及 AI 如何加速创新。非常值得完整的听一遍,用中文重塑了对话
    的头像 发表于 09-06 11:19 482次阅读

    HarmonyOSAI编程编辑区代码

    理解的情况下进行代码。在编辑器中的内容较少时,AI可能无法有效理解用户的意图并生成相应的代码。 模型反馈需满足规则:光标上文10行内,有效代码
    发表于 08-21 15:43

    硬件工程师的 “鄙视链” 新动向:代码的,凭啥瞧不起画图的?

    “  在海外硬件工程师的世界里,一场关于设计灵魂归属的“圣战”已悄然打响。一边是信奉“所见即所得”、手握鼠标精雕细琢的“画图派”;另一边,则是高举“代码即真理”、用键盘召唤电路的“码派”。这不
    的头像 发表于 08-06 11:21 3233次阅读
    <b class='flag-5'>硬件</b>工程师的 “鄙视链” 新动向:<b class='flag-5'>写</b><b class='flag-5'>代码</b>的,凭啥瞧不起画图的?

    HarmonyOS AI辅助编程工具(CodeGenie)代码

    理解的情况下进行代码生成。在编辑器中的内容较少时,AI可能无法有效理解用户的意图并生成相应的代码。 模型反馈需满足规则:光标上文10行内,有效代码行数超过5行(排除单独{}、()、[]
    发表于 07-15 16:15

    OLED代码分享

    OLED代码
    发表于 04-29 17:04 1次下载

    变频器相同的故障原因不同的故障代码分类

    变频器相同的故障原因可能对应不同的故障代码,这主要取决于变频器的型号、制造商以及具体的故障检测机制。以下是一些常见的故障原因及其可能对应的不同故障代码分类: 一、过电流故障 ● 故障原
    的头像 发表于 04-25 14:31 1894次阅读
    变频器相同的故障原因不同的故障<b class='flag-5'>代码</b>分类

    【JVM开发者必看】IntelliJ IDEA代码分析实践指南:实时纠错、冗余检测、自动修复等

    【IntelliJ IDEA中的代码分析技巧】静态代码分析是指在不实际运行代码的情况下扫描代码以发现潜在问题。IntelliJ IDEA中的检查可以在您编译项目之前检测到其中的潜在问题
    的头像 发表于 03-13 10:34 862次阅读
    【JVM开发者必看】IntelliJ IDEA<b class='flag-5'>代码</b>分析实践指南:实时纠错、冗余检测、自动修复等

    DeepSeek接入到VSCode实现提词及代码

    在AI大火之后,AI代码一直是讨论的热题,之前比较火的cursor就是基于此出现的,但是国内访问受限,而且价格昂贵,我们今天就做个平替版。
    的头像 发表于 03-01 15:50 1545次阅读
    DeepSeek接入到VSCode实现提词及<b class='flag-5'>代码</b>助<b class='flag-5'>写</b>

    嵌入式软件开发中遗留代码的挑战

    遗留代码通常难以集成到其他系统、适配新数据格式或部署到现代平台及云端托管环境。相关代码可能已不再提供安全更新和补丁,供应商或开源社区的支持也可能逐渐减少甚至消失。然而,如果使用遗留
    的头像 发表于 02-26 10:05 640次阅读
    嵌入式软件开发中遗留<b class='flag-5'>代码</b>的挑战

    分析C语言代码结构的设计问题

    来分析一个C语言代码结构的设计问题。 这段代码,使用了两次malloc,分别给 p1 和 p2 申请了内存。用完后,内存释放,防止内存泄漏。 大家觉得,这样的代码设计有没有问题。
    的头像 发表于 02-11 09:31 669次阅读

    什么样的代码会被编译器优化

    现在的编译器有多智能,可能你辛辛苦苦代码,在编译器看来就是几句废话,直接被删除掉。
    的头像 发表于 01-16 16:38 932次阅读

    怎么提升单片机代码执行效率

    ​ 提升单片机代码执行效率需要从多个方面入手,包括代码优化、硬件资源利用、编译器设置、中断处理优化以及其他技巧等。在实际应用中,需要根据具体需求和硬件条件综合考虑这些因素,以实现
    的头像 发表于 01-10 11:06 940次阅读