* [libre-riscv-dev] Rough timing estimate in yosys
@ 2020-05-18 14:11 Michael Nolan
2020-05-18 15:05 ` Luke Kenneth Casson Leighton
0 siblings, 1 reply; 3+ messages in thread
From: Michael Nolan @ 2020-05-18 14:11 UTC (permalink / raw)
To: Libre-RISCV General Development
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
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [libre-riscv-dev] Rough timing estimate in yosys
2020-05-18 14:11 [libre-riscv-dev] Rough timing estimate in yosys Michael Nolan
@ 2020-05-18 15:05 ` Luke Kenneth Casson Leighton
2020-05-18 15:52 ` Luke Kenneth Casson Leighton
0 siblings, 1 reply; 3+ messages in thread
From: Luke Kenneth Casson Leighton @ 2020-05-18 15:05 UTC (permalink / raw)
To: Libre-RISCV General Development
On Monday, May 18, 2020, Michael Nolan <mtnolan2640@gmail.com> wrote:
> 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.
oh, good. that's a useful discovery.
> 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?
i believe it is calculated based on the switching time of a given
transistor, at both the geometry, and also a given voltage.
a chain of such transistors is then multiplied by the longest path.
at the speeds we are doing, speed of light is not a major factor: it will
be however at 28nm or below.
also affecting the switching time is the fanout. if one gate tries to
drive 200 clearly this will either fail or just take a hell of a long time.
to solve that, buffers must be inserted into the line and of course those
also add switching delay.
>
> 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
hmm i do not know.
we are doing an design where the registers can be held until acknowledged
by ready/valid signalling: it's possible that the storage of the register
is interpreted as "a loop".
can you raise a bugreport about it so thatbit can be investigated? mention
that a small unit test should be made.
l.
--
---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, back to index
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-18 14:11 [libre-riscv-dev] Rough timing estimate in yosys Michael Nolan
2020-05-18 15:05 ` Luke Kenneth Casson Leighton
2020-05-18 15:52 ` Luke Kenneth Casson Leighton
Libre RISC-V Mailing list Archives (accessible via public-inbox)
Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev
Example config snippet for mirrors
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git