- The altclkctrl is basically the global driver, so anytime you get onto a global, you will see this block. If you want to use it's muxing capabilities, then you need to manually instantiate it. (Note that it's not the most flexible, as the only dynamic muxing is between outputs of a PLL. Hopefully the hardware improves on this someday.)
- If you have a mux, let's say a 2:1, you have two options:
1) The clocks going into it are constrained and timing is cut between them. It will basically analyze the paths through the mux separately. This is easiest, but less flexibile.
2) You can put a create_generated_clock assignment on the output of the mux, where the -source is where the base clock comes from(the physicaly source, not the base clock name). You actually would have two generated clock assignments. Now there are two generated clocks coming out of the mux, and you can use those clocks in your set_clock_groups assignment, or anything else. This provides a lot more flexibility(i.e. maybe you want to add a multicycle from the base clock to the muxed clock, or something like that). Right now your trying to find a clock where it doesn't exist, which I think is the problem.