[libre-riscv-dev] Rough timing estimate in yosys

Michael Nolan mtnolan2640 at gmail.com
Mon May 18 15:11:30 BST 2020


With all the work going on designing functional units, I was wondering 
if there was a way to get a rough estimate of the maximum frequency a 
module can run at. I can get the longest path from running yosys -p 
"read_ilang module.il; synth; ltp", but that just prints out the cells 
between register A and register B. I realize that the actual timing is 
going to depend on layout, but is there a way to get a rough estimate, 
say by passing in a cell library or just a rule of thumb of ~500ps per cell?


On a semi-related note, running ltp on a pipeline shows that there's a 
bunch of loops.

 From running synth and ltp on the logical pipeline:

Warning: Detected loop at \stage_o$next [63] in pipe
Warning: Detected loop at \stage_o$next [62] in pipe
Warning: Detected loop at \stage_o$next [61] in pipe
Warning: Detected loop at \stage_o$next [60] in pipe
Warning: Detected loop at \stage_o$next [59] in pipe
Warning: Detected loop at \stage_o$next [58] in pipe
Warning: Detected loop at \stage_o$next [57] in pipe
Warning: Detected loop at \stage_o$next [56] in pipe
Warning: Detected loop at \stage_o$next [55] in pipe
Warning: Detected loop at \stage_o$next [54] in pipe
Warning: Detected loop at \stage_o$next [53] in pipe
Warning: Detected loop at \stage_o$next [52] in pipe
Warning: Detected loop at \stage_o$next [51] in pipe
Warning: Detected loop at \stage_o$next [50] in pipe
Warning: Detected loop at \stage_o$next [49] in pipe
Warning: Detected loop at \stage_o$next [48] in pipe
Warning: Detected loop at \stage_o$next [47] in pipe
Warning: Detected loop at \stage_o$next [46] in pipe

Is this supposed to happen?

--Michael




More information about the libre-riscv-dev mailing list