deriving microarchitecture from Specs

A

anand

Guest
I am a verification engineer trying to make the transition to design
engineer (very comfortable with verilog, and understand the asic flow).

However, I dont u nderstand how the designer derives the
microarchitecture from a given spec. I do understand the digital design
concepts, and I do understand the verilog coding aspects, but am having
difficulty "connecting" the two, (therefore have spent lots of time
surfing the web :))

Two books I found on this:

1) Verilog coding for Logic synthesis (Weng Fook Lee), Chapter 5, 6.
2) The Design Book: Techniques and Solutions for Digital Computer
Systems by Howard Pollard (havent read this, but ordered a copy since I
could get it discounted).

I have already done simple designs, and I would like to graduate from
the simple, "Traffic Light COntroller" level of complexity, to say,
Two specific projects that I have interest in:

a) Implementing any (security/DSP/video) algorithms in Hardware, or
perhaps
b) Designing a PCI slave device and then running simulations on a
testbench for mastering.

I could perhaps extend this by implementing this in FPGA and seeing it
actually work in Silicon.

I know the derivation of microarchitecture spec is probably a
combination of "hard science" and "art", but what I would like to know
is, how do you cross that bridge as easily as possible, with the least
amount of pain?

Also, if you could point out specific books/examples, that wd be great.

Thanks in advance
 
This is a difficult problem and I would expect many different correct
answers. One way to approach this would be to:
1) decide on a product concept, feature-set and validate this in the
market
2) decompose the feature set into manageable, modular components that
abstract complexity, maximizing re-usability and interface simplicity
3) write and validate (among peers) per-component micro-arch docs (or
napkin scribbles) identifying common design patterns like software
abstractions, interfaces, protocols, register-maps, RAMs, CPUs,
interrupts, ALUs, state-machines, counters, FIFOs, pipelines,
time-slices, etc.
4) implement and verify components
5) integrate components and verify integration
6) validate via prototyping

Of course it's easier said than done ;)

Regards,
Jeremy

---
PDTi [ http://www.productive-eda.com ]
SpectaReg -- Spec-down code and doc generation for register maps


anand wrote:
I am a verification engineer trying to make the transition to design
engineer (very comfortable with verilog, and understand the asic flow).

However, I dont u nderstand how the designer derives the
microarchitecture from a given spec. I do understand the digital design
concepts, and I do understand the verilog coding aspects, but am having
difficulty "connecting" the two, (therefore have spent lots of time
surfing the web :))

Two books I found on this:

1) Verilog coding for Logic synthesis (Weng Fook Lee), Chapter 5, 6.
2) The Design Book: Techniques and Solutions for Digital Computer
Systems by Howard Pollard (havent read this, but ordered a copy since I
could get it discounted).

I have already done simple designs, and I would like to graduate from
the simple, "Traffic Light COntroller" level of complexity, to say,
Two specific projects that I have interest in:

a) Implementing any (security/DSP/video) algorithms in Hardware, or
perhaps
b) Designing a PCI slave device and then running simulations on a
testbench for mastering.

I could perhaps extend this by implementing this in FPGA and seeing it
actually work in Silicon.

I know the derivation of microarchitecture spec is probably a
combination of "hard science" and "art", but what I would like to know
is, how do you cross that bridge as easily as possible, with the least
amount of pain?

Also, if you could point out specific books/examples, that wd be great.

Thanks in advance
 
On 22 Jun 2006 16:15:06 -0700, "anand" <writeanand@gmail.com> wrote:

I am a verification engineer trying to make the transition to design
engineer (very comfortable with verilog, and understand the asic flow).

However, I dont u nderstand how the designer derives the
microarchitecture from a given spec. I do understand the digital design
concepts, and I do understand the verilog coding aspects, but am having
difficulty "connecting" the two, (therefore have spent lots of time
surfing the web :))
In my experience the main issue is how you partition the
implementation. In any spec there are usually relatively detailed
block diagrams. If the spec has been written by a technical person,
even if it's not aimed at helping implementation, it describes the
main functionality of the system in a hierarchical manner. This is
usually how people think. I've had good results by following the
hierarchy of the spec. If it's good for describing the system in a
"human" language, it's usually good for describing in an HDL. Study
the partitioning in the spec, try to figure out how you would
implement one of the smaller features in hardware and how it would
communicate with the other blocks. If you understand the spec really
well and if it's written well it should be a great starting point in
partitioning your design.
 

Welcome to EDABoard.com

Sponsor

Back
Top