I read some other questions, like this one. But still I’m not sure.
I’m learning how to - correctly - use a full hierarchical design.
As far as I understand from this tutorial the best is to handle power inputs as hierarchical labels as well.
In the parent sheet I connect the actual power symbols (i.e. GND or +3V3) and inside the sub-sheet I can use the related label as power connections.
But for clarity I would like to use the graphical symbols inside my sub-sheet. It may work if I create my own library disabling the “define as power symbol”? It will be just a symbol, the actual connection is made in the parent sheet.
What do you think? I really don’t want to end up with a “GND” depicted like a label…
That example show a battery charger which needs to control individual cells. I guess there are other cases where you might want to split power domains, but in general such a split is not required.
Power symbols can only have global labels, and not local labels. So in general, I would use power symbols.
Ok, just for clarification: what might happen if I use “non-power” symbols? I guess I would break the electrical rules check, but the connections should be correct.
Unfortunately ERC won’t warn you if you have accidentally split your power nets.
A power symbol is effectively the same as a global label, being a symbol allows some extra eye candy in the form of arrow, circle etc. So if you use global labels nothing bad happens.
However, if you only use local labels, then you will have different nets for each sheet. Which might be what you wanted, but probably isn’t.
You can connect sheets with hierarchical labels, but really that is extra work for no benefit.
I found this more readable that having all hidden inside the h-sheets… What I’m really asking is whether this is a matter of personal preferences or there are some de-facto standard for drawing professional-like schematics.
Hmm, that seems to mix 4 different styles at once. It’s common that the top level sheet is a block diagram showing external connections and logical blocks only. In that case, I would move the power filtering components into “Power supply” sheet.
Do you really have 4 separate 24V power rails? That might be case if they are separately fused, in which case it is reasonable to have different labels.
I would not put GND as a hierarchical label, unless you also have a chassis ground say, and it is important to show the distinction. Generally in any circuit it can be assumed there is a common ground, so it does not seem necessary to show it separately.
I can’t tell from the snippet, but it looks like 3V3 and +24_BUS could be wired directly without using global labels.
If you are designing for your personal use, then do it your way Otherwise, your colleagues will let you know during review process if you have done something excessively unusual.
I’m a free-lancer… no colleagues but I’m trying to make the things as good as possible.
Answers to your comments:
yes, there are four 24V rails, each one with separate fuse and ad-hoc filters
in the optic of hierarchical design, I kept the ESD protection outside of the supply h-sheet because the ESD protections are specific for each board. Instead, the power block might be re-used in other projects, where the protections could be different. At least, I understood the abstraction in this way!
same for GND: in my current schematic I have other blocks (h-sheets), say for RS485 communication. In this specific project I have only one GND, so the use of global labels (hidden in the parent/root sheet) may fit well. But over the years I used the very same RS485 circuits, providing an isolated voltage instead (+5V/GND).
Using local symbols (as I did here) I can just insert the block and connect the isolated supply. Instead I need to remember to enter the sheet, remove all the power symbols, create new hierarchical labels, import them in the parent sheet and eventually connect to the isolated supply.
Please note, I’m not saying what I’m doing is correct. I just explained why I tried this way.
Thanks for your hints!
The reason why I suggest avoiding using power symbols in a hierarchical design is to increase reusability and flexibility. The concept that I refer (knowledge domains) originally comes from object-oriented programming. In this design methodology a submodule should not care about the global state of the system. So while you design for example an amplifier you don’t want to care where in the system it will be used (I chose the example of a battery management system because this was what I had lying around). Global labels like power symbols would however introduce the requirement to know about what symbols are used in other parts of the circuit (it introduces a knowledge dependency).
I personally followed this methodology quite strictly. I never had an issue like unintentionally split power domains. I also never encountered problems with ERC failing to notify me about split power domains but for that to work one also needs to take care where one places power flags (I always place them as close to the power source as possible). I can only see an issue if you have a full power line (inside a single sheet) without a power consumer on it. (Which means you only have passive components). But a workaround here could be to introduce a power consumer flag similar to the power supply flag (would then be a symbol with a single visible power input pin).
Of course this methodology might introduce a bit of extra work (depending on system requirements). It might also confuse readers of your circuit who are not used to seeing circuits that way.
And most importantly it does not work for every system one might want to design (I have not encountered one where the methodology got in the way but i don’t have years of experience either).
So it is definitely ok not to follow the methodology as strictly as i did. I will make that clear in the tutorial.