(原創) 如何寫一個加法器? (C/C++) (SystemC) (IC Design)
Abstract
寫一個硬體的加法器,幾乎就跟軟體的HelloWorld一樣,是最基本的程式,此範例Demo如何用SystemC寫一個加法器。
Introduction
Adder.h
1
#include "SystemC.h"
2
3
SC_MODULE(Adder) { // Declare Adder Module
4
sc_in<int> a,b; // Declare in port
5
sc_out<int> sum; // Declare out port
6
7
void doAdd();
8
9
SC_CTOR(Adder) {
10
SC_METHOD(doAdd); // Register doAdd process
11
sensitive << a << b; // specify sensitivity
12
}
13
};
#include "SystemC.h"2

3
SC_MODULE(Adder) { // Declare Adder Module4
sc_in<int> a,b; // Declare in port5
sc_out<int> sum; // Declare out port6

7
void doAdd();8

9
SC_CTOR(Adder) {10
SC_METHOD(doAdd); // Register doAdd process11
sensitive << a << b; // specify sensitivity12
}13
};
Adder.cpp
1
#include "systemc.h"
2
#include "Adder.h"
3
4
void Adder::doAdd() {
5
sum = a + b;
6
}
#include "systemc.h"2
#include "Adder.h"3

4
void Adder::doAdd() {5
sum = a + b;6
}
AdderTest.cpp (TestBench)
1
#include <iostream>
2
#include "systemc.h"
3
#include "Adder.h"
4
5
using namespace std;
6
7
int sc_main(int argc, char* argv[]) {
8
// Create instance of Adder
9
Adder adder("adder");
10
// Declare singal in testbench
11
sc_signal<int> a,b,sum;
12
13
// Initialize adder port by constructor
14
adder.a(a);
15
adder.b(b);
16
adder.sum(sum);
17
18
a = 1;
19
b = 2;
20
21
// Start simulation
22
sc_start(1);
23
cout << sum << endl;
24
25
return 0;
26
}
#include <iostream>2
#include "systemc.h"3
#include "Adder.h"4

5
using namespace std;6

7
int sc_main(int argc, char* argv[]) {8
// Create instance of Adder9
Adder adder("adder"); 10
// Declare singal in testbench11
sc_signal<int> a,b,sum;12

13
// Initialize adder port by constructor14
adder.a(a); 15
adder.b(b);16
adder.sum(sum);17

18
a = 1;19
b = 2;20

21
// Start simulation22
sc_start(1);23
cout << sum << endl;24
25
return 0;26
}
執行結果
1
2
SystemC 2.1.v1 --- Oct 18 2006 02:34:01
3
Copyright (c) 1996-2005 by all Contributors
4
ALL RIGHTS RESERVED
5
3
6
Press any key to continue

2
SystemC 2.1.v1 --- Oct 18 2006 02:34:013
Copyright (c) 1996-2005 by all Contributors4
ALL RIGHTS RESERVED5
36
Press any key to continue
SC_MODULE(Adder) 
SC_CTOR(Adder)
浙公网安备 33010602011771号