diff options
Diffstat (limited to 'src/systemc/tests/systemc/misc/user_guide/chpt10.1')
8 files changed, 717 insertions, 0 deletions
diff --git a/src/systemc/tests/systemc/misc/user_guide/chpt10.1/chpt10.1.f b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/chpt10.1.f new file mode 100644 index 000000000..9e0d8be37 --- /dev/null +++ b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/chpt10.1.f @@ -0,0 +1,3 @@ +chpt10.1/main.cpp +chpt10.1/paramadd.cpp +chpt10.1/stim.cpp diff --git a/src/systemc/tests/systemc/misc/user_guide/chpt10.1/common.h b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/common.h new file mode 100644 index 000000000..20e0a6f30 --- /dev/null +++ b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/common.h @@ -0,0 +1,45 @@ +/***************************************************************************** + + 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. + + *****************************************************************************/ + +/***************************************************************************** + + common.h -- + + Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +#ifndef COMMON_H +#define COMMON_H + +#include "systemc.h" + +typedef sc_signal<sc_bv<4> > signal_bool_vector; + +#endif diff --git a/src/systemc/tests/systemc/misc/user_guide/chpt10.1/golden/chpt10.1.log b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/golden/chpt10.1.log new file mode 100644 index 000000000..2edaad097 --- /dev/null +++ b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/golden/chpt10.1.log @@ -0,0 +1,260 @@ +SystemC Simulation +35 ns : RESET off ...by stim +60 ns : 0 + 0 + 1 = 1 => carry = 0 sum = 0001 +100 ns : 1 + 0 + 0 = 1 => carry = 0 sum = 0001 +140 ns : 2 + 0 + 1 = 3 => carry = 0 sum = 0011 +180 ns : 3 + 0 + 0 = 3 => carry = 0 sum = 0011 +220 ns : 4 + 0 + 1 = 5 => carry = 0 sum = 0101 +260 ns : 5 + 0 + 0 = 5 => carry = 0 sum = 0101 +300 ns : 6 + 0 + 1 = 7 => carry = 0 sum = 0111 +340 ns : 7 + 0 + 0 = 7 => carry = 0 sum = 0111 +380 ns : 8 + 0 + 1 = 9 => carry = 0 sum = 1001 +420 ns : 9 + 0 + 0 = 9 => carry = 0 sum = 1001 +460 ns : 10 + 0 + 1 = 11 => carry = 0 sum = 1011 +500 ns : 11 + 0 + 0 = 11 => carry = 0 sum = 1011 +540 ns : 12 + 0 + 1 = 13 => carry = 0 sum = 1101 +580 ns : 13 + 0 + 0 = 13 => carry = 0 sum = 1101 +620 ns : 14 + 0 + 1 = 15 => carry = 0 sum = 1111 +660 ns : 15 + 0 + 0 = 15 => carry = 0 sum = 1111 +700 ns : 0 + 1 + 1 = 2 => carry = 0 sum = 0010 +740 ns : 1 + 1 + 0 = 2 => carry = 0 sum = 0010 +780 ns : 2 + 1 + 1 = 4 => carry = 0 sum = 0100 +820 ns : 3 + 1 + 0 = 4 => carry = 0 sum = 0100 +860 ns : 4 + 1 + 1 = 6 => carry = 0 sum = 0110 +900 ns : 5 + 1 + 0 = 6 => carry = 0 sum = 0110 +940 ns : 6 + 1 + 1 = 8 => carry = 0 sum = 1000 +980 ns : 7 + 1 + 0 = 8 => carry = 0 sum = 1000 +1020 ns : 8 + 1 + 1 = 10 => carry = 0 sum = 1010 +1060 ns : 9 + 1 + 0 = 10 => carry = 0 sum = 1010 +1100 ns : 10 + 1 + 1 = 12 => carry = 0 sum = 1100 +1140 ns : 11 + 1 + 0 = 12 => carry = 0 sum = 1100 +1180 ns : 12 + 1 + 1 = 14 => carry = 0 sum = 1110 +1220 ns : 13 + 1 + 0 = 14 => carry = 0 sum = 1110 +1260 ns : 14 + 1 + 1 = 16 => carry = 1 sum = 0000 +1300 ns : 15 + 1 + 0 = 16 => carry = 1 sum = 0000 +1340 ns : 0 + 2 + 1 = 3 => carry = 0 sum = 0011 +1380 ns : 1 + 2 + 0 = 3 => carry = 0 sum = 0011 +1420 ns : 2 + 2 + 1 = 5 => carry = 0 sum = 0101 +1460 ns : 3 + 2 + 0 = 5 => carry = 0 sum = 0101 +1500 ns : 4 + 2 + 1 = 7 => carry = 0 sum = 0111 +1540 ns : 5 + 2 + 0 = 7 => carry = 0 sum = 0111 +1580 ns : 6 + 2 + 1 = 9 => carry = 0 sum = 1001 +1620 ns : 7 + 2 + 0 = 9 => carry = 0 sum = 1001 +1660 ns : 8 + 2 + 1 = 11 => carry = 0 sum = 1011 +1700 ns : 9 + 2 + 0 = 11 => carry = 0 sum = 1011 +1740 ns : 10 + 2 + 1 = 13 => carry = 0 sum = 1101 +1780 ns : 11 + 2 + 0 = 13 => carry = 0 sum = 1101 +1820 ns : 12 + 2 + 1 = 15 => carry = 0 sum = 1111 +1860 ns : 13 + 2 + 0 = 15 => carry = 0 sum = 1111 +1900 ns : 14 + 2 + 1 = 17 => carry = 1 sum = 0001 +1940 ns : 15 + 2 + 0 = 17 => carry = 1 sum = 0001 +1980 ns : 0 + 3 + 1 = 4 => carry = 0 sum = 0100 +2020 ns : 1 + 3 + 0 = 4 => carry = 0 sum = 0100 +2060 ns : 2 + 3 + 1 = 6 => carry = 0 sum = 0110 +2100 ns : 3 + 3 + 0 = 6 => carry = 0 sum = 0110 +2140 ns : 4 + 3 + 1 = 8 => carry = 0 sum = 1000 +2180 ns : 5 + 3 + 0 = 8 => carry = 0 sum = 1000 +2220 ns : 6 + 3 + 1 = 10 => carry = 0 sum = 1010 +2260 ns : 7 + 3 + 0 = 10 => carry = 0 sum = 1010 +2300 ns : 8 + 3 + 1 = 12 => carry = 0 sum = 1100 +2340 ns : 9 + 3 + 0 = 12 => carry = 0 sum = 1100 +2380 ns : 10 + 3 + 1 = 14 => carry = 0 sum = 1110 +2420 ns : 11 + 3 + 0 = 14 => carry = 0 sum = 1110 +2460 ns : 12 + 3 + 1 = 16 => carry = 1 sum = 0000 +2500 ns : 13 + 3 + 0 = 16 => carry = 1 sum = 0000 +2540 ns : 14 + 3 + 1 = 18 => carry = 1 sum = 0010 +2580 ns : 15 + 3 + 0 = 18 => carry = 1 sum = 0010 +2620 ns : 0 + 4 + 1 = 5 => carry = 0 sum = 0101 +2660 ns : 1 + 4 + 0 = 5 => carry = 0 sum = 0101 +2700 ns : 2 + 4 + 1 = 7 => carry = 0 sum = 0111 +2740 ns : 3 + 4 + 0 = 7 => carry = 0 sum = 0111 +2780 ns : 4 + 4 + 1 = 9 => carry = 0 sum = 1001 +2820 ns : 5 + 4 + 0 = 9 => carry = 0 sum = 1001 +2860 ns : 6 + 4 + 1 = 11 => carry = 0 sum = 1011 +2900 ns : 7 + 4 + 0 = 11 => carry = 0 sum = 1011 +2940 ns : 8 + 4 + 1 = 13 => carry = 0 sum = 1101 +2980 ns : 9 + 4 + 0 = 13 => carry = 0 sum = 1101 +3020 ns : 10 + 4 + 1 = 15 => carry = 0 sum = 1111 +3060 ns : 11 + 4 + 0 = 15 => carry = 0 sum = 1111 +3100 ns : 12 + 4 + 1 = 17 => carry = 1 sum = 0001 +3140 ns : 13 + 4 + 0 = 17 => carry = 1 sum = 0001 +3180 ns : 14 + 4 + 1 = 19 => carry = 1 sum = 0011 +3220 ns : 15 + 4 + 0 = 19 => carry = 1 sum = 0011 +3260 ns : 0 + 5 + 1 = 6 => carry = 0 sum = 0110 +3300 ns : 1 + 5 + 0 = 6 => carry = 0 sum = 0110 +3340 ns : 2 + 5 + 1 = 8 => carry = 0 sum = 1000 +3380 ns : 3 + 5 + 0 = 8 => carry = 0 sum = 1000 +3420 ns : 4 + 5 + 1 = 10 => carry = 0 sum = 1010 +3460 ns : 5 + 5 + 0 = 10 => carry = 0 sum = 1010 +3500 ns : 6 + 5 + 1 = 12 => carry = 0 sum = 1100 +3540 ns : 7 + 5 + 0 = 12 => carry = 0 sum = 1100 +3580 ns : 8 + 5 + 1 = 14 => carry = 0 sum = 1110 +3620 ns : 9 + 5 + 0 = 14 => carry = 0 sum = 1110 +3660 ns : 10 + 5 + 1 = 16 => carry = 1 sum = 0000 +3700 ns : 11 + 5 + 0 = 16 => carry = 1 sum = 0000 +3740 ns : 12 + 5 + 1 = 18 => carry = 1 sum = 0010 +3780 ns : 13 + 5 + 0 = 18 => carry = 1 sum = 0010 +3820 ns : 14 + 5 + 1 = 20 => carry = 1 sum = 0100 +3860 ns : 15 + 5 + 0 = 20 => carry = 1 sum = 0100 +3900 ns : 0 + 6 + 1 = 7 => carry = 0 sum = 0111 +3940 ns : 1 + 6 + 0 = 7 => carry = 0 sum = 0111 +3980 ns : 2 + 6 + 1 = 9 => carry = 0 sum = 1001 +4020 ns : 3 + 6 + 0 = 9 => carry = 0 sum = 1001 +4060 ns : 4 + 6 + 1 = 11 => carry = 0 sum = 1011 +4100 ns : 5 + 6 + 0 = 11 => carry = 0 sum = 1011 +4140 ns : 6 + 6 + 1 = 13 => carry = 0 sum = 1101 +4180 ns : 7 + 6 + 0 = 13 => carry = 0 sum = 1101 +4220 ns : 8 + 6 + 1 = 15 => carry = 0 sum = 1111 +4260 ns : 9 + 6 + 0 = 15 => carry = 0 sum = 1111 +4300 ns : 10 + 6 + 1 = 17 => carry = 1 sum = 0001 +4340 ns : 11 + 6 + 0 = 17 => carry = 1 sum = 0001 +4380 ns : 12 + 6 + 1 = 19 => carry = 1 sum = 0011 +4420 ns : 13 + 6 + 0 = 19 => carry = 1 sum = 0011 +4460 ns : 14 + 6 + 1 = 21 => carry = 1 sum = 0101 +4500 ns : 15 + 6 + 0 = 21 => carry = 1 sum = 0101 +4540 ns : 0 + 7 + 1 = 8 => carry = 0 sum = 1000 +4580 ns : 1 + 7 + 0 = 8 => carry = 0 sum = 1000 +4620 ns : 2 + 7 + 1 = 10 => carry = 0 sum = 1010 +4660 ns : 3 + 7 + 0 = 10 => carry = 0 sum = 1010 +4700 ns : 4 + 7 + 1 = 12 => carry = 0 sum = 1100 +4740 ns : 5 + 7 + 0 = 12 => carry = 0 sum = 1100 +4780 ns : 6 + 7 + 1 = 14 => carry = 0 sum = 1110 +4820 ns : 7 + 7 + 0 = 14 => carry = 0 sum = 1110 +4860 ns : 8 + 7 + 1 = 16 => carry = 1 sum = 0000 +4900 ns : 9 + 7 + 0 = 16 => carry = 1 sum = 0000 +4940 ns : 10 + 7 + 1 = 18 => carry = 1 sum = 0010 +4980 ns : 11 + 7 + 0 = 18 => carry = 1 sum = 0010 +5020 ns : 12 + 7 + 1 = 20 => carry = 1 sum = 0100 +5060 ns : 13 + 7 + 0 = 20 => carry = 1 sum = 0100 +5100 ns : 14 + 7 + 1 = 22 => carry = 1 sum = 0110 +5140 ns : 15 + 7 + 0 = 22 => carry = 1 sum = 0110 +5180 ns : 0 + 8 + 1 = 9 => carry = 0 sum = 1001 +5220 ns : 1 + 8 + 0 = 9 => carry = 0 sum = 1001 +5260 ns : 2 + 8 + 1 = 11 => carry = 0 sum = 1011 +5300 ns : 3 + 8 + 0 = 11 => carry = 0 sum = 1011 +5340 ns : 4 + 8 + 1 = 13 => carry = 0 sum = 1101 +5380 ns : 5 + 8 + 0 = 13 => carry = 0 sum = 1101 +5420 ns : 6 + 8 + 1 = 15 => carry = 0 sum = 1111 +5460 ns : 7 + 8 + 0 = 15 => carry = 0 sum = 1111 +5500 ns : 8 + 8 + 1 = 17 => carry = 1 sum = 0001 +5540 ns : 9 + 8 + 0 = 17 => carry = 1 sum = 0001 +5580 ns : 10 + 8 + 1 = 19 => carry = 1 sum = 0011 +5620 ns : 11 + 8 + 0 = 19 => carry = 1 sum = 0011 +5660 ns : 12 + 8 + 1 = 21 => carry = 1 sum = 0101 +5700 ns : 13 + 8 + 0 = 21 => carry = 1 sum = 0101 +5740 ns : 14 + 8 + 1 = 23 => carry = 1 sum = 0111 +5780 ns : 15 + 8 + 0 = 23 => carry = 1 sum = 0111 +5820 ns : 0 + 9 + 1 = 10 => carry = 0 sum = 1010 +5860 ns : 1 + 9 + 0 = 10 => carry = 0 sum = 1010 +5900 ns : 2 + 9 + 1 = 12 => carry = 0 sum = 1100 +5940 ns : 3 + 9 + 0 = 12 => carry = 0 sum = 1100 +5980 ns : 4 + 9 + 1 = 14 => carry = 0 sum = 1110 +6020 ns : 5 + 9 + 0 = 14 => carry = 0 sum = 1110 +6060 ns : 6 + 9 + 1 = 16 => carry = 1 sum = 0000 +6100 ns : 7 + 9 + 0 = 16 => carry = 1 sum = 0000 +6140 ns : 8 + 9 + 1 = 18 => carry = 1 sum = 0010 +6180 ns : 9 + 9 + 0 = 18 => carry = 1 sum = 0010 +6220 ns : 10 + 9 + 1 = 20 => carry = 1 sum = 0100 +6260 ns : 11 + 9 + 0 = 20 => carry = 1 sum = 0100 +6300 ns : 12 + 9 + 1 = 22 => carry = 1 sum = 0110 +6340 ns : 13 + 9 + 0 = 22 => carry = 1 sum = 0110 +6380 ns : 14 + 9 + 1 = 24 => carry = 1 sum = 1000 +6420 ns : 15 + 9 + 0 = 24 => carry = 1 sum = 1000 +6460 ns : 0 + 10 + 1 = 11 => carry = 0 sum = 1011 +6500 ns : 1 + 10 + 0 = 11 => carry = 0 sum = 1011 +6540 ns : 2 + 10 + 1 = 13 => carry = 0 sum = 1101 +6580 ns : 3 + 10 + 0 = 13 => carry = 0 sum = 1101 +6620 ns : 4 + 10 + 1 = 15 => carry = 0 sum = 1111 +6660 ns : 5 + 10 + 0 = 15 => carry = 0 sum = 1111 +6700 ns : 6 + 10 + 1 = 17 => carry = 1 sum = 0001 +6740 ns : 7 + 10 + 0 = 17 => carry = 1 sum = 0001 +6780 ns : 8 + 10 + 1 = 19 => carry = 1 sum = 0011 +6820 ns : 9 + 10 + 0 = 19 => carry = 1 sum = 0011 +6860 ns : 10 + 10 + 1 = 21 => carry = 1 sum = 0101 +6900 ns : 11 + 10 + 0 = 21 => carry = 1 sum = 0101 +6940 ns : 12 + 10 + 1 = 23 => carry = 1 sum = 0111 +6980 ns : 13 + 10 + 0 = 23 => carry = 1 sum = 0111 +7020 ns : 14 + 10 + 1 = 25 => carry = 1 sum = 1001 +7060 ns : 15 + 10 + 0 = 25 => carry = 1 sum = 1001 +7100 ns : 0 + 11 + 1 = 12 => carry = 0 sum = 1100 +7140 ns : 1 + 11 + 0 = 12 => carry = 0 sum = 1100 +7180 ns : 2 + 11 + 1 = 14 => carry = 0 sum = 1110 +7220 ns : 3 + 11 + 0 = 14 => carry = 0 sum = 1110 +7260 ns : 4 + 11 + 1 = 16 => carry = 1 sum = 0000 +7300 ns : 5 + 11 + 0 = 16 => carry = 1 sum = 0000 +7340 ns : 6 + 11 + 1 = 18 => carry = 1 sum = 0010 +7380 ns : 7 + 11 + 0 = 18 => carry = 1 sum = 0010 +7420 ns : 8 + 11 + 1 = 20 => carry = 1 sum = 0100 +7460 ns : 9 + 11 + 0 = 20 => carry = 1 sum = 0100 +7500 ns : 10 + 11 + 1 = 22 => carry = 1 sum = 0110 +7540 ns : 11 + 11 + 0 = 22 => carry = 1 sum = 0110 +7580 ns : 12 + 11 + 1 = 24 => carry = 1 sum = 1000 +7620 ns : 13 + 11 + 0 = 24 => carry = 1 sum = 1000 +7660 ns : 14 + 11 + 1 = 26 => carry = 1 sum = 1010 +7700 ns : 15 + 11 + 0 = 26 => carry = 1 sum = 1010 +7740 ns : 0 + 12 + 1 = 13 => carry = 0 sum = 1101 +7780 ns : 1 + 12 + 0 = 13 => carry = 0 sum = 1101 +7820 ns : 2 + 12 + 1 = 15 => carry = 0 sum = 1111 +7860 ns : 3 + 12 + 0 = 15 => carry = 0 sum = 1111 +7900 ns : 4 + 12 + 1 = 17 => carry = 1 sum = 0001 +7940 ns : 5 + 12 + 0 = 17 => carry = 1 sum = 0001 +7980 ns : 6 + 12 + 1 = 19 => carry = 1 sum = 0011 +8020 ns : 7 + 12 + 0 = 19 => carry = 1 sum = 0011 +8060 ns : 8 + 12 + 1 = 21 => carry = 1 sum = 0101 +8100 ns : 9 + 12 + 0 = 21 => carry = 1 sum = 0101 +8140 ns : 10 + 12 + 1 = 23 => carry = 1 sum = 0111 +8180 ns : 11 + 12 + 0 = 23 => carry = 1 sum = 0111 +8220 ns : 12 + 12 + 1 = 25 => carry = 1 sum = 1001 +8260 ns : 13 + 12 + 0 = 25 => carry = 1 sum = 1001 +8300 ns : 14 + 12 + 1 = 27 => carry = 1 sum = 1011 +8340 ns : 15 + 12 + 0 = 27 => carry = 1 sum = 1011 +8380 ns : 0 + 13 + 1 = 14 => carry = 0 sum = 1110 +8420 ns : 1 + 13 + 0 = 14 => carry = 0 sum = 1110 +8460 ns : 2 + 13 + 1 = 16 => carry = 1 sum = 0000 +8500 ns : 3 + 13 + 0 = 16 => carry = 1 sum = 0000 +8540 ns : 4 + 13 + 1 = 18 => carry = 1 sum = 0010 +8580 ns : 5 + 13 + 0 = 18 => carry = 1 sum = 0010 +8620 ns : 6 + 13 + 1 = 20 => carry = 1 sum = 0100 +8660 ns : 7 + 13 + 0 = 20 => carry = 1 sum = 0100 +8700 ns : 8 + 13 + 1 = 22 => carry = 1 sum = 0110 +8740 ns : 9 + 13 + 0 = 22 => carry = 1 sum = 0110 +8780 ns : 10 + 13 + 1 = 24 => carry = 1 sum = 1000 +8820 ns : 11 + 13 + 0 = 24 => carry = 1 sum = 1000 +8860 ns : 12 + 13 + 1 = 26 => carry = 1 sum = 1010 +8900 ns : 13 + 13 + 0 = 26 => carry = 1 sum = 1010 +8940 ns : 14 + 13 + 1 = 28 => carry = 1 sum = 1100 +8980 ns : 15 + 13 + 0 = 28 => carry = 1 sum = 1100 +9020 ns : 0 + 14 + 1 = 15 => carry = 0 sum = 1111 +9060 ns : 1 + 14 + 0 = 15 => carry = 0 sum = 1111 +9100 ns : 2 + 14 + 1 = 17 => carry = 1 sum = 0001 +9140 ns : 3 + 14 + 0 = 17 => carry = 1 sum = 0001 +9180 ns : 4 + 14 + 1 = 19 => carry = 1 sum = 0011 +9220 ns : 5 + 14 + 0 = 19 => carry = 1 sum = 0011 +9260 ns : 6 + 14 + 1 = 21 => carry = 1 sum = 0101 +9300 ns : 7 + 14 + 0 = 21 => carry = 1 sum = 0101 +9340 ns : 8 + 14 + 1 = 23 => carry = 1 sum = 0111 +9380 ns : 9 + 14 + 0 = 23 => carry = 1 sum = 0111 +9420 ns : 10 + 14 + 1 = 25 => carry = 1 sum = 1001 +9460 ns : 11 + 14 + 0 = 25 => carry = 1 sum = 1001 +9500 ns : 12 + 14 + 1 = 27 => carry = 1 sum = 1011 +9540 ns : 13 + 14 + 0 = 27 => carry = 1 sum = 1011 +9580 ns : 14 + 14 + 1 = 29 => carry = 1 sum = 1101 +9620 ns : 15 + 14 + 0 = 29 => carry = 1 sum = 1101 +9660 ns : 0 + 15 + 1 = 16 => carry = 1 sum = 0000 +9700 ns : 1 + 15 + 0 = 16 => carry = 1 sum = 0000 +9740 ns : 2 + 15 + 1 = 18 => carry = 1 sum = 0010 +9780 ns : 3 + 15 + 0 = 18 => carry = 1 sum = 0010 +9820 ns : 4 + 15 + 1 = 20 => carry = 1 sum = 0100 +9860 ns : 5 + 15 + 0 = 20 => carry = 1 sum = 0100 +9900 ns : 6 + 15 + 1 = 22 => carry = 1 sum = 0110 +9940 ns : 7 + 15 + 0 = 22 => carry = 1 sum = 0110 +9980 ns : 8 + 15 + 1 = 24 => carry = 1 sum = 1000 +10020 ns : 9 + 15 + 0 = 24 => carry = 1 sum = 1000 +10060 ns : 10 + 15 + 1 = 26 => carry = 1 sum = 1010 +10100 ns : 11 + 15 + 0 = 26 => carry = 1 sum = 1010 +10140 ns : 12 + 15 + 1 = 28 => carry = 1 sum = 1100 +10180 ns : 13 + 15 + 0 = 28 => carry = 1 sum = 1100 +10220 ns : 14 + 15 + 1 = 30 => carry = 1 sum = 1110 +10260 ns : 15 + 15 + 0 = 30 => carry = 1 sum = 1110 + +Info: /OSCI/SystemC: Simulation stopped by user. diff --git a/src/systemc/tests/systemc/misc/user_guide/chpt10.1/main.cpp b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/main.cpp new file mode 100644 index 000000000..58f54baf2 --- /dev/null +++ b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/main.cpp @@ -0,0 +1,70 @@ +/***************************************************************************** + + 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. + + *****************************************************************************/ + +/***************************************************************************** + + main.cpp -- + + Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +/* Main file for parametric adder simulation */ + +#include "paramadd.h" +#include "stim.h" + +int sc_main(int ac, char *av[]) +{ + // Parameter Settings + int width = 4; + + // Signal Instantiation + sc_signal<bool> reset; + signal_bool_vector a ("Operand1"); + signal_bool_vector b ("Operand2"); + sc_signal<bool> cin; + sc_signal<bool> ready; + signal_bool_vector sum ("Sum"); + sc_signal<bool> co; + sc_signal<bool> done; + + // Clock Instantiation + sc_clock clk ("Clock", 10, SC_NS, 0.5, 0, SC_NS); + + // Process Instantiation + paramadd D1("D1", clk, reset, a, b, cin, ready, sum, + co, done, width); + stim T1("T1", clk, done, reset, a, b, cin, + ready, width); + + // Simulation Run Control + sc_start(); + return 0; +} diff --git a/src/systemc/tests/systemc/misc/user_guide/chpt10.1/paramadd.cpp b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/paramadd.cpp new file mode 100644 index 000000000..7be025c2c --- /dev/null +++ b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/paramadd.cpp @@ -0,0 +1,89 @@ +/***************************************************************************** + + 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. + + *****************************************************************************/ + +/***************************************************************************** + + paramadd.cpp -- + + Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +/* Filename paramadd.cc */ +/* This is the implementation file for synchronous process `paramadd' */ + +#include "paramadd.h" + +void paramadd::entry() +{ + sc_biguint<5> sum1; + sc_unsigned a1(data_width); + sc_unsigned b1(data_width); + bool c1; + + // Reset handler + sum.write(0); + co.write(0); + wait(); + + while(true) { // Main Loop + + // HANDSHAKE + done.write(0); + do { wait(); } while (ready != 1); + + // COMPUTATION + a1 = a.read(); + b1 = b.read(); + c1 = cin.read(); + + sum1 = a1 + b1 + c1; + + // sum.write( sum1.range(data_width-1,0) ); + sc_unsigned tmp( data_width ); + tmp = sum1.range( data_width - 1, 0 ); + sum.write( tmp ); + co.write( sum1[data_width] ); + wait( 2 ); + + cout << sc_time_stamp() << "\t : " + << a1 << " + " + << b1 << " + " + << cin << " = " << sum1 + << "\t => carry = " << co + << " sum = " << sum + << endl; + + + // HANDSHAKE + done.write(1); + wait(); + } +} + diff --git a/src/systemc/tests/systemc/misc/user_guide/chpt10.1/paramadd.h b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/paramadd.h new file mode 100644 index 000000000..b9c681f1a --- /dev/null +++ b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/paramadd.h @@ -0,0 +1,86 @@ +/***************************************************************************** + + 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. + + *****************************************************************************/ + +/***************************************************************************** + + paramadd.h -- + + Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +/* Filename paramadd.h */ +/* Interface file for synchronous process `paramadd' */ + +#include "common.h" + +SC_MODULE( paramadd ) +{ + SC_HAS_PROCESS( paramadd ); + + sc_in_clk clk; + + // Inputs + const sc_signal<bool>& reset; + const signal_bool_vector& a; + const signal_bool_vector& b; + const sc_signal<bool>& cin; + const sc_signal<bool>& ready; + // Outputs + signal_bool_vector& sum; + sc_signal<bool>& co; + sc_signal<bool>& done; + // Parameters + const int data_width; + + // Constructor + paramadd(sc_module_name NAME, + sc_clock& TICK, + const sc_signal<bool>& RESET, + const signal_bool_vector& A, + const signal_bool_vector& B, + const sc_signal<bool>& CIN, + const sc_signal<bool>& READY, + signal_bool_vector& SUM, + sc_signal<bool>& CO, + sc_signal<bool>& DONE, + const int DATA_WIDTH = 8) + : reset(RESET), a(A), + b(B), cin(CIN), ready(READY), + sum(SUM), co(CO), done(DONE), + data_width(DATA_WIDTH) + { + clk(TICK); + SC_CTHREAD( entry, clk.pos() ); + reset_signal_is(reset,false); + } + + // Process functionality in member function below + void entry(); +}; diff --git a/src/systemc/tests/systemc/misc/user_guide/chpt10.1/stim.cpp b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/stim.cpp new file mode 100644 index 000000000..a7a285d66 --- /dev/null +++ b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/stim.cpp @@ -0,0 +1,83 @@ +/***************************************************************************** + + 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. + + *****************************************************************************/ + +/***************************************************************************** + + stim.cpp -- + + Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +/* Filename stim.cc */ +/* This is the interface file for synchronous process `stim' */ + +#include "stim.h" + +void stim::entry() +{ + // Variable definition + sc_unsigned a_tmp(data_width); + sc_unsigned b_tmp(data_width); + bool c_tmp; + int i, j; + + // Reset handler + reset.write(0); + wait(2); + + reset.write(1); + wait(); + cout << sc_time_stamp() << "\t : " + << "RESET off \t...by stim" << endl; + + // Stimulus Generation + c_tmp = 0; + for (i=0; i<16; i++) { + for (j=0; j<16; j++) { + a_tmp = j; + b_tmp = i; + c_tmp = !c_tmp; + + a.write(a_tmp); + b.write(b_tmp); + cin.write(c_tmp); + + ready.write(1); + // wait(); + do { wait(); } while (done != 1); + + ready.write(0); + // do { wait(); } while (done == 1); + wait(); + } + } + + sc_stop(); +} diff --git a/src/systemc/tests/systemc/misc/user_guide/chpt10.1/stim.h b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/stim.h new file mode 100644 index 000000000..a34ab8578 --- /dev/null +++ b/src/systemc/tests/systemc/misc/user_guide/chpt10.1/stim.h @@ -0,0 +1,81 @@ +/***************************************************************************** + + 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. + + *****************************************************************************/ + +/***************************************************************************** + + stim.h -- + + Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +/* Filename stim.h */ +/* This is the interface file for synchronous process `stim' */ + +#include "common.h" + +SC_MODULE( stim ) +{ + SC_HAS_PROCESS( stim ); + + sc_in_clk clk; + + // Inputs + const sc_signal<bool>& done; + // Outputs + sc_signal<bool>& reset; + signal_bool_vector& a; + signal_bool_vector& b; + sc_signal<bool>& cin; + sc_signal<bool>& ready; + // Parameters + const int data_width; + + // Constructor + stim (sc_module_name NAME, + sc_clock& TICK, + const sc_signal<bool>& DONE, + sc_signal<bool>& RESET, + signal_bool_vector& A, + signal_bool_vector& B, + sc_signal<bool>& CIN, + sc_signal<bool>& READY, + const int DATA_WIDTH = 8) + : done(DONE), reset(RESET), + a(A),b(B), cin(CIN), + ready(READY), + data_width(DATA_WIDTH) + { + clk(TICK); + SC_CTHREAD( entry, clk.neg() ); + } + + // Process functionality in member function below + void entry(); +}; |