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 이 가능한 코드입니다.
이해력이 좋으시군요~ 즐공하세요 :)
'개발 편의성을 위한 소소한 Tips > 04 질의 응답 정리' 카테고리의 다른 글
[Verilog HDL Q/A. 008] vaild신호 Concatenation문법 질문 (0) | 2021.10.05 |
---|---|
[FPGA Q/A. 008] FCLK_Reset 을 PS 에서 제어하기. (0) | 2021.09.21 |
[Verilog HDL Q/A. 006] verilog 특성 관련 질문 (동작 관련) (0) | 2021.09.14 |
[Verilog HDL Q/A. 005] High impedance 출력 (0) | 2021.09.11 |
[Verilog HDL Q/A. 004] 비메모리 설계시, 리눅스 환경을 사용하는 이유 (3) | 2021.09.10 |