Skip to main content

Posts

Showing posts from January, 2021

YAML in Semiconductor EDA: From Configuration Language to Reusable Design-Flow Methodology

Hello Dear Readers,   Today in this post, I will provide some deep insight about yaml langauge for CAD flow developments with detailed examples. YAML is not a programming language in the same sense as Python, Tcl, C++, or Verilog. It is primarily a human-readable data serialization/configuration language . In semiconductor EDA, that distinction is important because YAML generally describes what a flow should do , while Python/Tcl/Shell and the EDA tools execute the flow . The official YAML specification describes it as a data serialization language designed to be human-friendly and portable across programming languages. For the semiconductor angle, this becomes particularly interesting because YAML can act as a configuration layer between design methodology and EDA implementation . Frameworks such as Hammer explicitly use YAML/JSON configuration and an intermediate representation to standardize information exchanged between design, technology, and tool plugins. 1. Introduction M...

Multiplexer Verilog Code

Hello Dear Readers, Here I have giving Verilog code of 32-bit Multiplexer which is a common digital system block.  A multiplexer selects an input from multiple inputs. The following code implements a 32-bit 2-to-1 multiplexer as well as a 4-to-1 multiplexer using a function . The [31:0] denotes a bus that has 32 bits.  So Let's Start it code. Verilog Code: 1) Multiplexer Using Dataflow Level: module mux2to1 (a0,a1,s,y); // multiplexer, 32 bits   // inputs, 32 bits input [31:0] a0, a1;       // input selection line, 1 bit       input s;      // output, 32 bits          output [31:0] y;        // ternary operator is used so if (s==1) y=a1; else y=a0;      assign y = s ? a1 : a0;       endmodule Now there is also a function facility available in Verilog similar to C language such functions are sections of Verilog code that allo...

CMOS Logic Gates Using Verilog HDL

  CMOS Logic Gate Design  Hello Dear Readers, This section describes how to used a low-level CMOS transistor to design basic digital logic gates and its implementation in Verilog HDL. In CMOS technology, both PMOS as well as NMOS transistors, are used. PMOS is active when the input signal will be 0(Low) level, and NMOS is active when the input signal will be 1(High) level. In below figures show the basic design of the CMOS inverter, NAND, NOR gates. We know if we made AND or OR gate from NAND or NOR respectively, then we need two more transistors of the inverter. That's why we see in the gate array chips contain an array of the universal gates only. In the below section, I have written the whole Verilog code of all the gates with testbench code. Verilog Code: module CMOS_Gates(input a,b,output f,f1,f2     ); supply1 vdd; supply0 gnd; wire w1,w2; //NOT gate // pmos (drain, source, gate); pmos t1 (f, vdd, a); // nmos (drain, source, gate); nmos t2 (f, gnd, a); //NAND g...

Difference between CISC and RISC In Computer System

 CISC Vs. RISC Hello Dear Reader, Most Welcome in my second blog I have started this one after I got succeded in my first blog  https://nishitnathwani.blogspot.com/   Today I will be discussing the difference between CISC and RISC two types of hardware systems inside the computer system. CISC is the general name for CPUs that have a complex instruction set. An instruction set is said to be complex if there are some instructions that perform complex operations or the instruction formats are not uniform. The Intel x86 family, Motorola 68000 series, PDP-11, and VAX are examples of CISC. The CISC instruction set tries to enhance the code density so that a computer system can use a small amount of memory, including cache, to store as many instructions as possible for reducing the cost and improving performance. CISC adopts two measures to reduce the code size – it lets an instruction perform as many operations as possible and makes the encoding of each instruction as short as ...