0
\$\begingroup\$

I am creating a CPLD board. In this there are 4 CPLDs. They connect to several slide switches, push buttons and LEDs. Rather than creating the same circuit multiple times, I want to create a single sheet containing all the output elements i.e slide switches and buttons and another sheet containing all the input elements i.e LEDs. These sheets will contain the port object of Altium schematic editor. Then, I want to instantiate this as a block across all the places in the design where I want to connect the CPLDs to slide switches, push buttons and LEDs.

The question is, how is this done in Altium? Altium has a lot of features aimed at design resuse in schematics and PCB layout. I am not sure which one does what I need to do here.

\$\endgroup\$

3 Answers 3

2
\$\begingroup\$

This is accomplished with hierarchical design selected for Net Identifier Scope in project options.

Altium project options, net identifier Scope

Once utilizing that mode, you create reusable sheet symbols that connect to each other on higher-level sheets. You can repeat these symbols which generate N copies when pushed to the PCB design. Rooms are also helpful/required to successfully have repeated design elements share the same layout.

The best place to learn more about this is in the official documentation for Multi-sheet and Hierarchical Designs.

\$\endgroup\$
2
\$\begingroup\$

I suspect you can probably get what you want with a mix of busses and repeated sheets (or probably just busses). The idea is that you make just one LED or button (on it's own sheet) and use Altium's repeated sheets feature to make more identical copies (just note "0" was an invalid repeat ID until... AD21 I think)

repeated sheets

Then the idea is to use busses to bring all the LED and button pins all over the top level sheet and then tap off just the parts that you need for each different subsheet (like how only some of the address and data pins go to the subsheets below)

Bus slicing

\$\endgroup\$
2
  • \$\begingroup\$ I did not know something like this was possible in Altium. Now out of curiosity, how does Altium name the nets and the components when we put them into the PCB for the case of repeated sheets? \$\endgroup\$
    – quantum231
    Jul 20, 2023 at 18:38
  • 1
    \$\begingroup\$ @quantum231 If you open up the "Project Options" (C + O on the keyboard), under "Multichannel Design" there's a couple options for how it works, I personally use $ComponentIndex,$ChannelIndex, so R1 would become R1.1, R1.2, R1.3 etc. You can actually view the multiplied schematic pages and set component overrides by opening the schematic, bottom left you'll see some small tabs "Editor", followed by tabs named after each repeated sheet. You can also hit "Ctrl + L" from the schematics to bring up the global schematic annotator which handles repeated sheets. YMMV if you're on <AD21 though \$\endgroup\$
    – Sam
    Jul 22, 2023 at 3:04
1
\$\begingroup\$

It depends how much scalable you want your circuit to be. As mentioned by JYelton, you should consider placing both project in hierarchical mode (I would even recommend going strict to prevent miss-connections. In this mode, I also recommend you to check the option to append page numbers to net to prevent lot of ERC.

That being said, it is not miraculous. You will live with the ref def issue. Essentially, the ref defs on both boards for these components will be the same (you can override this, but then the other schematic doesn't work). Also, many people will mess this up sooner or later.

My advise (based on someone who tried many times to implement a professional workspace using this technique) copy paste is better. Their are very few design that will be fully reused in a way that sharing sheets between projects make sense. Unless you have a very specific application in mind (and the one described wouldn't cut it in my opinion), I recommend you to keep the sheet unshared between projects.

(but still, hierarchical design is much more readable, so you should definitely use it imo)

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.