본문으로 건너뛰기Skip to content 1:1 문의 — [email protected]로 이메일 작성 Contact us — email [email protected]

Clock gating 검증: enable 파형부터 CTS·scan·wake까지

합성 로그의 clock gate 수와 실제 절전은 다르다. 재현 실험과 공개 셀·controller 문서로 안전하게 멈추고 다시 켜는 조건을 검증한다.

An exposed RISC-V prototype die with bond wires in a gold-colored package, photographed in 2013.
Context photograph: RISC-V prototype chip, 2013; not an ICG, OpenTitan or SKY130 implementation image. Dcoetzee / Wikimedia Commons, CC0 1.0. Single watermark added; no generative pixel changes.

Clock gating은 clock의 일부 pulse를 막아 불필요한 switching을 줄이는 기법이다. 하지만 enable이 맞다는 증명, pulse가 안전하다는 증명, 블록이 다시 깨어난다는 증명은 서로 다르다. ICG를 넣었다는 합성 로그만으로 이 세 문제가 닫히지는 않는다.

VLSI Korea view: 좋은 clock gate는 많이 꺼지는 gate가 아니라, 상태를 잃지 않고 꺼졌다가 필요한 순간에 다시 열리며 실제 전력까지 줄이는 gate다.
Four independent obligations surround one clock-gating decision.
Original VLSI Korea framework: pulse, state, physical timing and liveness. Open full-resolution figure

이 글은 RTL의 clock-enable을 합성 결과까지 추적하려는 설계자와, 그 결과를 CTS·DFT·시스템 검증으로 넘겨야 하는 엔지니어를 위한 글이다. 어느 register를 함께 묶을지, 그리고 어느 gated branch를 유지할지 판단할 수 있도록 작은 재현 실험과 가정 기반 계산을 연결했다.

통상적인 설명은 clock gating의 switching 감소에서 끝난다. 우리의 차이는 그 이득을 인정하되 pulse, state, physical timing, liveness라는 네 조건이 동시에 성립하는 경계를 찾는 데 있다. 이를 이 글의 분석 틀인 Four-contract gating review로 부르겠다.

1. ICG가 저장하는 것은 데이터가 아니라 enable이다

여기서는 rising-edge register와 low-transparent latch를 쓰는 ASIC형 gate를 다룬다. Clock이 low일 때 latch가 enable을 받아들이고, high일 때는 저장한 값을 유지한다. 그 값과 clock을 AND하면 high 구간 한가운데서 enable이 바뀌더라도 출력 pulse를 즉시 자르지 않는다.

공개 SKY130 dlclkp 문서의 functional schematic에서 이 구조를 직접 볼 수 있다. 이 셀의 기능 입력은 GATE와 CLK, 출력은 GCLK다. 별도 test-enable 입력이 있는 셀이라고 읽으면 안 된다.

SKY130 dlclkp functional schematic showing an inverted-clock latch followed by an AND gate.
SKY130 dlclkp functional schematic. This cell has GATE and CLK inputs, no separate test-enable pin. The SkyWater PDK Authors, Apache 2.0. Rasterized and watermarked; original geometry preserved. Open full-resolution figure Full license and notices

그림의 latch는 clock을 생성하는 PLL이 아니다. Clock frequency를 새로 합성하지도 않고, 입력 clock의 phase noise를 정리하지도 않는다. 출력에서 살아남은 pulse 사이의 간격은 workload에 따라 달라질 수 있지만, gate를 통과하는 원래 clock의 period를 임의로 바꾸는 기능은 아니다.

Clock gating은 power gating과도 다르다. Supply를 차단하지 않으므로 clock을 멈춘 register는 정상적인 전원 조건에서 상태를 유지할 수 있다. 대신 leakage가 사라진다고 기대할 수 없고, downstream 조합논리에 외부 입력이 계속 들어오면 그 부분의 switching도 남을 수 있다.

Latch가 있다는 사실은 asynchronous enable의 metastability 해결책이 아니다. Enable이 latch가 닫히는 경계에서 흔들리면 실제 셀의 setup·hold 조건을 확인해야 한다. 입력을 어떻게 동기화하고 요청을 얼마나 오래 유지할지는 별도의 CDC와 protocol 설계 문제다.

2. 깨끗한 waveform과 올바른 상태는 따로 확인한다

