ram.cpp revision 12855:588919e0e4aa
110981SBrad.Beckmann@amd.com/*****************************************************************************
210981SBrad.Beckmann@amd.com
310981SBrad.Beckmann@amd.com  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
410981SBrad.Beckmann@amd.com  more contributor license agreements.  See the NOTICE file distributed
510981SBrad.Beckmann@amd.com  with this work for additional information regarding copyright ownership.
610981SBrad.Beckmann@amd.com  Accellera licenses this file to you under the Apache License, Version 2.0
710981SBrad.Beckmann@amd.com  (the "License"); you may not use this file except in compliance with the
810981SBrad.Beckmann@amd.com  License.  You may obtain a copy of the License at
910981SBrad.Beckmann@amd.com
1010981SBrad.Beckmann@amd.com    http://www.apache.org/licenses/LICENSE-2.0
1110981SBrad.Beckmann@amd.com
1210981SBrad.Beckmann@amd.com  Unless required by applicable law or agreed to in writing, software
1310981SBrad.Beckmann@amd.com  distributed under the License is distributed on an "AS IS" BASIS,
1410981SBrad.Beckmann@amd.com  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
1510981SBrad.Beckmann@amd.com  implied.  See the License for the specific language governing
1610981SBrad.Beckmann@amd.com  permissions and limitations under the License.
1710981SBrad.Beckmann@amd.com
1810981SBrad.Beckmann@amd.com *****************************************************************************/
1910981SBrad.Beckmann@amd.com
2010981SBrad.Beckmann@amd.com/*****************************************************************************
2110981SBrad.Beckmann@amd.com
2210981SBrad.Beckmann@amd.com  ram.cpp --
2310981SBrad.Beckmann@amd.com
2410981SBrad.Beckmann@amd.com  Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15
2510981SBrad.Beckmann@amd.com
2610981SBrad.Beckmann@amd.com *****************************************************************************/
2710981SBrad.Beckmann@amd.com
2810981SBrad.Beckmann@amd.com/*****************************************************************************
2910981SBrad.Beckmann@amd.com
3010981SBrad.Beckmann@amd.com  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
3110981SBrad.Beckmann@amd.com  changes you are making here.
3210981SBrad.Beckmann@amd.com
3310981SBrad.Beckmann@amd.com      Name, Affiliation, Date:
3410981SBrad.Beckmann@amd.com  Description of Modification:
3510981SBrad.Beckmann@amd.com
3610981SBrad.Beckmann@amd.com *****************************************************************************/
3710981SBrad.Beckmann@amd.com
3810981SBrad.Beckmann@amd.com/* Filename ram.cc */
3910981SBrad.Beckmann@amd.com/* This is the implementation file for asynchronous process `ram' */
4010981SBrad.Beckmann@amd.com
41#include "ram.h"
42
43void ram::entry()
44{
45  int address;
46
47  while (true) {
48    do { wait(); } while (cs != true);
49    address = addr.read().to_int();
50    if (we.read() == true) { // Write operation
51      wait(wait_cycles-1);
52      memory[address] = datain.read().to_int();
53    }
54    else { // Read operation
55      if (wait_cycles > 2)
56	wait(wait_cycles-2); // Introduce delay needed
57      dataout.write(memory[address]);
58      wait();
59    }
60  }
61} // end of entry function
62
63