Logic in computer science

Functional verification

In electronic design automation, functional verification is the task of verifying that the logic design conforms to specification. Functional verification attempts to answer the question "Does this proposed design do what is intended?" This is a complex task, and takes the majority of time and effort in most large electronic system design projects. Functional verification is a part of more encompassing design verification, which, besides functional verification, considers non-functional aspects like timing, layout and power. Functional verification is very difficult because of the sheer volume of possible test-cases that exist in even a simple design. Frequently there are more than 10^80 possible tests to comprehensively verify a design – a number that is impossible to achieve in a lifetime. This effort is equivalent to program verification, and is NP-hard or even worse – and no solution has been found that works well in all cases. However, it can be attacked by many methods. None of them are perfect, but each can be helpful in certain circumstances: * Logic simulation simulates the logic before it is built. * Simulation acceleration applies special purpose hardware to the logic simulation problem. * Emulation builds a version of system using programmable logic. This is expensive, and still much slower than the real hardware, but orders of magnitude faster than simulation. It can be used, for example, to boot the operating system on a processor. * Formal verification attempts to prove mathematically that certain requirements (also expressed formally) are met, or that certain undesired behaviors (such as deadlock) cannot occur. * Intelligent verification uses automation to adapt the testbench to changes in the register transfer level code. * HDL-specific versions of lint, and other heuristics, are used to find common problems. Simulation based verification (also called 'dynamic verification') is widely used to "simulate" the design, since this method scales up very easily. Stimulus is provided to exercise each line in the HDL code. A test-bench is built to functionally verify the design by providing meaningful scenarios to check that given certain input, the design performs to specification. A simulation environment is typically composed of several types of components: * The generator generates input vectors that are used to search for anomalies that exist between the intent (specifications) and the implementation (HDL Code). This type of generator utilizes an NP-complete type of SAT Solver that can be computationally expensive. Other types of generators include manually created vectors, Graph-Based generators (GBMs) proprietary generators. Modern generators create directed-random and random stimuli that are statistically driven to verify random parts of the design. The randomness is important to achieve a high distribution over the huge space of the available input stimuli. To this end, users of these generators intentionally under-specify the requirements for the generated tests. It is the role of the generator to randomly fill this gap. This mechanism allows the generator to create inputs that reveal bugs not being searched for directly by the user. Generators also bias the stimuli toward design corner cases to further stress the logic. Biasing and randomness serve different goals and there are tradeoffs between them, hence different generators have a different mix of these characteristics. Since the input for the design must be valid (legal) and many targets (such as biasing) should be maintained, many generators use the constraint satisfaction problem (CSP) technique to solve the complex testing requirements. The legality of the design inputs and the biasing arsenal are modeled. The model-based generators use this model to produce the correct stimuli for the target design. * The drivers translate the stimuli produced by the generator into the actual inputs for the design under verification. Generators create inputs at a high level of abstraction, namely, as transactions or assembly language. The drivers convert this input into actual design inputs as defined in the specification of the design's interface. * The simulator produces the outputs of the design, based on the design's current state (the state of the flip-flops) and the injected inputs. The simulator has a description of the design net-list. This description is created by synthesizing the HDL to a low gate level net-list. * The monitor converts the state of the design and its outputs to a transaction abstraction level so it can be stored in a 'score-boards' database to be checked later on. * The checker validates that the contents of the 'score-boards' are legal. There are cases where the generator creates expected results, in addition to the inputs. In these cases, the checker must validate that the actual results match the expected ones. * The arbitration manager manages all the above components together. Different coverage metrics are defined to assess that the design has been adequately exercised. These include functional coverage (has every functionality of the design been exercised?), statement coverage (has each line of HDL been exercised?), and branch coverage (has each direction of every branch been exercised?). (Wikipedia).

Video thumbnail

Can You Validate These Emails?

Email Validation is a procedure that verifies if an email address is deliverable and valid. Can you validate these emails?

From playlist Fun

Video thumbnail

What is Functional Programming?

We will discuss the state of functional programming in brief across several languages. Also a discussion on the broader goals of functional programming and this meetup. EVENT: OKC FP 2020 SPEAKER: Scott Murphy PUBLICATION PERMISSIONS: The conference organizer provided Coding Tech wit

From playlist Functional Programming

Video thumbnail

The Essence of Functional Programming

This talk dives into the origins of functional programming, going all the way back to where the term was first introduced, to see how it evolved over time into our modern understanding of what FP essentially involves. PUBLICATION PERMISSIONS: Original video was published with the Creative

From playlist Functional Programming

Video thumbnail

The Benefits of Functional Architectures | Systems Engineering, Part 3

See the other videos in this series: https://www.youtube.com/playlist?list=PLn8PRpmsu08owzDpgnQr7vo2O-FUQm_fL Functional, logical, and physical architectures are important tools for designing complex systems. We describe what architectures are and how they contribute to the early stages of

From playlist Systems Engineering

Video thumbnail

Functional Programming for Beginners: Pure Functions Explained

Why is it that pure functions can’t use mutable states in most cases, and how do you fight mutability by working with immutable values? Check it out in this live coding session by Michal Plachta, the author of Grokking Functional Programming. Watch the full video at: http://mng.bz/J24a 📚

From playlist Functional Programming

Video thumbnail

An Introduction to Functional Programming