이를 보기 위해 VLSI Korea가 직접 작성한 이상적 RTL 실험에서 clock period를 10 ns로 뒀다. Clock은 5 ns마다 반전하고, 처음에는 enable과 latch의 저장값을 모두 0으로 초기화했다. 이 초기화는 실험 가정이며 실제 ICG의 reset 사양을 뜻하지 않는다.

첫 rising edge 뒤인 7 ns에 enable을 올리자 단순 AND의 출력은 7–10 ns에만 high가 됐다. 정상적인 high 폭 5 ns 대신 3 ns짜리 pulse가 생긴 것이다. Low-transparent latch를 거친 경로에서는 같은 시점에 새 rising edge가 나오지 않았다.

Ideal RTL waveforms show raw-AND partial pulses and a low-transparent-latch gated output.
VLSI Korea ideal RTL experiment. Raw AND creates partial pulses; the latch preserves full high intervals. Not a silicon timing measurement. Open full-resolution figure

이어 enable을 12 ns에 내리면 다음 정상 rising edge까지 요청이 유지되지 않는다. Latch가 앞선 잘못된 pulse를 막았다는 사실과, 이 짧은 요청이 유효한 작업으로 받아들여졌다는 주장은 다르다. 요청자가 기대한 “한 번 실행”을 보장하려면 요청 유지와 수락 규칙이 필요하다.

A short request ends before acceptance while a held request spans the permitted edge.
VLSI Korea original protocol illustration; request persistence is distinct from pulse shaping. Open full-resolution figure

22 ns에 다시 enable을 올린 뒤 38 ns에 내리는 경우도 비교했다. 단순 AND는 35–38 ns에서 pulse를 잘랐고 latch 경로는 35–40 ns의 high 구간을 끝까지 유지했다. Pulse 형태를 보존하는 저장소와 작업의 의미를 보존하는 protocol을 혼동하지 말자.

이 결과는 Icarus Verilog로 실행한 zero-delay RTL 관측이다. 실제 silicon의 최소 pulse width, clock slew, PVT, jitter, library timing arc, SDF, metastability를 측정한 것이 아니다. 여기서 3 ns가 나쁘다는 이유는 보편적인 공정 한계여서가 아니라, 같은 실험의 정상 pulse를 중간에서 잘랐기 때문이다.

실무에서는 wave viewer에서 몇 개의 모양만 확인하고 넘어가기 쉽다. 하지만 기능 비교가 샘플링하는 edge 사이에 extra edge가 있는지, disable 전 마지막 정상 edge가 유지되는지, enable 뒤 첫 정상 edge에 필요한 데이터가 준비되는지까지 관측해야 한다. 각각 실패 원인이 다르므로 하나의 pass 표시로 묶지 않는 편이 좋다.

3. 합성의 “몇 개를 묶었나”는 내부 표현부터 읽는다

Yosys 0.46의 공개 clockgate 문서는 같은 clock과 enable을 공유하는 FF 집합을 ICG와 enable 없는 FF로 바꾸는 동작을 설명한다. 우리는 설치된 Yosys 0.67+post에서 같은 인터페이스를 확인하고, 별도의 작은 register bank를 직접 실행했다.

입력은 always @(posedge clk) if (en) q <= d;로 표현한 32-bit bank다. proc; opt 뒤 결과에는 WIDTH가 32인 $dffe 하나가 있었다. 이 단계의 cell 객체 개수와 저장하는 bit 수를 먼저 구분해야 한다.

One word-level enabled flip-flop cell remains unchanged at threshold eight but becomes a gate and an enable-less cell at threshold one.
VLSI Korea executed Yosys experiment. Cell-object count and state-bit count differ in this representation. Not an area or power benchmark. Open full-resolution figure

이 상태에서 clockgate -pos cg E:CK:Q -min_net_size 8을 실행하면 변환된 FF는 없었다. 동일 netlist에 최소값만 1로 바꾸면 cg 하나와 WIDTH 32의 $dff 하나가 남았다. 이 실행·표현에서 threshold 판단이 word 폭을 그대로 물리 flop 개수로 세지 않았다는 관측이다.

따라서 최소값 1을 production 기본값으로 권하는 것이 아니다. 먼저 현재 pass가 보는 IR, enable polarity, reset·initialization 표현과 mapping 순서를 확인하자는 뜻이다. 같은 RTL이 다른 단계에서 bit 단위 cell로 나뉘어 있다면 같은 숫자의 의미부터 다시 검증해야 한다.

