Skip to content

Jaylenne/Tutorial_OCEAN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Large memristor-based netlist Simulation, Data Processing, Plotting, and Output Using OCEAN

  • Author Ruibin Mao, Zhicheng Xu
  • Date May 7th, 2023

OCEAN is a very powerful tool which can do everything you do using the GUI of virtuoso. It can create, simulate and process the netlist in a batch mode which can highly accelerate the simulation, especially when you regularly change the configuration and parameters. It's recommended to read this Cadence OCEAN Lab before you lean this tutorial: CadenceOCEANLab

In this Tutorial, I will introduce how to use Python and OCEAN to Create the netlist, and use OCEAN to run the simulation, process the signals and dump the result to the specific file and format even with special functions applied.

Specifically, in this tutorial, we will simulate a matrix multiplication that contains three (5, 8) weight matrices and an (8, 5) input vector. Since we got three weight matrices, we will need three different netlists. We will simulate these three sets of netlists by just using OCEAN to change the parameter settings. We will run these three simulations and plot, and save the results in a single run session. Moreover, we will also apply a non-linear function exp() to the output and send the output to a specific file.

In the directory, you will find:

  • 1t1r.scs A simple 1T1R subckt.
  • netlistgen.py A python file used to generate the required netlist and ocean script like parameter definition.
  • run.ocn OCEAN Script for running the whole simulation.
  • run shell command to run the simulation
  • clean Clean the current working directory

You can directly run the simulation by:

python netlistgen.py
./run

which will generate the netlist and simulate using OCEAN. You will see these additional folders and files:

  • ./design: Used to store the file netlist netlistHeader and netlistFooter. These three files are needed for OCEAN to generate the Spectre Netlist
  • ./signal: Used to store the Row PWL Signals.
  • ./ocean: Three OCEAN files containing the definition of conductance parameters using desVar() command.
  • ./results/psf, ./results/simResult: psf folder is used to store waveform result generated by spectre. simResult is used to store the printed signal files and the processed signal data.
  • trueResults.data: True matrix multiplication result.

To run multiple simulations using OCEAN, In this sample run.ocn file, there are several key implementations:

  1. for() loop is used to load the parameters contained in the ./ocean/desVar[0, 1, 2].ocn.
  2. resultsDir() is specified in each loop simulation to store the results in different directories.
  3. ocnPrint and fprintf() are used to store the simulations and dump the signals into specific files. Built-in funciton value() is used to extract the signals at specific time and send it to exp() function and then put the results in files. You can define any functions you want in OCEAN.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published