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

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

3天内不再提示

浅谈寄存器被优化的原因

sanyue7758 来源:IC的世界 2023-09-26 09:47 次阅读

在项目初期,在使用FPGA工具quartus或者vivado生成版本烧入开发板进行调试时(DC开启优化选项后同样会优化掉寄存器),我们有时会发现部分寄存器被优化掉了,今天简单聊聊被优化的几种情况。

1、寄存器被优化的原因

目前鸽子发现寄存器被优化的原因主要有两种:

1)驱动寄存器的信号没有驱动源

a. 至少有一个信号没有驱动源,也可能是多个

2)寄存器负载是悬空的,包含如下场景

a. 寄存器的唯一负载时悬空

b. 寄存器的所有负载均悬空

部分场景下被优化的问题很好排查,有些场景排查会比较麻烦,仅仅从信号连线上看都是正常的,无法通过肉眼快速发现问题,这时候需要去看综合报告,找到问题的源头。

2、案例--大量寄存器被优化

如下图所示,crm是复制产生时钟复位的模块,其中输出clka/clka_rst_n给模块a,其中输出clkb/clkb_rst_n给模块b。Soft_reset_n是clka_rst_n和clkb_rst_n的源头之一。Soft_reset_n为0,则clka_rst_n/clkb_rst_n为0,处于复制状态。Soft_reset_n是配置读写模块CSR的一个可配置寄存器,其内部偏移地址为0x60。

通过quartus/vivado查看网表结构和资源利用率,我们发现模块A和模块B大量资源被优化,不符合常理。经过检测发现,所有信号连接均正常,没有悬空,所有信号均存在负载。

经过反复排查后发现,CSR模块被手动添加的Soft_reset_n寄存器地址分配在0x60,而CSR入口wr_addr[5:0]只有6bit,只能访问0x40以内的地址范围,因此Soft_reset_n在实际网表中是不存在的,导致clka_rst_n/clkb_rst_n都没有驱动源,因此模块A和模块B大量资源被优化。

3、推荐检查方法

在进行FPGA版本调试之前,首先进行spyglass lint检查 或者检查quartus/vivado产生的综合报告,检查是否存在如下warning:

信号没有驱动

信号悬空

把这些warning确认完后再进行版本调试。

4、简单的规律

大量模块逻辑被优化,重点看时钟复位

少量模块逻辑被优化,重点看资源独享的驱动信号

End

原审核编辑:汤梓红


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

    关注

    1602

    文章

    21320

    浏览量

    593201
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117723
  • CSR
    CSR
    +关注

    关注

    3

    文章

    117

    浏览量

    69430
  • 优化
    +关注

    关注

    0

    文章

    220

    浏览量

    23715
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65101

原文标题:啥?我的寄存器被被优化掉了!

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    解析CPU中的寄存器

    8位寄存器在16位寄存器中,而16位寄存器在32位寄存器中。
    发表于 09-19 10:10 2902次阅读

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。
    的头像 发表于 07-21 16:59 2976次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>点亮LED灯?

    聊聊寄存器优化的2种情况

    在项目初期,在使用FPGA工具quartus或者vivado生成版本烧入开发板进行调试时(DC开启优化选项后同样会优化寄存器),我们有时会发现部分寄存器
    的头像 发表于 09-08 15:09 1299次阅读
    聊聊<b class='flag-5'>寄存器</b>被<b class='flag-5'>优化</b>的2种情况

    寄存器与移位寄存器

    寄存器与移位寄存器 寄存器是用来寄存数码的逻辑部件,所以必须具备接收和寄存数码的功能。任何一种触发器都可以构成
    发表于 03-12 15:19 59次下载

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定义  寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用
    发表于 03-08 14:26 2.1w次阅读

    数据寄存器,数据寄存器是什么意思

    数据寄存器,数据寄存器是什么意思 数据寄存器数据寄存器包括累加器AX、基址寄存器BX、计数寄存器
    发表于 03-08 14:38 1.2w次阅读

    移位寄存器,移位寄存器是什么意思

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    发表于 03-08 14:50 1.7w次阅读

    32位寄存器,32位寄存器是什么意思

    32位寄存器,32位寄存器是什么意思  从X8086开始学了一年,第一个ASM的程序就是变32换16进制的程序,不过现在叫我从新开始写ASM程
    发表于 03-08 17:26 1.7w次阅读

    基于FPGA的可变长度移位寄存器优化设计

    本文以最大可变长度为N、宽度为1bit的移位寄存器为模型,讨论如何从结构上优化可变长度移位寄存器和有效的FPGA实现。至于宽度不为1bit的情况,可以此类推
    发表于 07-23 10:55 5076次阅读
    基于FPGA的可变长度移位<b class='flag-5'>寄存器</b><b class='flag-5'>优化</b>设计

    寄存器与移位寄存器

    寄存器与移位寄存器:介绍寄存器原理和移位寄存器的原理及实现。
    发表于 05-20 11:47 0次下载

    51寄存器的所有寄存器名称,(包括寄存器每一位的作用及用法)资源详解

    51寄存器的所有寄存器名称,(包括寄存器每一位的作用及用法)资源详解
    发表于 10-16 13:04 14次下载
    51<b class='flag-5'>寄存器</b>的所有<b class='flag-5'>寄存器</b>名称,(包括<b class='flag-5'>寄存器</b>每一位的作用及用法)资源详解

    浅谈ARM寄存器组织

    3.3 ARM寄存器组织 ARM处理器有37个32位长的寄存器。 1个用作PC(Program Counter)。 1个用作CPSR(Current Program Status Register
    发表于 10-18 13:26 1次下载
    <b class='flag-5'>浅谈</b>ARM<b class='flag-5'>寄存器</b>组织

    为什么寄存器比内存快_原因是这个

    本文开始介绍了寄存器特点、分类以及寄存器的工作原理,其次介绍了内存的容量、大小与选购方法,最后阐述了寄存器比内存更快的原因
    发表于 04-11 09:09 6549次阅读
    为什么<b class='flag-5'>寄存器</b>比内存快_<b class='flag-5'>原因</b>是这个

    新版IAR调试查看寄存器问题 STM8代码大小优化问题

    新版IAR调试查看寄存器问题、STM8代码大小优化问题
    的头像 发表于 03-07 16:13 3341次阅读

    简述RAL寄存器模型基础

    ,以及如何将寄存器模型集成到验证环境中。篇幅原因,将在下一篇文章再给出寄存器模型的操作图鉴(前后门访问API),以及寄存器覆盖率的收集。
    的头像 发表于 02-14 16:55 2347次阅读
    简述RAL<b class='flag-5'>寄存器</b>模型基础