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 net-naming and lends itself well to automated checking.
Instructions
- Plan the Hierarchy
- It is important to keep several goals in mind when you plan your Hierarchy
- Efficiency of Creation
- 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.
- 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.
- With good forethought, the number of HBLOCKS can be kept to a minimum so that design changes are easier to manage
- Reuse
- 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).
- A well planned design lends itself to packaging using Allegro SUB_DESIGNS. Here the cadEnhance pkgAssitant tool can be used to incrementally package groups of blocks for the design. It provides a a smoother design process. With SUB_DESIGNS the base reference designators are identical between blocks and get uniquified with some levels of suffixing) . The use of Sub-designs also keeps some of the known gremlins that can appear when the Allegro packager compiles the full complex hierarchical design at bay.
- Substitution
- An Intelligent Hierarchical Design will allow the user to substitute out Key functions by simply swapping an HBLOCK.
- This can provide incredible time savings if you have to swap FPGA devices, families or vendors.
- 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.
- The same applies to a design with a micro-controller, 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.
- This can provide incredible time savings if you have to swap FPGA devices, families or vendors.
- An Intelligent Hierarchical Design will allow the user to substitute out Key functions by simply swapping an HBLOCK.
- Don't be afraid of multiple levels, but don't go crazy with levels either.
- multiple HBLOCK levels will allow you to copy and reuse placements and routing at the PCB level.
- 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
- Efficiency of Creation
- It is important to keep several goals in mind when you plan your Hierarchy
- Create Top Level schematic
- 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.
- Create Pages for the top Level design to hold the 1st level HBLOCKS
- The page for
- 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.
Related articles
0 Comments