Skip to content
Extraits de code Groupes Projets
setupTbench.py 1,59 ko
Newer Older
  • Learn to ignore specific revisions
  • ##############################################################################
    ################ This file sets the tbench for the CIM up ####################
    ##############################################################################
    
    import os, sys
    import subprocess
    
    import numpy as np
    
    from create_C_header import create_header
    from genRandomData import genRandomData
    
    ### Local variables ###
    # // Hardware parameters
    # CIM size
    Nrows = 1152;
    Ncols = 256;
    # Image dimensions
    Himg = 28;
    Wimg = Himg;
    # Target layer size
    C_in  = 1024;
    C_out = 32;
    # Target precision
    r_in  = 1;
    r_w   = 1;
    r_out = 8;
    # Timing config
    T_DP    = 2;
    T_PRE   = 2;
    T_MBIT  = 2;
    T_ADC   = 2;
    # ABN vectors
    r_beta  = 5;
    r_gamma = 8;
    GAMMA_VEC = np.arange(1,r_gamma);
    BETA_VEC  = 2**np.arange(r_beta)-1;
    # // Target data distributions & data
    dist_in = 'normal';
    dist_w  = 'uniform';
    Ndata   = 50;
    # // Path to output file
    filename_h = "./outputs/cim_config.h";
    filename_o = "./outputs/TF_DP_in.txt";
    
    ### Create data distributions ###
    cim_info = (Nrows,Ncols,r_in,C_in,r_out,C_out);
    dataVec = genRandomData(cim_info,dist_in,dist_w,Ndata);
    
    ### Generate test files ###
    filename_vec  = (filename_h,filename_o);
    cim_dim       = (Nrows,Ncols);
    D_VEC         = (Himg,Wimg,C_in,C_out);
    P_VEC         = (r_in,r_w,r_out,r_beta,r_gamma);
    T_VEC         = (T_DP,T_PRE,T_MBIT,T_ADC);
    
    create_header(filename_vec,cim_dim,D_VEC,P_VEC,T_VEC,BETA_VEC,GAMMA_VEC,dataVec);
    
    # // C header has been created, C file is ready for execution //
    print("/// Done writing setup files, ready for flashing ///");