2018-09-21 00:04:59 +02:00
#!/usr/bin/env python3
"""
Run a regression test on various srams
"""
import unittest
from testutils import header , openram_test
import sys , os
sys . path . append ( os . path . join ( sys . path [ 0 ] , " .. " ) )
import globals
from globals import OPTS
import debug
#@unittest.skip("SKIPPING 22_psram_func_test")
class psram_func_test ( openram_test ) :
def runTest ( self ) :
globals . init_openram ( " config_20_ {0} " . format ( OPTS . tech_name ) )
OPTS . spice_name = " hspice "
OPTS . analytical_delay = False
OPTS . netlist_only = True
OPTS . bitcell = " pbitcell "
OPTS . replica_bitcell = " replica_pbitcell "
# This is a hack to reload the characterizer __init__ with the spice version
from importlib import reload
import characterizer
reload ( characterizer )
from characterizer import functional
if not OPTS . spice_exe :
debug . error ( " Could not find {} simulator. " . format ( OPTS . spice_name ) , - 1 )
from sram import sram
from sram_config import sram_config
2018-10-04 18:29:44 +02:00
c = sram_config ( word_size = 4 ,
num_words = 32 ,
2018-09-21 00:04:59 +02:00
num_banks = 1 )
2018-10-04 18:29:44 +02:00
c . words_per_row = 2
2018-09-21 00:04:59 +02:00
OPTS . num_rw_ports = 1
2018-10-01 07:10:11 +02:00
OPTS . num_w_ports = 2
2018-10-04 18:29:44 +02:00
OPTS . num_r_ports = 4
2018-09-21 00:04:59 +02:00
debug . info ( 1 , " Functional test for 1bit, 16word SRAM, with 1 bank. Multiport with {} RW {} W {} R. " . format ( OPTS . num_rw_ports , OPTS . num_w_ports , OPTS . num_r_ports ) )
s = sram ( c , name = " sram1 " )
tempspice = OPTS . openram_temp + " temp.sp "
s . sp_write ( tempspice )
corner = ( OPTS . process_corners [ 0 ] , OPTS . supply_voltages [ 0 ] , OPTS . temperatures [ 0 ] )
f = functional ( s . s , tempspice , corner )
2018-10-04 18:29:44 +02:00
( success , error ) = f . multiport_run ( )
2018-10-01 06:20:01 +02:00
2018-10-04 18:29:44 +02:00
self . assertTrue ( not success , error )
2018-09-21 00:04:59 +02:00
2018-10-01 06:20:01 +02:00
globals . end_openram ( )
2018-09-21 00:04:59 +02:00
# instantiate a copdsay of the class to actually run the test
if __name__ == " __main__ " :
( OPTS , args ) = globals . parse_args ( )
del sys . argv [ 1 : ]
header ( __file__ , OPTS . tech_name )
unittest . main ( )