01signal.com

SDC 구문의I/O timing constraints

이 페이지는 timing에 대한 일련의 페이지 에 속합니다. 이전 페이지에서는 timing 계산에 대한 이론을 설명하고 여러 timing constraints를 작성하는 방법을 보여주고 timing closure의 원리에 대해 논의했습니다. 이전 페이지에서는 I/O timing constraints에 관한 몇 가지 기본 원칙을 설명했습니다. 이 페이지에서는 이 항목의 실용적인 측면을 계속 설명합니다.

소개

I/O timing constraints 의 목적은 외부 세계와의 안정적인 인터페이스를 보장하는 것입니다. 외부 세계의 각 signal이 FPGA의 관련 flip-flop 에 안정적으로 도착하도록 보장합니다. 마찬가지로 FPGA 에서 외부 세계로의 각 signal이 외부 구성 요소의 flip-flop 에 안정적으로 도착하는지 확인합니다.

I/O timing constraints는 가장 어려운 종류의 timing constraints입니다. 일부 timing 매개변수는 PCB (Printed Circuit Board)의 외부 전자 부품에 따라 다릅니다. 올바른 timing 요구 사항을 결정하려면 일반적으로 이러한 외부 구성 요소의 datasheets을 읽어야 합니다. 종종 올바른 timing constraint를 얻기 위해 펜과 종이 계산이 필요합니다.

이 복잡한 작업을 건너뛰고 간단한 대안을 선호하는 유혹이 있습니다. 시행 착오. 이 바로 가기는 도구가 원하는 작업을 수행하고 작동하는지 확인하는 것으로 구성됩니다. input port에 문제가 있으면 input signal을 받는 flip-flop 에서 반대쪽 clock edge를 사용하십시오. 마찬가지로 output이 잘 작동하지 않으면 output flip-flop에서 반대쪽 clock edge를 사용하십시오. 이 방법은 일반적으로 전자 장치를 빠르고 간단하게 작동시킵니다.

이 접근 방식의 문제점은 온도에 따라 timing 동작이 변경된다는 것입니다. 반도체 부품 제조 공정 때문에 불확실성도 있다. 이는 FPGA 와 외부 전자 장치에 해당됩니다. 따라서 부적절한 timing constraints는 " Black Magic 모드 "로 이어질 수 있습니다. 이것은 모든 timing constraints에 해당되지만 I/O timing constraints에서 더 많이 발생합니다.

펜과 종이 계산을 건너뛰는 최악의 상황은 때때로 board design때문에 timing 요구 사항을 보장하는 것이 불가능하다는 것입니다. board design공정에서 이와 같은 상황이 발견되면 간단한 해결책( FPGA 로 배선을 변경하거나 clocks의 분배를 다시 생각하는 것)이 종종 있습니다. 하지만 PCB가 생산된 후에 이런 종류의 결함이 발견되면 고칠 방법이 없을 수도 있습니다. 즉, 전자 장치가 안정적으로 작동한다는 것을 보장할 수 없게 됩니다.

이 페이지의 내용

이 페이지에서는 I/O ports용 기본 timing constraints 에 대해 설명합니다. 여기에 표시된 구문은 SDC가 며 Vivado 및 Quartus와 기타 FPGA 도구에서 사용됩니다.

이 페이지는 I/O전용 timing constraints 로 시작합니다. set_input_delay 및 set_output_delay. 이러한 constraints 의 의미가 설명됩니다. 그 다음에는 Vivado 및 Quartus에 의한 timing reports 의 예를 보여주는 두 개의 별도 페이지에 대한 참조가 이어집니다.

set_max_delay 및 set_min_delay로 timing constraints를 정의하는 것도 가능합니다. 이러한 명령은 일부 시나리오에 더 적합합니다. 우리는 이미 FPGA내부의 paths 에 대해 그들을 만났습니다 . I/O timing constraints 로서의 의미도 아래에 설명되어 있습니다.

