Electronic – How to use an H-clock tree in a pipelined adder

adderclock

This is for a lab at my university. Normally I don't have a problem with these things, but this one is poorly written and the professor hasn't discussed the H-clock tree, which is where I'm getting confused. Essentially, the goal of this lab is to create an 8-bit pipelined adder and use an H-clock tree to provide the clock pulse to the sequential elements of the design. We'll just consider the gate/component level schematic here.

Here's what I know:

  • How to create the pipelined adder: use two 4-input adders (already created) and stick D-Flip-Flops (also created) in between the stages and at the inputs/outputs to synchronize the calculation. Basically, do what's shown below, but with only two stages instead of three: enter image description here

  • How to create the H-tree for the clock. It should like like image b) below: enter image description here

However, I'm unable to connect the two concepts in my mind, or even understand why the clock tree is necessary. Here's the part from the lab manual that I'm stuck on:

Use the buffered H-tree clock distribution scheme to provide clock signals to the
sequential elements in your design.

How do I use the clock tree to distribute the clock signal to the flip-flops? If I have X flip-flops, do I need a tree with at least X branches, and use one branch for each flip-flop? How is using the tree different from just wiring the clock input directly to each of the flip-flops?

Best Answer

Part of the disconnect may be coming from the "H-Tree" clock distribution network being a physical layout concept in addition to a schematic level concept. The key part of the H-tree is that since every branch is physically similar, and has the same number of clock loads, that the actual clock skew will be minimized. Another key point is that you would include inverters even if the outputs are not used just to keep the distribution network balanced.

You need clock buffering on anything other than a small design, as each flip-flop clock pin will "slow down" the clock transition time to a point that your flip-flop runs slower and has a more ambiguous switching time. Significant clock skew in your design can cause you to pull your hair out during static timing analysis and verification.

If I were implementing this design in an ASIC, I might instruct the place and route tool to generate the clock network with a "H-tree" layout. If you have to turn in a (hand designed) physical layout, then you have a guideline to work from. If you just have to turn in a schematic... I guess show the clock buffer tree.