오늘 처음 배운 건 Verilog에서 숫자를 표현하는 방식이었다. C언어나 일반 프로그래밍이랑 다르게, Verilog는 [비트수]'[진수][값] 형식으로 숫자를 쓴다. 예를 들면 4'b0110이면 4비트짜리 이진수 0110이라는 거다. 처음엔 왜 이렇게 복잡하게 쓰나 싶었는데, 하드웨어는 비트 하나하나가 실제 물리적인 자원이라 크기를 명확하게 정의해야 한다는 걸 알고 나니까 납득이 됐다. 숫자가 커질수록 16진수로 표현하는 게 비트 파악에 훨씬 편하다는 팁도 실용적으로 와닿았고, 상위 비트를 비워두면 자동으로 0으로 채워진다는 동작 원리도 새로 알게 됐다. 이어서 결합·반복 연산자랑 조건 연산자도 배웠다. 결합 연산자 { }는 비트들을 순서대로 이어 붙이는 건데, {1'b0, 3'b110} 쓰면 4'b0110 이렇게 되는 거다. 반복 연산자 { { } }도 {3{2'b10}}이 6'b101010 되는 거 보면서 생각보다 직관적이라는 느낌 받았다. 근데 오늘 제일 인상 깊었던 건 조건 연산자 ? :였다. C언어 삼항 연산자랑 똑같은 구조인데, Verilog에서는 이게 실제 Mux 회로를 만들어낸다는 게 신기했다. wire a = en ? b : c; 이 한 줄이 2:1 Mux 회로랑 1:1로 대응된다는 걸 보면서 "코드 한 줄이 곧 회로구나" 하는 게 진짜로 와닿았다. 지난 시간에 배운 RTL이랑 Sequential logic 개념에서 자연스럽게 이어지는 내용이라서, 오늘 배운 숫자 표현이랑 연산자 문법이 레지스터 사이에서 데이터가 어떤 크기로 전송되고 처리되는지랑 연결된다는 게 느껴졌다. IF → ID → EX → MEM → WB 파이프라인도 결국 이런 기초 문법으로 짜인 회로 위에서 돌아가는 거라고 생각하니까 전체 그림이 조금씩 잡히는 것 같았다. 목표가 반도체 공정 설비 쪽이다 보니까, 비트 하나 차이가 하드웨어 면적이랑 전력 소모까지 바꾼다는 얘기가 특히 현실적으로 들렸다. 이런 기초를 제대로 쌓아두면 나중에 장비 제어 로직이나 이상 발생 시 데이터 흐름 파악하는 데도 분명 연결될 것 같다. 오늘도 필기하면서 열심히 들었고, 내일 복습 한 번 더 해서 확실히 잡아둘 생각이다