
FPGA所知所见所解
文章平均质量分 78
关于FPGA设计软件使用,设计常见问题分享
FPGA芯中的小蚂蚁
积极的态度,佛系的人生,带领新手入门FPGA的世界,分享各种工具小妙招。
展开
-
时序约束高级进阶使用详解一:Set_max_delay
关于Set_max_delay/Set_min_delay的基础用法之前的文章已进行过简单的介绍,主要作用就是修改时序路径默认的setup/recovery或hold/removal时间要求,本章将对约束Set_max_delay的一些细节使用进行解释。原创 2025-03-30 12:49:16 · 906 阅读 · 0 评论 -
FPGA设计时序约束用法大全保姆级说明
ff1_sense_reg/C到ff2_sense_reg/D的时序路径经过ff1_sense_i_2/O,因ff1_sense_i_2/O存在stop_propagation,因此clk1到clk2的时序分析中不存在ff1_sense_reg/C到ff2_sense_reg/D。:不在上述四大类中的时序约束属于其他类,有set_case_analysis,group_path,set_disable_timing,set_max_time_borrow四类,对应的使用参见之前的时序约束命令章节。原创 2025-03-09 14:14:18 · 1254 阅读 · 0 评论 -
FPGA设计杂谈之四:时序模型
时序模型(Timing Model) 是用于描述数字电路中信号传播延迟、时序关系和功耗特性的数学模型,是Vivado进行时序分析、优化和验证的基础。时序模型由芯片厂商提供,并以特定的文件格式(如LIB、LEF、SPEF、SDF等)存储。原创 2025-03-02 10:41:34 · 913 阅读 · 0 评论 -
FPGA设计杂谈之三:简话7系列I/O资源
HP I/O和HR I/O bank内支持的逻辑单元差异如下图,HR I/O不支持ODELAY(精确调整输出信号的延迟), HP I/O不支持ZHOLD_DELAY(调整输入信号的采样时间)I/O属性可以通过Vivado的I/O ports界面查看,包含方向,差分对端口,位置,所属bank,I/O标准,参考电压,驱动强度,偏斜类型,拉动类型,阻抗匹配,输入终端。LVDS_25 输出(输出 VCCO = 2.5V)和 HSTL_I_DCI_18 输入(输入 VCCO = 1.8V)(VCCO 不同)。原创 2025-02-23 11:47:56 · 946 阅读 · 0 评论 -
时序约束进阶八:时钟抖动Jitter与不确定性Uncertainty
在时序约束中有一类约束是针对时钟特性进行约束的,如时钟源create_clock和create_generated_clock,时钟抖动set_input_jitter,set_system_jitter,时钟不确定性set_clock_uncertainty,时钟延时set_clock_latency,时钟极性set_clock_sense。原创 2025-02-16 18:19:42 · 1098 阅读 · 0 评论 -
时序约束进阶七:Set_External_Delay详解
在时序约束中对clock的约束还存在一种特殊的延时约束set external delay。set external delay如字面含义,设置外部的时延值,但这个外部时延主要是指反馈时延,即信号从FPGA的output端口输出后经过外部电路回到输入端口的时延值。原创 2025-02-05 11:56:01 · 489 阅读 · 0 评论 -
Serdes技术与Xilinx GT概览
对于芯片间高速信号传输技术,不得不提serdes以及在Xilinx在此基础上的高速收发器GT系列,下面将简要的介绍Serdes技术以及Xilinx的GT。原创 2024-12-15 18:09:47 · 1048 阅读 · 0 评论 -
时序约束进阶六:Set_Clock_Groups详解
Vivado的时序分析工具默认会分析设计中所有时钟间相关的时序路径,如果对于一些时钟间的路径不需要分析,则可以使用set_clock_groups约束实现。原创 2024-12-01 20:09:13 · 1774 阅读 · 0 评论 -
FPGA设计杂谈之二:setup/hold来源
在时序分析中,不得不提的两个词,建立时间setup分析和保持时间hold分析,两者的定义如下建立时间:触发器如果要正确捕获数据信号,数据信号必须在时钟信号到达前保持稳定的最小时间,即建立时间保持时间:触发器如果要正确捕获数据信号,数据信号必须在时钟信号到达后保持稳定的最小时间,即保持时间只有数据信号和时钟信号间的关系满足建立时间和保持时间时,数据才能正确地从触发器的Q端口输出。原创 2024-11-24 11:38:38 · 964 阅读 · 0 评论 -
时序约束进阶五:Set_Max_Delay与Set_Min_Delay详解
其他跨时钟域路径就必须联合约束set_false_path或set_max_delay约束。在set_max_delay/set_min_delay的from/to为有效的时序路径起点和终点时,对路径设置set_clock_group约束,此时set_max_delay/set_min_delay优先级更高。在set_max_delay/set_min_delay的from/to为有效的时序路径起点和终点时,对路径设置set_clock_group约束,此时set_clock_group优先级更高。原创 2024-11-10 15:01:32 · 1987 阅读 · 0 评论 -
时序约束进阶四:set_input_delay和set_output_delay详解
为了在设计中准确的模拟信号从FPGA传输到外部或外部信号进入到FPGA端口的时序,在设计中需要给定输入端口和输出端口的延时信息,因为vivado仅仅能够识别边界内部的时序。此时,就需要使用到约束set_input_delay/set_output_delay。原创 2024-10-08 14:25:48 · 2464 阅读 · 0 评论 -
Vivado时序报告二:Report CDC详解
前面已经针对Vivado时序Timing报告相关的如Minimum pulse width,datasheet等进行了详解,本文再对其中的Report CDC使用进行解说。原创 2024-09-28 12:41:35 · 1360 阅读 · 0 评论 -
时序约束进阶三:Create_clock与Create_Generated_Clock详解
时序约束中,使用Create_clock约束来生成主时钟,主时钟可以说是设计的心脏。主时钟是来自FPGA芯片外部的时钟,通过时钟输入端口或高速收发器GT的输出引脚进入FPGA内部。对于赛灵思7系列的器件,主时钟必须手动定义到GT的输出,对于Ultrascale和Ultrascale+系列的器件,定时器会自动地接入到GT的输出生成时钟通常来源于设计内部的时钟管理单元,如MMCM,PLL等,生成时钟是与主时钟(使用create_clock创建的时钟)相关,其来源来自主时钟或其他生成时钟。原创 2024-09-17 14:15:31 · 3056 阅读 · 0 评论 -
时序约束进阶二:set_max_time_borrow详解
Set_maximum_time_borrow约束是设置锁存器用于优化时序可以从下一个阶段中借用的最大时间。下面对setup_maximum_time_borrow的使用场景进行介绍。存储电路设计有两种类型:触发器(Flip Flop)和锁存器(Latch)。a)使用触发器的设计数据从时钟的上升沿启动,必须在下一个时钟上升沿到达前的set up时间内到达目的触发器,如果两个触发器的组合逻辑时延太大,那么数据将没法被捕获触发器所捕获,捕获的数据将不稳定,如果数据到达的时间太早,造成时间资源浪费。原创 2024-09-01 11:38:15 · 1004 阅读 · 0 评论 -
Xilinx 7系列收发器GTX入门讲解
芯片间的数据传输根据同一时间传输的bit数分为串行传输和并行传输。串行传输:每次传输1bit数据,该方式具有传输距离长,传输可靠,但延迟高,数据带宽低。并行传输:每次可传输多bit数据,具有传输效率高,但传输距离短,因同时多路传输相互之间存在干扰导致信号容易失真。原创 2024-08-18 11:24:16 · 2030 阅读 · 0 评论 -
Altera之FPGA器件系列简介
Altera是作为FPGA领域的头部企业,是一家老牌的技术公司,成立于1983年,在2015年时就已被Intel收购,成为了PSG部门,而在今年又重新脱离出来,成为intel的子公司,名称改回Altera。Altera的产品众多,如果是初次接触可能对各种英文名称及简称感到困惑,对于使用quartus进行工程设计时无法选择符合自己需求的器件,本文将其分类进行概述。同时,为保证准确性,内容以官网信息为主。原创 2024-08-04 17:17:48 · 2321 阅读 · 0 评论 -
FPGA设计杂谈之一:时序违例的影响
在FPGA设计中,最常提到的一个词就是时序,而与之相关最不想看到的就是时序违例。 那什么是时序违例?在工程设计中的单元可分为组合逻辑单元和时序逻辑单元,两者的区别是看是否需要时钟信号,如LUT的输入全为数据信号,不需要时钟,就是组合逻辑单元,像FF,ROM等需要有时钟信号输入的就是时序逻辑单元。原创 2024-07-21 11:22:40 · 1274 阅读 · 0 评论 -
时序约束进阶一:Set_multicycle_path详解
1、multicycle的multiplier值在setup中默认为1,在hold中默认为0(理论分析上,实际不可设置)2、multicycle约束是在默认的边沿分析对基础上根据约束对发起时钟或捕获时钟边沿进行修改针对三种典型场景的多周期约束如下。原创 2024-07-14 18:45:52 · 2066 阅读 · 0 评论 -
时序分析之Clock rise/fall edge边沿对选取解析
在对时序报告进行详细查看时,将看到source clock path或destination clock path的第一段延时都是时钟的edge,并且同一段路径的setup和hold也是不一样的,如下图的红色框内容为setup的示例,关于它的值在时序分析中是如何确定的呢?下面将对此进行详细的解答。原创 2024-06-30 16:22:11 · 1786 阅读 · 0 评论 -
FPGA结构相关简介
FPGA属于数字芯片的一种,下面是根据世界半导体贸易统计协会WSTS的一个半导体分类,可以看到FPGA所属的类别。原创 2024-06-23 13:11:12 · 279 阅读 · 0 评论 -
时序分析之setup/hold时钟path requirement解疑
在时序报告中,任选一条时序分析结果查看路径详细延时,会看到在source path delay和destination path delay中,最前面的一段延时都是时钟边沿的延时,有时该值和时钟周期相同,有时不一样,该值是如何选取的呢?同时,在summary中也可以看到Requirement,改值有时如何计算的呢,下面将针对这些就行解释。原创 2024-05-01 13:14:15 · 2144 阅读 · 0 评论 -
时序路径报告理解之小白入门详解
如果要看时序路径分析中最详细的信息,那无疑是查看具体路径上的详细延时信息,也即在report timing summary中选中需要查看路径,双击或右键点击“View path report”,该界面主要由4部分组成,包括Summary,Source clock path,Data Path,Destination Clock Path,下面将对4部分内容进行全面的解释。原创 2024-04-21 09:51:50 · 1678 阅读 · 0 评论 -
时序深入之CPR(Clock Pessimism Removal)详解
在很多设计中,CPR的精度在布线前后是不一样的。回到下图中,时钟路径中,最前面一段加粗的是源时钟路径与目的时钟路径共同的部分,根据上面的第3条,上面的路径(红色)采用最大时延即Max Delay,时钟路径用最小时延(淡蓝色)Min Delay,这时计算REGB上的setup分析时,1)静态时序分析中,通常主要进行setup分析和hold分析,两种分析本质是比较时钟路径和数据路径的时延,但时钟路径和数据路径在FPGA的时延是一个和工艺,电压,温度有关的概率时延,即同一段路径的时延值不是完全的固定值。原创 2024-04-13 10:06:58 · 1781 阅读 · 0 评论 -
Vivado时序报告一:Check_timing详解
Vivado使用中会涉及到各种报告,内容也较多,很多初学者可能对其中一些内容感到困惑,下面将结合实际工程示例对report_timing_summary中的Check_timing部分进行说明,帮助大家理解报告。原创 2024-02-29 21:53:46 · 4116 阅读 · 0 评论 -
FPGA设计时序约束用法详细说明大全终章
Vivado时序约束使用讲解大全原创 2024-02-24 13:45:00 · 3778 阅读 · 0 评论 -
时序分析深入必学的时序模型详细讲解
时序分析工具能够进行时序分析主要是依据时序模型,时序模型主要是通过单元库描述文件中的时序信息来实现,而时序信息是来自详细的实际电路仿真获取。单元库中的单元可以是独立的单元,IO缓冲器或者是复杂的IP核。原创 2024-02-21 22:03:43 · 2400 阅读 · 0 评论 -
FPGA设计时序约束十六、虚拟时钟Virtual Clock
这是因为实际的时钟clk是没有到外部单元时钟引脚的路径,时序工具无法计算时钟的时延,对于输出时延,由于捕获时钟时延根本不存在,分析结果对于setup检查将会是悲观的,对于hold将会是乐观的。输入端设置虚拟时钟virtual_clkin,周期为10ns,高电平在2-8ns内,输出端的虚拟时钟为virtual_clkout,周期为8ns。在时序约束中,存在一个特殊的时序约束,虚拟时钟Virtual Clock约束,根据名称可看出时钟不是实际存在的,主要是在STA分析时序时提供一个参考。原创 2024-01-13 23:12:05 · 2971 阅读 · 1 评论 -
FPGA设计时序约束十五、Set_Bus_Skew
因此,总线偏斜约束不会被时序例外约束,如set_clock_group,set_false_path,set_max_delay,set_multicycle_path约束影响,仅可能会被route_design优化掉。set_bus_skew的分析报告和普通时序报告结果查看有些不一致。约束文件,源时钟周期为5ns,目的时钟周期为2.5ns,set_bus_skew对两个起点src_data_reg[0]/src_data_reg[1]和两个终点out_reg[0]/out_reg[1]设置总线偏斜约束。原创 2024-01-04 21:38:53 · 2107 阅读 · 0 评论 -
FPGA设计时序约束十四、Set_External_Delay
在时序约束中对clock的约束还存在一种特殊的延时约束set external delay。set external delay如字面含义,设置外部的时延值,但这个外部时延主要是指反馈时延,即信号从FPGA的output端口输出后经过外部电路回到输入端口的时延值。原创 2023-12-29 23:13:19 · 1034 阅读 · 0 评论 -
FPGA设计时序约束十三、Set_Data_Check
再看对应的hold检查,hold路径中多了一条ff2_reg/C到out_OBUF_inst_i_1/I1的路径,再看详细的路径时延,在目的时钟到达时延中,有一个LUT标注了hold_data_check,该路径时延值增加了0.2ns,即为约束set_data_check中hold的0.2ns,表示信号到达后时延值需再维持0.2ns。1、以对从引脚A_IN到引脚C_IN进行一个setup的检查,A_IN是相关联的引脚,C_IN是被约束的引脚,即C_IN上的信号需早于A_IN上的信号2ns到达。原创 2023-12-23 22:36:12 · 1904 阅读 · 0 评论 -
FPGA设计时序约束十二、Set_Clock_Sense
本章将介绍Set_Clock_Sense约束,在介绍约束之前,大家需对时序弧以及timing sense有一定的基础了解,具体可参考另一篇文章《FPGA设计时序分析概念之Timing Arc》约束文件中对clk1不设set_clock_sense约束,clk2,clk3,clk4分别设置参数positive,negative,stop_propagation,,该引脚上的时钟信号是无法确定的,在设置约束后,约束的时钟单边性状态将从约束的引脚向前传输。Clock中选定设置clock sense的时钟。原创 2023-12-16 10:06:10 · 2948 阅读 · 0 评论 -
FPGA设计时序约束十一、others类约束之Set_Maximum_Time_Borrow
如果数据从FF1出发到达Latch的输入端口D大于10ns,如12ns时到达,如果Latch为FF2时数据将无法被捕获,此时为锁存器,只有数据在10ns-15ns时到达,数据依旧传输到了FF3,这时通过借用下一个周期的时间,12ns到达时相比使用寄存器FF2,锁存器提供了2ns的优势。数据从时钟的上升沿启动,必须在下一个时钟上升沿到达前的set up时间内到达目的触发器,如果两个触发器的组合逻辑时延太大,那么数据将没法被捕获触发器所捕获,捕获的数据将不稳定,如果数据到达的时间太早,造成时间资源浪费。原创 2023-12-10 21:28:29 · 1162 阅读 · 0 评论 -
FPGA设计时序分析概念之Timing Arc
信号从时序逻辑单元(如触发器FF和锁存器Latch)的时钟输入引脚Clock Pin到输出引脚,或者是时钟输入引脚到时序单元的其他输入引脚,下图中ck到D之间的时序弧即是用于setup、hold分析,CK到Q的路径为时序单元内部的传输时延。同样地,NOR存在4个时序弧:上升沿时,输入引脚A,引脚B到输出Y,下降沿时输入引脚A,引脚B到输出Y,和Positive unate arc不同的是输出边沿切换与输入相反。对于B上升沿的切换,输出Y还和输入A有关,A的值会影响输出Y是同边沿还是反边沿切换。原创 2023-12-09 09:20:09 · 2455 阅读 · 0 评论 -
FPGA设计时序约束十、others类约束之Set_Disable_Timing
在Vivado的时序约束窗口中,存在一类特殊的约束,划分在others目录下,可用于设置忽略或修改默认的时序路径分析,以Vivado2022.1版本为例,主要包括以下4类,本文将介绍其中的Set_Disable_Timing,示例的为Vivado2022.1。时序弧:时序弧是时序路径的一部分,可以是两个引脚之间的连线,可以是输入端口和输出端口之间的逻辑单元的内部路径,或者时钟输入端口和数据输出端口间的路径。约束内容如下,对经过clk4端口的时序弧和经过触发器引脚ff2_reg/Q的时序弧设置无效约束。原创 2023-11-29 21:43:00 · 1430 阅读 · 0 评论 -
FPGA设计时序约束九、others类约束之Group Path
在Vivado的时序约束窗口中,存在一类特殊的约束,划分在others目录下,可用于设置忽略或修改默认的时序路径分析,以Vivado2022.1版本为例,主要包括以下4类,本文将介绍其中的Group Path,示例的为Vivado2022.1。原创 2023-11-22 20:00:14 · 1023 阅读 · 0 评论 -
FPGA设计时序约束八、others类约束之Set_Case_Analysis
Set case analysis(设置案例分析)命令通常通过对逻辑如配置寄存器设置常数值来描述功能模块,设置对象可为端口,线net,层级引脚或子模块输入引脚,常数值通过约束的逻辑单元传输,从而关闭该单元的任何时序分析,功能和设置set false path类似。约束两个主时钟到CLKBUFGMUX的两个输入引脚上,将set_case_analysis约束选择引脚clock_sel/S的值为1,此时将只有clk_B会传输到输出端口,clk_A被阻断了,效果和将对应的pin连接到VDD或VSS相同。原创 2023-11-19 23:10:45 · 2215 阅读 · 0 评论 -
FPGA设计时序约束七、设置时钟不确定约束
在之前的时序分析中,通常是假定时钟是稳定理想的,即设置主时钟周期后按照周期精确的进行边沿跳动。在实际中,时钟是非理想存在较多不确定的影响,存在时延和波形的变化,要准确分析时序也需将其考虑进来,下面将对其进行介绍。原创 2023-10-26 21:39:39 · 1416 阅读 · 0 评论 -
FPGA设计时序约束六、设置最大/最小时延
用户手册:ug903-vivado-using-constraints-en-us-2022.2.pdf链接:https://pan.baidu.com/s/17AK_-J4wRXiFLtLTorlrwg?pwd=mylt提取码:mylt。原创 2023-10-22 23:05:03 · 1582 阅读 · 1 评论 -
FPGA设计时序约束五、设置时钟不分析路径
在进行时序分析时,工具默认对所有的时序路径进行分析,在实际的设计中,存在一些路径不属于逻辑功能的,或者不需要进行时序分析的路径,使用set_false_path对该路径进行约束,时序分析时工具将会直接忽略路径不进行分析。可以设置为false path的路径包括a)跨时钟域中添加的进行两次同步的逻辑单元b) 只在FPGA通电启动时的寄存器c)复位或测试的逻辑模块d)异步的分布式RAM中读时钟和写时钟之间的路径。原创 2023-10-15 09:30:40 · 3007 阅读 · 0 评论 -
FPGA设计时序约束四、多周期约束
在发起时钟和捕获时钟为同一个时钟,或两个时钟有相同的波形(并且不存在相移)时,时序路径属于单时钟域内的时序路径,在数据传输到目的时钟的寄存器需要多个时钟周期时,就需要设置多周期约束。有时,时钟约束必须定义两个有相同周期的时钟域,但两个时钟存在相移,此时,理解默认的setup和holdup关系是至关重要的,不合适的约束会导致两个时钟间的逻辑过度约束。以慢时钟域到快时钟的多周期约束为例,主时钟create_clk1周期为10ns,生成时钟gen_clk_2,gen_clk_3的周期分别为40ns,2.5ns。原创 2023-10-09 22:52:20 · 1223 阅读 · 2 评论