개발 편의성을 위한 소소한 Tips

[Verilog HDL Q/A. 010] always @ (*) 에 대해서..
해당 내용을 많이 헷갈려하시는 것 같아서 정리합니다. 결론은 Combinational Logic 이고, 문법을 정확하게 이해가 사용하신다면, Latch 를 만들일도, ASIC 이 불가능 할 일도 없습니다. 11년차인 저와, 저보다 훨씬 오래된 경력을 갖고 계신 분도 사용하고 계십니다. always@ 안에 기술되는 Type 은 reg 여야 합니다. (port 는 예외) 이 말은 reg 라고 전부 F/F 이 아닙니다. always 의 level sensitive 로 사용하느냐 (combinational Logic), Clock Edge Sensitive 로 사용하느냐 (Sequential Logic) 에 따라서 갈립니다. 다음은 유사한 질문을 갖고 계시는 분들의 질의 응답입니다. Q1. 조합회로의 두가지 코..

[Verilog HDL Q/A. 009] WSL 에서 Vivado 2021.1 GUI 설치
Intro WSL 에서 2021.1 설치가 안된다고 해서 Test 하였습니다. 본문 GUI 로 설치중입니다. 이대로 해서 같이 설치 해보아요! 포기할 수 없습니다 ㅎ 설치시간 줄이려고 필요없는건 체크에서 해제했습니다. 적절히 path 를 잡아주시고, 여기서 부터 중요한데, 하단에 Preferences 라고 있습니다. 눌러 주시고, 세번째, Disk Usage Settings 탭에 가시면, 위와 같이 Disk Usage optimization 을 off 합니다. 그리고 Install 을 눌러주세요. 한번 부탁드립니다. (저도 이렇게 설치 중입니다.) 잘 설치 됩니다. :)

[Verilog HDL Q/A. 008] vaild신호 Concatenation문법 질문
들어가기 전에... Syntax 먼저 숙지하기 답변은 먼저 Concatenation 문법을 이해했다 가정합니다. (해당 링크 글을 이해 후 다음 글을 봐주세요.) https://www.chipverify.com/verilog/verilog-concatenation Q1 r_valid 값을 제가 시뮬레이션에 추가해서 따라가보면서 확인했습니다. 그 결과 000 001 011 111 로 변경되는 것을 확인했습니다. 0(2)0(1)0(0) 비트수 별로 번호를 매겼을 때 이렇게 표현되고 {r_valid[1:0], i_valid}는 0(1)0(0) 이 두비트에 i_valid가 추가된다고 생각하면 되나요?? A1 Shift Register 를 확인하시면 될 것 같아요. 다 읽어보진 마시고, 아! 라고 생각나시면 그만..

[FPGA Q/A. 008] FCLK_Reset 을 PS 에서 제어하기.
Q Hello Matbi world 를 진행하던 도중, zynq processor 와 제가 만든 user ip 를 create block design 을 통해 연결하는 부분이 있습니다. 이 부분에서, run block automation 을 하게 되면 zynq의 FCLK 신호와 reset 신호가 user ip 부분에 연결이 됩니다. CLK는 이해가 되는데 FCLK_Reset 이 어떤 역할을 하는 신호인지 잘 모르겠습니다. verilog 코드 상에서 reset 신호를 받아서 말 그대로 reset 신호로 사용하기에 reset 신호를 sw 따위로 주겠구나 생각했는데 그냥 zynq 로 주게 되면 그 FCLK_reset 신호는 vitis 의 c코드로 제어할수 있는 것인가요? A 안녕하세요 :) 먼저 사전 설명을 ..
[Verilog HDL Q/A. 007] ASIC 에서 합성가능한 Memory code?
Q1 안녕하세요. 맛비님의 강의를 듣고 있는 수강생입니다. 다름이 아니라 'BRAM - 실습편'의 'true-dpbram.v'파일은 asic으로 설계시 합성이 안되~라고 언급을 해주셨는데, reg [DWIDTH-1:0] ram [0:MEM_SIZE-1]; 네 맞습니다! (비록 합성이 되도 원하는 Memory cell 이 아닌 F/F 가 되지 않을까.. 예상중입니다. 그렇게 써본적은 없네요.) 또한 해당 파일은 메모리를 위한 시뮬레이션용이므로 vivado에서는 합성은 되어 시뮬레이션으로 쓰는 거지 , zynq같은 device에 실행(?)은 안된다라고 이해하면 될까요...ㅠ?? -> Simulation 용 + Zynq 같은 Device 에 Implementation 가능한 코드를 드렸습니다. (attribu..

[Verilog HDL Q/A. 006] verilog 특성 관련 질문 (동작 관련)
Q1. 맛비님 현재 chapter 2를 수강하던 중 궁금한 점이 생겼습니다. 1. 제가 유튜브 같은 곳에서 verilog 특징을 찾아보다 영상에서 'verilog는 일반적인 소프트웨어 언어와 다르다 기본적으로 항상 무한 반복된다'라는 말을 들었습니다. 우리가 C 같은 언어는 while문을 돌지 않는 이상 프로그램이 한 번 실행된 뒤 끝납니다 위 말에 따르면 verilog는 $finish;를 만나지 않는다면 코드가 무한하게 반복되는다는 건데 맞는 생각인가요? 2. 1번 질문에서 파생된 것인데. chapter2에서 initial begin - end는 딱 한번만! 실행된다고 하셨습니다. 그럼 1번 질문에서 verilog는 $finish가 없다면 계속 반복된다 라는 말이 맞다면 inital begin - en..

[Verilog HDL Q/A. 005] High impedance 출력
Q. High impedance 출력 안녕하세요! 시뮬레이션시 출력 중간시점에 High-z 가 나오는 이유가 무엇일까요 그리고 제거하는 방법은 무엇인지 알수 있을까요 A. 안녕하세요 :) 해당 내용은 최근에 본적이 있어서 빠르게 답변드립니다. unknown 은 값을 알 수 없을때. high impedance Z 는 연결이 되지 않은 Floating 상태일때 발생합니다. Simulation 상에서는 둘다 'unknown' 으로 보여지구요. (simulation tool 마다 다르겠지만.. 보통?) 해결 방법은 unknown : reset 을 통한 초기화 high impedance Z : 신호를 연결하시면 됩니다. 즐공하세요 :)

[Verilog HDL Q/A. 004] 비메모리 설계시, 리눅스 환경을 사용하는 이유
Q. 윈도우 환경이 아닌 리눅스를 사용하는 이유는 오로지 개발 속도? 때문인가요.? ( 학부 프로젝트 경험 상, 윈도우에서 개발하는 것도 충분하다 느껴졌고 더군다나 설치과정에서도 GUI 상에서 설치하면 간단한반면에,리눅스에서 커맨드 라인으로 하는 이유가 궁금하네요.. ) A. 회사마다 개발환경은 다르겠으나, 최소한 제가 다녔던 모든 회사는 Linux 에서 개발을 하였습니다. 이유는 크게 두가지로 생각하는데요. 1. Tool 최적화관점. 대부분의 Major 설계 Tool (Synopsis, Cadence, mentor) 들을 보면, ASIC Flow 를 진행하기 위해서 사용합니다. 이 때 사용하는 Tool 들이 Linux 기반에 최적화가 되어있습니다. 현업가시면 자연스럽게 Linux 환경을 사용하실 겁니다..