변환 뒤에도 상태 bit는 32개다. 없어진 것은 register의 enable 표현이며 clock 경로에 새 제어 객체가 생겼다. “FF 수가 줄었다”는 문장으로 요약하면 저장 용량이 줄었거나 특정 면적 감소를 측정한 것처럼 오해하기 쉽다.

우리가 만든 cg는 phase 동작을 보기 위한 이상적 latch+AND 모형이다. SKY130 셀을 mapping하거나 timing library로 검증한 결과가 아니다. Enable과 data를 falling edge에서 바꾸는 자극으로 원본과 변환본을 비교했고, 값이 알려진 200개 샘플에서 일치했다.

Exercised legal RTL assumptions are separated from untested physical and test-mode behavior.
VLSI Korea experiment scope: known-value functional samples do not establish PVT, scan or asynchronous-input correctness. Open full-resolution figure

이 비교는 시작 상태가 알려지지 않은 채 양쪽 모두 X인 경우를 pass로 세지 않는다. 동시에 임의의 asynchronous enable, reset 중단, scan shift, 실제 pulse-width violation까지 증명하지도 않는다. 제한된 실험의 범위를 좁게 적는 것이 약점이 아니라 다음 검증 항목을 정확하게 만드는 방법이다.

OpenROAD의 clock_gating은 별도로 후보 제어 조건을 찾아 ABC의 simulation과 SAT로 논리적 타당성을 확인한다. 이미 공통 enable이 있는 집합을 옮기는 문제와, 새로운 gating 조건을 발견하는 문제는 구분해야 한다. 어느 쪽도 그 논리 증명만으로 배선 후 timing을 보장하지 않는다.

4. Gate를 옮기면 clock path와 enable path가 같이 바뀐다

큰 register 집합을 하나의 gate로 묶으면 gate 개수는 줄 수 있다. 그러나 sink가 넓게 퍼져 있으면 downstream clock wire, buffer와 enable 배선의 부담이 달라진다. 이때 최적화 목표는 gate 수의 최소화가 아니라 clock과 enable이 함께 만족하는 실제 배치다.

A gate separates always-switching upstream clock wiring from stoppable downstream branches.
Original qualitative topology by VLSI Korea. Gate location changes removable load and clock/enable routing obligations. Open full-resolution figure

Root에 가까운 gate는 더 많은 downstream switching을 막을 가능성이 있지만 여러 sink의 요구를 함께 처리해야 한다. Leaf에 가까운 gate는 제어 범위를 좁히기 쉽지만 upstream tree는 계속 움직인다. 이 관계는 토폴로지에 대한 해석이며 특정 공정의 최적 gate 위치를 제시하는 공식이 아니다.

OpenROAD CTS 문서의 -balance_levels는 clock gate나 inverter 같은 non-register cell을 가로질러 비슷한 tree level을 유지하려는 옵션이며 기본값은 false다. Level을 맞추려는 시도는 실제 skew, insertion delay, enable timing과 pulse check가 모두 닫혔다는 뜻이 아니다.

Enable을 launch하는 register의 clock과 gate에서 보는 clock은 배선 후 도착 시간이 달라진다. 그러므로 enable path를 일반 data path에서 보던 감각으로만 판정하면 안 된다. 실제 library가 정의한 gating setup·hold, clock transition과 pulse 조건을 해당 mode와 corner에서 확인해야 한다.

Gate 뒤 clock이라고 해서 무조건 새 create_generated_clock를 추가하는 것도 좋은 규칙이 아니다. Clock propagation과 gate 인식은 도구, library와 constraint 방법론에 달려 있다. Source clock이 올바르게 전파되는지 확인한 뒤 필요한 관계를 정의해야지, 이름을 하나 더 붙여 unconstrained 문제를 덮어서는 안 된다.

Functional and test enables are ORed before low-transparent storage in the generic OpenTitan model.
Original VLSI Korea redraw based on the public OpenTitan generic primitive. The functional enable is assumed synchronized; this is not the SKY130 cell. Open full-resolution figure

Scan은 같은 경계의 다른 사용 모드다. Test override가 어디에서 enable과 합쳐지는지, latch를 거치는지, test clock이 실제 sink까지 닿는지 확인해야 한다. 앞의 dlclkp 예제에는 별도 test pin이 없으며, Yosys의 -tie_lo 기능으로 핀을 0에 묶는 것은 scan 접근성을 완성한 작업이 아니다.

