분류 전체보기 20

SystemVerilog 훑어보기

안녕하세요,00장 둘러보기 - UVM Testbench 작성의 내용을 바탕으로 SystemVerilog에 대해 간단하게 정리해보았습니다. Verilog는 많이 접해볼 수 있는데 SystemVerilog는 자료 찾기가 상대적으로 좀 힘들었던 것 같습니다.이제 가볍게 훑어보면서 위키독스를 격파하도록 하겠습니다.반도체 칩 구조가 점차 복잡해지면서 검증의 중요성과 비중 또한 높아지고 있습니다.아래 그림은 SoC의 블록 다이어그램인데 이렇게 하나의 칩 내부는 여러 블록으로 구성되어 있습니다.이 블록을 모듈 또는 IP(Intellectual Property, 이하 IP)라고 합니다.과거에는 반도체 회사들이 IP를 직접 설계했지만, 이제는 IP 설계 업체로부터 검증된 IP를 구매해 칩을 설계합니다.IP를 직접 설계하..

HDL/SystemVerilog 2025.01.20

SystemVerilog & UVM Prologue

안녕하세요, Vernit입니다.저는 RTL 설계를 맛만 본 후 SoC Verifaction 엔지니어로 일하고 있습니다.Verilog까지는 어떻게 이해가 되는데 SystemVerilog부터는 구조가 변하면서 이해하기 어려웠습니다. 그리고 UVM으로 가면서 또 어려웠습니다. 어려움을 극복해본 경험을 공유해 독자에게 도움되고자 이 블로그에 글을 씁니다.제 블로그에 오시는 분들 모두 SystemVerilog와 UVM에 대해 혼자 공부할 수 있는 의지를 갖게 하는 것이 목표입니다.https://wikidocs.net/170177 이 자료를 참고하면서 공부했었는데, 설명을 조금 더 쉽게 풀거나 제가 어려웠던 부분을 자세히 설명하는 방식으로 글을 쓸 예정입니다.이렇게 큰 구조를 파악하면 나머지는 구글링하면서 스스로 ..

HDL/SystemVerilog 2024.09.25

RS Latch과 Level Trigger(레벨 트리거)를 포함해 한 번에 제대로 설명한 Edge Trigger(에지 트리거)의 동작 원리

안녕하세요, 이 글을 보러 오시는 분들은 대부분 Edge Trigger와 Level Triger의 차이를 알고 싶으실 것입니다.먼저 Edge Trigger와 Level Trigger 차이를 보고, Edge Trigger의 동작 원리를 보겠습니다.  Edge Trigger는 Clock Pulse가 Rising or Falling Edge에서'만' Data를 캡처하고,Level Trigger는 Clock Pulse가 High or Low에서만 Data를 캡처합니다.Clock Pulse가 Rising or Falling Edge인 시간이 High or Low 되는 시간보다 짧기에 Datat를 잘 캡처할 수 있습니다.즉, High or Low인 시간은 상대적으로 길기에 중간에 상태가 변화할 수도 있어 Data ..

제일 쉽게 I2C를 알아보자

