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

Clock Gating Verification: Enable Timing, CTS, Scan and Wake-Up

An inserted clock gate needs more than a valid enable. Reproducible experiments distinguish pulse integrity, state correctness, physical timing and wake reachability.

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 suppresses selected clock pulses to reduce unnecessary switching. Proving that an enable is logically valid, that its pulses are safe, and that the block can wake again are separate obligations. An insertion message in a synthesis log does not close all of them.

VLSI Korea view: a good clock gate stops without losing required state, reopens when work needs it, and delivers a real power saving. The fraction of gated registers is only a starting observation.
Four independent obligations surround one clock-gating decision.
Original VLSI Korea framework: pulse, state, physical timing and liveness. Open full-resolution figure

This article serves RTL designers tracing a clock enable through synthesis and engineers accepting that implementation into CTS, DFT and system verification. A reproducible experiment and an explicitly assumed power calculation support two decisions: which registers to group, and which gated branches to retain.

The usual explanation correctly emphasizes reduced clock switching. Our disagreement concerns the acceptance boundary: pulse integrity, state semantics, physical timing and liveness must hold together. We call this analytical framework the Four-contract gating review.

1. An ICG stores an enable, not the application data

The example uses rising-edge registers and an ASIC-style gate with a low-transparent latch. The latch accepts the enable while the clock is low and holds it while the clock is high. ANDing that stored value with the clock prevents a mid-high change of the external enable from immediately chopping the output pulse.

The functional schematic in the public SKY130 dlclkp documentation exposes this structure. Its functional inputs are GATE and CLK, and its output is GCLK. It is not a cell with a separate test-enable input.

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

The latch is not a PLL. It neither synthesizes a new clock frequency nor cleans up the source's phase noise. The interval between surviving pulses can vary with the workload, but the gate does not arbitrarily redefine the period of the source pulses it passes.

Clock gating also differs from power gating. It leaves the supply connected, allowing stopped registers to retain their state under valid power conditions. It therefore does not eliminate leakage, and external inputs can still cause switching in downstream combinational logic.

A latch is not a synchronizer for an asynchronous enable. A change near the latch-closing boundary still requires the real cell's setup and hold conditions to be satisfied. Synchronization and request persistence remain separate CDC and protocol design questions.

2. Clean pulses and correct state require different observations

VLSI Korea wrote an ideal RTL experiment with a 10 ns clock period. The clock toggles every 5 ns; the enable and the stored latch value start at 0. That initialization is an experiment assumption, not a reset specification for a physical ICG.

Raising enable at 7 ns, after the first rising edge, makes a raw AND output high only during 7–10 ns. It produces a 3 ns fragment instead of the normal 5 ns high interval. The low-transparent latch path does not create a new rising edge at that instant.

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

Dropping the request at 12 ns means it does not survive until the next normal rising edge. Suppressing an invalid pulse is therefore different from guaranteeing that this short request becomes one accepted operation. A requester needs a persistence and acceptance rule if it expects work to execute exactly once.

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

The second case raises enable at 22 ns and lowers it at 38 ns. The raw AND truncates its high interval to 35–38 ns, while the latch path completes 35–40 ns. The storage that preserves pulse shape must not be confused with the protocol that preserves the meaning of work.

These are zero-delay RTL observations from Icarus Verilog. They do not measure silicon minimum pulse width, slew, PVT, jitter, library timing arcs, SDF or metastability. The 3 ns pulse is objectionable here because it fragments this experiment's normal pulse, not because that duration is a universal process limit.

A few waveforms can give false confidence. Check for extra edges between functional sampling points, preservation of the last required edge before disable, and valid data at the first edge after enable. Each failure needs separate evidence.

3. Read the representation before counting the gated registers

The public Yosys 0.46 clockgate documentation describes replacing groups that share clock and enable with an ICG and enable-less FFs. We checked that interface in the installed Yosys 0.67+post and executed a separate, deliberately small register-bank example.

The input is a 32-bit bank expressed as always @(posedge clk) if (en) q <= d;. After proc; opt, the intermediate netlist contains one $dffe with WIDTH 32. Cell-object count and stored-bit count are different quantities at this point.

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

Running clockgate -pos cg E:CK:Q -min_net_size 8 on that representation converted no FFs. Changing only the minimum to 1 produced one cg and one $dff with WIDTH 32. In this execution and representation, the threshold did not interpret the word width as a count of physical flop instances.

