自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 QSPI Flash xip取指同时program过程中概率性出现usb播歌时断音

USB Audio芯片,代码放到qspi flash中,执行代码时,客户会偶尔保存一些参数,即FPGA验证过程中,每隔10ms向flash info区烧写4个byte(取指过程一直存在,且时隙软件不可控),同时芯片同时打开录音功能,以及DAC播放功能、以及打开系统中其他中断模块(程序会被频繁打断)。

2023-12-29 08:32:47 1369

原创 Mentor USB Controller EDA仿真系列之SetAddress传输

本文主要介绍Mentor USB Controller传输SetAddress枚举流程,包括前期phy上电、控制器上电以及内部相关状态机运作情况,以及host和device两种情况下的软件配置。并重点介绍了该包传输的整体flow。文章最后对仿真过程中遇到的问题做了介绍并给出了解决该问题的一种方法。提示:以下是本篇文章正文内容,下面案例可供参考1. 首先保证phy能正常输出xclk,该clk是接给controller使用的,要想phy能正确产生xclk,则phy的driver必须正确。

2023-12-26 15:42:46 1140

原创 Mentor USB Controller EDA仿真系列之Bulk In传输

本文主要介绍Mentor USB Controller传输Bulk In包的整个流程,包括前期phy上电、控制器上电以及内部相关状态机运作情况,以及host和device两种情况下的软件配置。并重点介绍了该包传输的整体flow。文章最后对仿真过程中遇到的问题做了介绍并给出了解决该问题的一种方法。提示:以下是本篇文章正文内容,下面案例可供参考1. 首先保证phy能正常输出xclk,该clk是接给controller使用的,要想phy能正确产生xclk,则phy的driver必须正确。

2023-12-26 10:54:28 1192

原创 Mentor USB Controller系列之脚本生成RTL代码

本文主要介绍了通过mentor官网提供的脚本如何自动生成RTL代码及配置的

2023-12-25 10:02:06 472

原创 Mentor USB Controller系列之寄存器解析

要想深入理解并灵活运行mentor提供的这套controller,需要我们对里面的每个寄存器都深入理解。本文详细解释了每个寄存器以及使用方法和注意事项。提示:以下是本篇文章正文内容,下面案例可供参考以上内容对寄存器做了详细的解析,并对一些关键的寄存器bit做了备注,在实际使用过程中需要软件特别的注意。寄存器的定义对应了每个功能,只有详细了解每个寄存器的物理含义以及使用说明,才能更好的实现相关的功能。

2023-12-25 09:57:28 1147

原创 SOC系统经典IP介绍以及使用方法说明之dw_i2c

本文详细介绍了i2c的相关协议、硬件的工作原理,以及软件的使用方法。并且根据实例讲解了相关的技术细节,供大家参考。当然,本文只针对i2c的某一种应用场景进行举例,实际工作过程中,大家还需要根据需求对此做简单调整。

2023-12-22 10:39:23 1384

原创 异步时钟域处理的七种方法

本文介绍了异步处理的7种常用的解决方法以及对应的使用场景介绍,每种方法各有优势,具体的选择可以根据实际需求进行平衡。

2023-12-22 09:48:46 1071

原创 关于时钟模块完备性验证方法第八章-功能覆盖率

通过以上几个章节,我们介绍了关于时钟模块完备性验证的多个自动化checker,通过在testbench中添加以上自动化checker,可以自动检查出各种违例,假如说我们准备好了这些自动化checker,那么接下来就需要我们产生丰富的测试激励来对系统时钟进行验证。通常情况下代码覆盖率可以作为验证质量的一个衡量标准,但是很多时候,考虑到项目周期短,验证人员分配不足等各种先天因素的影响,我们很难把代码覆盖率收集到某个高度。

2023-12-22 09:17:02 1032

原创 关于时钟模块完备性验证方法第七章

仅仅是借用Verilog语法进行简单的设计,便能在实战中发挥不可想像的作用,通过实时检测系统时钟是否发生不定态问题,该方法同样适用于EDA后仿真验证。通过模块的层次化调用,便于继承和优化修改。大大提高了验证效率。

2023-12-22 09:00:10 1116

原创 SOC系统经典IP介绍以及使用方法说明之dw_wdt

WDT即我们常说的看门狗,一般带CPU的系统都会配上WDT,主要原因也是因为在实际软件运行过程中,无论是硬件存在缺陷还是软件存在bug,还是随着芯片运行环境变化导致timing问题、甚至说遇到了概率性的异步问题等原因,莫名导致CPU跑飞了,也就是说CPU无法正常取指执行,进而导致一些模块无法正常运行,而这些应用场景有时候无法人为干预,所以即使CPU跑飞了,我们也想通过某个技术手段,让CPU能够回归正常,也就是我们说的重启。

2023-12-21 09:33:27 474 1

原创 关于时钟模块完备性验证方法第六章

