[logo] 
 
Home
News
Activity
About/Contact
Major Tools
  Dinotrace
  Verilator
  Verilog-mode
  Verilog-Perl
Other Tools
  BugVise
  CovVise
  Force-Gate-Sim
  Gspice
  IPC::Locker
  Rsvn
  SVN::S4
  SystemPerl
  Voneline
  WFH
General Info
  Papers

Issue #62

SystemC VCD trace does not set correct precision

Added by Jeremy Bennett over 4 years ago. Updated about 4 years ago.

Status:WillNotFixStart date:01/27/2009
Priority:LowDue date:
Assignee:-% Done:

0%

Category:-
Target version:-

Description

Use of the SpTraceVCD functions does not appear to set the trace precision correctly.

When creating an instance of SpTraceVcdCFile, the time resolution is held in the associated SpTraceVcd object (private variable m_timeRes, which can be set by the set_time_precision() function). This defaults to 10e-9 (1ns), which is inconsistent with SystemC's default of 10e-12 (1ps). It can be overridden by explicitly, e.g:

  SpTraceVcdCFile *tfp = new SpTraceVcdCFile ();
  tfp->spTrace()->set_time_resolution ("1 ps");

Really this should be set automatically in a SystemC environment by calling the underlying sc_get_time_precision() function from the constructor of SpTraceVcdCFile. The code to do this exists in the class SpTraceVcdFile, but I cannot see that this class is currently used.

History

#1 Updated by Wilson Snyder over 4 years ago

  • Status changed from New to AskedReporter

SpTraceVcdCFile is for C files, while SpTraceVcdFile is for SystemC. The latter should set the timeprecision correctly. Can you check?

I'll clarify the docs.

#2 Updated by Jeremy Bennett over 4 years ago

Ah thanks - my misunderstanding from reading the example in the distribution.

I've tried, but can't see how to use SpTraceFile to assist in SystemC tracing (the class I referred to as SpTraceVcdFile is in fact SpTraceFile). This is a subclass of the abstract class sc_trace used to do SystemC tracing. However I can't see how to use it. There should be an alternative to sc_create_vcd_trace_file to create instances, which I can't find. I also ran into issues when I tried including the header "SpTraceVcd.h", it got upset if I included it after any of the "Vxxxx.h" headers.

Really I don't really want to do SystemC tracing - it's the underlying Verilog signals I'm after, so my approach was correct, but since I'm in the C world, I need to set the precision.

From my past experience, this is the usual scenario - it's the underlying signals that need to be traced. An option to allow Verilator to do this and automatically pick up the SystemC time precision would be a nice enhancement for the future.

#3 Updated by Wilson Snyder about 4 years ago

  • Status changed from AskedReporter to WillNotFix

I looked at doing this again, and it makes a bit as a mess as the C tracing isn't at all systemc aware, and making it so breaks compiles when there's no systemc. So until a major tracing rewrite comes I'll need to punt. Sorry.

Also available in: Atom PDF