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

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

3天内不再提示

关于打拍优化时序你真的全面了解吗?

FPGA之家 来源:CSDN技术社区 作者:数字芯片实验室 2021-04-27 14:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如果你参加过IC校招面试,自然会被问到“setup/hold的概念,以及setup/hold违例怎么办?”

这时候,你肯定会立马在脑海中从打拍或者插buffer两个答案中选一个。但是在实际项目中,往往没有这么简单。举一个实际的场景:

2d1e480e-a67f-11eb-aece-12bb97331649.png

AXI master和AXI slave这一簇信号出现setup时序违例怎么办?

1、从AXI master 到AXI slave 出现setup违例;

2、从AXI slave 到AXI master出现setup违例;

3、两者都出现setup时序违例。

所以AXI master和AXI slave之间的打拍会存在4中模式:

Forward Registered :对valid和payload路打拍

Backward Registered :对ready路打拍

Fully Registered :同时对valid/payload路和ready路打拍

Pass Through Mode:Bypass,均不打拍

这个问题没那么容易或者说不能够直接打拍,是因为这一簇信号遵循valid-ready协议,需要打拍的信号间存在时序的耦合

所以问题就简化成如何在遵循valid -ready协议的master和slave 之间完成“打拍”,或者说在打拍的同时处理valid-ready协议。

Forward Registered

2d2f1292-a67f-11eb-aece-12bb97331649.png

always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) valid_dst 《= 1’d0; else if (valid_src == 1‘d1) valid_dst 《= #`DLY 1’d1; else if (ready_dst == 1‘d1) valid_dst 《= #`DLY 1’d0;end always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) payload_dst 《= ’d0; else if (valid_src == 1‘d1 && ready_src == 1’d1) payload_dst 《= #`DLY payload_src;end ready_src = (~valid_dst) | ready_dst

2e3ed10e-a67f-11eb-aece-12bb97331649.png

现在来分析下上述Forward Registered 打拍代码的几个输出端口

valid_dst:在master发请求(拉高valid_src)时拉高valid_dst,直到当前master没有valid请求并且slave可以接收请求(拉高ready_dst)时拉低valid_dst,表示一次传输完成。

payload_dst:在master发请求(拉高valid_src),并且前面没有请求、请求已经被接收或者正在被接收时将payload_src打拍赋给payload_dst。

其实master本身也会遵循valid-ready协议,payload_src和valid_src做同样处理就行,即也可以在(valid_src == 1‘d1 && ready_src == 1’d0)时进行赋值,因为此时payload_src输入应该约束保持原始数据。

ready_src:register slice或者slave可以接收数据时拉高ready_src.

Backward Registered

2e49a4b2-a67f-11eb-aece-12bb97331649.png

always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) valid_tmp0 《= 1’d0; else if (valid_src == 1‘d1 && ready_dst == 1’d0 &&valid_tmp0 == 1‘d0) valid_tmp0 《= #`DLY 1’d1; else if (ready_dst == 1‘d1) valid_tmp0 《= #`DLY 1’d0;end always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) payload_tmp0 《= ’d0; else if (valid_src == 1‘d1 && ready_dst == 1’d0 &&valid_tmp0 == 1‘d0) payload_tmp0 《= #`DLY payload_src;end assign payload_dst = (valid_tmp0 == 1’d1) ?payload_tmp0 : payload_src; always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) ready_src 《= 1’d0; else ready_src 《= #`DLY ready_dst;end

Backward Registered 打拍相比较Forward Registered 会复杂点,因为存在slave没有ready时master发来请求,需要暂存payload的场景。

2e73e8d0-a67f-11eb-aece-12bb97331649.png

现在来分析下上述Backward Registered打拍代码的几个输出端口:

ready_src:对ready通路直接进行打拍。

valid_dst:当slave没有ready,master发来请求时拉高标志位valid_tmp0,表示下一次slave准备好之后应该从register slice内暂存的payload拿数据

payload_dst:当slave没有ready,master发来请求时暂存payload到payload_tmp。最终的payload_dst根据标志位valid_tmp0从payload_tmp和payload_src之间选择

Fully Registered

类似于,简单理解就是个乒乓BUFFER,使用非空信号做valid_dst;payload的非满信号做ready_src

Pass Through Mode

直接相连

通过上述分析,可以使用register slice mode参数化的库,在后端要求AXI BUS打拍时直接调用,而无需重复造轮子。
编辑:lyn

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

    关注

    36

    文章

    6465

    浏览量

    186296
  • 时序
    +关注

    关注

    5

    文章

    411

    浏览量

    38998
  • Setup
    +关注

    关注

    0

    文章

    30

    浏览量

    12456
  • MASTER
    +关注

    关注

    0

    文章

    112

    浏览量

    12244

