This is a very old post, but I stumbled on it while trying to solve a somewhat similar problem and there may be an alternate answer, depending on the exact situation.
There is a case where two "clocks" can be used with the same FF. It is called asynchronous reset (or preset). The "ambiguity" is resolved by creating a priority.
always @ (posedge clk or posedge reset) begin
if (reset)
count <= 0;
else
count <= count + 1;
end
end
For a more nuanced case consider the case of an alarm clock where there is a button to accelerate the counting for setting it. I'll not address the metastability issues and bounce issues, but the following example should illustrate the concept.
always @ (posedge clk or posedge btn) begin
if (button)
count <= count + 1;
else
count <= count + 1;
end
end
While it looks redundant, it should generate an asynchronous load from an adder in the first case and normal FF operation in the second. The key point to both code snippets is that when there are two edge triggered "clocks" in a sensitivity list, the code inside must include one of them in an if .. else clause that clearly specifies the priority. The one given the priority becomes an asynchronous preset or reset that blocks the other from having any impact as long as it is asserted.