Verification Academy

Search form

My Account Menu

  • Register
  • Log In
  • Topics
  • Courses
  • Forums
  • Patterns Library
  • Cookbooks
  • Events
  • More
  • All Topics
    The Verification Academy offers users multiple entry points to find the information they need. One of these entry points is through Topic collections. These topics are industry standards that all design and verification engineers should recognize. While we continue to add new topics, users are encourage to further refine collection information to meet their specific interests.
    • Languages & Standards

      • Portable Test and Stimulus
      • Functional Safety
      • Design & Verification Languages
    • Methodologies

      • UVM - Universal Verification Methodology
      • UVM Framework
      • UVM Connect
      • FPGA Verification
      • Coverage
    • Techniques & Tools

      • Verification IQ
      • Verification IP
      • Static-Based Techniques
      • Simulation-Based Techniques
      • Planning, Measurement, and Analysis
      • Formal-Based Techniques
      • Debug
      • Acceleration
  • All Courses
    The Verification Academy is organized into a collection of free online courses, focusing on various key aspects of advanced functional verification. Each course consists of multiple sessions—allowing the participant to pick and choose specific topics of interest, as well as revisit any specific topics for future reference. After completing a specific course, the participant should be armed with enough knowledge to then understand the necessary steps required for maturing their own organization’s skills and infrastructure on the specific topic of interest. The Verification Academy will provide you with a unique opportunity to develop an understanding of how to mature your organization’s processes so that you can then reap the benefits that advanced functional verification offers.
    • Universal Verification Methodology (UVM)

      • Introduction to UVM
      • UVM Basics
      • Advanced UVM
      • UVM Connect
      • UVM Debug
      • UVMF - One Bite at a Time
    • Featured Courses

      • Introduction to ISO 26262
      • Introduction to DO-254
      • Clock-Domain Crossing Verification
      • Portable Stimulus Basics
      • Power Aware CDC Verification
      • Power Aware Verification
      • SystemVerilog OOP for UVM Verification
    • Additional Courses

      • Assertion-Based Verification
      • An Introduction to Unit Testing with SVUnit
      • Evolving FPGA Verification Capabilities
      • Metrics in SoC Verification
      • SystemVerilog Testbench Acceleration
      • Testbench Co-Emulation: SystemC & TLM-2.0
      • Verification Planning and Management
      • VHDL-2008 Why It Matters
    • Formal-Based Techniques

      • Formal Assertion-Based Verification
      • Formal-Based Technology: Automatic Formal Solutions
      • Formal Coverage
      • Getting Started with Formal-Based Technology
      • Handling Inconclusive Assertions in Formal Verification
      • Sequential Logic Equivalence Checking
    • Analog/Mixed Signal

      • AMS Design Configuration Schemes
      • Improve AMS Verification Performance
      • Improve AMS Verification Quality
  • All Forum Topics
    The Verification Community is eager to answer your UVM, SystemVerilog and Coverage related questions. We encourage you to take an active role in the Forums by answering and commenting to any questions that you are able to.
    • UVM Forum

      • Active Questions
      • Solutions
      • Replies
      • No Replies
      • Search
      • UVM Forum
    • SystemVerilog Forum

      • Active Questions
      • Solutions
      • Replies
      • No Replies
      • Search
      • SystemVerilog Forum
    • Coverage Forum

      • Active Questions
      • Solutions
      • Replies
      • No Replies
      • Search
      • Coverage Forum
    • Additional Forums

      • Announcements
      • Downloads
      • OVM Forum
  • Patterns Library
    The Verification Academy Patterns Library contains a collection of solutions to many of today's verification problems. The patterns contained in the library span across the entire domain of verification (i.e., from specification to methodology to implementation—and across multiple verification engines such as formal, simulation, and emulation).
    • Implementation Patterns

      • Environment Patterns
      • Stimulus Patterns
      • Analysis Patterns
      • All Implementation Patterns
    • Specification Patterns

      • Occurrence Property Patterns
      • Order Property Patterns
      • All Specification Patterns
    • Pattern Resources

      • Start Here - Patterns Library Overview
      • Whitepaper - Taking Reuse to the Next Level
      • Verification Horizons - The Verification Academy Patterns Library
      • Contribute a Pattern to the Library
  • All Cookbooks
    Find all the methodology you need in this comprehensive and vast collection. The UVM and Coverage Cookbooks contain dozens of informative, executable articles covering all aspects of UVM and Coverage.
    • UVM Cookbook

      • UVM Basics
      • Testbench Architecture
      • DUT-Testbench Connections
      • Configuring a Test Environment
      • Analysis Components & Techniques
      • End Of Test Mechanisms
      • Sequences
      • The UVM Messaging System
      • Other Stimulus Techniques
      • Register Abstraction Layer
      • Testbench Acceleration through Co-Emulation
      • Debug of SV and UVM
      • UVM Connect - SV-SystemC interoperability
      • UVM Versions and Compatibility
      • UVM Cookbook
    • Coding Guidelines & Deployment

      • Code Examples
      • UVM Verification Component
      • Package/Organization
      • Questa/Compiling UVM
      • SystemVerilog Guidelines
      • SystemVerilog Performance Guidelines
      • UVM Guidelines
      • UVM Performance Guidelines
    • Coverage Cookbook

      • Introduction
      • What is Coverage?
      • Kinds of Coverage
      • Specification to Testplan
      • Testplan to Functional Coverage
      • Bus Protocol Coverage
      • Block Level Coverage
      • Datapath Coverage
      • SoC Coverage Example
      • Requirements Writing Guidelines
      • Coverage Cookbook
  • All Events
    No one argues that the challenges of verification are growing exponentially. What is needed to meet these challenges are tools, methodologies and processes that can help you transform your verification environment. These recorded seminars from Verification Academy trainers and users provide examples for adoption of new technologies and how to evolve your verification process.
    • Featured & On-Demand

      • RISC-V Design - Webinar
      • Exploring Formal Coverage
      • Processor Customization
      • Interconnect Formal
      • Formal and the Next Normal
      • Formal Verification Made Easy
      • Data Independence and Non-Determinism
      • Exhaustive Scoreboarding
      • Visualizer Debug Environment
      • Webinar Calendar
    • On-Demand Library

      • SystemVerilog Assertions
      • Practical Flows for Continuous Integration
      • Continuous Integration
      • Questa Verification IQ
      • Avery & Siemens VIP
      • Protocol and Memory Interface Verification
      • HPC Protocols & Memories
      • Preparing for PCIe 6.0: Parts I & II
      • High Defect Coverage
      • SoC Design & Functional Safety Flow
      • Complex Safety Architectures
      • All On-Demand Recordings
    • Recording Archive

      • Lint vs Formal AutoCheck
      • FPGA Design Challenges
      • Design Solutions as a Sleep Aid
      • Fix FPGA Failures Faster
      • CDC and RDC Assist
      • The Dog ate my RTL
      • Questa Lint & CDC
      • Hierarchical CDC+RDC
      • Improving Initial RTL Quality
      • CDC Philosophy
      • Hardware Emulation Productivity
      • The Three Pillars of Intent-Focused Insight
      • All Webinar Topics
    • Conferences & WRG

      • 2022 Functional Verification Study
      • Improving Your SystemVerilog & UVM Skills
      • Automotive Functional Safety Forum
      • Aerospace & Defense Tech Day
      • Siemens EDA Functional Verification
      • Industry Data & Surveys
      • DVCon 2023
      • DVCon 2022
      • DVCon 2021
      • Osmosis 2022
      • All Conferences
    • Siemens EDA Learning Center

      • EDA Xcelerator Academy(Learning Services) Verification Training, Badging and Certification
      • View all Xcelerator Academy classes
  • About Verification Academy
    The Verification Academy will provide you with a unique opportunity to develop an understanding of how to mature your organization's processes so that you can then reap the benefits that advanced functional verification offers.
    • Blog & News

      • Verification IQ
      • Verification Horizons Blog
      • Technical Resources
    • Verification Horizons Publication

      • Verification Horizons - July 2023
      • Verification Horizons - March 2023
      • Verification Horizons - December 2022
      • Issue Archive
    • About Us

      • Verification Academy Overview
      • Subject Matter Experts
      • Academy News
      • Contact Us
    • Training

      • Learning @OneGlance (PDF)
      • SystemVerilog & UVM Classes
      • Siemens EDA Classes
