HDL 11

SystemVerilog & UVM Prologue

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

HDL/SystemVerilog 2024.09.25

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

Verilog HDL과 테스트 벤치(Test Bench) 설계 및 결과 확인

안녕하세요, 이번 글에서는 Verilog HDL로 Adder를 구현하고, 그 결과를 테스트 벤치(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을 선택합니다. Adder를 구현했습니다. module adder( input[3:0]data_a, input[3:0]data_b, output[3:0]sum ); assign sum = data_a + data_b ; endmodule Verilog HDL Chec..

HDL/Verilog 2023.09.27

Procedural Timing Control(delay, event, wait), Behavioral Statements(if-else, case, for loop) and Block Execution Types(Sequential Blocks, Parallel Blocks)

이번 글에서는 Delay, Event, Wait에 대해서 알아보겠습니다. 이들은 모두 initial과 always block에 사용되며 procedural block에 속합니다. Verilog를 공부하면서 각 구문이 어디에 속하는지 확인하는 것이 참 중요하다는 것을 느껴 자주 확인합니다. Delay Control Regular (Inter - Assignment) Delay Control과 Intra - Assignment Dealy Control 두 종류가 있습니다. Regular (Inter - Assignment) Delay Control는 RHS와 LHS 동시에 적용됩니다. Blocking 구문에서 사용됩니다. Intra - Assignment Dealy Control는 LHS만 적용됩니다. No..

HDL/Verilog 2023.08.12

Verilog Behavioral Modeling - Continuous Assignments & Procedural Blocks

Continuous Assignments : Model the behavior of combinational logic by using expressiongs and operators ex) Wire [15:0] adder = data_a + data_b; or Wire [15:0] adder; assign adder = data_a + data_b; Continuous Assignments Characteristics Wire [15:0] adder = data_a + data_b; 이 구문에서 = 기준으로 왼쪽을 Left Hand Side(LHS), 오른쪽을 Right Hand Side(RHS)라고 합니다. 1. LHS에는 "꼭" data type이 정의되어야 합니다. 2. RHS에는 어떤 data ..

HDL/Verilog 2023.08.10