VLSIDA / OpenRAM

An open-source static random access memory (SRAM) compiler.

Home Page:http://www.openram.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

having issue while trying to create sram for sky130 pdk

bharath19-gs opened this issue · comments

Hi,

I am facing issue with sky130, not getting the required output as per requirement
please find the log below and the config that i have used.

|==============================================================================|
|========= OpenRAM v1.2.19 =========|
|========= =========|
|========= VLSI Design and Automation Lab =========|
|========= Computer Science and Engineering Department =========|
|========= University of California Santa Cruz =========|
|========= =========|
|========= Usage help: openram-user-group@ucsc.edu =========|
|========= Development help: openram-dev-group@ucsc.edu =========|
|========= See LICENSE for license info =========|
|==============================================================================|
** Start: 07/15/2023 15:51:44
Technology: sky130
Total size: 4096 bits
Word size: 16
Words: 256
Banks: 1
RW ports: 1
R-only ports: 0
W-only ports: 0
DRC/LVS/PEX is only run on the top-level design to save run-time (inline_lvsdrc=True to do inline checking).
DRC/LVS/PEX is disabled (check_lvsdrc=True to enable).
Characterization is disabled (using analytical delay models) (analytical_delay=False to simulate).
Words per row: None
Output files are:
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.lvs
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.sp
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.v
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.lib
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.py
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.html
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.log
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.lef
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.gds
ERROR: file hierarchy_layout.py: line 579: Should use a pin iterator since more than one pin vpb

ERROR: file hierarchy_layout.py: line 586: No pin found with name vpb on sky130_fd_bd_sram__sram_sp_colenda. Saved as missing_pin.gds.

my config

Data word size

word_size = 16

Number of words in the memory

num_words = 256

num_spare_cols=1
num_spare_rows=1

num_rw_ports = 1

Technology to use in $OPENRAM_TECH

tech_name = "sky130"

Process corners to characterize

process_corners = [ "TT" ]

Voltage corners to characterize

supply_voltages = [ 3.3 ]

Temperature corners to characterize

temperatures = [ 25 ]

Output directory for the results

output_path = "temp"

Output file base name

output_name = "fakeram130_256x16"

Disable analytical models for full characterization (WARNING: slow!)

analytical_delay = False

To force this to use magic and netgen for DRC/LVS/PEX

Could be calibre for FreePDK45

drc_name = "magic"
lvs_name = "netgen"
pex_name = "magic"

and
using the command :
python3 $OPENRAM_HOME/../sram_compiler.py myconfig.py

the requirement: want to create a sram of 256x16

please do let me know how to fix this.

regards
gsb

