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/test03/golden/test03.log | 35 +++++++ .../bit/sc_proxy/concat/test03/test03.cpp | 115 +++++++++++++++++++++ 2 files changed, 150 insertions(+) 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/test03') 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