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