9 Replies Latest reply on Oct 22, 2014 1:29 AM by robert_davies

    Will you correct my understanding of hierarchy?


      Good morning.


      Will you correct my understanding of hierarchy? I was told that hierarchical design enables instantiating multiple, identical components (in the form of blocks) and controlling their function by editing one common base schematic; is that correct?


      So far i can create a quasi-hierarchical design by making a block, copying it's reference under the "Blocks" heading in Navigator, and then pasting a duplicate block back into "Blocks". This seems to defeat the purpose of hierarchy....


      Thank you for providing insight,



        • 1. Re: Will you correct my understanding of hierarchy?

          When you create a hierarchical block you see it appear in the blocks node of the navigator, but this is not where you instantiate it as another instance in your design. If you want two copies on the same sheet simply do a copy/paste of the block. There will be two instances of the block on the sheet but only one 'definition' in the blocks node of the navigator. One key thing to remember is to freeze the block before doing the copy to ensure pin names don't change as you hook it up to other components in the design. it doesn't matter which instance of the block you push in to from this sheet, each instance will see the changes you make (adding nets or components).

          If you want to add the block on a different sheet or even in another level of hierarchy place it from the central library view of DxDataBook. Open DxDataBook go to the CL View Tab, select the Symbols tab and then the [local symbols] partition. You will see all of your blocks listed here. Place the block into the schematic and push into it, you will see it is the same as all of the other views. Once packaged for layout each instance will get unique reference designators (instance level) to ensure the correct number of parts are placed on the board.

          if you need to add extra pins or remove pins from a multi-instanced block edit it in the symbol editor to ensure you don't change any existing connectivity. Select any instance of the block in the schematic and use the context menu on the right mouse button - Edit Local symbol. This will open the block symbol in the symbol editor and you can add or remove pins and make other changes. This only affects the block interface, you will need to resolve any additional/changed connectivity in the block's schematic from the schematic editor. If you have added or removed pins from the block's symbol, when you close the symbol in the symbol editor and save it the block will be updated in the schematic. From the block you selected to do the edits, push down into the block and you should be prompted that pins have either been added or removed. Make the necessary changes at this level to ensure the connectivity is as required.

          • 2. Re: Will you correct my understanding of hierarchy?

            Hi Brian,

            You basic understanding is correct. One block can be instantiated many times. You correct the block and all the instances are automatically corrected.


            Where you stuck was in your way of "quasi-hierarchical" design approach.

            Whatever is under the block section are blocks. If you modify them they will reflect the changes all over.

            The instances of the blocks are in the schematic section above, but they are not placed with a paste command from the block. Instead they are "instantiated" by placing them on the open schematic of a sheet. In the navigator you will see under the symbols how your blocks are instantiated.

            in this example the first instantiation on the sheet named ETH has no name, thus $22I3912, and in the second line it is named with ETH_QUAD.

            In the blocks you may have all the blocks.


            On how to design this remember that you have to choose between two way of designing a hierarchical blocks.

            The top bottom approach versus the bottom up approach.

            Basically in the bottom up approach you design your hierarchical blocks and then the main schematic.

            In the top bottom you start designing and decide to create blocks out of parts of the design.

            You will need to read the manual on how to proceed to do this.


            Hope this helps


            • 3. Re: Will you correct my understanding of hierarchy?

              Thank you for the quick response Robert and Matija. Unfortunately the answers do not solve a critical issue. How do i preserve modifications between instances? If i push into one instance and change a bus name connected the port that change is reflected in the other instance of the block...


              Thanks again for your assistance.



              • 4. Re: Will you correct my understanding of hierarchy?

                Hi Brian,


                Robert told you: you must freeze the symbol of the block.


                Be aware of the difference if you push into the instance or if you edit the block from the navigator block section.


                Hope this helps


                • 5. Re: Will you correct my understanding of hierarchy?

                  Hello Matija,


                  The block is frozen. Perhaps this picture will better describe what i'm trying to accomplish. Four instance of a "Con" block sit within a "MainCable" block. hierarchy0.pnghierarchy.png

                  I have other questions about how to provision the bus/sub-busses, but those can wait (and should probably sit within another post, right?)....


                  Thank you,



                  • 6. Re: Will you correct my understanding of hierarchy?

                    You don't change the net names inside the block the nets are resolved at the top where the top net connects to the pin on the block. It is the top net that is used by the tools.


                    Sent from my HTC

                    • 7. Re: Will you correct my understanding of hierarchy?

                      Hi Brian,

                      I think I see know your question. It stems form the fact that you don't really understand how hierarchy works and how expedition names nets in blocks versus flat net names. To explain it you have to understand better how hierarchy works. This is a vast topic, and Mentor could help solve a lot of problems if the net names would be shown as flat net names in the schematic and as local names in the navigator block (see idea D13367)


                      In the block you design, you will have a LittleCable bus that is 8 bit (=4x2). This bus name will be called LC[4:1[[1:0[.

                      Now inside this block every first signal from the top should be called LC_4_1, down to LC_1_0, a 8 bit wide port. Note that it has only two numbers. There is no number associated to the connector, or better said to the instance of the block. All will be the same for all blocks. (When you design the block is like living in a small city, where the streets are called as they are called, like main street, side street, etc...)


                      When you instantiate the connectors with the symbols, you will connect the block to the BC (when you instantiate the cities to the main highway), then you have to take care that the right bus bundle is coming from BC to LittleCable_0 to LittleCable_3 (8 bits) (This are your cities)


                      So you connect the BC to the symbol, and inside you have the LC bus. (In the street analogy, is like saying this is main street from the first city and this is the main street from the second city.)


                      When you look at the block you will still see the local names LC. Even if you push through a symbol in the main schematic you will see only the local net names LC


                      Now for the fun part:

                      once you do a package, Expedition will change the local names on its own and call local LC_4_1 on one instance as it is (in this case local and global net name are the same), and on other instance as it pleases e.g. LC_4_1_9. The last _9 is made up from the system and there is no way to know this in advance. This is explained in Tech Note MG587720. But the nets will be in CES and in Layout the global net names. This IS a source of misunderstandings, so be prepared to deal with this, and always ask is this a local net name or a global net name.

                      • 8. Re: Will you correct my understanding of hierarchy?

                        Thank you for the great analogy Matija; between your and Robert's posts I was able to accomplish the task. Next - busses/sub-busses...

                        • 9. Re: Will you correct my understanding of hierarchy?

                          If this question is now answered to your satisfaction please mark it as 'Answered' either by clicking one of the posts as the Correct Answer or selecting the 'Mark Assumed Answered' in your original question. This way the Community becomes more valuable to other users seeking answers.

                          Then if you cannot figure out buses and sub-buses from the on-line documentation post a new question on the Community.