< 위 광고 배너를 1번 click해주시면, 글작성에 많은 도움이 됩니다. >
vivado synthesis 시,
inferring latch(es) for variable "<name>"
과 같은 warning이 발생할때, 해결방법.
기본적으로 coding style에 문제 가 있음
추천 할만한 해결방법으로
altera가 잘 설명해놓음.
참조 :
http://quartushelp.altera.com/14.0/mergedProjects/msgs/msgs/wvrfx2_l2_veri_always_id_holds_value.htm
CAUSE: |
In an always construct at the specified location in a Verilog Design File (.v), you updated the value of the specified variable. However, you did not assign a new value to the variable in every possible path through the sequence of statements in the always construct. Consequently, the variable holds its previous value under certain conditions. For example, in the following code, the conditional statement explicitly assigns reg q_latch; The following code also shows an example of a variable that holds its previous value. In this example, the case statement is incomplete, meaning some values of the case expression (the 2-bit variable reg [1:0] sel; When a variable asynchronously holds its previous value under certain conditions, the variable will infer a latch. Important: The inferred latch may or may not function correctly in your target device depending on the complexity of the conditions under which the variable holds its previous value. Integrated Synthesis will identify functional problems and issue warnings for any unsafe latches. An unsafe latch has a race condition caused by two more inputs being fed by the same signal. In the previous example, the latch inferred by the case statement is unsafe: The data and enable inputs to the latch both depend on In some cases, you may receive this warning unexpectedly. These unexpected, and sometimes false, warnings occur because Quartus II Integrated Synthesis does not eliminate false paths prior to checking for potential combinational loops. False paths are sequences of statements that cannot occur. For example, in the following code, the conditional statements update reg foo; |
ACTION: |
If you intended for the variable to infer a latch, then no action is required. Otherwise, to avoid inferring a latch, explicitly assign a new value to the variable in every possible path through the always construct. In particular, look for incomplete case statements and, if necessary, make them complete by adding a reg [1:0] sel; |
'일 > Tips' 카테고리의 다른 글
timing slack 발생시, 해결 Tip. - timing 최적화 (0) | 2016.10.26 |
---|---|
git 사용법 - sourcetree (0) | 2016.10.25 |
xilinx - ultrascale timing / constraint / implementation 참조. (0) | 2016.10.19 |
fio file generation & split (0) | 2016.08.18 |
fio 설치 & 사용방법. (0) | 2016.08.17 |