이에 비해 OpenTitan의 generic clock-gating primitive는 functional enable과 test enable을 OR한 뒤 low-transparent latch에 넣는다. 원본 코드도 functional enable이 동기화돼 있다고 가정한다. 이 서로 다른 셀 예를 비교하면 test pin 존재 여부, 결합 위치와 외부 동기화 책임을 셀 이름만 보고 추정할 수 없다는 점이 분명해진다.

VLSI Korea view: equivalence가 맞으면 “조건을 지켰을 때 상태가 맞는다”는 근거를 얻는다. 그 조건을 silicon, scan, wake-up에서 지키는지는 여전히 증명해야 한다.

5. 절전 이득은 gate 뒤에서 실제로 사라지는 capacitance로 계산한다

재현 가능한 작은 모델을 만들었다. 아래의 값은 전부 가정이다. Clock branch의 유효 capacitance는 20 pF, supply는 0.8 V, frequency는 500 MHz이며 gate·control의 평균 overhead는 0.5 mW로 뒀다. 여기서 branch capacitance는 clock의 charging cycle 기준으로 정의한다.

Pbranch = C × V² × f이면 branch의 dynamic power는 6.4 mW다. Clock이 꺼지는 시간 비율을 d, 실제로 꺼지는 branch capacitance의 비율을 r이라고 하면, 간단한 정상상태 모델의 순절감은 d × r × 6.4 − 0.5 mW다. Overhead도 workload에 따라 바뀔 수 있지만 이 비교에서는 고정했다.

Net power saving versus clock-disabled fraction for three removable-load assumptions.
VLSI Korea calculation with assumed capacitance, voltage, frequency and fixed gate/control overhead; negative values mean a net power increase. Open full-resolution figure

전체 branch를 멈출 수 있는 가정에서는 손익분기 disabled 비율이 7.8125%다. 제거 가능한 load가 절반이면 15.625%, 사분의 일이면 31.25%가 필요하다. 동일한 idle 비율이라도 gate 위치와 downstream load가 달라지면 판단이 바뀐다.

예를 들어 disabled 비율이 25%일 때 전체 load를 멈추는 모델은 1.1 mW를 절감하지만, 사분의 일만 멈추면 순절감은 −0.1 mW다. 이것을 특정 설계의 측정 전력으로 읽지 말자. “몇 퍼센트 idle인가” 다음에 “무엇을 실제로 멈췄는가”를 물어야 한다는 민감도 분석이다.

평균 비율만으로 놓치는 것도 있다. Idle이 길게 한 번 오는지, 짧게 반복되는지에 따라 qualification과 restart가 먹는 시간이 달라진다. 같은 총 idle cycle이어도 gate를 열고 닫는 횟수가 많으면 transition 비용이 더 커질 수 있다.

Net energy saving increases with idle opportunity after fixed qualification, restart and transition costs.
VLSI Korea finite-burst calculation. All physical inputs are assumptions, not OpenTitan power measurements. Open full-resolution figure

가정한 idle 기회 40 cycle에서 qualification 10 cycle과 restart 2 cycle을 빼면 실제로 clock을 막는 구간은 28 cycle이다. Period 2 ns에서 차단 에너지는 358.4 pJ, 전체 idle 구간에 부과한 overhead는 40 pJ, 별도 transition 비용은 50 pJ다. 따라서 순절감은 268.4 pJ다.

Suppressed clock energy less control overhead and transition cost gives net energy per idle burst.
VLSI Korea assumed-input energy decomposition. Each bar refers to the same modeled idle opportunity. Open full-resolution figure

여기서 10 cycle은 아래 공개 controller 문서의 숫자와 같지만, 이 모델 전체가 그 controller의 전력 측정이라는 뜻은 아니다. Restart 시간과 transition 에너지를 포함한 모든 물리 입력은 가정이다. 짧은 burst에서 비용이 이득보다 커지는 구조를 드러내기 위해 선택했다.

현업 입력으로 바꾸려면 post-CTS capacitance, 해당 전압·주파수의 power model, 실제 workload의 idle 길이 분포와 wake latency를 넣는다. Model에 포함하지 않은 leakage 변화, enable cone의 switching, clock buffer internal power와 clock 재시작 시 전원망 부담도 분리해서 확인해야 한다.

