112 lines
4.0 KiB
Python
112 lines
4.0 KiB
Python
#!/usr/bin/python
|
|
|
|
# This file is part of the Coriolis Project.
|
|
# Copyright (C) Laboratoire LIP6 - Departement ASIM
|
|
# Universite Pierre et Marie Curie
|
|
#
|
|
# Main contributors :
|
|
# Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
|
# Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
|
# Hugo Clement <Hugo.Clement@lip6.fr>
|
|
# Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
|
# Damien Dupuis <Damien.Dupuis@lip6.fr>
|
|
# Christian Masson <Christian.Masson@lip6.fr>
|
|
# Marek Sroka <Marek.Sroka@lip6.fr>
|
|
#
|
|
# The Coriolis Project is free software; you can redistribute it
|
|
# and/or modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2 of
|
|
# the License, or (at your option) any later version.
|
|
#
|
|
# The Coriolis Project is distributed in the hope that it will be
|
|
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
|
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with the Coriolis Project; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
# USA
|
|
#
|
|
# License-Tag
|
|
# Authors-Tag
|
|
# ===================================================================
|
|
#
|
|
# x-----------------------------------------------------------------x
|
|
# | |
|
|
# | C O R I O L I S |
|
|
# | S t r a t u s - Netlists/Layouts Description |
|
|
# | |
|
|
# | Author : Sophie BELLOEIL |
|
|
# | E-mail : Sophie.Belloeil@asim.lip6.fr |
|
|
# | =============================================================== |
|
|
# | Py Module : "./util_uRom.py" |
|
|
# | *************************************************************** |
|
|
# | U p d a t e s |
|
|
# | |
|
|
# x-----------------------------------------------------------------x
|
|
|
|
|
|
from util_Gen import *
|
|
|
|
|
|
## Local constants ##
|
|
#####################
|
|
ERROR_INDEX = 4096
|
|
|
|
CELLS_ROM2 = 5
|
|
CELLS_ROM4 = 17
|
|
|
|
SIZE_SNAME = 1024
|
|
|
|
## Local Variable ##
|
|
####################
|
|
global LV_tsLeafCell
|
|
|
|
LV_tsLeafCell = ["dp_rom2_buf", "zero_x0", "buf_x4", "inv_x4", "one_x0", "dp_rom4_buf", "zero_x0", "a2_x4", "a2_x4", "buf_x4", "a2_x4", "buf_x4", "dp_rom4_xr2_x4", "o2_x4", "a2_x4", "dp_rom4_nxr2_x4", "buf_x4", "o2_x4", "buf_x4", "o2_x4", "o2_x4", "one_x0"]
|
|
|
|
|
|
## Functions Definitions ##
|
|
###########################
|
|
|
|
#####################################################################################
|
|
def get_index_Cell ( aiSlice, LV_Function, LV_xl0, LV_xl1, LV_xl2 = 0, LV_xl3 = 0 ) :
|
|
|
|
index = ERROR_INDEX
|
|
|
|
if LV_Function == DPGEN_ROM2 :
|
|
index = ( LV_xl1.getxlbit ( aiSlice ) << 1 )
|
|
index += LV_xl0.getxlbit ( aiSlice )
|
|
|
|
elif LV_Function == DPGEN_ROM4 :
|
|
index = ( LV_xl3.getxlbit ( aiSlice ) << 3 )
|
|
index += ( LV_xl2.getxlbit ( aiSlice ) << 2 )
|
|
index += ( LV_xl1.getxlbit ( aiSlice ) << 1 )
|
|
index += LV_xl0.getxlbit ( aiSlice )
|
|
|
|
return index
|
|
|
|
###################################################################
|
|
def get_model_Cell ( aiSlice, LV_Function, aiCell, LV_iLeafCell ) :
|
|
global LV_tsLeafCell
|
|
|
|
index = ERROR_INDEX
|
|
|
|
if LV_Function in ( DPGEN_ROM4, DPGEN_ROM2 ) : index = LV_iLeafCell + 1 + aiCell
|
|
|
|
if index >= ERROR_INDEX : return "bug_leaf"
|
|
|
|
return LV_tsLeafCell[index]
|
|
|
|
######################################
|
|
def get_model_Buffer ( LV_Function, LV_iLeafCell ) :
|
|
global LV_tsLeafCell
|
|
|
|
index = ERROR_INDEX
|
|
|
|
if LV_Function in ( DPGEN_ROM4, DPGEN_ROM2 ) : index = LV_iLeafCell
|
|
|
|
if index == ERROR_INDEX : return "bug_buff"
|
|
|
|
return LV_tsLeafCell[index]
|