안녕하세요 이번 글에서는 I2C에 대해서 아주 쉽게 알아보겠습니다.현재 이 부분의 칩설계를 담당하고 있는데 인터넷 검색해 보니 버스, 프로세서, 프로토콜 등등 단어로 쉽게 와닿지 않았습니다. 처음 I2C를 보시는 분들이 쉽게 이해할 수 있도록 용어를 쉽게 풀어서 쓰겠습니다.I2C는 Inter-Integrated Circuit입니다. 부르다 보니 줄여서 I2C라고 불립니다.원래의 Inter-Intergated에서 유추할 수 있듯 integrated Circuit(이하 IC) 사이의 통신 프로토콜입니다.여기서 통신 프로토콜이란 약속이란 뜻입니다. 즉,  통신하기 위해서는 IC 사이에 데이터를 주고받는데 이 데이터를 읽고 쓰기 위해서 정한 약속입니다. 실제 I2C가 데이터를 주고받을 때는 (standard m..

수동 소자 R, L, C에서 C와 L의 전압, 전류 특성 알아보기

안녕하세요, 이번 글에서는 C(Capacitor)와 L(Inductor)의 전압 전류 특성을 알아보겠습니다. 먼저 C에 대해 알아보겠습니다.아래와 같은 Pspice 회로에서 전압과 전류를 측정해 보겠습니다.V1 양 단의 전압 그래프와 C1 양 단의 전압 그래프입니다.입력 전압이 급격히 변할 때, 출력 전압은 그 변화를 느리게 합니다. 현재 C1은 1u(F)인데 이 값이 클수록 전압의 변화를 더 느리게 합니다. 2uF 변경한 시뮬레이션 결과입니다.출력 전압이 입력 전압의 반응을 따라가지 못해 5V에 도달하지 못합니다. 이제 전류 특성을 알아보겠습니다.전압의 변화량에 의해 전류의 세기가 결정됩니다. 아래의 식에 의한 결과입니다.그러므로 C1이 2uF인 회로는 전압 변화가 느리므로 이로 인한 전류의 크기도 작..

Verilog HDL로 asynchronous control 구문 작성과 테스트 벤치(Test Bench)로 결과 확인하기

안녕하세요, 이번 글에서는 Verilog HDL로 asynchronous control 구현 및 그 결과를 테스트 벤치(Test Bench)로 확인하겠습니다. 환경 HDL : Verilog’ 2001 spec RTL Synthesis : Intel(Altera), Quartus prime 18.1 Functional Simulation : Intel(Altera), ModelSim 10.5b Quatus의 [File] → [New]에서 Verilog HDL File을 선택합니다. asynchronous control을 구현했습니다. module counter( inputclk, input aclr_n, output reg count_out ); always @ (posedge clk, negedge ac..

HDL/Verilog 2023.10.02

Verilog HDL로 synchronous control 구문 작성과 테스트 벤치(Test Bench)로 결과 확인하기

안녕하세요, 이번 글에서는 synchronous control을 구현하고, 그 결과를 테스트 벤치(Test Bench)로 확인하겠습니다. clock이 실행되면서 clock enable이 활성화될 때, reset 신호에 따라 data를 출력하거나 0으로 reset 합니다. 환경 HDL : Verilog’ 2001 spec RTL Synthesis : Intel(Altera), Quartus prime 18.1 Functional Simulation : Intel(Altera), ModelSim 10.5b Quatus의 [File] → [New]에서 Verilog HDL File을 선택합니다. synchronous control를 구현했습니다. module reg16( inputclk, inputsclr_n..

HDL/Verilog 2023.10.01

Verilog HDL로 shifter 구문 작성과 테스트 벤치(Test Bench)로 결과 확인하기

안녕하세요, 이번 글에서는 Verilog HDL로 4bit를 이동시키는 shifter 구현 및 그 결과를 테스트 벤치(Test Bench)로 확인하겠습니다. 환경 HDL : Verilog’ 2001 spec RTL Synthesis : Intel(Altera), Quartus prime 18.1 Functional Simulation : Intel(Altera), ModelSim 10.5b Quatus의 [File] → [New]에서 Verilog HDL File을 선택합니다. shifter를 구현했습니다. module shifter( input[7:0]inp, input[1:0]shift_cntrl, output reg [15:0]shift_out ); always @ (*) begin if(shift..

HDL/Verilog 2023.09.30

Verilog HDL로 2_input_mux 구문 작성과 테스트 벤치(Test Bench)로 결과 확인하기

안녕하세요, 이번 글에서는 Verilog HDL로 2_input_mux를 구현하고, 그 결과를 테스트 벤치(Test Bench)로 확인하겠습니다. 환경 HDL : Verilog’ 2001 spec RTL Synthesis : Intel(Altera), Quartus prime 18.1 Functional Simulation : Intel(Altera), ModelSim 10.5b Quatus의 [File] → [New]에서 Verilog HDL File을 선택합니다. 2_input_mux를 구현했습니다. module mux4( input [4:0] mux_a , input [4:0] mux_b , input[1:0]mux_sel, output reg[4:0] mux_out ); always @(*) be..

HDL/Verilog 2023.09.29

Verilog HDL로 4x4 multiplier 구문 작성과 테스트 벤치(Test Bench)로 결과 확인

안녕하세요, 이번 글에서는 Verilog HDL로 4x4 multiplier를 구현하고, 그 결과를 테스트 벤치(Test Bench)로 확인하겠습니다. 환경 HDL : Verilog’ 2001 spec RTL Synthesis : Intel(Altera), Quartus prime 18.1 Functional Simulation : Intel(Altera), ModelSim 10.5b Quatus의 [File] → [New]에서 Verilog HDL File을 선택합니다. 4x4 multiplier를 구현했습니다. module mult4x4 ( input[4:0]data_a, input[4:0]data_b, output[9:0]product ); assign product = data_a * data_b..

HDL/Verilog 2023.09.29