Systemc - 将sc_time四舍五入到最接近的第 10 SC_NS

Systemc - Rounding off sc_time to nearest 10th SC_NS

本文关键字:NS SC 最接近 四舍五入 sc time Systemc      更新时间:2023-10-16

我试图将sc_time四舍五入到最接近的 10 纳秒。/是重载的,因此可以sc_time除两个。*还重载了sc_time值和double值。对于这段代码,我正在6而不是10.

#include <iostream>
#include "systemc.h"
SC_MODULE(X)
{
SC_CTOR(X)
{
SC_THREAD(a);
}
void a()
{   
sc_time t(6, SC_NS);
sc_time t1(10, SC_NS);
double v = (t / t1) *10;
std::cout << "sc_time update:/ " << v << "n";

}
};
int sc_main( int , char* [] )
{
sc_clock clock;
X x("x");
sc_start(1000, SC_NS);
cout << "Program completed" << endl;
return 0;
} 

快速浏览一下sc_time标题 https://github.com/systemc/systemc-2.3/blob/master/src/sysc/kernel/sc_time.h 表明它使用双精度进行数学运算,因此6/10*10==6需要添加显式舍入也就不足为奇了:

double v = round(t / t1) *10;