Trying to solve the following contradiction about "set_multicycle_path"
case 1: "Vivado using constraints" pdf states that for most cases of timing relaxing multicycle use following rule of N/N-1:
set_multicycle_path N -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
set_multicycle_path N-1 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
My understanding is that if hold value is not stated then it defaults wrongly tied up to setup and does not relax timing. This will defeat the planned timing relaxation.
case 2: Vivado synthesis issues this warning in my work:
Use of 'set_multicycle_path' with '-hold' is not supported by synthesis. The constraint will not be passed to synthesis.
But Vivado implemented it correctly, I think so, since report shows setup requirement of 4 clocks and hold requirement of zero. Moreover when I enter both constraints directly in tcl all is accepted.
Q1) Any idea what is going on here? part of tool rejects what is needed, other part accepts.
Q2) is one value enough and the tool will work out both setup and hold values. I doubt it because it is a user decision related to design.
Q3) is setup/hold requirement same as setup/hold relationship?
I am struggling with three terms: N/N-1 Multiplier value for multicycle, Requirement, Relationship.