sprinkler buddy presentation #3: “new and improved floor plan and structural verilog” 2/14/2007...

Post on 21-Dec-2015

216 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Sprinkler Buddy

Presentation #3:

“New and Improved Floor Plan

and Structural Verilog”

2/14/2007

Team M3Panchalam Ramanujan

Kalyan KommineniKartik Murthy

Sasidhar Uppuluri Design Manager: Bowei Gai

“Low Cost Irrigation Management For Everyone ! ”

Current Status Determine Project Develop Project Specifications Plan Architectural Design

Determination of all components in design Detailed logical flowchart

Design a Floor Plan (refined) Create Structural Verilog

(All Components done/simulated, tweaking control)

Make Transistor Level Design and Schematic Layout Testing (Extraction, LVS, and Analog Sim.)

Slightly Revised Transistor Count …

Block (# used) Transistor Count

40:20 Muxes (6) ~480

60:20 Muxes (2) ~720

Counter (2) ~250

KC ROM (1) ~778

P ROM (1) ~82

Metric Storage SRAMS (2) ~2522

Constant Storage ROM (1) ~202

Floating Point Adder (4) ~3000

Floating Point Multiplier (2) ~2800

10 Bit Registers (9) ~140

Datapath Logic / Misc. ~2000

Total =

~ 31,786

Block Size Estimates

Block (# used) Size Estimate (um)

40:20 Muxes (4) 20 x 80

60:20 Muxes (2) 20 x 120

Counter (2) 12 x 17

KC ROM (4 parts) 181 x 8

P ROM (1) 70 x 8

Metric Storage SRAMS (2) 181 x 60

Constant Storage ROM (1) 181 x 8

Floating Point Adder (4) 100 x 100

Floating Point Multiplier (2) 130 x 130

10 Bit Registers (8) 50 x 10

Floor Plan Old (Naïve) Floor Plan

Somewhat Better Floor Plan

Current Floor Plan

Individual Modules: Floating Point Add

Outputs

Inputs

Will Use Metals 1-4

No Metal 3 below here

Individual Modules: Floating Point Multiply

Outputs

Inputs

Will Use Metals 1-4

Inputs

Outputs

Individual Modules: Everything Else

Block Metal Layers That Can be Used

40:20 Muxes M1 & M2

60:20 Muxes M1 & M2

Counters M1 & M2

KC ROM M1 & M2 & M3 & M4

P ROM M1 & M2 & M3 & M4

Metric Storage SRAMS M1 & M2 & M3 & M4

Constant Storage ROM M1 & M2 & M3 & M4

Floating Point Adders M1 & M2 & M3 & M4

Floating Point Multipliers M1 & M2 & M3 & M4

10 Bit Registers M1 & M2

Metal Directionality M1, M2

Local Connections Ground and VDD

M3,M4 Clock Inside FP Units Global Routing Control Signals

New Design SizeBlock (# used) Size Estimate (um)

40:20 Muxes (4) 20 x 80

60:20 Muxes (2) 20 x 120

Counter (2) 12 x 17

KC ROM (4 parts) 181 x 8

P ROM (1) 70 x 8

Metric Storage SRAMS (2)

181 x 60

Constant Storage ROM (1)

181 x 8

Floating Point Adder (4)

100 x 100

Floating Point Multiplier (2)

130 x 130

10 Bit Registers (8) 50 x 10

• 454um x 450 um• ~ 1 : 1 aspect ratio• .2 mm^2 area• .142 Transistor Density

Control Verilog

wire [9:0] hu_temp,hu_tmax,hu_tmin,hu_temptoadd; //HU Control Signals wire hu_tmax_en,hu_tmin_en,hu_mux_sel,hu_add_start,hu_temp_en; //HU Output Signals wire hu_add_done,hu_fsm_start,hu_add_sign; wire [9:0] hu_add_out;

huFSM _huFSM(hu_tmax_en,hu_tmin_en,hu_mux_sel,hu_add_start,hu_temp_en, hu_fsm_start,hu_add_sign,hu_add_done,clk,rst);

not _hun0(not_g_dclk,g_dclk); and _huEn(hu_fsm_start,g_hclk,not_g_dclk);

reg_x #(10,0) _temp(.q(hu_temp),.d(g_temp),.clk(clk),.reset(rst),.en(hu_temp_en)); reg_x #(10,10'b0011110001) _tmax(.q(hu_tmax),.d(hu_temp),.clk(clk),.reset(rst),.en(hu_tmax_en)); reg_x #(10,10'b0011110001) _tmin(.q(hu_tmin),.d(hu_temp),.clk(clk),.reset(rst),.en(hu_tmin_en));

mux21_10 _huMux(.out(hu_temptoadd),.sel(hu_mux_sel),.a(hu_tmax),.b(hu_tmin));

fpadder _fpahr(.out(hu_add_out),.done(hu_add_done),.a(hu_temp),.b(hu_temptoadd), .addSub(1'b1),.start(hu_add_start),.clk(clk),.rst(rst)); assign hu_add_sign=hu_add_out[9];

Multiplier Verilog

wire signa,signb,cout1,cout2;

//Assign pieces of Inputs assign signa = a[9]; assign signb = b[9]; assign expa = a[8:4]; assign expb = b[8:4]; assign siga = a[3:0]; assign sigb = b[3:0];

//Calculate Exponent addSub_6 ab(preExp,cout1,{1'b0,expa},{1'b0,expb},1'b0); addSub_6 ba(postExp,cout2,preExp,6'b001111,1'b1);

//Calculate Significand uMult_5 um(postSig,{1'b1,siga},{1'b1,sigb});

//Normalize fpmultnormalize nm(postNormSig,postNormExp,postSig,postExp);

//Assign Final Output assign out[8:4]=postNormExp[4:0]; assign out[3:0]=postNormSig; xor msign(out[9],signa,signb);

endmodule

//modify if rounding later,combine adders later module fpmultnormalize(sigPostNorm,expPostNorm,sigPreNorm,expPreNorm);

output [3:0] sigPostNorm; output [5:0] expPostNorm; input [9:0] sigPreNorm; input [5:0] expPreNorm;

wire cout; wire [5:0] addAmnt;

//Adjust Significand mux21_4 mm(sigPostNorm,sigPreNorm[9],sigPreNorm[7:4],sigPreNorm[8:5]);

//Adjust Exponent mux21_6 mm5(addAmnt,sigPreNorm[9],6'b000000,6'b000001); //reduce me later addSub_6 as5(expPostNorm,cout,expPreNorm,addAmnt,1'b1); endmodule

Adder Verilog

module fpAddSigUnit(sigFinal,siga,sigb,expDiff,compExpab,clk,rst,takeShiftSig,signa,signb,compSigab,sRaEn,sRbEn);

output [8:0] sigFinal; output compSigab; input [3:0] siga,sigb; input [3:0] expDiff; input compExpab,takeShiftSig,sRaEn,sRbEn,clk,rst,signa,signb;

wire compSigab,addSub,coutFinal; wire [7:0] sigFinala,sigFinalb,sigMuxa,sigMuxb,shOut,mShiftOut; wire [9:0] sigPreOut,sigFinOut; //q,d,clk,rst,en //Choose to register original or shifted sig mux21_8 mSiga(sigMuxa,takeShiftSig,{1'b1,siga,3'b000},shOut); mux21_8 mSigb(sigMuxb,takeShiftSig,{1'b1,sigb,3'b000},shOut); reg_x #(8,0) sRa(sigFinala,sigMuxa,clk,rst,sRaEn|(takeShiftSig&(~compExpab)) ); reg_x #(8,0) sRb(sigFinalb,sigMuxb,clk,rst,sRbEn|(takeShiftSig&compExpab) );

//Choose Significand to shift and shift it //0-> b is bigger, 1-> a is bigger mux21_8 mshift(mShiftOut,compExpab,sigFinala,sigFinalb); sbshiftr_8 sbs(shOut,mShiftOut,expDiff);

//AddSub significands based on signs //10 bit adder to accomodate negative bit and adding secret bits comp8 c8(compSigab,sigMuxa,sigMuxb); xor x0(addSub,signa,signb); addSub_10 addSigs(sigPreOut,coutFinal,{2'b00,sigMuxa},{2'b00,sigMuxb},addSub);

Design Challenges and Implementation

DecisionsFor The Past Week

Design Challenge

Translation to HW

Low Power Design

• Ripple Carry Adder• Quiet Bit Line SRAM Architecture • Sense Amplifier Flip Flop

Quiet-Bitline Architecture

for SRAM No Pre-Charging One side driving scheme where only a strong

‘0’ is forced in bit or bit bar when writing 85% power reduction over traditional

methods

Citation: “A Low-Power SRAM Design Using Quiet-Bitline Architecture” by Cheng et. al.

Problems/QuestionsOur Floor plan has a hole in the top

right…Need to more accurately determine

timing delays through modules

For Next WeekMake Transistor Level SchematicBegin Layout of Smaller ModulesContinue to Revise and Update Floor

Plan

top related