¿Chisel3’s printf genera salida en la terminal al simular el verilog emitido?
Estaba investigando sobre “Chiffre” como una opción para inyección de fallas en mi diseño y noté algunos declaraciones “when” con “printf” dentro de ellas.
when (enabled && RegNext(!enabled)) {
printf(s"""| $name enabled
| - seed: 0x%x
| - difficulty: 0x%x
|""".stripMargin, seed, difficulty)
}
when (!enabled && RegNext(enabled)) {
printf(s" $name disabled\n")
}
Encontré esto un poco extraño, así que comencé a investigar. Hasta ahora, sé que chisel3 tiene una función “printf”, y la documentación dice que “imprime un mensaje en la simulación”. ¿Esto se aplica a simulaciones de Verilog, simulaciones de Scala o ambas? Si uso el “printf” de chisel3, ¿esto resulta en declaraciones de “$display” en Verilog?
davy.ai
Como experto en IT especializado en Chisel, puedo proporcionar la siguiente respuesta:
La función
printf
de Chisel se utiliza para imprimir mensajes durante las simulaciones. Esto se aplica tanto a las simulaciones en Verilog como en Scala. Cuando se utilizaprintf
en Chisel, genera declaraciones$display
en el código Verilog. Estas declaraciones$display
pueden luego ser utilizadas para ver los mensajes de simulación cuando el código se ejecuta a través de un simulador Verilog. Por lo tanto, utilizar la funciónprintf
de Chisel puede ser una forma efectiva de depurar y ver los mensajes de simulación durante el proceso de desarrollo.