Verilog(with SV)문법 – always의 종류들

Verilog의 always와 reg, wire가 SystemVerilog의 always_comb, always_latch, always_ff와 logic으로 어떻게 바뀌었는지 비교한다. 바뀐 이유와 장단점은 simulation과 합성 결과로 확인한다. case 글에 이은 문법 연재 두 번째 글이다. Verilog에 있던 것을 먼저 보고 SystemVerilog가 바꾼 것을 뒤에 본다. 예제는 iverilog 13.0과…

PVT corner, TT·SS·FF의 의미부터 signoff까지

sky130 library에서 flip-flop의 clk-to-Q는 SS와 FF corner 사이에 세 배 넘게 벌어진다. TT, SS, FF 같은 PVT corner는 무엇을 뜻하고, signoff에서는 어느 corner로 setup과 hold를 볼까? PVT는 transistor 속도를 바꾸는 공정, 전압, 온도다 같은 netlist라도 어느 wafer에서 나왔는지, 전원이 얼마나…

SRAM Macro 이론부터 생성까지

메모리 컴파일러에서 SRAM macro의 column mux나 bank를 바꾸면 면적과 속도, 전력은 어떻게 달라질까? 6T bitcell이 읽고 쓰는 원리부터 보고, CACTI 7 sweep과 OpenRAM sky130 macro로 직접 확인했다. SRAM은 floorplan에 통째로 놓는 hard macro다 메모리 컴파일러가 만든 SRAM은 layout까지 끝난 hard…

Verilog 문법 – case의 종류들

Verilog의 case, casez, casex와 SystemVerilog의 case inside, unique, unique0, priority가 item을 어떻게 비교하고 어떤 logic으로 합성되는지를 simulation과 합성 결과로 정리한다. case 문은 RTL에서 가장 자주 쓰는 구문이다. FSM 글에서는 next-state logic을 case로 썼고, clock gating 글에서는 빠진 분기가 latch를 만든다는…

CDC의 metastability와 synchronizer, async FIFO의 gray code

clk_a domain의 a_reg 출력이 CDC boundary를 건너 clk_b로 도는 sync1, sync2 두 FF를 차례로 지나 clk_b logic으로 들어가는 2-FF synchronizer 구조도

clock이 다른 두 영역 사이로 신호를 넘기면 받는 FF가 metastable에 빠지거나 여러 비트가 서로 다른 주기에 도착한다. synchronizer와 handshake, gray code를 쓰는 async FIFO가 이것을 막는다. SoC 안에서는 CPU, bus, DDR controller, 주변장치, 외부 interface가 저마다 다른 clock으로 돈다. 같은…

Setup/hold timing과 glitch-free clock mux

sel과 반대편 가지의 enable을 받아 rising edge FF와 falling edge FF를 거친 enable로 clk0, clk1을 각각 AND한 뒤 OR로 합치는 glitch-free clock mux 구조

setup/hold 위반은 PD에서 어떻게 고치고, clock을 늦추면 왜 setup만 풀릴까? clock을 바꿀 때 mux에 생기는 glitch와 이를 막는 glitch-free clock mux는 simulation으로 확인했다. SoC는 동작 중에 clock을 바꾼다. 전원이 들어오면 PLL이 lock될 때까지 oscillator clock으로 돌다가 PLL 출력으로 넘어가고, 할…

Clock gating ICG 셀의 구조와 RTL의 latch 규칙

E와 TE를 OR로 합쳐 CP가 0일 때 열리는 latch에 담고, latch 출력과 CP를 AND해 gated clock Q를 내는 ICG 셀 구조

clock gating에 쓰는 ICG(Integrated Clock Gating) 셀은 왜 FF가 아니라 latch로 enable을 붙잡을까? clock을 끊을 때 생기는 glitch를 막으면서 enable에 한 주기 가까운 timing 여유를 주기 때문이다. level-sensitive latch는 enable이 열린 동안 D를 그대로 통과시키고, edge-triggered FF는 clock edge 한…

RTL로 설계하는 FSM의 구조, 동작 그리고 예시

master latch와 slave latch를 직렬로 이은 D FF, master는 clk=0일 때 slave는 clk=1일 때 transparent

Verilog로 FSM을 짜면 상태 값은 어디에 저장될까? 다음 상태는 combinational logic이 곧바로 계산하고, 상태는 clock edge에서 flip-flop(FF)이 잡아 둔다. FSM을 처음 배울 때 흔히 떠올리는 그림은 ‘다음 상태가 latch에 잠깐 담겼다가 다음 clock에 넘어간다’는 것이다. 다음 상태는 latch를 거치지 않는다…

오키나와 – 하얏트 리젠시 세라가키

오키나와에는 많은 호텔들이 있지만 이번에 소개하고 싶은 곳은 친숙한 이름, Hyatt다. 하얏트 리젠시 세라가키 하얏트 리젠시는 오키나와 중부, 온나손에 위치해있다. 공항에서 약 1시간 정도 운전해서 떨어진 위치에 있어서 렌트를 해서 가는 편이 좋지만 공항 버스가 다니는 것도 보긴 했으니 다른…