Ask a Question
UVM
  • Home
  • Forums
  • UVM
  • Error-[NOA] Null object access

Error-[NOA] Null object access

UVM 6946
#systemverilog #UVM 46 #UVMF 8 #uvm_config_db 10
Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 6:09 am

Question: I am facing the following error and I am not quite sure why, any suggestion as to why we get such errors based on the below message? i have created a link where my code is pertaining to this error
Code is here

Error quick look:

Error-[NOA] Null object access
 simctrl: *I: Line matched standard error regex ^\tOffending|ERROR|\*E|\*FATAL|Assertion.*failed\.|Fatal error|Assertion.*error|\*\* Error|OVL_FATAL|OVL_ERROR|[UO]VM_ERROR|[UO]VM_FATAL|Error!  NULL pointer dereference|^Error-|Error\:|error\:.
 simctrl: *I: Further match messages will be suppressed.
 /local_vol1_nobackup/user/vesutrav/mdm_to_uvmf_4.0/out.er/linux_3.10.0_64/base/library/uvd-base/pub/src/verif/uvc/comp/uvmf/base/src/uvmf_driver_base.svh, 92
   The object at dereference depth 1 is being used before it was
   constructed/allocated.
   Please make sure that the object is allocated before using it.

Replies

Log In to Reply
chr_sue
chr_sue
Full Access
3992 posts
April 07, 2022 at 6:48 am

