File: t_order_multidriven.cpp

package info (click to toggle)
verilator 3.864-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 12,272 kB
  • ctags: 19,637
  • sloc: cpp: 57,401; perl: 8,764; yacc: 2,559; lex: 1,727; makefile: 658; sh: 175
file content (56 lines) | stat: -rw-r--r-- 1,123 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// This file ONLY is placed into the Public Domain, for any use,
// without warranty, 2013 by Ted Campbell.

#include "Vt_order_multidriven.h"
#include "verilated.h"
#include "verilated_vcd_c.h"

Vt_order_multidriven *                  vcore;
VerilatedVcdC *         vcd;
vluint64_t                vtime;

#define PHASE_90

static void half_cycle( int clk ) {
    if ( clk & 1 ) vcore->i_clk_wr = !vcore->i_clk_wr;
    if ( clk & 2 ) vcore->i_clk_rd = !vcore->i_clk_rd;

    vtime += 10 / 2;

    vcore->eval();
    vcore->eval();

    vcd->dump( vtime );
}

static void cycle() {
#ifdef PHASE_90
    half_cycle( 1 );
    half_cycle( 2 );
    half_cycle( 1 );
    half_cycle( 2 );
#else
    half_cycle( 3 );
    half_cycle( 3 );
#endif
}

int main() {

    Verilated::traceEverOn( true );

    vcore   = new Vt_order_multidriven;
    vcd     = new VerilatedVcdC;

    vcore->trace( vcd, 99 );
    vcd->open( "obj_dir/t_order_multidriven/sim.vcd" );

    vcore->i_clk_wr     = 0;
    vcore->i_clk_rd     = 0;

    for ( int i = 0; i < 256; ++i )
        cycle( );

    vcd->close( );
    printf("*-* All Finished *-*\n");
}