개발 편의성을 위한 소소한 Tips/04 질의 응답 정리

[Verilog HDL Q/A. 007] ASIC 에서 합성가능한 Memory code?

반응형

Q1

안녕하세요.

맛비님의 강의를 듣고 있는 수강생입니다.

다름이 아니라 'BRAM - 실습편'의 'true-dpbram.v'파일은 asic으로 설계시 합성이 안되~라고 언급을 해주셨는데, 

reg [DWIDTH-1:0] ram [0:MEM_SIZE-1]; <- 이부분이 asic으로 설계시 합성이 안되는 것인가요? 또한 안되는 이유는 무엇인지 궁금합니다.

그리고 fpga에서는 합성이 되나 asic으로 합성시 합성이 안되는  코드는 어떻게 구분을 할 수 있는지 궁금합니다~

답변 부탁드립니다~

 

A1

안녕하세요 :)

현업에 가시면, 이 부분에 대한 답을 자세히 아실 수 있겠지만,

최대한 쉽게 적어보겠습니다.

먼저 ASIC 에서 Memory 는 별도의 Cell 입니다.

이 말은 F/F 과 같은 Verilog HDL 로 기술가능한 저장소자가 아닙니다.

ASIC 에서 Memory 를 쓰고 싶다면, 어떤 공정이냐 (삼성, tsmc 몇 나노?) 에 따라 제공하는 Cell Library file 이 필요하죠.

Verilog HDL 로 Memory Controller 를 설계할 때, Simulation 과정이 필요합니다.

하지만 Memory 는 Cell 이고 공정마다 다 다르기 때문에 설계 시작부터 이 Cell 을 Simulation 에 포함하는 것은 굉장히 비효율 적입니다. (Simulation time 이 오래걸림.)

하여, Memory 와 동일한 Function 을 가진 Memory Model 이라는  Verilog HDL 코드를 사용합니다. 그 코드가 제가 공유드린 true-dpbram.v  와 유사한 form 이죠. (이 코드는 회사의 상황 마다 다릅니다.)

자 결론은 ASIC 에서 Memory 를 사용하려면 Target 공정에 맞는 Cell library 가 필요하다. 제가 공유드린 파일은 Memory 와 동일한 Function 을 가진 Memory Model 이다. 그럼으로, 이 Verilog File 은 ASIC 에서 Memory Cell 로 사용할 수 없다. 

개발은 Memory Model 로 하고, ASIC 에서 Chip 을 찍을때는 Cell library 로 해당 Memory Module 을 Replace 해서 진행한다.

이해가 되시나요...? 안되시면..? 어디 부분이 안되는지 알려주세요  :)

Xilinx FPGA 는 이 Verilog HDL 의 attribute (제 영상에 이 멘트가 있습니다.) 를 인식하고 BRAM 으로 대체합니다. ASIC 은 위에서 말씀드린대로 사용되구요.

그럼 즐공하세요 :) 

 

Q2

답변 감사드립니다~

그럼 제가 이해하기로는

해당 'true-dpbram.v의 asic으로 설계시 합성이 안된다'는 말씀은,

memory는 별도의 cell이니 해당 파일로 합성을 해도 'asic에서 메모리가 만들어 지지는 않는다' 라는 말이지 제가 물어본 'reg [DWIDTH-1:0] ram [0:MEM_SIZE-1];' 이 합성이 안된다는건 아니다 라는 말씀이 맞는건가요? ㅎㅎ

또한 해당 파일은 메모리를 위한 시뮬레이션용이므로 vivado에서는 합성은 되어 시뮬레이션으로 쓰는 거지 , zynq같은 device에 실행(?)은 안된다라고 이해하면 될까요...ㅠ?? 

 

A2

안녕하세요 :)

memory는 별도의 cell이니 해당 파일로 합성을 해도 'asic에서 메모리가 만들어 지지는 않는다' 라는 말이지 제가 물어본 'reg [DWIDTH-1:0] ram [0:MEM_SIZE-1];' 이 합성이 안된다는건 아니다 라는 말씀이 맞는건가요? ㅎㅎ

-> 네 맞습니다! (비록 합성이 되도 원하는 Memory cell 이 아닌 F/F 가 되지 않을까.. 예상중입니다. 그렇게 써본적은 없네요.)

 

또한 해당 파일은 메모리를 위한 시뮬레이션용이므로 vivado에서는 합성은 되어 시뮬레이션으로 쓰는 거지 , zynq같은 device에 실행(?)은 안된다라고 이해하면 될까요...ㅠ?? 

-> Simulation 용 + Zynq 같은 Device 에 Implementation 가능한 코드를 드렸습니다. (attribute 를 참고)
FPGA Season1 에서 해당 
true-dpbram.v 를 사용하는 것을 보여드릴 계획에 있어요. (커리큘럼영상)

 

true-dpbram.v  은 Simulation 을 위한 Memory Model + Xilinx FPGA 에서는 Implementation 이 가능한 코드입니다.

이해력이 좋으시군요~ 즐공하세요 :)

 

 

반응형