时钟和复位的验证

文摘   2024-05-25 05:46   上海  

1.前言

在芯片验证中,时钟和复位功能是非常重要的部分,因为它们直接影响芯片的正常工作。时钟和复位的验证对于芯片设计和验证非常重要,通过充分测试时钟和复位功能,能够确保芯片在实际应用中稳定可靠地工作,减少系统风险和故障的发生。

2.分享时钟和复位验证的套件

本文分享一个用于芯片验证中时钟和复位验证的套件(文末送所有源代码)该套件提供以下功能:
2.1自动检查时钟频率
2.2自动检查时钟占空比
2.3自动检查复位值
2.4自动检查时钟和复位中的故障


3.具体使用方法

如下图所示,注意分为以下几步:
3.1填写CRG表格
3.2运行脚本生成组件
3.3将组件集成到环境中。

3.4配置和仿真

欢迎加入知识星球。星球内每周都有高质量内容更新!每天都会解答大家提出的技术问题。欢迎加入知识星球,助您快速成长。

4.举个例子

下图是一个简单的时钟树

下图是一个简单分复位树

4.1填写下图中的表格
时钟表格如下

复位表格如下

4.2运行python脚本

python gen_crg_nodes.py


运行上述脚本后,会产生两个文件:"crg_nodes.sv" and "crg_if_inst.sv"。

4.3集成

4.3.1 将“crg”目录复制到testbench中(如crg_NODE_dir的目录),并将该目录添加到incdir中

+incdir+$CRG_NODE_DIR
4.3.2 将"svk_crg_pkg.sv"添加到filelist中
......$CRG_NODE_DIR/svk_crg_pkg.sv......

4.3.3 实例化crg_nodes

class env extends uvm_env;    import svk_crg_pkg::*;    crg_nodes nodes;    ...    function build_phase();        crg_nodes nodes = crg_nodes::type_id::create("nodes", this);        nodes.model = xxx_model;   // set the register modelendfunctionendclass

将“crg_node.sv”的“xxx_reg_block”修改为与env中设置的xxx_model相同的类型。

4.3.4 在tb_top中添加include "crg_if_inst.sv"
    module tb_top();        import svk_crg_pkg::*;        ...        `include "crg_if_inst.sv"        ...    endmodule

4.3.4 配置和仿真

配置时钟和复位寄存器,运行仿真,该套件会自动检查时钟和复位。

5.送所有源代码
关注微信公众号《芯片验证日记》,后台回复"clkRst20240525"即可获得百度网盘链接,如下图所示。

功能仿真中,如何模拟时钟的抖动


[全文完]

最后,由于TX修改规则,为了不错过后续内容,欢迎加入QQ群,

另外,由于微信群已经超过200人,添加小编的微信,拉你进入WX学习群。

感谢关注微信公众号《芯片验证日记》,
一起好好学习,天天向上!

芯片验证日记
分享芯片验证相关的知识。
 最新文章