1
0

tilelink2: clarify use of Isolation

This commit is contained in:
Wesley W. Terpstra 2016-10-07 15:01:47 -07:00
parent 76388117bb
commit 97af07eb3e

View File

@ -6,6 +6,7 @@ import Chisel._
import chisel3.internal.sourceinfo.SourceInfo import chisel3.internal.sourceinfo.SourceInfo
import diplomacy._ import diplomacy._
// READ the comments in the TLIsolation object before you instantiate this module
class TLIsolation(fOut: (Bool, UInt) => UInt, fIn: (Bool, UInt) => UInt) extends LazyModule class TLIsolation(fOut: (Bool, UInt) => UInt, fIn: (Bool, UInt) => UInt) extends LazyModule
{ {
val node = TLAsyncIdentityNode() val node = TLAsyncIdentityNode()
@ -67,9 +68,10 @@ class TLIsolation(fOut: (Bool, UInt) => UInt, fIn: (Bool, UInt) => UInt) extends
object TLIsolation object TLIsolation
{ {
// applied to the TL source node; y.node := TLIsolation(fOut, fIn)(x.node) // applied to the TL source node; y.node := TLIsolation(fOut, fIn)(x.node)
// f should insert an isolation gate between the input UInt and its result // f* should insert an isolation gate between the input UInt and its result
// fOut is applied for data flowing from client to manager // fOut is applied to data flowing from client to manager
// fIn is applied for data flowing from manager to client // fIn is applied to data flowing from manager to client
// **** WARNING: the isolation functions must bring the values to 0 ****
def apply(fOut: (Bool, UInt) => UInt, fIn: (Bool, UInt) => UInt)(x: TLAsyncOutwardNode)(implicit sourceInfo: SourceInfo): (TLAsyncOutwardNode, () => (Bool, Bool)) = { def apply(fOut: (Bool, UInt) => UInt, fIn: (Bool, UInt) => UInt)(x: TLAsyncOutwardNode)(implicit sourceInfo: SourceInfo): (TLAsyncOutwardNode, () => (Bool, Bool)) = {
val iso = LazyModule(new TLIsolation(fOut, fIn)) val iso = LazyModule(new TLIsolation(fOut, fIn))
iso.node := x iso.node := x