Skip to main content

Posts

Showing posts from March, 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...

Verilog Code of 4bit BCD Adder Using Full Adder

  Hello Dear Readers, Today in this post I will be providing you a complete Verilog code of 4 Bit BCD Adder using the Full Adder instant model. So before the start, the code keep in mind the algorithms for the BCD adder is if the additional sum is greater than 9 will become up then we add 6 on it to make a valid BCD number so here in my code I have used this algorithm so keep in mind. Verilog Code: module bcd_4bit(input [3:0] x,y,input cy_in,output [3:0] sum,output carry,output [4:0] bcd_sum); add4 a1 (carry,sum,x,y,cy_in); assign bcd_sum=carry==1?{carry,(sum+4'b0110)}:sum; endmodule module add4(cy4,sum,x,y,cy_in     ); input [3:0] x,y; input cy_in; output [3:0] sum; output cy4; wire [2:0] carry_out; add b0(carry_out[0],sum[0],x[0],y[0],cy_in); add b1(carry_out[1],sum[1],x[1],y[1],carry_out[0]); add b2(carry_out[2],sum[2],x[2],y[2],carry_out[1]); add b3(cy4,sum[3],x[3],y[3],carry_out[2]); endmodule module add(carry_out,sum,a,b,cy_in     ); input a,b,cy_in; outpu...