verdier,
SC_HAS_PROCESS ( mybuf ) ;
mybuf ( sc_module_name navn) : sc_module ( navn) {
initialize ();
SC_METHOD (innsats) ;
sensitive < < clk1.pos ();
SC_METHOD (fjern) ;
sensitive << clk2.pos ();
}
ugyldig sett ();
void fjerne ();
void initialize ();
};
følgende linjer med kode gjennomføre innsetting og fjerning metoder , sammen med en initialisering metoden
ugyldig mybuf :: initialisere ( ) {
values.clear ();
}
ugyldig mybuf . : : fjerne ( ) {
if ( values.size ( ) > 0 ) {
std :: cout << sc_time_stamp ( ) << " " << values.front ( ) << endl;
values.pop_front ();
}
}
ugyldig mybuf :: insert ( ) {
if ( values.size ( ) == 0 ) {
int r = rand ( ) % 100;
values.push_back ( r ) ;
}
}
følgende kode segmentet implementerer en test - benk for eksempel. Klokkene CLK1 og CLK2 er drevet fra denne testen - benk
klasse mybuf_tb : public sc_module {
public: .
Sc_out CLK1 ;
< p> sc_out CLK2 ;
SC_HAS_PROCESS ( mybuf_tb ) ;
mybuf_tb ( sc_module_name navn) : sc_module ( navn) {
SC_THREAD ( clock1 ) ;
SC_THREAD ( clock2 ) ;
}
ugyldig clock1 ();
ugyldig clock2 ();
};
< p> tomrommet mybuf_tb :: clock1 ( ) {
while ( true) {
CLK1 = 0;
vente ( 10 , SC_NS ) ;
CLK1 = 1;
vente ( 10 , SC_NS ) ;
}
}
ugyldig mybuf_tb :: clock2 ( ) {
< p > while ( true) {
CLK2 = 0;
vente ( 20 , SC_NS ) ;
CLK2 = 1;
vente ( 20 , SC_NS ) ;
}
}
følgende kode segmentet instantiates utformingen modulen og dens test - benk . Så det binder klokkene slik at test- benk gir klokken verdiene til design modulen .
Int sc_main ( int argc , char * argv [ ] ) {
sc_signal CLK1 ;
sc_signal CLK2 ;
mybuf newbuf ( " mybuffer ");
newbuf.clk1 ( CLK1 ) ;
newbuf . CLK2 ( CLK2 ) ;
mybuf_tb 1 ;
}