ram.cpp revision 12855:588919e0e4aa
19100SBrad.Beckmann@amd.com/***************************************************************************** 29100SBrad.Beckmann@amd.com 39100SBrad.Beckmann@amd.com Licensed to Accellera Systems Initiative Inc. (Accellera) under one or 49100SBrad.Beckmann@amd.com more contributor license agreements. See the NOTICE file distributed 59100SBrad.Beckmann@amd.com with this work for additional information regarding copyright ownership. 69100SBrad.Beckmann@amd.com Accellera licenses this file to you under the Apache License, Version 2.0 79100SBrad.Beckmann@amd.com (the "License"); you may not use this file except in compliance with the 89100SBrad.Beckmann@amd.com License. You may obtain a copy of the License at 99100SBrad.Beckmann@amd.com 109100SBrad.Beckmann@amd.com http://www.apache.org/licenses/LICENSE-2.0 119100SBrad.Beckmann@amd.com 129100SBrad.Beckmann@amd.com Unless required by applicable law or agreed to in writing, software 139100SBrad.Beckmann@amd.com distributed under the License is distributed on an "AS IS" BASIS, 149100SBrad.Beckmann@amd.com WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 159100SBrad.Beckmann@amd.com implied. See the License for the specific language governing 169100SBrad.Beckmann@amd.com permissions and limitations under the License. 179100SBrad.Beckmann@amd.com 189100SBrad.Beckmann@amd.com *****************************************************************************/ 199100SBrad.Beckmann@amd.com 209100SBrad.Beckmann@amd.com/***************************************************************************** 219100SBrad.Beckmann@amd.com 229100SBrad.Beckmann@amd.com ram.cpp -- 239100SBrad.Beckmann@amd.com 249100SBrad.Beckmann@amd.com Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 259100SBrad.Beckmann@amd.com 269100SBrad.Beckmann@amd.com *****************************************************************************/ 279100SBrad.Beckmann@amd.com 289100SBrad.Beckmann@amd.com/***************************************************************************** 2913774Sandreas.sandberg@arm.com 3013774Sandreas.sandberg@arm.com MODIFICATION LOG - modifiers, enter your name, affiliation, date and 319100SBrad.Beckmann@amd.com changes you are making here. 3213774Sandreas.sandberg@arm.com 339100SBrad.Beckmann@amd.com Name, Affiliation, Date: 349100SBrad.Beckmann@amd.com Description of Modification: 359100SBrad.Beckmann@amd.com 369100SBrad.Beckmann@amd.com *****************************************************************************/ 379100SBrad.Beckmann@amd.com 389100SBrad.Beckmann@amd.com/* Filename ram.cc */ 399100SBrad.Beckmann@amd.com/* This is the implementation file for asynchronous process `ram' */ 409100SBrad.Beckmann@amd.com 419100SBrad.Beckmann@amd.com#include "ram.h" 429100SBrad.Beckmann@amd.com 439100SBrad.Beckmann@amd.comextern int global_mem[]; 449100SBrad.Beckmann@amd.com 459100SBrad.Beckmann@amd.comvoid ram::entry() 469100SBrad.Beckmann@amd.com{ 479100SBrad.Beckmann@amd.com int address; 489100SBrad.Beckmann@amd.com 499100SBrad.Beckmann@amd.com if (cs.read() == true) { // Block selected 509100SBrad.Beckmann@amd.com address = addr.read().to_int(); 519100SBrad.Beckmann@amd.com if (we.read() == true) { // Write operation 529100SBrad.Beckmann@amd.com global_mem[address] = datain.read().to_int(); 539100SBrad.Beckmann@amd.com } 549100SBrad.Beckmann@amd.com else { // Read operation 559100SBrad.Beckmann@amd.com dataout.write(global_mem[address]); 569100SBrad.Beckmann@amd.com } 579100SBrad.Beckmann@amd.com } 589100SBrad.Beckmann@amd.com // else block not selected 599100SBrad.Beckmann@amd.com} // end of entry function 609100SBrad.Beckmann@amd.com 619100SBrad.Beckmann@amd.com