Alan Mishchenko Robert Brayton UC Berkeley Don’t-Care-Based Logic Restructuring with Unreachable-State Information Alan Mishchenko Robert Brayton UC Berkeley
Overview Introduction Parts and pieces Summary Sources of don’t-cares Ways of capturing don’t-care information Restructuring multi-level networks with don’t-cares Summary
Introduction There can be a lot of unreachable states They can be used for logic simplification/restructuring Previous methods may be limited Will try to develop a more general method Will use modern implementation technologies Induction to prove sequential properties Implemented using SAT Multi-level logic restructuring Implemented using truth tables
Ways of Capturing Don’t-Cares Sequential properties One-hotness conditions Clauses in terms of current-state variables 4-input clauses in terms of internal variables etc Should be proved inductively Refinement iteration with speculative reduction
Restructuring with Don’t-Cares Method 1 (pre-computation of EXDCs) Prove inductive invariants (e.g. implications in terms of current-state variables) Use them as external don’t-cares (EXDCs) Image EXDCs into local spaces using windowing Restructure multi-level logic using local don’t-cares Method 2 (in-place computation of local DCs) Use simulation to formulate desirable local properties (e.g. constraints on inputs of local cones) Prove these properties inductively Method 3 (proving target replacements) Use simulation to come up with desirable replacements (e.g. area-reducing decompositions) Prove these replacements inductively and use them No need to compute don’t-cares explicitly
Multi-Level Network Optimization Bi-decomposition algorithm Group variables Check decomposition feasibility Compute functions after decomposition Apply decomposition recursively Comments Works with don’t-cares Efficiently propagates internal don’t-cares Allows for on-the-fly resubstitution Increases logic sharing Can be implemented with truth tables Very fast for functions up to 16 inputs XB XA XC F A B
Summary This is an early work Outlined several promising ideas Need better understanding of how to use don’t-cares Implementation will follow somewhere down the line