Lpic FLC
Lpic FLC
PAPER TOPIC
STUDENT DETAIL:
NAME : LOKESH DEWANGAN
REG. NO.: 22MVD0069
SUBMITTED TO:
Dr. SRI ADIBHATLA SRIDEVI
DEPARTMENT OF MICRO AND NANOELECTRONICS
VELLORE INSTITUTE OF TECHNOLOGY, VELLORE, TAMILNADU, INDIA.
https://drive.google.com/drive/folders/1a5DBzYPt7MMU8wkt17_fZF8Cl4TK-qH-?usp=sharing
AIM: Applying Low power Technique to a De-fuzzifier Module to reduce power
dissipation.
De-fuzzifier Architecture
Fig. 1: Optimized resource-shared architecture of the de-fuzzifier for the proposed car-
parking system.
Working Description
Sensors Data is Fed to ADC controller using Multiplexer controller which is further
Fetched by Fuzzy Logic Controller and this FLC is controlled using FSM block.
FLC has two major components 1. Fuzzifier which is basically converts x direction and
y direction distance to fuzzy rule base set
The De-Fuzzifier uses a behaviour based crisp algorithm and generates crisp values
that is used to control the vehicle motion and direction.
Fig. 2: Block diagram representing the complete working flow of the system
multiplier MULTI_0069(weight,mux_out3,multi_out);
endmodule
SUB MODULE : D FLIP-FLOP
module dflip(Din,Qout,CLOCK);
input CLOCK;
begin
end
endmodule
always @(mux_sel)
begin
case(mux_sel)
endcase
end
endmodule
SUB Module : 9x1 MUX
always @(mux_sel)
begin
case(mux_sel)
endcase
end
endmodule
SUB MODULE : COMPARATOR
module compare(cmp_in1,cmp_in2,cmp_out);
if (cmp_in1<cmp_in2)
out <= cmp_in1;
else
out<=cmp_in2;
endmodule
endmodule
endmodule
SUB Module : MULTIPLIER
module multiplier(A,B,MULTI_OUT);
input [8:0] A,B;
output [9:0] MULTI_OUT;
reg [9:0]out;
always @ (A or B)
out<=A*B;
endmodule
module divider(A,B,DIV_OUT);
input [9:0] A,B;
output [9:0] DIV_OUT;
always @ (A or B)
out<=B/A;
endmodule
SUB Module : CONTROLLER
input clock,enable;
output reg [1:0] sel_1,sel_2;
output reg [3:0] sel_3;
end
endmodule
FUNCTIONAL VERIFICATION
TestBench Code
`timescale 1ns/1ns
module test_flc();
reg [8:0] n1, z1, p1, f1, f2, f3, f4, f5, f6, f7, f8, f9, n2, z2, p2;
reg clock, enable;
reg [1:9] fuzzy_logic;
wire [9:0] flc_out;
initial
begin
clock = 0;
enable = 1;
n1= 1;
n2 =2;
p1 = 1;
p2 = 3;
z1 = 4;
z2 = 6;
f1 = 1;
f2 = 2;
f3 = 3;
f4 = 4;
f5 = 5;
f6 = 6;
f7 = 7;
f8 = 8;
f9 = 9;
#170 $stop;
end
endmodule
SIMULATION WAVEFORM
TRANSCRIPT RESULT
SYNOPSYS VCS VERIFICATION
filelist:
FLC.v
adder.v
comparator.v
controller.v
Dflip.v
divider.v
multi.v
mux3.v
mux9.v
test_flc.v
TRANSCRIPT WINDOW
SYNTHESIS OF THE DEFUZZIFIER USING SYNOPSYS DESIGN COMPILER
set_svf "FLC.svf"
set DESIGN_REF_PATH "/home/userdata/22mvd0069/AsicLab69/tmp/ref"
##########################################################################################
# User-defined variables for physical library setup in dc_setup.tcl
##########################################################################################
######################################################################
# Physical Library Settings
######################################################################
open_mw_lib $mw_design_library
check_library
set_tlu_plus_files -max_tluplus $TLUPLUS_MAX_FILE -min_tluplus $TLUPLUS_MIN_FILE \
-tech2itf_map $MAP_FILE
check_tlu_plus_files
analyze -library WORK -format verilog {./FLC.v \ ./adder.v \ ./comparator.v \ ./controller.v \ ./ Dflip.v\ ./divider.v \ ./multi.v \ ./mux3.v \ ./mux9.v \ }
read_file -format verilog {./FLC.v}
current_design FLC
link
check_design
source ./FLC_22mvd0069.sdc
check_timing
source ./physical_22mvd0069.tcl
#extract_physical_constraints ./floorplan/floorplan.def
compile_ultra -no_autoungroup
#-incremental -spg
gui_start
Constraint File
Logical Constraints
create_clock -period 3.0 [get_ports clock]
set_clock_latency -source -max 1.0 [get_clocks clock]
set_clock_latency -source -min 0.5 [get_clocks clock]
set_clock_latency -max 1.0 [get_clocks clock]
set_clock_latency -min 0.5 [get_clocks clock]
set_clock_uncertainty -setup 0.15 [get_clocks clock]
set_clock_transition -max 0.5 [get_clocks clock]
Physical Constraints
set_placement_area -coordinate {0 0 400 450}
set_port_side [remove_from_collection [all_inputs] [get_ports "clock"]] -side right
set_port_side [get_ports [all_outputs]] -side left
set_port_side [get_ports "clock"] -side bottom
create_placement_blockage -name Blockage1 -coordinate {0 80 20 100}
create_placement_blockage -name Blockage2 -coordinate {120 0 150 30}
SIMULATION RESULTS
Before Clock Gating
CONCLUSION
In Synopsys Design Compiler the physical synthesis is performed in 32nm technology. Here,
I have used Clock gating method to reduce the power consumption and here I found that
91.95% power consumption is reduced.