dc综合的sdc约束
单周期时序约束 时序约束的内容 所有输入逻辑路径(从输入端口开始) 内部(寄存器到寄存器)路径 所有输出路径(结束于输出端口) DC将设计分成时序路径,每个路径都有一个: 起始 Input port 触发器或寄存器的时钟引脚 终点 + output port + 顺序设备的任何输入引脚,时钟引脚除外 对时钟进行约束 创建时钟 12# 设置时钟的周期约束create_clock -period 2 [get_ports clk] 模仿时钟到寄存器的时钟延时,clk到两个触发器的时间是不一样的 表示组合路径的最大延迟只能是1.78,必须将clock的uncertainty考虑进来 1set_clock_uncertainty -setup 0.14 [get_clocks clk] 设置时钟到达的latency,-source表示外部源时钟的延迟 12set_clock_latency -source -max 3 [get_clocks clk] # source latency 约束set_clock_latency ...
spyglass使用
参考链接: spyglass使用教程-CSDN博客 Spyglass介绍 SPYGLASS是很高效的RTL分析和CDC检查工具,可以有效的帮助规避设计中的难以察觉的问题,帮助设计人员提高设计质量 SpyGalss是目前业界唯一可靠的RTL Sign off解决方案,可以帮助客户在设计早期发现潜在问题,保证产品质量,极大的减少设计风险,降低设计成本。 包含五大模块:lint, CDC(跨时钟域检查), LP(低功耗),Constraint(约束),DFT(可测试性) Spyglass的重要性 图形化界面使用 设计导入和编译 导入设计 打开界面,在终端输入spyglass add file添加设计文件 为了方便,可以将所有文件先整合到filelist.f中 12find ../rtl/ -name "*.v" >> filelist.ffind ../rtl/ -name "*.sv" >> filelist.f 之后再add files中直接添加list文件即可 注意事项 对于一些macro,...
axi总线
参考文章链接: AMBA总线3-AXI 咸鱼IC 深入理解AMBA总线(十五)AXI-stream - 知乎 基本概述 AMBA3版本推出了AXI协议,它支持高性能、高频率的系统设计,其主要特点如下所示: 分离的地址/控制和数据阶段 通过字节选通方式支持非对齐的数据传输 使用基于突发的事务,只需其实地址发出。(Burst不得跨4KB边界,防止跨越Slave边界) 单独的读写数据通道,这可以提供低成本的直接内存访问(DMA) 支持发布多个超前地址(outstanding) 支持完成乱序事务(out-of-oder) 易于添加register stage达成时序收敛 AXI协议包括涵盖低功耗操作的可选扩展信号 AXI协议是基于突发的,并定义了五个独立的事务通道。地址通道携带着控制信息,用于描述传输数据的性质。五个独立通道都由一组信息信号、以及提供双向握手机制的VALID和READY信号组成。 Master使用VALID信号来显示信道上的addr、data或ctrl信息何时可用 Slave使用READY信号来显示它何时可以接受信息 读数据通道和写数据通道还包括LAST信号,以指...
任意小数分频电路
参考链接: 5.3 Verilog 时钟分频 | 菜鸟教程 小数分频基本原理 attention注意这样实现的小数分频只有统计意义,并不是真正意义上的小数分频 info不规整的小数分频不能做到分频后的每个时钟周期都是源时钟周期的小数分频倍,更不能做到分频后的时钟占空比均为 50%,因为 Verilog 不能对时钟进行小数计数。和半整数分频中第一次分频时引入的"平均频率"概念类似,小数分频也是基于可变分频和多次平均的方法实现的。 例如进行 7.6 倍分频,则保证源时钟 76 个周期的时间等于分频时钟 10 个周期的时间即可。此时需要在 76 个源时钟周期内进行 6 次 8 分频,4 次 7 分频。再例如进行 5.76 分频,需要在 576 个源时钟周期内进行 76 次 6 分频,24 次 5 分频。 下面阐述下这些分频参数的计算过程。 当进行 7 分频时,可以理解为 70 个源时钟周期内进行 10 次 7 分频。在 76 个源时钟周期内仍然进行 10 次分频,相当于将多余的 6 个源时钟周期增加、分配到 70 个源时钟周期内,即完成了 7.6 倍分频操...
同步FIFO设计
verilog设计 同步FIFO设计 note同步FIFO可以解决位宽,速率的匹配 note重点在于读写指针的控制 !!!important 怎么具体判断FIFO是空还是满: + 方法1 设计fifo_cnt,当为深度的时候,为满 wr_en的时候+1,rd_en的时候-1,wr_en和rd_en同时为高的时候counter不变 当fifo_cnt等于DEPTH的时候为满,否则为空 + 方法2 指针多扩展1bit,当标志位不一样的时候就是满标志,否则是空标志 补充 当FIFO的读写位宽不匹配的时候 16to8,即写是16bit,读是8bit的时候 attention mem声明的时候应该声明成8bit的位宽 单次写入的时候,wr_ptr一次不是加1,而是加2,单次读出的时候,cnt-1 同时读写的时候,cnt+1 实现代码示例 123456789101112131415161718192021222324252627282930313233343536373839404142434445464...
异步FIFO设计
异步FIFO设计 同步器 异步FIFO的作用: 用于在不同时钟域之间安全地传输数据 同步器 对于跨时钟阈之间的信号传输,需要进行同步处理 一般来讲,我们可以采用同步器(2-3级FF组成)对单bit的信号进行同步操作 由于异步FIFO也涉及了跨时钟域,因此在具体的设计中需要用到同步器的相关内容 异步FIFO结构图 具体设计中存在的重要点和注意事项: 在读写指针中,不同时钟域之间要注意同步问题,bin和gray码之间的转换 对于FIFO的标志信号,full对应的是写时钟域的,empty对应是读时钟域的 二进制/格雷码 二进制转格雷码 使用格雷码的最高位作为二进制的最高位,二进制次高位产生过程是使用二进制的高位和次高位格雷码相异或得到,其他位的值与次高位产生过程类似 12345678910module bin2gray#( parameter DATA_WIDTH = 8)( input [DATA_WIDTH-1: 0] bin_data , output [DATA_WIDTH...
axi死锁分析
参考文章: (44 封私信 / 80 条消息) 【学习笔记】AXI总线死锁场景分析与学习 - 知乎 分享一种总线死锁场景_axi死锁-CSDN博客 (44 封私信 / 80 条消息) 【犄角旮旯的bug】只不过想把通道对齐,怎么就逻辑环了呢? - 知乎 死锁产生的条件 广义上的死锁包括很多种场景,线程死锁、任务死锁和总线死锁等,而死锁的发生必须具备一定的条件。死锁的发生必须具备以下四个必要条件,即柯林斯四条件 互斥条件(Mutual Exclusion):指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放 请求和保持条件(Hold and Wait):指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放 不可剥夺条件(No Preemption):指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放 环路等待条件(Circular Wait):指在发生死锁时,必然存在一个进程—...
axi cache属性介绍
参考文章: 对AXI中的AxCACHE的理解 - 知乎 深入 AXI4 总线(四)传输事务属性(draft) - 知乎 non-cacheable and non-bufferable 系统级缓存 attentionAXI协议缓存相关机制是针对处理器系统级缓存的一种实现 所谓系统级缓存(system level cache)区别于处理器内部的缓存,系统级缓存提高整个系统访问外部存储的速度。当系统级缓存连接在处理器核与外部存储之间时,可以被看做处理器核外部的 L2 缓存,如下图所示 处理器核、系统缓存以及外部存储控制器通过 AXI 总线接口互联。L1 缓存位于处理器核内部。当处理器访问外部存储中的数据,在 L1 缓存中缺失时,向外部缓存发起传输事务。传输事务在通过系统缓存时,如果该事务命中缓存表项,即可直接得到结果,避免访问外部存储带来的缺失代价。 AXI3 AXI3中AxCACHE的信号如下所示 Bufferable 当 AxCACHE[0] 置高时,表示该传输事务在传输至目的地的途中,可以被 interconnect 或者任意的 AXI 组件缓存,延迟若干个周期...
axi总线进阶内容
参考链接: https://www.cnblogs.com/qianbinbin/p/17476071.html 流控的艺术:深度解析 AXI-Stream 反压机制的设计哲学 axlock详细解析 锁访问 主要使用LOCK信号,锁住一笔传输,拒绝其它传输的干扰,只有这笔传输完成之后释放Lock信号,才可以进行其它笔传输。 在M0想要发起一笔锁定传输前,需要确保是否还有在进行的传输,必须要确保之前进行的传输都已完成。 M0使用AxLOCK发起locked transaction,interconnect通过内部仲裁器确保只有M0能够访问S0,其它主机的访问都会被阻塞掉,直到锁定传输完成。 AXI3支持锁定访问,但AXI4已经不支持了 独占访问 AXI4取消锁定访问的原因是新增了独占访问,比锁定访问效率更高,还是使用AxLOCK信号。 锁定访问是不允许其它主机访问正在锁定访问的从机,而独占访问允许访问该从机,只是不允许其它主机访问相同的内存范围(memory range)。 这样既不会出现两个主机对同一块内存空间进行更改,导致数据错误;还可以一定程度保证了总线的最大...
apb总线
APB发展 APB2 该规范定义了接口信号,基本的读写传输以及APB的两个组件APB bridge和APB slave APB3 定义了下面两个附件功能 等待状态,参见Transfer 错误报告,参见Error response 对应增加的信号如下 PREADY:准备就绪信号,表示APB传输完成 PSLVERR:传输失败的错误信号 APB4 定义了以下附加功能: 事务的保护,参见Protection unit support 稀疏数据传输,参见Write stobes 对应的信号如下 PPROT:一种保护信号,用于支持非安全事务和安全事务 PSTRB:一种写掩码信号,用于在写数据总线上实现稀疏数据传输 APB5 定义了以下附加功能 PWAKEUP信号 User信号 Parity protection and check信号 Reaml Management Extension(RME)支持 APB信号 数据总线 APB协议有两个独立的数据总线,一个用于读取数据,一个用于写入数据 总线可以达到32位宽 由于总线没有各自的握手信号,...