In reply to Rogers:

Error-[NOA] Null object access.
means always an object has not been constructed.

ou should look around uvmf_driver_base.svh.

Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 6:55 am

In reply to chr_sue:

Thank you for your response, but uvmf_driver_bas.svh is a base class that I can not touch or edit. Kindly please point out which part of my code missed the object creation? is as I have shared the code Click here to access code

chr_sue
chr_sue
Full Access
3992 posts
April 07, 2022 at 7:17 am

In reply to Rogers:

I see. The code fragments do not really help to resolve this issue.

Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 7:26 am

In reply to chr_sue:

Accordingly to the error report message it's pointing at line no 92 in the file uvmf_driver_base.svh,

so that line looks like
bfm = configuration.driver_bfm;

so exactly which object is referring to be created? thank you in advance.

chr_sue
chr_sue
Full Access
3992 posts
April 07, 2022 at 7:41 am

In reply to Rogers:

My guess is the configuration object does not exist.

Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 8:28 am

In reply to chr_sue:

I did create the configuration in the build_phase of vcn_mdm_driver.svh, but following error


UVM_FATAL /local_vol1_nobackup/user/vesutrav/mdm_to_uvmf_4.0/out.er/linux_3.10.0_64/base/library/uvd-base/pub/src/verif/uvc/comp/uvmf/base/src/uvmf_driver_base.svh(95) @ 0.000 ns: sdb_tb_hevc_decoder_test.mdm_agent_h.mdm_agent_h_driver [DRV] BFM handle with interface_name  is null
 simctrl: *I: Line matched standard error regex ^\t
rgarcia07
rgarcia07
Full Access
222 posts
April 07, 2022 at 8:42 am

In reply to Rogers:

It is really difficult to provide help without looking to the full picture, but I'd say you have not set the virtual interfaces in the tb this is normally done using config_db, so when your driver tries to get them from the config object they are null.

HTH,

-R

Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 8:56 am

In reply to rgarcia07:

i did set it in my tb.sv.erb line no 54 kindly please look at the code that i shared if possible click here for code access

rgarcia07
rgarcia07
Full Access
222 posts
April 07, 2022 at 10:25 am

I have no idea how your erb files work with the UVMF flow maybe you should take this directly to Siemens costumer support, as you are just providing scattered files and not a complete executable example showing your issues.
While you have the interfaces set, I wonder where the config object gets them from, maybe that's is what you are missing.

Sorry about that.