이 페이지에서는 이러한 I/O timing constraints에 대한 기술적인 측면만 설명합니다. 이론적인 부분은 I/O ports에 대해 false paths를 정의하는 방법도 나와 있는 이전 페이지를 참조하십시오.

set_input_delay 및 set_output_delay의 의미

이 두 명령어는 외부 컴포넌트와의 인터페이스가 system synchronous 일 때 적합합니다. 요컨대,

이러한 정의는 다음 두 조건이 충족되는 경우에만 정확하다는 점에 유의해야 합니다.

이 두 가지 조건은 clock delays가 올바르게 계산되도록 하는 데 필요합니다.

또한 -min 또는 -max를 사용하지 않는 경우 명령이 두 개의 명령으로 해석됩니다. -min을 사용한 명령 하나와 -max를 사용한 두 번째 명령. 이것은 아마도 당신이 원하는 것이 아닐 것입니다.

이러한 명령의 정의는 약간 혼란스럽습니다. set_input_delay은 clock edge이후 data signal이 해당 값을 변경할 수 있는 시기를 정의합니다. 그러나 set_output_delay은 data signal이 값을 변경한 후 clock edge가 허용되는 시기를 정의합니다. 아마도 이러한 정의의 근거는 datasheet 의 숫자를 timing constraints에서 직접 사용할 수 있다는 것입니다.

set_input_delay 및 set_output_delay 명령에는 여기에서 다루지 않는 몇 가지 옵션이 있습니다. 특히 falling clock edge를 시간 기준으로 선택할 수 있습니다. 자세한 내용은 도구 설명서를 참조하십시오.

항상 min 와 max를 모두 사용하십시오.

모든 timing constraint에 대해 -min 와 -max를 모두 사용해야 한다고 주장하는 것은 무의미해 보일 수 있습니다. 예를 들어, 외부 컴포넌트의 tsetup이 8 ns라면, 이게 뭐가 잘못된 건가요?

set_output_delay -clock theclk 8 [get_ports test_out]

이것은 setup time을 올바르게 정의합니다. hold time의 경우 의도치 않게 –8 ns로 정의됩니다. 이를 통해 output port는 clock보다 먼저 8 ns 값을 변경할 수 있습니다. 하지만 누가 신경 쓰나요? 그럴 리가 없겠죠?

음, 실제로 가능합니다. input pin (예: board에서 볼 수 있는 clock )의 clock을 기반으로 내부 clock을 생성하기 위해 PLL을 사용하는 방법에 대해 이미 논의했습니다 . 이를 통해 PLL은 FPGA의 내부 clock을 input clock와 정렬할 수 있습니다. PLL은 clock distribution network의 delay을 보상하기 위해 clock을 약간 이동(shifting)하여 이를 수행합니다.

실제로 FPGA 도구는 timing constraint를 달성하기 위해 clock을 board의 clock보다 약간 더 일찍 자유롭게 이동할 수 있습니다. FPGA 내부의 clock을 외부 clock앞으로 이동하면 외부 부품에서 인식하는 clock-to-output이 작아집니다. 이는 FPGA 내부의 flip-flop이 내부 clock와 동기화되지만 보이는 timing은 외부 clock에 상대적이기 때문입니다.

그러나 FPGA의 내부 clock이 board의 clock 보다 이전인 경우 FPGA의 output이 외부 clock의 clock edge 보다 먼저 변경될 수 있습니다. 이로 인해 이러한 outputs를 수신하는 구성 요소에서 hold time 위반이 발생할 수 있습니다.

set_output_delay 명령이 hold time을 –8 ns로 정의하는 경우 output이 clock보다 먼저 값 8 ns를 변경한다는 의미는 아닙니다. 그러나 이렇게 하면 도구가 thold 요구 사항을 위반하는 방식으로 내부 clock을 이동할 수 있습니다. -min 와 함께 set_output_delay을 올바르게 사용하면 이러한 일이 발생하지 않습니다.

