view modules/bluespec/Pygar/lab4/BRegFile.bsv @ 17:9d1f38722f5b pygar svn.18

[svn r18] changed config file to not use mit-6.375 anymore
author rlm
date Tue, 27 Apr 2010 22:55:55 -0400
parents 74716e9a81cc
children 52f9a257c2ba
line wrap: on
line source
1 import RegFile::*;
2 import RWire::*;
3 import ProcTypes::*;
5 //-----------------------------------------------------------
6 // Register file module
7 //-----------------------------------------------------------
9 interface BRegFile #(type index_t, type data_t);
10 method Action upd(index_t addr, data_t data);
11 method data_t sub(index_t addr);
12 endinterface
14 module mkBRegFile(RegFile#(index_t, data_t))
15 provisos (Bits#(index_t, size_index),
16 Bits#(data_t, size_data),
17 Eq#(index_t),
18 Bounded#(index_t) );
20 RegFile#(index_t, data_t) rf <- mkRegFileWCF(minBound, maxBound);
21 RWire#(Tuple2#(index_t, data_t)) rw <-mkRWire();
23 method Action upd (index_t r, data_t d);
24 rf.upd(r,d);
25 rw.wset(tuple2(r,d));
26 endmethod
28 method data_t sub (index_t r);
29 case (rw.wget()) matches
30 tagged Valid {.wr, .d} :
31 return (wr == r) ? d : rf.sub(r);
32 tagged Invalid : return rf.sub(r);
33 endcase
34 endmethod
36 endmodule