QUESTIONS TO MIDTERM ONE

These are some problems from previous years. This year problems may be different. More typical problems will be added during the class.


ALL SOLUTIONS (Including figures, tables, etc together with their formats explained in the main text) MUST BE SUBMITTED BY EMAIL.
I accept only the following formats
- plain ACII - text only
- Latex
- Word.
- PPT.
IN ADDITION,
I would like you to put all your printouts, figures, etc. to my box. This time I still accept hand drawings, but I encourage you to learn some graphics tools.

SYMMETRY OF BOOLEAN FUNCTIONS.

  1. What is a symmetrical Boolean function? Give a precize definition.
  2. Explain how to test if a given function, specified as an ARRAY OF CUBES, is symmetrical?
  3. How to test a function, specified as an array of cubes, for all possible partial symmetries of subsets of variables?
  4. How to generalize the concept of partial symmetry of variables?
  5. Given is the set of ALL symmetric functions specified by four indices: F1 = S^{i11,i12,i13,i14}(a,b,c,d,e,f,g,h), F2 = S^{i21,i22,i23,i24}(a,b,c,d,e,f,g,h),
    ...
    Fz = S^{z1,z2,z3,z4}(a,b,c,d,e,f,g,h). Calculate, how many such functions exist for arguments {a,b,c,d,e,f,g,h}. (how much is z?).
    Create a regular structure in which EVERY function Fi would be programmable. The structure must be a generalization of PLAs and multiplexer-based symmetric structures from the class. Explain how to program this structure. Give an example.
  6. Give all applications of this structure that you may think of.

PATTERN MATCHING SEQUENCES.


Given is any pattern specified as below:
  1. The pattern is composed of symbols: A, B, C, D.
    The pattern has an arbitrary number of repetitions of any symbols, in any order. Any symbol can be repeated arbitrary number of times in the sequence, and the number of sequences of symbols is unlimited.
    For instance: AAAABBBBBBAAAAAACCADDAAA
    Set of such patterns is denoted by SPAT.
    For instance, SPAT_1 = {AABB, ACCD, ABCD}
    1. Create a methodology of designing automatically iterative combinational circuits: pattern recognizers for any sets SPAT_i. Use one-dimensional array of identical blocks, realized by PLAs. Draw the schematics.
    2. Create a methodology of designing automatically SEQUENTIAL pattern recognizers for any sets SPAT_i. Use a PLA for logic, and a register from D flip-flops. How much of the methodology from point a) you can re-use without any modifications?

VHDL PROJECTS.

  1. What did you learn by doing VHDL homeworks and projects? Write very specifically.
  2. What else would you like to learn in projects?
  3. Do you have any "dream project ideas", like designing a general purpose computer? Describe them in more detail, at a behavioral, or RTL levels. (but not in VHDL).

    DESIGN OF A GENERAL-PURPOSE PARALLE AND SERIAL COMPUTER.

    1. Given is a data path composed of 8 registers, A,B,C,D,E,F,G,H. Assume registers 16 bits each.
      Any of the following instructions must be executed in the data path of your computer:
      R_i R_j --> R_k
      where R_i, R_j, and R_k are any of 8 registers, or any constant: 0, 1, -1, 2.
      For instance: A + B --> A, A - C -> D, A AND B -> C
      is any of the following:
      a) any Boolean function of two variables, extended for words, like A EXOR B -> D
      b) arithmetic addition, A + B -> E.
      c) arithmetic subtraction, C - D -> H, - D -> D.
      One of registers, say A, should be a STATE REGISTER (program counter). Another of the registers, say B, is the Memory Buffer register of a RAM memory, controlled with READ, WRITE and ADDRESS signals. Yet another register, say C, is the Memory Address register.
      1. Design the control word for this computer, so that it will encode all possible instructions specified as above. Draw the RTL description of the Data Path. Show how the control word is decoded to control transfers between registers.
      2. Is this a general purpose computer? If yes, prove that your computer is a general-purpose computer, by demonstrating that you can emulate a Turing Machine, a Post Machine, or any other known general-purpose computer on your computer.
        If your computer (controller plus data path) it not yet a general-purpose one, add as little hardware as possible to make it a general-purpose computer. Prove that it is a general computer.
      3. From a conceptual version of the computer, design two versions of your computer: version one with serial execution of all operations. version two with parallel execution of operations. Design both the controller, and the data path, but not at the circuit level. Designing a state machine and/or RTL description with explanation is OK.
        The computer should have no input/output. Memory corresponds to the tape of Turing Machine. Do not worry how to fill and read the memory.

    TIMING OPTIMIZATION FOR A GENERAL-PURPOSE COMPUTER.


    Solve problem 4, but only for the parallel version. In this variant, however, design the computer on the circuit level, and optimize timing. (of course, you do not need to repeat the cell design for all 16 bits, etc. Just explain me clearly what you do). Make it a pipelined computer, as fast as possible by having as little logic levels between registers as possible. Assume that you design everything from D flip-flops connected to a single clock, and two-input gates corresponding to arbitrary logic functions of 2 inputs. Each gate has a delay of TAU. Do not assume any other delays. The goal of using pipelining in your design is to optimize it for speed. Evaluate times for all your operations, use the units of TAU.