之所以要进行时钟glitch检查,是因为实际工程中我们遇到这样的问题,有些时钟设计,比如在频率切换过程中,有的时钟设计并非无毛刺切换设计,但是这又是设计允许的,也有些设计虽然是无毛刺切换,但是切换过程中频率并不规整,但是频率也是可以接受的,这就导致前面章节中我们介绍的频率自动化检查的checker无法cover所有的需求,只能waive掉这些特殊的时钟,但是又担心waive掉后,系统运行过程中有可能漏掉一些不满足最小脉冲要求的情况,即我们常说的glitch。

2023-12-21 09:13:01 461

原创 SOC系统经典IP介绍以及使用方法说明之dw_timer

dw_timer即定时器,在SOC系统中属于常用的模块,目前synopsis工具可以根据需求自动生成RTL代码,具有很强的通用性和移植性。本文主要针对dw_timer进行简单的介绍,包括寄存器配置flow以及使用过程中的一些注意事项。

2023-12-20 09:17:51 630 1

原创 关于时钟模块完备性验证方法第五章

只所以要进行时钟strobe检查,是因为很多时候设计中有下图时序的要求,这种场景一般在两个频率不同的时钟域内进行数据交互的时候会用到,比如AHB到APB域的数据交互,都需要利用clk_strobe来指示数据的有效性。

2023-12-20 08:59:18 1255 1

原创 vim常用命令及使用技巧

vim编辑器是一种强大的代码coding编辑器,比如对Verilog,systemverilog,c++等,其中有很多使用技巧以及相关插件,如果能很好的掌握这些,可以极大的提高编程效率,本文首先对vim常用的命令做一些总结,后续再更新一些经典的插件,供大家参考。序号命令介绍1gg跳转到当前文件第一行2G跳转到当前文件最后一行3vG选择当前行及以下所有行4dG删除当前行及以下所有行5:vs左右分屏6:sp上下分屏7把全文所有m替换为n8把1到5行所有m替换为n。

2023-12-19 08:49:29 807 1

原创 关于时钟模块完备性验证方法第四章

之所以要进行时钟相位检查,是因为设计中经常会出现一些时钟具有固定相位关系的情况,比如说两个时钟同相位或者反相位,又或者两个时钟差一个高频时钟的相位等等。

2023-12-19 08:31:33 1133 1

原创 关于时钟模块完备性验证方法第三章

之所以要进行时钟占空比检查,因为中后端对时钟建模的时候会要求时钟的最小脉冲宽度,当我们RTL产生时钟的时候,大部分情况会按照要求进行建模,但是也有可能出现时间产生的时钟与spec中定义的不一致,导致与中端generate的时钟不一致,影响最终的timing,另外对于复杂的时钟方案中,比如在时钟切换时,可能会在时钟切换时刻引入占空比不符合要求的情况,类似glitch这种,因此在验证时钟完备性时一定要进行占空比的检查。提示:以下是本篇文章正文内容,下面案例可供参考。

2023-12-18 14:38:41 628 1

原创 关于时钟模块完备性验证方法第二章

众所周知,时钟模块为整个SOC系统中各个模块提供相应的时钟,在大部分情况下,各个模块的时钟频率各不相同,这也是为了更好的管理芯片的功耗问题,当系统需要跑到高频阶段时,软件可以通过配置分频控制字将时钟切换到高频,同理当芯片需要进行相对低的功耗时,就需要把各个模块的频率切换到低频去工作。因此,在系统工作过程中,软件会频繁切换相关模块的时钟频率。关于时钟无毛刺切换设计,我已在其他篇文章中做了详细介绍,这里我们主要介绍如何验证时钟切换过程中频率是否符合要求的问题。

2023-12-18 13:56:11 323 1

原创 关于时钟模块完备性验证方法第一章

随着集成电路的规模越来越大,系统中所需要的时钟系统也越来越复杂,如何保证时钟验证的完备性一直是众多验证工程师追求的目标,本文就系统中时钟模块的验证完备性进行探讨,包括时钟门控、时钟频率、时钟占空比、时钟glitch、时钟相位、以及参考模型等。

2023-12-16 18:44:17 1707

原创 RST_GEN设计规范系列之同步释放原则

在SOC系统中,rst_gen是专门为系统各个模块产生复位逻辑,用于接DFF的复位端口。为了保证系统复位正常,rst_gen模块设计有严格的要求,一般会跟clk_gen匹配产生,好的rst_gen设计不但可以保证系统复位的鲁棒性,还有利于中后端recovery/removal的timing收敛。提示:以下是本篇文章正文内容,下面案例可供参考beignif(!rst_n)elseend如上例子定义一个寄存器 example_name,该寄存器的CK端为clk,复位端为rst_n。

2023-12-15 13:52:37 72

原创 ECO for SOC