사업적 의미도 이 순서로만 연결할 수 있다. 검증된 branch 전력 감소가 시스템 전력 예산을 줄일 수는 있지만, 곧바로 cooling 비용 감소나 제품 margin 개선으로 환산할 수는 없다. 다른 블록이 같은 예산을 더 쓰는지, workload 시간이 늘어나는지, 제품이 실제로 어느 제약에 묶이는지를 추가로 알아야 한다.

6. Idle 허용과 root shutdown, wake 경로의 우선순위를 적는다

OpenTitan Earlgrey clock manager 문서에서 transactional clock의 software 제어는 종료 명령이 아니라 hint다. Idle을 10 local clock 동안 확인하는 설명과 별개로, power manager의 root disable은 local 제어보다 우선한다. 그러므로 local idle 검사가 모든 shutdown에서 진행 중 작업을 보호한다고 일반화하면 안 된다.

Original OpenTitan clock-manager block diagram with dashed WFI blocks shown as unimplemented possibilities.
OpenTitan Earlgrey clock-manager block diagram. Dashed WFI blocks are not implemented in the first design described by the documentation; this is not our experiment. lowRISC contributors (OpenTitan project), Apache 2.0. Rasterized and watermarked; original geometry preserved. Open full-resolution figure Full license and notices

위 원본 도식의 dashed WFI block은 문서가 설명하는 최초 설계에서 구현되지 않은 가능 경로다. 도식에 선이 있다는 이유만으로 구현된 기능으로 세지 않았다. Clock 제어의 전체 범위를 이해하기 위한 공개 설계 예이며, 우리 실험의 구현도나 power 측정 대상이 아니다.

이 구분을 설계 review에 가져오면 질문이 구체적이 된다. Local hint, hardware busy, root power request, reset, test override가 동시에 들어올 때 무엇이 우선하는가. Stop 요청이 들어왔다는 사실과 clock이 실제 멈췄다는 acknowledgement는 같은 사건인가.

Generic drain, stop and restart review sequence with a wake request originating outside the stopped clock cone.
Original VLSI Korea liveness review sequence. No claim that a named controller implements this exact sequence. Open full-resolution figure

다음은 VLSI Korea가 제안하는 일반적인 검토 순서다. 새 요청을 막고, 이미 수락한 작업을 drain한 뒤 gating을 요청하고 clock이 멈췄는지 확인한다. 재시작 요청을 만드는 논리와 그 요청을 받아 gate를 여는 논리가 모두 멈춘 clock 아래에 있으면 스스로 깨어날 수 없는 구조가 된다.

OpenTitan DMA 문서는 CONTROL write가 clock gate를 열고 동작 중에는 gate를 유지하는 예를 보여준다. 여기서 가져올 판단은 모든 IP에 같은 레지스터를 쓰라는 것이 아니라, 새 작업을 수락하는 경로와 꺼지는 작업 경로의 경계를 먼저 그리라는 것이다.

Bus가 request를 보낼 수 있지만 destination clock이 꺼질 수 있다면 request를 유지하거나 재시도하는 계약이 필요하다. Queue가 비었다는 내부 상태만으로 idle을 선언하면 뒤늦게 도착하는 응답이나 외부 master의 요청을 놓칠 수 있다. 그 가능성이 있는지는 실제 protocol과 outstanding transaction 정의로 판단한다.

An extra pulse lies between three low-valued sample points.
VLSI Korea original sampling illustration; sampled functional values alone cannot exclude intervening pulses. Open full-resolution figure

Clock manager DV 문서는 제어·상태·gated clock을 SVA로 확인하는 여러 검사를 분리한다. 문서가 설명하는 sampled assertion의 허용 cycle은 아날로그 glitch 검출기의 시간 분해능이 아니다. 정상 동작의 eventual response와 edge 사이의 pulse 위반은 다른 관측 도구가 필요하다.

7. 한국 설계팀의 handoff는 한 장의 경계표로 시작한다

RTL 담당자는 gate 후보의 enable 의미, reset 상태와 clock이 멈춰도 보존해야 할 상태를 넘긴다. Synthesis 담당자는 변환 전후 register 대응과 실제 삽입 조건을, PD 담당자는 gate 위치·sink·배선 뒤 clock/enable 관계를 확인한다. DFT와 검증 담당자는 같은 sink를 각자의 mode에서 다시 추적한다.