We've all heard of functional programming, but how can you apply it to your existing code? In this talk by Eric Normand, author of 📖 Grokking Simplicity | http://mng.bz/oGXN 📖 DISCOUNT CODE ⭐ WATCHNORMAND40 ⭐ you will learn to identify the hardest code to test, make it more testabl

From playlist Functional Programming

Video thumbnail

How Functional Programming Can Make You A Better Developer

We've all heard of functional programming, but how can you apply it to your existing code? In this talk by Eric Normand, author of 📖 Grokking Simplicity | http://mng.bz/oGXN 📖 DISCOUNT CODE ⭐ WATCHNORMAND40 ⭐ you will learn to identify the hardest code to test, make it more testabl

From playlist Functional Programming

Video thumbnail

Functional Programming Basics In ES6

With all the hubbub over functional programming in JavaScript, you might be confused what it’s all about. Functional programming can solve many problems more elegantly than imperative programming. In this presentation, explore functional programming’s mathematical roots and then learn to u

From playlist Functional Programming

Video thumbnail

How to Prove a Function is Injective(one-to-one) Using the Definition

Please Subscribe here, thank you!!! https://goo.gl/JQ8Nys How to prove a function is injective. Injective functions are also called one-to-one functions. This is a short video focusing on the proof.

From playlist Proofs

Video thumbnail

LambdaConf 2015 - Type Theory and its Meaning Explanations Jon Sterling

At the heart of intuitionistic type theory lies an intuitive semantics called the “meaning explanations." Crucially, when meaning explanations are taken as definitive for type theory, the core notion is no longer “proof” but “verification”. We’ll explore how type theories of this sort aris

From playlist LambdaConf 2015

Video thumbnail

Bitcoin - Digital Signatures

A high-level explanation of digital signature schemes, which are a fundamental building block in many cryptographic protocols. More free lessons at: http://www.khanacademy.org/video?v=Aq3a-_O2NcI Video by Zulfikar Ramzan. Zulfikar Ramzan is a world-leading expert in computer security and

From playlist Money, banking and central banks | Finance and Capital Markets | Khan Academy

Video thumbnail

OTP Verification System Using Python | OTP Verification in Python | Python Projects | Simplilearn

This tutorial on OTP Verification using Python is the guide for you to use Tkinter, a Python module used to develop GUI (Graphical User Interface). We will use Tkinter Widgets to develop OTP Verification GUI. OTP Verification System Using Python: 👉 00:00 Introduction 👉 01:12 Demonstrati

From playlist Python For Beginners 🔥[2022 Updated]

Video thumbnail

At-scale Formal Verification for Industrial Semiconductor Designs - Professor Tom Melham

https://www.turing-gateway.cam.ac.uk/sites/default/files/asset/doc/1707/Big%20Proof%20Day%20Melham%2019-07-2017.pdf #TuringSeminars

From playlist Turing Seminars

Video thumbnail

Kernel Recipes 2019 - Formal modeling made easy

Modeling parts of Linux has become a recurring topic. For instance, the memory model, the model for PREEMPT_RT synchronization, and so on. But the term “formal model” causes panic for most of the developers. Mainly because of the complex notations and reasoning that involves formal languag

From playlist Kernel Recipes 2019

Video thumbnail

Joseph Huchette: "Neural network verification as piecewise linear optimization"

Deep Learning and Combinatorial Optimization 2021 "Neural network verification as piecewise linear optimization" Joseph Huchette - Rice University Abstract: Neural networks are incredibly powerful tools for prediction in important domains such as image classification and machine translat

From playlist Deep Learning and Combinatorial Optimization 2021

Video thumbnail

Keynote Presentation: Framework for Developing Complex Systems

Get a Free Trial: https://goo.gl/C2Y9A5 Get Pricing Info: https://goo.gl/kDvGHt Ready to Buy: https://goo.gl/vsIeA5 Framework for Developing Complex Systems using Model-based design and Simulink.

From playlist MathWorks Automotive Conference 2013

Video thumbnail

DSA Algorithm | DSA Algorithm Explained | Digital Signature Algorithm | Simplilearn

In this video on the DSA Algorithm, we learn about the global standard in authentication and verification of digital signatures. We learn about the basics of public key cryptography, and how digital signatures are used in today's internet sphere. Moving on, the origin and specifics of the

From playlist Cyber Security Playlist [2023 Updated]🔥

Video thumbnail

RSA and DSA Encryption Algorithms Explained | Cryptography & Network Security Tutorial | Simplilearn

In today's video on the RSA and DSA encryption algorithms explained, we cover the two most well known symmetric encryption algorithms in our cryptography & network security tutorial. We learn the steps needed to encrypt digital signatures and general data using RSA and DSA algorithms. The

From playlist Cyber Security Playlist [2023 Updated]🔥

Video thumbnail

Using the vertical line test to determine if a graph is a function or not

👉 Learn how to determine whether relations such as equations, graphs, ordered pairs, mapping and tables represent a function. A function is defined as a rule which assigns an input to a unique output. Hence, one major requirement of a function is that the function yields one and only one r

From playlist What is the Domain and Range of the Function

Video thumbnail

Classical Verification of Quantum Computations - Urmila Mahadev

Computer Science/Discrete Mathematics Seminar I Topic: Classical Verification of Quantum Computations Speaker: Urmila Mahadev Affiliation: UC Berkeley Date: November 26, 2018 For more video please visit http://video.ias.edu

From playlist Mathematics

Related pages

Constraint satisfaction problem | Formal verification | Code coverage