Go to file
dochejj 5825d7cec7 ADD file via upload 2023-10-08 16:09:27 +08:00
Current Analysis Add Current Analysis/e 2023-10-08 15:56:58 +08:00
EM Prediction Add EM Prediction/e 2023-10-08 15:57:16 +08:00
Electromagnetic Computation Add Electromagnetic Computation/e 2023-10-08 15:57:38 +08:00
Feature Extraction Delete 'Feature Extraction/e' 2023-10-08 16:02:33 +08:00
GAN Model Training Delete 'GAN Model Training/weights/e' 2023-10-08 16:08:34 +08:00
docs ADD file via upload 2023-10-08 16:09:27 +08:00
README.md Update README.md 2023-10-08 15:54:00 +08:00

README.md

  • EMSim+ accelerates the prediction of EM emanations by introducing an generative adversarial network (GAN) based on EMSim.
  • Version 1.0
  • Contacts:

Table of contents

Prerequisites

At a minimum:

  • Python 3.8+ with PIP
  • TensorFlow2.4 with GPU
  • Linux or Windows

Running EMSim

EMSim+ consists of three main steps: feature extraction, GAN model training and EM prediction.

Current Analysis and Electromagnetic Computation

These two steps are from EMSim and are intended to subsequently produce training data for GANs.

Feature Extraction

Feature extraction aims to extract cell current, power grid and EM information from the database of the chip physical layout. Then, we convert them into feature maps.

Cell Current Map

create_current_map.py
optional arguments:
  [ --def_path ]                   path to the def file, should end in .def
  [ --current_path ]               path to the simulated logic cell currents
  [ --num_input_stimuli ]          number of plaintexts
  [ --target_area_x ]              target simulated area in x axial direction  
  [ --target_area_y ]              target simulated area in y axial direction
  [ --num_probe_x_tiles ]          number of point grid in x axial direction
  [ --num_probe_y_tiles ]          number of point grid in y axial direction
  [ --layout_min_x ]               Reference coordinate in x axial direction
  [ --layout_min_y ]               Reference coordinate in y axial direction
  [ --start_points ]               Start of sample point for each current trace
  [ --sample_points ]              End of sample point for each current trace
  [ --current_map_train ]          generate cell current map for GAN training
  [ --current_map_test ]           generate cell current map for EM prediction
  

Power Grid Map

create_grid_map(2-pad).py
optional arguments:
  [ --metal_layers ]               target metal layers
  [ --target_area_x ]              target simulated area in x axial direction  
  [ --target_area_y ]              target simulated area in y axial direction
  [ --num_probe_x_tiles ]          number of point grid in x axial direction
  [ --num_probe_y_tiles ]          number of point grid in y axial direction
  [ --layout_min_x ]               Reference coordinate in x axial direction
  [ --layout_min_y ]               Reference coordinate in y axial direction
  [ --power_grid_map ]             generate power grid map for GAN training and EM prediction
create_grid_map(4-pad).py
optional arguments:
  [ --metal_layers ]               target metal layers
  [ --target_area_x ]              target simulated area in x axial direction  
  [ --target_area_y ]              target simulated area in y axial direction
  [ --num_probe_x_tiles ]          number of point grid in x axial direction
  [ --num_probe_y_tiles ]          number of point grid in y axial direction
  [ --layout_min_x ]               Reference coordinate in x axial direction
  [ --layout_min_y ]               Reference coordinate in y axial direction

There is only one power grid map of one layout design, which is used in both the model training and EM prediction phases.

  • Note:
    • You need to get the coordinates of VDD and VSS in the layout design.
    • You should choose different scripts for 2-pad and 4-pad power supply designs.

EM Map

create_em_map.py
optional arguments:
  [ --EM_path ]                    path to the simulated EM data
  [ --num_input_stimuli ]          number of plaintexts
  [ --num_probe_x_tiles ]          number of point grid in x axial direction
  [ --num_probe_y_tiles ]          number of point grid in y axial direction
  [ --time_steps ]                 simulation time for each EM trace
  [ --em_map_train ]               generate em map for GAN training
  [ --em_map_test ]                generate em current map for EM prediction

GAN Model Training

We aim to design and train a GAN for EM prediction.

  • Note:
    • The generator G accepts cell current maps, power grid maps and time sequence.
    • Both the EM maps predicted by G and the real EM maps, together with the input maps of G, are alternatively fed to the discriminator D for determination.
    • The results of D are further fed back to G to enhance the quality of the predicted EM maps
GAN4EM_training.py
optional arguments:
  [ --num_probe_x_tiles ]          number of point grid in x axial direction
  [ --num_probe_y_tiles ]          number of point grid in Y axial direction
  [ --time_steps ]                 simulation time for each EM trace
  [ --percent_valid_split ]        10% of training points is used for validation during training
  [ --learning_rate_val ]          learning rate decays exponentially from 0.0005
  [ --num_input_stimuli ]          number of plaintexts
  [ --decay_rate_val ]             learning rate with the discount factor 0.98
  [ --epochs ]                     number of times the model worked on the entire training dataset
  [ --batch_size ]                 number of samples processed per training epoch
  [ --trained_model_path ]         save the trained weight parameters
  [ --training_current_map ]       input cell current map for model training
  [ --training_gird_map ]          input power grid map for model training
  [ --training_em_map ]            input EM map for model training 

EM Prediction

The generator G is preserved and serves as an inference model for EM prediction.

GAN4EM_prediction.py
optional arguments:
  [ --num_probe_x_tiles ]          number of point grid in x axial direction
  [ --num_probe_y_tiles ]          number of point grid in Y axial direction
  [ --time_steps ]                 simulation time for each EM trace
  [ --percent_valid_split ]        10% of training points is used for validation during training
  [ --learning_rate_val ]          learning rate decays exponentially from 0.0005
  [ --num_input_stimuli ]          number of plaintexts
  [ --decay_rate_val ]             learning rate with the discount factor 0.98
  [ --trained_model_path ]         trained weight parameters
  [ --test_current_map ]           input cell current map for EM prediction
  [ --test_gird_map ]              input power grid map for EM prediction
  [ --test_em_map ]                input EM map for evaluate GAN model 


Contributors

Name Affiliation email
Haocheng Ma Tianjin University hc_ma@tju.edu.cn
Yier Jin University of Florida jinyier@gmail.com
Max Panoff University of Florida m.panoff@ufl.edu
Jiaji He Tianjin University dochejj@tju.edu.cn
Ya Gao Tianjin University gaoyaya@tju.edu.cn

Copyright

It is mainly intended for non-commercial use, such as academic research.