trace delay로 인한 조정

이 도구는 PCB의 trace delay을 고려하지 않는다는 점을 기억하는 것이 중요합니다. 도구에는 이 정보가 없습니다. 따라서 그들은 set_input_delay 및 set_output_delay에 대한 timing 계산을 할 때 이 delay이 0이라고 가정합니다. 수정은 trace delay을 datasheet의 clock-to-output 및 tsu값에 추가하는 것입니다.

clock skew를 고려해야 할 수도 있습니다. 완벽한 PCB에서 clock은 동일한 delay로 모든 구성 요소에 도착합니다. 실생활에서는 FPGA 와 외부 구성 요소 사이에 가능한 clock skew가 있습니다. 이러한 clock skew는 도구의 timing 계산에서 고려되지 않습니다.

따라서 clock이 FPGA 보다 일찍 도착하는 경우(외부 구성 요소에 비해) 다음 수정이 필요합니다.

마찬가지로 clock이 FPGA에 늦게 도착하면 다음과 같은 수정이 필요합니다.

timing report는 여기에 설명된 조정과 관계없이 0이 아닌 clock skew를 표시할 수 있습니다. 그러나 timing report 에 나타나는 clock skew는 PCB가 아닌 FPGA내부의 clock delays 와 관련이 있습니다.

timing reports의 예

예제는 다음 Verilog 코드를 기반으로 합니다.

module top(
    input test_clk,
    input test_in,
    output reg test_out
);

   reg test_samp;

   always @(posedge test_clk)
     begin
	test_samp <= test_in;
	test_out <= test_samp;
     end
endmodule

@test_clk은 input clock, @test_in은 input pin, @test_out는 output pin입니다. PLL은 내부 clock을 board의 clock와 정렬하는 데 사용되지 않으므로 중요한 clock delay이 있습니다.

timing constraints는 다음과 같습니다.

create_clock -name theclk -period 20 [get_ports test_clk]
set_output_delay -clock theclk -max 8 [get_ports test_out]
set_output_delay -clock theclk -min -3 [get_ports test_out]
set_input_delay -clock theclk -max 4 [get_ports test_in]
set_input_delay -clock theclk -min 2 [get_ports test_in]

timing reports는 다소 길기 때문에 별도의 페이지에 표시됩니다.

set_max_delay 및 set_min_delay사용

외부 컴포넌트와의 인터페이스가 source synchronous 인 경우 set_input_delay 와 set_output_delay 의 사용이 덜 자연스럽습니다. set_max_delay 및 set_min_delay이 이 상황에 더 적합합니다. 이전 페이지에서 이 두 명령은 clock period constraints에 대한 보완 또는 조정(timing exceptions)으로만 언급되었습니다. 모든 paths는 내부용이었습니다. 그들은 sequential element에서 시작하고 끝났습니다. 이러한 명령을 I/O timing constraints로 사용하면 path 의 시작 또는 끝이 I/O port입니다. 이 상황에서 timing analysis는 어떻게 수행됩니까?

진실은 다음 명령의 timing analysis를 조사하는 것이 종종 의미가 없다는 것입니다. 그들의 목적은 일반적으로 도구가 간신히 수행할 수 있는 timing constraints를 작성하여 도구의 동작을 제한하는 것입니다. 따라서 이러한 timing constraints 의 값은 이러한 constraints를 더 엄격하게 만들기 위한 반복적인 시도에 의해 발견됩니다. 이 방법론에서 timing analysis 자체는 중요하지 않습니다.

즉, set_max_delay 및 set_min_delay의 계산을 이해하는 것이 좋습니다.

