/***************************************************************************** The following code is derived, directly or indirectly, from the SystemC source code Copyright (c) 1996-2001 by all Contributors. All Rights reserved. The contents of this file are subject to the restrictions and limitations set forth in the SystemC Open Source License Version 2.2 (the "License"); You may not use this file except in compliance with such restrictions and limitations. You may obtain instructions on how to receive a copy of the License at http://www.systemc.org/. Software distributed by Contributors under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. *****************************************************************************/ /***************************************************************************** main.cpp -- This is the top level file instantiating the modules and binding ports to signals. Original Author: Amit Rao, Synopsys, Inc. *****************************************************************************/ /***************************************************************************** MODIFICATION LOG - modifiers, enter your name, affiliation, date and changes you are making here. Name, Affiliation, Date: Description of Modification: *****************************************************************************/ #include "systemc.h" #include "stage1.h" #include "stage2.h" #include "stage3.h" #include "display.h" #include "numgen.h" #define NS * 1e-9 int sc_main(int ac, char *av[]) { //Signals sc_signal in1; sc_signal in2; sc_signal sum; sc_signal diff; sc_signal prod; sc_signal quot; sc_signal powr; //Clock sc_clock clk("my_clock", 20, 0.5); // Trace sc_trace_file *tr; tr = sc_create_vcd_trace_file("trace"); sc_trace(tr, in1, "in1"); sc_trace(tr, in2, "in2"); sc_trace(tr, sum, "sum"); sc_trace(tr, diff, "diff"); sc_trace(tr, prod, "prod"); sc_trace(tr, quot, "quot"); sc_trace(tr, powr, "powr"); numgen N("numgen"); //instance of `numgen' module N(in1, in2, clk ); //Positional port binding stage1 S1("stage1"); //instance of `stage1' module //Named port binding S1.in1(in1); S1.in2(in2); S1.sum(sum); S1.diff(diff); S1.clk(clk); stage2 S2("stage2"); //instance of `stage2' module S2(sum, diff, prod, quot, clk ); //Positional port binding stage3 S3("stage3"); //instance of `stage3' module S3( prod, quot, powr, clk); //Positional port binding display D("display"); //instance of `display' module D(powr, clk); //Positional port binding // sc_initialize(); //Initialize simulation // for(int i = 0; i < 50; i++){ // clk.write(1); // sc_cycle( 10 NS ); // clk.write(0); // sc_cycle( 10 NS ); // } sc_start(200); sc_close_vcd_trace_file(tr); return 0; }