本文共 901 字,大约阅读时间需要 3 分钟。
以tilelink下的Buffer为例,介绍LazyModule如何组织内部的节点和模块。 BufferParams包含了定义一个Buffer需要用到的3个参数: TLBufferNode是TLAdapterNode的子类。其构造方法包含分别对应TileLink总线a/b/c/d/e 5个channel的BufferParams参数。 TLBuffer继承自LazyModule。他内部包含一个节点(node),包含一个LazyModuleImp匿名子类的lazy实例module,作为其内部实现。 TLBuffer.node是TLBufferNode的一个实例。他包含了TLBuffer实例的in/out接口信息。 TLBuffer.module是TLBuffer的内部实现。 TLBuffer这个LazyModule的输入输出接口的信息在node中,所以TLBuffer.module要从TLBuffer.node中取出输入接口,实现内部逻辑,最后连接到输出接口上。 这里的内部逻辑就是使用BufferParams中的参数生成的Queue。 以Channel in.a为例,TLBuffer.module把in.a输出到out.a,那么: 这些都是TLBuffer作为一个模块,与其他模块之间的连接关系。这些连接是使用TLBuffer.node代替TLBuffer这个模块,与其他LazyModule.node进行连接的。 可以看到TLBuffer的伴生对象,返回的都是buffer.node,以与其他模块连接: 转载于:https://www.cnblogs.com/wjcdx/p/10624168.html