인프런 커뮤니티 질문&답변
퀴즈
어떤 RTL 읽기 방식이 합성 전에 파라미터 수정을 허용하나요?
read_verilog
analyze/elaborate
read_vhdl
read_ddc
답변 1
0
서윤님, 안녕하세요 메타앙코르 입니다.
먼저 저희 강의를 수강 해 주신 점 매우 감사드립니다.
우선 질문을 주실 때 몇 번째 강의의 몇 분 몇 초 부분의 질문인지 말씀해주시면 답변하는 데에 큰 도움이 될 것 같습니다.
우선 질문 해 주신 부분이,
.db를 지우고 link 했는데 0이 아니라 1이 나온다고 말씀 해 주신 걸로 미루어 봤을 때,
set_app_var로 설정한 link_library 변수에서 PLL .db를 제거하고, PLL .db가 제거된 link_library 변수를 설정한 후 link 커맨드를 사용하였을 때 0이 아니라 1이 나온다 라는 질문으로 이해하였습니다.
(만약 제 이해가 틀렸다면 다시 설명 부탁 드리겠습니다.)

그림1. 기존 link_library 변수

그림2. link_library에서
"saed32pll_ss0p95v125c_2p25v.db"를 제거하고 dc에 적용한 모습

그림3. 이후 link 라는 커맨드를 입력하면 아래 부분에 Unable to resolve reference 'PLL' in 'CLOCK_GEN'이라는 warning 메시지가 발생하면서 제일 아래에 '0'이 return된 모습

그림4. 다시 pll .db를 link_library에 설정한 모습

그림5. 그림3에서 발생했던 Warning 메시지가 사라지면서, 제일 아래 부분에 1이 return된 모습
저희 측에서 재확인 결과 db를 지우고 link 커맨드를 실행하면 0으로 반환되는 것을 확인하였습니다.
혹시 캡쳐해주신 부분에서,
dcnxt_shell> Warning: Design 'ORCA' has '1' unresolved references. For more detailed information, use the "link" command. (UID-341)
이 메시지 때문에 1이 반환 된 것이라고 생각하신다면, 해당 메시지는 link 커맨드의 return값은 아니고,
1개의 해결되지 못한 reference가 존재한다는 Warning메시지입니다.
-------------------------------------------------------------------------------------------
아래는 커맨드의 return값 활용 추가 참고 내용입니다.
Synopsys사 EDA tool은 특정 커맨드의 성공 여부를 1로 return 합니다.

set pass_or_fail [link]
-> tcl에서 대괄호는 커맨드의 실행을 의미합니다.
-> link를 실행한 return값을 pass_or_fail에 저장함
echo $pass_or_fail
-> link를 실행한 return값을 보여줘
-> pll .db를 다시 setting하고 link를 실행했기에 link 커맨드에 이상이 없으므로 1을 return함.
tcl script를 활용하여 어떤 command가 실패했을 때 에러 메시지를 띄우는 용도로 많이 사용됩니다.
if { $pass_or_fail == 0 } {
puts "Error: Please check your command"
}
위와 같은 조건문을 활용하면 원하는 커맨드의 성공 여부를 더 쉽게 확인 가능합니다.