This is not a recommendation to adopt a production minimum of 1. It is a reason to inspect the current IR, enable polarity, reset and initialization representation, and mapping order. If another pass has already split words into bit-level cells, re-establish what the same threshold means.

The transformation retains 32 state bits. It removes the register-enable representation and adds a control object on the clock path. Saying that it “reduced the FF count” would incorrectly suggest reduced storage or an observed physical area saving.

Our cg is an ideal latch-plus-AND model for the phase experiment. It is not a mapped SKY130 cell or a result validated with a timing library. With enable and data changed on falling edges, the original and transformed designs matched on 200 samples with known values.

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

The comparison does not award a pass merely because both sides remain X in an unknown initial state. It also does not prove arbitrary asynchronous enables, interrupted reset, scan shifting or actual pulse-width violations. Explicitly bounding an experiment tells the next engineer what still needs verification.

Separately, OpenROAD clock_gating searches candidate control conditions and uses ABC simulation and SAT to establish their logical validity. Discovering a new condition is different from moving an already shared enable. Neither logical proof alone establishes routed timing.

4. Moving a gate changes both clock and enable paths

Combining a large register population behind one gate can reduce the gate count. Widely dispersed sinks, however, change downstream clock wiring, buffering and enable-routing obligations. The useful objective is a feasible physical implementation for both clock and enable, rather than the smallest gate count.

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

A gate nearer the root may suppress more downstream switching while serving more sinks and control requirements. A leaf gate can narrow that scope, but its upstream tree continues switching. This is a topology argument, not a formula for the optimum gate location in a specific process.

The OpenROAD CTS documentation describes -balance_levels as an attempt to keep similar tree levels across non-register cells such as gates and inverters; its default is false. Attempting level balance does not establish acceptable skew, insertion delay, enable timing and pulse checks.

After routing, the clock at the enable-launch register can arrive at a different time from the clock at the gate. Evaluate the actual library's gating setup and hold, clock transition and pulse conditions in the appropriate modes and corners. A data-path intuition alone is insufficient.

Nor should every gated clock automatically receive another create_generated_clock. Propagation and gate recognition depend on the tool, library and constraint methodology. First establish that the source clock propagates correctly, then define any necessary relationship; an extra name cannot repair a misunderstood unconstrained path.

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

For scan, establish where test override joins enable, whether it passes through storage, and whether the test clock reaches the sinks. The dlclkp example has no separate test pin, and using Yosys -tie_lo to tie a pin to 0 does not complete scan accessibility.

By contrast, the OpenTitan generic clock-gating primitive ORs functional and test enables before a low-transparent latch. Its source explicitly assumes a synchronized functional enable. Comparing the examples shows why a cell name alone cannot establish test-pin availability, combination position or responsibility for synchronization.

VLSI Korea view: equivalence provides evidence that sampled state is correct under its assumptions. Silicon timing, scan and wake-up must still satisfy those assumptions.

5. Calculate savings from the capacitance that actually stops

We built a small reproducible model with entirely assumed inputs: effective clock-branch capacitance of 20 pF, supply of 0.8 V, frequency of 500 MHz, and average gate/control overhead of 0.5 mW. The branch capacitance is defined on a clock charging-cycle basis.

Using Pbranch = C × V² × f gives 6.4 mW of branch dynamic power. Let d be the clock-disabled time fraction and r the fraction of branch capacitance that actually stops. The simplified steady-state net saving is d × r × 6.4 − 0.5 mW. Overhead can itself vary with workload, but it is held fixed here.

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

Under the full-removable-branch assumption, break-even requires a disabled fraction of 7.8125%. Halving the removable load raises that threshold to 15.625%; retaining only a quarter raises it to 31.25%. Identical idle fractions can therefore justify different decisions after gate placement and downstream load are considered.

At a disabled fraction of 25%, stopping the full modeled load saves 1.1 mW, while stopping only a quarter yields −0.1 mW net. These are not measurements of a particular design. The sensitivity analysis shows why “how much is idle?” must be followed by “what actually stopped?”

An average fraction also hides burst length. One long idle interval and many short intervals consume different amounts of qualification and restart time. Repeated opening and closing can add transition cost even when the total count of idle cycles is unchanged.

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

For an assumed idle opportunity of 40 cycles, subtract 10 qualification cycles and 2 restart cycles to obtain 28 stopped cycles. At a period of 2 ns, suppressed energy is 358.4 pJ; overhead charged across the whole idle interval is 40 pJ, and the separate transition cost is 50 pJ. Net energy saved is therefore 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

