1 / 44

ECE 44 8 – FPGA and ASIC Design with VHDL

ECE 448 Lab 2 Implementing Combinational Logic in VHDL. ECE 44 8 – FPGA and ASIC Design with VHDL. George Mason University. Agenda for today. Part 1: Hands-on Session: Simulation Using Aldec Active-HDL Part 2: Introduction to Lab 2 Part 3: Asserts and Reports

gada
Download Presentation

ECE 44 8 – FPGA and ASIC Design with VHDL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ECE 448 Lab 2 Implementing Combinational Logic in VHDL ECE 448 – FPGA and ASIC Design with VHDL George Mason University

  2. Agenda for today Part 1: Hands-on Session: Simulation Using Aldec Active-HDL Part 2: Introduction to Lab 2 Part 3: Asserts and Reports Part 4: Advanced Testbenches with test vectors stored in arrays of records Part 5: Advanced Testbenches with test vectors stored in text files Part 6: Demos of Lab 1

  3. Part 1 Hands-on Session Simulation Using Aldec Active-HDL ECE 448 – FPGA and ASIC Design with VHDL

  4. Hands-on Session based on the MLU example with simple testbench

  5. Part 2 Introduction to Lab 2 ECE 448 – FPGA and ASIC Design with VHDL

  6. Discussion of the Pseudocode, Requirements, and Hints

  7. Part 1: Example of a Block Diagram(for a different circuit)

  8. Bonus Task Variable Rotator Example of a Problem Similar to the Bonus Task

  9. Function C = A <<< B A – 4-bit data input B – 2-bit rotation amount

  10. Interface A 4 2 B 4 C

  11. Block diagram C

  12. Fixed Rotation in VHDL SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ArotL: STD_LOGIC_VECTOR(3 DOWNTO 0); A(3) A(2) A(1) A(0) A A<<<1 ArotL A(2) A(1) A(0) A(3) ArotL <= A(2 downto 0) & A(3);

  13. Advanced Testbenches ECE 448 – FPGA and ASIC Design with VHDL

  14. Simple Testbench Processes Generating Stimuli Design Under Test (DUT) Observed Outputs

  15. Advanced Testbench (1) Process Comparing Actual Outputsvs. Expected Outputs Processes Generating Input Stimuli Design Under Test (DUT) Yes/No Design Correct/Incorrect

  16. Advanced Testbench (2) Process Comparing Actual Outputsvs. Expected Outputs Processes Generating Input Stimuli Design Under Test (DUT) Yes/No Testvector file(s) Design Correct/Incorrect

  17. Test vectors Set of pairs: {Input i, Expected Output i} Input 1, Expected Output 1 Input 2, Expected Output 2 …………………………… Input N, Expected Output N Test vectors can be: - defined in the testbench source file - stored in a data file

  18. Possible sources of expected results used for comparison Testbench actual results VHDL Design = ? Representative Inputs Manual Calculations or Reference Software Implementation(C, Java, Matlab ) expected results

  19. Part 3 Asserts and Reports ECE 448 – FPGA and ASIC Design with VHDL

  20. Assert Assert is a non-synthesizable statement whose purpose is to write out messages on the screen when problems are found during simulation. Depending on the severity of the problem, The simulator is instructed to continue simulation or halt.

  21. Assert - syntax ASSERT condition [REPORT "message“] [SEVERITY severity_level ]; The message is written when the condition is FALSE. Severity_level can be: Note, Warning, Error (default), or Failure.

  22. Assert – Examples (1) assert initial_value <= max_value report "initial value too large" severity error; assert packet_length /= 0 report "empty network packet received" severity warning; assert false report "Initialization complete" severity note;

  23. Assert – Examples (2) stim_proc: process begin wait for 20 ns assert false report "PASSED CHECKPOINT 1" severity note; wait for 10 ns; assert false report "PASSED CHECKPOINT 2" severity warning;

  24. Assert – Examples (3) wait for 10 ns; assert false report "PASSED CHECKPOINT 3" severity error; wait for 10 ns; assert false report "PASSED CHECKPOINT 4" severity failure; wait; end process; ECE 448 – FPGA and ASIC Design with VHDL

  25. Example 1 Asserts & Reports

  26. Format of messages in Aldec Active-HDL

  27. Format of messages in Xilinx ISim

  28. Report - syntax REPORT "message" [SEVERITY severity_level ]; The message is always written. Severity_level can be: Note (default), Warning, Error, or Failure.

  29. Report - Examples report "Initialization complete"; report "Current time = "& time'image(now); report "Incorrect branch" severity error;

  30. Report - Examples library IEEE; use IEEE.STD_LOGIC_1164.all; entity example_1_tb is end example_1_tb; architecture behavioral of example_1_tb is signal clk : std_logic := '0'; begin clk <= not clk after 100 ns; process begin wait for 1000 ns; report "Initialization complete"; report "Current time = " & time'image(now); wait for 1000 ns; report "SIMULATION COMPLETED" severity failure; end process; end behavioral;

  31. Part 4 Advanced Testbenches with Test Vectors Stored in an Array of Records ECE 448 – FPGA and ASIC Design with VHDL

  32. Advanced Testbench (1) Process Comparing Actual Outputsvs. Expected Outputs Processes Generating Input Stimuli Design Under Test (DUT) Yes/No Design Correct/Incorrect

  33. Records ECE 448 – FPGA and ASIC Design with VHDL

  34. Records TYPE test_vector IS RECORD operation : STD_LOGIC_VECTOR(1 DOWNTO 0); a : STD_LOGIC; b: STD_LOGIC; y : STD_LOGIC; END RECORD; CONSTANT num_vectors : INTEGER := 16; TYPE test_vectors IS ARRAY (0TOnum_vectors-1) OF test_vector; CONSTANT and_op : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00"; CONSTANT or_op : STD_LOGIC_VECTOR(1 DOWNTO 0) := "01"; CONSTANT xor_op : STD_LOGIC_VECTOR(1 DOWNTO 0) := "10"; CONSTANT xnor_op : STD_LOGIC_VECTOR(1 DOWNTO 0) := "11";

  35. Records CONSTANT test_vector_table: test_vectors :=( (operation => AND_OP, a=>'0', b=>'0', y=>'0'), (operation => AND_OP, a=>'0', b=>'1', y=>'0'), (operation => AND_OP, a=>'1', b=>'0', y=>'0'), (operation => AND_OP, a=>'1', b=>'1', y=>'1'), (operation => OR_OP, a=>'0', b=>'0', y=>'0'), (operation => OR_OP, a=>'0', b=>'1', y=>'1'), (operation => OR_OP, a=>'1', b=>'0', y=>'1'), (operation => OR_OP, a=>'1', b=>'1', y=>'1'), (operation => XOR_OP, a=>'0', b=>'0', y=>'0'), (operation => XOR_OP, a=>'0', b=>'1', y=>'1'), (operation => XOR_OP, a=>'1', b=>'0', y=>'1'), (operation => XOR_OP, a=>'1', b=>'1', y=>'0'), (operation => XNOR_OP, a=>'0', b=>'0', y=>'1'), (operation => XNOR_OP, a=>'0', b=>'1', y=>'0'), (operation => XNOR_OP, a=>'1', b=>'0', y=>'0'), (operation => XNOR_OP, a=>'1', b=>'1', y=>'1') );

  36. Variables ECE 448 – FPGA and ASIC Design with VHDL

  37. Variables - features • Can only be declared within processes and subprograms (functions & procedures) • Initial value can be explicitly specified in the declaration • When assigned take an assigned value immediately • Variable assignments represent the desired behavior, not the structure of the circuit • Can be used freely in testbenches • Should be avoided, or at least used with caution in a synthesizable code

  38. Variables - Example testing: PROCESS VARIABLE error_cnt: INTEGER := 0; BEGIN FOR i IN 0 to num_vectors-1 LOOP test_operation <= test_vector_table(i).operation; test_a <= test_vector_table(i).a; test_b <= test_vector_table(i).b; WAIT FOR 10 ns; IF test_y /= test_vector_table(i).y THEN error_cnt := error_cnt + 1; END IF; END LOOP; END PROCESS testing;

  39. Example 2 Testbenches with Test Vectors Stored in Arrays of Records

  40. Part 5 Advanced Testbenches with Test Vectors Stored in Text Files ECE 448 – FPGA and ASIC Design with VHDL

  41. Advanced Testbench (2) Process Comparing Actual Outputsvs. Expected Outputs Processes Generating Input Stimuli Design Under Test (DUT) Yes/No Testvector file(s) Design Correct/Incorrect

  42. Example 3 Testbenches with Test Vectors Stored in a Text File

  43. Hex format In order to read/write data in the hexadecimal notation, replace read with hread, and write with hwrite

  44. Part 6 Lab 1 Demos ECE 448 – FPGA and ASIC Design with VHDL

More Related