<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[luyil的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/luyil</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; luyil]]></copyright><item><title><![CDATA[VIM经典命令系列之数字递增、递减]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/136214111</link><guid>https://blog.youkuaiyun.com/luyil/article/details/136214111</guid><author>luyil</author><pubDate>Wed, 10 Dec 2025 09:45:25 +0800</pubDate><description><![CDATA[Vim进阶技巧：数字递增递减操作指南 本文介绍了Vim中实现数字递增递减的高效方法。主要内容包括： 单列数字操作：通过列选中+I命令或qa寄存器记录实现自动递增 多列数字处理：结合f跳转和寄存器操作实现多列同步递增 实用技巧：演示了array[0]=5到array[3]=20等复杂格式的批量生成方法 这些技巧能显著提升重复性数字编辑的工作效率，特别适合处理有规律的批量数字修改场景。文章通过具体示例详细说明了各种方法的操作步骤和适用场景。]]></description><category></category></item><item><title><![CDATA[DW_AHB_FULL下接DW_AHB_LITE注意事项]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/140475828</link><guid>https://blog.youkuaiyun.com/luyil/article/details/140475828</guid><author>luyil</author><pubDate>Wed, 10 Dec 2025 09:42:11 +0800</pubDate><description><![CDATA[摘要：在AHB_Lite与AHB_FULL接口设计中，由于AHB_Lite缺少hready_in和hsel信号，导致控制信号传递出现问题。仿真发现当AHB_FULL的QSPI Flash取指令访问AHB_Lite下的寄存器时，因hready未关联造成APB寄存器写入错误。解决方案包括：1）将AHB_FULL的hready与htrans信号相与后再传给AHB_Lite；2）对AHB_Lite的htrans信号增加hsel选通控制。此外，针对H2H桥接场景，建议将slave端hready短接以避免重复传输。这些]]></description><category></category></item><item><title><![CDATA[时钟模块AC scan插OCC scan 规则]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/141351072</link><guid>https://blog.youkuaiyun.com/luyil/article/details/141351072</guid><author>luyil</author><pubDate>Wed, 10 Dec 2025 09:36:59 +0800</pubDate><description><![CDATA[摘要：本文提出两种时钟控制方案：1）对于高频电路（&gt;200MHz），在RTL中自动插入clk_occ_buf_*单元（禁止级联），后端工具将据此完成OCC插入；2）低频电路仅需普通scan_mux。图中展示了高频方案的实现规则，其禁用机制类似CGC：scan_mode下将CGC enable强制置0，同时低频CGC的scan_mode接0。该方案实现了高频电路的时钟门控优化，同时确保扫描测试功能不受影响。]]></description><category></category></item><item><title><![CDATA[Verilog基本语法- for循环使用注意事项]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/155742983</link><guid>https://blog.youkuaiyun.com/luyil/article/details/155742983</guid><author>luyil</author><pubDate>Wed, 10 Dec 2025 09:32:33 +0800</pubDate><description><![CDATA[本文总结了Verilog/SV中for循环的使用注意事项：1)时序逻辑中慎用for循环；2)Verilog中for循环需包含在generate/always块内，SV允许外露；3)循环体必须使用begin-end块，并添加大写块名；4)位选择语法中，常规for循环仅支持data[base_expr+:width]形式，不支持变量作为双下标（如data[3i+8:3i]）；5)generate块支持更多语法形式。重点指出位选择时变量下标的使用限制：Verilog-2001允许base_expr为变量，但wid]]></description><category></category></item><item><title><![CDATA[Verilog基本语法-压缩数组和非压缩数据]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/155750512</link><guid>https://blog.youkuaiyun.com/luyil/article/details/155750512</guid><author>luyil</author><pubDate>Wed, 10 Dec 2025 09:30:00 +0800</pubDate><description><![CDATA[本文介绍了Verilog中压缩数组和非压缩数组的定义与使用。压缩数组将位宽定义在变量名前（如reg[3:0][7:0] temp），而非压缩数组将位宽定义在变量名后（如reg temp[3:0]）。实际应用中常采用压缩结合非压缩的方式定义数组（如reg[31:0] temp[7:0]）。文章还说明了在模块端口声明时使用压缩类型（如wire[7:0][31:0] temp1）可简化端口连接，并给出了通过assign语句连接压缩数组元素的示例。]]></description><category></category></item><item><title><![CDATA[timescale定义可能会影响后仿真的原因]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/148305040</link><guid>https://blog.youkuaiyun.com/luyil/article/details/148305040</guid><author>luyil</author><pubDate>Tue, 09 Dec 2025 17:47:50 +0800</pubDate><description><![CDATA[仿真时间精度问题会导致延迟值的四舍五入误差。在timescale为1ns/1ps时，1.2556ns会被显示为1.256ns，而1.2554ns则显示为1.255ns。这种精度误差在后仿中可能累积导致时序违例。解决方法包括修改网表timescale（不现实）或通过PT报告debug，逐个比对路径上的cell延迟。实际应用中应以PT报告为准，并重点检查未反标的cell。]]></description><category></category></item><item><title><![CDATA[Verilog实现标准两输入时钟无毛刺切换]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/148316559</link><guid>https://blog.youkuaiyun.com/luyil/article/details/148316559</guid><author>luyil</author><pubDate>Tue, 09 Dec 2025 17:43:04 +0800</pubDate><description><![CDATA[2种方案实现Verilog时钟无毛刺切换电路]]></description><category></category></item><item><title><![CDATA[用Verilog库函数实现正弦波（三角函数波）]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/148419995</link><guid>https://blog.youkuaiyun.com/luyil/article/details/148419995</guid><author>luyil</author><pubDate>Tue, 09 Dec 2025 15:30:40 +0800</pubDate><description><![CDATA[摘要：本文介绍了正弦波生成的数学公式A*sin(2πft+φ)，其中A为幅度，f为频率，φ为初始相位。以50Hz正弦波为例，在100MHz精度下，一个周期包含2×10^6个采样点。通过周期性累加计数器cnt，可计算出每个采样点的相位值。Verilog实现中，将公式转换为数字信号处理形式，并给出了仿真波形验证。该方案适用于数字信号发生器设计，能够精确控制正弦波的频率、幅度和相位参数。]]></description><category></category></item><item><title><![CDATA[DW_AHB配置解析]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/148252232</link><guid>https://blog.youkuaiyun.com/luyil/article/details/148252232</guid><author>luyil</author><pubDate>Tue, 09 Dec 2025 15:09:40 +0800</pubDate><description><![CDATA[摘要：本文介绍了AHB总线配置选项，包括AHB lite和AHB full的选择、主从设备数量、地址/数据位宽设置、大小端控制方式、地址译码模式（内部/外部）、低功耗模式控制（pause mode）、仲裁机制（带权重优先级）、突发传输控制、存储器重映射功能等。重点说明了当master采样到hgrant信号有效时，会在同一时钟周期同时发出htrans和hbusreq信号，并以htrans作为传输开始的标志。文中还详细解释了各配置参数的具体含义和使用场景。]]></description><category></category></item><item><title><![CDATA[EDA后仿真之NOTIFIER]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135697442</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135697442</guid><author>luyil</author><pubDate>Tue, 09 Dec 2025 14:58:34 +0800</pubDate><description><![CDATA[摘要：后仿真主要检查时序问题，当时序违例导致DFF输出不定态时可能引发系统故障。文章介绍了时序检查类型（setup、hold等）及notifier机制，当时序违例发生时notifier会翻转并导致寄存器输出x态。针对不需要时序检查的情况，提出了三种解决方法：1）force寄存器notifier为x；2）使用vcs选项全局禁用时序检查；3）使用vcs ucli接口选择性禁用特定检查类型。]]></description><category></category></item><item><title><![CDATA[QSPI Flash xip取指同时program过程中概率性出现usb播歌时断音]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135282191</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135282191</guid><author>luyil</author><pubDate>Fri, 29 Dec 2023 08:32:47 +0800</pubDate><description><![CDATA[USB Audio芯片，代码放到qspi flash中，执行代码时，客户会偶尔保存一些参数，即FPGA验证过程中，每隔10ms向flash info区烧写4个byte（取指过程一直存在，且时隙软件不可控），同时芯片同时打开录音功能，以及DAC播放功能、以及打开系统中其他中断模块（程序会被频繁打断）。]]></description><category></category></item><item><title><![CDATA[Mentor USB Controller EDA仿真系列之SetAddress传输]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135222989</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135222989</guid><author>luyil</author><pubDate>Tue, 26 Dec 2023 15:42:46 +0800</pubDate><description><![CDATA[本文主要介绍Mentor USB Controller传输SetAddress枚举流程，包括前期phy上电、控制器上电以及内部相关状态机运作情况，以及host和device两种情况下的软件配置。并重点介绍了该包传输的整体flow。文章最后对仿真过程中遇到的问题做了介绍并给出了解决该问题的一种方法。提示：以下是本篇文章正文内容，下面案例可供参考1. 首先保证phy能正常输出xclk，该clk是接给controller使用的，要想phy能正确产生xclk，则phy的driver必须正确。]]></description><category></category></item><item><title><![CDATA[Mentor USB Controller EDA仿真系列之Bulk In传输]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135216157</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135216157</guid><author>luyil</author><pubDate>Tue, 26 Dec 2023 10:54:28 +0800</pubDate><description><![CDATA[本文主要介绍Mentor USB Controller传输Bulk In包的整个流程，包括前期phy上电、控制器上电以及内部相关状态机运作情况，以及host和device两种情况下的软件配置。并重点介绍了该包传输的整体flow。文章最后对仿真过程中遇到的问题做了介绍并给出了解决该问题的一种方法。提示：以下是本篇文章正文内容，下面案例可供参考1. 首先保证phy能正常输出xclk，该clk是接给controller使用的，要想phy能正确产生xclk，则phy的driver必须正确。]]></description><category></category></item><item><title><![CDATA[Mentor USB Controller系列之脚本生成RTL代码]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135192532</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135192532</guid><author>luyil</author><pubDate>Mon, 25 Dec 2023 10:02:06 +0800</pubDate><description><![CDATA[本文主要介绍了通过mentor官网提供的脚本如何自动生成RTL代码及配置的]]></description><category></category></item><item><title><![CDATA[Mentor USB Controller系列之寄存器解析]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135192202</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135192202</guid><author>luyil</author><pubDate>Mon, 25 Dec 2023 09:57:28 +0800</pubDate><description><![CDATA[要想深入理解并灵活运行mentor提供的这套controller，需要我们对里面的每个寄存器都深入理解。本文详细解释了每个寄存器以及使用方法和注意事项。提示：以下是本篇文章正文内容，下面案例可供参考以上内容对寄存器做了详细的解析，并对一些关键的寄存器bit做了备注，在实际使用过程中需要软件特别的注意。寄存器的定义对应了每个功能，只有详细了解每个寄存器的物理含义以及使用说明，才能更好的实现相关的功能。]]></description><category></category></item><item><title><![CDATA[SOC系统经典IP介绍以及使用方法说明之dw_i2c]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135146342</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135146342</guid><author>luyil</author><pubDate>Fri, 22 Dec 2023 10:39:23 +0800</pubDate><description><![CDATA[本文详细介绍了i2c的相关协议、硬件的工作原理，以及软件的使用方法。并且根据实例讲解了相关的技术细节，供大家参考。当然，本文只针对i2c的某一种应用场景进行举例，实际工作过程中，大家还需要根据需求对此做简单调整。]]></description><category></category></item><item><title><![CDATA[异步时钟域处理的七种方法]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135145335</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135145335</guid><author>luyil</author><pubDate>Fri, 22 Dec 2023 09:48:46 +0800</pubDate><description><![CDATA[本文介绍了异步处理的7种常用的解决方法以及对应的使用场景介绍，每种方法各有优势，具体的选择可以根据实际需求进行平衡。]]></description><category></category></item><item><title><![CDATA[关于时钟模块完备性验证方法第八章-功能覆盖率]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135144737</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135144737</guid><author>luyil</author><pubDate>Fri, 22 Dec 2023 09:17:02 +0800</pubDate><description><![CDATA[通过以上几个章节，我们介绍了关于时钟模块完备性验证的多个自动化checker，通过在testbench中添加以上自动化checker，可以自动检查出各种违例，假如说我们准备好了这些自动化checker，那么接下来就需要我们产生丰富的测试激励来对系统时钟进行验证。通常情况下代码覆盖率可以作为验证质量的一个衡量标准，但是很多时候，考虑到项目周期短，验证人员分配不足等各种先天因素的影响，我们很难把代码覆盖率收集到某个高度。]]></description><category></category></item><item><title><![CDATA[关于时钟模块完备性验证方法第七章]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135144526</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135144526</guid><author>luyil</author><pubDate>Fri, 22 Dec 2023 09:00:10 +0800</pubDate><description><![CDATA[仅仅是借用Verilog语法进行简单的设计，便能在实战中发挥不可想像的作用，通过实时检测系统时钟是否发生不定态问题，该方法同样适用于EDA后仿真验证。通过模块的层次化调用，便于继承和优化修改。大大提高了验证效率。]]></description><category></category></item><item><title><![CDATA[SOC系统经典IP介绍以及使用方法说明之dw_wdt]]></title><link>https://blog.youkuaiyun.com/luyil/article/details/135122600</link><guid>https://blog.youkuaiyun.com/luyil/article/details/135122600</guid><author>luyil</author><pubDate>Thu, 21 Dec 2023 09:33:27 +0800</pubDate><description><![CDATA[WDT即我们常说的看门狗，一般带CPU的系统都会配上WDT，主要原因也是因为在实际软件运行过程中，无论是硬件存在缺陷还是软件存在bug，还是随着芯片运行环境变化导致timing问题、甚至说遇到了概率性的异步问题等原因，莫名导致CPU跑飞了，也就是说CPU无法正常取指执行，进而导致一些模块无法正常运行，而这些应用场景有时候无法人为干预，所以即使CPU跑飞了，我们也想通过某个技术手段，让CPU能够回归正常，也就是我们说的重启。]]></description><category></category></item></channel></rss>