SWITCH LEVEL ANALYSIS













SWITCH LEVEL ANALYSIS - LOAD DEPENDED TIMING





1. Resolution :






  • Model gates for load dependent timing
  • Timing depends on capacitance
  • A resolution function adds all capacitances
  • Internal Timing depends on total capacitance at output











SWITCH LEVEL ANALYSIS - LOAD DEPENDED TIMING





2. Utilities :







  TYPE line IS RECORD
    logic : wired_qit;
    load  : loading capacitance; 
  END RECORD;   



1) A Logical value
2) A Load value







Utilities


    LIBRARY cmos; USE cmos.basic_utilities.ALL; PACKAGE added_utilities IS FUNCTION loading (drivers : capacitance_vector) RETURN capacitance; SUBTYPE loading_capacitance IS loading capacitance; TYPE line IS RECORD logic : wired_qit; load : loading capacitance; END RECORD; END added_utilities; PACKAGE BODY added_utilities IS FUNCTION loading (drivers : capacitance_vector) RETURN capacitance IS VARIABLE load_value : capacitance := 0 ffr; BEGIN FOR i IN drivers'RANGE LOOP load_value := load_value + drivers(i); END LOOP; RETURN load_value; END loading; END added_utilities;



  • Use most of basic_utilities
  • Add new types and resolution functions in the
added_utilities











SWITCH LEVEL ANALYSIS - LOAD DEPENDED TIMING





3. Gate Model :



    SwitchLevel.LoadDependentTiming.GateModel USE WORK.added_utilities.ALL; -- ENTITY nand_2 IS PORT(in1,in2 : INOUT line; out1 : INOUT line); END nand_2; -- ARCHITECTURE load_dependent OF nand_2 IS CONSTANT pullup : resistance := 15 k_o; CONSTANT pulldown: resistance := 10 k_o; BEGIN in1.load <= 10 ffr; in2.load <= 10 ffr; out1.load <= 2 ffr; in1.logic <= 'Z' ; in2.logic <= 'Z' ; outing : PROCESS(in1.logic , in2.logic) VARIABLE temp_out : qit; BEGIN temp_out := in1.logic NAND in2.logic; IF temp_out = '0' THEN out1.logic <= '0' AFTER 3 * pulldown * out1.load; ELSE IF temp_out = '1' THEN out1.logic <= '1' AFTER 3 * pullup * out1.load; ELSE out1.logic <= temp_out; END IF; END IF; END PROCESS outing; END load_dependent;



  • out1.load is returned by the resolution function
  • NAND gate delay depends on total capacitance











SWITCH LEVEL ANALYSIS - LOAD DEPENDED TIMING





4. Simulation :


    USE WORK.added_utilities.ALL; ENTITY three_nand_system IS END three_nand_system; -- ARCHITECTURE test OF three_nand_system IS COMPONENT nand_2 PORT(in1,in2 : INOUT line ; out1 : INOUT line); END COMPONENT; SIGNAL a1,b1,b2,b3,q1_out,q2_out,q3_out : line; BEGIN b1.logic <= '1'; b2.logic <= '1'; b3.logic <= '1'; a1.logic <= '0', '1' AFTER 100 NS, '0' AFTER 300 NS, 'Z' AFTER 700 NS, 'X' AFTER 800 NS, '1' AFTER 1000 NS; n1 : nand_2 PORT MAP(a1,b1,q1_out); n2 : nand_2 PORT MAP(q1_out,b2,q2_out); n3 : nand_2 PORT MAP(q1_out,b3,q3_out); END test;
    fs a1 b1 b2 b3 q1_out q2_out q3_out 0 (0, 00) (0, 00) (0, 00) (0, 00) (0, 00) (0, 0) (0, 0) 0 (0, 10) (1, 10) (1, 10) (1, 10) (1, 22) (1, 2) (1, 2) 60000 (0, 10) (1, 10) (1, 10) (1, 10) (1, 22) (0, 2) (0, 2) 100000000 (1, 10) (1, 10) (1, 10) (1, 10) (1, 22) (0, 2) (0, 2) 100660000 (1, 10) (1, 10) (1, 10) (1, 10) (0, 22) (0, 2) (0, 2) 100960000 (1, 10) (1, 10) (1, 10) (1, 10) (0, 22) (1, 2) (1, 2) 300000000 (0, 10) (1, 10) (1, 10) (1, 10) (0, 22) (1, 2) (1, 2) 300000105 (0, 10) (1, 10) (1, 10) (1, 10) (1, 22) (1, 2) (1, 2) 299065033 (0, 10) (1, 10) (1, 10) (1, 10) (1, 22) (0, 2) (0, 2) 700000000 (Z, 10) (1, 10) (1, 10) (1, 10) (1, 22) (0, 2) (0, 2) 700660000 (Z, 10) (1, 10) (1, 10) (1, 10) (0, 22) (0, 2) (0, 2) 700960000 (Z, 10) (1, 10) (1, 10) (1, 10) (0, 22) (1, 2) (1, 2) 800000000 (X, 10) (1, 10) (1, 10) (1, 10) (0, 22) (1, 2) (1, 2) 800000000+ (X, 10) (1, 10) (1, 10) (1, 10) (X, 22) (1, 2) (1, 2) 800000000+ (X, 10) (1, 10) (1, 10) (1, 10) (X, 22) (X, 2) (X, 2) 1000000000 (1, 10) (1, 10) (1, 10) (1, 10) (X, 22) (X, 2) (X, 2) 1000660000 (1, 10) (1, 10) (1, 10) (1, 10) (0, 22) (X, 2) (X, 2) 1000960000 (1, 10) (1, 10) (1, 10) (1, 10) (0, 22) (1, 2) (1, 2)



  • q1_out is the common node between 3 NAND gates
  • Logic values and capacitances at each node are shown
  • Timing considers node capacitances














SWITCH LEVEL ANALYSIS