systemverilog & UVM 日常杂记

1、在 UVM 中,如果需要通过 uvm_print 打印 class 中所有变量,并且希望某些变量以十进制格式显示,可以在定义和注册变量时使用 UVM_DEC 选项。具体可以通过在 uvm_field_* 宏的后面添加 UVM_DEC 来实现。

class my_class extends uvm_object;
    int A;

    `uvm_object_utils_begin(my_class)
        `uvm_field_int(A, UVM_ALL_ON | UVM_DEC)  // 注册变量A,使用UVM_DEC来打印为十进制格式
    `uvm_object_utils_end

    function new(string name = "my_class");
        super.new(name);
    endfunction
endclass

2、verilog 之奇异0/1/x 态

运算符输入 A输入 B结果
&0x0
&1xx
|x11
|x0x

说明:

  • &(与运算)
    • 0 & x 永远为 0,因为 0 与任何值 x 进行 "与" 运算结果都是 0
    • 1 & x 的结果为 x,因为 1 与任何值 x 进行 "与" 运算,结果就是 x
  • |(或运算)
    • 1 | x 永远为 1,因为 1 与任何值 x 进行 "或" 运算,结果总是 1
    • 0 | x 的结果为 x,因为 0 与任何值 x 进行 "或" 运算,结果就是 x

3、如果你在 uvm_component_utils_beginuvm_component_utils_end 中通过 uvm_field_int 来注册变量,并且希望在命令行中传递负数,则需要注意 uvm_field_int 本身并不支持直接接受负数的传递。

1. 注册变量

env 组件中使用 uvm_field_int 注册变量:

class my_env extends uvm_env;
    `uvm_component_utils_begin(my_env)
        `uvm_field_int(my_param, UVM_DEFAULT)  // 注册 my_param
    `uvm_component_utils_end

    int my_param;

    function new(string name, uvm_component parent);
        super.new(name, parent);
    endfunction

    // Build phase 获取变量值
    function void build_phase(uvm_phase phase);
        super.build_phase(phase);
        `uvm_info("my_env", $sformatf("my_param = %0d", my_param), UVM_LOW)
    endfunction
endclass
2. 命令行传递负数补码

假设我们希望传递 -5my_param,计算它的 32 位补码为 4294967291,16进制是32'hffff_fffb,在命令行中传递:

vsim -sv_seed 12345 +my_param=4294967291
or 
vsim -sv_seed 12345 "+my_param=32'hffff_fffb"

SystemVerilog Verification(SV)是一种硬件验证语言,它结合了Verilog、VHDL和C等语言的特点,特别适用于验证硬件设计的正确性。SystemVerilog Verification(SV)是UVM 1.1的基础,UVM是一种验证方法学,为SV验证提供了框架和结构,以加快和简化验证过程。 《SystemVerilog Verification UVM 1.1 Student Guide》是一本面向学生的指南,旨在帮助学生学习和理解如何使用SystemVerilogUVM进行硬件验证。这本指南提供了关于SV验证和UVM方法学的详细介绍,以及在学习过程中应注意的关键概念和技术。 指南首先介绍了SystemVerilog的基础知识,例如数据类型、运算符和控制结构等。接下来,它详细介绍了SV中的verification(验证)概念和技术,如assertion(断言)、functional coverage(功能覆盖)、constrained random(约束随机)和transaction-level modeling(事务级建模)等。 随后,指南重点介绍了UVM的基本概念和架构。UVM提供了一套基于类的验证框架,使开发人员能够重用代码和验证环境。指南详细介绍了UVM中的各种重要组件,如testbench(测试台)、sequence(序列)和driver(驱动器)等,并演示了如何使用UVM框架来编写可重用、可扩展的验证环境。 最后,指南可能会包含一些实际的验证案例或项目,旨在帮助学生将所学知识应用于实际项目中。这些案例可能包括创建测试用例、实现验证组件以及运行仿真和调试。 通过学习《SystemVerilog Verification UVM 1.1 Student Guide》,学生将能够获得有关SystemVerilogUVM的全面指导,从而能够更好地理解和实践硬件验证。这本指南将为学生提供一个坚实的基础,使他们能够在工程领域中进行有效的硬件验证工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NobleGasex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值