timing analysis 에는 두 부분이 있습니다. 첫 번째 부분은 source path입니다. clock edge (외부 clock pin)에서 두 번째 flip-flop의 data input 에 있는 업데이트되고 유효한 값까지의 시간을 계산합니다. 이 부분은 세 가지 요소의 합입니다.

  1. clock edge가 첫 번째 flip-flop ( clock path)에 도달하는 데 걸리는 시간
  2. 이 flip-flop이 값을 업데이트하는 데 걸리는 시간
  3. 이 새로운 값이 두 번째 flip-flop에 도달하는 데 걸리는 시간

두 번째 부분은 destination path로, clock edge가 두 번째 flip-flop에 도달하는 데 걸리는 시간으로만 구성됩니다. 우리는 이미 이 flip-flop의 input이 업데이트되는 시기( source path에서)를 알고 있으므로 필요에 따라 시차를 필요한 tsu 또는 thold와 비교할 수 있습니다.

그러나 그것은 두 개의 sequential elements에서 사실이었습니다. 측면 중 하나가 I/O port가 면 어떻게 됩니까? timing analysis의 경우 port는 가상의 flip-flop인 것처럼 취급됩니다. 이 flip-flop 에 대한 clock path delay은 0입니다.

clock이 get_ports 에 의존하는 create_clock 명령으로 정의되는 일반적인 상황을 고려해 보겠습니다(거의 모든 예에서 볼 수 있음). 0인 clock path delay은 이 가상의 flip-flop의 clock input이 clock pin에 직접 연결되어 있음을 의미합니다. 따라서 clock pin 와 이 가상의 flip-flop사이에는 delay이 없습니다.

이 flip-flop 의 모든 timing 매개변수는 0입니다. tsu, thold 및 clock-to-output. 이것은 실제 전자 부품을 반영하지 않지만 set_max_delay 및 set_min_delay이 output port와 함께 사용될 때 의미를 부여합니다. port의 clock-to-output. 예를 들어:

set_max_delay -to [get_ports test_out] 7
set_min_delay -to [get_ports test_out] 0

이 두 timing constraints는 @test_out의 clock-to-output이 0 ns 와 7 ns사이에 있어야 합니다.

이유를 설명하겠습니다. 일반적 으로 set_max_delay 명령은 특정 flip-flops사이의 paths 에 대한 period constraint 와 유사합니다. 그렇다면 Destination Clock Path 는 어떻게 될까요? 계산은 두 번째 clock edge의 시간, 즉 7 ns에서 시작됩니다. 그러나 clock path delay 에서 두 번째 flip-flop은 0이고, 이 flip-flop 의 tsu 도 0입니다. 따라서 Destination Clock Path 의 계산 결과는 바로 7 ns입니다. 이것은 Source Path에 허용되는 최대값이며 평소와 같이 계산됩니다. Source Clock Path 와 Data Path. 요약하면 요구 사항은 data output이 첫 번째 clock edge다음에 유효한 7 ns 라는 것입니다. 이것이 바로 output port의 clock-to-output 정의입니다. 관련 clock 에 대한 create_clock 명령이 get_ports를 기반으로 한 경우 이 clock-to-output은 PCB의 clock 에 상대적입니다.

Vivado가 있는 timing reports의 예를 참조하십시오.

set_output_delay은 외부 구성 요소의 tsu 또는 thold 와 관련이 있습니다. set_max_delay은 FPGA의 output port의 clock-to-output을 정의합니다. 따라서 이 두 옵션의 주요 차이점은 초점이 어디에 있느냐입니다.

input port와 관련하여 set_max_delay 및 set_min_delay 의 의미에 대한 직관적인 설명이 없습니다. Source Path는 input pin 와 input signal을 받는 flip-flop 의 data input 사이의 delay 로 구성된다. Destination Clock Path는 timing constraint 명령에 지정된 시간에 시작됩니다. 이번에 clock path delay이 추가되었습니다. 이는 의미 없는 계산입니다( timing reports 참조). 외부 컴포넌트의 clock-to-output 와 관련된 set_input_delay을 사용하는 것이 더 자연스럽습니다.