The 10-cycle input happens to match the controller documentation discussed below, but this model is not that controller's measured power result. All physical inputs, including restart time and transition energy, are assumptions. They expose how costs can dominate short idle bursts.

To replace the assumptions, collect post-CTS capacitance, the power model at the operating voltage and frequency, the actual workload's idle-length distribution, and wake latency. Separately account for omitted leakage changes, enable-cone switching, clock-buffer internal power and power-delivery stress on restart.

Business consequences follow only after that engineering evidence exists. A verified branch saving may reduce a system power budget, but it cannot immediately be converted into cooling savings or a product-margin improvement. Other blocks may consume the released budget, execution may take longer, or a different constraint may dominate the product.

6. Write down the priorities for idle, root shutdown and wake

In the OpenTitan Earlgrey clock-manager documentation, software control of transactional clocks is a hint. The described qualification checks Idle for 10 local clocks, while power-manager root disable takes priority over local controls. Local qualification therefore cannot be generalized into protection for ongoing work during every 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

The dashed WFI blocks in this original diagram are possible paths that the documentation says are not implemented in the first design. A line in a diagram is not evidence of a shipped function. This is a public design example for understanding control scope, not our experiment's implementation or its power-measurement target.

Bring that distinction into a design review by asking concrete priority questions. What wins when a local hint, hardware busy, root power request, reset and test override coincide? Is requesting a stop the same event as acknowledging that the clock has actually stopped?

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

The next sequence is VLSI Korea's generic review proposal: block new work, drain accepted work, request gating, then confirm that the clock has stopped. The logic that originates a restart request and the logic that opens the gate cannot both depend exclusively on the stopped clock. That arrangement cannot wake itself.

The OpenTitan DMA documentation gives an example in which a CONTROL write enables a clock gate and activity keeps it enabled. The transferable decision is to draw the boundary between accepting new work and stopping the work path, rather than prescribing the same register interface for every IP.

If a bus can issue requests while its destination clock is stopped, specify persistence or retry. Declaring idle solely because an internal queue is empty can overlook a late response or another master's request. Determine whether that risk exists from the actual protocol and its definition of outstanding transactions.

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

The clock-manager DV documentation separates SVA checks for controls, status and gated clocks. The allowed cycles of a sampled assertion are not an analog glitch detector's time resolution. Eventual functional response and pulse violations between sampling edges need different observations.

7. Make the implementation handoff explicit

The RTL owner supplies enable semantics, reset state and state that must survive a stop. Synthesis supplies register correspondence and actual insertion conditions; physical design checks gate placement, sinks and the routed clock/enable relationship. DFT and verification trace those same sinks in their respective modes.

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

For Korean fabless and IP-integration teams combining external blocks, the interface specification should explicitly identify who can restart a clock. Our 32-bit example is a starting experiment, not a substitute for a vendor IP's reset and test contracts. The existing Glitch-Free Clock MUX reference addresses source switching, while the synthesis pass-trace article helps interpret intermediate representations.

Assign evidence to each question. Use legal-input comparison and formal analysis for function; library, STA and pulse checks for phase; test-mode connectivity and coverage for scan; and protocol verification starting from a stopped state for wake. Finally confirm that the workload used for the power estimate obeys those constraints.

The counterargument matters. A small branch or one that wakes frequently may be better left ungated. A tight enable path, an efficient cell-internal enable, or dedicated FPGA clock resources can invalidate a direct application of this latch-plus-AND example.

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

The thesis has observable failure conditions. Redesign the gate if post-CTS removable capacitance cannot repay overhead, if the wake source sits inside the stopped cone, or if scan and timing verification invalidate the RTL assumptions. A high gated-register percentage cannot overrule those findings.

The following dates are editorial checkpoints, not announced releases: 2027-03-07 for the recorded transformation, register representation and scan connection; 2027-06-07 for idle-burst distributions and routed break-even inputs; and 2027-09-07 for root-control priority, wake reachability and library pulse constraints. The evidence cutoff is 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

Sources and reproducibility

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 assisted public-source organization, writing and diagram production. The article received independent factual review. RTL experiments use ideal models, and physical calculation inputs are assumptions. No PDK signoff or silicon power measurement is claimed.

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.

Discussion

VLSI KOREA BRIEFING

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

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

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