diff --git a/backend/etc/device.xml b/backend/etc/device.xml deleted file mode 100644 index 152d9ca6..00000000 --- a/backend/etc/device.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/backend/etc/devices/mpw1/acpu.json b/backend/etc/devices/mpw1/acpu.json deleted file mode 100644 index 922426db..00000000 --- a/backend/etc/devices/mpw1/acpu.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "acpu", - "coeffs": [ - { "name": "ACPU_CLK_FACTOR" , "value": 0.0000321306659727 }, - { "name": "ACPU_LOW_LOAD_FACTOR" , "value": 6.22030740524698E-06 }, - { "name": "ACPU_MEDIUM_LOAD_FACTOR", "value": 7.03786731129023E-06 }, - { "name": "ACPU_HIGH_LOAD_FACTOR" , "value": 0.0000105978995482262 } - ], - "static_power": [ - { - "rail_type": "Vcc_core (A45)", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.00000000000008, -0.000000000004, 0.0000000004, 0.00000003, 0.000002, 0.00008], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.000000000006, -0.000000000006, -0.000000005, 0.0000007, 0.00002], "factor": 1.0 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/bcpu.json b/backend/etc/devices/mpw1/bcpu.json deleted file mode 100644 index 6c37516a..00000000 --- a/backend/etc/devices/mpw1/bcpu.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "bcpu", - "coeffs": [ - { "name": "BCPU_CLK_FACTOR" , "value": 0.0000321306659727 }, - { "name": "BCPU_LOW_LOAD_FACTOR" , "value": 6.22030740524698E-06 }, - { "name": "BCPU_MEDIUM_LOAD_FACTOR", "value": 7.03786731129023E-06 }, - { "name": "BCPU_HIGH_LOAD_FACTOR" , "value": 0.0000105978995482262 } - ], - "static_power": [ - { - "rail_type": "Vcc_core (Config)", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.0000000001, -0.000000002, 0.000000004, 0.00002, 0.0007], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.0000000000005, -0.00000000002, 0.000000003, 0.0000002, 0.00001, 0.0013], "factor": 1.0 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/bram.json b/backend/etc/devices/mpw1/bram.json deleted file mode 100644 index 5541cd89..00000000 --- a/backend/etc/devices/mpw1/bram.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "bram", - "coeffs": [ - { "name": "BRAM_INT_CAP" , "value": 0.00000035 }, - { "name": "BRAM_WRITE_CAP", "value": 0.000002 }, - { "name": "BRAM_READ_CAP" , "value": 0.0000025 }, - { "name": "BRAM_FIFO_CAP" , "value": 0.0000007 } - ], - "static_power": [ - { - "rail_type": "Vcc_core (BRAM)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000004, 0.00001], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.0 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/clocking.json b/backend/etc/devices/mpw1/clocking.json deleted file mode 100644 index 967a587d..00000000 --- a/backend/etc/devices/mpw1/clocking.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "clocking", - "coeffs": [ - { "name": "CLK_CAP" , "value": 0.00001 }, - { "name": "CLK_INT_CAP", "value": 0.00000003 }, - { "name": "PLL_INT" , "value": 0.0009 }, - { "name": "PLL_AUX" , "value": 0.01 } - ], - "static_power": [ - { - "rail_type": "Vcc_aux", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.00000001, -0.0000003, 0.00004, 0.0332], "factor": 0.555555555555556 }, - { "type": "worse", "coeffs": [0.000000002, 0.0000004, 0.00002, 0.0133], "factor": 0.555555555555556 }, - { "type": "typical", "coeffs": [0.000000003, 0.0000002, 0.00004, 0.0224], "factor": 0.555555555555556 }, - { "type": "typical", "coeffs": [0.0000000004, 0.0000001, 0.000005, 0.0033], "factor": 0.555555555555556 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/ddr.json b/backend/etc/devices/mpw1/ddr.json deleted file mode 100644 index 0f22aca5..00000000 --- a/backend/etc/devices/mpw1/ddr.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "ddr", - "coeffs": [ - { "name": "DDR_CLK_FACTOR" , "value": 0.0000281154101977619 }, - { "name": "DDR_ACLK_FACTOR" , "value": 0.0000688892039916618 }, - { "name": "DDR_WRITE_FACTOR", "value": 0.0000421054185139638 }, - { "name": "DDR_READ_FACTOR" , "value": 0.0000397024214264236 } - ], - "static_power": [ - { - "rail_type": "Vcc_core (Mem_SS)", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.0000000001, -0.000000003, 0.000000005, 0.00003, 0.0009], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.0000000001, -0.000000006, 0.00000005, 0.00002, 0.0003], "factor": 1.0 } - ] - }, - { - "rail_type": "VCC_DDR_IO", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/dsp.json b/backend/etc/devices/mpw1/dsp.json deleted file mode 100644 index a73fdf55..00000000 --- a/backend/etc/devices/mpw1/dsp.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "dsp", - "coeffs": [ - { "name": "DSP_MULT_CAP" , "value": 0.0000015 }, - { "name": "DSP_MULT_CAP2", "value": 0.00000007 }, - { "name": "DSP_INT_CAP" , "value": 0.0000001 } - ], - "static_power": [ - { - "rail_type": "Vcc_core (DSP)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000002, -0.00000000004, 0.00000000008, 0.0000005, 0.00001], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.000000000002, -0.00000000008, 0.0000000007, 0.0000003, 0.000004], "factor": 1.0 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/fabric_le.json b/backend/etc/devices/mpw1/fabric_le.json deleted file mode 100644 index 5e201bb4..00000000 --- a/backend/etc/devices/mpw1/fabric_le.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "fabric_le", - "coeffs": [ - { "name": "LUT_CAP" , "value": 0.0000003 }, - { "name": "FF_CAP" , "value": 0.00000035 }, - { "name": "FF_CLK_CAP" , "value": 2.91375291375291E-09 }, - { "name": "LUT_INT_CAP", "value": 0.00000002 }, - { "name": "FF_INT_CAP" , "value": 0.00000004 } - ], - "static_power": [ - { - "rail_type": "Vcc_core (CLB)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000000002, -0.0000000000001, 0.00000000001, 0.0000000008, 0.00000006, 0.000002], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.0000000000003, -0.00000000001, 0.0000000001, 0.00000006, 0.0000007], "factor": 1.0 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/gearbox_hp.json b/backend/etc/devices/mpw1/gearbox_hp.json deleted file mode 100644 index 8966b36a..00000000 --- a/backend/etc/devices/mpw1/gearbox_hp.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "type": "gearbox_hp", - "static_power": [ - { - "rail_type": "Vcc_core (Gearbox HP)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.00000000003, -0.0000000006, 0.000000001, 0.000006, 0.0002], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.00000000002, -0.000000001, 0.00000001, 0.000004, 0.00005], "factor": 1.0 } - ] - }, - { - "rail_type": "Vcc_core (HP I/O)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.0001], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.00005], "factor": 1.0 } - ] - }, - { - "rail_type": "Vcc_hv_aux", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.000000001, 0.0000002, 0.00021, 0.0003], "factor": 1.0 } - ] - }, - { - "rail_type": "Vcc_hp_io (1.2V)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - }, - { - "rail_type": "Vcc_hp_io (1.5V)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - }, - { - "rail_type": "Vcc_hp_io (1.8V)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/gearbox_hr.json b/backend/etc/devices/mpw1/gearbox_hr.json deleted file mode 100644 index d9f02525..00000000 --- a/backend/etc/devices/mpw1/gearbox_hr.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "type": "gearbox_hr", - "static_power": [ - { - "rail_type": "Vcc_core (Gearbox HR)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.00000000003, -0.0000000007, 0.000000001, 0.000007, 0.0002], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.00000000003, -0.0000000008, 0.000000001, 0.000008, 0.0002], "factor": 1.0 } - ] - }, - { - "rail_type": "Vcc_core (HR I/O)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.00005], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.00001], "factor": 1.0 } - ] - }, - { - "rail_type": "Vcc_hr_aux", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.000000001, 0.0000002, 0.00021, 0.0003], "factor": 1.0 } - ] - }, - { - "rail_type": "Vcc_hr_io (1.8V)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.00001], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - }, - { - "rail_type": "Vcc_hr_io (2.5V)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - }, - { - "rail_type": "Vcc_hr_io (3.3V)", - "domain": "Core", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/gige.json b/backend/etc/devices/mpw1/gige.json deleted file mode 100644 index 5c1945cc..00000000 --- a/backend/etc/devices/mpw1/gige.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "gige", - "coeffs": [ - { "name": "GIGE_CLK_FACTOR" , "value": 0.000124771586466165 }, - { "name": "GIGE_SWITCHING_FACTOR", "value": 0.00504040314066422 }, - { "name": "GIGE_IO_FACTOR" , "value": 0.000071487696 } - ], - "static_power": [ - { - "rail_type": "VCC_GIGE_IO", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - }, - { - "rail_type": "VCC_GIGE_AUX", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 0.555555555555556 }, - { "type": "typical", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 0.444444444444445 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/gpio.json b/backend/etc/devices/mpw1/gpio.json deleted file mode 100644 index 8a87b00d..00000000 --- a/backend/etc/devices/mpw1/gpio.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "type": "gpio", - "coeffs": [ - { "name": "GPIO_CLK_FACTOR" , "value": 0.0000773683364661654 }, - { "name": "GPIO_SWITCHING_FACTOR", "value": 5.89015486234265E-06 }, - { "name": "GPIO_IO_FACTOR" , "value": 0.0000001688475 } - ], - "static_power": [ - { - "rail_type": "VCC_BOOT_IO", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - }, - { - "rail_type": "VCC_SOC_IO", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - }, - { - "rail_type": "VCC_BOOT_AUX", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 0.555555555555556 }, - { "type": "typical", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 0.44444444444445 } - ] - }, - { - "rail_type": "VCC_SOC_AUX", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 0.555555555555556 }, - { "type": "typical", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 0.44444444444445 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/i2c.json b/backend/etc/devices/mpw1/i2c.json deleted file mode 100644 index c5d9ae81..00000000 --- a/backend/etc/devices/mpw1/i2c.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "i2c", - "coeffs": [ - { "name": "I2C_CLK_FACTOR" , "value": 0.0000180345864661654 }, - { "name": "I2C_SWITCHING_FACTOR", "value": 0.0000846668045655417 }, - { "name": "I2C_IO_FACTOR" , "value": 0.000056634 } - ] -} diff --git a/backend/etc/devices/mpw1/io.json b/backend/etc/devices/mpw1/io.json deleted file mode 100644 index b087be9f..00000000 --- a/backend/etc/devices/mpw1/io.json +++ /dev/null @@ -1,349 +0,0 @@ -{ - "type": "io", - "coeffs": [ - { "name": "LVCMOS_1_2V.BANK_TYPE", "value": 0 }, - { "name": "LVCMOS_1_2V.VOLTAGE", "value": 1.2 }, - { "name": "LVCMOS_1_2V.INPUT_AC", "value": 2e-07 }, - { "name": "LVCMOS_1_2V.OUTPUT_AC", "value": 2.5e-05 }, - { "name": "LVCMOS_1_2V.INPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_1_2V.OUTPUT_DC", "value": 0.0003 }, - { "name": "LVCMOS_1_2V.INT_INNER", "value": 1e-08 }, - { "name": "LVCMOS_1_2V.INT_OUTER", "value": 4e-07 }, - { "name": "LVCMOS_1_5V.BANK_TYPE", "value": 0 }, - { "name": "LVCMOS_1_5V.VOLTAGE", "value": 1.5 }, - { "name": "LVCMOS_1_5V.INPUT_AC", "value": 2e-07 }, - { "name": "LVCMOS_1_5V.OUTPUT_AC", "value": 2.5e-05 }, - { "name": "LVCMOS_1_5V.INPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_1_5V.OUTPUT_DC", "value": 0.0003 }, - { "name": "LVCMOS_1_5V.INT_INNER", "value": 1e-08 }, - { "name": "LVCMOS_1_5V.INT_OUTER", "value": 6e-07 }, - { "name": "LVCMOS_1_8V_HP.BANK_TYPE", "value": 0 }, - { "name": "LVCMOS_1_8V_HP.VOLTAGE", "value": 1.8 }, - { "name": "LVCMOS_1_8V_HP.INPUT_AC", "value": 2e-07 }, - { "name": "LVCMOS_1_8V_HP.OUTPUT_AC", "value": 2.5e-05 }, - { "name": "LVCMOS_1_8V_HP.INPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_1_8V_HP.OUTPUT_DC", "value": 0.0003 }, - { "name": "LVCMOS_1_8V_HP.INT_INNER", "value": 1e-08 }, - { "name": "LVCMOS_1_8V_HP.INT_OUTER", "value": 8e-07 }, - { "name": "LVCMOS_1_8V_HR.BANK_TYPE", "value": 1 }, - { "name": "LVCMOS_1_8V_HR.VOLTAGE", "value": 1.8 }, - { "name": "LVCMOS_1_8V_HR.INPUT_AC", "value": 3e-07 }, - { "name": "LVCMOS_1_8V_HR.OUTPUT_AC", "value": 2.5e-05 }, - { "name": "LVCMOS_1_8V_HR.INPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_1_8V_HR.OUTPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_1_8V_HR.INT_INNER", "value": 1e-08 }, - { "name": "LVCMOS_1_8V_HR.INT_OUTER", "value": 5e-08 }, - { "name": "LVCMOS_2_5V.BANK_TYPE", "value": 1 }, - { "name": "LVCMOS_2_5V.VOLTAGE", "value": 2.5 }, - { "name": "LVCMOS_2_5V.INPUT_AC", "value": 1.2e-06 }, - { "name": "LVCMOS_2_5V.OUTPUT_AC", "value": 2.5e-05 }, - { "name": "LVCMOS_2_5V.INPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_2_5V.OUTPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_2_5V.INT_INNER", "value": 1e-08 }, - { "name": "LVCMOS_2_5V.INT_OUTER", "value": 2.75e-06 }, - { "name": "LVCMOS_3_3V.BANK_TYPE", "value": 1 }, - { "name": "LVCMOS_3_3V.VOLTAGE", "value": 3.3 }, - { "name": "LVCMOS_3_3V.INPUT_AC", "value": 1.2e-06 }, - { "name": "LVCMOS_3_3V.OUTPUT_AC", "value": 2.5e-05 }, - { "name": "LVCMOS_3_3V.INPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_3_3V.OUTPUT_DC", "value": 1e-05 }, - { "name": "LVCMOS_3_3V.INT_INNER", "value": 1e-08 }, - { "name": "LVCMOS_3_3V.INT_OUTER", "value": 2.75e-06 }, - { "name": "LVTTL.BANK_TYPE", "value": 1 }, - { "name": "LVTTL.VOLTAGE", "value": 1.8 }, - { "name": "LVTTL.INPUT_AC", "value": 1.2e-06 }, - { "name": "LVTTL.OUTPUT_AC", "value": 3e-05 }, - { "name": "LVTTL.INPUT_DC", "value": 1e-05 }, - { "name": "LVTTL.OUTPUT_DC", "value": 1e-05 }, - { "name": "LVTTL.INT_INNER", "value": 1e-08 }, - { "name": "LVTTL.INT_OUTER", "value": 2e-06 }, - { "name": "BLVDS_Diff.BANK_TYPE", "value": 1 }, - { "name": "BLVDS_Diff.VOLTAGE", "value": 1.8 }, - { "name": "BLVDS_Diff.INPUT_AC", "value": 1.2e-06 }, - { "name": "BLVDS_Diff.OUTPUT_AC", "value": 1e-06 }, - { "name": "BLVDS_Diff.INPUT_DC", "value": 0.001 }, - { "name": "BLVDS_Diff.OUTPUT_DC", "value": 2e-05 }, - { "name": "BLVDS_Diff.INT_INNER", "value": 1e-08 }, - { "name": "BLVDS_Diff.INT_OUTER", "value": 4e-08 }, - { "name": "LVDS_Diff_HP.BANK_TYPE", "value": 0 }, - { "name": "LVDS_Diff_HP.VOLTAGE", "value": 1.8 }, - { "name": "LVDS_Diff_HP.INPUT_AC", "value": 1e-06 }, - { "name": "LVDS_Diff_HP.OUTPUT_AC", "value": 5e-06 }, - { "name": "LVDS_Diff_HP.INPUT_DC", "value": 0.002 }, - { "name": "LVDS_Diff_HP.OUTPUT_DC", "value": 0.0011 }, - { "name": "LVDS_Diff_HP.INT_INNER", "value": 1e-08 }, - { "name": "LVDS_Diff_HP.INT_OUTER", "value": 5e-08 }, - { "name": "LVDS_Diff_HR.BANK_TYPE", "value": 1 }, - { "name": "LVDS_Diff_HR.VOLTAGE", "value": 1.8 }, - { "name": "LVDS_Diff_HR.INPUT_AC", "value": 1e-06 }, - { "name": "LVDS_Diff_HR.OUTPUT_AC", "value": 5e-06 }, - { "name": "LVDS_Diff_HR.INPUT_DC", "value": 0.002 }, - { "name": "LVDS_Diff_HR.OUTPUT_DC", "value": 0.0011 }, - { "name": "LVDS_Diff_HR.INT_INNER", "value": 1e-08 }, - { "name": "LVDS_Diff_HR.INT_OUTER", "value": 5e-08 }, - { "name": "LVPECL_2_5V_Diff.BANK_TYPE", "value": 1 }, - { "name": "LVPECL_2_5V_Diff.VOLTAGE", "value": 2.5 }, - { "name": "LVPECL_2_5V_Diff.INPUT_AC", "value": 7e-07 }, - { "name": "LVPECL_2_5V_Diff.OUTPUT_AC", "value": 1e-09 }, - { "name": "LVPECL_2_5V_Diff.INPUT_DC", "value": 0.00105 }, - { "name": "LVPECL_2_5V_Diff.OUTPUT_DC", "value": 1e-05 }, - { "name": "LVPECL_2_5V_Diff.INT_INNER", "value": 1e-08 }, - { "name": "LVPECL_2_5V_Diff.INT_OUTER", "value": 4e-08 }, - { "name": "LVPECL_3_3V_Diff.BANK_TYPE", "value": 1 }, - { "name": "LVPECL_3_3V_Diff.VOLTAGE", "value": 3.3 }, - { "name": "LVPECL_3_3V_Diff.INPUT_AC", "value": 7e-07 }, - { "name": "LVPECL_3_3V_Diff.OUTPUT_AC", "value": 1e-09 }, - { "name": "LVPECL_3_3V_Diff.INPUT_DC", "value": 0.00105 }, - { "name": "LVPECL_3_3V_Diff.OUTPUT_DC", "value": 1e-05 }, - { "name": "LVPECL_3_3V_Diff.INT_INNER", "value": 1e-08 }, - { "name": "LVPECL_3_3V_Diff.INT_OUTER", "value": 4e-08 }, - { "name": "HSTL_1_2V_Class_I_with_ODT.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_2V_Class_I_with_ODT.VOLTAGE", "value": 1.2 }, - { "name": "HSTL_1_2V_Class_I_with_ODT.INPUT_AC", "value": 2e-06 }, - { "name": "HSTL_1_2V_Class_I_with_ODT.OUTPUT_AC", "value": 5e-05 }, - { "name": "HSTL_1_2V_Class_I_with_ODT.INPUT_DC", "value": 0.0102 }, - { "name": "HSTL_1_2V_Class_I_with_ODT.OUTPUT_DC", "value": 0.0025 }, - { "name": "HSTL_1_2V_Class_I_with_ODT.INT_INNER", "value": 1e-08 }, - { "name": "HSTL_1_2V_Class_I_with_ODT.INT_OUTER", "value": 4e-07 }, - { "name": "HSTL_1_2V_Class_I_without_ODT.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_2V_Class_I_without_ODT.VOLTAGE", "value": 1.2 }, - { "name": "HSTL_1_2V_Class_I_without_ODT.INPUT_AC", "value": 2e-06 }, - { "name": "HSTL_1_2V_Class_I_without_ODT.OUTPUT_AC", "value": 5e-05 }, - { "name": "HSTL_1_2V_Class_I_without_ODT.INPUT_DC", "value": 0.003 }, - { "name": "HSTL_1_2V_Class_I_without_ODT.OUTPUT_DC", "value": 0.0025 }, - { "name": "HSTL_1_2V_Class_I_without_ODT.INT_INNER", "value": 1e-08 }, - { "name": "HSTL_1_2V_Class_I_without_ODT.INT_OUTER", "value": 4e-07 }, - { "name": "HSTL_1_2V_Class_II_with_ODT.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_2V_Class_II_with_ODT.VOLTAGE", "value": 1.2 }, - { "name": "HSTL_1_2V_Class_II_with_ODT.INPUT_AC", "value": 2e-06 }, - { "name": "HSTL_1_2V_Class_II_with_ODT.OUTPUT_AC", "value": 5e-05 }, - { "name": "HSTL_1_2V_Class_II_with_ODT.INPUT_DC", "value": 0.0102 }, - { "name": "HSTL_1_2V_Class_II_with_ODT.OUTPUT_DC", "value": 0.0025 }, - { "name": "HSTL_1_2V_Class_II_with_ODT.INT_INNER", "value": 1e-08 }, - { "name": "HSTL_1_2V_Class_II_with_ODT.INT_OUTER", "value": 4e-07 }, - { "name": "HSTL_1_2V_Class_II_without_ODT.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_2V_Class_II_without_ODT.VOLTAGE", "value": 1.2 }, - { "name": "HSTL_1_2V_Class_II_without_ODT.INPUT_AC", "value": 2e-06 }, - { "name": "HSTL_1_2V_Class_II_without_ODT.OUTPUT_AC", "value": 5e-05 }, - { "name": "HSTL_1_2V_Class_II_without_ODT.INPUT_DC", "value": 0.003 }, - { "name": "HSTL_1_2V_Class_II_without_ODT.OUTPUT_DC", "value": 0.0025 }, - { "name": "HSTL_1_2V_Class_II_without_ODT.INT_INNER", "value": 1e-08 }, - { "name": "HSTL_1_2V_Class_II_without_ODT.INT_OUTER", "value": 4e-07 }, - { "name": "HSTL_1_2V_Diff.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_2V_Diff.VOLTAGE", "value": 1.2 }, - { "name": "HSTL_1_2V_Diff.INPUT_AC", "value": 4e-06 }, - { "name": "HSTL_1_2V_Diff.OUTPUT_AC", "value": 0.0001 }, - { "name": "HSTL_1_2V_Diff.INPUT_DC", "value": 0.006 }, - { "name": "HSTL_1_2V_Diff.OUTPUT_DC", "value": 0.005 }, - { "name": "HSTL_1_2V_Diff.INT_INNER", "value": 2e-08 }, - { "name": "HSTL_1_2V_Diff.INT_OUTER", "value": 8e-07 }, - { "name": "HSTL_1_5V_Class_I_with_ODT.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_5V_Class_I_with_ODT.VOLTAGE", "value": 1.5 }, - { "name": "HSTL_1_5V_Class_I_with_ODT.INPUT_AC", "value": 2e-06 }, - { "name": "HSTL_1_5V_Class_I_with_ODT.OUTPUT_AC", "value": 5e-05 }, - { "name": "HSTL_1_5V_Class_I_with_ODT.INPUT_DC", "value": 0.01425 }, - { "name": "HSTL_1_5V_Class_I_with_ODT.OUTPUT_DC", "value": 0.0025 }, - { "name": "HSTL_1_5V_Class_I_with_ODT.INT_INNER", "value": 1e-08 }, - { "name": "HSTL_1_5V_Class_I_with_ODT.INT_OUTER", "value": 5e-08 }, - { "name": "HSTL_1_5V_Class_I_without_ODT.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_5V_Class_I_without_ODT.VOLTAGE", "value": 1.5 }, - { "name": "HSTL_1_5V_Class_I_without_ODT.INPUT_AC", "value": 2e-06 }, - { "name": "HSTL_1_5V_Class_I_without_ODT.OUTPUT_AC", "value": 5e-05 }, - { "name": "HSTL_1_5V_Class_I_without_ODT.INPUT_DC", "value": 0.003 }, - { "name": "HSTL_1_5V_Class_I_without_ODT.OUTPUT_DC", "value": 0.0025 }, - { "name": "HSTL_1_5V_Class_I_without_ODT.INT_INNER", "value": 1e-08 }, - { "name": "HSTL_1_5V_Class_I_without_ODT.INT_OUTER", "value": 5e-08 }, - { "name": "HSTL_1_5V_Class_II_with_ODT.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_5V_Class_II_with_ODT.VOLTAGE", "value": 1.5 }, - { "name": "HSTL_1_5V_Class_II_with_ODT.INPUT_AC", "value": 2e-06 }, - { "name": "HSTL_1_5V_Class_II_with_ODT.OUTPUT_AC", "value": 5e-05 }, - { "name": "HSTL_1_5V_Class_II_with_ODT.INPUT_DC", "value": 0.01425 }, - { "name": "HSTL_1_5V_Class_II_with_ODT.OUTPUT_DC", "value": 0.0025 }, - { "name": "HSTL_1_5V_Class_II_with_ODT.INT_INNER", "value": 1e-08 }, - { "name": "HSTL_1_5V_Class_II_with_ODT.INT_OUTER", "value": 5e-08 }, - { "name": "HSTL_1_5V_Class_II_without_ODT.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_5V_Class_II_without_ODT.VOLTAGE", "value": 1.5 }, - { "name": "HSTL_1_5V_Class_II_without_ODT.INPUT_AC", "value": 2e-06 }, - { "name": "HSTL_1_5V_Class_II_without_ODT.OUTPUT_AC", "value": 5e-05 }, - { "name": "HSTL_1_5V_Class_II_without_ODT.INPUT_DC", "value": 0.003 }, - { "name": "HSTL_1_5V_Class_II_without_ODT.OUTPUT_DC", "value": 0.0025 }, - { "name": "HSTL_1_5V_Class_II_without_ODT.INT_INNER", "value": 1e-08 }, - { "name": "HSTL_1_5V_Class_II_without_ODT.INT_OUTER", "value": 5e-08 }, - { "name": "HSTL_1_5V_Diff.BANK_TYPE", "value": 0 }, - { "name": "HSTL_1_5V_Diff.VOLTAGE", "value": 1.5 }, - { "name": "HSTL_1_5V_Diff.INPUT_AC", "value": 4e-06 }, - { "name": "HSTL_1_5V_Diff.OUTPUT_AC", "value": 0.0001 }, - { "name": "HSTL_1_5V_Diff.INPUT_DC", "value": 0.006 }, - { "name": "HSTL_1_5V_Diff.OUTPUT_DC", "value": 0.005 }, - { "name": "HSTL_1_5V_Diff.INT_INNER", "value": 2e-08 }, - { "name": "HSTL_1_5V_Diff.INT_OUTER", "value": 1e-07 }, - { "name": "HSUL_1_2V.BANK_TYPE", "value": 0 }, - { "name": "HSUL_1_2V.VOLTAGE", "value": 1.2 }, - { "name": "HSUL_1_2V.INPUT_AC", "value": 2e-06 }, - { "name": "HSUL_1_2V.OUTPUT_AC", "value": 5e-06 }, - { "name": "HSUL_1_2V.INPUT_DC", "value": 0.003 }, - { "name": "HSUL_1_2V.OUTPUT_DC", "value": 0.00025 }, - { "name": "HSUL_1_2V.INT_INNER", "value": 1e-08 }, - { "name": "HSUL_1_2V.INT_OUTER", "value": 4e-06 }, - { "name": "HSUL_1_2V_Diff.BANK_TYPE", "value": 0 }, - { "name": "HSUL_1_2V_Diff.VOLTAGE", "value": 1.2 }, - { "name": "HSUL_1_2V_Diff.INPUT_AC", "value": 1e-06 }, - { "name": "HSUL_1_2V_Diff.OUTPUT_AC", "value": 9e-06 }, - { "name": "HSUL_1_2V_Diff.INPUT_DC", "value": 0.003 }, - { "name": "HSUL_1_2V_Diff.OUTPUT_DC", "value": 0.0005 }, - { "name": "HSUL_1_2V_Diff.INT_INNER", "value": 1e-08 }, - { "name": "HSUL_1_2V_Diff.INT_OUTER", "value": 4e-06 }, - { "name": "MIPI_Diff.BANK_TYPE", "value": 0 }, - { "name": "MIPI_Diff.VOLTAGE", "value": 1.2 }, - { "name": "MIPI_Diff.INPUT_AC", "value": 1e-06 }, - { "name": "MIPI_Diff.OUTPUT_AC", "value": 7e-06 }, - { "name": "MIPI_Diff.INPUT_DC", "value": 0.003 }, - { "name": "MIPI_Diff.OUTPUT_DC", "value": 0.006 }, - { "name": "MIPI_Diff.INT_INNER", "value": 1e-08 }, - { "name": "MIPI_Diff.INT_OUTER", "value": 4e-06 }, - { "name": "PCI66.BANK_TYPE", "value": 1 }, - { "name": "PCI66.VOLTAGE", "value": 3.3 }, - { "name": "PCI66.INPUT_AC", "value": 1.3e-06 }, - { "name": "PCI66.OUTPUT_AC", "value": 7.5e-05 }, - { "name": "PCI66.INPUT_DC", "value": 1e-05 }, - { "name": "PCI66.OUTPUT_DC", "value": 1e-05 }, - { "name": "PCI66.INT_INNER", "value": 1e-08 }, - { "name": "PCI66.INT_OUTER", "value": 4e-06 }, - { "name": "PCIX133.BANK_TYPE", "value": 1 }, - { "name": "PCIX133.VOLTAGE", "value": 2.5 }, - { "name": "PCIX133.INPUT_AC", "value": 1.3e-06 }, - { "name": "PCIX133.OUTPUT_AC", "value": 8e-05 }, - { "name": "PCIX133.INPUT_DC", "value": 1e-05 }, - { "name": "PCIX133.OUTPUT_DC", "value": 1e-05 }, - { "name": "PCIX133.INT_INNER", "value": 1e-08 }, - { "name": "PCIX133.INT_OUTER", "value": 4e-06 }, - { "name": "POD_1_2V.BANK_TYPE", "value": 0 }, - { "name": "POD_1_2V.VOLTAGE", "value": 1.2 }, - { "name": "POD_1_2V.INPUT_AC", "value": 5e-07 }, - { "name": "POD_1_2V.OUTPUT_AC", "value": 7e-06 }, - { "name": "POD_1_2V.INPUT_DC", "value": 0.003 }, - { "name": "POD_1_2V.OUTPUT_DC", "value": 0.006 }, - { "name": "POD_1_2V.INT_INNER", "value": 1e-08 }, - { "name": "POD_1_2V.INT_OUTER", "value": 4e-06 }, - { "name": "POD_1_2V_Diff.BANK_TYPE", "value": 0 }, - { "name": "POD_1_2V_Diff.VOLTAGE", "value": 1.2 }, - { "name": "POD_1_2V_Diff.INPUT_AC", "value": 7e-07 }, - { "name": "POD_1_2V_Diff.OUTPUT_AC", "value": 7e-08 }, - { "name": "POD_1_2V_Diff.INPUT_DC", "value": 0.003 }, - { "name": "POD_1_2V_Diff.OUTPUT_DC", "value": 0.006 }, - { "name": "POD_1_2V_Diff.INT_INNER", "value": 1e-08 }, - { "name": "POD_1_2V_Diff.INT_OUTER", "value": 4e-06 }, - { "name": "RSDS_Diff.BANK_TYPE", "value": 1 }, - { "name": "RSDS_Diff.VOLTAGE", "value": 2.5 }, - { "name": "RSDS_Diff.INPUT_AC", "value": 7e-07 }, - { "name": "RSDS_Diff.OUTPUT_AC", "value": 7e-08 }, - { "name": "RSDS_Diff.INPUT_DC", "value": 0.002 }, - { "name": "RSDS_Diff.OUTPUT_DC", "value": 0.03 }, - { "name": "RSDS_Diff.INT_INNER", "value": 1e-08 }, - { "name": "RSDS_Diff.INT_OUTER", "value": 4e-06 }, - { "name": "SLVS_Diff.BANK_TYPE", "value": 0 }, - { "name": "SLVS_Diff.VOLTAGE", "value": 1.2 }, - { "name": "SLVS_Diff.INPUT_AC", "value": 1e-06 }, - { "name": "SLVS_Diff.OUTPUT_AC", "value": 5e-06 }, - { "name": "SLVS_Diff.INPUT_DC", "value": 0.0023 }, - { "name": "SLVS_Diff.OUTPUT_DC", "value": 0.006 }, - { "name": "SLVS_Diff.INT_INNER", "value": 1e-08 }, - { "name": "SLVS_Diff.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_1_5V_Class_I.BANK_TYPE", "value": 0 }, - { "name": "SSTL_1_5V_Class_I.VOLTAGE", "value": 1.5 }, - { "name": "SSTL_1_5V_Class_I.INPUT_AC", "value": 4e-06 }, - { "name": "SSTL_1_5V_Class_I.OUTPUT_AC", "value": 4e-05 }, - { "name": "SSTL_1_5V_Class_I.INPUT_DC", "value": 0.002 }, - { "name": "SSTL_1_5V_Class_I.OUTPUT_DC", "value": 0.002 }, - { "name": "SSTL_1_5V_Class_I.INT_INNER", "value": 1e-08 }, - { "name": "SSTL_1_5V_Class_I.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_1_5V_Class_II.BANK_TYPE", "value": 0 }, - { "name": "SSTL_1_5V_Class_II.VOLTAGE", "value": 1.5 }, - { "name": "SSTL_1_5V_Class_II.INPUT_AC", "value": 4e-06 }, - { "name": "SSTL_1_5V_Class_II.OUTPUT_AC", "value": 4e-05 }, - { "name": "SSTL_1_5V_Class_II.INPUT_DC", "value": 0.002 }, - { "name": "SSTL_1_5V_Class_II.OUTPUT_DC", "value": 0.002 }, - { "name": "SSTL_1_5V_Class_II.INT_INNER", "value": 1e-08 }, - { "name": "SSTL_1_5V_Class_II.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_1_5V_Diff.BANK_TYPE", "value": 0 }, - { "name": "SSTL_1_5V_Diff.VOLTAGE", "value": 1.5 }, - { "name": "SSTL_1_5V_Diff.INPUT_AC", "value": 4e-06 }, - { "name": "SSTL_1_5V_Diff.OUTPUT_AC", "value": 4e-05 }, - { "name": "SSTL_1_5V_Diff.INPUT_DC", "value": 0.002 }, - { "name": "SSTL_1_5V_Diff.OUTPUT_DC", "value": 0.002 }, - { "name": "SSTL_1_5V_Diff.INT_INNER", "value": 1e-08 }, - { "name": "SSTL_1_5V_Diff.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_1_8V_Class_I_HP.BANK_TYPE", "value": 0 }, - { "name": "SSTL_1_8V_Class_I_HP.VOLTAGE", "value": 1.8 }, - { "name": "SSTL_1_8V_Class_I_HP.INPUT_AC", "value": 2e-06 }, - { "name": "SSTL_1_8V_Class_I_HP.OUTPUT_AC", "value": 5e-05 }, - { "name": "SSTL_1_8V_Class_I_HP.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_1_8V_Class_I_HP.OUTPUT_DC", "value": 0.0025 }, - { "name": "SSTL_1_8V_Class_I_HP.INT_INNER", "value": 1e-08 }, - { "name": "SSTL_1_8V_Class_I_HP.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_1_8V_Class_II_HP.BANK_TYPE", "value": 0 }, - { "name": "SSTL_1_8V_Class_II_HP.VOLTAGE", "value": 1.8 }, - { "name": "SSTL_1_8V_Class_II_HP.INPUT_AC", "value": 2e-06 }, - { "name": "SSTL_1_8V_Class_II_HP.OUTPUT_AC", "value": 5e-05 }, - { "name": "SSTL_1_8V_Class_II_HP.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_1_8V_Class_II_HP.OUTPUT_DC", "value": 0.0025 }, - { "name": "SSTL_1_8V_Class_II_HP.INT_INNER", "value": 1e-08 }, - { "name": "SSTL_1_8V_Class_II_HP.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_1_8V_Diff_HP.BANK_TYPE", "value": 0 }, - { "name": "SSTL_1_8V_Diff_HP.VOLTAGE", "value": 1.8 }, - { "name": "SSTL_1_8V_Diff_HP.INPUT_AC", "value": 2e-06 }, - { "name": "SSTL_1_8V_Diff_HP.OUTPUT_AC", "value": 5e-05 }, - { "name": "SSTL_1_8V_Diff_HP.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_1_8V_Diff_HP.OUTPUT_DC", "value": 0.0025 }, - { "name": "SSTL_1_8V_Diff_HP.INT_INNER", "value": 1e-08 }, - { "name": "SSTL_1_8V_Diff_HP.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_1_8V_Class_I_HR.BANK_TYPE", "value": 1 }, - { "name": "SSTL_1_8V_Class_I_HR.VOLTAGE", "value": 1.8 }, - { "name": "SSTL_1_8V_Class_I_HR.INPUT_AC", "value": 2e-06 }, - { "name": "SSTL_1_8V_Class_I_HR.OUTPUT_AC", "value": 5e-05 }, - { "name": "SSTL_1_8V_Class_I_HR.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_1_8V_Class_I_HR.OUTPUT_DC", "value": 0.0025 }, - { "name": "SSTL_1_8V_Class_I_HR.INT_INNER", "value": 1e-08 }, - { "name": "SSTL_1_8V_Class_I_HR.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_1_8V_Class_II_HR.BANK_TYPE", "value": 1 }, - { "name": "SSTL_1_8V_Class_II_HR.VOLTAGE", "value": 1.8 }, - { "name": "SSTL_1_8V_Class_II_HR.INPUT_AC", "value": 2e-06 }, - { "name": "SSTL_1_8V_Class_II_HR.OUTPUT_AC", "value": 5e-05 }, - { "name": "SSTL_1_8V_Class_II_HR.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_1_8V_Class_II_HR.OUTPUT_DC", "value": 0.0025 }, - { "name": "SSTL_1_8V_Class_II_HR.INT_INNER", "value": 1e-08 }, - { "name": "SSTL_1_8V_Class_II_HR.INT_OUTER", "value": 5e-08 }, - { "name": "SSTL_2_5V_Class_I.BANK_TYPE", "value": 1 }, - { "name": "SSTL_2_5V_Class_I.VOLTAGE", "value": 2.5 }, - { "name": "SSTL_2_5V_Class_I.INPUT_AC", "value": 3e-06 }, - { "name": "SSTL_2_5V_Class_I.OUTPUT_AC", "value": 6e-05 }, - { "name": "SSTL_2_5V_Class_I.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_2_5V_Class_I.OUTPUT_DC", "value": 0.003 }, - { "name": "SSTL_2_5V_Class_I.INT_INNER", "value": 1.5e-08 }, - { "name": "SSTL_2_5V_Class_I.INT_OUTER", "value": 7.5e-08 }, - { "name": "SSTL_2_5V_Class_II.BANK_TYPE", "value": 1 }, - { "name": "SSTL_2_5V_Class_II.VOLTAGE", "value": 2.5 }, - { "name": "SSTL_2_5V_Class_II.INPUT_AC", "value": 3e-06 }, - { "name": "SSTL_2_5V_Class_II.OUTPUT_AC", "value": 6e-05 }, - { "name": "SSTL_2_5V_Class_II.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_2_5V_Class_II.OUTPUT_DC", "value": 0.003 }, - { "name": "SSTL_2_5V_Class_II.INT_INNER", "value": 1.5e-08 }, - { "name": "SSTL_2_5V_Class_II.INT_OUTER", "value": 7.5e-08 }, - { "name": "SSTL_3_3V_Class_I.BANK_TYPE", "value": 1 }, - { "name": "SSTL_3_3V_Class_I.VOLTAGE", "value": 3.3 }, - { "name": "SSTL_3_3V_Class_I.INPUT_AC", "value": 4e-06 }, - { "name": "SSTL_3_3V_Class_I.OUTPUT_AC", "value": 6e-05 }, - { "name": "SSTL_3_3V_Class_I.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_3_3V_Class_I.OUTPUT_DC", "value": 0.0035 }, - { "name": "SSTL_3_3V_Class_I.INT_INNER", "value": 2e-08 }, - { "name": "SSTL_3_3V_Class_I.INT_OUTER", "value": 1e-07 }, - { "name": "SSTL_3_3V_Class_II.BANK_TYPE", "value": 1 }, - { "name": "SSTL_3_3V_Class_II.VOLTAGE", "value": 3.3 }, - { "name": "SSTL_3_3V_Class_II.INPUT_AC", "value": 4e-06 }, - { "name": "SSTL_3_3V_Class_II.OUTPUT_AC", "value": 6e-05 }, - { "name": "SSTL_3_3V_Class_II.INPUT_DC", "value": 0.003 }, - { "name": "SSTL_3_3V_Class_II.OUTPUT_DC", "value": 0.0035 }, - { "name": "SSTL_3_3V_Class_II.INT_INNER", "value": 2e-08 }, - { "name": "SSTL_3_3V_Class_II.INT_OUTER", "value": 1e-07 } - ] -} diff --git a/backend/etc/devices/mpw1/jtag.json b/backend/etc/devices/mpw1/jtag.json deleted file mode 100644 index b98cd364..00000000 --- a/backend/etc/devices/mpw1/jtag.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "jtag", - "coeffs": [ - { "name": "JTAG_CLK_FACTOR" , "value": 0.000407953336466165 }, - { "name": "JTAG_SWITCHING_FACTOR", "value": 0.000264495634397032 }, - { "name": "JTAG_IO_FACTOR" , "value": 0.00004367522 } - ] -} diff --git a/backend/etc/devices/mpw1/noc.json b/backend/etc/devices/mpw1/noc.json deleted file mode 100644 index d7e7f2c7..00000000 --- a/backend/etc/devices/mpw1/noc.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "type": "noc", - "coeffs": [ - { "name": "acpu.ddr", "value": 4.6207E-06 }, - { "name": "acpu.ddr", "value": 5.03289E-06 }, - { "name": "acpu.ddr", "value": 2.76698E-06 }, - { "name": "acpu.ocm", "value": 4.81266E-06 }, - { "name": "acpu.fpga_complex", "value": 4.61688E-06 }, - { "name": "acpu.dma", "value": 4.61538E-06 }, - { "name": "acpu.usb2", "value": 4.61194E-06 }, - { "name": "acpu.gige", "value": 4.60939E-06 }, - { "name": "acpu.spi", "value": 4.64542E-06 }, - { "name": "acpu.spi", "value": 4.65952E-06 }, - { "name": "acpu.i2c", "value": 4.52828E-06 }, - { "name": "acpu.uart", "value": 4.5345E-06 }, - { "name": "acpu.gpio", "value": 4.53407E-06 }, - { "name": "bcpu.ddr", "value": 4.6133E-06 }, - { "name": "bcpu.ddr", "value": 5.24858E-06 }, - { "name": "bcpu.ddr", "value": 2.68637E-06 }, - { "name": "bcpu.ocm", "value": 4.86676E-06 }, - { "name": "bcpu.config", "value": 4.5947E-06 }, - { "name": "bcpu.fpga_complex", "value": 4.65149E-06 }, - { "name": "bcpu.dma", "value": 4.63211E-06 }, - { "name": "bcpu.usb2", "value": 4.60778E-06 }, - { "name": "bcpu.gige", "value": 4.63853E-06 }, - { "name": "bcpu.spi", "value": 4.63756E-06 }, - { "name": "bcpu.spi", "value": 4.64902E-06 }, - { "name": "bcpu.i2c", "value": 4.55653E-06 }, - { "name": "bcpu.uart", "value": 4.52801E-06 }, - { "name": "bcpu.uart", "value": 4.52801E-06 }, - { "name": "bcpu.gpio", "value": 4.55519E-06 }, - { "name": "bcpu.config", "value": 4.55632E-06 }, - { "name": "bcpu.config", "value": 4.5486E-06 }, - { "name": "bcpu.config", "value": 4.57513E-06 }, - { "name": "bcpu.config", "value": 4.54766E-06 }, - { "name": "bcpu.config", "value": 4.62188E-06 }, - { "name": "bcpu.jtag", "value": 3.50E-08 }, - { "name": "fpga_complex.ddr", "value": 4.95086E-06 }, - { "name": "fpga_complex.ddr", "value": 2.72392E-06 }, - { "name": "fpga_complex.ddr", "value": 4.50652E-06 }, - { "name": "fpga_complex.ddr", "value": 4.93121E-06 }, - { "name": "fpga_complex.ddr", "value": 2.67781E-06 }, - { "name": "fpga_complex.ocm", "value": 4.74494E-06 }, - { "name": "fpga_complex.dma", "value": 4.50289E-06 }, - { "name": "fpga_complex.usb2", "value": 4.50167E-06 }, - { "name": "fpga_complex.gige", "value": 4.50934E-06 }, - { "name": "fpga_complex.spi", "value": 4.51407E-06 }, - { "name": "fpga_complex.spi", "value": 4.51605E-06 }, - { "name": "fpga_complex.i2c", "value": 4.41253E-06 }, - { "name": "fpga_complex.uart", "value": 4.40617E-06 }, - { "name": "fpga_complex.gpio", "value": 4.40782E-06 }, - { "name": "dma.fpga_complex", "value": 4.50286E-06 }, - { "name": "dma.spi", "value": 4.53998E-06 }, - { "name": "dma.i2c", "value": 4.42115E-06 }, - { "name": "dma.uart", "value": 4.41946E-06 }, - { "name": "dma.ddr", "value": 5.13089E-06 }, - { "name": "dma.ddr", "value": 2.63756E-06 }, - { "name": "dma.ocm", "value": 4.64649E-06 }, - { "name": "dma.ocm", "value": 4.74549E-06 }, - { "name": "dma.ocm", "value": 4.69132E-06 } - ], - "static_power": [ - { - "rail_type": "Vcc_core (NOC)", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.00000000005, -0.000000001, 0.000000002, 0.00001, 0.0003], "factor": 1.0 }, - { "type": "typical", "coeffs": [0.00000000003, -0.000000001, 0.00000001, 0.000005, 0.00006], "factor": 1.0 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/power_data.json b/backend/etc/devices/mpw1/power_data.json deleted file mode 100644 index a3ce584c..00000000 --- a/backend/etc/devices/mpw1/power_data.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "components": [ - { "$ref": "clocking.json" }, - { "$ref": "dsp.json" }, - { "$ref": "fabric_le.json" }, - { "$ref": "bram.json" }, - { "$ref": "io.json" }, - { "$ref": "uart.json" }, - { "$ref": "qspi.json" }, - { "$ref": "acpu.json" }, - { "$ref": "bcpu.json" }, - { "$ref": "jtag.json" }, - { "$ref": "i2c.json" }, - { "$ref": "usb2.json" }, - { "$ref": "gige.json" }, - { "$ref": "gpio.json" }, - { "$ref": "ddr.json" }, - { "$ref": "sram.json" }, - { "$ref": "pwm.json" }, - { "$ref": "noc.json" }, - { "$ref": "puffcc.json" }, - { "$ref": "rc_osc.json" }, - { "$ref": "gearbox_hp.json" }, - { "$ref": "gearbox_hr.json" }, - { "$ref": "regulator.json" } - ] -} diff --git a/backend/etc/devices/mpw1/puffcc.json b/backend/etc/devices/mpw1/puffcc.json deleted file mode 100644 index 61598691..00000000 --- a/backend/etc/devices/mpw1/puffcc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "puffcc", - "static_power": [ - { - "rail_type": "VCC_PUF", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.001], "factor": 0.555555555555556 }, - { "type": "typical", "coeffs": [0.0005], "factor": 0.555555555555556 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/pwm.json b/backend/etc/devices/mpw1/pwm.json deleted file mode 100644 index 29d0ac51..00000000 --- a/backend/etc/devices/mpw1/pwm.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "pwm", - "coeffs": [ - { "name": "PWM_IO_FACTOR", "value": 0.001 } - ] -} diff --git a/backend/etc/devices/mpw1/qspi.json b/backend/etc/devices/mpw1/qspi.json deleted file mode 100644 index fd3a4d7f..00000000 --- a/backend/etc/devices/mpw1/qspi.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "spi", - "coeffs": [ - { "name": "QSPI_CLK_FACTOR" , "value": 0.0000154995864661654 }, - { "name": "QSPI_SWITCHING_FACTOR", "value": 0.00156512937507589 }, - { "name": "QSPI_IO_FACTOR" , "value": 0.0001270766 } - ] -} diff --git a/backend/etc/devices/mpw1/rc_osc.json b/backend/etc/devices/mpw1/rc_osc.json deleted file mode 100644 index 03a14d06..00000000 --- a/backend/etc/devices/mpw1/rc_osc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "rc_osc", - "static_power": [ - { - "rail_type": "VCC_RC_OSC", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.0005], "factor": 0.555555555555556 }, - { "type": "typical", "coeffs": [0.0001], "factor": 0.555555555555556 } - ] - } - ] -} diff --git a/backend/etc/devices/mpw1/regulator.json b/backend/etc/devices/mpw1/regulator.json deleted file mode 100644 index 77c38cd5..00000000 --- a/backend/etc/devices/mpw1/regulator.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "regulator", - "coeffs": [ - { "name": "VCC_CORE" , "value": 0.8 }, - { "name": "VCC_AUX" , "value": 1.8 }, - { "name": "VCC_BOOT_IO" , "value": 1.8 }, - { "name": "VCC_DDR_IO" , "value": 0.8 }, - { "name": "VCC_SOC_IO" , "value": 1.8 }, - { "name": "VCC_GBE_IO" , "value": 0.8 }, - { "name": "VCC_USB_IO" , "value": 0.8 }, - { "name": "VCC_BOOT_AUX", "value": 1.8 }, - { "name": "VCC_SOC_AUX" , "value": 1.8 }, - { "name": "VCC_GBE_AUX" , "value": 1.8 }, - { "name": "VCC_USB_AUX" , "value": 1.8 }, - { "name": "VCC_PUF" , "value": 1.8 }, - { "name": "VCC_RC_OSC" , "value": 1.8 } - ] -} diff --git a/backend/etc/devices/mpw1/sram.json b/backend/etc/devices/mpw1/sram.json deleted file mode 100644 index e877f3d4..00000000 --- a/backend/etc/devices/mpw1/sram.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "sram", - "coeffs": [ - { "name": "SRAM_ACLK_FACTOR" , "value": 0.0000688892039916618 }, - { "name": "SRAM_WRITE_FACTOR", "value": 0.000142810846268152 }, - { "name": "SRAM_READ_FACTOR" , "value": 0.000140428615087023 } - ] -} diff --git a/backend/etc/devices/mpw1/uart.json b/backend/etc/devices/mpw1/uart.json deleted file mode 100644 index 479249b0..00000000 --- a/backend/etc/devices/mpw1/uart.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "uart", - "coeffs": [ - { "name": "UART_CLK_FACTOR" , "value": 0.00130836512711466 }, - { "name": "UART_SWITCHING_FACTOR", "value": 0.0924457233313814 }, - { "name": "UART_IO_FACTOR" , "value": 0.00639794692 } - ] -} diff --git a/backend/etc/devices/mpw1/usb2.json b/backend/etc/devices/mpw1/usb2.json deleted file mode 100644 index b0e86797..00000000 --- a/backend/etc/devices/mpw1/usb2.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "usb2", - "coeffs": [ - { "name": "USB2_CLK_FACTOR" , "value": 0.0000261772947994987 }, - { "name": "USB2_SWITCHING_FACTOR", "value": 0.0000440759304744493 }, - { "name": "USB2_IO_FACTOR" , "value": 0.00166056666666667 } - ], - "static_power": [ - { - "rail_type": "VCC_USB_IO", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.000000000001, -0.00000000003, 0.00000000006, 0.0000003, 0.000009], "factor": 1.25 }, - { "type": "typical", "coeffs": [0.000000000001, -0.00000000006, 0.0000000005, 0.0000002, 0.000003], "factor": 1.25 } - ] - }, - { - "rail_type": "VCC_USB_AUX", - "domain": "SOC", - "scenarios": [ - { "type": "worse", "coeffs": [0.0000000008, 0.0000002, 0.00001, 0.007], "factor": 0.555555555555556 }, - { "type": "typical", "coeffs": [0.000000001, 0.0000002, 0.00021, 0.0003], "factor": 0.555555555555556 } - ] - } - ] -} diff --git a/backend/submodule/bram.py b/backend/submodule/bram.py index 25a3c8f2..a78c4fc8 100644 --- a/backend/submodule/bram.py +++ b/backend/submodule/bram.py @@ -186,6 +186,18 @@ def __init__(self, resources: RsDeviceResources, itemlist: List[BRAM] = None): self.total_block_power = 0.0 self.itemlist: List[BRAM] = itemlist or [] + # Read dynamic power calculation coeffs + if self.total_36k_bram_available > 0 and self.total_18k_bram_available > 0: + self.BRAM_WRITE_CAP = self.resources.get_BRAM_WRITE_CAP() + self.BRAM_READ_CAP = self.resources.get_BRAM_READ_CAP() + self.BRAM_INT_CAP = self.resources.get_BRAM_INT_CAP() + self.BRAM_FIFO_CAP = self.resources.get_BRAM_FIFO_CAP() + else: + self.BRAM_WRITE_CAP = 0.0 + self.BRAM_READ_CAP = 0.0 + self.BRAM_INT_CAP = 0.0 + self.BRAM_FIFO_CAP = 0.0 + def get_resources(self): total_18k_bram_used = 0 total_36k_bram_used = 0 @@ -231,12 +243,6 @@ def clear(self) -> None: self.itemlist.clear() def compute_output_power(self): - # Get power calculation coefficients - BRAM_WRITE_CAP = self.resources.get_BRAM_WRITE_CAP() - BRAM_READ_CAP = self.resources.get_BRAM_READ_CAP() - BRAM_INT_CAP = self.resources.get_BRAM_INT_CAP() - BRAM_FIFO_CAP = self.resources.get_BRAM_FIFO_CAP() - # Compute the total power consumption of all clocks self.total_block_power = 0.0 self.total_interconnect_power = 0.0 @@ -244,7 +250,7 @@ def compute_output_power(self): # Compute the power consumption for each individual items for item in self.itemlist: item.compute_dynamic_power(self.resources.get_clock(item.port_a.clock), self.resources.get_clock(item.port_b.clock), \ - BRAM_WRITE_CAP, BRAM_READ_CAP, BRAM_INT_CAP, BRAM_FIFO_CAP) + self.BRAM_WRITE_CAP, self.BRAM_READ_CAP, self.BRAM_INT_CAP, self.BRAM_FIFO_CAP) self.total_interconnect_power += item.output.interconnect_power self.total_block_power += item.output.block_power @@ -253,25 +259,26 @@ def compute_output_power(self): for item in self.itemlist: item.compute_percentage(total_power) - def compute_static_power(self, temperature: float, scenario: ScenarioType) -> float: - NUM_36K_BRAM = self.resources.get_num_36K_BRAM() + def compute_static_power(self, temperature: float, scenario: ScenarioType) -> List[PowerValue]: mylist = [] - for rail_type, scene_list in self.resources.powercfg.get_polynomial(ElementType.BRAM, scenario): - total_power = 0.0 - for s in scene_list: - power = np.polyval(s.coeffs, temperature) * s.factor - power = power * NUM_36K_BRAM - total_power += power - # debug info - log(f'[BRAM] {rail_type = }', RsLogLevel.DEBUG) - log(f'[BRAM] {temperature = }', RsLogLevel.DEBUG) - log(f'[BRAM] {scenario = }', RsLogLevel.DEBUG) - log(f'[BRAM] {s.coeffs = }', RsLogLevel.DEBUG) - log(f'[BRAM] {s.factor = }', RsLogLevel.DEBUG) - log(f'[BRAM] {NUM_36K_BRAM = }', RsLogLevel.DEBUG) - log(f'[BRAM] {power = }', RsLogLevel.DEBUG) - log(f'[BRAM] {total_power = }', RsLogLevel.DEBUG) - mylist.append(PowerValue(type=rail_type, value=total_power)) + if self.total_36k_bram_available > 0 and self.total_18k_bram_available > 0: + for rail_type, scene_list in self.resources.powercfg.get_polynomial(ElementType.BRAM, scenario): + total_power = 0.0 + for s in scene_list: + power = np.polyval(s.coeffs, temperature) * s.factor + power = power * self.total_36k_bram_available + total_power += power + # debug info + log(f'[BRAM] {rail_type = }', RsLogLevel.DEBUG) + log(f'[BRAM] {temperature = }', RsLogLevel.DEBUG) + log(f'[BRAM] {scenario = }', RsLogLevel.DEBUG) + log(f'[BRAM] {s.coeffs = }', RsLogLevel.DEBUG) + log(f'[BRAM] {s.factor = }', RsLogLevel.DEBUG) + log(f'[BRAM] {self.total_36k_bram_available = }', RsLogLevel.DEBUG) + log(f'[BRAM] {self.total_18k_bram_available = }', RsLogLevel.DEBUG) + log(f'[BRAM] {power = }', RsLogLevel.DEBUG) + log(f'[BRAM] {total_power = }', RsLogLevel.DEBUG) + mylist.append(PowerValue(type=rail_type, value=total_power)) return mylist diff --git a/backend/submodule/dsp.py b/backend/submodule/dsp.py index 818e36d2..d021da91 100644 --- a/backend/submodule/dsp.py +++ b/backend/submodule/dsp.py @@ -113,6 +113,18 @@ def __init__(self, resources: RsDeviceResources, itemlist: List[DSP] = None): self.total_block_power = 0.0 self.itemlist: List[DSP] = itemlist or [] + # Read power calculation coeffs + if self.total_dsp_blocks_available > 0: + self.VCC_CORE = self.resources.get_VCC_CORE() + self.DSP_MULT_CAP = self.resources.get_DSP_MULT_CAP() + self.DSP_MULT_CAP2 = self.resources.get_DSP_MULT_CAP2() + self.DSP_INT_CAP = self.resources.get_DSP_INT_CAP() + else: + self.VCC_CORE = 0.0 + self.DSP_MULT_CAP = 0.0 + self.DSP_MULT_CAP2 = 0.0 + self.DSP_INT_CAP = 0.0 + def get_resources(self): total_dsp_blocks_used = 0 for item in self.itemlist: @@ -156,19 +168,13 @@ def clear(self) -> None: self.itemlist.clear() def compute_output_power(self): - # Get power calculation coefficients - VCC_CORE = self.resources.get_VCC_CORE() - DSP_MULT_CAP = self.resources.get_DSP_MULT_CAP() - DSP_MULT_CAP2 = self.resources.get_DSP_MULT_CAP2() - DSP_INT_CAP = self.resources.get_DSP_INT_CAP() - # Compute the total power consumption of all clocks self.total_block_power = 0.0 self.total_interconnect_power = 0.0 # Compute the power consumption for each individual items for item in self.itemlist: - item.compute_dynamic_power(self.resources.get_clock(item.clock), VCC_CORE, DSP_MULT_CAP, DSP_MULT_CAP2, DSP_INT_CAP) + item.compute_dynamic_power(self.resources.get_clock(item.clock), self.VCC_CORE, self.DSP_MULT_CAP, self.DSP_MULT_CAP2, self.DSP_INT_CAP) self.total_interconnect_power += item.output.interconnect_power self.total_block_power += item.output.block_power @@ -178,24 +184,24 @@ def compute_output_power(self): item.compute_percentage(total_power) def compute_static_power(self, temperature: float, scenario: ScenarioType) -> List[PowerValue]: - DSP_BlOCKS = self.resources.get_num_DSP_BLOCKs() mylist = [] - for rail_type, scene_list in self.resources.powercfg.get_polynomial(ElementType.DSP, scenario): - total_power = 0.0 - for s in scene_list: - power = np.polyval(s.coeffs, temperature) * s.factor - power = power * DSP_BlOCKS - total_power += power - # debug info - log(f'[DSP] {rail_type = }', RsLogLevel.DEBUG) - log(f'[DSP] {temperature = }', RsLogLevel.DEBUG) - log(f'[DSP] {scenario = }', RsLogLevel.DEBUG) - log(f'[DSP] {s.coeffs = }', RsLogLevel.DEBUG) - log(f'[DSP] {s.factor = }', RsLogLevel.DEBUG) - log(f'[DSP] {DSP_BlOCKS = }', RsLogLevel.DEBUG) - log(f'[DSP] {power = }', RsLogLevel.DEBUG) - log(f'[DSP] {total_power = }', RsLogLevel.DEBUG) - mylist.append(PowerValue(type=rail_type, value=total_power)) + if self.total_dsp_blocks_available > 0: + for rail_type, scene_list in self.resources.powercfg.get_polynomial(ElementType.DSP, scenario): + total_power = 0.0 + for s in scene_list: + power = np.polyval(s.coeffs, temperature) * s.factor + power = power * self.total_dsp_blocks_available + total_power += power + # debug info + log(f'[DSP] {rail_type = }', RsLogLevel.DEBUG) + log(f'[DSP] {temperature = }', RsLogLevel.DEBUG) + log(f'[DSP] {scenario = }', RsLogLevel.DEBUG) + log(f'[DSP] {s.coeffs = }', RsLogLevel.DEBUG) + log(f'[DSP] {s.factor = }', RsLogLevel.DEBUG) + log(f'[DSP] {self.total_dsp_blocks_available = }', RsLogLevel.DEBUG) + log(f'[DSP] {power = }', RsLogLevel.DEBUG) + log(f'[DSP] {total_power = }', RsLogLevel.DEBUG) + mylist.append(PowerValue(type=rail_type, value=total_power)) return mylist diff --git a/backend/submodule/io.py b/backend/submodule/io.py index 86de502a..e1aa8630 100644 --- a/backend/submodule/io.py +++ b/backend/submodule/io.py @@ -7,10 +7,13 @@ import math from dataclasses import dataclass, field from typing import Any, Dict, List +import numpy as np from utilities.common_utils import RsEnum, update_attributes from .rs_device_resources import IO_Standard_Coeff, IOFeatureNotFoundException, IOFeatureOdtBankNotFoundException, IOFeatureTypeMismatchException, IOStandardCoeffNotFoundException, \ IONotFoundException, IO_BankType, IO_Standard, RsDeviceResources from .rs_message import RsMessage, RsMessageManager +from .rs_power_config import ElementType, PowerValue, ScenarioType +from .rs_logger import RsLogLevel, log class IO_Direction(RsEnum): INPUT = 0, "Input" @@ -535,3 +538,52 @@ def compute_output_power(self): io_bank.percentage = (total_io_used / io_bank.total_io_available) * 100 else: io_bank.percentage = 0.0 + + def get_io_banks_used(self, io_type: IO_BankType, voltage: float = None) -> int: + num_banks = 0 + for elem in self.io_usage: + if elem.type == io_type: + for item in elem.usage: + if voltage is None or item.voltage == voltage: + num_banks += item.banks_used + break + return num_banks + + def compute_static_power(self, temperature: float, scenario: ScenarioType) -> List[PowerValue]: + HR_IO_BANKS = self.resources.get_num_HR_Banks() + HP_IO_BANKS = self.resources.get_num_HP_Banks() + io_banks_voltages = { + "Vcc_core (Gearbox HR)": HR_IO_BANKS, + "Vcc_core (HR I/O)" : HR_IO_BANKS, + "Vcc_hr_aux" : self.get_io_banks_used(IO_BankType.HR), + "Vcc_hr_io (1.8V)" : self.get_io_banks_used(IO_BankType.HR, 1.8) * 20 * 1.8, + "Vcc_hr_io (2.5V)" : self.get_io_banks_used(IO_BankType.HR, 2.5) * 20 * 2.5, + "Vcc_hr_io (3.3V)" : self.get_io_banks_used(IO_BankType.HR, 3.3) * 20 * 3.3, + "Vcc_core (Gearbox HP)": HP_IO_BANKS, + "Vcc_core (HP I/O)" : HP_IO_BANKS, + "Vcc_hv_aux" : self.get_io_banks_used(IO_BankType.HP), + "Vcc_hp_io (1.2V)" : self.get_io_banks_used(IO_BankType.HP, 1.2) * 20 * 1.2, + "Vcc_hp_io (1.5V)" : self.get_io_banks_used(IO_BankType.HP, 1.5) * 20 * 1.5, + "Vcc_hp_io (1.8V)" : self.get_io_banks_used(IO_BankType.HP, 1.8) * 20 * 1.8, + } + mylist = [] + + for rail_type, scene_list in self.resources.powercfg.get_polynomial(ElementType.IO, scenario): + total_power = 0.0 + for s in scene_list: + power = np.polyval(s.coeffs, temperature) * s.factor * io_banks_voltages.get(rail_type, 0) + total_power += power + # debug info + log(f'[IO] {rail_type = }', RsLogLevel.DEBUG) + log(f'[IO] {temperature = }', RsLogLevel.DEBUG) + log(f'[IO] {scenario = }', RsLogLevel.DEBUG) + log(f'[IO] {s.coeffs = }', RsLogLevel.DEBUG) + log(f'[IO] {s.factor = }', RsLogLevel.DEBUG) + log(f'[IO] {HR_IO_BANKS = }', RsLogLevel.DEBUG) + log(f'[IO] {HP_IO_BANKS = }', RsLogLevel.DEBUG) + log(f'[IO] {io_banks_voltages = }', RsLogLevel.DEBUG) + log(f'[IO] {power = }', RsLogLevel.DEBUG) + log(f'[IO] {total_power = }', RsLogLevel.DEBUG) + mylist.append(PowerValue(type=rail_type, value=total_power)) + + return mylist diff --git a/backend/submodule/peripherals.py b/backend/submodule/peripherals.py index 8950e6ac..9c7543f5 100644 --- a/backend/submodule/peripherals.py +++ b/backend/submodule/peripherals.py @@ -215,15 +215,16 @@ def initialize_peripherals(self) -> List['Peripheral']: peripherals += self.create_peripherals(self.resources.get_num_DMAs(), 'DMA', PeripheralType.DMA) peripherals += self.create_peripherals(1, 'N22 RISC-V', PeripheralType.BCPU) peripherals += self.create_peripherals(1, 'Fabric', PeripheralType.FPGA_COMPLEX) - peripherals += self.create_peripherals(1, 'GPIO', PeripheralType.GPIO) - peripherals += self.create_peripherals(1, 'Gearbox HP', PeripheralType.GEARBOX_HP) - peripherals += self.create_peripherals(1, 'Gearbox HR', PeripheralType.GEARBOX_HR) peripherals += self.create_peripherals(1, 'PUFFcc', PeripheralType.PUFFCC) peripherals += self.create_peripherals(1, 'RC Oscillator', PeripheralType.RC_OSC) peripherals += self.create_peripherals(1, 'NOC', PeripheralType.NOC) - # add application processor for Gemini - if self.resources.get_series() == 'Gemini': + # add gpio + if self.resources.get_num_SOC_IOs() > 0: + peripherals += self.create_peripherals(1, 'GPIO', PeripheralType.GPIO) + + # add application processor for Gemini (but not MPW1) + if self.resources.get_series() == 'Gemini' and self.resources.get_device_name() != 'MPW1': peripherals += self.create_peripherals(1, 'A45 RISC-V', PeripheralType.ACPU) return peripherals @@ -466,10 +467,6 @@ def get_compute_object(cls, type: PeripheralType, context: IPeripheral) -> 'Comp return RCOsc0(context=context) elif type == PeripheralType.NOC: return Noc0(context=context) - elif type == PeripheralType.GEARBOX_HP: - return Gearbox_HP_0(context=context) - elif type == PeripheralType.GEARBOX_HR: - return Gearbox_HR_0(context=context) return None @dataclass @@ -1701,94 +1698,6 @@ def compute_static_power(self, temperature: float, scenario: ScenarioType) -> Li return mylist -@dataclass -class Gearbox_HP_0(ComputeObject): - def get_hp_io_banks_used(self, voltage: float = None) -> int: - num_banks = 0 - io = self.get_context().get_device_resources().get_module(ModuleType.IO) - for elem in io.io_usage: - if elem.type == IO_BankType.HP: - for item in elem.usage: - if voltage is None or item.voltage == voltage: - num_banks += item.banks_used - break - return num_banks - - def compute_static_power(self, temperature: float, scenario: ScenarioType) -> List[PowerValue]: - resources = self.get_context().get_device_resources() - IO_BANKS = resources.get_num_HP_Banks() - io_banks_voltages = { - "Vcc_core (Gearbox HP)": IO_BANKS, - "Vcc_core (HP I/O)" : IO_BANKS, - "Vcc_hv_aux" : self.get_hp_io_banks_used(), - "Vcc_hp_io (1.2V)" : self.get_hp_io_banks_used(1.2) * 20 * 1.2, - "Vcc_hp_io (1.5V)" : self.get_hp_io_banks_used(1.5) * 20 * 1.5, - "Vcc_hp_io (1.8V)" : self.get_hp_io_banks_used(1.8) * 20 * 1.8 - } - mylist = [] - - for rail_type, scene_list in resources.powercfg.get_polynomial(ElementType.GEARBOX_HP, scenario): - total_power = 0.0 - for s in scene_list: - power = np.polyval(s.coeffs, temperature) * s.factor * io_banks_voltages.get(rail_type, 0) - total_power += power - # debug info - log(f'[GEARBOX_HP] {rail_type = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HP] {temperature = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HP] {scenario = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HP] {s.coeffs = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HP] {s.factor = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HP] {io_banks_voltages = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HP] {power = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HP] {total_power = }', RsLogLevel.DEBUG) - mylist.append(PowerValue(type=rail_type, value=total_power)) - - return mylist - -@dataclass -class Gearbox_HR_0(ComputeObject): - def get_hr_io_banks_used(self, voltage: float = None) -> int: - num_banks = 0 - io = self.get_context().get_device_resources().get_module(ModuleType.IO) - for elem in io.io_usage: - if elem.type == IO_BankType.HR: - for item in elem.usage: - if voltage is None or item.voltage == voltage: - num_banks += item.banks_used - break - return num_banks - - def compute_static_power(self, temperature: float, scenario: ScenarioType) -> List[PowerValue]: - resources = self.get_context().get_device_resources() - IO_BANKS = resources.get_num_HR_Banks() - io_banks_voltages = { - "Vcc_core (Gearbox HR)": IO_BANKS, - "Vcc_core (HR I/O)" : IO_BANKS, - "Vcc_hr_aux" : self.get_hr_io_banks_used(), - "Vcc_hr_io (1.8V)" : self.get_hr_io_banks_used(1.8) * 20 * 1.8, - "Vcc_hr_io (2.5V)" : self.get_hr_io_banks_used(2.5) * 20 * 2.5, - "Vcc_hr_io (3.3V)" : self.get_hr_io_banks_used(3.3) * 20 * 3.3 - } - mylist = [] - - for rail_type, scene_list in resources.powercfg.get_polynomial(ElementType.GEARBOX_HR, scenario): - total_power = 0.0 - for s in scene_list: - power = np.polyval(s.coeffs, temperature) * s.factor * io_banks_voltages.get(rail_type, 0) - total_power += power - # debug info - log(f'[GEARBOX_HR] {rail_type = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HR] {temperature = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HR] {scenario = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HR] {s.coeffs = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HR] {s.factor = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HR] {io_banks_voltages = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HR] {power = }', RsLogLevel.DEBUG) - log(f'[GEARBOX_HR] {total_power = }', RsLogLevel.DEBUG) - mylist.append(PowerValue(type=rail_type, value=total_power)) - - return mylist - @dataclass class Noc0(ComputeObject): def compute_static_power(self, temperature: float, scenario: ScenarioType) -> List[PowerValue]: diff --git a/backend/submodule/rs_device.py b/backend/submodule/rs_device.py index 9d429524..753ad08f 100644 --- a/backend/submodule/rs_device.py +++ b/backend/submodule/rs_device.py @@ -279,7 +279,7 @@ def update_spec(self, data): def compute(self, temperature: float, scenerio: ScenarioType) -> StaticPowerResult: # compute fabric/fpga static power power = StaticPowerResult() - for modtype in (ModuleType.FABRIC_LE, ModuleType.BRAM, ModuleType.DSP, ModuleType.CLOCKING): + for modtype in (ModuleType.FABRIC_LE, ModuleType.BRAM, ModuleType.DSP, ModuleType.CLOCKING, ModuleType.IO): power.add(self.get_module(modtype).compute_static_power(temperature, scenerio)) # compute processin/peripheral static power diff --git a/backend/submodule/rs_device_resources.py b/backend/submodule/rs_device_resources.py index 250b8c43..4ca1535e 100644 --- a/backend/submodule/rs_device_resources.py +++ b/backend/submodule/rs_device_resources.py @@ -103,8 +103,6 @@ class PeripheralType(Enum): PUFFCC = 'puffcc' RC_OSC = 'rc_osc' NOC = 'noc' - GEARBOX_HP = 'gearbox_hp' - GEARBOX_HR = 'gearbox_hr' class IO_BankType(RsEnum): HP = 0, "HP" @@ -213,16 +211,13 @@ def get_num_PLLs(self) -> int: return 2 def get_num_DSP_BLOCKs(self) -> int: - # return self.get_attr('dsp') - return 176 # overwrite for test purpose + return self.get_attr('dsp') def get_num_18K_BRAM(self) -> int: - # return self.get_attr('bram') - return self.get_num_36K_BRAM() * 2 # overwrite for test purpose + return self.get_num_36K_BRAM() * 2 def get_num_36K_BRAM(self) -> int: - # return self.get_attr('bram') - return 176 # overwrite for test purpose + return self.get_attr('bram') def get_series(self): return self.device.series @@ -249,8 +244,7 @@ def get_num_FFs(self) -> int: return self.get_attr('ff') def get_num_CLBs(self) -> int: - # return int(self.get_num_LUTs() / 8) - return 5676 + return int(self.get_num_LUTs() / 8) def get_num_HP_Banks(self) -> int: # todo: how to get number of hp banks? @@ -261,20 +255,17 @@ def get_num_HR_Banks(self) -> int: return 6 def get_num_HP_IOs(self) -> int: - # todo: how to get number of HP IOs? - return 120 + return self.get_attr('hp_io') def get_num_HR_IOs(self) -> int: - # todo: how to get number of HR IOs? - return 240 + return self.get_attr('hr_io') def get_num_BOOT_IOs(self) -> int: # todo: how to get number of boot IOs? return 15 def get_num_SOC_IOs(self) -> int: - # todo: how to get number of SoC IOs? - return 40 + return self.get_attr('soc_io') def get_num_DDR_IOs(self) -> int: # todo: how to get number of DDR IOs? diff --git a/backend/submodule/rs_power_config.py b/backend/submodule/rs_power_config.py index 79eb00f8..912b5056 100644 --- a/backend/submodule/rs_power_config.py +++ b/backend/submodule/rs_power_config.py @@ -54,8 +54,6 @@ class ElementType(Enum): REGULATOR = 'regulator' PUFFCC = 'puffcc' RC_OSC = 'rc_osc' - GEARBOX_HP = 'gearbox_hp' - GEARBOX_HR = 'gearbox_hr' class ScenarioType(Enum): TYPICAL = 'typical' diff --git a/tests/test_dsp.py b/tests/test_dsp.py index 046074c6..a8c01cc7 100644 --- a/tests/test_dsp.py +++ b/tests/test_dsp.py @@ -60,6 +60,7 @@ def test_compute_dynamic_power(enable, clock, VCC_CORE, DSP_MULT_CAP, DSP_MULT_C def test_dsp_submodule_initialization(): mock_resources = Mock() + mock_resources.get_num_DSP_BLOCKs.return_value = 10 dsps = [DSP(enable=True, name="DSP 1"), DSP(enable=False, name="DSP 2")] dsp_submodule = DSP_SubModule(mock_resources, dsps) @@ -79,6 +80,7 @@ def test_get_dsp_resources(): def test_add_and_get_dsp(): mock_resources = Mock() + mock_resources.get_num_DSP_BLOCKs.return_value = 10 dsp_submodule = DSP_SubModule(mock_resources, []) new_dsp_data = { @@ -95,6 +97,7 @@ def test_add_and_get_dsp(): def test_dsp_submodule_compute_output_power(): mock_resources = Mock() + mock_resources.get_num_DSP_BLOCKs.return_value = 10 # Assume some coefficients are returned by the mock mock_resources.get_VCC_CORE.return_value = 1.2 diff --git a/tests/test_rs_device_resources.py b/tests/test_rs_device_resources.py index 083c9a06..e580e14f 100644 --- a/tests/test_rs_device_resources.py +++ b/tests/test_rs_device_resources.py @@ -4,6 +4,7 @@ import pytest from unittest.mock import MagicMock, patch +from device.device_resource import ResourceAttributes from submodule.rs_power_config import ElementType from submodule.rs_device_resources import ( RsDeviceResources, @@ -23,6 +24,11 @@ def mock_device(): device.package = 'TestPackage' device.speedgrade = 'Speed1' device.filepath = 'device.xml' + device.resources = { + "dsp": ResourceAttributes(type='dsp', num=176, label='DSP'), + "bram": ResourceAttributes(type='bram', num=176, label='BRAM'), + "lut": ResourceAttributes(type='lut', num=45408, label='LUTs') + } return device @pytest.fixture