What is the appropriate way to specify the SDC for "..was determined to be a clock but was found without an associated clock assignment."
I already read https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an545.pdf?language=en_US
and
https://forums.intel.com/s/question/0D50P00003yyHQNSA2/diagnosing-signal-was-determined-to-be-a-clock-message
but I could not find the answer.
I have an sdc where I define
create_clock -name "CLOCK_50" -period 20.000ns [get_ports {CLOCK_50}]
create_clock -name "enc_a" -period 20.000ns [get_ports {enc_a}]
set_clock_groups -asynchronous -group {CLOCK_50} -group {enc_a}
where CLOCK_50 is my main clock and enc_a is a signal from an encoder.
I syncrhonize the enc_a end enc_b using
assign clk=CLOCK_50;
always @(posedge clk)
begin
{metaA,metaB}<={enc_a,enc_b};
{stableA,stableB}<={metaA,metaB};
end
rotaryEncoder rotaryEncoder(.a(stableA),.b(stableB),.reset(reset),.q(stableQ));
where rotaryEncoder is the following module
module rotaryEncoder(a,b,reset,q);
input a,b,reset;
output reg [31:0] q;
always @(posedge a,posedge reset)
begin
if (reset)
begin
q<=32'h0;
end
else if (b)
begin
q<=q+32'h1;
end
else
begin
q<=q-32'h1;
end
end
endmoduleHowever I get the message
Warning (332060): Node: busRotaryEncoder:busRotaryEncoder|stableA was determined to be a clock but was found without an associated clock assignment.
Info (13166): Register busRotaryEncoder:busRotaryEncoder|rotaryEncoder:rotaryEncoder|q[5] is being clocked by busRotaryEncoder:busRotaryEncoder|stableA
To my understanding, the "set_clock_groups -asynchronous" should solve the problem, but it seems not. How should I specify this situation in the sdc file?