2014-07-12 21 views
0

나는 항상 RTL 코드에서 선언 된 지연을 결코 합성 할 수 없다는 것을 읽었습니다. 그것들은 시뮬레이션 목적으로 만 의미가 있으며 현대의 합성 도구는 코드의 지연 선언을 무시합니다.왜 지연을 Verilog에서 합성 할 수 없습니까?

예 : x = #10 y;은 합성 도구로 x = y;으로 간주됩니다.

누군가 하드웨어 설명 언어 (VHDL, Verilog 또는 Sytem-Verilog)의 지연 선언을 합성 할 수없는 이유에 대해 설명해 주실 수 있습니까?

+0

이것은 SO와 ElectronicsSE가 겹치는 사이에 들어 있으므로 [크로스 게시 질문] (http://electronics.stackexchange.com/q/121121/13513)입니다. – Morgan

+0

당신은 그 (것)들에게 무엇을 종합하고 싶습니까? – shrm

+0

@mishr 하드웨어를 생성하는 지연으로 합성하려고합니다. – Anand

답변

2

Verilog에서 우리는 클록 에지에서 값을 변경하는 로직을 의미 할 수 있습니다.이 로직은 플립 플롭으로 합성됩니다. 우리는 unclocked 부울 논리를 암시 할 수 있습니다.이 논리는 조합 논리, 여러 AND 및 OR로 합성됩니다.

클록 트리를 합성 할 때 합성 도구는 모든 노드가 동시에 클럭을 수신 할 수 있도록 지연을 추가하여 이들의 균형을 맞 춥니 다. 따라서 합성 도구에 지연 추가 기능이있는 것으로 보입니다.

그러나 ASIC을 제조 할 때 속도에 차이가 있으며, 높은 수준에서 느리게, 보통 및 빠름으로 볼 수 있습니다. 실제로 실리콘의 특정 유형의 장치가 빠르게 실행되고 다른 장치가 느려지는 경우 이러한 모서리에 수백 가지 변형이 있습니다.

실리콘의 이러한 모서리도 온도 등급이 있으며 최악의 경우 + 140C 고속 실리콘 및 -40C 저속 실리콘이 될 수 있습니다. 이 경우 버퍼를 통한 지연의 변화는 30ns라고 1ns가 될 수 있습니다.

#10가 synthesisable 있다면 당신은 실제로 당신은 또한 동일한 인터페이스 또는 제어 구조의 일부가 될 #20 뭔가를 디자인 한 경우해야 할 것입니다, 300ns 155 + -145 즉 10 나노초 (ns)을 얻을 것의 Verilog이 다시 전환하려면 20ns ~ 600ns의 범위. 따라서 전체 디자인이 실제로 유효하지 않습니다.

클록 트리는 최대 및 최소 지연을 제한하고 클록 트리의 모든 노드가 서로 상대적으로 확장되도록 설계되었습니다. 조합 회로에서 보증하기가 물리적으로 불가능하기 때문에 그들은 #10ns이어야한다는 엄격한 규칙은 결코 주어지지 않습니다.

1

코드 을 합성 할 수없는 코드는 없습니다.. 하드웨어에서 컴파일하고 실행할 수있는 코드를 작성할 수 있다면 하드웨어로 합성 할 수 있습니다. 그것은 합성 도구 공급 업체가 해석하도록 선택한 것에 불과합니다.

assign #120 A = B * C; 

는 결과 A가 다음 클럭 사이클에 나타납니다 의미가, 그들은 클럭 사이클 기간이 100 알고 해석 한 과거의 행동 합성 툴되어이있다. 그러나 이러한 도구는 더 이상 존재하지 않습니다. 이러한 종류의 방법론에서 큰 문제는 이러한 지연이 가정인지 또는 요구 사항인지 여부를 알 수 없다는 것입니다.

대부분의 합성 도구가 쓰여지는 방식으로 모든 타이밍 정보는 Verilog 설명과 별도로 지정됩니다. 설명의 기능적 측면 만 Verilog 코드에서 추출됩니다. 테스트 벤치를 분석하려고 시도하는 것보다 클럭 및 입출력 요구 사항에 대한 타이밍 정보를 별도의 파일에서 얻는 것이 훨씬 쉽습니다.