(un)Availability of PCB materials is causing a mess of Altium projects. - Page 1
Forum section: electronics / general

author: brandon
author_rank: Newbie
timestamp: June 22, 2021, 06:06:01 pm
content: Hi all,I am finding myself spending more time than I think I should creating multiple versions of the same design due to shortages in PCB materials and long lead times... Does anyone know a way to manage this from within Altium Designer?Here's my process:I submit my design for quote using the same material/stackup that was previously used. The fab sends back a "proposed stackup" which uses a different material, which I accept to keep lead times down.So I copy the entire project folder then go into the new PCB and make the necessary changes to the stackup, trace widths, etc. This leaves a lot of room for errors and much confusion downstream when there are changes to the design and probably changes in material again at some point. It's very hard to maintain, well, tedious and time consuming at least.Question(s):I've looked through AD's online documentation and can't find anything that really helps with this problem... am I just missing it in the online docs?I thought I could have 'variants' of the PCB to accommodate the differences but when I tried that it seemed to be more geared towards populated/non-populated components which make up the variations of the board.Is there a better way to manage this?How do you deal with material changes on a run by run basis?Or is there a very basic solution that I'm overlooking? (<--- this wouldn't surprise me)Thanks for the help,Brandon

author: jmw
author_rank: Frequent Contributor
timestamp: June 22, 2021, 06:31:27 pm
content: I would put the project files under a version control system (git, mercurial) and create a branch for each stackup variant.

author: ANTALIFE
author_rank: Frequent Contributor
timestamp: June 23, 2021, 12:03:01 am
content: Random question, is it actually important for you to specify the full spec? Like are you building a simple/cheap 2/4-layer board or do you have "fancy stuff" like impedance controlled traces on there?If it's the former then all I would do is specify a "typical" stackup and state more important items like: copper thickness, soldermask colour, silkscreen colour, pad finish, Tg rating...If it's the latter then I would state what sort of tolerances your stackup has. For example, impedance controlled traces to be 90Ω ± 5%, or trace width & spacing to be ± 20%... That way if you go with a new PCB fabhouse you can just check if their stackup is within your tolerances, rather than issue a new manufacturing pack

author: ajb
author_rank: Super Contributor
timestamp: June 23, 2021, 02:56:34 pm
content: Is this just about getting the right impedances based on the changed stackup, where in theory all you need to do is adjust trace widths/spacing, or is there more to it than that?Variants really are just about assembly, not fabrication, so they're not going to help here.Any time you have to do a lot of branching iteration like this, source control is a good idea. I haven't looked at source control in Altium in a while, but if the project data survives branching, merging, and rebasing (which it might not depending on the file formats and project file structures, idk) then it could be very helpful in keeping functional changes in sync across revisions that have different fabrication changes. In order to really benefit from this, you will have to develop good source control habits and a fair bit of discipline in keeping your commits clean and atomic, just like you would in a similarly volatile source code repository (and just like you should in ANY source control setting, but lots of projects are more forgiving and it's easy to get lazy/complacent). Keeping notes about what changes were made at each revision (especially if you have functional changes in addition to the fab changes) as a supplement wouldn't hurt.As far as the actual changes, it seems like the best thing you can do within Altium is to really use the design automation tools as much as possible. So make sure that you have net classes defined for anything that needs specific design rules (whether that's for impedance, clearance/creepage, or current handling), and preferably define those net classes in the schematic with directives so that you can see them. Then structure your design rules based on those nets to be as streamlined as possible, and minimize the number of places you need to change parameters. So for example, if you have multiple different impedance targets on the same board, define one net class per impedance instead of different net classes for each interface that requires that impedance, which requires you to resolve fewer classes into design rules than if you had separate classes for each interface.There are some things you can do in the initial design phase to make this easier on yourself, like leaving some extra space in the routing to move things around when you need to change trace widths/spacings. If everything is crammed together as tightly as possible then there's more work required to make an adjustment and more opportunity for error. With all of your rules set correctly, adjusting to a new stackup should just() be a matter of updating the rules, running DRC, and then fixing the errors one by one. If you've got a pretty roomy layout, you might be able to use a filter to select all the tracks in a given net class and adjust the width in one go, at least for single-ended tracks. If you need to change diffpairs, I think you'll need to reroute those manually since once they're routed they're just normal tracks, so you can't just change the spacing like you can change the width.

author: Feynman
author_rank: Regular Contributor
timestamp: June 23, 2021, 06:46:42 pm
content: You should only specify what's important to you, I guess. One way is to specify an IPC 4101 Slash Sheet to give the fabricator a little more choice, e. g. IPC 4101/126 for standard FR4.

author: free_electron
author_rank: Super Contributor
timestamp: June 23, 2021, 07:58:24 pm
content: you cast your stackup in stone BEFORE you even put down a single trace ! . stackup is not an afterthought. if your fabricator cannot supply : run.

author: brandon
author_rank: Newbie
timestamp: June 23, 2021, 08:21:29 pm
content: Thanks jmh, a revision control system seems the logical solution (and a good idea anyway).

author: alexwhittemore
author_rank: Frequent Contributor
timestamp: July 15, 2021, 04:08:42 pm
content: Quote from: free_electron on June 23, 2021, 07:58:24 pmYou haven't tried to build hardware in the last two months, huh?

author: thm_w
author_rank: Super Contributor
timestamp: July 16, 2021, 08:14:09 pm
content: Quote from: alexwhittemore on July 15, 2021, 04:08:42 pmGoogle tesla sales and see how many have been produced in the past few months.

author: alexwhittemore
author_rank: Frequent Contributor
timestamp: July 16, 2021, 08:19:44 pm
content: Quote from: thm_w on July 16, 2021, 08:14:09 pmI can't say I follow your point - that manufacturing right now is easy simply on the basis that one extremely well-capitalized company with a relatively low production volume vs its industry has been able to expand?

author: thm_w
author_rank: Super Contributor
timestamp: July 16, 2021, 10:46:43 pm
content: Quote from: alexwhittemore on July 16, 2021, 08:19:44 pmThe person you responded to is the lead PCB designer at tesla. I would tend to take his advice if you are involved in quality PCB production (industrial/avionics/auto/etc).Of course if this is a low quality consumer product (OP provided no details on that, or why the stackup is critical at all), then feel free to ignore. At that point I may consider a generic JLC stackup and just order from them, assuming their spec is good enough. Redesigning the PCB each time is asking for trouble.

author: alexwhittemore
author_rank: Frequent Contributor
timestamp: July 16, 2021, 11:12:20 pm
content: Ahh, so you're saying free_electron is personally responsible for all of OP's laminate supply evaporating