- 博客(118)
- 收藏
- 关注
原创 在后端设计中,GDSLL,LEF,DEF,SDF,SPEF,SDC各代表什么意思?前端和中端流程中,SVF,SAIF又代表什么意思?
在后端设计中,GDSLL,LEF,DEF,SDF,SPEF,SDC区别?前端和中端流程中,SVF,SAIF代表什么意思?
2023-03-05 10:33:27 9839
原创 在CVS中恢复到早期版本
以CVS中提交的单个文件为例,其中包含以下历史记录。TEST.CPPrev 1.1rev 1.2rev 1.3如何恢复到版本1.2丢弃1.3中的更改,然后继续从该点进行修改?cvs update -j 1.3 -j 1.2 test.cpp
2022-06-22 09:22:08 870
转载 ARMv8中non-shareable,inner-shareable,outer-shareable属性
如果将block的内存属性配置成Non-cacheable,那么数据就不会被缓存到cache,那么所有observer看到的内存是一致的,也就说此时也相当于Outer Shareable。 其实官方文档,也有这一句的描述: 在B2.7.2章节 “Data accesses to memory locations are coherent for all observers in the system, and correspondingly are treated as being Outer S...
2022-05-06 14:51:45 4136
原创 AMBA5中文版
AHB5:第1章https://blog.csdn.net/Michael177/article/details/123807743?spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-10.topblog&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7
2022-04-24 10:58:54 609
原创 cache与buffer
buffer(缓冲)是为了提高内存和硬盘(或其他I/0设备)之间的数据交换的速度而设计的。cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计,也就是平常见到的一级缓存、二级缓存、三级缓存。...
2022-04-22 20:44:27 214
转载 后仿中的nonotifier选项
文章目录 前言一、nonotifier的功能1、VCS2、NC 二、关闭部分instance或者reg的时序检查方法1、VCS2、NC 总结 前言 PostSimulation 由于异步电路的存在,经常出现X态,影响仿真结果。如何在vcs和nc的仿真工具中,排除这部分电路的timingcheck? ...
2022-04-09 16:49:34 2626
转载 硬件架构的艺术:处理多个时钟(跨时钟域处理)
转:https://blog.csdn.net/shiwq1127/article/details/122994106?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-1-122994106.pc_agg_new_rank&utm_term=%E4%B8%8D%E8%83%BD%E7%BB%84%E5%90%88%E9%80%BB%
2022-03-27 19:40:24 356
原创 Spyglass之CDC检查 五
转:https://blog.csdn.net/zhong_ethan/article/details/107165663?spm=1001.2014.3001.5502 文章目录 AC_cdc01aAC_datahold01aAC_conv02/04/05AC_fifo01AC_handshake01/02 本篇介绍CDC检查最后一个过程CDC_verify(functional cdc checks)。主要检查:a)数据完整性;b) 格雷码编码;c) FIFO上溢或下溢;d)
2022-03-27 19:30:28 1091
原创 Spyglass之CDC检查 四
转:https://blog.csdn.net/zhong_ethan/article/details/107005512?spm=1001.2014.3001.5502 文章目录 同步方法哪些信号需要同步常用同步方法 RulesAC_unsync01/02AC_sync01/02AC_conv01/02/03AC_glitch03Clock_sync05/06setup_quasi_static CDC_verify_struct过程主要检查设计中是否有未同步的
2022-03-27 19:29:16 2065
原创 Spyglass之CDC检查 三
转:https://blog.csdn.net/zhong_ethan/article/details/106841986?spm=1001.2014.3001.5502 文章目录 Clock_info03aClock_info05a/bClock_info18 本篇文章主要介绍CDC检查第二个过程CDC_setup_check,有Clock_info03a, Clock_info05a/b以及Clock_info18检查项 上一篇:Spyglass之CDC检查(2) 下一
2022-03-27 19:27:55 1041
原创 Spyglass之CDC检查 二
转:https://blog.csdn.net/zhong_ethan/article/details/106722753 文章目录 Clock_info01Reset_info1Setup_clock01 本文主要介绍cdc_setup过程中的rules——clock_info1,reset_info1, setup_clock01,它们报告设计中的时钟树,复位树。 上一篇:Spyglass检查之CDC(1) 下一篇:Spyglass之CDC检查(3) Clock_in
2022-03-27 19:25:45 1385
原创 Spyglass之CDC检查一
转:https://blog.csdn.net/zhong_ethan/article/details/106708346?spm=1001.2014.3001.5502 文章目录 熟悉界面约束文件CDC流程 本文是SPYGLASS CDC检查系列第一篇文章。简单起见,本文的操作基本都在GUI模式下进行。 熟悉界面 在Terminal中输入 spyglass -project test.prj & 新建或打开一个spyglass工程。 GUI界面最上面为工具栏,
2022-03-27 19:22:39 4539
转载 wavedrom使用教程
转载:https://blog.csdn.net/OnlyLove_/article/details/111770771https://wavedrom.com/tutorial.html 1、第一步:从一个快速示例开始 下面的代码将创建名为“alfa”的1位信号,该信号会随时间改变其状态。 下面展示一些 内联代码片。 {signal:[ {name:"alfa",wave:"01.zx=ud.23.456789"}]}123 2、第二步:数字时钟 数字时钟是一种特殊类型的信号。它每
2022-03-22 10:36:33 5695 2
原创 cds\PGA
cds是相关双取样电路(Correlated Double Sampling)可编程增益放大器(PGA)Pmgrammable Gain Amplifier
2022-01-05 15:23:13 828
转载 Verilog中一个always@可以用几个边沿触发
不是几个的问题,是要能map到实际的基本cell。1:写1个edge, 基本就是clock,用同步复位寄存器;2:写2个edge,一个clk,一个复位(0)或置位(1)。用异步复位寄存器;3:写3个edge,一个clk,一个复位,一个置位。用同时带有异步置位/复位的寄存器(这个用的很少,ASIC可以有对应的基本cell);这时候除了第一个的时钟沿,其他2个沿均为异步(置位/复位)标准写法推荐设计中最多两个沿触发,语法本身是支持的,仿真没有问题,但考虑底层的单元(FPGA/ASIC)均不建议这样写,这
2022-01-04 14:07:00 4469
原创 vim中显示Tab,vim输入tab自动替换为4个空格
1、显示 TAB 键文件中有 TAB 键的时候,你是看不见的。要把它显示出来,底行模式::set list现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字符在哪里。这样做的一个缺点是在有很多 TAB 的时候看起来很丑。如果你使用一个有颜色的终端,或者使用 GUI 模式,Vim 可以用高亮显示空格和TAB。使用 ‘listchars’ 选项::set listchars=tab:>-,trail:-现在,TAB会被显示成 “>—” 而行尾多余的
2022-01-04 13:59:02 4237
转载 assign/deassign/force/release
摘自关于Verilog中的几种赋值语句 n语句 assign和deassign语句构成了一类过程性连续赋值语句,只能用于对寄存器类型变量的连续赋值操作,不能用来对线网类型数据进行连续赋值操作。 ①assign语句 语法:assign <寄存器类型变量> = <赋值表达式>; assign在执行时,寄存器类型变量将由赋值表达式进行连续驱动,即进入连续赋值状态。...
2021-12-24 18:14:13 2573 2
转载 Ahb2ApbBridge
一、设计前需注意 (1)要做总线,协议是关键,每个控制信号与输入输出的时序一定要搞清楚,直接看amba官方spec,链接已贴出http://pan.baidu.com/s/1gfwxTWB。 (2)Ahb2Apb桥作为逻辑连接器,一方面是在AHB的Slave,另一方面也是AHB的Master。弄清这个概念,就可以定义输入输出的端口,以及需要满足的时序。 (3)HREADY是arbiter收集各个AHBslave设备的HREADYou...
2021-08-23 23:00:54 4928 2
原创 SOC系统内存储体系(FLASH、SRAM、DRAM等)
片内存储器:1、寄存器:处理器内部的reg通常由十几个到几十个,读取速度最快,用来缓存程序运行时频繁使用的数据(局部变量,函数参数等)。2、Cache:缓存由SRAM构成,速度仅次于寄存器,对指令和数据进行缓存,降低存储器与片外存储的交换频率。Cache通常分1、2、3级缓存。3、ROM:用来存放SOC系统的启动程序(bootloader等),启动程序从外存(Flash等)读取系统程序和应用程序,送到主存。片外存储器:1、片外主存(DRAM):用于存放当前正在运行的系统程序、应用程序、数据、堆栈.
2021-08-05 14:19:09 5755
转载 fork...join、join_none和join_none的用法
https://blog.csdn.net/zhajio/article/details/79529652https://www.jianshu.com/p/1787680e27aahttps://blog.csdn.net/qq_31348733/article/details/100382377
2020-08-27 23:03:18 6741
转载 跨时钟域处理方法,转
转:https://blog.csdn.net/darknessdarkness/article/details/105153216
2020-08-27 22:22:39 1145
原创 SPI、I2C、UART总线协议
https://blog.csdn.net/qq_41179988/article/details/85676362IIC补充:https://blog.csdn.net/oqqHuTu12345678/article/details/72356722https://blog.csdn.net/w89436838/article/details/38660631
2020-08-25 21:38:55 157
原创 Verilog实现康威生命游戏机
在一个二维的棋盘上,每个格子有存活(1)和死亡(0)两种状态。在每个时间周期,每个格子会根据他的8个邻居来决定自己下一个周期的状态:0-1个邻居:人口稀少,死亡(0);2个邻居:保持原状态;3个邻居:繁衍(1);4+个邻居:人口过多,死亡(0);这个游戏原来是设计在一个无限的网格里,但是在这个电路中,我们设计为1616的网格,为了让这次练习更有趣,我们把网格边界拓扑环绕到对立的另一边。举个例子,(0,0)的8个邻居分别是(15,1), (15,0), (15,15), (0,1), (0,15),
2020-08-14 23:29:39 432
转载 时序路径
时序分析工具可以查找并分析设计中的所有时序路径(timing paths)。 每条时序路径有一个起点(startpoint)和一个终点(endpoint)。起点是设计中数据由时钟边沿触发的位置。 数据通过时序路径中的组合逻辑传播,然后被另一个时钟边沿在终点捕获。时序路径的起点是时序元件的时钟引脚或设计的输入端口。时钟边沿在起始点触发数据。 输入端口也能被视作起点,是因为输入端口是由外部源触发的。时钟边沿在终点捕获数据。输出端口也能被视作终点,是因为输出端口是在外部捕获的。参考:https://zh
2020-08-09 09:50:35 1814
原创 IC设计流程
********************** 前端设计 ***************************1、规格制定确定芯片所需要的功能和性能要求。2、详细设计 (Architectural and electrical specification)确定解决方案和架构设计、模块划分。3、HDL编码 (RTL coding in HDL)使用硬件描述语言将模块功能实现,形成RTL代码。4、仿真验证 simulation & verification检验编码设计的
2020-08-05 18:57:12 259
原创 时钟抖动(Clock Jitter)和时钟偏斜(Clock Skew)
时钟抖动(Clock jitter),就是指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。时钟偏斜(Clock Skew)指同样的时钟产生的多个子时钟信号之间的延时差异。它表现的形式是多种多样的,既包含了时钟驱动器的多个输出之间的偏移,也包含了由于PCB走线误差造成的接收端和驱动端时钟信号之间的偏移。也就是指同一个时钟信号到达两个不同寄存器之间的时间差值,时钟偏斜永远存在,到一定程度就会严重影响电路的时序。...
2020-08-04 21:47:05 4416
原创 数字IC低功耗设计总结
1、功耗分类:低功耗按照类型分类,主要有动态功耗、静态功耗、浪涌功耗三种。(1)动态功耗包括:开关功耗(翻转功耗):电平翻转对负载电容进行充放电时消耗的功耗。短路功耗(内部功耗):信号翻转时不可能瞬时完成,PMOS和NMOS存在同时导通构成通路,形成短路电流。(2)静态功耗:主要是漏电流引起的功耗2、系统与架构级低功耗设计(1)多电压设计技术:不同的模块区域有不同的电压。(各模块电压可固定、可通过软件选择、可自适应改变)(2)系统时钟分频:时钟是系统中频率最高的信号,其功耗功之高不容置
2020-08-02 12:12:52 3279
转载 RTL级低功耗设计(二)
转:https://www.cnblogs.com/IClearner/p/6912455.html 二、RTL级低功耗设计(续) 前面一篇博文我记录了操作数隔离等低功耗设计,这里就主要介绍一下使用门控时钟进行低功耗设计。 (4)门控时钟 门控时钟在我的第一篇博客中有简单的描述,这里就进行比较详细的描述吧。我们主要学习门控时钟电路是什么、什么使用门控时钟、综合库里的门控时钟、如何使用门控时钟、对门控时钟的一些处理、手动插入门控时钟。我们重点介绍如何使用门控时钟和门控时钟的处理。①门
2020-08-02 11:35:01 891
转载 RTL级低功耗设计(一)
转:https://www.cnblogs.com/IClearner/p/6908033.html 二、RTL级低功耗设计 前面介绍了系统级的低功耗设计,换句话说就是在系统级降低功耗可以考虑的方面。系统级的低功耗设计,主要是由系统级设计、具有丰富经验的人员实现,虽然还轮不到我们设计,我们了解一下还是比较好的。我们前端设计人员的重点不在系统级设计上面,而是在RTL级(及综合)上面。下面我们就来介绍RTL编码与逻辑综合的低功耗设计,重点是门控时钟和操作数隔离技术。今天主要是讲解操作数和一些常
2020-08-02 11:34:03 1319
转载 系统与架构级低功耗设计
转:https://www.cnblogs.com/IClearner/p/6903204.html 前面讲解了使用EDA工具(主要是power compiler)进行功耗分析的流程,这里我们将介绍在数字IC中进行低功耗设计的方法,同时也结合EDA工具(主要是Design Compiler)如何实现。我们的讲解的低功耗设计主要是自顶向下的设计,也就是说,我们首先介绍在系统架构层面上如何进行低功耗设计(或者可以从哪些方面进行低功耗设计);然后我们在RTL层面和门级层面上介绍低功耗设计的方法,这两
2020-08-02 11:33:14 438
转载 IC低功耗类型
转:https://www.cnblogs.com/IClearner/p/6893645.html 低功耗设计这个专题整理了好久,有一个月了,有图有证据: 然而最近一直有些烦心事、郁闷事,拖延了一下,虽然现在还是有点烦,但是还是先发表了吧。下面我们就来聊聊低功耗设计吧,由于文章比较长
2020-08-01 20:46:04 473
原创 中断相关
ARM Cortex-A处理器有8个基本工作模式:User: 非特权模式,一般在执行上层的应用程序时处理器处于该模式FIQ: 当一个高优先级的中断产生时处理器将自动进入这种模式IRQ: 当一个低优先级(normal) 中断产生时将会进入这种模式SVC: 当复位或软中断指令执行时将会进入这种模式Abort: 当存取异常时将会进入这种模式Undef: 当执行未定义指令时会进入这种模式System: 使用和User模式相同寄存器集的特权模式Cortex-A处理器特有模式:
2020-08-01 19:14:42 166
原创 verilog消抖电路
1、请设计一个去抖动电路,要求能过滤脉冲宽度在2个时钟周期内的抖动。module dbc(input clk,input rst_n,input signal_i,output signal_o);reg [2:0] signal_3;always@(posedge clk or negedge rst_n) begin if(!rst_n) signal_3 <= 0; else begin signal_3 <= { signal_3[1:0],signal_i
2020-07-28 22:37:40 3684
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人