如何在 Chisel 中制作透明闩锁?

How do you make a transparent latch in Chisel?

这是我最好的猜测,但看起来生成的行为 Verilog 在合成时不会产生简单的透明锁存器:

// DXP Latch
val dxp = config(2) & config(0)
val latch = Reg( lut.io.out )
val out = Mux( dxp, latch, lut.io.out ) 

我很欣赏你的想法。

Chisel 不支持闩锁。 Reg() 只会生成边沿触发的状态元素。

如果您真的想要锁存器,则必须修改 Chisel 的后端以理解新的 Latch() 构造并生成适当的 Verilog。然而,这会让你陷入一个漫长的困难之中,第一个困难是你可能会放弃同步的、边沿触发的时序模型(它允许像 C++ 模拟器这样的东西工作)。

根据我们的经验,任何需要锁存器某些属性的关键应用程序都将由综合工具自动处理(如时间借用)。