Skip to content

Commit

Permalink
[manuf] Allow unset DIN in orchestrator
Browse files Browse the repository at this point in the history
Signed-off-by: Noah Moroze <[email protected]>
  • Loading branch information
nmoroze authored and timothytrippel committed Dec 5, 2024
1 parent 7743040 commit 3e4925d
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 19 deletions.
25 changes: 17 additions & 8 deletions sw/host/provisioning/orchestrator/src/device_id.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import struct
from dataclasses import dataclass
from typing import Optional

import util
from sku_config import SkuConfig
Expand Down Expand Up @@ -92,7 +93,8 @@ class DeviceId():
sku_id: A 32-bit string indicating the SKU the chip was provisioned for.
"""

def __init__(self, sku_config: SkuConfig, din: DeviceIdentificationNumber):
def __init__(self, sku_config: SkuConfig,
din: Optional[DeviceIdentificationNumber]):
# Save string keys for easier printing.
self._product = sku_config.product
self._si_creator = sku_config.si_creator
Expand All @@ -116,9 +118,13 @@ def __init__(self, sku_config: SkuConfig, din: DeviceIdentificationNumber):
# - Wafer Y coord.
self.din = din

din_as_int = 0
if self.din is not None:
din_as_int = self.din.to_int()

# Build base unique ID.
self._base_uid = util.bytes_to_int(
struct.pack("<IQI", self._hw_origin, self.din.to_int(), 0))
struct.pack("<IQI", self._hw_origin, din_as_int, 0))

# Build SKU specific field.
self.package_id = sku_config.package_id
Expand Down Expand Up @@ -204,12 +210,15 @@ def pretty_print(self):
util.format_hex(self.si_creator_id, width=4), self._si_creator))
print("Product ID: {} ({})".format(
util.format_hex(self.product_id, width=4), self._product))
print("DIN Year: {}".format(self.din.year))
print("DIN Week: {}".format(self.din.week))
print("DIN Lot: {}".format(self.din.lot))
print("DIN Wafer: {}".format(self.din.wafer))
print("DIN Wafer X Coord: {}".format(self.din.wafer_x_coord))
print("DIN Wafer Y Coord: {}".format(self.din.wafer_y_coord))
if self.din is not None:
print("DIN Year: {}".format(self.din.year))
print("DIN Week: {}".format(self.din.week))
print("DIN Lot: {}".format(self.din.lot))
print("DIN Wafer: {}".format(self.din.wafer))
print("DIN Wafer X Coord: {}".format(self.din.wafer_x_coord))
print("DIN Wafer Y Coord: {}".format(self.din.wafer_y_coord))
else:
print("DIN: <unset>")
print("Reserved: {}".format(hex(0)))
print("SKU ID: {} ({})".format(
util.format_hex(self.sku_id),
Expand Down
15 changes: 4 additions & 11 deletions sw/host/provisioning/orchestrator/src/orchestrator.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import hjson

import db
from device_id import DeviceId, DeviceIdentificationNumber
from device_id import DeviceId
from ot_dut import OtDut
from sku_config import SkuConfig
from util import confirm, parse_hexstring_to_int
Expand Down Expand Up @@ -140,16 +140,9 @@ def main(args_in):
sku_config_args = hjson.load(fp)
sku_config = SkuConfig(**sku_config_args)

# Create a (unique) device identification number and device ID.
# TODO: update this by extracting data from the device during CP.
din = DeviceIdentificationNumber(
year=0,
week=0,
lot=0,
wafer=0,
wafer_x_coord=0,
wafer_y_coord=0,
)
# The device identification number is determined during CP by extracting data
# from the device.
din = None
device_id = DeviceId(sku_config, din)

# TODO: Setup remote and/or local DV connections.
Expand Down

0 comments on commit 3e4925d

Please sign in to comment.