In our CBC programs, the last level of each attribute is specified in the design matrix as the omitted level. This is only in the design matrix, which is behind the scenes and not observed by our users. Then, when we write out the utility parameters, we expand out the vector of utilities so that all levels have a utility attached to them (and the sum of utilities within each attribute is zero). So, it's all hidden to the user what was done behind-the-scenes in the design matrix.
In most cases (standard level-balanced designs), it doesn't matter which level one uses as the reference level. You'll get essentially the same result (at least there shouldn't be statistically significant differences among runs coded different ways for the reference level, as long as you run out far enough to convergence).
If you use a program like NGENE to design your CBC experiment and then import that design into Sawtooth's programs (Lighthouse Studio CBC) for fielding the study, then you will be giving the design as level indices for import to our software. For example, if there are 7 levels of the first attribute, the design matrix will just be listing numbers 1-7 in a single column for that attribute (in the .CSV file). Only later during utility estimation will our programs deal with expanding that into an X matrix with 7-1=6 columns.
If you are skipping our data collection process and just moving designs and respondent answers into our HB or Latent Class standalone programs for utility analysis, then again you'd typically be using a .CSV file where you specify a single column of values 1-7 to represent a 7-level attribute, and you'd let our software do the effects-coding and our software would choose which level to use as the reference level. The manuals for CBC/HB and Latent Class standalone give you the layout of the .CSV file for specifying the design matrix per respondent and respondent choices.
However, power users can entirely control the coding of the X-matrix if they want to, using "user-specified" coding, where the power user puts the 1, 0, and -1 codes in the K-1 column coding per attribute. In that case, you have control of which level is the reference level for each attribute for CBC/HB and Latent Class estimation. And, when the utility file is written out by our programs, then you would have K-1 parameters per attribute rather than K parameters per attribute as normally would occur if you let our software handle the effects-coding procedure.