이 페이지는 timing에 대한 일련의 페이지 중 첫 번째입니다.
보상은 마음의 평화
timing, 특히 timing constraints 라는 주제는 FPGA designer에 대한 큰 도전입니다. timing이 이해하기 어렵다는 것만이 아닙니다. 진정한 도전은 모든 것이 제대로 작동하기 때문에 FPGA design에서 작업하는 동안 이 전체 주제를 무시하려는 유혹을 극복하는 것입니다. 눈에 보이는 문제가 없을 때 design 에 만족한다는 함정에 빠지기 쉽습니다.
FPGA designers가 timing와 관련하여 design이 부족하다는 것을 알고 있다고 말하는 것을 듣는 것은 드문 일이 아니지만 전자 장치는 시계처럼 작동합니다. 그리고 실제로 timing이 제대로 수행되었는지 확인하는 것은 그 순간 시간 낭비처럼 보일 수 있습니다. 계속해서 새로운 기능을 개발하고자 하는 관리자는 프로젝트가 눈에 띄게 진행되지 않는 몇 주 동안 만족하지 않을 것입니다. 실제로 design의 timing을 제대로 살펴보면 해결하기 어려운 문제를 발견할 수 있습니다. 외부 사람들에게 이것은 존재하지 않는 문제를 발명한 다음 이를 해결하는 데 소중한 시간을 낭비하는 것처럼 보일 수 있습니다.
진실은 여러 번 timing을 무시하는 전략이 단기적으로 성과를 거둔다는 것입니다. 그러나 종종 이 주제에 대한 적절한 관심의 부족은 가장 성가신 문제 로 이어지며 가장 성가신 순간에 나타나는 경향이 있습니다. 예를 들어 전자 장치는 최종 승인 테스트 중에 몇 시간에 한 번씩 실패할 수 있으며, 시스템이 전체 온도 범위에서 테스트될 수 있습니다. 또는 그보다 더 나쁜 경우: 고객의 불만은 제품이 출시된 지 몇 년 후에 도착하기 시작합니다. 이러한 불만의 원인을 파악하기 위해 미친 듯이 노력한 끝에 이 제품의 FPGAs가 다른 배치로 제조된 것으로 밝혀졌습니다. 따라서 모든 FPGAs가 datasheet의 요구 사항을 충족하더라도 실리콘의 차이로 인해 새로운 FPGAs가 약간 다르게 작동했습니다.
FPGAs는 이런 종류의 사고로 인해 나쁜 평판을 얻었습니다. 그러나 timing이 제대로 수행되면 이런 종류의 일이 발생하지 않는다는 것을 확신할 수 있습니다. FPGAs는 design이 올바르게 수행되었을 때 매우 안정적입니다.
따라서 시간을 내어 timing주제를 학습한 다음 항상 이 지식을 최대한 활용하도록 하십시오. 이렇게 하면 무언가를 변경하면 design 에 예기치 않은 일이 발생할 것이라는 끊임없는 두려움을 덜 수 있습니다. 또한 나타나고 사라지는 bugs를 쫓는 끝없는 추격전에서 자신을 구할 수 있습니다. 그리고 무엇보다 FPGA를 신뢰할 수 있고 견고한 구성 요소로 생각하는 데 익숙해질 것입니다.
timing constraints의 중요성
FPGA 의 logic은 FPGA design의 모든 synchronous element 에서 timing 요구 사항이 충족되는 경우에만 안정적으로 작동할 수 있습니다. 이를 보장하려면 가능한 모든 paths를 검사해야 합니다. 단순한 logic design로도 이 모든 계산을 손으로 하는 것은 불가능합니다.
따라서 모든 timing 요구 사항이 충족되는지 확인하는 것이 도구의 의무입니다. 이것이 가능하려면 도구가 필요한 계산을 수행하는 데 필요한 모든 정보를 수신해야 합니다. 예를 들어, 도구는 모든 clocks 의 주파수와 timing에 대한 외부 구성 요소의 작동 방식을 알아야 합니다. 이 정보는 일반적으로 특수 구문이 있는 텍스트 파일로 구성되는 timing constraints가 있는 도구에 제공됩니다.
timing constraints가 잘못 작성되었거나 필요한 모든 정보를 다루지 않는 경우 도구는 logic design의 안정적인 작동을 보장할 방법이 없습니다. 도구는 timing constraints에서 제공된 정보에 의존하므로 이 정보가 정확하지 않거나 부분적이면 도구가 수행하는 timing 계산도 마찬가지입니다. 잘못 작성된 timing constraints는 FPGA의 불안정한 동작에 대한 일반적인 이유입니다.
따라서 도구와의 서면 계약은 다음과 같습니다. 우리는 도구에 timing에 대해 알아야 할 모든 것을 알려주고 도구는 design에 timing violations가 없는지 확인합니다.
하지만 때때로 도구는 timing violations를 피하지 못합니다. 이런 일이 발생하면 도구에서 경고 메시지를 표시합니다. 이것은 경고일 뿐이고 error는 아니므로 FPGA 도구는 FPGA에 로드할 수 있는 bitstream 파일을 계속 생성합니다. 따라서 도구가 timing constraints가 달성되었음을 확인하는지 항상 확인하는 것이 중요합니다. 이 확인은 일반적으로 "All timing constraints are met"와 같은 메시지 형식을 취합니다.
하지만 timing constraints에 관한 것만은 아닙니다.
귀하와 FPGA 소프트웨어 간의 서면 계약은 실제로 훨씬 더 광범위합니다. FPGA design 의 모양에 대한 몇 가지 규칙을 따르게 되며 도구는 FPGA가 실패하지 않도록 합니다. 그러나 규칙을 어기면 도구가 보복합니다.
timing을 올바르게 만드는 것은 이러한 규칙의 중요한 부분입니다. 그리고 timing은 단순히 timing constraints를 쓰는 문제가 아닙니다. 알아야 할 세 가지 측면이 있습니다.
첫 번째 측면은 logic design 자체, 즉 Verilog (또는 VHDL) 코드입니다. 물론 logic이 충분히 "빠르다"는 분명한 요구 사항이 있습니다(또는 더 정확하게는 logic design이 clock이 원하는 주파수에서 작동하도록 허용해야 함). 그 외에도 염두에 두어야 할 몇 가지 다른 사항이 있습니다.
- 적절한 Verilog (또는 VHDL), 특히 RTL paradigm에 대한 기본 규칙을 따라야 합니다. 그렇지 않으면 도구가 synthesizer가 생성하는 logic 에서 timing constraints를 적용할 수 없습니다.
- clock domain crossings 에서는 적절한 기술이 사용됩니다(자세한 내용은 여기를 참조하세요 ).
- clocks는 혼란을 피하기 위해 구성되어야 합니다. 특히 의도하지 않은 clock domain crossings를 피하는 것이 중요합니다.
두 번째 측면은 timing constraints를 작성하는 것입니다. 때로는 이 부분이 정말 쉽고 때로는 신중한 작업이 필요합니다. 다른 design (특히 단 하나의 period constraint)에서 timing constraints를 복사하고 작업이 완료되었다고 생각하는 것은 흔한 실수입니다.
세 번째 측면은 도구가 목적을 달성했는지 확인하기 위해 timing reports를 생성하고 판독하여 design이 안정적으로 작동하도록 보장하는 것입니다. 이것은 가장 어려운 부분입니다. 주로 이 작업을 수행하려면 FPGA가 내부에서 작동하는 방식을 이해해야 하기 때문입니다. timing reports는 FPGA의 가장 작은 빌딩 블록으로 작성되었습니다. 따라서 FPGA에 대한 이해 없이는 이러한 보고서에서 유용한 결론에 도달하기 어렵습니다.
사람들은 일반적으로 문제를 해결하기 위해 timing reports를 읽습니다. 특히 도구가 timing constraints의 요구 사항을 달성하지 못할 때 그렇습니다. 이와 같은 문제를 해결하는 과정을 timing closure라고 합니다 . 가장 흔한 문제는 clock의 주파수가 logic design 에 비해 너무 높다는 것입니다( logic이 clock에 비해 너무 느리다고 말할 수도 있습니다).
이미 언급했듯이 timing constraints가 달성되고 모든 것이 완벽하게 작동하더라도 FPGA design의 timing을 가끔 검토 하는 것이 좋습니다. 이는 특히 timing reports를 확인하는 것뿐만 아니라 timing constraints가 logic의 요구 사항을 정확하게 반영하는지 확인하는 것을 의미합니다. 어려움은 그러한 검진이 단기적으로는 보람이 없다는 것입니다. 이 점검은 시간과 노력이 필요하며 결과가 없거나 문제가 발견되는 것으로 끝납니다. 따라서 점검이 유익했다면 실제로는 아무도 볼 수 없는 문제를 해결하는 더 많은 작업을 의미합니다.
timing 에 대한 페이지 구성 방식
이 페이지는 귀하와 FPGA 도구 사이의 서면 계약의 두 번째 및 세 번째 측면에 중점을 둡니다. timing constraints 쓰기 및 timing reports읽기. 이러한 기술에는 이론적 지식과 실용적인 도구가 필요합니다.
timing constraints 의 실용적인 측면은 비교적 배우기 쉽습니다. 어려운 부분은 design에 대한 정확한 의미와 영향을 이해하는 것입니다. 이 시리즈의 다음 페이지 에서는 기본적인 이론적 개념을 살펴봅니다. 다음 페이지에서는 timing reports의 몇 가지 예를 통해 이론에 대한 논의가 계속됩니다. 전체 이야기는 timing analysis의 작은 세부 사항에 있습니다.
다음 페이지에 이어지는 두 페이지에서는 가장 중요하고 가장 유용한 timing constraint에 대해 설명합니다. period constraint. 이 두 페이지에는 중요성 때문에 timing reports 에 대한 자세한 설명이 포함되어 있습니다.
다음 두 페이지에서는 timing closure에 대해 설명합니다. 이 주제는 다소 이르지만 다음 주제의 목적을 설명합니다. logic fabric와 관련된 timing constraints 에 대한 5페이지( SDC 구문). 그 다음에는 I/O timing constraints에 대한 두 페이지가 나옵니다.
이 시리즈의 마지막 페이지는 기존 design검사 전용입니다. 해당 페이지에는 새로운 내용이 없습니다. 오히려 이미 논의된 주제를 반복합니다. 그러나 이번에는 조사할 항목의 목록으로.
주제는 이 일련의 페이지를 처음부터 끝까지 읽을 수 있는 순서로 제공됩니다. 그러나 모든 주제는 서로 관련되어 있으므로 페이지 간에 많은 참조가 있습니다.
여기에서 계속할 수 있는 가장 좋은 곳은 다음 페이지 입니다. timing 이론을 들여다보는 것은 결코 나쁠 것이 없습니다.