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

    文章

    5940

    浏览量

    175446
  • 时序
    +关注

    关注

    5

    文章

    387

    浏览量

    37309
  • Setup
    +关注

    关注

    0

    文章

    30

    浏览量

    11986
  • MASTER
    +关注

    关注

    0

    文章

    103

    浏览量

    11281

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

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

收藏 人收藏

    评论

    相关推荐

    关于磁通计了解多少?

    一、什么是磁通计 磁通计(flux meter)是一种采用电子(或数字)积分器测量感应电压的仪器,可用于空间磁场测量和磁性材料研究。磁通计的基本原理基于法拉第电磁感应定律,通过测量线圈内磁通变化时
    的头像 发表于 12-10 08:50 62次阅读
    <b class='flag-5'>关于</b>磁通计<b class='flag-5'>你</b><b class='flag-5'>了解</b>多少?

    了解TI基于PCB布线规则的DDR时序规范

    电子发烧友网站提供《了解TI基于PCB布线规则的DDR时序规范.pdf》资料免费下载
    发表于 10-15 11:47 1次下载
    <b class='flag-5'>了解</b>TI基于PCB布线规则的DDR<b class='flag-5'>时序</b>规范

    关于工厂人员定位,这几点了解吗?

    工厂人员定位可以实现人员实时定位、电子围栏报警、历史轨迹查询、事故追溯等功能,那除了这些,工厂人员定位系统,还有哪些亮点功能,了解过吗?下面详述关于云酷科技工厂人员定位的特色功能。智能门禁联防
    的头像 发表于 09-18 10:16 268次阅读

    求助,关于STM32H7 FMC模式1的NADV时序问题求解

    模式1中手册上没有写关于NADV引脚的时序,但是cubemx生成的代码有这个引脚。这个引脚的时序可以参考其它工作模式吗?
    发表于 09-09 07:23

    锁存器的基本输出时序

    在深入探讨锁存器的输出时序时,我们需要详细分析锁存器在不同控制信号下的行为表现,特别是控制信号(如使能信号E)的电平变化如何影响数据输入(D)到输出(Q)的传输过程。以下是对锁存器输出时序的详细描述,旨在全面覆盖其工作原理和
    的头像 发表于 08-30 10:43 537次阅读

    认识贴片电阻吗,对他了解多少?

    认识贴片电阻吗,对他了解多少?
    的头像 发表于 08-27 15:49 442次阅读
    <b class='flag-5'>你</b>认识贴片电阻吗,<b class='flag-5'>你</b>对他<b class='flag-5'>了解</b>多少?

    优化 FPGA HLS 设计

    优化时序 下一步是使用名为InTime 的设计探索工具(https://www.plunify.com/en/free-evaluation/)。(同样,可以自己编写脚本来尝试
    发表于 08-16 19:56

    OpenHarmony之开机优化

    一丶环境信息 源码版本:OpenHarmony-4.1-Release 板子型号:dayu200(RK3568) 二丶Bootchart工具 在开机优化时,我们需要借助Bootchart工具,当前
    发表于 07-01 16:39

    真的了解驻波比吗?到底什么是电压驻波比?

    真的了解驻波比吗?到底什么是电压驻波比?在很长一段时间内,小编对驻波比的了解仅限于这样一个概念:它是一个用于描述波反射大小的物理量,取值范围[1, ∞],值越小,就表示反射越小,值越
    的头像 发表于 05-29 14:27 3923次阅读
    <b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>驻波比吗?到底什么是电压驻波比?

    关于ECU 和 MCU ,了解多少?

    关于MCU和SoC的区别,有一些争议;同时ECU和MCU的区别,也有一些争议。如果按照芯片工程师的理解,可以把SoC和MCU都理解为单片机;那虚拟原型技术既可以虚拟化MCU,也可以虚拟化ECU,也是
    的头像 发表于 05-11 08:10 3155次阅读
    <b class='flag-5'>关于</b>ECU 和 MCU ,<b class='flag-5'>你</b><b class='flag-5'>了解</b>多少?

    真的了解110配线架吗

    110配线架是一种常见的网络设备,主要用于计算机网络中数据和电话传输的配线系统。作为综合布线系统的核心产品,它起着传输信号的灵活转接、灵活分配以及综合统一管理的作用。综合布线系统的最大特性是利用同一接口和同一种传输介质,让各种不同信息在上面传输,而这一特性的实现主要通过连接不同信息的配线架之间的跳接来完成。 110配线架早期主要用于网络系统配线,现在则主要用于电话系统配线,俗称鱼骨架。一般来说,一个110配线架为
    的头像 发表于 04-23 11:46 1465次阅读

    fpga时序仿真和功能仿真的区别

    FPGA时序仿真和功能仿真在芯片设计和验证过程中各自扮演着不可或缺的角色,它们之间存在明显的区别。
    的头像 发表于 03-15 15:28 2171次阅读

    快速全面了解大模型长文本能力

    关于LLM的长文本能力,目前业界通常都是怎么做的?有哪些技术点或者方向?今天我们就来总结一波,供大家快速全面了解
    发表于 02-22 14:04 837次阅读
    快速<b class='flag-5'>全面</b><b class='flag-5'>了解</b>大模型长文本能力

    关于JTAG口,了解多少?

    设想是JTAG口坏了,于是乎,本人换了usb-blaster,可一点反应也没有。难道真的是JTAG口坏了?于是,本人就去查阅相关资料去搞清楚问题的本质在哪里,下面就是本人的一些收获,分享出来,仅供各位
    发表于 01-19 21:19

    半导体≠芯片:真的了解半导体技术吗?

    的脉搏。事实上,这种观念是片面的,甚至是有害的。本文将阐述新能源与电池、半导体与芯片之间的区别与联系,以帮助读者更全面了解这些领域。
    的头像 发表于 12-22 09:57 1328次阅读
    半导体≠芯片:<b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>半导体技术吗?