set_max_delay 및 set_min_delay을 대신하여 만든 timing analysis는 clock period에 의존하지 않습니다. 따라서 clock의 주파수가 변경되면 도구가 이러한 constraints를 적용하는 동안 동일한 숫자가 사용됩니다. 반대로 set_input_delay 및 set_output_delay 에 대한 계산은 clock의 주파수에 따라 다릅니다.

clock의 주파수에 대한 I/O timing constraints 의 종속성은 상황에 따라 장점이 될 수도 있고 단점이 될 수도 있습니다. timing constraints가 외부 구성 요소의 timing 매개변수를 기반으로 작성되고 인터페이스가 system synchronous 인 경우 set_input_delay 및 set_output_delay을 사용하는 것이 더 나을 수 있습니다. 이러한 constraints는 clock의 주파수가 변경되더라도 올바른 상태를 유지합니다. 그러나 timing constraints 의 의도가 도구가 특정 선택(예: IOB registers 사용)을 하도록 강제하는 것이라면 set_max_delay 및 set_min_delay이 적합할 가능성이 더 큽니다.

-datapath_only사용

timing constraint 에 대한 한 가지 가능한 동기는 FPGA 도구가 I/O port에서 가능한 최소한의 delay을 달성하기 위해 필요한 모든 작업을 수행하도록 하는 것입니다. 이것은 일반적으로 IOB register를 사용하는 것을 의미합니다. 이는 또한 input port 와 flip-flop 사이에 추가 delay을 삽입하지 않아도 됨을 의미할 수 있습니다(더 나은 여백으로 thold 요구 사항을 충족하기 위해 도구가 수행할 수 있음).

timing constraint가 이 용도로 사용될 때 목표인 특정 delay은 없습니다. 아이디어는 가능한 최상의 결과를 달성하는 것 외에 다른 작업을 수행하지 못하도록 도구를 방지하는 것입니다. FPGA 도구가 -datapath_only를 지원하는 경우 이 옵션과 함께 set_max_delay을 사용하는 것이 좋습니다. 이렇게 하면 계산에서 clock delay path가 완전히 제거되므로 I/O port 와 flip-flop 사이의 delay 만 고려됩니다. 이렇게 하면 timing constraint의 요구 사항이 그 목적과 정확히 일치합니다. flip-flop 와 I/O pin사이에서 delay을 제어합니다.

다음은 Vivado의 간단한 예입니다.

set_max_delay -datapath_only -from [get_ports test_in] 2
set_max_delay -datapath_only -from [all_registers] \
   -to [get_ports test_out] 3

그런데 "-from [all_registers]"라고 적힌 부분의 목적은 무엇일까요? "-from"가 필요한 이유는 무엇입니까? 짧은 대답은 Vivado가 "-from" 부분 없이 이 명령을 받아들이기를 거부했다는 것입니다. input port에 관한 명령에는 유사한 요구 사항이 없었습니다.

timing reports 와 datapath_only는 예제가 있는 페이지 하단에 있습니다.

요약

set_input_delay 및 set_output_delay은 종종 I/O timing constraints의 기본 명령으로 간주됩니다. 실제로 이것은 일반적으로 인터페이스가 system synchronous 일 때 올바른 선택입니다. 다른 시나리오에서는 set_max_delay 및 set_min_delay을 대신 사용하는 것이 좋습니다. I/O port의 timing에 필요한 제한 사항을 더 잘 반영할 수 있기 때문입니다.


이 페이지는 timing에 대한 일련의 페이지를 마무리합니다. 그러나 기존 design을 검사하는 데 편리한 방식으로 많은 주제를 요약한 마지막 페이지가 있습니다.

이 페이지는 영어에서 자동으로 번역됩니다. 불분명한 사항이 있으면 원본 페이지를 참조하십시오.
Copyright © 2021-2024. All rights reserved. (6f913017)