- 博客(71)
- 资源 (1)
- 收藏
- 关注
原创 【数字】一篇文章读懂数字芯片中的时钟门控单元/时序/ICG/clk gater
喜欢品英文的同学们直接品英文~ 稍后更新论文链接clock gate的概念是将如果function block中的功能在这个时刻是不需要工作的,那可以通过直接将clock关断的操作来达到降低功耗的目的。在RTL级时就可以通过插入icg cell或者写出能综合出icg的代码。在做设计的时候,降低动态功耗的本质就是降低信号的翻转率,相同情况下信号翻转的频率越低功耗越小。
2024-11-06 15:37:29 767
翻译 【科普】Netflix:我们是如何评估Codec性能的?
因此,一项基本任务是评估我们使用的材料的质量,在Netflix编码厨房中,我们通过定期评估现有和即将推出的视频编解码器和编码器的性能来实现这一目标。这些是大多数公司为其编码需求和应用中的速度和资源的限制而部署的实际实现。使用调和平均值的原因是,如果在你正在观看的节目的镜头中有很少的帧看起来很糟糕,那么不管剩下的镜头质量有多好,你的体验都不会那么好。考虑到Netflix等服务压缩和提供的大量视频,传统和自适应流媒体方法不一定会收敛到相同的结果,如果视频编码社区在比较中考虑自适应流媒体的应用,这将是有益的。
2024-11-01 15:16:09 20
原创 【SoC】被忽略的reset结构设计
如果不满足recovery time或者remove time的话,就会产生亚稳态,DFF并不清楚此刻的状态假如现在是一个子系统,那么此时就会出现有一部分DFF是复位的有一部分DFF是解复位的状态,整个子系统可能会出错。那么问题又来了,当整个系统过于庞大或频率过高的时候,端口处只做2级的sync是不够的,像文章开头ARM A72的设计一样,会对reset进行reset pipeline打拍,从顶层的port口传到下面的Block中,以此来确保整个subsystem的reset时序满足。
2024-10-24 17:03:19 289
原创 【工具】Overleaf如何显示中文【亲测有效】
在.tex文件首行添加如下代码: %-- coding: UTF-8 -- \usepackage [UTF8] {ctex} 设置编译器为XeLaTex,左上角Menu->Compiler->XeLaTex。 在文档的开头添加"usepackage {xeCJK}",这样就引入了xeCJK包。 将编译器设置为XeLaTeX或LuaLaTeX,可以在左上角的Menu选项中进行设置。 使用ctex或xeCJK宏包在编辑界面中输入中文。
2024-10-23 09:57:45 373
原创 【科普】边缘计算和云计算及边缘AI应用
总的来说,云计算适合处理大规模数据和需要集中管理的场景,而边缘计算则适合需要快速响应和处理大量实时数据的应用。在实际应用中,边缘计算和云计算往往可以结合使用,以发挥各自的优势。例如,边缘设备可以处理实时数据并做出快速决策,而将非实时数据发送到云端进行长期存储和深入分析。这种结合使用的方式有时被称为“雾计算”。边缘计算和云计算是两种不同的计算模型,它们在处理数据和执行计算任务方面有着各自的特点和优势。还得是NV啊看看这个就很清晰了。
2024-10-22 15:40:54 956
原创 【ARM】ARM架构参考手册_Part B 内存和系统架构(2)
对于这些寄存器中的一些,寄存器访问指令中的额外位被用来识别寄存器的特定版本和/或对寄存器的特定类型的访问,因此CP15中物理32位寄存器的数量可能超过16个。然而,4位的主要寄存器号被用来在系统控制协处理器的描述中识别寄存器,因为它是决定寄存器功能的主要因素。然而,内存和系统架构的新实现必须实现系统控制协处理器,并必须遵循一些额外的规则,这些规则涉及哪些设施被实现。在使用CP15时,需要注意操作系统的要求,避免出现兼容性问题,并仔细阅读相关文档,确保对CP15寄存器的操作是安全的。
2024-10-22 11:32:52 862
原创 【ARM】ARM架构参考手册_Part B 内存和系统架构(5)
例如,如果系统预期会有大量的写操作,并且这些写操作会频繁地重用相同的数据,那么写分配缓存可能会提供更好的性能,因为它可以减少对主内存的访问次数。在写回缓存中,它反而会导致不可预测的行为,或者选择写通过缓存,如上的表所示。与读分配缓存相比,写分配缓存可能会产生额外的主内存读取访问,这些访问在其他情况下可能不会发生,或者因为数据现在在缓存中,从而节省了后续存储操作的主内存访问。当这种情况发生时,所需的缓存清理和失效的性能成本可能很大,这既是直接执行缓存控制操作的结果,也是间接因为指令缓存需要重新加载的结果。
2024-10-22 10:32:51 1250
原创 【ARM】ARM架构参考手册_Part B 内存和系统架构(1)
对内存的字和半字访问忽略地址的对齐,并访问自然对齐的值(因此,内存访问忽略了字访问的地址位0和1,半字访问忽略了位0)。在设计和实现信号量时,选择合适的内存区域和指令使用方式至关重要,以确保系统的稳定性和性能。ARM处理器通常不提供单个物理页面的多个虚拟副本之间的一致性。这通常涉及到与硬件设备交互,以清除设备上的中断标志,以及可能的软件状态更新,以反映中断处理的结果。对于具有写回缓存的实现,在对MMU页表进行任何更改之前,必须将所有脏缓存数据回写到内存,以确保缓存行回写可以使用页表形成传输的正确物理地址。
2024-10-21 15:51:01 582
原创 【ARM】ARM架构参考手册_Part A CPU(2)
这种部分重叠的寄存器bank设计意味着,当处理器切换模式时,某些寄存器(如R0到R14和PC)在所有模式中都是共享的,而其他寄存器(如R13和R14)则在不同模式下有特定的用途,并且可能有不同的名称和行为。但是,如果一个在IRQ模式下运行的中断处理程序重新启用IRQ中断,并且发生了嵌套的IRQ中断,那么外部中断处理程序当时在R14_irq中保存的任何值都会被嵌套中断的返回地址覆盖。当一个指令写入R15而不违反其使用限制时,通常的结果是写入R15的值被视为指令地址,并且会跳转到该地址执行指令。
2024-10-21 15:24:41 873
原创 【ARM】ARM架构参考手册_Part A CPU(1)
它在大多数指令中可以作为指向正在执行的指令之后的两个指令的指针。其他十四个值指定指令的条件执行。比较指令的源操作数采用与算术/逻辑指令相同的形式,包括能够包含移位操作的能力。这些指令通过与协处理器的交互,扩展了ARM处理器的能力,使其能够处理更复杂的计算任务。这个寄存器保存了在分支链接(BL)指令之后的下一个指令的地址,BL指令是用来进行子程序调用的指令。除了允许许多数据处理或加载指令通过写入PC来改变控制流外,还提供了一个标准分支指令,该指令有一个24位的有符号偏移量,允许向前和向后分支最多32MB。
2024-10-21 14:36:53 752
原创 【工具使用】Verdi的protocol Analyzer使用
Verdi Protocol Analyzer Debug 简单使用 - burlingame - 博客园
2024-10-16 09:20:03 111
原创 【工具使用】VCS仿真暂停dump波形_保存session,restore session
将波形dump下来,此时查看完波形之后再输入run,仿真继续进行。这指出如果不使用fsdbDumpflush仿真路径下会产生较多关于fsdb的相关文件,输入指令之后发现只剩下.fsdb。然后在ucli交互指令restore file_name 即可重新载入之前的session。如果在仿真过程中想要保存session想后期再重启启动,以防止中途仿真时出现的突发状况。在仿真运行的过程中我们知道使用ctrl+c可以进入ucli的交互界面,然后使用。重新进入./simv -ucli。
2024-10-14 11:04:18 247
原创 【ARM】v8架构programmer guide(6)_MMU内存管理模块
快进到内存管理模块吧,其他的后面再补充~内存管理单元(MMU)允许任务或应用程序以一种不需要了解系统物理内存映射,或者可能同时运行的其他程序的方式编写。这允许您为每个程序使用相同的虚拟内存地址空间。它还允许您即使物理内存是碎片化的,也能使用一个连续的虚拟内存映射。这个虚拟地址空间与系统的实际物理内存映射是分开的。应用程序是在虚拟内存空间中编写、编译和链接的。
2024-10-10 16:34:42 994
原创 【AMBA】Read and write Shareable transaction types
对于仅支持ACE-Lite的主设备,这些主设备没有AC通道,即一般是给没有Cache的设备使用,但是有snoop通道可以监听其他的主设备,所以可以发送一些主动的Cache maintenance的传输,对于读传输来说Coherent的传输几乎不能发,只能发ReadOnce。这意味着 WriteEvict 事务是一种优化操作,它允许系统在不违反缓存一致性原则的情况下,将不再需要的干净缓存行移动到缓存层次结构中的更低级别,或者完全从缓存中移除。同时,这也确保了主设备是唯一可以访问该缓存行的设备,
2024-09-24 15:54:13 996
原创 【数字】DDR交织/interleaving/地址分配
首先这样做的目的主要还是保证对于DDR来说看到的地址是连续的,这样读写效率较高,不会浪费DDR的地址空间。这样的地址转换会将addr[30]映射到addr[12]上。第一片4K地址0~4K,0~FFF ==> 0~FFF , 0x2000~0x2FFF ==> 0x1000~0x1FFF,依次递增,那对于DDR来说看到的依然是连续的地址。验证:0~FFF位的addr[12] =0, 1000~1FFF的addr[12]=1, 4000_0000~4000_0FFF的addr[12] = 1。
2024-09-23 19:45:19 474
原创 【数字】flexnoc Qos配置
当一笔request的最后一个response回来的时候,增加这笔request传输的总bytes数,然后按照设置的bandwidth 需求来每个cycle减少相应的bytes,便会出现上图中的楼梯型图像。因为在软件界面处也会配置saturation的配置,在实际使用的时候可能当SocketQoSEn开启的时候会使用register value,当没开启的时候使用的就是一开始软件配置的默认值。当SocketQosEn开启的时候会使用qos generator和Socket QoS中最大的那个QoS值。
2024-09-23 19:12:56 558
原创 【ARM】SMMU系统虚拟化(4)
这个概念的理解是,假如使用的是4KB的granule,IA(input address)的位宽是35位,根据IA bits resolved at different levels of lookup 表格,可以得出initial level为 level 1。在ARMv8架构中,地址翻译可以是多阶段的。以4KB转换粒度为例,如果使用单个转换表,第一阶段查找可以解析39位的IA,即IA[38:30]。串联转换表技术,允许地址翻译的初始查找级别中解析更多的输入地址(IA)位。
2024-09-20 18:36:37 577
原创 【数字】xilinx的AXI VIP如何使用的guide
AXI Stream VIP 可用于为支持定制 RTL 设计流程的 AXI 主设备及 AXI 从设备验证连接和基本功能性。此外,它还支持贯通模式,该模式明显有助于用户监控事务处理信息/吞吐量或驱动有源激励。AXI VIP 提供的实例测试台和测试可演示 AXI4-Stream 的能力。这些实例可作为一个起点,为支持 AXI3、 AXI4、和 AXI4-Lite 接口的定制 RTL 设计创建测试。这些实例可通过 IP 集成器访问。AXI 验证 IP (VIP)
2024-09-11 15:02:46 506
原创 【数字时序】介绍三种芯片timing model(ETM\ILM\HS)
另外,使用HS时还有一个top context的概念,这个context就是指block外的和block port相连的一些timing信息,就是说不仅仅top层在做timing分析的时候可以用block的timing model,block层在做timing分析的时候也可以看到top层的一些东西,一般也是port到第一级reg为止的信息。其实ETM模型就很像我们用的cell的lib,都是只能看到它们的pin或者port,所得到的delay信息都是黑匣子式的,内部具体的delay都是被隐藏的。
2024-09-05 10:53:44 773
原创 【数字】AXI burst跨4k的问题
4K对齐,以32位地址为例,[31:12]相等的地址都是同一个page,没有跨4K边界。ARM对AHB burst这样设计的目的是在于,SLAVE的地址访问空间基本都是以1KB为单位的,当AHB以burst方式传输时,为了避免错误的访问到其他的Slave空间而造成系统致命错误,因此在burst传输时限制1KB,若需要跨1KB边界时,需要重新initial一个新的传输。在AHB划分系统时,最小的地址空间为1KB,即slave至少地址空间是1k,或者2K,或者1M等。Q2:“4K/1K对齐的”是什么意思?
2024-08-27 18:27:45 653
原创 【数字】理解1/256字节每周期的吞吐量阈值
1/256字节每周期的吞吐量表示系统在一个时钟周期内能够处理多少个1/256字节的单位。为此,我们需要了解以下几点:1字节 = 8位:字节由8位组成,因此1/256字节相当于将1字节分成256个部分。吞吐量计算:如果一个系统可以每周期处理N字节,那么其以1/256字节每周期为单位的吞吐量为: [ \text{吞吐量} = N \times 256 ]例如,如果系统每周期可以处理2字节,那么其吞吐量为512(即512个1/256字节单位)。
2024-08-27 16:11:10 432
原创 【数字时序】SI(信号完整性分析)/Cross talk(串扰)/Delta delay/噪声/消除delay和噪声的方法/Infinite window/Timing window
前言信号完整性(Signal Integrity)指的是在周围高频电磁干扰环境中依然能够保持信号稳定的能力;串扰(Crosstalk)指的是相邻的两条或多条net之间的耦合电容带来的相互影响。随着工艺越来越先进,布线密度越来越高,串扰带来的影响越来越重要。
2024-08-26 20:08:40 1461
原创 【数字时序】时钟树延迟偏差——CPPR adjustment
但对于common path,在计算setup的时候,作为launch path使用的是max delay,作为capture path使用的是min delay,这会导致结果过于悲观,所以需要去除这个计算的悲观量。当CRP的值小于给定的timing_crpr_threshold_ps时,路径不做CRPR补偿,保留一定的悲观度,因此 report_timing报出来的CRP值与report_crpr报出来的CRP值差距不会超过timing_crpr_threshold_ps的值。
2024-08-26 14:39:57 922
原创 【数字时序】Innovus时序报告解读
而实际需要check的时钟沿和理想时钟沿有一定偏移,因此,工具需要根据自己的算法加上phase shift,才能得到它真正要去check的时钟沿。如果你生成的clock是positive clock,clock的rising edge就是leading edge,falling edge就是trailing edge。如果你生成的clock是negative clock,clock的rising edge就是trailing edge,falling edge就是leading edge。
2024-08-26 14:04:22 1240
原创 【SOC】DMA时钟使用限制
这3个信号中只有write_enable同步到了dma_core_clk的时钟域,write_byte_en和write_data仍然使用的是config配置时钟。分析它为什么这么设计的原因:可能是默认dma_core_clk在异步使用的时候,默认dma_core_clk会快于config时钟,在这种情况下,write_byte_en和write_data使用config时钟也能被正常采样到,不会出错。先给出结论:在使用异步的时候DMA的配置时钟不要快于dma_core_clk。
2024-08-15 11:45:12 360
原创 【ARM】Cortex-A72技术手册(1)
这意味着ACP接口允许某些类型的加速器或辅助处理器以一致性的方式访问主处理器的内存,但这些加速器不能主动发起需要处理器响应的一致性操作或同步指令。当处理器中的任何核心执行SEV指令时,EVENTO信号被断言,表示向所有核心发出事件信号,并且EVENTO信号在任何核心执行SEV指令时保持高电平三个CLK周期。执行WFE指令时,核心等待核心中的所有指令完成后再进入空闲或低功耗状态。,简称WFE)是ARMv8-A架构的一个特性,它使用基于事件的锁定机制,通过禁用核心的时钟同时保持核心供电,将核心置于低功耗状态。
2024-08-13 11:44:13 1294
原创 【ARM】v8架构programmer guide(5)_ARMv8指令集介绍
ARMv8架构中最显著的变化之一是引入了64位指令集。这个指令集补充了现有的32位指令集架构。这一增加使得处理器可以访问64位宽的整数寄存器和数据操作,并且可以使用64位大小的内存指针。这些新指令被称为A64,并在AArch64执行状态下执行。ARMv8还包括了原始的ARM指令集,现在称为A32,以及Thumb(T32)指令集。A32和T32都在AArch32状态下执行,并提供与ARMv7的向后兼容性。
2024-08-08 09:53:10 1582 1
原创 【ARM】v8架构programmer guide(4)_ARMv8的寄存器
这些128位寄存器在NEON指令中可以被当作一个128位的单一寄存器使用,或者在某些操作中被分为较小的寄存器组,例如两个64位寄存器或四个32位寄存器。这意味着在进行状态转换时,AArch64的异常链接寄存器的高32位不会被AArch32状态中的相应寄存器值所影响,而是被清零,以确保在AArch64环境中以一致的64位状态进行处理。这个映射的一个后果是,如果一个在AArch64下执行的程序正在解释来自AArch32执行的D或S寄存器,那么程序必须在使用这些寄存器之前,将D或S寄存器从V寄存器中解包出来。
2024-08-07 19:31:03 1021
原创 【ARM】v8架构programmer guide(3)_ARMv8的寄存器
在ARMv8架构的AArch64执行状态中,提供了31个64位的通用寄存器,这些寄存器在所有异常级别(Exception Levels, EL)上始终可访问。这些寄存器通常被称为X0到X30。每个AArch64 64bit的寄存器X0-X30也有一个32bit的格式。在ARMv8架构的AArch64执行状态中,每个64位通用寄存器X0到X30都有一个对应的32位宽的低半部分寄存器,称为W0到W30。:例如,W0是X0的低32位,W1是X1的低32位。
2024-08-07 10:30:42 978
原创 【ARM】v8架构programmer guide(2)_处理器及V8基础
ARMv8-A引入众多改变:在ARMv8中,执行发生在四个异常级别(Exception levels)中的一个。在AArch64状态中,异常级别决定了特权级别,这与ARMv7中定义的特权级别类似。异常级别决定了特权级别,因此在异常级别ELn上的执行对应于特权级别PLn。同样,如果一个异常级别的n值比另一个大,它就处于更高的异常级别。一个异常级别如果n值比另一个小,就被称为处于较低的异常级别。异常级别为软件执行特权提供了逻辑上的分离,这适用于ARMv8架构的所有操作状态。它类似于并且支持计算机科学中常见的分层
2024-08-06 19:55:50 1071
原创 【ARM】v8架构programmer guide(1)_基本介绍
程序员指南的目的是补充而不是取代现有的ARM文档,例如处理器本身的技术参考手册(TRMs)、个别设备或板子的文档,或者最重要的是ARM架构参考手册(ARM ARM)。它们旨在以温和的方式介绍ARM架构,并以易于阅读的格式涵盖所有主要概念,包括实际的C语言和汇编语言代码示例,并提供编写自己代码的提示和技巧。可以说,如果你是一个应用程序开发者,你不需要知道处理器内部发生了什么。ARM应用程序处理器可以很容易地被视为黑盒子,当你说开始时,它们就会运行你的代码。
2024-08-06 15:15:04 982
原创 【ARM】SMMU系统虚拟化(3)_ VMSAv8-64 address translation stages
讲解颗粒度granule size如何影响地址转换的过程:对于每个颗粒度来说:由上面的例子我们知道,当超过39的时候,initial level会从level0 开始,但是level0不支持block 的分配方式,只有level1和level2支持block,所以只有table。由这个例子可以推测出如果系统的地址空间是44bit,使用4KB的translation granule的时候,那么TTBR[47:44]必须是0,TTBR[43:12]持有translation table base address
2024-08-05 16:00:28 399
原创 【ARM】SMMU系统虚拟化(2)_转换页表的配置方式boot_code.s
在ARMv8架构中,是一个特殊的汇编语言源文件,通常用于编写启动代码。启动代码是系统启动时首先执行的代码,负责初始化系统环境,设置堆栈,以及跳转到操作系统的启动例程。以下是初始化堆栈:在系统启动时,需要设置一个初始堆栈,以便程序可以正常执行函数调用和返回。设置BSS段:BSS段(Block Started by Symbol)是未初始化的全局变量和静态变量的区域。启动代码通常需要将这个区域清零。设置控制寄存器:启动代码可能需要设置一些控制寄存器,以配置处理器的工作模式和行为。跳转到操作系统启动例程。
2024-08-02 17:13:15 1094
原创 【SOC】总线中常见的仲裁方式Arbitration
如果多个输入输出具有相同的压力水平,并且该水平在具有不同压力水平的其他端口中的等级最高,则使用仲裁算法来现在组中具有最高压力的端口之一。竞争树用于选择授予哪个仲裁端口,当端口数量是2的幂时,仲裁时公平的,除此之外,一些端口的竞争水平低于其他端口,对树状分支内的端口进行排序,以确保没有哪个端口比其他端口的竞争水平低一个以上。对于Round Robin来说每个端口的priority都是轮询的,观察下图及priority都是逐渐递增的,会造成周期性的问题。仲裁时,具有最低端口优先级的端口会被授予权限。
2024-08-01 16:48:32 274
原创 【AMBA】AXI4 Ordering Model,保序,ID规则
工作日志记录补坑篇把之前记录在笔记本上的笔记慢慢转移到博客上,之前提过一次把transaction的保序规则记录一下,花几十分钟整理一下。
2024-07-31 10:26:57 880 1
原创 【AMBA】Atomic sequences and exclusive accesses(原子序列和互斥访问)
协议整理#经常碰到的原子访问和互斥访问,这个概念在多核系统中非常常见了,很多不同地方会有不同的概念,以ARM的架构为主整理一下这两个操作,有个清晰的概念吧。ps:主要是因为NoC里面的写的我有点懵了,还是看看AMBA的文档吧。
2024-07-26 14:06:34 723
原创 【数字】三态门,双向端口,HDL描述
工作记录#之前工作的时候,负责GPIO的同事被负责人问“三态的en开启的时候是直通的吗?” 他支支吾吾的回答“是的吧”,负责人又问了一句,他就有点不自信了,顺手记录一下这个在SoC设计中非常场景的逻辑。
2024-07-23 10:52:28 554
原创 【SOC】MPU粗略记录
参考文章:Isolation Methods in Zynq UltraScale+ MPSoCs Application Note (XAPP1320) • 查看器 • AMD 技术信息门户
2024-07-22 17:10:28 150
谁有芯片验证中的VIP资源分享?
2024-08-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人