Separate evidence types support functional, pulse, scan, liveness and power checks.
VLSI Korea engineering review checklist; each proof has a separate scope. Open full-resolution figure

국내 fabless나 IP integration 팀이 여러 외부 IP를 묶는다면 특히 “누가 clock을 다시 켜는가”를 인터페이스 문서에 남겨야 한다. 우리가 작성한 32-bit 실험은 시작점이 될 수 있지만 vendor IP의 reset과 test 계약을 대신하지는 않는다. 기존 Glitch-Free Clock MUX 글은 source 전환을, 합성 pass 추적 글은 IR 해석을 보완한다.

Review에서는 같은 질문을 반복하기보다 증거를 배치한다. Function은 legal-input 비교와 formal로, phase는 library·STA와 pulse 검사로, scan은 test mode 연결과 coverage로, wake는 멈춘 상태에서 시작하는 protocol 검증으로 본다. 마지막에 power 분석의 입력 workload가 이 모든 제약을 실제로 지키는지 확인한다.

반대 판단도 열어 둬야 한다. 아주 작거나 자주 깨어나는 branch라면 clock gate를 넣지 않는 편이 더 나을 수 있다. Timing 여유가 작은 enable 경로, 이미 효율적인 cell의 internal enable, FPGA 전용 clock 자원 같은 조건에서는 이 글의 latch+AND 예제를 그대로 적용하면 안 된다.

Power, timing and liveness criteria separate retention from redesign or rejection.
VLSI Korea qualitative acceptance matrix. All obligations remain necessary; no abstract score gate. Open full-resolution figure

우리 논지를 깨는 관측은 명확하다. Post-CTS에서 제거 가능한 capacitance가 예상보다 작아 overhead를 회수하지 못하거나, wake source가 gated cone 안에 있거나, scan·timing 검증이 RTL 실험의 전제를 무너뜨리면 그 gate는 다시 설계해야 한다. Gated-register 비율이 높다는 숫자는 이런 반증을 덮지 못한다.

다음 날짜는 발표 예정일이 아니라 편집상 재검토 시점이다. 2027-03-07에는 동일 변환과 register 표현·scan 연결을, 2027-06-07에는 idle burst 분포와 배선 후 손익을, 2027-09-07에는 root 제어·wake 도달성·library pulse 조건의 변경을 확인할 항목으로 남긴다. 현재 근거 기준일은 2026-09-07이다.

Different original sources support representation, storage, physical and system claims.
VLSI Korea evidence map linking public technical sources to their actual scopes. Open full-resolution figure

원출처와 재현 범위

Yosys 0.46 clockgate command · OpenROAD clock gating · OpenROAD clock tree synthesis · OpenTitan Earlgrey clock manager theory · OpenTitan DMA theory of operation · SKY130 dlclkp cell documentation and schematic · OpenTitan clock manager DV · OpenTitan generic clock-gating primitive

Figures: Copyright 2020 The SkyWater PDK Authors; Copyright 2024 lowRISC contributors (OpenTitan project). The OpenTitan figure includes work developed as part of the OpenTitan project (repository). Licensed under Apache 2.0. The full license and applicable NOTICE accompany the source figures in the appendix below. Rasterization and a single watermark were added; no endorsement is implied.

AI는 공개 자료 정리와 원고·도식 제작을 보조했다. 독립 사실 검토를 거쳤다. RTL 실험은 이상적 모델이며 계산의 물리 입력은 가정이다. 실제 PDK signoff나 silicon 전력 측정을 수행한 것으로 읽지 않아야 한다.

Source figure licenses and notices

Full license and applicable NOTICE for the SkyWater and OpenTitan source figures reproduced above. Rasterization, a white background and one centered watermark were added; no source geometry changed.

The SkyWater PDK Authors

Copyright 2020 The SkyWater PDK Authors.

Original source figure

lowRISC contributors (OpenTitan project)

The OpenTitan Project
Copyright 2024 lowRISC contributors (OpenTitan project).

This product includes hardware and/or software developed as part of the
OpenTitan(R) project (https://www.opentitan.org,
https://github.com/lowRISC/opentitan).

Original source figure

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

댓글

VLSI KOREA BRIEFING

반도체를 읽는 안목, 메일함으로.

엔지니어의 시각과 산업의 흐름을 함께. 무료로 구독하세요.

이미 구독 중인가요? 로그인