Я реализовал генератор синусоидального сигнала в 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