Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

When creating an Allegro HDL Hierarchical Schematic, it is worth spending a fair amount of time planning the initial Hierarchical Structure. The design consists of a Top Level where  common circuitry and a mix of Hierarchical Blocks (HBLOCKS)  can be placed.  Each HBLOCK design may instantiate one or more more levels of Hierarchy.  When partitioned properly, the design is easy to work with and modify and allows easy substitution of key blocks and lends itself well to reuse in other designs, saving countless days of development. It is important to understand the the initial plan may not be what you end up with, but a good plan should be easy to morph into the final structure.

Once the Structure is in place, the CadEnhance PartBuilder, CE-HDL tools work best if you create the design from the bottom up.

Starting in the low level HBLOCKS, CE-HDL can be used to create wire names derived from the pinNames of the devices instantiated in those blocks. Any wire that gets connected to an io-port symbol will create a Port for the HBLOCK. Once the wires are created, PartBuilder can be run to create the symbol for the HBLOCK where the automatically named wire names are used to create port names on the HBLOCK. CE-HDL is then  used to wire the  HBLOCK symbol, where  the connection names are created from the HBLOCK port-names, using simple prefixes or more complex rename rules to create unique names. In this way, the majority of the design connections are created using strong naming conventions where signal names can be traced back to the initiating pinNames.  This provides great accuracy in the netnaming and lends itself well to more automated checking.  

Instructions

  1. Plan the Hierarchy
    1. It is important to keep several goals in mind when you plan your Hierarchy
      1. Efficiency of Creation
        1. Many first time Hierarchical designers go a little overboard and create too many hierarchical blocks (HBLOCKS) to try and solve the problem. They create one HBLOCK for every IC, and another HBLOCK  for every function. This becomes difficult to manage because a symbol mus be maintained for each block in the design, and connectivity changes can cause a nightmare ripple effect.
        2. Cadence has created more functional ports which help to handle the connectivity changes, but squeezing  many disparate signals into an all encompassing bus makes  the design harder to follow and verify.
        3. With good forethought, the number of HBLOCKS can be kept to a minimum so that design changes are easier to manage
      2. Reuse
        1. If your Hierarchy is designed efficiently, the major blocks will lend themselves to reuse in multiple designs either in their exact form or with simple modifications. This can shave huge amounts of development time when creating a new design from an existing design (or pieces of multiple existing designs).
      3. Substitution
        1. An Intelligent Hierarchical Design will allow the user to substitute out Key functions by simply swapping an HBLOCK.
          1. This can provide incredible time savings  if you have to swap FPGA devices, families or vendors.
            1. An FPGA block with its power HBLOCK inside the block can be helpful here since the port names may not change, but the required power may be completely different. If we feed 12V and 3.3V and a set of enable signals into the FPGA HBLOCK, and have the power HBLOCK provide the more granular rails to the FPGA. The changes required at the high level block interfaces will be minimized.
          2. The same applies to a design with a microcontroller, switch or other networking function. If you want to migrate to a newer more powerful or lower power device, a well designed HBLOCK will lend itself to easy substitution.
      4. Don't be afraid of multiple levels, but don't go crazy with levels either.
        1. multiple HBLOCK levels will allow you to copy and reuse placements and routing at the PCB level.
        2. If you have an FPGA with 2 memory interfaces (either to a DIMM or discrete memory), it often  makes sense to instantiate the 2 DIMMS at the same level in the FPGA block to avoid having to route the dimm signals out of the FPGA block and into a dimm block. If the memory interface consists of multiple devices, it would makes sense to make an HBLOCK to contain the multiple memory devices and then instantiate the memory interface HBLOCK twice inside the FPGA Block
        3.  
  2. Create Top Level schematic 
    1. This article is focused on creating Hierarchical designs from scratch. The process is similar when you are creating a new product design by gluing together blocks from existing designs.
    2. Create Pages for 




  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.