Проблема с отслеживанием сигналов в SystemC-AMS

Я реализовал генератор синусоидального сигнала в SystemC-AMS и хочу визуализировать его выходные данные за определенный период времени. Для этого я хочу создать файл vcd. Код генератора и основная функция показаны ниже. У меня проблема в том, что файл vcd пуст. Что я делаю не так?

основной.cpp:

#include <iostream>
#include "systemc.h"
#include "systemc-ams.h"
#include "sin_source.h"

int sc_main (int argc, char* argv[])
{
    std::cout << "Hello World" << std::endl;

    sca_tdf::sca_signal <double> out1;
    sin_source mySine("sine1");
    mySine.out(out1);

    sca_util::sca_trace_file *tf1= sca_util::sca_create_vcd_trace_file("sine_wave");
    sca_util::sca_trace(tf1, out1, "i'm_sine_1");

    sc_core::sc_start(10, sc_core::SC_MS);
    sca_util::sca_close_vcd_trace_file(tf1);

    return 0;
}

sin_source.h:

#include <systemc-ams.h>

SCA_TDF_MODULE(sin_source)
{
    sca_tdf::sca_out<double> out;

    double ampl;
    double freq;

    void set_attributes()
    {
        out.set_timestep(5, SC_US);
    }

    void processing ()
    {
        double t=out.get_time().to_seconds();
        double x = ampl * std::sin(2.0 * M_PI * freq * t);
        out.write(x);
    }

    SCA_CTOR(sin_source):
        out("out"), ampl(1.0), freq(1e3){}
};

РЕДАКТИРОВАТЬ: К сожалению, переименование сигнала не дало никаких улучшений. Теперь я изменил main.cpp, как показано ниже. В выводе последнее сообщение «Hello World», которое я вижу, имеет номер 4. Так что, вероятно, моя симуляция никогда не запускается до выхода из программы.

Изменен main.cpp:

int sc_main (int argc, char* argv[])
{
    std::cout << "Hello World" << std::endl;

    sca_tdf::sca_signal <double> out1;
    sin_source mySine("sine1");
    mySine.out(out1);

    std::cout << "Hello World 2" << std::endl;

    sca_util::sca_trace_file *tf1= sca_util::sca_create_vcd_trace_file("sine_wave");

    std::cout << "Hello World 3" << std::endl;

    sca_util::sca_trace(tf1, out1, "sine");

    std::cout << "Hello World 4" << std::endl;

    sc_core::sc_start(10, sc_core::SC_MS);

    std::cout << "Hello World 5" << std::endl;

    sca_util::sca_close_vcd_trace_file(tf1);

    std::cout << "Hello World 6" << std::endl;

    return 0;
}

Вывод консоли:

Hello World
Hello World 2
        SystemC 2.3.2-Accellera --- Jul 17 2018 16:06:04
        Copyright (c) 1996-2017 by all Contributors,
        ALL RIGHTS RESERVED


        SystemC AMS extensions 2.1.0-COSEDA Release date: 20160404
        Copyright (c) 2010-2014  by Fraunhofer-Gesellschaft IIS/EAS
        Copyright (c) 2015-2016  by COSEDA Technologies GmbH
        Licensed under the Apache License, Version 2.0


Hello World 3
Hello World 4

Info: SystemC-AMS: 
    1 SystemC-AMS modules instantiated
    1 SystemC-AMS views created
    1 SystemC-AMS synchronization objects/solvers instantiated


Info: SystemC-AMS: 
    1 dataflow clusters instantiated
      cluster 0:
        1 dataflow modules/solver, contains e.g. module: sine1
        1 elements in schedule list,  
        5 us cluster period, 
        ratio to lowest:  1              e.g. module: sine1
        ratio to highest: 1 sample time  e.g. module: sine1
        0 connections to SystemC de, 0 connections from SystemC de

person Daiz    schedule 23.07.2018    source источник
comment
Возможно, вы можете попробовать спросить на форуме systemc ams forums.accellera.org /forum/13-systemc-ams-analogmixed-signal   -  person random    schedule 23.07.2018
comment
Выстрел в темноте: попробуйте переименовать свой сигнал во что-то, что не использует никаких специальных символов (например, удалите апостроф из [i'm_sine_1]). Я видел несколько инструментов EDA, которые не могут справиться с подобными вещами.   -  person rainer    schedule 27.07.2018
comment
Переименование сигнала не сработало @rainer. Пожалуйста, взгляните на мой РЕДАКТИРОВАТЬ.   -  person Daiz    schedule 01.08.2018


Ответы (1)


Я не могу воспроизвести проблему. Вы открыли файл в текстовом редакторе, чтобы проверить, действительно ли он пустой?

Возможно проблематичная проблема, я вижу, это ' в названии сигнала (sca_util::sca_trace(tf1, out1, "i'm_sine_1");) - может вашему вейввьюверу это не нравится.

person Karsten    schedule 25.07.2018
comment
Итак, мой код выше создает для вас график синусоиды? Используете ли вы установку eclipse/cygwin? - person Daiz; 01.08.2018