- 博客(36)
- 收藏
- 关注
原创 PMOS和NMOS导通原理
为了便于记忆结合下图:对于NMOS(栅极接地),衬底是P,P接地,二极管反向偏置,不导通。对于PMOS(栅极接高),衬底是N,N接高,二极管反向偏置,不导通。
2025-08-04 13:26:46
770
原创 SDF反标过程及作用详解
在设计软件里,你画出了这个电路的蓝图(逻辑连接关系),但这个时候,软件只知道各个元件。静态时序分析工具也需要这些真实的延迟值来检查整个电路在给定的速度(时钟频率)下,是否所有路径的信号都能按时到达,满足建立和保持时间的要求。执行反标的工具(比如仿真工具或静态时序分析工具)会读取SDF文件,找到里面记录的每个具体元件(比如。当你的电路设计被实际“画”到芯片上时,连线的长短、走向、拥挤程度都会极大地影响最终的信号速度。你能更早地发现潜在的时序问题(比如信号跑得太慢,错过了该被锁存的时间点)。
2025-08-01 11:17:42
412
原创 片上变化(OCV)
摘要: OCV(片上变化)指单个芯片内部因制造偏差、供电电压波动和温度不均导致的晶体管与连线速度差异。这种微观差异会导致数据信号和时钟信号传播速度不一致,可能引发Setup Time(数据过慢)或Hold Time(数据过快)违例,造成功能错误。静态时序分析(STA)通过设置最坏情况路径条件或使用Derate系数(如时钟路径延迟+10%)来模拟OCV影响,确保芯片在极端差异下仍可靠工作。随着工艺节点缩小(如3nm),OCV对时序收敛的挑战愈发显著。(149字)
2025-07-30 14:59:38
678
原创 建立时间检查和保持时间检查里面的负值
Setup/Hold 时间为负值是由于触发器内部数据路径延迟 (Td_d2latch) 和时钟路径延迟 () 存在差异造成的。这种差异导致在外部引脚测量的时序要求与内部实际锁存点的时序要求 () 之间需要一个偏移量。表示(时钟内部慢)。它允许数据在外部 D 引脚上在时钟捕获沿之前变化,补偿了时钟内部较慢的特性,确保内部锁存点有足够的实际保持时间 (设计上需要关注组合逻辑延迟 (Tcomb) 的下限。表示(数据内部慢)。它允许数据在外部 D 引脚上在时钟捕获沿之后。
2025-07-24 15:15:35
354
原创 数字设计流程分析
RTL (功能) + SDC (约束)。综合将RTL+SDC转换为初步门级网表(理想互联/时钟STA)。布局赋予门位置(引入估算连线延迟,理想时钟STA)。CTS构建真实时钟树(引入真实时钟延迟/Skew,估算数据连线STA,重点Hold全局布线规划路径(更精确估算连线STA)。详细布线绘制真实导线(提取精确RC寄生,真实互联+真实时钟STA在精确RC和真实时钟基础上,加入噪声/串扰分析(最终签核STA/SI。
2025-07-22 14:14:55
1041
原创 复位生效需要被处理的场景
软件复位先释放 → 屏幕闪烁 → 看门狗复位0.1ms后生效 → 屏幕再次黑屏 → 用户感知“二次复位”,怀疑系统故障。实际受干扰信号: ______/‾‾\__/‾‾\______/‾‾‾‾‾‾\___ // 毛刺触发复位!output logic filtered_rst_n // 净化后复位。理想复位信号: ______/‾‾‾‾‾‾‾\___________input hw_rst_n, // 硬件复位 (高优先级)input sw_rst_n, // 软件复位 (低优先级)
2025-07-21 10:53:30
732
原创 set_false_path
是时序约束中最复杂的命令之一,其参数覆盖路径起点、终点、边沿、检查类型等全维度控制。通过全参数覆盖与场景化示例,可最大化利用。参数值非法(如指向非时钟/端口对象)。:路径定义不精确(如未穿透关键节点)。优化时序收敛,同时规避过度约束风险。
2025-03-13 10:26:10
1493
原创 set_max_delay
延迟值计算:结合时序裕量(Slack)和工艺库特性,预留 10%~20% 布线余量。约束范围:优先使用-from-to明确路径,避免过度使用-through引入路径分段。验证策略:通过检查关键路径,确保约束覆盖所有目标场景。跨工具兼容:Xilinx Vivado 支持,Intel Quartus 需配合实现类似效果。通过合理选择及其参数组合,可显著提升复杂设计的时序收敛效率,同时规避跨时钟域和异步路径的潜在风险。
2025-03-12 16:51:47
1204
原创 set_case_analysis
是静态时序分析(STA)中用于固定信号值的约束命令,通过强制设置特定端口或引脚的逻辑值(0、1、上升沿、下降沿),可以模拟不同工作模式下的电路行为。以下通过 真实工业场景案例 和 工具处理逻辑 详细说明其动态模式切换的实现。动态模式切换的本质是通过 多组约束文件 或 条件化约束脚本 模拟不同场景的电路状态。 通过以下机制支持这一需求:场景:某通信芯片支持扫描链测试(Scan Chain),需分别验证功能模式和测试模式的时序。约束脚本:工具行为:场景:某移动处理器支持动态电压频率调整,需验证不同频率下
2025-03-12 15:32:29
1252
原创 set_clock_groups
场景:FPGA外部输入的两个独立晶振时钟(50MHz和100MHz)。约束:create_clock -period 20 -name clk_50m [get_ports clk_ext1]create_clock -period 10 -name clk_100m [get_ports clk_ext2]set_clock_groups -asynchronous -group clk_50m -group clk_100m解释:命令作用:禁用与之间的所有路径分析,包括跨时钟域路径。替代方案:
2025-03-12 15:13:26
1257
原创 create_generated_clock
关于这个电路图时序约束的理解:# ========== 主时钟 ==========# ========== 分频器生成时钟 ==========# ========== UMUX多源生成时钟 ==========# 覆盖所有可能的输入源(CLK、FFdiv2/Q、FFdiv4/Q)# ========== FFdiv3生成时钟 ==========# ========== FF1和FF2生成时钟 ==========
2025-03-12 10:29:44
737
原创 I3C 协议 HDR模式
HDR-DDR CCC数据块的设计旨在平衡高速传输与向后兼容性,通过强制单车道模式和严格的数据填充规则,确保I3C Basic设备与完整I3C设备的互操作性。其核心约束包括禁止零数据字、单车道传输要求,以及对奇数长度数据的自动填充处理。HDR-DDR CRC Block是HDR-DDR模式下确保数据传输完整性和流程终止的关键机制。其设计充分考虑了I3C Basic的兼容性限制(如单通道强制要求),并通过统一的结构与编码规则简化了目标设备的实现复杂度。
2025-02-19 15:23:40
998
原创 fabric abstract
Hyperledger Fabric 是一个开源的企业级需要许可的分布式账本技术平台。Fabric是一个高度模块化和可配置架构。同时,Fabric的智能合约是第一个支持所有通用编程语言,例如Java, Go and Node.js。首先fabric是由IBM贡献的超级账本框架。它是一个利用现有成熟的技术来组合而成的一个区块链技术的实现。它是一种允许可插拔实现各种功能的的模块化架构。它具有强大的容器技术,来承载各种主流语言来编写的智能合约。
2024-06-14 09:47:54
653
转载 DC学习综合与优化
一:综合策略 top-down & bottom-up1:top-down 层次化结构,只对顶层设计进行全面约束,针对个别模块有特殊约束;比如管理模块(clock模块,reset模块等)的综合不会与工作模块(顶层模块)放在一起综合的。2:bottom-up 对底层的各个模块定为current_design,进行综合,加上dont touch属性;若各层之间有group logic(如与门),还需要对group logic约束;这种风格的综合约束复杂且多。所有top-dowm方式用得更多3:综合里的关键字
2022-06-28 18:08:03
5663
1
转载 DDR功能点 ODT ZQ校准
ODT 也是 DDR2 相对于 DDR1 的关键技术突破,所谓的终结(端接),就是让信号被电路的终端吸收掉,而不会在电路上形成反射, 造成对后面信号的影响。 顾名思义, ODT 就是将端接电阻移植到了芯片内部,主板上不再有端接电路。在进入DDR 时代, DDR 内存对工作环境提出更高的要求,如果先前发出的信号不能被电路终端完全吸收掉而在电路上形成反射现象, 就会对后面信号的影响造成运算出错。因此目前支持DDR主板都是通过采用终结电阻来解决这个问题。 由于每根数据线至少需要一个终结电阻, 这意味着每块DDR
2022-03-25 13:54:37
5156
转载 DDR4的刷新
Refresh,刷新是 DRAM 的一项重要特性,又被称为动态刷新(Dynamic refresh),而 Dynamic 就是 DRAM 中的 'D' 所代表的意思。DRAM 刷新与其结构息息相关。本系列连载于 OpenIC SIG,除了 DDR 学习时间专栏外,OICSIG 目前正在陆续上线 HDLBits 中文导学的优化版本,欢迎关注/支持/加入我们DDR 学习时间 - OpenIC SIG 开源数字IC技术分享在 DDR 学习时间专栏中,目前有两个 Part:Part-A DRAM 课
2021-12-03 15:05:36
9621
5
转载 DDR4 - Initialization, Training and Calibration
引言 Introduction当一个拥有 DRAM 子系统的设备启动时,有几件事需要在 DRAM 进入工作状态之前完成。下图是来自 JEDEC specification (DDR4 标准,https://www.jedec.org/standards-documents/docs/jesd79-4a)的状态机,展示出上电之后 DRAM 经历的几个状态。图-1 DDR4 初始化状态机实质上,完整的初始化过程(Initialization)包括以下 4 个单独的步骤:上电与初始化 ,P..
2021-08-06 23:40:15
10323
3
转载 Linux shell中2>&1的含义解释
A.首先了解下1和2在Linux中代表什么在Linux系统中0 1 2是一个文件描述符从上表看的出来,我们平时使用的echo "hello" > t.log1其实也可以写成echo "hello" 1> t.log1B.关于2>&1的含义(关于输入/输出重定向本文就不细说了,不懂的可以参考这里,主要是要了解> < << >> <& >& 这6个符号的使用)含义:将标准错误输出重定向到标准.
2021-03-30 19:13:44
222
转载 Verdi使用简介及Dump波形命令
Makefile加载verdi波形方法1.编译参数增加verdi的PLI,使用32位编译的去掉64。DUT_CMP_OPTIONS_WAVE += -P ${VERDI_HOME}/share/PLI/vcs/LINUX64/fsdb_vcs.tab ${VERDI_HOME}/share/PLI/vcs/LINUX64/fsdb_vcs.a2.仿真运行参数指定波形文件存放路径和文件名。DUT_SIM_OPTIONS_WAVE += +fsdbfile+$(WAVE_DIR..
2021-02-03 08:40:40
19645
转载 瞬间打开Verdi
VCS和Verdi是一对好基友,二者相生相伴N多年。VCS为编译仿真工具,Verdi则为查看Waveform的工具,就这样愉快的Cowork着。VCS和Verdi能正常工作的前提是,必须存在filelist(list出了所有用到的RTL),VCS对该filelist中的file进行编译,然后再进行仿真,顺带生成波形文件(xxx.fsdb)供Verdi打开,看到这里Verdi貌似只需要fsdb就能工作,如果是这样的话Verdi又怎么能知道filelist中多个module的层次关系(Hierarchy)
2021-02-02 10:48:51
3231
2
转载 glWindowPos2i
glWindowPos2iproblem#ifdef _MSC_VER #include #include #else #ifdef __APPLE__ #include #else #include #endif#endifvoid glWindowPos4f(float x,float y,float z,float w){ /..
2021-01-05 15:23:44
385
转载 glCopyPixels的用法和举例,涉及glPixelZoom、glRasterPos2i
glCopyPixels的用法和举例 从效果上看,glCopyPixels进行像素复制的操作,等价于把像素读取到内存,再从内存绘制到另一个区域,因此可以通过glReadPixels和glDrawPixels组合来实现复制像素的功能。然而我们知道,像素数据通常数据量很大,例如一幅1024*768的图象,如果使用24位BGR方式表示,则需要至少1024*768*3字节,即2.25兆字节。这么多的数据要进行一次读操作和一次写操作,并且因为在glReadPixels和glDrawPixels中设置的数据...
2021-01-05 15:06:09
867
原创 FPGA/IC基础知识
1、简述建立时间和保持时间 建立时间Tsu(setup):触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。 保持时间Th(hold):触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。关于上升沿触发器如何需要建立时间和保持时间的详细解释:https://www.cnblogs.com/ylsm-kb/p/9129699.html2、简述触发器和锁存器之间的差别 锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态。...
2020-12-29 20:46:46
4413
转载 Verilog实现之任意分频电路
一、行波时钟 任意分频电路,相信很多人都听说过这个专业名词,好多视频上都说不建议使用计数器产生的分频时钟。其实在FPGA领域当中,由寄存器分频产生的时钟还有一个学名叫做,行波时钟。是由时序逻辑产生比如A寄存器的输出作为B寄存的时钟输入(一般不建议使用),如下图所示;驱动右边那个触发器的时钟即为行波时钟。之所以不建议使用在FPGA中使用行波时钟,因为这样会在FPGA设计中引入新的时钟域,,增加时序分析的难度,并且由于行波时钟的相位通常会滞后于原始时钟,会导致后续触发器的保持时间不一定能满足。.
2020-12-29 18:54:21
3613
转载 OpenGL学习
**绘制模式**在绘制多边形时除了默认的填充方式,还可以使用点和线使用glPolygonMode函数来设置模式三种不同模式下的绘图GL_FILLGL_LINEGL_POINT多边形的两面如果以顺时针绘制则是反面,逆时针绘制则是正面显示效果如下:切换正反面可以使用glFrontFace函数来调换正面与反面的概念glFrontFace(GL_CCW); // 设置CCW方向为“正面”,CCW即CounterClockWise,逆时针glFrontFace(GL_CW)
2020-12-18 09:00:24
382
转载 SPI总线的原理与Verilog实现
一、 软件平台与硬件平台 软件平台: 1、操作系统:Windows-8.1 2、开发套件:ISE14.7 3、仿真工具:ModelSim-10.4-SE 硬件平台: 1、 FPGA型号:Xilinx公司的XC6SLX45-2CSG324 2、 Flash型号:WinBond公司的W25Q128BV Qual SPI Flash存储器二、 原理介绍 SPI(Serial Peripheral Interface,串行外围设备接口),是..
2020-10-31 12:26:58
2915
1
原创 set_multicycle_path
set_multicycle_path的语法:缺省情况下:setup path对应的计算起点是目的时钟,向前(从左到右)移动,可以用-start改称源时钟。----- 对应的:hold path对应的计算起点是源时钟,向后(从右到左),可以用-end改成目的时钟。在同一时钟域下,选择-end和-start没有啥作用。约束前约束后:setup check第二个capture沿,hold check自动移到第一个capture沿。默认情况下hold自动在setup的前一个周期。设置命令
2020-09-27 14:57:44
10369
1
转载 VIVADO之读懂用好 Timing Report
【Vivado使用误区与进阶】读懂用好 Timing ReportXDC约束技巧》系列中讨论了XDC约束的设置方法、约束思路和一些容易混淆的地方。我们提到过约束是为了设计服务,写入Vivado中的XDC实际上就是用户设定的目标,Vivado对FPGA设计的实现过程必须以满足XDC中的约束为目标来进行。那么我们如何验证实现后的设计有没有满足时序要求,又如何在开始布局布线前判断某些约束有没有成功设置,或是验证约束的优先级,这些都需要用到Vivado中的静态时序分析工具。静态时序分析静态时序分析( Sta
2020-09-14 17:15:22
13637
转载 【Vivado使用误区与进阶】XDC约束技巧之时钟篇
【Vivado使用误区与进阶】XDC约束技巧之时钟篇Xilinx 的新一代设计套件Vivado中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE中支持的UCF大不相同,给使用者带来许多额外挑战。Xilinx工具专家告诉你,其实用好XDC很容易,只需掌握几点核心技巧,并且时刻牢记:XDC的语法其实就是Tcl语言。XDC的优势:XDC是Xilinx Design Constraints的简写,但其基础语法来源于业界统一的约束规范SDC(最早由Synopsys公司提出,故名Synopsys
2020-09-14 14:06:25
4359
转载 vivado中常用的时序约束命令
目录一、vivado中cell port net 和pin之间的关系 二、基本的命令 get_* 三、时序分析中常用的约束命令一、vivado中cell port net 和pin之间的关系cell一般指我们在代码中实例化的模块,也可以是我们综合后可以看到的LUT、block RAM 、DSP、MMCM以及PLL等。 pin每个cell都有相应的pin,也即模块的输入输出信号,并非芯片的引脚。 net即pin与pin之间的连线 port我们在顶层文件中声明的输入输出信号...
2020-08-20 10:13:43
7221
原创 地址转换的示例
1、这里是按字节寻址,每个地址对应一个字节,所以这里的rd_mis_addr一个地址对应的是256b,而rd_pca_addr[4:2],每个地址对应的是32b,一次读出来1个256b的就等于8个32b的。正好用地址[4:2]去分配。对于递增的地址000000、000100、001000、001100直到011100在rd_mis_addr上都是0。在000000时取出256b的数,后面将其通过rd_pca_addr[4:2]分配给后面的地址。2、通过复制高位的地址,将低位地址对应数据的变化更新到高
2020-05-25 15:39:02
1018
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人