
IC设计
文章平均质量分 56
IC小鸽
死磕细节,专注设计,微信公众号icxiaoge
展开
-
一款开源AHB APB AXI代码生成工具
非常棒的开源AMBA代码生成工具原创 2024-08-11 22:41:35 · 610 阅读 · 0 评论 -
PCIe debug设计:锁存ltssm 状态机
PCIe debug设计原创 2024-04-27 20:12:28 · 738 阅读 · 0 评论 -
PCIE问题定位000:PCIe需要的定位手段
PCIe 设计需要了解的debug设计原创 2024-03-17 22:02:52 · 833 阅读 · 0 评论 -
IC设计基础003:Verilog计算1的数量
采用for循环语句,逐个bit位判断是否为1,为1则累加,否则保持不变,最终输出输入信号中1的数量。如下所示,采用循环语句+移位+逻辑与1+累加来实现1的统计。最终调用函数获得输入信号中1的数量。原创 2023-05-03 20:20:18 · 4048 阅读 · 4 评论 -
IC设计错误案例009:信号取反导致的错误
信号取反时,如果位宽不匹配,也会造成不符合预期的错误原创 2022-09-18 17:29:07 · 764 阅读 · 2 评论 -
IC设计高级019:一种简单超时机制
一种简单的超时判断机制,采用一个计数cnt和一个ram实现,可调节超时精度原创 2022-09-11 17:41:18 · 687 阅读 · 0 评论 -
IC设计高级018:一种主动的流控实现方式
主动流控设计方法,让流控设计更加简单原创 2022-08-14 17:38:22 · 810 阅读 · 0 评论 -
IC设计高级017:控制类寄存器2种实现方式
IC设计中,可配置的控制类寄存器是如何在数据处理过程中起作用的呢?有哪些实现方式呢?原创 2022-08-13 17:16:18 · 1160 阅读 · 1 评论 -
IC设计ram002_ECC校验原理基础
1、ECC校验基础Ram的ECC校验通常基于海明码编码原理实现,使用海明码编码需要额外的bit位存储校验位,ECC校验仅能纠正1bit的,无法纠正2bit以及以上数据错误,能发现部分多bit位错误的情况。2、RAM ECC校验实现原理如图所示为1r1w的ram为例,cfg_32x119_ram_wrapper为verilog代码直接调用层次的ram_wrapper,表示了一个深度为32,数据位宽为119bit的ram。ram_asic.v为真实的ram IP。其中119bit的数据位宽紧张ECC原创 2022-01-23 18:29:04 · 5499 阅读 · 3 评论 -
IC设计ram001_ram读写冲突返回值
1、RAM读写冲突返回值在使用底层RAM IP的时候,以1R1W的ram为例,我们需要考虑 某个地址同时发生读写操作的时候(俗称读写冲突),RAM IP输出的data_out是什么值,不同的厂家IP会不一样,同一个厂家的不同ram也有可能不一样。例如:发生读写冲突时,有些ram会输出老值,有些ram会输出新值,有些ram输出不确定的值2、从设计角度考虑RAM读写冲突返回值从严谨的设计角度看,应该从方案设计角度避免此问题。在verilog实现中,ram就不允许发生同时读写同一个地址...原创 2022-01-22 16:54:52 · 1080 阅读 · 0 评论 -
IC设计高级012:afifo读数据用什么信号采样
在设计中,读afifo时需要根据afifo数据输出的拍数进行数据采样。数据采样时,建议使用非空判断后产生的vld信号进行数据采样,避免因空读产生无效的数据输出。如下文,afifo_rd_en是 afifo的读使能,afifo_rd_en_dly1是afifo读使能打一拍后的信号。afifo_rd_data_vld 是afifo输出有效valid,是由afifo_rd_en && (!empty)打拍后产生的,产生空读时afifo_rd_data_vld为0,推荐使用afifo_rd_da原创 2021-11-07 16:54:04 · 1465 阅读 · 0 评论 -
门控时钟设计003:门控时钟降低了什么功耗
在IC设计中,会存在block模块层次的时钟门控和门级的时钟门控。1、block模块层次的时钟门控 block模块层次的时钟门控在一个block中一个时钟只有一个门控,当此模块不使用时,直接将此时钟gating掉,大大降低了时钟树功耗和寄存器动态功耗,在大部分模块中能够降低80%以上的功耗。2、门级层次的时钟门控 门级的时钟门控是门级的时钟门控,通常由如下verilog语句产生。此类门控主要是降低寄存器内部时钟翻转功耗和少量的靠近reg的时钟树功耗。因为gating 后驱动的时钟树一原创 2021-07-04 21:02:45 · 1426 阅读 · 1 评论 -
IC设计思想001:IC设计的全局思维
IC设计中就怕想的不全面,导致出现功能故障,以至于需要重新流片。IC设计中的全局思维: 方案设计与verilog实现 需要面面俱到设计方案方面:全面功能点,实现方法,时钟,复位,时序,跨时钟设计 以及后端可实现 需要面面俱到。代码实现方法:功能实现的各类情况考虑充分,没有遗漏,讲究完全穷尽,相互独立定位手段添加全面案例1:遇到功能点代码修改,需要做什么修改代码并进行检查:vcs编译、spyglass lint 等 修改相关文档描述:寄存器表格,方案..原创 2021-06-20 21:50:56 · 1090 阅读 · 0 评论 -
复位设计基础001:中断的复位设计
中断模块用什么软复位OR硬复位?中断用于记录逻辑电路中发生的各类正常和异常情况。软复位控制主数据路径逻辑,硬复位控制配置寄存器等。正常情况:如发生一次DMA数据传输,链表初始化完成异常情况:如RAM读写数据错误,afifo溢出和空读,链路中断等那么中断模块适合用软复位还是硬复位呢?通常情况下,大部分中断源是由逻辑电路产生的情况下,逻辑电路有软复位直接控制,此时中断模块用软复位,记录此次软复位释放后电路中发生的各类状态,一旦发生软复位,中断状态会被软复位清零。如果中断使用的硬复位,多次软原创 2021-06-20 17:03:23 · 958 阅读 · 0 评论 -
IC前后端001:高扇出的危害
1、什么是高扇出?高扇出指的是一个逻辑单元驱动的逻辑单元过多。常见于寄存器驱动过多的组合逻辑单元。至于驱动多少逻辑单元算过多,需要根据工艺,后端实现情况以及芯片本身类型来决定。一般来说如果驱动逻辑大于10K以上,算是比较多的了。2、高扇出有哪些危害?危害1:驱动能力下降,时序紧张扇出过高也就是也就意味了负载电容过大,电路原理基础告诉咱们,负载电容越大,充放电速度越慢,电平跳变所需要的时间增加,即驱动能力下降,时序更加紧张。面对高扇出的情况,后端工具通常会通过插入buffer增加驱动能力,原创 2021-01-10 18:08:59 · 5841 阅读 · 0 评论 -
IC设计高级009:特殊信号打拍方式
1、AXI信号如何打拍通常block的input和output信号存在时序问题时,我们通常采用寄存器打拍的方式,在两个block直接插入reg,从而解决时序问题。但是很多信号比较特殊不能随意打拍,例如。AXI信号,握手信号等。此类信号有更高的要求。比如AXI总线中的slave_axi_awready表示写地址通道已经准备好,能够接受master写地址了。此类信号具有很高的时序要求,不能随意使用寄存器打拍,否则就会出现在slave端口已经将slave_axi_awready拉低,而在master端口存原创 2020-12-05 21:13:03 · 1767 阅读 · 0 评论 -
芯片杂谈001:综合面积与PR后芯片面积
芯片杂谈001:综合面积与PR后芯片面积1、Place&Routing后芯片面积与综合面积差异很大?在完成Place&Routing后的芯片实际面积与综合面积差异很大,这是什么原因呢?在综合时我们会得到模块的组合逻辑面积,时序逻辑面积以及RAM面积。这三种面积指的是单纯的逻辑与ram的面积,累加起来不是一个block的真实面积。实际上,逻辑单元之间会有间隔,数据连线排布也会占用面积,特别是大位宽的数据连线做MUX特别占面积。因此如果需要通过综合面积估算PR后的芯片面积就需要考原创 2020-10-25 20:20:08 · 9651 阅读 · 0 评论 -
IC设计错误案例007:加法溢出导致的错误
1、加法溢出导致的功能错误如下图所示错误代码中,当byte_add+byte_save等于256的时候,我们期望的的信号more_than_64应该为1,而实际上在错误代码中(byte_add+byte_save)与8’d64比较,(byte_add+byte_save)可能会被理解为8’d0,即被理解成8bit信号,more_than_64等于0,功能错误。在芯片设计中,有可能因为EDA工具之间差异导致对(byte_add+byte_save)>8’d64的理解不一样,导致VCS等工具RTL级仿原创 2020-10-24 20:24:46 · 639 阅读 · 0 评论 -
IC设计错误案例006:亚稳态导致的afifo非空即读错误
亚稳态导致的异步fifo非空即读错误如下图所示:在写时钟侧,数据data_in同时将不同bit位的数据段写入到两个异步fifo,而在读侧,采用其中一个异步fifo中的非空信号empty取反产生读使能ren,读两个异步fifo,此类设计,会偶发的出现异步fifo空读中断的情况,即其中一个异步fifo没数据时,读使能ren有效。为什么会产生空读现象呢?虽然在写侧数据时同时写入的,但是因为格雷码跨时钟的时候会出现亚稳态导致waddr跨时钟会延迟一个被读时钟周期采样到,因此可能出现如下情况:在读侧T0周期原创 2020-08-29 21:45:59 · 1303 阅读 · 2 评论 -
IC设计规范:001 接口信号描述规范
1、信号描述的重要性?在芯片设计过程中,模块接口信号的描述是一件非常重要的事情,好的描述既能够方便他人理解,又能够及时发现问题。比如说,互联信号描述互相检查的时候能够及时发现理解不一致。2、如何进行信号描述基本要素:信号名称、IO、描述、源端和目的端、时钟域描述的几大要素:说清楚有效状态,说清楚有效状态的作用,说清楚什么时候会产生有效状态,描述关联信号的关系。如下一组信号:流控信号:data_rdy_out需要说清楚高电平和低电平是什么效果,上游是否立即响应。关联信号:说清楚什么原创 2020-08-22 21:03:15 · 858 阅读 · 0 评论 -
IC设计错误案例005:频率对脉冲跨时钟的影响
频率变化对脉冲跨时钟的影响?在单bit脉冲跨时钟时,从快时钟同步到慢时钟时,通常采用在源时钟域进行扩展,然后同步到目的时钟并产生脉冲。如果src_clk为800MHz,dst_clk为可降频的时钟,通常为1.2GHz。此时在dst_clk为1.2GHz时,如果src_clk脉冲跨时钟没有扩展是没问题的。但是如果dst_clk降频到800MHz,那么因为时钟频偏和抖动的原因,可能会发生脉冲丢失,没有同步成功的情况。特别是将ASIC代码移植到FPGA版本中,通常时钟都会进行降频,时钟从1GHz降低到1原创 2020-08-22 20:23:21 · 423 阅读 · 0 评论 -
IC设计高级007:异常处理设计三要素
1、什么是异常处理设计为了保证芯片在非预期的情况下能够继续运行,需要针对异常进行个性化设计。常见的异常有交互的一方没有响应(比如读数据没有返回),模块输入的数据格式不满足要求。2、异常设计核心三要素针对异常情况,芯片设计具有三要素:1)不挂死异常情况发生时,芯片不能挂死。比如,状态机不能卡住,数据通路能够正常收发数据。2)能恢复出现状况时,电路状态能够及时恢复到正常状态,不阻塞后续的数据处理。比如状态机能够在几十微秒以内恢复到IDLE状态,不能卡住几秒钟,比如数据通路接收到不合法原创 2020-06-21 17:48:53 · 1396 阅读 · 0 评论 -
IC设计高级006:流控反压机制导致的路径延时
1、流水反压机制在之前的文章中,我们介绍了FIFO阈值如何设置。其实FIFO的阈值设置就是流水反压机制的一种。当下游模块存储的数据量超过将满水线时,下游模块会通过一根流控信号线fc通知上游模块停止发送模块,当下游模块存储的数据量低于将满水线时,流控信号线fc为无效状态,上游模块继续发送数据。2、存在加速比的流水反压机制路径延时当上游带宽大于下游带宽时,我们称之为存在加速比,即数据出口带宽小,数据入口带宽大。此类电路中由于存在流水反压机制因此数据不会溢出。但是路径拍数越多,所需要的缓存空间就越原创 2020-06-07 19:17:17 · 2223 阅读 · 0 评论 -
IC设计高级002:verilog 定位手段03-link状态统计
1、Verilog定位手段:link状态监控依据IEEE802.3协议设计的MAC、PCS具有link_up状态信号。PCIE接口具有链路训练成功信号,此处也称之为link_up信号。针对link状态、可以做如下监控:link_up状态实时可读 Link_up有效状态计数统计 Link_up从有效跳转到无效状态的次数统计--即link_down次数统计实时状态可读,可以获得当前状态有效状态统计,可以知道链路建立成功多次时间了link_down次数统计,可以知道在实际使用过程中,发生原创 2020-05-31 16:11:06 · 630 阅读 · 0 评论 -
IC设计高级005:自恢复设计
1、什么是自恢复设计?在芯片设计过程中,通常会针对特殊情况导致芯片无法使用额外添加一些功能,使得芯片具有更好的抗干扰能力。自恢复设计应用场景很广泛,比如、针对芯片温度过高的处理、针对残缺数据包的处理、针对长时间无数据响应的处理、针对各类错误的处理2、常见的自恢复设计芯片高温处理方式:几乎每一颗大型芯片都有一个温度监控,而且通常芯片温度过高时,外部CPU读取芯片温度进而控制芯片散热风扇的速度,这种设计仅仅是常见的被动式自恢复,而不是芯片自己主动触发。主动芯片自恢复设计:芯片会主动监控温度值,当原创 2020-05-31 15:54:08 · 835 阅读 · 0 评论 -
芯片上电001:完整芯片上电流程
1、完整的芯片上电流程?完整的芯片上电流程包含如下步骤前提准备如下芯片整体复位chip_rst处于有效状态 芯片PLL复位pll_rst处于有效状态 为提供芯片ref_clk管脚提供稳定的时钟,此类ref_clk管脚包含PLL参考时钟、serdes参考时钟、以及其他上电模块IP的参考时钟,例如memory repair和fimware加载的参考时钟下文以不包含调整电压步骤的上电流...原创 2020-03-29 13:05:09 · 2001 阅读 · 0 评论 -
IC设计高级:调度设计01_RR调度原理
1、RR轮询调度?RR轮询调度指的是在一次轮询响应请求中,每个请求信号都会获得响应。如下所示:输入rr_req[3:0]为4个请求信号,输出rr_grant[3:0]为4请求信号对应的4个响应信号:1表示有请求or响应,信号为0表示无请求or响应。如表所示,第1次,所有请求均有效,首先响应低bit的请求,所以rr_grant[0]=1。第3次请求,请求rr_req[1]有效,但是在第2次中...原创 2020-02-26 19:23:55 · 5969 阅读 · 3 评论 -
IC设计错误案例004:delay对异步握手机制的影响
1、路径延时对异步握手信号会造成哪些影响?在异步总线设计中,异步握手信号和数据命令等信号之间有明确的时序要求,要求保证握手信号(本文为bus_request)有效时(本文为1),数据命令等信号必须保持稳定,此要求不仅发送端要满足,当信号达到接收端的时候同样需要满足。在完成布局布线和时钟树插入后,信号的路径延时可能会比较大,并且不同信号延时大小不一致,从而导致信号抵达目的端的时候不满足此要求,从...原创 2019-12-01 11:19:38 · 630 阅读 · 0 评论 -
IC设计错误案例003:跨时钟模块错用软复位造成的危害
1、配置信号跨时钟要求使用硬复位在IC设计中,硬复位用于配置寄存器和配置信号的跨时钟模块。即一个配置信号cfg_mac_mode是由硬复位驱动的,如果要同步到其他时钟域,跨时钟模块需要使用硬复位,而不能使用软复位。2、配置信号跨时钟错用软复位的危害而在上电复位过程中,硬复位和软复位一般处于复位状态,需要依次释放,一般先释放硬复位,配置好配置信号,然后才释放软复位。正确设计:采用...原创 2019-10-18 21:09:48 · 727 阅读 · 0 评论 -
IC设计高级002:verilog 定位手段02-速率计算
1、Verilog定位手段:速率统计?在IC设计中,有些模块的应用有速率的要求,因此在FPGA阶段以及样片测试阶段,需要针对应用场景对速率进行计算,如果在RTL设计阶段能够添加相关的统计寄存器,能够高效准确的计算出传输速率。如MAC,itlkn,DMA,都需要添加相应的统计计算器计算当前状态的速率的相关信息,方便计算速率。2、如何添加速率统计?常见方法是:添加寄存器,记录一段时间内...原创 2019-09-13 10:24:21 · 984 阅读 · 0 评论 -
IC芯片设计项目管理002:标准化流程的应用
IC芯片设计项目管理002:标准化流程的应用1、IC设计领域的SOPSOP(standard of process)指的是一种标准化的流程,它能够有效提高工作效率,保证产品质量。SOP可以分为横向和纵向。纵向指得是为了完成某个事情,你必须要完成的步骤。IC设计流程:规格制定、详细设计、HDL编码、仿真验证、逻辑综合、STA、形式验证、DFT、布局规划(FloorPlan)、布线(Place...原创 2019-03-31 20:29:45 · 4066 阅读 · 0 评论 -
二进制与格雷码转换verilog实现
1、什么是格雷码?依次递增的连续格雷码只有一个比特位不一样,常用于异步FIFO的读写地址跨时钟,进行二进制格雷码间的相互转换以降低亚稳态发生概率,确保异步FIFO的功能正常。十进制 二进制 格雷码 备注 0 000 000 只有1比特变化 1 001 001 2 010 011 3 011 010 4 100 110 5 101 111 6 ...原创 2018-05-13 09:57:19 · 6396 阅读 · 0 评论 -
IC设计高级004:异步复位同步释放与同步复位打拍
1、异步复位同步释放异步复位同步释放模块:rst_synchronizer.v模块采用3级同步打拍模块 异步复位async_rst_n连接到3级同步寄存器复位端 时钟采用目的时钟dst_clk 第一个寄存器输入D端接高电平 最后一级reg的Q端是作为模块输出的已同步的复位信号模块特点:采用3级同步器减少亚稳定发生概率 一般后端会采用定制模块实现,保证3级寄存器的上一级...原创 2019-08-11 11:28:34 · 1594 阅读 · 0 评论 -
IC设计高级002:verilog 定位手段01-关键信号统计02-高电平计数还是低电平计数
1、Verilog定位手段:关键信号:高电平计数还是低电平计数?在IC设计中,进行需要对关键信号的特定状态进行计数,方便debug时进行状态判断。如对流控、反压等信号进行计数。有时候需要进行判断,是高电平计数还是低电平计数。判断标准是:选择高电平或者低电平计数,要保证能够观察到异常情况如下图所示:情况1:正常情况下rdy拉高后一直保持为1,不应该会出现右侧异常,偶尔为0,因此采用低...原创 2019-07-21 10:53:19 · 1377 阅读 · 0 评论 -
异步FIFO的异步复位顺序与复位释放顺序?
异步FIFO的异步复位顺序与复位释放顺序?如下图所示,FIFO所用的存储结构为1R1W的双端口RAM,RAM存在读写冲突问题时,读出的数据会是不稳定状态,即当读操作和写操作同时发生且读写地址相同则RAM会发生读写冲突。注意:在FIFO正常工作状态,内部存储RAM是不会发生读写冲突的,只有当不合理复位操作才会导致FIFO内部RAM发生读写冲突。图中的两个复位:wrst_n和rrst_n均为异步复位1...原创 2018-06-10 11:11:28 · 11570 阅读 · 5 评论 -
门控时钟设计001:什么是门控时钟?如何产生门控时钟?
什么是门控时钟?Clockgating:在数据无效时,将寄存器时钟关闭的技术,能够有效降低功耗, 是低功耗设计的重要方法之一。门控时钟其实就是一个逻辑模块,在寄存器的输入数据无效时,将寄存器的输入时钟置为0,而此时寄存器值保持不变,此时没有时钟翻转,避免了动态功耗。如何生存门控时钟?在IC设计中,编写RTL代码的时候,只要采用合理规范的编码风格,即可以通过EDA工具自行产生门控时钟模块...原创 2018-06-24 17:34:21 · 24278 阅读 · 1 评论 -
如何学习数字集成电路:数字IC必读书籍
数字IC必读书籍本文将从简单到复杂的顺序依次列出数字IC设计需要阅读的书籍。1、数字电路基础数字IC设计最基础的书籍了,相关书籍比较多,可以随意挑选:主要是为了弄清楚与或门电路,触发器、译码器、脉冲产生、逻辑化简等待。读书策略: 用时短、打基础、必读认真阅读、把书中的习题都做一遍、每章节重点必须要掌握。书籍选择: 数字电路与系统(第3版) 戚金清,王兢 编 2、《数字集成电路--电路、系统与设...原创 2018-06-13 20:38:11 · 6739 阅读 · 2 评论 -
IC设计数据流复位顺序、解复位顺序?
IC设计逻辑复位顺序、解复位顺序?如图所示:模块A、B、C为芯片逻辑模块,数据流从模块A流向模块B、模块C。1、复位顺序是怎样的?如果需要对模块A、B、C进复位操作,复位操作顺序是什么样的呢?先复位哪个模块,后复位哪个模块? 复位顺序:A--->B--->C 按数据流方向复位 先复位A模块,最后复位C模块。复位的原则是保证复位完成后,数据通路中没有不稳定状态。如果先复位模块C,最后...原创 2018-06-06 20:36:53 · 4812 阅读 · 0 评论 -
FIFO阈值如何设置?将满阈值与FIFO深度的关系?
FIFO阈值如何设置1、什么是FIFO?FIFO(first in firstout)是一种用寄存器reg或者RAM实现的存储结构,常用于存储数据通道中的数据流,采用先入先出的数据,当下游模块无法及时处理上流模块输出的数据时,此时需要用FIFO暂存数据,防止数据丢失。2、什么是FIFO阈值FIFO阈值包含将满阈值afull_cnt和将空阈值aempty_cnt,当FIF...原创 2018-06-03 12:32:08 · 11900 阅读 · 7 评论 -
什么是IO Pad?
1.什么是IO pad?IO pad是一个芯片管脚处理模块,即可以将芯片管脚的信号经过处理送给芯片内部,又可以讲芯片内部输出的信号经过处理送到芯片管脚。输入信号处理包含时钟信号,复位信号等,输出信号包含观察时钟、中断等。IO pad 具有不同的类型,对应不同的信号需要不同的IO pad模块,常见的信号类型有:输入差分时钟信号,复位信号,正常数据信号、输出观察时钟信号、JTAG接口信号、正常输出信号...原创 2018-05-13 10:37:16 · 38890 阅读 · 0 评论