Is reporter [TIMOUT] Watchdog timeout of '10000' expired. an error

the code call
set_global_timeout(10us);

when run the code under questa
it gives

OVM_ERROR @ 10000: reporter [TIMOUT] Watchdog timeout of ‘10000’ expired.

is it an error and how to fix it?

I am not sure what you are asking. You set the timeout for 10us and then the watchdog timer expires at 10us. Do you expect something different to happen?

I saw an issue with the OVM Watchdog timeout where if you have changed the
timescale from 1ns/1ns to for example: “1ns / 1ps” or “1ns / 1fs” you will see 10us =
10000 time ticks. This will not be 10us if you use either of the last two values.
When I looked into the code used by OVM, I could see why this is the case. The code
tries to take into account the time scale passed in, in this example the “us”, however in certain cases it just converts this to a number of time ticks based on the 1ns/1ns assumed timescale.
From ovm_globals.svh

// Method: set_global_timeout 
//
// Convenience function for ovm_top.phase_timeout = timeout. See ovm_root
// for more information.

function void set_global_timeout(time timeout);
  ovm_root top;
  top = ovm_root::get();
  top.phase_timeout = timeout;
endfunction


// Function: set_global_stop_timeout
//
// Convenience function for ovm_top.stop_timeout = timeout.
// See ovm_root for more information.

function void set_global_stop_timeout(time timeout);
  ovm_root top;
  top = ovm_root::get();
  top.stop_timeout = timeout;
endfunction

From ovm_root.svh

timeout = (phase_timeout==0) ?  `OVM_DEFAULT_TIMEOUT - $time :
                                      phase_timeout;
(later)
fork : task_based_phase
  m_stop_process();
  begin
    m_do_phase(this,m_curr_phase);
    wait fork;
  end
  #timeout ovm_report_error("TIMOUT",
        $psprintf("Watchdog timeout of '%0t' expired.", timeout), OVM_NONE);
join_any
disable task_based_phase;

I am not sure of the reason why this is an issue, but I saw the same type of issue.
It is related to the #timeout line, and how it receives the value from the ovm_globals function.
The bottom line is I needed to create a function like this:
set_global_timeout(base_test_ovmwatchdog_timeout * ovmwatchdog_timeout_factor);
where ovmwatchdog_timeout_factor was == 1000000 since we are running using “1ns/1fs”. This allows base_test_ovmwatchdog_timeout == 10 us and OVM timeout works correctly.

We also found that the two timeout functions:
set_global_timeout and set_global_stop_timeout
had to be set to the same values.

This last issue seemed to be related to which version of Questasim ( 6.6a vs 6.6c) was used.

If I have understood this question properly then below is the input from my side to resolve the time out error :

Suppose we have one test and which is expected to be complete after a specific time (e.g. 100ns) then we can set the Time out value by using following variable inside the end_of_elaboration() phase to get rid of Time out error which you have mentioned.

          ovm_top.phase_timeout = 100; (assuming timescale - 1ns/1ns )