@@ -126,8 +126,10 @@ def set_probe(self, probe_address, probe_data):
126126 def get_data_bit_column_number (self , probe_address , probe_data ):
127127 """Calculates bitline column number of data bit under test using bit position and mux size"""
128128
129- if self .sram .col_addr_size > 0 :
130- col_address = int (probe_address [0 :self .sram .col_addr_size ], 2 )
129+ # Address pins are ordered a*_0 ... a*_N, where a*_0 is the LSB.
130+ # So the column mux select bits are the rightmost bits in the binary address string.
131+ if self .sram .col_addr_size > 0 :
132+ col_address = int (probe_address [- self .sram .col_addr_size :], 2 )
131133 else :
132134 col_address = 0
133135 bl_column = int (self .sram .words_per_row * probe_data + col_address )
@@ -136,7 +138,11 @@ def get_data_bit_column_number(self, probe_address, probe_data):
136138 def get_address_row_number (self , probe_address ):
137139 """Calculates wordline row number of data bit under test using address and column mux size"""
138140
139- return int (probe_address [self .sram .col_addr_size :], 2 )
141+ if self .sram .col_addr_size > 0 :
142+ row_address = probe_address [:- self .sram .col_addr_size ]
143+ else :
144+ row_address = probe_address
145+ return int (row_address , 2 ) if row_address else 0
140146
141147 def add_control_one_port (self , port , op ):
142148 """Appends control signals for operation to a given port"""
@@ -484,7 +490,9 @@ def gen_pin_names(self, port_signal_names, port_info, abits, dbits):
484490
485491 def get_column_addr (self ):
486492 """Returns column address of probe bit"""
487- return self .probe_address [:self .sram .col_addr_size ]
493+ if self .sram .col_addr_size == 0 :
494+ return ""
495+ return self .probe_address [- self .sram .col_addr_size :]
488496
489497 def add_graph_exclusions (self ):
490498 """
0 commit comments