OpenCores
no use no use 1/1 no use no use
synthesize and pipeline programming
by Unknown on Sep 13, 2008
Not available!
Wish to get samples about pipeline programming! Thank you. ----- Original Message ----- From: Richard Herveille richard at a...> To: cores at o... Date: Sun, 7 Jul 2002 07:15:21 +0700 Subject: Re: [oc] synthesize and pipeline programming
If you use a synthesis tool that is capable of retiming many of the points described are taken care of by the tool. Retiming means actually moving logic between register stages. Example - - - - In this case the big logic block determines the speed of the system (assuming kinda linear delay depending on the amount of logic, not always true though). Retiming means moving logic from the big block into the small block, thus creating two new blocks that have (almost) the same delay.

Compared
to the
original delay, the delay will be more for the small logic block,
but less
for the big logic block. Thus increasing the total speed of the
system.

Richard

> If your goal is to optimize each stage of the pipeline
> then you will have to repeat the synthesis of the verilog.
> After each synthesis, evaluate the timing and try and
> optimize the stages to meet your design requirements or
> balancing of the pipeline stages (if an optimal approach
> is desired...)
>
> Each stage of a pipeline is defined by the registering of
> signals within that stage... If the signals are registered
> between each stage, you will not get any major optimizations
> between stages. Synthesis tools don't generally move logic
> (maybe inverters) from one side of a flip-flop to the other...
>
> Ultimately it all depends on what your goal is...
>
> Depending of what FPGA architecture and what systhesis tool

&
> synthesis directives the end-user is using, the stages will

have
> different timing and thus the overall performance will

differ...
>
> A better approach might be to design the pipeline with various
> points at which the execution could be registered and turn

them
> on or off using synthesis directives and GENERICS. Thus for > different FPGA architectures and synthesis tools the code > could be optimized to have the best performance. > > Examples of this kind of coding exist in GNU Software... > For different architectures and different Operating Systems > the code compiles differently to take advantage of specific > optimizations available at compile-time... > > As always though, the control will be a bit of a pain... > Some control signals will have to be delayed until needed > by a specific "stage" and others might not be needed at all. > This is most apparent in the register dependency logic > between stages... > > If I am mistaken in any of my assumptions please correct me... > I haven't paid very close attention to synthesis tools for > a few years, but I don't think they have changed that much... > > --- Madhusudhan Rao madhu_sudhana_rao at y...> wrote:
> 1. If you want to better optimization in your > pipeline case better to synthesize as single module. > If u synthesize individually Design Compiler will take > care about individual stage optimigation only. > > --- jae lim jlim0011 at y...> wrote:
> > 1) For the pipelined Simple RISC processor, is it
> > easier for the synthesis tool to optimize the code
> > if I implemented as five stage pipeline as small
> > modules as possible or it doesn't matter even if I
> > implement it as a whole big module? If the former is
> > the case, should I divide the module as five stages,
> > including every functional units into the stage
> > modules or should I put the functional units as
> > individual modules?
> > Any suggestions will be greatly helpful!!
> >
> > Have a nice weekend.
> >
> > Jay

>
> =====
> MadhusudhanaRao.M

>
> God Bless,
> ---
> Jason Silcox
>



no use no use 1/1 no use no use
© copyright 1999-2026 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.