我看到由Chisel发出的下列FIRRTL代码:
cmem mem : SInt<64>[8]和
infer mport _T = mem[io.address], clock注意:我的内存对象名为"mem“。
但是,在firrtl 1.5.2规范中,术语"cmem“、"infer”和"mport“不出现。
谁来解释一下这些术语。更好的是,是否有一些我不知道的规范解释了他们?
发布于 2022-04-01 05:14:33
这些是"CHIRRTL“的特点--一个略高于FIRRTL的级别IR,有助于弥合Chisel和FIRRTL之间的差距。这些都没有记录在FIRRTL规范中,但它们应该是。
有三个构造:
cmem,它声明一个组合读存储器。这将映射到具有读取延迟0的FIRRTL内存和声明顺序读取内存的写延迟1.smem。这将映射到具有读取延迟1的FIRRTL内存和写入延迟1.write/read/infer mport,后者声明的内存端口是读端口、写端口,或者将被推断为读或写。这些映射与Chiel的Mem (cmem)和SyncReadMem (smem)结构密切相关。
FIRRTL编译器首先要做的事情之一是移除这些结构并将它们转换为FIRRTL内存,方法是计算它有多少端口,每个端口的时钟/启用数是多少,以及端口是否是读、写或读/写端口。
有关这方面的现有最佳文档是CIRCT的文档:https://circt.llvm.org/docs/RationaleFIRRTL/#chirrtl-memories
https://stackoverflow.com/questions/71701951
复制相似问题