diff --git a/compiler/characterizer/delay.py b/compiler/characterizer/delay.py index 273666cf..11235109 100644 --- a/compiler/characterizer/delay.py +++ b/compiler/characterizer/delay.py @@ -134,17 +134,17 @@ class delay(simulation): self.bitline_volt_meas = [] self.bitline_volt_meas.append(voltage_at_measure("v_bl_READ_ZERO", - self.bl_name)) + self.bl_name)) self.bitline_volt_meas[-1].meta_str = sram_op.READ_ZERO self.bitline_volt_meas.append(voltage_at_measure("v_br_READ_ZERO", - self.br_name)) + self.br_name)) self.bitline_volt_meas[-1].meta_str = sram_op.READ_ZERO self.bitline_volt_meas.append(voltage_at_measure("v_bl_READ_ONE", - self.bl_name)) + self.bl_name)) self.bitline_volt_meas[-1].meta_str = sram_op.READ_ONE self.bitline_volt_meas.append(voltage_at_measure("v_br_READ_ONE", - self.br_name)) + self.br_name)) self.bitline_volt_meas[-1].meta_str = sram_op.READ_ONE return self.bitline_volt_meas diff --git a/compiler/characterizer/functional.py b/compiler/characterizer/functional.py index 270c1a2b..3ecbe48d 100644 --- a/compiler/characterizer/functional.py +++ b/compiler/characterizer/functional.py @@ -229,17 +229,25 @@ class functional(simulation): sp_read_value = "" for bit in range(self.word_size + self.num_spare_cols): value = parse_spice_list("timing", "v{0}.{1}ck{2}".format(dout_port.lower(), bit, check)) - if value > self.v_high: - sp_read_value = "1" + sp_read_value - elif value < self.v_low: - sp_read_value = "0" + sp_read_value - else: - error ="FAILED: {0}_{1} value {2} at time {3}n does not fall within noise margins <{4} or >{5}.".format(dout_port, - bit, - value, - eo_period, - self.v_low, - self.v_high) + try: + value = float(value) + if value > self.v_high: + sp_read_value = "1" + sp_read_value + elif value < self.v_low: + sp_read_value = "0" + sp_read_value + else: + error ="FAILED: {0}_{1} value {2} at time {3}n does not fall within noise margins <{4} or >{5}.".format(dout_port, + bit, + value, + eo_period, + self.v_low, + self.v_high) + except ValueError: + error ="FAILED: {0}_{1} value {2} at time {3}n is not a float.".format(dout_port, + bit, + value, + eo_period) + return (0, error) self.read_results.append([sp_read_value, dout_port, eo_period, check]) @@ -348,8 +356,8 @@ class functional(simulation): # Write important signals to stim file self.sf.write("\n\n* Important signals for debug\n") - self.sf.write("* bl: {}\n".format(self.bl_name)) - self.sf.write("* br: {}\n".format(self.br_name)) + self.sf.write("* bl: {}\n".format(self.bl_name.format(port))) + self.sf.write("* br: {}\n".format(self.br_name.format(port))) self.sf.write("* s_en: {}\n".format(self.sen_name)) self.sf.write("* q: {}\n".format(self.q_name)) self.sf.write("* qbar: {}\n".format(self.qbar_name))