Kazi ECE 6811 ECE 681 VLSI Design Automation Khurram Kazi Thanks to Automation press THE button outcomes the Chip !!! Reality or Myth
Kazi ECE Course Outline Overview of ASIC design flow Writing VHDL for Synthesis Behavioral Modeling (Test Bench Development in VHDL) How to Constrain and Optimize the Design in Synthesis Introduction to Specman ‘e’; Language for verification Self Checking Design Verification Concepts Overview of Verilog (another HDL) with Synthesis in mind Gate Level Verification Formal Checking Static Timing Analysis.
Kazi ECE Grading Policy Homework20% 2 Midterms40% Final Project40% Homework and Final Projects can be customized to your field of specialization, may it be in Data Networking, Cryptography, Specialized Arithmetic Operations, Video Compression etc.
Kazi ECE Do’s and Don’ts for the Final Project Any off the shelf general purpose microprocessor or any other circuit taken from the publicly available information base. Come up with your own functional idea and Implement it. Be creative! Have a system’s perspective and see how your ASIC fits in the system.
Kazi ECE How much collaboration is acceptable Since time will be short, I would encourage you to help out your fellow students with the “Usage of the Tools” and not the Design. Informing me of the help received is strongly encouraged. Helping with Tools and class participation will be rewarded in the final grade.
Kazi ECE Overview of Some of the steps in an ASIC flow
Kazi ECE RTL Block Synthesis* *Simplified design flow
Kazi ECE Insert Test Structure (Internal Scan and JTAG)* *Simplified design flow
Kazi ECE Insert Test Structure (Internal Scan and JTAG)* *Simplified design flow
Kazi ECE Insert I/O Pads* *Simplified design flow
Kazi ECE ASIC Floorplan* *Simplified design flow
Kazi ECE Getting ASIC Ready for Handoff* *Simplified design flow
Kazi ECE Where to Start in the ASIC Process! Begin with ASIC Specification (most likely by the time you are done the Final Spec. will be quite different) Based on performance requirements define operating frequencies, I/O pad types, operating conditions, verification and test requirements to ensure error free design and manufacturability
Kazi ECE Overview of Synthesizable VHDL Library and Library Declarations Entity Declaration Architecture Configuration
Kazi ECE Overview of Synthesizable VHDL Package contains commonly used declarations –Constants maybe defined here –Enumerated data types (SFD, SA, DA) –Combinatorial functions (performing a decode function; returns single value) –Procedures (can return multiple values) –Component declarations
Kazi ECE Overview of Synthesizable VHDL Entity –Defines the component name, its inputs and outputs (I/Os) and related declarations. –Can use same Entity for different architecture to study various design trade offs. Use std_logic and std_logic_vector(n downto 0): they are synthesis friendly. Avoid enumerated type of I/Os. Avoid using port type buffer or bidir (unless have to)
Kazi ECE Overview of Synthesizable VHDL Architecture –Defines the functionality of the design –Normally consists of processes and concurrent signal assignments Synchronous and/or combinatorial logic can be inferred from the way functionality is defined in the Processes. Avoid nested loops Avoid generate statements with large indices Always think hardware when developing code!
Kazi ECE Some useful starting practices Organize Your Design Workspace Define naming convention (especially if multiple designers are on the project Completely Specify Sensitivity Lists Try to separate combinatorial logic from sequential logic
Kazi ECE Separation of Combinatorial and Sequential Logic
Kazi ECE Synthesis of “if – then – elsif” statement
Kazi ECE Case statement Synthesis Case statement Synthesis
Kazi ECE What is synthesized from this Code? Process (A, B) begin if (A = ‘1’) then Q <= B; end if; end process; // there are 2 outputs, Q and Z Process (c) begin case C is when ‘0’ => Q <= ‘1’; Z <= ‘0’; when others => Q <= ‘0’; end case; end process; Missing else Otherwise a latch is inferred Missing Z output Otherwise a latch is inferred
Kazi ECE for loop synthesis Process (a,b) begin for i in 0 to 5 loop example (i) <= a(i) and b(5-i); end loop; end process; Example(0) <= a(0) and b(5); Example(1) <= a(1) and b(4); Example(2) <= a(2) and b(3); Example(3) <= a(3) and b(2); Example(4) <= a(4) and b(1); Example(5) <= a(5) and b(0); for loops are “unrolled” and then synthesized.
Kazi ECE Example of SONET Framing block in a framer ASIC A1A …………..……….90 th byte A1 = hexF6, A2 = hex28; is the framing pattern used in SONET networks; Order or transmission is F6 ( ) msb transmitted first.
Kazi ECE Frame Acquisition in SONET (STS-1) Each frame consists of 810 bytes. The first 2 bytes are A1 and A2. These two bytes have same fixed patter. Hence used for acquiring framing, i.e. byte boundary is defined. It takes 2 frames to go in sync. Once in frame, framer keeps monitoring A1A2 bytes. If 2 contiguous wrong patterns are detected for A1A2 -> errored frame is implied 4 contiguous A1A2 wrong patterns -> severely errored frame 24 contiguous A1A2 wrong patterns -> out frame state is declared. Respective alarms are generated.
Kazi ECE What will it take to design a SONET framer (simple version) Shift in the data in a 16 bit long shift register and match the F628 pattern. Once that pattern is detected, load an octet (byte) counter with a value of 2 (corresponds to the 3 rd byte in the SONET frame) Every time counter is 0 and 1, compare the bytes with F628 pattern to ensure framing is maintained.
Kazi ECE Assignment 1 Design a SONET framer. Based on A1 and A2 pattern, design a counter that counts bytes. There should be a bit counter that maintains the byte boundary. The bit counter is set to a value of 0 the next cycle the A2 byte pattern is detected. From then on, the bit counter is modulo 8 counter and the byte counter is a modulo 810. Every time bit counter counts to 7, the next cycle the byte counter gets incremented. In the design define states (header0, payload0, header1, payload1, header3, payload3 … header8, payload8). Header0 corresponds to when the byte counter is counting between 0-2, payload0 ->3-89, header1 ->90-92, payload1 -> and so on till the counter wraps around. Hints: Start your designs by writing code for 16 shift register. Every cycle do a check for the F628 pattern. The decode of that pattern should be used to preload your bit and byte counters. Need to generate a test bench that generate SONET frame data. It can be a sequence of up counter with only two bytes to have the F628 pattern in the data stream. Make sure the rest of the bytes of the 810 byte frame do not have that pattern. Do not start the first two bytes of your test bench pattern generator with F628 pattern.