-R

chr_sue
chr_sue
Full Access
3992 posts
April 07, 2022 at 10:31 am

In reply to Rogers:

Quote:
In reply to rgarcia07:

i did set it in my tb.sv.erb line no 54 kindly please look at the code that i shared if possible click here for code access

I had alook to your code and have a few questions or remarks:
(1) you do not start your test with the run_test task.
(2) I'm not familiar with the UVMF approach, but what is this
uvm_config_db #(virtual vcn_mdm_driver_bfm) ::set(null, UVMF_VIRTUAL_INTERFACES, VCN_MDM_BFM, mdm_drv_bfm);
especially 'UVMF_VIRTUAL_INTERFACES'

Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 10:39 am

In reply to chr_sue:

I have parameter that in file sdb_tb_hevc_decoder_test.svh line no 29

parameter string UVMF_VIRTUAL_INTERFACES = "VIRTUAL_INTERFACES";
Click here for code access

Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 10:41 am

In reply to rgarcia07:

On line no 140 in the file uvmf_parameterized_agent_configuration_base.svh base class its get is happening.

Click here to access code

Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 2:57 pm

In reply to chr_sue:

Can you please correct me if my set and get of config_db is done properly, I been trying since then but ending up with same error ?

bob_oden
bob_oden
Full Access
16 posts
April 07, 2022 at 3:24 pm

In reply to Rogers:

This message:
UVM_FATAL /local_vol1_nobackup/user/vesutrav/mdm_to_uvmf_4.0/out.er/linux_3.10.0_64/base/library/uvd-base/pub/src/verif/uvc/comp/uvmf/base/src/uvmf_driver_base.svh(95) @ 0.000 ns: sdb_tb_hevc_decoder_test.mdm_agent_h.mdm_agent_h_driver [DRV] BFM handle with interface_name is null
simctrl: *I: Line matched standard error regex ^\t

Indicates that the interface_name variable inside the agent configuration is null. The interface_name variable is initialized using the initialize function of the agents configuration object. The interface_name variable is used as the field_name argument of uvm_config_db::get calls.

The interface_name variable value is automatically set and assigned if you are using the UVMF generator to create the interface, environment, and test bench. If you are using the UVMF generator to create the interface, environment, and test bench then the generated code will simulate without modification. If the generated code does not compile, optimize, and run then you have an error in the YAML used to describe the interface, environment, or bench.

Rogers
Rogers
Full Access
31 posts
April 07, 2022 at 3:36 pm

In reply to bob_oden:

I did not use the code generator, for this so is there any way I could fix this issue ? or any debugging method to fix this ?

Click here to access code

chr_sue
chr_sue
Full Access
3992 posts
April 08, 2022 at 12:07 am

In reply to Rogers:

