L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture...
Transcript of L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture...
![Page 1: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/1.jpg)
Design & Co design of Embedded SystemsDesign & Co-design of Embedded Systems
Lecture 14:
Data Types in SystemCSharif University of Technology
Computer Engineering Dept.
Winter-Spring 2008
Mehdi Modarressi
![Page 2: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/2.jpg)
Data Types
SystemC data typesSingle-bit Types
bit l isc_bit, sc_logic
Integer Typessc int, sc uint, sc bigint, sc biguint_ _ _ g _ g
Bit-Vector Typessc_bv, sc_lv
Fi d P i t TFixed-Point Typessc_fixed, sc_ufixed, sc_fix, sc_ufix
![Page 3: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/3.jpg)
Data Types (cont’d)
Defined for all typesStreaming operator defined for all types
t & t << ( t & T )ostream& operator << ( ostream&, T );Examplesc_bit b;cout<<b;
Trace functionsc trace(<trace-file pointer>, <traced variable>, _ p<string>)
Examplesc_bit b;sc_trace( tf, b, “message”);
![Page 4: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/4.jpg)
Single-bit Types
sc bitsc_bitTwo-valued logic: ‘0’ , ‘1’ (character literal)Example:sc_bit b;b=‘1’; // the same as b=1 or b=trueb=‘0’; // the same as b=0 or b=false
Defined operatorsBitwise: &(and) |(or) ^(xor) ~(not)Assignment: = &= |= ^=Assignment: = &= |= ^=Equality: == !=
![Page 5: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/5.jpg)
Single-bit Types (cont’d)
sc logicsc_logicFour-valued logic: ‘0’, ‘1’,‘X’,‘x’,‘Z’,‘z’ (char. literal)
‘x’ means unknown or indeterminate value‘ ’ hi h i d fl i l‘z’ means high impedance or floating value
Example:sc logic l;_l=‘0’; // the same as l=0, false, sc_logic_0l=‘1’; // the same as l=1, true, sc_logic_1l=‘z’; // the same as l=2 sc logic Zl= z ; // the same as l=2, sc_logic_Z l=‘x’; // the same as l=3, sc_logic_X
![Page 6: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/6.jpg)
Single-bit Types (cont’d)
sc logic (cont’d)sc_logic (cont d)Defined operators
Bitwise: &(and) |(or) ^(xor) ~(not)A i & | ^Assignment: = &= |= ^=Equality: == !=
![Page 7: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/7.jpg)
Single-bit Types (cont’d)
Any mixture of sc bit, sc logic, and bool types in y _ , _ g , ypcomparison and assignments is possible, except:
sc logic k;_ g ;sc_bit b; // or bool bk = ‘z’; // or k = ‘x’b = k; // Result is undefined.
// R n time arning is iss ed// Run-time warning is issued
![Page 8: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/8.jpg)
Example: 3-state buffer
SC MODULE(t i t t b f){SC_MODULE(tristate_buf){sc_in< sc_bit > input;sc_out< sc_logic > output;sc_in< sc_bit > enable;
id () {void process() {sc_bit in, en;sc_logic out;
in=input; en=enable; // reading inputs to temporary variablesif(en)
out = in;else
out = 'z';output = out; // writing a temporary variable to output
}
SC_CTOR(tristate_buf) {SC_METHOD(process);sensitive<<enable<<input;
}};
![Page 9: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/9.jpg)
Integer Types:Fixed Precision
Fixed Precision Unsigned and Signed IntegersFixed Precision Unsigned and Signed IntegersInteger variables with fixed width (number of bits)sc_int<n>, sc_uint<n>
Signed representation uses 2’s complementUnderlying implementation: 64 bit integer
Can freely be mixed with C++ integers (int, short, long)
![Page 10: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/10.jpg)
Fixed Precision Integers(cont’d)
Defined operatorsBitwise ~ & | ^ >> <<Arithemtic+ - * / %Assignment += -= *= /= %=Assignment += -= = /= %=
&= |= ^= =Equality == !=Relational< <= > >=Relational< <= > >=Auto-inc/dec ++ --Bit Select []Part Select .range(,)Concatenation (,)
![Page 11: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/11.jpg)
Fixed Precision Integers(cont’d)
Examples:
sc_logic mybit;sc_uint<8> myuint;mybit = myuint[7];
sc_uint<4> myrange;myrange = myuint.range(5,2);
sc_uint<12> my12int;my12int = (myuint, myrange);
![Page 12: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/12.jpg)
Fixed Precision Integers(cont’d)sc_uint<8> u1, u2;sc_int<16> i1, i2;
u1 = i1; // convert int to uint//i2 = u2; // convert uint to int
// BUG! in SystemC 2.0 User’s Guide
![Page 13: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/13.jpg)
Integer Types:Arbitrary Precision Integers
Integers with (virtually) no width limitIntegers with (virtually) no width limitMAX_NBITS defined in sc_constants.hsc bigint<n>, sc biguint<n>sc_bigint<n>, sc_biguint<n>
Signed representation uses 2’s complementOperators are the same as sc int, sc uintp _ , _Can be intermixed with sc_int, sc_uint, and C++ integer types
![Page 14: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/14.jpg)
Bit-Vector Types:Arbitrary Length Bit Vector
Arbitrary Length Bit VectorVector of 2-valued bitssc bv<n>sc_bv<n>
No arithmetic operationAssignment: String of ‘0’ and ‘1’ charsg gReduction operations
and_reduce(), and, or
sc_bv<6> databus;databus = “100100”;sc_logic result;result = databus.or_reduce();_
![Page 15: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/15.jpg)
Arbitrary Length Bit Vector(cont’d)
Defined operatorsDefined operatorsBitwise ~ & | ^ >> <<Assignment = &= |= ^=E lit !Equality == !=Bit Select []Part Select .range(,)Concatenation (,)Reductionand_reduce() or_reduce()
xor_reduce()_ ()
![Page 16: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/16.jpg)
Arbitrary Length Bit Vector(cont’d)
Examples:sc_bv<16> data16;sc_bv<32> data32;data32.range(15,0) = data16;data16 = (data32.range(7,0), data32.range(23,16));(data16.range(3,0),data16.range(15,12)) =
data32.range(7,0);data32.range(7,0);
sc_bit y;sc_bv<8> x;y = x[6];
sc_bv<16> x;sc bv<8> y;sc_bv<8> y;y = x.range(0,7);
![Page 17: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/17.jpg)
Arbitrary Length Bit Vector(cont’d)
Arithmetic operations not directly supportedArithmetic operations not directly supported
sc bv<8> b8=“11001010”;sc_bv<8> b8 11001010 ;sc_uint<8> u8;u8=b8;u8+=5; // or any other arithmeticb8=u8;
![Page 18: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/18.jpg)
Bit-Vector Types:Arbitrary Length Logic Vector
Arbitrary Length Logic VectorArbitrary Length Logic VectorVector of 4-valued bitssc lv<n>sc_lv<n>
No arithmetic operationAny ‘x’ or ‘z’ in the RHS: runtime warning + undefined y gresult
Assignment: String of ‘0’, ‘1’, ‘x’, ‘z’ charsO t thOperators are the same as sc_bv
![Page 19: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/19.jpg)
Arbitrary Length Logic Vector(cont’d)
Example:Example:
sc lv<8> bus1;sc_lv<8> bus1;if(enable)bus1 = “01xz10xx”;
elsebus1 = “zzzzzzzz”;
cout<<bus1 to string(); // OR: cout<<bus1cout<<bus1.to_string(); // OR: cout<<bus1
![Page 20: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/20.jpg)
Speed Issues:Integer Types
sc_bigintsc biguint
sc_int C++sc_biguint sc_uint Typeswith
MAX NBITSMAX_NBITSnot defined
![Page 21: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/21.jpg)
Speed Issues:Bit and Logic Types
sc_logic sc bitg sc_bit
sc_lv sc_bv
![Page 22: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/22.jpg)
User-Defined Type Issues
R i d f d i lRequired for every type used as signal or port
1. Equality-Check Operator
struct packet_type {int info, seq, retry;bool operator == (const packet type& rhs) constbool operator == (const packet_type& rhs) const
{ return (rhs.info == info && rhs.seq == seq &&rhs.retry == retry);
}};
![Page 23: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/23.jpg)
User-Defined Type Issues (cont’d)
2. A special trace function2. A special trace function
void sc_trace(sc_trace_file *tf, const packet_type& v, const sc_string& NAME) {
sc_trace(tf, v.info, NAME + ".info");sc_trace(tf, v.seq, NAME + ".seq");sc trace(tf, v.retry, NAME + ".retry");_
}
![Page 24: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/24.jpg)
User-Defined Type Issues (cont’d)
3. A special streaming operator3. A special streaming operator
ostream & operator <<(ostream &os, packet_type p) {os << p.info << p.seq << p.retry << endl;return os;
}}
![Page 25: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/25.jpg)
Resolved Logic Vectors
More than one driver on a single signal => resolutionMore than one driver on a single signal resolutionis required
![Page 26: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/26.jpg)
Resolved Logic Vectors (cont’d)
![Page 27: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/27.jpg)
Resolved Logic Vectors (cont’d)
Syntax for resolved-logic portssc_in_rv<n> port_name;sc_out_rv<n> port_name;sc inout rv<n> port name;_ _ p _Notes
Imposes extra simulation overheadVirtually no limit on the vector size (n)Virtually no limit on the vector size (n)
Corresponding resolved logic vector signalsc_signal_rv<n> signal_name;
Used to connect resolved logic portsUsed to connect resolved logic ports
![Page 28: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/28.jpg)
Tracing Variable Values
Tracing WaveformsTracing WaveformsCreating The Trace FileTracing Scalar Variable and SignalsTracing Scalar Variable and SignalsTracing Variable and Signal Arrays
![Page 29: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/29.jpg)
Tracing Variable Values (cont’d)
Supported waveform formatsppVCD (Value Change Dump)ASCII WIF (Wave Intermediate Format)ISDB (Integrated Signal DataBase)ISDB (Integrated Signal DataBase)
Waveform viewersVCD
Commercial tools: ModelSim®
Free tools: GTKWave http://www.cs.man.ac.uk/amulet/tools/gtkwave/SystemC_Win http://www.geocities.com/systemc_win/
![Page 30: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/30.jpg)
Tracing Variable Values (cont’d)
NotesNotesOnly global variables (signals, ports) can be traced
Variables local to a function cannot be tracedscalar, array, and aggregate types can be tracedDifferent types of trace files can be created during the same simulation runA signal or variable can be traced any number of times in different trace formats
![Page 31: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/31.jpg)
Creating/Closing Trace Files
Tracing wave formsCreating the trace file:sc trace file *tf;_ _ ;tf = sc_create_vcd_trace_file(“trace_file”);
For other trace file formatssc create wif trace file(<filename>);sc_create_wif_trace_file(<filename>);sc_create_isdb_trace_file(<filename>);To close the trace filesc close vcd trace file(<trace file pointer>);sc_close_vcd_trace_file(<trace-file pointer>);sc_close_wif_trace_file(<trace-file pointer>);sc_close_isdb_trace_file(<trace-file pointer>);
![Page 32: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/32.jpg)
Tracing scalar variablesg
SyntaxSyntaxsc_trace(<trace-file pointer>, <traced variable>,
<string>);
Examplesc_signal<int> a;float b;float b;sc_trace(trace_file, a, “MyA”);
sc_trace(trace_file, b, “B”);
![Page 33: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/33.jpg)
Example: Tristate Buffer
SC MODULE(t i t t b f){SC_MODULE(tristate_buf){sc_in< sc_bit > input;sc_out< sc_logic > output;sc_in< sc_bit > enable;
id () {void process() {sc_bit in, en;sc_logic out;
in=input;en=enable;if(en)
out = in;else
out = 'z';output = out;
}
SC_CTOR(tristate_buf) {SC_METHOD(process);sensitive<<enable<<input;
}};
![Page 34: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/34.jpg)
Example: Tristate Buffer (cont’d)
SC MODULE(t t b h) {SC_MODULE(test_bench) {sc_out< sc_bit > input;sc_in< sc_logic > output;sc_out< sc_bit > enable;sc_in_clk clk;
void process(){
while(1) {enable= (sc_bit) 0;input = (sc_bit) 0;wait();input = (sc_bit) 1;wait();enable =(sc_bit) 1;input = (sc_bit) 0;wait();input = (sc bit) 1;p ( _ )wait();
}}
SC_CTOR(test_bench) {SC CTHREAD(process, clk.pos() );SC_CTHREAD(process, clk.pos() );
}};
![Page 35: L13-systemc data types - Sharifce.sharif.edu/courses/86-87/2/ce333/resources/root/Lecture Notes/L13... · Data Types in SystemC Sharif University of Technology Computer Engineering](https://reader030.fdocuments.in/reader030/viewer/2022040108/5e1844f243aa1926e153a8cf/html5/thumbnails/35.jpg)
Example: Tristate Buffer (cont’d)
i t i (i t h *[])int sc_main(int, char*[]){
tristate_buf buf("tristateBuffer");test_bench tb("testBench");
sc_signal< sc_bit > in, en;sc_signal< sc_logic > out;sc_clock clk;
buf(in, out, en);tb(in, out, en, clk);
sc_trace_file *tf;tf = sc_create_vcd_trace_file("BufferTraceFile"); // file extension defaults to ".vcd"sc_trace(tf, in, "input signal");sc_trace(tf, en, "enable signal");sc_trace(tf, out, "output signal");
sc_start(10);
sc_close_vcd_trace_file(tf);return 0;
}