Above we have a clock mux. First we need to define clk1 and clk2. Assuming they are root/source clocks we can use create_clock:
create_clock -name clk1 -period $40Mhz_period -waveform [list 0.0 [expr $40Mhz_period /2]] [get_ports clk1_in] create_clock -name clk2 -period $66Mhz_period -waveform [list 0.0 [expr $66Mhz_period /2]] [get_ports clk2_in]
Next we can define their relationship to be asynchronous:
set_clock_groups -asynchronous -group [get_clocks clk1] -group [get_clocks clk2]
Another way is to use the old-school set_false_path to specify paths from clk1 to clk2 and vice versa are asynchronous. But if you have many clocks set_clock_groups are much more efficient.
If clk1 and clk2 only goes to this clock mux and do not drive other logics, we can also specify clk1 and clk2 to be exclusive to allow tool to take advantage of this information in timing closure.
No need to define clk3.
Use points to gain access. You can either purchase points or contribute content and use contribution points to gain access.