SCV:SystemCデータ型のランダマイズ

今まで試したソースは C/C++のデータ・タイプだったので、
SystemCのデータ・タイプで試してみました。

  • サンプルコード
#include <scv.h>

int sc_main( int argc, char* argv[] ) {

  printf( "-----------------------\n");
  printf( "--- Type:sc_int<8>  ---\n");
  printf( "-----------------------\n");
  scv_smart_ptr<sc_int<8> > sci_p( "sc_int" );

  sci_p->keep_out( -30, 30 );

  for (int i=0; i<10; i++) {
    sci_p->next();
    printf( "[SCV] data = %d\n", sci_p->read().to_int() );
  }

  printf( "-----------------------\n");
  printf( "--- Type:sc_lv<8>  ---\n");
  printf( "-----------------------\n");
  scv_smart_ptr<sc_lv<4> > sclv_p( "sc_lv" );

  sclv_p->keep_out( 0, 7 );
  sclv_p->set_mode(scv_extensions_if::RANDOM_AVOID_DUPLICATE);

  for (int i=0; i<10; i++) {
    sclv_p->next();
    printf( "[SCV] data = %d\n", sclv_p->read().to_uint() );
  }

  return 0;
}
  • 実行結果
$> ./main 

             SystemC 2.2.0 --- Jan 15 2012 14:19:56
        Copyright (c) 1996-2006 by all Contributors
                    ALL RIGHTS RESERVED
-----------------------
--- Type:sc_int<8>  ---
-----------------------
[SCV] data = 101
[SCV] data = -77
[SCV] data = 112
[SCV] data = -75
[SCV] data = -93
[SCV] data = 74
[SCV] data = -114
[SCV] data = -39
[SCV] data = -66
[SCV] data = -128
-----------------------
--- Type:sc_lv<8> -----
-----------------------
[SCV] data = 14
[SCV] data = 9
[SCV] data = 12
[SCV] data = 15
[SCV] data = 10
[SCV] data = 11
[SCV] data = 8
[SCV] data = 13
[SCV] data = 11
[SCV] data = 9

当たり前ですが、普通に出来ますね。