From 16fa8d7cc8c92f5ab879e4cf9c6c0bbb3567860f Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Thu, 24 May 2018 01:37:55 -0700 Subject: systemc: Import tests from the Accellera systemc distribution. Change-Id: Iad76b398949a55d768a34d027a2d8e3739953da6 Reviewed-on: https://gem5-review.googlesource.com/10845 Reviewed-by: Giacomo Travaglini Maintainer: Gabe Black --- .../bit/sc_proxy/concat/test01/golden/test01.log | 33 ++++++ .../bit/sc_proxy/concat/test01/test01.cpp | 112 ++++++++++++++++++++ .../bit/sc_proxy/concat/test02/golden/test02.log | 33 ++++++ .../bit/sc_proxy/concat/test02/test02.cpp | 112 ++++++++++++++++++++ .../bit/sc_proxy/concat/test03/golden/test03.log | 35 +++++++ .../bit/sc_proxy/concat/test03/test03.cpp | 115 +++++++++++++++++++++ 6 files changed, 440 insertions(+) create mode 100644 src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test01/golden/test01.log create mode 100644 src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test01/test01.cpp create mode 100644 src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test02/golden/test02.log create mode 100644 src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test02/test02.cpp create mode 100644 src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test03/golden/test03.log create mode 100644 src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test03/test03.cpp (limited to 'src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat') diff --git a/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test01/golden/test01.log b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test01/golden/test01.log new file mode 100644 index 000000000..c57396dc4 --- /dev/null +++ b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test01/golden/test01.log @@ -0,0 +1,33 @@ +SystemC Simulation +bv2a = 01 +bv2b = 10 +bv4a = 0110 +bv4a = 1001 +bv4a = 1011 +bv2a = 10 +bv4a = 1101 +bv2a = 01 +bv4a = 1111 +bv4b = 1001 +bv2a = 00 +bv2b = 11 +bv4a = 0011 +bv4a = 1100 +bv2a = 11 +bv2b = 00 +bv2a = 01 +bv2b = 10 +bv4a = 0000 +bv4b = 1111 +bv2a = 00 +bv2b = 11 +bv4a = 0110 +bv4a = 0000 +bv2a = 11 +bv2b = 00 +11111010 +10101111 +00001 +10000 +00001 +10000 diff --git a/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test01/test01.cpp b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test01/test01.cpp new file mode 100644 index 000000000..9028946e7 --- /dev/null +++ b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test01/test01.cpp @@ -0,0 +1,112 @@ +/***************************************************************************** + + Licensed to Accellera Systems Initiative Inc. (Accellera) under one or + more contributor license agreements. See the NOTICE file distributed + with this work for additional information regarding copyright ownership. + Accellera licenses this file to you under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with the + License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + *****************************************************************************/ + +/***************************************************************************** + + test01.cpp -- + + Original Author: Andy Goodrich, Forte Design Systemc, 2003-01-17 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +// test of r-value and l-value concatenation -- use operator , () + +#include "systemc.h" + +int +sc_main( int, char*[] ) +{ + sc_bv<2> bv2a; + sc_bv<2> bv2b; + const sc_bv<2> bv2c( "10" ); + const sc_bv<2> bv2d( "01" ); + sc_bv<4> bv4a; + sc_bv<4> bv4b( "1111" ); + + ( bv2a, bv2b ) = "0110"; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + + bv4a = ( bv2a, bv2b ); + cout << "bv4a = " << bv4a << endl; + + bv4a = ( bv2c, bv2d ); + cout << "bv4a = " << bv4a << endl; + + ( bv4a.range( 2, 1 ), bv2a ) = "0110"; + cout << "bv4a = " << bv4a << endl; + cout << "bv2a = " << bv2a << endl; + + ( bv2a, bv4a.range( 1, 2 ) ) = "0101"; + cout << "bv4a = " << bv4a << endl; + cout << "bv2a = " << bv2a << endl; + + ( bv4a.range( 2, 1 ), bv4b.range( 2, 1 ) ) = "1100"; + cout << "bv4a = " << bv4a << endl; + cout << "bv4b = " << bv4b << endl; + + ( ( bv2a, bv2b ), bv4a ) = "00110011"; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + cout << "bv4a = " << bv4a << endl; + + ( bv4a, ( bv2a, bv2b ) ) = "11001100"; + cout << "bv4a = " << bv4a << endl; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + + ( ( bv2a, bv2b ), ( bv4a, bv4b ) ) = "011000001111"; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + cout << "bv4a = " << bv4a << endl; + cout << "bv4b = " << bv4b << endl; + + ( ( bv2a, bv2b ), bv4a.range( 2, 1 ) ) = "001111"; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + cout << "bv4a = " << bv4a << endl; + + ( bv4a.range( 2, 1 ), ( bv2a, bv2b ) ) = "001100"; + cout << "bv4a = " << bv4a << endl; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + + const char* s = "1010"; + sc_logic l = SC_LOGIC_1; + bool b = true; + + cout << ( bv4b, s ) << endl; + cout << ( s, bv4b ) << endl; + cout << ( bv4a, l ) << endl; + cout << ( l, bv4a ) << endl; + cout << ( bv4a, b ) << endl; + cout << ( b, bv4a ) << endl; + + return 0; +} diff --git a/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test02/golden/test02.log b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test02/golden/test02.log new file mode 100644 index 000000000..c57396dc4 --- /dev/null +++ b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test02/golden/test02.log @@ -0,0 +1,33 @@ +SystemC Simulation +bv2a = 01 +bv2b = 10 +bv4a = 0110 +bv4a = 1001 +bv4a = 1011 +bv2a = 10 +bv4a = 1101 +bv2a = 01 +bv4a = 1111 +bv4b = 1001 +bv2a = 00 +bv2b = 11 +bv4a = 0011 +bv4a = 1100 +bv2a = 11 +bv2b = 00 +bv2a = 01 +bv2b = 10 +bv4a = 0000 +bv4b = 1111 +bv2a = 00 +bv2b = 11 +bv4a = 0110 +bv4a = 0000 +bv2a = 11 +bv2b = 00 +11111010 +10101111 +00001 +10000 +00001 +10000 diff --git a/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test02/test02.cpp b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test02/test02.cpp new file mode 100644 index 000000000..35e83cf6a --- /dev/null +++ b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test02/test02.cpp @@ -0,0 +1,112 @@ +/***************************************************************************** + + Licensed to Accellera Systems Initiative Inc. (Accellera) under one or + more contributor license agreements. See the NOTICE file distributed + with this work for additional information regarding copyright ownership. + Accellera licenses this file to you under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with the + License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + *****************************************************************************/ + +/***************************************************************************** + + test02.cpp -- + + Original Author: Andy Goodrich, Forte Design Systems, 2003-01-17 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +// test of r-value and l-value concatenation -- use concat() + +#include "systemc.h" + +int +sc_main( int, char*[] ) +{ + sc_bv<2> bv2a; + sc_bv<2> bv2b; + const sc_bv<2> bv2c( "10" ); + const sc_bv<2> bv2d( "01" ); + sc_bv<4> bv4a; + sc_bv<4> bv4b( "1111" ); + + concat( bv2a, bv2b ) = "0110"; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + + bv4a = concat( bv2a, bv2b ); + cout << "bv4a = " << bv4a << endl; + + bv4a = concat( bv2c, bv2d ); + cout << "bv4a = " << bv4a << endl; + + concat( bv4a.range( 2, 1 ), bv2a ) = "0110"; + cout << "bv4a = " << bv4a << endl; + cout << "bv2a = " << bv2a << endl; + + concat( bv2a, bv4a.range( 1, 2 ) ) = "0101"; + cout << "bv4a = " << bv4a << endl; + cout << "bv2a = " << bv2a << endl; + + concat( bv4a.range( 2, 1 ), bv4b.range( 2, 1 ) ) = "1100"; + cout << "bv4a = " << bv4a << endl; + cout << "bv4b = " << bv4b << endl; + + concat( concat( bv2a, bv2b ), bv4a ) = "00110011"; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + cout << "bv4a = " << bv4a << endl; + + concat( bv4a, concat( bv2a, bv2b ) ) = "11001100"; + cout << "bv4a = " << bv4a << endl; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + + concat( concat( bv2a, bv2b ), concat( bv4a, bv4b ) ) = "011000001111"; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + cout << "bv4a = " << bv4a << endl; + cout << "bv4b = " << bv4b << endl; + + concat( concat( bv2a, bv2b ), bv4a.range( 2, 1 ) ) = "001111"; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + cout << "bv4a = " << bv4a << endl; + + concat( bv4a.range( 2, 1 ), concat( bv2a, bv2b ) ) = "001100"; + cout << "bv4a = " << bv4a << endl; + cout << "bv2a = " << bv2a << endl; + cout << "bv2b = " << bv2b << endl; + + const char* s = "1010"; + sc_logic l = SC_LOGIC_1; + bool b = true; + + cout << concat( bv4b, s ) << endl; + cout << concat( s, bv4b ) << endl; + cout << concat( bv4a, l ) << endl; + cout << concat( l, bv4a ) << endl; + cout << concat( bv4a, b ) << endl; + cout << concat( b, bv4a ) << endl; + + return 0; +} diff --git a/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test03/golden/test03.log b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test03/golden/test03.log new file mode 100644 index 000000000..a46c785ff --- /dev/null +++ b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test03/golden/test03.log @@ -0,0 +1,35 @@ +SystemC Simulation + +6666555555555544444444443333333333222222222211111111110000000000 +3210987654321098765432109876543210987654321098765432109876543210 +---------------------------------------------------------------- +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lv1 +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lv2 + (lv1[33], lv2[34]) = 0 +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lv1 +XXXXXXXXXXXXXXXXXXXXXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lv2 +lv1[43].set_cword(0, 0) +XXXXXXXXXXXXXXXXXXXX1XXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lv1 +lv2[44].set_word(0, 0) +XXXXXXXXXXXXXXXXXXXZXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lv2 +(lv1,lv2[9]) = 0 +0000000000000000000000000000000000000000000000000000000000000000 lv1 +XXXXXXXXXXXXXXXXXXXZXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXX0XXXXXXXXX lv2 +(lv2[9], lv1) = -1ll +1111111111111111111111111111111111111111111111111111111111111111 lv1 +XXXXXXXXXXXXXXXXXXXZXXXXXXXXX0XXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXX lv2 + +0000000000000000000000000000000000000000000000000000000000000000 bv1 +0000000000000000000000000000000000000000000000000000000000000000 bv2 +(bv1[33], bv2[34]) = 3 +0000000000000000000000000000001000000000000000000000000000000000 bv1 +0000000000000000000000000000010000000000000000000000000000000000 bv2 +bv1[43].set_word(0, 1) +0000000000000000000010000000001000000000000000000000000000000000 bv1 +(bv1,bv2[9]) = 0 +0000000000000000000000000000000000000000000000000000000000000000 bv1 +0000000000000000000000000000010000000000000000000000000000000000 bv2 +(bv2[9], bv1) = -1ll +1111111111111111111111111111111111111111111111111111111111111111 bv1 +0000000000000000000000000000010000000000000000000000001000000000 bv2 +Program completed diff --git a/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test03/test03.cpp b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test03/test03.cpp new file mode 100644 index 000000000..1c30c19d9 --- /dev/null +++ b/src/systemc/tests/systemc/datatypes/bit/sc_proxy/concat/test03/test03.cpp @@ -0,0 +1,115 @@ +/***************************************************************************** + + Licensed to Accellera Systems Initiative Inc. (Accellera) under one or + more contributor license agreements. See the NOTICE file distributed + with this work for additional information regarding copyright ownership. + Accellera licenses this file to you under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with the + License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + *****************************************************************************/ + +/***************************************************************************** + + test03.cpp -- + + Original Author: Andy Goodrich, Forte Design Systems, 2003-01-17 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +// test and l-value bit selection concatenation on sc_lv and sc_bv +// also test set_word() and set_cword on bit selections + +#include "systemc.h" + +int sc_main(int argc, char* argv[]) +{ + sc_bv<64> bv1; + sc_bv<64> bv2; + sc_lv<64> lv1; + sc_lv<64> lv2; + + cout << endl; + cout << "6666555555555544444444443333333333222222222211111111110000000000" + << endl; + cout << "3210987654321098765432109876543210987654321098765432109876543210" + << endl; + cout << "----------------------------------------------------------------" + << endl; + + // LV SUPPORT: + + cout << lv1 << " lv1" << endl; + cout << lv2 << " lv2 " << endl; + + cout << " (lv1[33], lv2[34]) = 0 " << endl; + (lv1[33], lv2[34]) = 0; + cout << lv1 << " lv1" << endl; + cout << lv2 << " lv2 " << endl; + + cout << "lv1[43].set_cword(0, 0) " << endl; + lv1[43].set_cword(0, 0); + cout << lv1 << " lv1" << endl; + + cout << "lv2[44].set_word(0, 0)" << endl; + lv2[44].set_word(0, 0); + cout << lv2 << " lv2" << endl; + + cout << "(lv1,lv2[9]) = 0" << endl; + (lv1,lv2[9]) = 0; + cout << lv1 << " lv1 " << endl; + cout << lv2 << " lv2 " << endl; + + cout << "(lv2[9], lv1) = -1ll" << endl; + (lv2[9], lv1) = -1ll; + cout << lv1 << " lv1 " << endl; + cout << lv2 << " lv2 " << endl; + + + // BV SUPPORT: + + cout << endl; + cout << bv1 << " bv1" << endl; + cout << bv2 << " bv2" << endl; + + cout << "(bv1[33], bv2[34]) = 3" << endl; + (bv1[33], bv2[34]) = 3; + cout << bv1 << " bv1" << endl; + cout << bv2 << " bv2" << endl; + + cout << "bv1[43].set_word(0, 1)" << endl; + bv1[43].set_word(0, 1); + cout << bv1 << " bv1" << endl; + + + cout << "(bv1,bv2[9]) = 0" << endl; + (bv1,bv2[9]) = 0; + cout << bv1 << " bv1" << endl; + cout << bv2 << " bv2 " << endl; + + cout << "(bv2[9], bv1) = -1ll" << endl; + (bv2[9], bv1) = -1ll; + cout << bv1 << " bv1" << endl; + cout << bv2 << " bv2 " << endl; + + cout << "Program completed" << endl; + return 0; +} -- cgit v1.2.3