按照芯片研发flow,一旦需要做ECO,说明项目周期基本进行到了末尾阶段。通常情况下,一旦项目进行到了后仿阶段,再发现设计上的bug之后,首先需要进行评估,看是否能进行ECO,如果可以进行ECO,优先选择ECO方案,因为一旦重新走中后端流程,意味着项目周期要delay,除非后期发现的bug无法通过ECO解决。毕竟ECO也只能进行简单的改动,一旦需要进行复杂逻辑的改动,很可能无法进行ECO。本文我们介绍一下简单的ECO,比如修改寄存器默认值的改动,这是一个简单的ECO改动,也是经常会遇到的问题。

2023-12-15 10:20:53 108

原创 芯片中顶层金属(top metal)的选择及厚度

1.电阻率:铝的电阻率比铜大,但是由于铝比铜轻,所以铝线的比电阻(电阻率乘以线长)比铜低。1.导电性能:金属互联的厚度对电阻的影响非常明显,厚度越小,电阻就越大。另一方面,厚度越大,互联线的承载能力就越强。综上所述,芯片中选择铝组成顶层金属互联以及选择较厚的厚度,是考虑到多个方面的因素。2.机械性能:芯片加工过程中,会涉及到许多高温高压的操作,同时还需要进行晶圆切割等步骤,这就需要顶层金属互联具有足够的机械强度。2.价格:铝的价格比铜便宜,而顶层金属互联的材料需要大量使用,因此选择铝线可以降低生产成本。

2023-12-14 17:57:20 1591 1

原创 利用工具自动生成 IPs

当我们项目中需要使用一些经典的IP时,比如timer、wdt、uart、i2c、apb、ahb、arbitary、axi bus等等IPs时,可以利用工具自动生成,大大节省项目开发时间,而且工具自动生成的代码几乎没有什么bug,功能也很丰富。缺点是,相对人工写的RTL,这些自动生成的代码面积相关大一些,不同的项目可以根据项目需求进行取舍。提示:以下是本篇文章正文内容,下面案例可供参考例如:以上就是今天要讲的内容,本文详细介绍了生成DW相关IPs的使用。

2023-12-14 17:44:26 424 1

原创 关于两个时钟进行无毛刺切换的一种实现方法

在时钟设计方案中,通常要求硬件支持多个时钟源之间进行切换,可分为有毛刺切换和无毛刺切换,有毛刺切换对硬件设计要求不高,但是需要软件配合,即软件需要按照指定的flow来保证最终实现的时钟电路不能出现毛刺,常用的方法比如关停时钟,配置切换信号,然后再打开时钟。这种方式在有些系统中要求切换过程中不能关停时钟时,就不太使用。所谓无毛刺切换是硬件上支持软件可以任意时刻进行时钟源之间的切换。output wire sel_clk_st, //当前时钟源指示信号。

2023-12-13 10:48:19 202

原创 关于时钟动态切换分频控制字设计的一种通用写法

else if(clk_div_cnt == (clk_div_num_smp - 1'b1)) //在即将归0的前一拍更新新的分频控制字。input wire[NUM_WD-1:0] clk_div_num, //时钟分频控制字,这里举例2bit,最多进行3分频。input wire clk_div_en, //时钟分频模块使能,主要用于低功耗设计。

2023-12-13 10:26:56 380

原创 2.5分频电路及其扩展

该电路实现的技术难点是:如果用数字方式实现的话,每次综合都需要对模块中的异或逻辑进行timing修正,我们可以看到clk_src_tmp的窄脉冲其实是靠clk_div3_div2进行delay得到的,在中后端由于有max pulse以及min pulse的要求,所以这个窄脉冲的宽度不宜太大,也不宜太小,因此这种电路最好用模拟电路搭,将其做成hardmarco,这样方便后续项目继承。同时,该电路也可以扩展到其他的点5分频,只需要将前级的三分频修改为所需的整数分频即可。电路结构相对简单,易实现,可继承性强。

2023-09-12 21:14:10 504

原创 USB2.0 基础知识点整理一

USB作为通用串行总线,目前支持低速、高速和超高速三种传输速率,其中LS为12M,HS为480M,SS可达5G,本篇文章主要针对USB物理层以及协议层相关USB知识点进行整理,所涉及内容包括具体的controller和phy设计以及EDA验证内容。以上就是今天要讲的内容,本文主要介绍了USB的基本传输常用的知识点,并结合实际仿真case,给出了host与device通讯的基本流程。

2023-08-27 11:42:19 690 1

原创 Mentor USB Controller EDA仿真系列之Bulk Out传输

本文主要介绍Mentor USB Controller传输Bulk Out包的整个流程,包括前期phy上电、控制器上电以及内部相关状态机运作情况,以及host和device两种情况下的软件配置。并重点介绍了该包传输的整体flow。文章最后对仿真过程中遇到的问题做了介绍并给出了解决该问题的一种方法。

2023-08-25 14:11:43 168 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除