Jump to content

rfajardo

Members
  • Posts

    4
  • Joined

  • Last visited

Everything posted by rfajardo

  1. I'd say it does not. Below you can see an example. I tried to attach it. But I am not allowed to. Raul #include <systemc.h> SC_MODULE(Testbench) { sc_trace_file * traceFile; sc_signal<bool> toggle_o; void toggle(); SC_CTOR(Testbench) { toggle_o = 0; traceFile = sc_create_vcd_trace_file("testbench"); traceFile->set_time_unit(10, SC_US); sc_trace(traceFile, toggle_o, "toggle_o"); SC_THREAD(toggle); } ~Testbench() { sc_close_vcd_trace_file(traceFile); } }; void Testbench::toggle() { while(true) { toggle_o = !toggle_o; wait(100, SC_US); } } int sc_main(int argc, char * argv[]) { Testbench testbench("Testbench"); sc_start(500, SC_US); //simulate for 500 microseconds return 0; }
  2. Hello everyone, I have noticed that when using the sc_time_unit (X, SC_US), the timescale in the resulting file is missing. SC_NS, SC_MS work well for example. The time marks are set correctly, only the timescale is missing. Output below. Best regards, Raul System: SystemC-2.3.0 on MSVS2010 SC_NS: $date Feb 28, 2013 13:37:30 $end $version SystemC 2.3.0-ASI --- Feb 22 2013 08:38:45 $end $timescale 1 ns $end $scope module SystemC $end $var wire 1 aaa HSS-PWM $end ... SC_US: $date Feb 28, 2013 13:42:21 $end $version SystemC 2.3.0-ASI --- Feb 22 2013 08:38:45 $end $scope module SystemC $end $var wire 1 aaa HSS-PWM $end ...
  3. Thank you Philipp. It worked! /GR is VS2012 default, as I could detect. Greetings from Aschaffenburg, Raul
  4. Hello everyone, I have successfuly compiled SystemC-2.3.0 under VS2012. Compilation: For a system description and compilation, I had to enable static linking the following way, aside from configuring the include and library directories and the library name. Properties->configuration properties->C/C++->Code Generation Runtime Library set to Multi-threaded Debug (\MTd) After that, I was able to compile the simulation project. Execution: During execution, Windows throws an exception for the DCAST of line 359 on sc_thread_process.cpp. This is executed by the call to SC_THREAD(run) in the "CPU" constructor. The related code can be found enclosed. Console output: Error: (E549) uncaught exception: Access violation - no RTTI data! In file: c:\users\raul\documents\visual studio 2012\projects\systemc-2.3.0\src\sysc\kernel\sc_except.cpp:98 Visual Studio output: First-chance exception at 0x0135EF3F in coprocessor_func.exe: 0xC0000005: Access violation reading location 0x00000005. First-chance exception at 0x74D54B32 in coprocessor_func.exe: Microsoft C++ exception: std::__non_rtti_object at memory location 0x007EF570. First-chance exception at 0x74D54B32 in coprocessor_func.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000. First-chance exception at 0x74D54B32 in coprocessor_func.exe: Microsoft C++ exception: sc_core::sc_report at memory location 0x007EE304. The program '[4260] coprocessor_func.exe' has exited with code 1 (0x1). Could this be related to the issue that dynamic cast should not be called from within a constructor because the object is not yet fully built? References: Under item 6: http://en.cppreferen...ge/dynamic_cast This is an example that I am using without issues under Linux. Any ideas of what can be going wrong? Thanks in advance, Raul Fajardo Code: #include <systemc.h> #include <iostream> using namespace std; class CoProcessor { sc_time m_process_time; public: CoProcessor() { m_process_time = sc_time(20, SC_US); } unsigned int sum(unsigned int a, unsigned int { unsigned int tmp = a + b; wait(m_process_time); return tmp; } }; class CPU : public sc_module { CoProcessor co_cpu; public: SC_HAS_PROCESS(CPU); //enables the definition of SC_THREAD or SC_METHOD (SC_METHOD has sensitivity and never ends) CPU(sc_module_name nm) : sc_module(nm) { SC_THREAD(run); //registers the function to the simulation kernel, enables wait() } void run() { unsigned int a, b, c; b = 10; c = 5; a = co_cpu.sum(b, c); cout << "Computation result of " << b << " + " << c << ": " << a << endl; cout << "Algorithm was run in " << sc_time_stamp() << endl; } }; int sc_main(int argc, char * argv[]) { CPU processor("main_processor"); sc_start(500, SC_US); //simulate for 500 microseconds return 0; }
×
×
  • Create New...