** Start: 07/15/2023 20:15:27
Technology: sky130
Total size: 4096 bits
Word size: 16
Words: 256
Banks: 1
RW ports: 1
R-only ports: 0
W-only ports: 0
DRC/LVS/PEX is only run on the top-level design to save run-time (inline_lvsdrc=True to do inline checking).
DRC/LVS/PEX is disabled (check_lvsdrc=True to enable).
Characterization is disabled (using analytical delay models) (analytical_delay=False to simulate).
Words per row: None
Output files are:
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.lvs
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.sp
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.v
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.lib
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.py
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.html
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.log
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.lef
/home/gsb/Documents/OpenRAM/compiler/temp/fakeram130_256x16.gds
ERROR: file hierarchy_layout.py: line 579: Should use a pin iterator since more than one pin vpb
ERROR: file hierarchy_layout.py: line 586: No pin found with name vpb on sky130_fd_bd_sram__sram_sp_colenda. Saved as missing_pin.gds.
Traceback (most recent call last):
File "/home/gsb/Documents/OpenRAM/compiler/base/hierarchy_layout.py", line 579, in get_pin
debug.error("Should use a pin iterator since more than one pin {}".format(text), -1)
File "/home/gsb/Documents/OpenRAM/compiler/debug.py", line 47, in error
assert return_value == 0
^^^^^^^^^^^^^^^^^
AssertionError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/gsb/Documents/OpenRAM/compiler/../sram_compiler.py", line 71, in
s = sram()
^^^^^^
File "/home/gsb/Documents/OpenRAM/compiler/sram.py", line 56, in init
self.s.create_netlist()
File "/home/gsb/Documents/OpenRAM/compiler/modules/sram_1bank.py", line 196, in create_netlist
self.add_modules()
File "/home/gsb/Documents/OpenRAM/compiler/modules/sram_1bank.py", line 462, in add_modules
self.bank = factory.create("bank", sram_config=self.sram_config, module_name="bank")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/compiler/sram_factory.py", line 153, in create
obj = mod(name=module_name, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/compiler/modules/bank.py", line 49, in init
self.create_netlist()
File "/home/gsb/Documents/OpenRAM/compiler/modules/bank.py", line 59, in create_netlist
self.add_modules()
File "/home/gsb/Documents/OpenRAM/compiler/modules/bank.py", line 377, in add_modules
self.bitcell_array = factory.create(module_type="capped_replica_bitcell_array",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/compiler/sram_factory.py", line 153, in create
obj = mod(name=module_name, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/sky130_capped_replica_bitcell_array.py", line 37, in init
self.create_netlist()
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/sky130_capped_replica_bitcell_array.py", line 43, in create_netlist
self.add_modules()
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/sky130_capped_replica_bitcell_array.py", line 48, in add_modules
self.replica_bitcell_array = factory.create(module_type="replica_bitcell_array",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/compiler/sram_factory.py", line 153, in create
obj = mod(name=module_name, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/sky130_replica_bitcell_array.py", line 61, in init
super().init(self.row_size, self.column_size, rbl, left_rbl, right_rbl, name)
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/replica_bitcell_array.py", line 72, in init
self.create_netlist()
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/replica_bitcell_array.py", line 82, in create_netlist
self.add_modules()
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/replica_bitcell_array.py", line 136, in add_modules
self.replica_columns[port] = factory.create(module_type="replica_column",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/compiler/sram_factory.py", line 153, in create
obj = mod(name=module_name, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/sky130_replica_column.py", line 63, in init
self.create_layout()
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/sky130_replica_column.py", line 76, in create_layout
self.add_layout_pins()
File "/home/gsb/Documents/OpenRAM/technology/sky130/custom/sky130_replica_column.py", line 240, in add_layout_pins
pin = inst.get_pin("vpb")
^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/compiler/base/geometry.py", line 253, in get_pin
pin = copy.deepcopy(self.mod.get_pin(name))
^^^^^^^^^^^^^^^^^^^^^^
File "/home/gsb/Documents/OpenRAM/compiler/base/hierarchy_layout.py", line 586, in get_pin
debug.error("No pin found with name {0} on {1}. Saved as missing_pin.gds.".format(name, self.cell_name), -1)
File "/home/gsb/Documents/OpenRAM/compiler/debug.py", line 47, in error
assert return_value == 0
^^^^^^^^^^^^^^^^^
AssertionError

extra details

hope it helps to find where i am going wrong or whats causing the issues

Hi, I am facing the same issue? @bharath19-gs , were you able to find a way to run this?

Sorry I'm in the middle of a big refactor of this code right now. I'll have this bug fixed by the end of the week, probably within 24 hours.

Should be fixed now

Hi, for below configuration file(no of ports=1), I am getting the above mentioned same issue, but if I change no of ports to 2, I am not getting issue. I guess this issue for generating single port memories. Can you please go through my configuration file and tell me if I am making any mistake?

Data word size

word_size = 8

Number of words in the memory

num_words = 16

num_rw_ports = 1
num_r_ports = 0
num_w_ports = 0
num_spare_cols = 1
num_spare_rows = 1

Technology to use in $OPENRAM_TECH

tech_name = "sky130"

Process corners to characterize

process_corners = [ "TT" ]

Voltage corners to characterize

supply_voltages = [ 3.3 ]

Temperature corners to characterize

temperatures = [ 25 ]

Output directory for the results

output_path = "temp"

Output file base name

output_name = "sram_16x8"

Disable analytical models for full characterization (WARNING: slow!)

analytical_delay = False

To force this to use magic and netgen for DRC/LVS/PEX

Could be calibre for FreePDK45

drc_name = "magic"
lvs_name = "netgen"
pex_name = "magic"