[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [oc] To Jason



Aloha!

jae lim wrote:
> Hello Jason 
> 
> Thank you very much for your input!
 >
>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.
> 
> How can I design the pipeline at different points at
> which the execution could be registered? What is
> GENERICS?

There are different ways to do this. Both Verilog and VHDL have constructs 
built into the language that lets you apply parameters/control values/generics 
and have the RTL-tools parse the parameters and adjust the RTL during parsing 
to the final RTL used by the tool.

If you have experience with C programming, you can view this as something like 
pragmas and preprocessor directives. (Both Verilog and VHDL have pragmas too, 
but that's not what we are talking about here)

Depending on which language you are using you should read up on the different 
constructs for that specific language.

Another approach is to divide your design into an architecture with blocks 
that can be instansiated and then have use a script to generate the RTL for 
you. What you do is basically the following. Assuming that all Fs are purely 
combinational functional blocks (ie logic) and vertical lines are clock lines 
(i.e registers) you get a standard Werner diagram like this:

|    |    |    |    |    |
| F1 | F2 | F3 | F4 | F5 |
|    |    |    |    |    |

A Perl script having access to the RTL for F1 - F5 and a parameter with number 
of stages needed can generate a top level with the registers and connect the 
blocks to the registers. The same pipeline can thus be generated with anything 
from 1 to 5 stages suitable for slow speed to high speed operation.

The generics basically do the same thing so you may choose whichever solution 
that you feel suits your way of designing. We have adopted the scripting 
approch not only because it suits our methodology approach, but also because 
we have previous experience with EDA tools having different ways of 
using/interpreting generics.

If your synthesis tool generates a different design internally compared to 
your simulator, coverage tool, power estimator and/or floor planner, you will 
have days of fun. ;-)


> And also, about the control logic, could you explain
> to me in more detail? I am really new to this area:--(

Consider the pipeline above, If you would have a central control machine that 
looks at the result from F1 and will send a control message to F5 when the 
result reaches F5, the control machine would have to be able to wait anywhere 
from 1 to 4 steps (clock cycles) before sending the message. This is naturally 
due to the number of stages.

This can be solved in different ways. Stage local control machines 
communicating only with it's neighbours, pipelined message queues etc.

It's really not that hard, think that you shrink or stretch the pipeline and 
then consider what happens to the pipeline internally as well as surrounding 
data and control paths.

Good luck!

-- 
Med vänlig hälsning, Yours

Joachim Strömbergson - Alltid i harmonisk svängning.
VP, Research & Development
----------------------------------------------------------------------
InformAsic AB / Hugo Grauers gata 5B / SE-411 33 GÖTEBORG / Sweden
Tel: +46 31 68 54 90  Fax: +46 31 68 54 91  Mobile: +46 733 75 97 02
E-mail: joachim.strombergson@informasic.com  Home: www.informasic.com


--
To unsubscribe from cores mailing list please visit http://www.opencores.org/mailinglists.shtml