原文标题:打拍优化时序不像听起来那么简单

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    内置氮化镓成主流?AHB技术了解多少?

    内置氮化镓成主流?AHB技术了解多少? 在快充充电器等应用中,非对称半桥(AHB)拓扑凭借高效率、低EMI等优势,正受到越来越多工程师的青睐。 AHB 本质上是在传统反激思路上进一步优化而来
    发表于 04-18 10:35

    真的了解磁致伸缩液位计吗?

    液位计
    jzyb
    发布于 :2026年01月22日 11:49:29

    电容液位计的维护方法真的了解吗?

    液位计
    华泰天科
    发布于 :2025年12月23日 17:15:17

    数字IC/FPGA设计中的时序优化方法

    在数字IC/FPGA设计的过程中,对PPA的优化是无处不在的,也是芯片设计工程师的使命所在。此节主要将介绍performance性能的优化,如何对时序路径进行优化,提高工作时钟频率。
    的头像 发表于 12-09 10:33 3516次阅读
    数字IC/FPGA设计中的<b class='flag-5'>时序</b><b class='flag-5'>优化</b>方法

    SLM2004SCA-13GTR 200V高压半桥驱动芯片的可靠性与时序优化设计

    移位、时序控制和保护电路高度集成。这种单芯片解决方案显著减少了外围元件数量,在降低BOM成本和PCB面积需求的同时,大幅提升了系统的整体可靠性。优化时序性能 芯片680ns/180ns的非对称开关
    发表于 11-27 08:23

    网络接口:数字世界的“门铃”,了解多少?

    ,还能为选择适合的网络解决方案奠定基础。在万物互联的时代,这些基础知识显得愈发重要。 希望这篇简单的介绍能帮助大家对网络接口有基本的了解。我始终相信,了解技术细节能让客户做出更明智的选择。如果有更多
    发表于 11-26 18:53

    vivado时序分析相关经验

    存在不满足时序要求的逻辑级数。逻辑级数过多一般可以通过插入寄存器打拍子,分割冗长的组合逻辑。 线延时较长时,一般是因为扇出较大。 ”report_high_fanout_nets
    发表于 10-30 06:58

    NVMe高速传输之摆脱XDMA设计22:PCIe的TLP读优化处理

    TLP的tag最大为3。图1TLP读处理优化时序样例图在对应图1中第1、2行时序的低性能处理模式下,同一时间只能处理一个读事务,并且不带有outstanding能力,此时从接收到读请求到成功响应所经
    发表于 08-19 08:48

    NVMe高速传输之摆脱XDMA设计16:TLP优化

    TLP的tag最大为3。图1TLP读处理优化时序样例图 在对应图1中第1、2行时序的低性能处理模式下,同一时间只能处理一个读事务,并且不带有outstanding能力,此时从接收到读请求到成功响应所经
    发表于 08-05 18:09

    科普|关于GPS和GNSS,了解多少?

    定位(Positioning)为万物互联提供了最基础信息;当今以GPS、GLONASS、Galileo和Beidou为代表的全球定位系统为人们带来了极大便利;而对于它们是不是真正的了解,回答完以下
    的头像 发表于 06-28 07:06 3184次阅读
    科普|<b class='flag-5'>关于</b>GPS和GNSS,<b class='flag-5'>你</b><b class='flag-5'>了解</b>多少?

    关于SFP连接器必须了解的那些知识

    关于SFP连接器必须了解的那些知识 一、SFP光笼子的作用及材料组成 1.光笼子的概念与作用 ① 光笼子是什么? SFP Cage(Small Form-factor Pluggable Cage
    的头像 发表于 06-17 09:42 1244次阅读
    <b class='flag-5'>关于</b>SFP连接器<b class='flag-5'>你</b>必须<b class='flag-5'>了解</b>的那些知识

    鸿蒙5开发宝藏案例分享---性能优化案例解析

    发现问题 : // 页面初始化时同步执行耗时操作 aboutToAppear() { initData(); // 耗时2s的同步操作 } 优化方案 : // 拆分为异步任务
    发表于 06-12 16:36

    EMI电源滤波器:真的了解它吗?

    在我们生活的电子化时代,各种电子设备层出不穷,从日常的手机、电脑,到工业领域的自动化设备,都离不开稳定的电源供应。但知道吗,电源中隐藏着一个“隐形守护者”——EMI电源滤波器,它究竟是什么,又有
    的头像 发表于 05-28 18:50 656次阅读

    充电接口真的了解吗?

    USB(Universal Serial Bus,通用串行总线)自1994年诞生以来,已成为我们日常生活中不可或缺的接口标准。从键盘、鼠标到手机、充电宝,USB接口无处不在。但知道USB接口也有
    的头像 发表于 05-18 17:39 5340次阅读

    FPGA时序约束之设置时钟组

    Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束中设置了时钟组或false路径。使用set_clock_groups命令可以使时序分析工具不分析时钟组中时
    的头像 发表于 04-23 09:50 1622次阅读
    FPGA<b class='flag-5'>时序</b>约束之设置时钟组