EE330 Design Project
EE330 Design ProjectRyan SemlerIn this project I will design a new automotive safety chip. Allowing additional safety features including: auto-braking, and intelligent airbag deploymentThis project I have chosen to design an automotive safety chip. It will take inputs from a SONAR sensor to control an auto-brake feature. It will also take inputs to determine where an impact happened and which airbags to deploy in a collision. I will be using the digital design tools we previously used in lab to create an electronic circuit from a Verilog file. The first thing to do is develop a truth table with all of the possible inputs, and outputs . This will help troubleshoot if there is an error during design. It is also useful to have while setting up logical statements. (truth table attached).Once the truth table was complete, setting up the Verilog file was next. I chose to set up my braking by setting an output to every possible input. I then used nested if loops to set up my air bag sensors. The nested if loops were easier to get confused, but I did not have to type as much.//Verilog HDL for "lablib", "FinalProject" "behavioral"module FinalProject (sonar,brakes,clk,airbags,f_right,f_left,l_door,r_door,accel,pass_detect);input [7:0] sonar;input clk,accel,f_right,f_left,l_door,r_door,pass_detect;output [2:0] airbags;output [3:0] brakes;reg [3:0] brakes;reg [2:0] airbags;always @ (posedge clk)case (sonar)8'b00000000 : brakes = 4'b0000;8'b00000001 : brakes = 4'b0000;8'b00000010 : brakes = 4'b0000; 8'b00000011 : brakes = 4'b0000;8'b00000100 : brakes = 4'b0000;8'b00000101 : brakes = 4'b0000;8'b00000110 : brakes = 4'b0000;8'b00000111 : brakes = 4'b0000;8'b00001000 : brakes = 4'b0000;8'b00001001 : brakes = 4'b0001;8'b00001010 : brakes = 4'b0001;8'b00001011 : brakes = 4'b0001;8'b00001100 : brakes = 4'b0001;8'b00001101 : brakes = 4'b0001;8'b00001110 : brakes = 4'b0001;8'b00001111 : brakes = 4'b0001;8'b00010000 : brakes = 4'b0001;8'b00010001 : brakes = 4'b0001;8'b00010010 : brakes = 4'b0010;8'b00010011 : brakes = 4'b0010;8'b00010100 : brakes = 4'b0010;8'b00010101 : brakes = 4'b0010;8'b00010110 : brakes = 4'b0010;8'b00010111 : brakes = 4'b0010;8'b00011000 : brakes = 4'b0010;8'b00011001 : brakes = 4'b0010;8'b00011010 : brakes = 4'b0010;8'b00011011 : brakes = 4'b0011;8'b00011100 : brakes = 4'b0011;8'b00011101 : brakes = 4'b0011;8'b00011110 : brakes = 4'b0011;8'b00011111: brakes = 4'b0011;8'b00100000: brakes = 4'b0011;8'b00100001: brakes = 4'b0011;8'b00100010: brakes = 4'b0011;8'b00100011: brakes = 4'b0011;8'b00100100: brakes = 4'b0100;8'b00100101: brakes = 4'b0100;8'b00100110: brakes = 4'b0100;8'b00100111: brakes = 4'b0100;8'b00101000: brakes = 4'b0100;8'b00101001: brakes = 4'b0100;8'b00101010: brakes = 4'b0100;8'b00101011: brakes = 4'b0100;8'b00101100: brakes = 4'b0100;8'b00101101: brakes = 4'b0101;8'b00101110: brakes = 4'b0101;8'b00101111: brakes = 4'b0101;8'b00110000: brakes = 4'b0101;8'b00110001: brakes = 4'b0101;8'b00110010: brakes = 4'b0101;8'b00110011: brakes = 4'b0101;8'b00110100: brakes = 4'b0101;8'b00110101: brakes = 4'b0101;8'b00110110: brakes = 4'b0111;8'b00110111: brakes = 4'b0111;8'b00111000: brakes = 4'b0111;8'b00111001: brakes = 4'b0111;8'b00111010: brakes = 4'b0111;8'b00111011: brakes = 4'b0111;8'b00111100: brakes = 4'b0111;8'b00111101: brakes = 4'b0111;8'b00111110: brakes = 4'b0111;8'b00111111: brakes = 4'b1000;8'b01000000: brakes = 4'b1000;8'b01000000: brakes = 4'b1000;8'b01000001: brakes = 4'b1000;8'b01000010: brakes = 4'b1000;8'b01000011: brakes = 4'b1000;8'b01000100: brakes = 4'b1000;8'b01000101: brakes = 4'b1000;8'b01000110: brakes = 4'b1000;8'b01000111: brakes = 4'b1001;8'b01001000: brakes = 4'b1001;8'b01001001: brakes = 4'b1001;8'b01001010: brakes = 4'b1001;8'b01001011: brakes = 4'b1001;8'b01001100: brakes = 4'b1001;8'b01001101: brakes = 4'b1001;8'b01001110: brakes = 4'b1001;8'b01001111: brakes = 4'b1001;8'b01010000: brakes = 4'b1010;8'b01010001: brakes = 4'b1010;8'b01010010: brakes = 4'b1010;8'b01010011: brakes = 4'b1010;8'b01010100: brakes = 4'b1010;8'b01010101: brakes = 4'b1010;8'b01010110: brakes = 4'b1010;8'b01010111: brakes = 4'b1010;8'b01011000: brakes = 4'b1010;8'b01011001: brakes = 4'b1011;8'b01011010: brakes = 4'b1011;8'b01011011: brakes = 4'b1011;8'b01011100: brakes = 4'b1011;8'b01011101: brakes = 4'b1011;8'b01011110: brakes = 4'b1011;8'b01011111: brakes = 4'b1011;8'b01100000: brakes = 4'b1011;8'b01100001: brakes = 4'b1011;8'b01100010: brakes = 4'b1100;8'b01100011: brakes = 4'b1100;8'b01100100: brakes = 4'b1100;8'b01100101: brakes = 4'b1100;8'b01100110: brakes = 4'b1100;8'b01100111: brakes = 4'b1100;8'b01101000: brakes = 4'b1100;8'b01101001: brakes = 4'b1100;8'b01101010: brakes = 4'b1100;8'b01101011: brakes = 4'b1101;8'b01101100: brakes = 4'b1101;8'b01101101: brakes = 4'b1101;8'b01101110: brakes = 4'b1101;8'b01101111: brakes = 4'b1101;8'b01110000: brakes = 4'b1101;8'b01110001: brakes = 4'b1101;8'b01110010: brakes = 4'b1101;8'b01110011: brakes = 4'b1101;8'b01110100: brakes = 4'b1110;8'b01110101: brakes = 4'b1110;8'b01110110: brakes = 4'b1110;8'b01110111: brakes = 4'b1110;8'b01111000: brakes = 4'b1110;8'b01111001: brakes = 4'b1110;8'b01111010: brakes = 4'b1110;8'b01111011: brakes = 4'b1110;8'b01111100: brakes = 4'b1110;8'b01111101: brakes = 4'b1111;8'b01111110: brakes = 4'b1111;8'b01111111: brakes = 4'b1111;8'b10000000: brakes = 4'b1111;8'b10000001: brakes = 4'b1111;8'b10000010: brakes = 4'b1111;8'b10000011: brakes = 4'b1111;8'b10000100: brakes = 4'b1111;8'b10000101: brakes = 4'b1111;8'b10000110: brakes = 4'b1111;8'b10000111: brakes = 4'b1111;8'b10001000: brakes = 4'b1111;8'b10001001: brakes = 4'b1111;8'b10001010: brakes = 4'b1111;8'b10001011: brakes = 4'b1111;8'b10001100: brakes = 4'b1111;8'b10001101: brakes = 4'b1111;8'b10001110: brakes = 4'b1111;8'b10001111: brakes = 4'b1111;8'b10010000: brakes = 4'b1111;8'b10010001: brakes = 4'b1111;8'b10010010: brakes = 4'b1111;8'b10010011: brakes = 4'b1111;8'b10010100: brakes = 4'b1111;8'b10010101: brakes = 4'b1111;8'b10010110: brakes = 4'b1111;8'b10010111: brakes = 4'b1111;8'b10011000: brakes = 4'b1111;8'b10011001: brakes = 4'b1111;8'b10011010: brakes = 4'b1111;8'b10011011: brakes = 4'b1111;8'b10011100: brakes = 4'b1111;8'b10011101: brakes = 4'b1111;8'b10011110: brakes = 4'b1111;8'b10011111: brakes = 4'b1111;8'b10100000: brakes = 4'b1111;8'b10100001: brakes = 4'b1111;8'b10100010: brakes = 4'b1111;8'b10100011: brakes = 4'b1111;8'b10100100: brakes = 4'b1111;8'b10100101: brakes = 4'b1111;8'b10100110: brakes = 4'b1111;8'b10100111: brakes = 4'b1111;8'b10101000: brakes = 4'b1111;8'b10101001: brakes = 4'b1111;8'b10101010: brakes = 4'b1111;8'b10101011: brakes = 4'b1111;8'b10101100: brakes = 4'b1111;8'b10101101: brakes = 4'b1111;8'b10101110: brakes = 4'b1111;8'b10101111: brakes = 4'b1111;8'b10110000: brakes = 4'b1111;8'b10110001: brakes = 4'b1111;8'b10110010: brakes = 4'b1111;8'b10110011: brakes = 4'b1111;8'b10110100: brakes = 4'b1111;8'b10110101: brakes = 4'b1111;8'b10110110: brakes = 4'b1111;8'b10110111: brakes = 4'b1111;8'b10111000: brakes = 4'b1111;8'b10111001: brakes = 4'b1111;8'b10111010: brakes = 4'b1111;8'b10111011: brakes = 4'b1111;8'b10111100: brakes = 4'b1111;8'b10111101: brakes = 4'b1111;8'b10111110: brakes = 4'b1111;8'b10111111: brakes = 4'b1111;8'b11000000: brakes = 4'b1111;8'b11000001: brakes = 4'b1111;8'b11000010: brakes = 4'b1111;8'b11000011: brakes = 4'b1111;8'b11000100: brakes = 4'b1111;8'b11000101: brakes = 4'b1111;8'b11000110: brakes = 4'b1111;8'b11000111: brakes = 4'b1111;8'b11001000: brakes = 4'b1111;8'b11001001: brakes = 4'b1111;8'b11001010: brakes = 4'b1111;8'b11001011: brakes = 4'b1111;8'b11001100: brakes = 4'b1111;8'b11001101: brakes = 4'b1111;8'b11001110: brakes = 4'b1111;8'b11001111: brakes = 4'b1111;8'b11010000: brakes = 4'b1111;8'b11010001: brakes = 4'b1111;8'b11010010: brakes = 4'b1111;8'b11010011: brakes = 4'b1111;8'b11010100: brakes = 4'b1111;8'b11010101: brakes = 4'b1111;8'b11010110: brakes = 4'b1111;8'b11010111: brakes = 4'b1111;8'b11011000: brakes = 4'b1111;8'b11011001: brakes = 4'b1111;8'b11011010: brakes = 4'b1111;8'b11011011: brakes = 4'b1111;8'b11011100: brakes = 4'b1111;8'b11011101: brakes = 4'b1111;8'b11011110: brakes = 4'b1111;8'b11011111: brakes = 4'b1111;8'b11100000: brakes = 4'b1111;8'b11100001: brakes = 4'b1111;8'b11100010: brakes = 4'b1111;8'b11100011: brakes = 4'b1111;8'b11100100: brakes = 4'b1111;8'b11100101: brakes = 4'b1111;8'b11100110: brakes = 4'b1111;8'b11100111: brakes = 4'b1111;8'b11101000: brakes = 4'b1111;8'b11101001: brakes = 4'b1111;8'b11101010: brakes = 4'b1111;8'b11101011: brakes = 4'b1111;8'b11101100: brakes = 4'b1111;8'b11101101: brakes = 4'b1111;8'b11101110: brakes = 4'b1111;8'b11101111: brakes = 4'b1111;8'b11110000: brakes = 4'b1111;8'b11110001: brakes = 4'b1111;8'b11110010: brakes = 4'b1111;8'b11110011: brakes = 4'b1111;8'b11110100: brakes = 4'b1111;8'b11110101: brakes = 4'b1111;8'b11110110: brakes = 4'b1111;8'b11110111: brakes = 4'b1111;8'b11111000 : brakes = 4'b1111;8'b11111001 : brakes = 4'b1111;8'b11111010 : brakes = 4'b1111;8'b11111011 : brakes = 4'b1111;8'b11111100 : brakes = 4'b1111;8'b11111101 : brakes = 4'b1111;8'b11111110 : brakes = 4'b1111;8'b11111111 : brakes = 4'b1111;default : $display("Error");endcasealways @ (posedge clk)beginairbags = 3'b000;if (accel==1)if(f_right==1)if(f_left==1)if(l_door==1)airbags = 3'b100; //if r_door sensor, and pass_detect are 1. It will still deploy only driver sideelseif(r_door==1) //if everything but left door go offif(pass_detect==1)airbags = 3'b101;else //no passenger only front driverairbags = 3'b001;elseif(pass_detect==1)airbags = 3'b010;elseairbags = 3'b001;elseif(l_door==1)airbags = 3'b100; // another don't care whether passenger is present or door sensor trips because only protecting driver side with l_door going offelseif(r_door==1)if(pass_detect==1)airbags = 3'b101;elseairbags = 3'b001;elseif(pass_detect==1)airbags = 3'b010;elseairbags = 3'b001;elseif(f_left==1)if(l_door==1)airbags = 3'b100; // again don't care whether passenger is present, or door sensor for passenger trips only protect driverelseif(r_door==1)if(pass_detect==1)airbags = 3'b101;//side curtain for passenger onlyelseairbags = 3'b001;// if get hit in right door but no passenger, and front impact. only drivers front airbagelseif(pass_detect==1)airbags = 3'b010;elseairbags = 3'b001;elseif(l_door==1)if(r_door==1)airbags = 3'b110;//no front only side impacts. only protects drivers side.elseif(r_door==1)if(pass_detect==1)airbags = 3'b111;elseairbags = 3'b000;//only passenger impact with no passenger, no airbags at allelseairbags = 3'b000;endendmoduleOnce the Verilog file was complete, I needed to use the simulation software to verify my logic. I made a test fixture file to simulate the inputs. The file i used I set clock to start at high, this prevents a condition where the first outputs are "don't cares". I also set the clock to be 13000ns (the parameter period = 1000; go cut off my screenshot below)The waveform generated from the test bench.After verifying the correct outputs for various models I continued on to the RTL Compiler. Using compiler I created a schematic from the Verilog file.After Synthesis the schematic looks like:Once exported back to cadence the schematic looks like:The Symbol View looks like:The schematic and symbol are finished, now I want to use encounter to create my layout view.Once encounter was started, I imported the synthesized Verilog file, and used the floor plan settings, and power settings that were recommended in the previous labs.The next step was to place the cells and blocks, and route the power.Once I had everything laid out, I added filler, verified my connectivity and geometry and exported back to cadence.When the layout is imported to cadence, the pins are incorrectly placed causing DRC errors. I had to delete all the Encounter created pins, and manually connect them.Once there are no DRC errors, the layout can be extracted and checked with LVS.@(#)$CDS: LVS.exe version 5.1.0 06/17/2008 00:59 (cicln04) $Command line: /usr/local/cadence/IC5141/tools.lnx86/dfII/bin/32bit/LVS.exe -dir /home/rsemler/ee330/ee330finalproject/LVS -l -s -t /home/rsemler/ee330/ee330finalproject/LVS/layout /home/rsemler/ee330/ee330finalproject/LVS/schematicLike matching is swapping is enabled.Using terminal names as correspondence points. Net-list summary for /home/rsemler/ee330/ee330finalproject/LVS/layout/netlist count286nets22terminals255pmos255nmos Net-list summary for /home/rsemler/ee330/ee330finalproject/LVS/schematic/netlist count286nets24terminals255pmos255nmos Terminal correspondence points N252 N65 accel N178 N57 airbags<0> N279 N95 airbags<1> N227 N17 airbags<2> N210 N6 brakes<0> N165 N34 brakes<1> N281 N96 brakes<2> N257 N69 brakes<3> N234 N31 clk N106 N52 f_left N38 N39 f_right N52 N67 l_door N174 N48 pass_detect N172 N45 r_door N29 N28 sonar<0> N145 N7 sonar<1> N5 N8 sonar<2> N171 N41 sonar<3> N159 N20 sonar<4> N1 N5 sonar<5> N107 N53 sonar<6> N57 N75 sonar<7>Devices in the rules but not in the netlist: res cap nfet pfet nmos4 pmos4The net-lists match. layout schematicinstancesun-matched00rewired00size errors00pruned00active510510total510510 netsun-matched00merged00pruned00active286286total286286terminalsun-matched00matched butdifferent type00total2224Probe files from /home/rsemler/ee330/ee330finalproject/LVS/schematicdevbad.out:netbad.out:mergenet.out:termbad.out:prunenet.out:prunedev.out:audit.out:Probe files from /home/rsemler/ee330/ee330finalproject/LVS/layoutdevbad.out:netbad.out:mergenet.out:termbad.out:prunenet.out:prunedev.out:audit.out:The layout and schematic match, our process is complete for this project.This project was difficult in many ways and easier in many ways. Using computer tools the process is much faster, and RTL Compiler/ Encounter save a lot of time over creating the schematic and layout by hand. The addition of buses and a clock changed the way I had to start the project. I originally thought I needed to take the individual inputs from the bus as separate connections. This could have been explained better since we did not use buses in our previous experiments. The first project was easier to understand the input and output requirements than the other two projects, but some extra inputs or requirements could have made it equally difficult. ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related searches
- 3d design something
- 2019 toyota highlander design change
- product design website
- design something online
- design your own monogram free
- design your own tea towel
- design your dream house virtual
- 3d virtual home design free
- design a virtual house free
- project in project management definition
- project goal and project requirement
- project and project management