<@U0172QZ342D> Hi, Should I assume there is no sup...
# openlane
t
@User Hi, Should I assume there is no support of register retiming in Yosys?
m
I don't know what that means, can you explain?
t
Register retiming is a common technique in commercial synthesis tools. In a nutshell, it is ability of tool to move FFs (in a pipelined design) forward or backward in order to balance the stage delays.
h
You can use the synthesis exploration mode in Openlane to choose the best synthesis strategy for your design. Openlane predefines 6 strategies. Some are for timing optimization, some are for area optimization. For reg retiming, I have no idea.
m
But it doesn't do register retiming AFAIK
k
Afaik I recall abc having a retime and relut option here: http://www.clifford.at/yosys/cmd_synth_ice40.html Not sure if applicable but hopefully this helps.
👍 1
t
A small dive into ABC codebase asserted that it does support retiming. But openlane's flow does not, I will however experiment and report. Thanks @Kevin Dai
👍 2
k
Though you can (I think) run the flow with -dff passed to abc additionally. I've never tried and can't comment on if it'll work.
r
nice, this would be cool. Enables my lazier coding
😂 1
t
retime is used in provided flow, but somehow it is not pushing any register a bit. I will do rigorous testing after 18th.
r
maybe the specified clock rates are not pushing the tools to do it
t
I actually changed the clock rate to make it push. From the source code of ABC, it us able to move registers forward and backward, but how, I still do not know. However, I have dumped blif for later experiments.
m
Hi! I am also curious about register retiming and was wondering what the current status is in terms of the openlane flow supporting it? I have been playing around with the SYNTH_STRATEGY config variable, but when using DELAY 0, I got the error
ABC: *Error*: The network is combinational.
Based on this issue: https://github.com/The-OpenROAD-Project/OpenLane/issues/173 it seems that this means that the circuit is not being passed in as a sequential circuit which would mean that retiming does not actually occur? It also seems like I would need to pass in -dff to abc somehow, but I'm not sure how to go about doing that. I am very new to using these tools (and the ASIC flow in general) so let me know if I'm missing something or if my understanding is incorrect!