Skip to main content

Posts

Product Engineer II at Cadence Design Systems

Hello Dear Readers, Cadence Design Systems has a vacancy for a Product Engineer II role. Cadence is a pivotal leader in electronic design, building upon more than 30 years of computational software expertise. The company applies its underlying Intelligent System Design strategy to deliver software, hardware and IP that turn design concepts into reality.  Cadence customers are the world’s most innovative companies, delivering extraordinary electronic products from chips to boards to systems for the most dynamic market applications including consumer, hyperscale computing, 5G communications, automotive, aerospace industrial and health. The Cadence Advantage: The opportunity to work on cutting-edge technology in an environment that encourages you to be creative, innovative, and to make an impact. Cadence’s employee-friendly policies focus on the physical and mental well-being of employees, career development, providing opportunities for learning, and celebrating success in recog...

Evolution of Logic Design and Its Abstractions

  Hello Dear Readers, Today, I have summarized the evolution of logic design and two abstractions of the system design flow that has been discussed. During the year 1958, Jack Kilby, a young electrical engineer at Texas Instrument figured out how to place the circuit elements, transistors, resistors, and capacitors, on a small piece of Germanium. But prior to the year 1958, many more revolutionized ideas were published and conceptualized. Gottfried Leibniz was a famous mathematician and philosopher from Germany and he redefined the binary number system during the year 1676–1679. After the successful redefinition of number systems, the famous mathematician George Boole during the year 1854 invented the Boolean algebra and the revolution of the digital logic design set into motion. The actual invention of the prototype transistor model during the year 1946–1947 at Bell Labs by Shockley, Bardeen, Brattain had revolutionized the use of semiconductor in switching theory and for design o...

The Design For Testability (DFT) and its necessity

  Hello Dear Readers, Today In this post I will explain DFT and its necessity in VLSI. In the practical ASIC design, the DFT is used to find out various kinds of faults in the design. For FPGA designs this step is excluded. The necessity of DFT is for early detection of the faults in the design using scan chain insertions. The functional abstraction of defects is called a fault and the abstraction of the fault is the system-level error. Physical testing is carried out after manufacturing of chip to understand the fabrication-related issues or faults. The defects in the design can be physical or electrical. Physical defects are due to silicon or defective oxide. Electrical defects are short, open, transistor defects and changes in the threshold voltage. A few of the faults in the design are following  1. Stuck at faults: Stuck at one or Stuck at zero  2. Memory faults or pattern-sensitive faults  3. Bridging faults  4. Crosspoint faults  5. Delay faults...

Verilog : always@ Blocks

  Hello Dear Readers, Today In this post I will explain various flavors of the always@ blocks. There are normally two ways that we normally noticed in different Verilog codes that always@( * ) and always@(posedge Clock) block. always@ blocks are used to describe events that should happen under certain conditions. always@ blocks are always followed by a set of parentheses, a begin , some code, and an end . Program 1 shows a skeleton always@ block.  In Program 1 , The contents of the always@ block, namely elements describe elements that should be set when the sensitivity list is “satisfied.” For now, just know that when the sensitivity list is “satisfied,” the elements inside the always@ block are set/updated. They are not otherwise. Elements in an always@ block are set/updated sequentially and in parallel, depending on the type of assignment used. There are two types of assignments: <= (non-blocking) and = (blocking) . Non-blocking assignments happen in parallel. ...

Restoring And Non Restoring Division Algorithms Using Verilog HDL

  Hello Dear Readers, Today In this post I have implemented Restoring Division Algorithm Using Verilog HDL. So I have followed this   One video from Tutorial Point Youtube Channel   So go through it before Verilog code. start means the start of the division; busy indicates that the divider is busy (cannot start a new division); ready indicates that the quotient and remainder are available, and the  count is the output of a counter that is used to control the iterations of the division. Verilog Code(Restoring): module divider_32(a,b,start,clk,reset,q,r,busy,ready,count); input [31:0] a; // dividend input [15:0] b; // divisor input start; // start input clk,reset; // clk,reset output [31:0] q; // quotient output [15:0] r; // remainder output reg busy; // busy output reg ready; // ready output [4:0] count; // counter reg [31:0] reg_q; reg [15:0] reg_r; reg [15:0] reg_b; reg [4:0] count; wire [16:0] sub_out = {reg_r,reg_q[31]} - {1'b0,reg_...