SIMILARITY OF BASIC COMBINATORIAL PROBLEMS OF BOOLEAN ALGEBRA


Define precisely the following concepts:
  1. Petrick Function.
  2. Satisfiability POS formula (Product of Sums of Literals).
  3. Minimal Covering Problem.
  4. Satisfiability Problem.
  5. Tautology Problem.
  • Show all reductions of some of these problems to other ones that you can imagine. Draw a graph ilustrating your reductions, nodes of the graph are the problems.
    You have a computer that can calculate a disjoint sharps on arrays of cubes very quickly. What else you need to be able to solve all above problems efficiently?

    COFACTORS OF BOOLEAN FUNCTIONS AND THEIR USES.


    Define precisely what is a cofactor.
    How to find a cofactor using a Karnaugh map?
    How to find a cofactor using a SOP array of cubes.
    How to find a cofactor using a BDD of a function.
    Define a basic symmetry of a Boolean function using the concept of cofactor for two variables.
    Look to all possible relations of cofactors of two variables. Define generalized symmetries of Boolean functions using these relations.

    TREES TO SOLVE BOOLEAN PROBLEMS.


    Write all that you know about using trees to solve Boolean problems:
    a. trees for complementation of Boolean function.
    b. trees for tautology.
    c. trees for satisfiability.
    d. trees for solving Boolean Equations.
    d. trees for solving Boolean Equations.
    e. trees for solving Petrick functions.
    Give examples.

    GENERALIZATIONS OF THE PETRICK FUNCTION MACHINE.


    Remember our Petrick Function Machine? Generalize the Petrick Function Machine to solve each of the problems from point 8. Design (on RTL level) one variant for each of the points a, b, c, d, e. Show and discuss their similarities and differences.
    Can you think about other approaches to solve these kinds of problems?

    MACHINE TO FIND THE MINIMUM CLIQUE OF AN ARBITRARY GRPAH.


    Reduce the Problem of Finding Maximum Cliques in a Graph to the Petrick Function Problem. A node of the graph corresponds to a variable. A clique is a set of nodes connected every with every other. A clique is represented by a set of selected variables (set of variables assigned value 1.)
    First show an example of reduction, show that a cliquer corresponds to certain Boolean term that is satisfied. Next, describe the general method of reduction for arbitrary data. The machine must give one EXACT solution, it means, a MAXIMAL CLIQUE.

    A PROGRAMMABLE LOGIC ARRAY FOR 3-VALUED POST ALGEBRA.


    Define a Post Algebra for 3-valued logic: describe all functors by their tables. Prove that your algebra is complete: every 3-valued switching function of two arguments can be created with combinations of your functors.
    Describe a generalized PLA-like circuit for your algebra, that would allow to realize any 3-valued function of k variables.
    Show realization of function
    H = (X min Y) max (X sup {1,2} min Y sup{0,1}) in your PLA-like circuit.
    How would you create a VHDL description of this circuit?
    How would you create a VHDL description of ANY 3-valued function in tabular form that will be converted by VHDL compiler to a set of gates - components, corrwesponding to operators of your algebra?

    WHY WE HAVE ALL TO LOVE THE BINARY DECISION DIAGRAMS?
    Write an essay:
    "Everything that I know about Binary Decision Diagrams (BDDs): what are they? why are they important? what can I do with them? all I know about their possible applications."
    Your goal is to convince your manager, an old-fashioned gentelman who developed cube calculus based software through his whole professional life, that developing new CAD Tools based on BDDs will give many advantages to your company.
    Emhpasize role in formal verification, and not only in sequential and combinational design.