2011-10-10 3 views
3

나는 일하는 프로그래머가 더 이상 일하지 않는 Verilog 코드를 가지고있다. 추출물은 아래와 같습니다 :매개 변수를 래핑하는 데 Verilog에서 괄호의 특별한 의미가 있습니까?

parameter mstrobe = 10; 
. 
. 
. 
assign #(mstrobe) sclk=iclk; 

(sclk는 선이고, iclk는 시스템 클럭의 값 할당)

가 나는 또한 기존의 Verilog 파일에 대한 몇 가지 조작을 수행하기위한 별도의 펄 스크립트가 있습니다. 이 스크립트는 #(mstrobe)을 구문 분석 할 때 질식합니다. 왜냐하면 mstrobe이 괄호로 묶여 있기 때문입니다. 나는 쉽게 그 문제를 해결할 수 있지만, 내가 알고 싶은 것은 할당 위의 진술과

나는 두 문장은 동일 여부, 또는 거기에 아마 여부를 확인하려면
assign #mstrobe sclk=iclk; 

사이에 근본적인 차이가 있는지 여부입니다 이 점에있어서 Verilog 버전 (Verilog-2001, Verilog-2005, SystemVerilog) 간의 구문 차이.

답변

3

간단한 경우 괄호는 선택 사항입니다. 두 경우 모두 Verilog 버전과 상관없이 유효한 구문입니다. 보조 노트에

assign #(mstrobe/2) sclk=iclk; 

펄을 사용하여 Verilog를 구문 분석하고 있기 때문에 당신이 Verilog-Perl 알고, : 당신과 같은 더 복잡한 표현을했다 경우

괄호

이 요구 될 것이다?

+1

고마워요! 나는 파싱을 위해 자체 내부 라이브러리를 사용하고 있었지만 Verilog-Perl은 대신 사용할 좋은 구현 인 것처럼 보이기 때문에 링크에 대해서도 감사드립니다. –

1

괄호가 해당 컨텍스트에서 사용되는 다른 시간은 지연이 시간 단계를 지정하는 경우입니다. 귀하의 예는 귀하의 타임 스케일에 의해 결정되는 시간 단위를 10 개 (또는 어떤 mstrobe가 설정 되든간에) 지연시킵니다. 그러나 mstrobe = 10ps 인 경우 # (10ps)를 수행 할 수 있습니다. 이렇게하면 시간 규모에 관계없이 10ps를 지연시킬 수 있습니다. 나는 그들이 이 필요한지 확실하지 않다. timescale을 지정할 때을 지정할 때 좋은 코딩 방법이다.

관련 문제