Spaces:
Sleeping
Sleeping
| class MultiLevelCell: | |
| def __init__(self, channel_length, drift_velocity, levels): | |
| self.channel_length = channel_length | |
| self.drift_velocity = drift_velocity | |
| self.levels = levels | |
| self.trapped_electrons = 0 | |
| self.value = 0 | |
| self.wear_count = 0 | |
| self.retention_loss = 0.0 | |
| def program(self, value): | |
| self.value = max(0, min(self.levels-1, value)) | |
| self.trapped_electrons = self.value | |
| self.wear_count += 1 | |
| self.retention_loss = 0.0 | |
| prog_time = self.channel_length / self.drift_velocity | |
| return prog_time | |
| def erase(self): | |
| self.trapped_electrons = 0 | |
| self.value = 0 | |
| self.wear_count += 1 | |
| self.retention_loss = 0.0 | |
| erase_time = self.channel_length / self.drift_velocity | |
| return erase_time | |
| def read(self): | |
| import random | |
| if self.value > 0: | |
| self.retention_loss += random.uniform(0, 0.01) | |
| if self.retention_loss > 0.5: | |
| self.value = max(0, self.value - 1) | |
| self.trapped_electrons = self.value | |
| self.retention_loss = 0.0 | |
| return self.value | |