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