Mercurial > pygar
view modules/bluespec/Pygar/lab4/BRegFile.bsv @ 19:9910c032f38d pygar svn.20
[svn r20] fixed some random reference errot
author | rlm |
---|---|
date | Tue, 27 Apr 2010 23:31:38 -0400 |
parents | 74716e9a81cc |
children | 52f9a257c2ba |
line wrap: on
line source
1 import RegFile::*;2 import RWire::*;3 import ProcTypes::*;5 //-----------------------------------------------------------6 // Register file module7 //-----------------------------------------------------------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 endinterface14 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 endmethod28 method data_t sub (index_t r);29 case (rw.wget()) matches30 tagged Valid {.wr, .d} :31 return (wr == r) ? d : rf.sub(r);32 tagged Invalid : return rf.sub(r);33 endcase34 endmethod36 endmodule