5. 3. 3 sc_clock
sc_clock の一番簡単な使い方は、次のような形です。
sc_clock 配置名(クロック名, クロック周期);
例えば
sc_clock clk1("clk1", 20);
などのように書きます。
sc_clock は インタフェースクラスの一つ、 sc_signal_in_if<bool> を実装する 階層チャネル ()です。 正確には、そういうクラスの一つです。
Doxygen では次のところで見られます。 http://www.iro.umontreal.ca/~chareslu/systemc-2.0.1/classsc__clock.html
また継承関係は次のようになっています。

sc_clock には、上に示した形の他に、 引数により、次のような四通りの使い方があります。
sc_clock( sc_module_name name_,
const sc_time& period_,
double duty_cycle_ = 0.5,
const sc_time& start_time_ = SC_ZERO_TIME,
bool posedge_first_ = true );
sc_clock( sc_module_name name_,
double period_v_,
sc_time_unit period_tu_,
double duty_cycle_ = 0.5 );
sc_clock( sc_module_name name_,
double period_v_,
sc_time_unit period_tu_,
double duty_cycle_,
double start_time_v_,
sc_time_unit start_time_tu_,
bool posedge_first_ = true );
// for backward compatibility with 1.0
sc_clock( sc_module_name name_,
double period_, // in default time units
double duty_cycle_ = 0.5,
double start_time_ = 0.0, // in default time units
bool posedge_first_ = true );
この中で = で初期値の指定のある引数は (C++ の約束事により)後の方から順に、 省略可能です。
最初に挙げた次の例は、
sc_clock 配置名(クロック名, クロック周期);
上の四通りのうちの、 一番簡単な最初の形を使ったものです。 この例では、引数が省略されているので、暗黙に 「デューティサイクル 0.5 開始時間 0、周期の初めに立上る」と解釈されます。
引数を省略しなければ、 デューティサイクル、開始時間、周期の初めに立上るか、指定時の時間単位 などが指定できます。

