method_self_reset.cpp revision 12855:588919e0e4aa
114126Schunchenhsu@google.com/***************************************************************************** 214126Schunchenhsu@google.com 314126Schunchenhsu@google.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 414126Schunchenhsu@google.com more contributor license agreements. See the NOTICE file distributed 514126Schunchenhsu@google.com with this work for additional information regarding copyright ownership. 614126Schunchenhsu@google.com Accellera licenses this file to you under the Apache License, Version 2.0 714126Schunchenhsu@google.com (the "License"); you may not use this file except in compliance with the 814126Schunchenhsu@google.com License. You may obtain a copy of the License at 914126Schunchenhsu@google.com 1014126Schunchenhsu@google.com http://www.apache.org/licenses/LICENSE-2.0 1114126Schunchenhsu@google.com 1214126Schunchenhsu@google.com Unless required by applicable law or agreed to in writing, software 1314126Schunchenhsu@google.com distributed under the License is distributed on an "AS IS" BASIS, 1414126Schunchenhsu@google.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 1514126Schunchenhsu@google.com implied. See the License for the specific language governing 1614126Schunchenhsu@google.com permissions and limitations under the License. 1714126Schunchenhsu@google.com 1814126Schunchenhsu@google.com *****************************************************************************/ 1914126Schunchenhsu@google.com 2014126Schunchenhsu@google.com/***************************************************************************** 2114126Schunchenhsu@google.com 2214126Schunchenhsu@google.com method_self_reset.cpp -- Test of method self reset. 2314126Schunchenhsu@google.com 2414126Schunchenhsu@google.com Original Author: Andy Goodrich 2514126Schunchenhsu@google.com 2614126Schunchenhsu@google.com *****************************************************************************/ 2714126Schunchenhsu@google.com// $Log: method_self_reset.cpp,v $ 2814126Schunchenhsu@google.com// Revision 1.4 2011/07/24 15:59:53 acg 2914126Schunchenhsu@google.com// Andy Goodrich: add statement I missed installing Philipp's patch. 3014126Schunchenhsu@google.com// 3114126Schunchenhsu@google.com// Revision 1.3 2011/07/24 15:58:39 acg 3214126Schunchenhsu@google.com// Philipp A. Hartmann: convert first time toggle to counter since need 3 3314126Schunchenhsu@google.com// states. 3414126Schunchenhsu@google.com// 3514126Schunchenhsu@google.com// Revision 1.2 2011/02/04 15:26:33 acg 3614126Schunchenhsu@google.com// Andy Goodrich: regolden for proper process control semantics. 3714126Schunchenhsu@google.com// 3814126Schunchenhsu@google.com// Revision 1.1 2011/01/28 19:48:36 acg 3914126Schunchenhsu@google.com// Andy Goodrich: first check in. 4014126Schunchenhsu@google.com// 4114126Schunchenhsu@google.com 4214126Schunchenhsu@google.com#include "systemc.h" 4314126Schunchenhsu@google.com 4414126Schunchenhsu@google.comSC_MODULE(DUT) 4514126Schunchenhsu@google.com{ 4614126Schunchenhsu@google.com SC_CTOR(DUT) 4714126Schunchenhsu@google.com { 4814126Schunchenhsu@google.com SC_METHOD(method); 4914126Schunchenhsu@google.com sensitive << m_clk.pos(); 5014126Schunchenhsu@google.com } 5114126Schunchenhsu@google.com void method() 5214126Schunchenhsu@google.com { 5314126Schunchenhsu@google.com static int trigger = 0; 5414126Schunchenhsu@google.com cout << "Entry " << endl; 5514126Schunchenhsu@google.com switch( trigger++ ) 5614126Schunchenhsu@google.com { 5714126Schunchenhsu@google.com case 0: 5814126Schunchenhsu@google.com cout << "Issuing self reset " << endl; 5914126Schunchenhsu@google.com sc_get_current_process_handle().reset(); 6014126Schunchenhsu@google.com sc_assert( false ); 6114126Schunchenhsu@google.com case 1: 6214126Schunchenhsu@google.com break; 6314126Schunchenhsu@google.com default: 6414126Schunchenhsu@google.com trigger = 0; 6514126Schunchenhsu@google.com } 6614126Schunchenhsu@google.com cout << "Exit " << endl; 6714126Schunchenhsu@google.com } 6814126Schunchenhsu@google.com sc_in<bool> m_clk; 6914126Schunchenhsu@google.com}; 7014126Schunchenhsu@google.com 7114126Schunchenhsu@google.comint sc_main(int argc, char* argv[]) 7214126Schunchenhsu@google.com{ 7314126Schunchenhsu@google.com sc_clock clock; 7414126Schunchenhsu@google.com DUT dut("dut"); 7514126Schunchenhsu@google.com 7614126Schunchenhsu@google.com dut.m_clk(clock); 7714126Schunchenhsu@google.com 7814126Schunchenhsu@google.com sc_start(3, SC_NS); 7914126Schunchenhsu@google.com 8014126Schunchenhsu@google.com cout << "Program completed" << endl; 8114126Schunchenhsu@google.com return 0; 8214126Schunchenhsu@google.com} 8314126Schunchenhsu@google.com