Sunday, January 29, 2012

Hierarchical Design in Altium

Altium Designer promotes hierarchical design, which seems to make sense.  It can help manage large designs and encourage design reuse.  Those concepts have long been prevalent in software design.  In a true hierarchical design, the local nets should stay local, but Altium seems to have problems with sheets with same named local nets.   We are forced to define unique names to different sheets.

The ports are considered differently from the wires; so the port names do not become signal names even when the wires are not named. This may be a little unexpected.  If we think of ports are module interface declaration, inside the module, the port name should be used as signal names.  More confusion is created when the nets are flatten: what net names are ultimately used if nets are assigned names in the hierarchy.  Altium would even complain about same net names in different hierarchy.  There does not seem to have a well defined way of resolving net names.

Another thing that could cause confusion is the netlist option "Allow Ports to Name Nets".  If  we try to connect nets by name, we find Altium actually consider the net with net label and the net connect to the port with the same name to be different in PCB while showing exactly the same name.  The rule for flattening the netlist seems applied inconsistently.  For some nets, the net labels are used and for other the port names are used in the final PCB netlist even though both net labels and port names are assigned.

Altium cannot use a multi-part component in the multiple instances.  A hex inverter IC has six inverters.  If one is used in a sheet and the sheet is used in multiple instances, Altium will end up with multiple ICs rather than distribute subparts to different instances.  But there is not an easy way to resolve this.

In conclusion, the hierarchical design in Altium has to applied with greater caution.  I do find some utility for it when a design block are used more than once, but otherwise it is better to avoid at this moment

1 comment:

  1. Project Options->Options->Net Identifier Scope change to Hierarchical to not require globally unique net names.

    ReplyDelete