This is the construct you are pointing to

   if( !uvm_config_db #( MONITOR_BFM_BIND_T )::get( null , UVMF_VIRTUAL_INTERFACES , interface_name , monitor_bfm ) ) begin
            $stacktrace;
            `uvm_fatal("CFG" , $sformatf("uvm_config_db #( MONITOR_BFM_BIND_T )::get cannot find monitor bfm resource with interface_name %s",interface_name) )
       end

This construct is in a function.
The get function should look like this wrt to the 1st 2 arguments:
::get(this, "", .....)
The 1st argument means 'this is a relative path' and the 2nd argument means: exactly in the place where you are calling the get.
I'd try

if( !uvm_config_db #( MONITOR_BFM_BIND_T )::get(this, "", interface_name, monitor_bfm ) ) begin
            $stacktrace;
            `uvm_fatal("CFG" , $sformatf("uvm_config_db #( MONITOR_BFM_BIND_T )::get cannot find monitor bfm resource with interface_name %s",interface_name) )
       end
Rogers
Rogers
Full Access
31 posts
April 08, 2022 at 6:28 am

In reply to bob_oden:

Can you please inform me how can I fix this issue, since I did not use a code generator and uplifted the existing UVM based UVC agent?

jcraft
jcraft
Forum Access
45 posts
April 08, 2022 at 6:42 am

In reply to Rogers:

As Bob mentioned in an earlier reply, this sort of error will not occur if you used the generation scripts provided by the UVMF install alongside the base UVMF class definitions. If you did not use those generator scripts there are too many variables in play to effectively help you debug and resolve the fatal error you're seeing without a full test case or a wider view into what you're trying to do.

Making changes to the base UVMF code class definitions is definitely not the right way to go here, it'll just dig the hole deeper.

I would suggest that you back out all changes to the UVMF base class source and look at some of the examples and run the generated examples to see how these BFM interface names are supposed to be passed around a UVMF bench, then apply the same technique to however you're implementing things on your end.

chr_sue
chr_sue
Full Access
3992 posts
April 08, 2022 at 8:07 am

In reply to Rogers:

Quote:
In reply to bob_oden:

Can you please inform me how can I fix this issue, since I did not use a code generator and uplifted the existing UVM based UVC agent?

Can you please provide the files
sdb_tb_factory.svh
sdb_tb_hevc_decoder_test.svh
Without these files I cannot run your code.

Rogers
Rogers
Full Access
31 posts
April 08, 2022 at 8:19 am

In reply to chr_sue:

Here is the file Click here to access the file

chr_sue
chr_sue
Full Access
3992 posts
April 08, 2022 at 8:29 am

In reply to Rogers:

The code structure is strange. There seems to be a file named
sdb_tb_base_test.svh.
In the EDAPlayground there is only
sdb_tb_base_test.sv.

bob_oden
bob_oden
Full Access
16 posts
April 08, 2022 at 8:30 am

In reply to Rogers:

Any time you uplift an existing UVM based UVC you will need to understand how the UVC is configured, how it receives the resources it needs, and how to access resources it provides. This information is provided in the UVMF's Users Guide. I suggest reading the Users Guide section on environment and interface initialization in addition to backing out any changes to the uvmf base package and reviewing the examples provided in the UVMF installation as Jon suggested.

Rogers
Rogers
Full Access
31 posts
April 08, 2022 at 8:31 am

In reply to chr_sue:

there is that file already i have updated the structure please check here cleck here to access the files

chr_sue
chr_sue
Full Access
3992 posts
April 08, 2022 at 9:32 am

In reply to Rogers:
Thanks, I have seen it now.
What still is missing is a couple of packages:
import uvm_pkg::*;
import uvd_reg_pkg::*;
import uvd_lcm_pkg::*;
import uvd_scm_pkg::*;
import vcn_mdm_pkg::*;
import uvd_sre_pkg::*;
import uvd_sdb_avail_pkg::*;
I'm not sure where they are coming from.

chr_sue
chr_sue
Full Access
3992 posts
April 08, 2022 at 9:45 am

In reply to chr_sue:

Digging into your code shows more files are missing. If you do not want to share your code public, you can share it personally with me using my email

A tar-file would be great.

Rogers
Rogers
Full Access
31 posts
April 08, 2022 at 9:53 am

In reply to chr_sue:

I am interested only in vcn_mdm_pkg::*

and I have shared all the code in that package files starting with vcn_mdm_*

Click here to access the code here

Rogers
Rogers
Full Access
31 posts
April 08, 2022 at 10:40 am

In reply to chr_sue:

I i did it to that address.

chr_sue
chr_sue
Full Access
3992 posts
April 11, 2022 at 2:22 am

In reply to Rogers:

I was responding on your gmail address.

Siemens Digital Industries Software

Siemens Digital Industries Software

#TodayMeetsTomorrow

Portfolio

  • Cloud
  • Mendix
  • Electronic Design Automation
  • MindSphere
  • Design, Manufacturing and PLM Software
  • View all Portfolio

Explore

  • Community
  • Blog
  • Online Store

Siemens

  • About Us
  • Careers
  • Events
  • News and Press
  • Customer Stories
  • Partners
  • Trust Center

Contact

  • VA - Contact Us
  • PLM - Contact Us
  • EDA - Contact Us
  • Worldwide Offices
  • Support Center
  • Give us Feedback
© Siemens 2023
Terms of Use Privacy Statement Cookie Statement DMCA