Генерация кода из модели с вложенными подсистемами.
Данный пример логически продолжает предыдущую демонстрацию. Его цель — показать возможности генератора кода Verilog, а именно различные подходы к структурированию итогового проекта за счёт использования атомарных подсистем.
На рисунке ниже представлена реализованная модель. В ней конфигурация "Treat as atomic unit"
применена только к одному из двух блоков, что позволяет наглядно сравнить результаты генерации.
Теперь перейдём к генерации кода и сравнению результатов с исходной моделью. Для начала объявим вспомогательную функцию, которая будет запускать нашу модель.
Out[0]:
run_model (generic function with 1 method)
Теперь выполним настройку модели для генерации кода на Verilog.
Генерацию кода мы выполним напрямую из интерфейса модели (по нажатию кнопки), чтобы не перегружать и без того объёмный скрипт.
Далее объявляем вспомогательную функцию для чтения сгенерированных файлов Verilog. Принцип работы функции read_v
заключается в следующем. Сначала она проверяет существование указанного файла в файловой системе. Если файл не обнаружен, выводится соответствующее сообщение. При успешном обнаружении функция считывает всё содержимое файла в виде строки и наглядно выводит его в консоль, обрамляя заголовком и разделителями для удобства восприятия.
Out[0]:
read_v (generic function with 1 method)
Теперь перейдём к сравнению реализации подсистем. Ключевое различие заключается в организации выходного кода.
В случае реализации без использования атомарных подсистем головной файл проекта включает в себя всю логику системы, представленную в виде единого монолитного модуля. Этот модуль содержит многочисленные регистры и сложные комбинационные цепи, объединённые в одном пространстве имён.
Содержимое файла /user/start/examples/codegen/qpsk_and_fir_verilog_v2/model_RX.v:
==================================================
/* Code generated by Engee
* Model name: model.engee
* Code generator: release-1.1.22
* Date: Wed Sep 10 06:27:06 2025 GMT
*/
module model_RX(
input clock,
reset,
output io_Out3,
output [7:0] io_Out1,
io_Out2
);
reg UnitDelay_1_state;
reg UnitDelay_13_state;
reg UnitDelay_state;
reg UnitDelay_1_1_state;
reg UnitDelay_2_state;
reg UnitDelay_3_state;
reg UnitDelay_4_state;
reg UnitDelay_13_1_state;
reg UnitDelay_14_state;
reg UnitDelay_5_state;
reg UnitDelay_6_state;
reg UnitDelay_14_1_state;
reg UnitDelay_7_state;
reg UnitDelay_8_state;
reg UnitDelay_9_state;
reg UnitDelay_10_state;
reg UnitDelay_11_state;
reg [3:0] UnitDelay_12_state;
reg [3:0] UnitDelay_13_2_state;
reg [3:0] UnitDelay_14_2_state;
reg [3:0] UnitDelay_15_state;
reg [3:0] UnitDelay_16_state;
reg [3:0] UnitDelay_17_state;
reg [3:0] UnitDelay_18_state;
reg [3:0] UnitDelay_19_state;
reg [3:0] UnitDelay_20_state;
reg [3:0] UnitDelay_21_state;
reg [3:0] UnitDelay_22_state;
reg [3:0] UnitDelay_23_state;
reg [3:0] UnitDelay_24_state;
reg [3:0] UnitDelay_25_state;
reg [3:0] UnitDelay_26_state;
reg [3:0] UnitDelay_27_state;
reg [3:0] UnitDelay_28_state;
reg [3:0] UnitDelay_29_state;
reg [3:0] UnitDelay_30_state;
reg [3:0] UnitDelay_31_state;
wire LogicalOperator = UnitDelay_13_state ^ UnitDelay_14_state;
wire LogicalOperator_1 = UnitDelay_1_state ^ UnitDelay_14_1_state;
wire [2:0] _IdxAccum_T_2 =
{1'h0, LogicalOperator, 1'h0} + {2'h0, LogicalOperator_1} + 3'h1;
wire _tmp6_T = _IdxAccum_T_2 == 3'h2;
wire _constellation_selector_im_T = _IdxAccum_T_2 == 3'h1;
wire [3:0] _constellation_selector_re_new_T_1 =
_constellation_selector_im_T | ~(_tmp6_T | _IdxAccum_T_2 == 3'h3) ? 4'h6 : 4'hA;
wire [3:0] _constellation_selector_im_new_T_1 =
_constellation_selector_im_T | _tmp6_T ? 4'h6 : 4'hA;
wire [10:0] _Gain_1_new_T_1 =
{{7{_constellation_selector_re_new_T_1[3]}}, _constellation_selector_re_new_T_1}
* 11'h7FF;
wire [10:0] _Gain_1_1_new_T_1 =
{{7{_constellation_selector_im_new_T_1[3]}}, _constellation_selector_im_new_T_1}
* 11'h7FF;
wire [10:0] _Gain_3_new_T_1 =
{{7{UnitDelay_14_2_state[3]}}, UnitDelay_14_2_state} * 11'h7FE;
wire [10:0] _Gain_3_1_new_T_1 =
{{7{UnitDelay_15_state[3]}}, UnitDelay_15_state} * 11'h7FE;
wire [10:0] _Gain_5_new_T_1 =
{{7{UnitDelay_19_state[3]}}, UnitDelay_19_state} * 11'h7FE;
wire [10:0] _Gain_5_1_new_T_1 =
{{7{UnitDelay_18_state[3]}}, UnitDelay_18_state} * 11'h7FE;
wire [10:0] _Gain_6_new_T_1 = {{7{UnitDelay_21_state[3]}}, UnitDelay_21_state} * 11'h30;
wire [10:0] _Gain_6_1_new_T_1 =
{{7{UnitDelay_20_state[3]}}, UnitDelay_20_state} * 11'h30;
wire [10:0] _Gain_7_new_T_1 =
{{7{UnitDelay_22_state[3]}}, UnitDelay_22_state} * 11'h7FE;
wire [10:0] _Gain_7_1_new_T_1 =
{{7{UnitDelay_23_state[3]}}, UnitDelay_23_state} * 11'h7FE;
wire [10:0] _Gain_9_new_T_1 =
{{7{UnitDelay_27_state[3]}}, UnitDelay_27_state} * 11'h7FE;
wire [10:0] _Gain_9_1_new_T_1 =
{{7{UnitDelay_26_state[3]}}, UnitDelay_26_state} * 11'h7FE;
wire [10:0] _Gain_11_new_T_1 =
{{7{UnitDelay_30_state[3]}}, UnitDelay_30_state} * 11'h7FF;
wire [10:0] _Gain_11_1_new_T_1 =
{{7{UnitDelay_31_state[3]}}, UnitDelay_31_state} * 11'h7FF;
always @(posedge clock) begin
if (reset) begin
UnitDelay_1_state <= 1'h0;
UnitDelay_13_state <= 1'h0;
UnitDelay_state <= 1'h0;
UnitDelay_1_1_state <= 1'h0;
UnitDelay_2_state <= 1'h0;
UnitDelay_3_state <= 1'h0;
UnitDelay_4_state <= 1'h0;
UnitDelay_13_1_state <= 1'h1;
UnitDelay_14_state <= 1'h0;
UnitDelay_5_state <= 1'h0;
UnitDelay_6_state <= 1'h0;
UnitDelay_14_1_state <= 1'h1;
UnitDelay_7_state <= 1'h0;
UnitDelay_8_state <= 1'h0;
UnitDelay_9_state <= 1'h0;
UnitDelay_10_state <= 1'h1;
UnitDelay_11_state <= 1'h0;
UnitDelay_12_state <= 4'h0;
UnitDelay_13_2_state <= 4'h0;
UnitDelay_14_2_state <= 4'h0;
UnitDelay_15_state <= 4'h0;
UnitDelay_16_state <= 4'h0;
UnitDelay_17_state <= 4'h0;
UnitDelay_18_state <= 4'h0;
UnitDelay_19_state <= 4'h0;
UnitDelay_20_state <= 4'h0;
UnitDelay_21_state <= 4'h0;
UnitDelay_22_state <= 4'h0;
UnitDelay_23_state <= 4'h0;
UnitDelay_24_state <= 4'h0;
UnitDelay_25_state <= 4'h0;
UnitDelay_26_state <= 4'h0;
UnitDelay_27_state <= 4'h0;
UnitDelay_28_state <= 4'h0;
UnitDelay_29_state <= 4'h0;
UnitDelay_30_state <= 4'h0;
UnitDelay_31_state <= 4'h0;
end
else begin
UnitDelay_1_state <= UnitDelay_13_1_state;
UnitDelay_13_state <= UnitDelay_10_state;
UnitDelay_state <= UnitDelay_1_1_state;
UnitDelay_1_1_state <= UnitDelay_9_state;
UnitDelay_2_state <= UnitDelay_11_state;
UnitDelay_3_state <= UnitDelay_5_state;
UnitDelay_4_state <= UnitDelay_2_state;
UnitDelay_13_1_state <= UnitDelay_8_state;
UnitDelay_14_state <= UnitDelay_13_state;
UnitDelay_5_state <= UnitDelay_4_state;
UnitDelay_6_state <= UnitDelay_3_state;
UnitDelay_14_1_state <= UnitDelay_1_state;
UnitDelay_7_state <= UnitDelay_6_state;
UnitDelay_8_state <= LogicalOperator_1;
UnitDelay_9_state <= UnitDelay_7_state;
UnitDelay_10_state <= LogicalOperator;
UnitDelay_11_state <= 1'h1;
UnitDelay_12_state <= _constellation_selector_re_new_T_1;
UnitDelay_13_2_state <= _constellation_selector_im_new_T_1;
UnitDelay_14_2_state <= UnitDelay_12_state;
UnitDelay_15_state <= UnitDelay_13_2_state;
UnitDelay_16_state <= UnitDelay_15_state;
UnitDelay_17_state <= UnitDelay_14_2_state;
UnitDelay_18_state <= UnitDelay_16_state;
UnitDelay_19_state <= UnitDelay_17_state;
UnitDelay_20_state <= UnitDelay_18_state;
UnitDelay_21_state <= UnitDelay_19_state;
UnitDelay_22_state <= UnitDelay_21_state;
UnitDelay_23_state <= UnitDelay_20_state;
UnitDelay_24_state <= UnitDelay_23_state;
UnitDelay_25_state <= UnitDelay_22_state;
UnitDelay_26_state <= UnitDelay_24_state;
UnitDelay_27_state <= UnitDelay_25_state;
UnitDelay_28_state <= UnitDelay_26_state;
UnitDelay_29_state <= UnitDelay_27_state;
UnitDelay_30_state <= UnitDelay_29_state;
UnitDelay_31_state <= UnitDelay_28_state;
end
end // always @(posedge)
assign io_Out3 = UnitDelay_state;
assign io_Out1 =
_Gain_1_new_T_1[10:3] + {8{UnitDelay_12_state[3]}} + _Gain_3_new_T_1[10:3]
+ {{6{UnitDelay_17_state[3]}}, UnitDelay_17_state[3:2]} + _Gain_5_new_T_1[10:3]
+ _Gain_6_new_T_1[10:3] + _Gain_7_new_T_1[10:3]
+ {{6{UnitDelay_25_state[3]}}, UnitDelay_25_state[3:2]} + _Gain_9_new_T_1[10:3]
+ {8{UnitDelay_29_state[3]}} + _Gain_11_new_T_1[10:3];
assign io_Out2 =
_Gain_1_1_new_T_1[10:3] + {8{UnitDelay_13_2_state[3]}} + _Gain_3_1_new_T_1[10:3]
+ {{6{UnitDelay_16_state[3]}}, UnitDelay_16_state[3:2]} + _Gain_5_1_new_T_1[10:3]
+ _Gain_6_1_new_T_1[10:3] + _Gain_7_1_new_T_1[10:3]
+ {{6{UnitDelay_24_state[3]}}, UnitDelay_24_state[3:2]} + _Gain_9_1_new_T_1[10:3]
+ {8{UnitDelay_28_state[3]}} + _Gain_11_1_new_T_1[10:3];
endmodule
==================================================
Конец файла
Подход с применением атомарных подсистем демонстрирует модульный принцип построения проекта. Головной файл выступает в роли обёртки верхнего уровня, которая инстанцирует и соединяет между собой отдельные функциональные блоки: генератор данных, модулятор и фильтр. Каждый из этих блоков является самостоятельным модулем (Gen_data, QPSK_modulator, fir) со своими чёткими интерфейсами ввода-вывода. Такая структура не только отражает логическое разделение системы на компоненты, но и значительно улучшает читаемость, сопровождаемость и возможности повторного использования кода.
Содержимое файла /user/start/examples/codegen/qpsk_and_fir_verilog_v2/model_RX_atomic_code/model_RX_atomic.v:
==================================================
/* Code generated by Engee
* Model name: model.engee
* Code generator: release-1.1.22
* Date: Wed Sep 10 06:28:25 2025 GMT
*/
module model_RX_atomic(
input clock,
reset,
output [7:0] io_Out1,
io_Out2,
output io_Out3
);
wire [3:0] _QPSK_modulator_io_Out_Re;
wire [3:0] _QPSK_modulator_io_Out_Im;
wire _Gen_data_io_Out1;
wire _Gen_data_io_Out2;
Gen_data Gen_data (
.clock (clock),
.reset (reset),
.io_Out1 (_Gen_data_io_Out1),
.io_Out2 (_Gen_data_io_Out2)
);
QPSK_modulator QPSK_modulator (
.io_bit_1 (_Gen_data_io_Out1),
.io_bit_2 (_Gen_data_io_Out2),
.io_Out_Re (_QPSK_modulator_io_Out_Re),
.io_Out_Im (_QPSK_modulator_io_Out_Im)
);
fir fir (
.clock (clock),
.reset (reset),
.io_Re (_QPSK_modulator_io_Out_Re),
.io_Im (_QPSK_modulator_io_Out_Im),
.io_valid (io_Out3),
.io_re (io_Out1),
.io_im (io_Out2)
);
endmodule
==================================================
Конец файла
Из проведённого сравнения также следует, что написание тестового окружения (testbench) является более простой задачей именно для версии проекта без атомарных подсистем. Поскольку сгенерированный код в этом случае представляет собой единый модуль, его подключение и наблюдение за выходами не требует описания сложной иерархии. В данном примере вся логика системы содержится внутри одного блока, что позволяет напрямую отслеживать выходные сигналы.
Этим преимуществом мы и воспользуемся для проведения верификации. Так как функциональное поведение обеих версий проекта идентично, проверку корректности работы мы будем осуществлять именно на монолитной реализации.
Данный testbench выполняет две основные функции:
- Генерация тактового сигнала и сброса: создаётся периодический тактовый сигнал (clock) и управляющий сигнал сброса (reset) для инициализации устройства.
- Логирование выходных сигналов: все выходные данные устройства (io_Out3, io_Out1, io_Out2) записываются в текстовый файл "output.txt" на каждом положительном фронте тактового сигнала после снятия сигнала сброса.
Содержимое файла /user/start/examples/codegen/qpsk_and_fir_verilog_v2/tb.v:
==================================================
`timescale 1ns/1ps
module model_RX_tb;
reg clock;
reg reset;
wire io_Out3;
wire [7:0] io_Out1;
wire [7:0] io_Out2;
model_RX dut (
.clock(clock),
.reset(reset),
.io_Out3(io_Out3),
.io_Out1(io_Out1),
.io_Out2(io_Out2)
);
integer file;
always #5 clock = ~clock;
initial begin
clock = 0;
reset = 1;
file = $fopen("output.txt", "w");
#10 reset = 0;
#1000;
$fclose(file);
$finish;
end
always @(posedge clock) begin
if (!reset) begin
$fdisplay(file, "%0t %b %h %h", $time, io_Out3, io_Out1, io_Out2);
end
end
endmodule
==================================================
Конец файла
Теперь выполним запуск исходной модели и проведём тестирование сгенерированного кода. Это позволит нам верифицировать корректность работы генератора, сравнив поведение исходной системы в среде моделирования Engee с результатами, полученными при выполнении сгенерированного Verilog-кода в симуляторе.
Building...
Progress 0%
Progress 100%
Progress 100%
Out[0]:
Process(`vvp sim`, ProcessExited(0))
Для последующего анализа необходима функция парсинга текстового файла, сгенерированного тестбенчем. Реализованная функция parse_simulation_data
преобразует сырые логированные данные в формат, пригодный для анализа, сама функция возвращает три массива, готовых для анализа и построения графиков.
Алгоритм работы:
- Чтение данных: Функция считывает файл, разделяя строки по пробелам (временная метка, сигнал valid, шестнадцатеричные значения квадратурных компонентов)
- Преобразование форматов: Строки hex преобразуются в числа UInt8 через парсинг из шестнадцатеричного представления
- Нормализация: Ключевой этап - преобразование чисел через дополнительный код (twos complement) с последующей нормализацией на диапазон [-1.0, ~0.992] путем деления на 128
Теперь перейдём к сравнительному анализу. На представленных ниже графиках отображены: диаграмма созвездия, графики реальной и мнимой частей сигнала и диаграмма сигнала валидности.
Визуальный анализ этих графиков позволяет убедиться в полном соответствии работы сгенерированного кода поведению исходной модели. Форма сигналов, характер созвездия и временные параметры полностью идентичны, что подтверждает корректность функционирования автоматически сгенерированного Verilog-кода и его точную эквивалентность исходной математической модели.
Вывод
Проведённая работа наглядно демонстрирует эффективность использования автоматической генерации Verilog-кода из моделей Engee. Экспериментально подтверждена полная функциональная эквивалентность между исходной математической моделью системы и её аппаратной реализацией, полученной через кодогенерацию.
Сравнительный анализ двух подходов к структурированию проекта - монолитного и модульного с использованием атомарных подсистем - показал их принципиальные различия в организации кода при сохранении идентичного поведения. Модульный подход обеспечивает лучшую читаемость, сопровождаемость и возможности повторного использования кода, в то время как монолитная реализация упрощает создание тестового окружения.
Верификация результатов через сравнение временных диаграмм и диаграмм созвездия подтвердила точное соответствие всех выходных сигналов, что свидетельствует о корректной работе инструмента кодогенерации и возможности его практического применения для проектирования цифровых систем.
{"id": "9213905f_2ccc_465d_9a5c_b0f0e5349e99", "data": [{"xaxis": "x", "colorbar": {"y": 0.5086805555555556, "title": {"text": ""}, "len": 0.8657316272965878, "x": 0.4950787401574803}, "yaxis": "y", "x": [0.2421875, -0.3125, -0.328125, -0.296875, -0.34375, 0.2578125, -0.34375, 0.265625, 0.203125, 0.2421875, 0.2421875, 0.1953125, 0.265625, -0.359375, 0.265625, -0.34375, 0.265625, 0.2109375, -0.2890625, -0.3046875, -0.3203125, -0.296875, -0.3203125, -0.296875, -0.296875, 0.234375, 0.25, -0.328125, -0.265625, -0.3671875, 0.296875, -0.3828125, 0.3125, -0.390625, 0.3046875, -0.3828125, 0.3046875, 0.1640625, 0.2890625, -0.3515625, 0.2578125, -0.34375, -0.28125, 0.2109375, 0.2265625, -0.3046875, -0.3125, 0.2265625, 0.234375, 0.2421875, 0.21875, -0.2890625, -0.328125, 0.25, -0.34375, -0.2578125, -0.34375, 0.2734375, -0.3359375, -0.265625, -0.34375, -0.2734375, -0.3203125, 0.234375, -0.296875, -0.3125, 0.234375, -0.3046875, 0.2265625, 0.25, -0.3359375, 0.2734375, -0.3515625, 0.265625, -0.3359375, -0.2890625, 0.2109375, -0.3046875, -0.3046875, 0.234375, 0.2265625, 0.2421875, -0.328125, -0.2890625, 0.203125, 0.234375, -0.3046875, 0.21875, 0.2265625, -0.3125, 0.2265625], "showlegend": true, "mode": "markers", "name": "y1", "legendgroup": "y1", "marker": {"symbol": "circle", "color": "rgba(0, 0, 255, 0.600)", "line": {"color": "rgba(0, 0, 0, 0.6)", "width": 0}, "size": 4}, "y": [0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625], "type": "scatter"}, {"xaxis": "x2", "colorbar": {"y": 0.5086805555555556, "title": {"text": ""}, "len": 0.8657316272965878, "x": 0.9950787401574803}, "yaxis": "y2", "x": [0.2421875, -0.3125, -0.328125, -0.296875, -0.34375, 0.2578125, -0.34375, 0.265625, 0.203125, 0.2421875, 0.2421875, 0.1953125, 0.265625, -0.359375, 0.265625, -0.34375, 0.265625, 0.2109375, -0.2890625, -0.3046875, -0.3203125, -0.296875, -0.3203125, -0.296875, -0.296875, 0.234375, 0.25, -0.328125, -0.265625, -0.3671875, 0.296875, -0.3828125, 0.3125, -0.390625, 0.3046875, -0.3828125, 0.3046875, 0.1640625, 0.2890625, -0.3515625, 0.2578125, -0.34375, -0.28125, 0.2109375, 0.2265625, -0.3046875, -0.3125, 0.2265625, 0.234375, 0.2421875, 0.21875, -0.2890625, -0.328125, 0.25, -0.34375, -0.2578125, -0.34375, 0.2734375, -0.3359375, -0.265625, -0.34375, -0.2734375, -0.3203125, 0.234375, -0.296875, -0.3125, 0.234375, -0.3046875, 0.2265625, 0.25, -0.3359375, 0.2734375, -0.3515625, 0.265625, -0.3359375, -0.2890625, 0.2109375, -0.3046875, -0.3046875, 0.234375, 0.2265625, 0.2421875, -0.328125, -0.2890625, 0.203125, 0.234375, -0.3046875, 0.21875, 0.2265625, -0.3125], "showlegend": true, "mode": "markers", "name": "y1", "legendgroup": "y1", "marker": {"symbol": "circle", "color": "rgba(255, 0, 0, 0.600)", "line": {"color": "rgba(0, 0, 0, 0.6)", "width": 0}, "size": 4}, "y": [0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125, 0.2265625, 0.2578125, -0.328125, 0.265625, -0.3515625, -0.28125, -0.3203125], "type": "scatter"}], "config": {"showlegend": false, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "height": 400, "yaxis2": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [-0.4, -0.2, 0, 0.2], "range": [-0.4210844824851479, 0.3351469824851479], "domain": [0.07581474190726169, 0.9415463692038495], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["-0.4", "-0.2", "0.0", "0.2"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "x2", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "Quadrature Component (Q)", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "xaxis2": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [-0.4, -0.2, 0, 0.2], "range": [-0.41171875, 0.33359375], "domain": [0.5684629265091863, 0.9950787401574803], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["-0.4", "-0.2", "0.0", "0.2"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "y2", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "In-phase Component (I)", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "annotations": [{"yanchor": "top", "xanchor": "center", "rotation": 0, "y": 1, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "paper", "showarrow": false, "text": "Созвездие модели", "xref": "paper", "x": 0.2817708333333333}, {"yanchor": "top", "xanchor": "center", "rotation": 0, "y": 1, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "paper", "showarrow": false, "text": "Созвездие Verilog", "xref": "paper", "x": 0.7817708333333333}], "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "width": 819.1875, "xaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [-0.4, -0.2, 0, 0.2], "range": [-0.41171875, 0.33359375], "domain": [0.06846292650918635, 0.4950787401574803], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["-0.4", "-0.2", "0.0", "0.2"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "y", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "In-phase Component (I)", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "yaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [-0.4, -0.2, 0, 0.2], "range": [-0.4210844824851479, 0.3351469824851479], "domain": [0.07581474190726169, 0.9415463692038495], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["-0.4", "-0.2", "0.0", "0.2"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "x", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "Quadrature Component (Q)", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}}}
{"id": "984eb24f_c94d_486e_ab1e_2ebe13eb0776", "data": [{"xaxis": "x", "colorbar": {"y": 0.513888888888889, "title": {"text": ""}, "len": 0.9525371828521435, "x": 0.9934383202099738}, "yaxis": "y", "x": [1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101], "showlegend": true, "mode": "lines", "name": "Re_sim", "legendgroup": "Re_sim", "line": {"color": "rgba(0, 154, 250, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 0, -0.015625, -0.015625, 0, 0, -0.0390625, -0.0390625, -0.0078125, -0.0078125, -0.3125, -0.3125, 0.265625, 0.265625, 0.21875, 0.21875, 0.2734375, 0.2734375, 0.21875, 0.21875, 0.2421875, 0.2421875, -0.3125, -0.3125, -0.328125, -0.328125, -0.296875, -0.296875, -0.34375, -0.34375, 0.2578125, 0.2578125, -0.34375, -0.34375, 0.265625, 0.265625, 0.203125, 0.203125, 0.2421875, 0.2421875, 0.2421875, 0.2421875, 0.1953125, 0.1953125, 0.265625, 0.265625, -0.359375, -0.359375, 0.265625, 0.265625, -0.34375, -0.34375, 0.265625, 0.265625, 0.2109375, 0.2109375, -0.2890625, -0.2890625, -0.3046875, -0.3046875, -0.3203125, -0.3203125, -0.296875, -0.296875, -0.3203125, -0.3203125, -0.296875, -0.296875, -0.296875, -0.296875, 0.234375, 0.234375, 0.25, 0.25, -0.328125, -0.328125, -0.265625, -0.265625, -0.3671875, -0.3671875, 0.296875, 0.296875, -0.3828125, -0.3828125, 0.3125, 0.3125, -0.390625, -0.390625, 0.3046875, 0.3046875, -0.3828125, -0.3828125, 0.3046875, 0.3046875, 0.1640625, 0.1640625, 0.2890625, 0.2890625, -0.3515625, -0.3515625, 0.2578125, 0.2578125, -0.34375, -0.34375, -0.28125, -0.28125, 0.2109375, 0.2109375, 0.2265625, 0.2265625, -0.3046875, -0.3046875, -0.3125, -0.3125, 0.2265625, 0.2265625, 0.234375, 0.234375, 0.2421875, 0.2421875, 0.21875, 0.21875, -0.2890625, -0.2890625, -0.328125, -0.328125, 0.25, 0.25, -0.34375, -0.34375, -0.2578125, -0.2578125, -0.34375, -0.34375, 0.2734375, 0.2734375, -0.3359375, -0.3359375, -0.265625, -0.265625, -0.34375, -0.34375, -0.2734375, -0.2734375, -0.3203125, -0.3203125, 0.234375, 0.234375, -0.296875, -0.296875, -0.3125, -0.3125, 0.234375, 0.234375, -0.3046875, -0.3046875, 0.2265625, 0.2265625, 0.25, 0.25, -0.3359375, -0.3359375, 0.2734375, 0.2734375, -0.3515625, -0.3515625, 0.265625, 0.265625, -0.3359375, -0.3359375, -0.2890625, -0.2890625, 0.2109375, 0.2109375, -0.3046875, -0.3046875, -0.3046875, -0.3046875, 0.234375, 0.234375, 0.2265625, 0.2265625, 0.2421875, 0.2421875, -0.328125, -0.328125, -0.2890625, -0.2890625, 0.203125, 0.203125, 0.234375, 0.234375, -0.3046875, -0.3046875, 0.21875, 0.21875, 0.2265625, 0.2265625, -0.3125, -0.3125, 0.2265625], "type": "scatter"}, {"xaxis": "x", "colorbar": {"y": 0.513888888888889, "title": {"text": ""}, "len": 0.9525371828521435, "x": 0.9934383202099738}, "yaxis": "y", "x": [1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100], "showlegend": true, "mode": "lines", "name": "Rm", "legendgroup": "Rm", "line": {"color": "rgba(227, 111, 71, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 0, -0.015625, -0.015625, 0, 0, -0.0390625, -0.0390625, -0.0078125, -0.0078125, -0.3125, -0.3125, 0.265625, 0.265625, 0.21875, 0.21875, 0.2734375, 0.2734375, 0.21875, 0.21875, 0.2421875, 0.2421875, -0.3125, -0.3125, -0.328125, -0.328125, -0.296875, -0.296875, -0.34375, -0.34375, 0.2578125, 0.2578125, -0.34375, -0.34375, 0.265625, 0.265625, 0.203125, 0.203125, 0.2421875, 0.2421875, 0.2421875, 0.2421875, 0.1953125, 0.1953125, 0.265625, 0.265625, -0.359375, -0.359375, 0.265625, 0.265625, -0.34375, -0.34375, 0.265625, 0.265625, 0.2109375, 0.2109375, -0.2890625, -0.2890625, -0.3046875, -0.3046875, -0.3203125, -0.3203125, -0.296875, -0.296875, -0.3203125, -0.3203125, -0.296875, -0.296875, -0.296875, -0.296875, 0.234375, 0.234375, 0.25, 0.25, -0.328125, -0.328125, -0.265625, -0.265625, -0.3671875, -0.3671875, 0.296875, 0.296875, -0.3828125, -0.3828125, 0.3125, 0.3125, -0.390625, -0.390625, 0.3046875, 0.3046875, -0.3828125, -0.3828125, 0.3046875, 0.3046875, 0.1640625, 0.1640625, 0.2890625, 0.2890625, -0.3515625, -0.3515625, 0.2578125, 0.2578125, -0.34375, -0.34375, -0.28125, -0.28125, 0.2109375, 0.2109375, 0.2265625, 0.2265625, -0.3046875, -0.3046875, -0.3125, -0.3125, 0.2265625, 0.2265625, 0.234375, 0.234375, 0.2421875, 0.2421875, 0.21875, 0.21875, -0.2890625, -0.2890625, -0.328125, -0.328125, 0.25, 0.25, -0.34375, -0.34375, -0.2578125, -0.2578125, -0.34375, -0.34375, 0.2734375, 0.2734375, -0.3359375, -0.3359375, -0.265625, -0.265625, -0.34375, -0.34375, -0.2734375, -0.2734375, -0.3203125, -0.3203125, 0.234375, 0.234375, -0.296875, -0.296875, -0.3125, -0.3125, 0.234375, 0.234375, -0.3046875, -0.3046875, 0.2265625, 0.2265625, 0.25, 0.25, -0.3359375, -0.3359375, 0.2734375, 0.2734375, -0.3515625, -0.3515625, 0.265625, 0.265625, -0.3359375, -0.3359375, -0.2890625, -0.2890625, 0.2109375, 0.2109375, -0.3046875, -0.3046875, -0.3046875, -0.3046875, 0.234375, 0.234375, 0.2265625, 0.2265625, 0.2421875, 0.2421875, -0.328125, -0.328125, -0.2890625, -0.2890625, 0.203125, 0.203125, 0.234375, 0.234375, -0.3046875, -0.3046875, 0.21875, 0.21875, 0.2265625, 0.2265625, -0.3125], "type": "scatter"}], "config": {"showlegend": true, "xaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [0, 25, 50, 75, 100], "range": [-2, 104], "domain": [0.0658209390492855, 0.9934383202099738], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["0", "25", "50", "75", "100"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "y", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [], "height": 400, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [-0.4, -0.2, 0, 0.2], "range": [-0.41171875, 0.33359375], "domain": [0.03762029746281716, 0.9901574803149606], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["-0.4", "-0.2", "0.0", "0.2"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "x", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "legend": {"yanchor": "auto", "xanchor": "auto", "bordercolor": "rgba(0, 0, 0, 1)", "bgcolor": "rgba(255, 255, 255, 1.000)", "borderwidth": 1, "tracegroupgap": 0, "y": 1, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "title": {"font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}, "text": ""}, "traceorder": "normal", "x": 1}, "width": 819.1875}}
{"id": "ce901527_871c_4177_8074_ce5f82ceee15", "data": [{"xaxis": "x", "colorbar": {"y": 0.513888888888889, "title": {"text": ""}, "len": 0.9525371828521435, "x": 0.9934383202099738}, "yaxis": "y", "x": [1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101], "showlegend": true, "mode": "lines", "name": "Im_sim", "legendgroup": "Im_sim", "line": {"color": "rgba(0, 154, 250, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [-0.0078125, -0.0078125, 0, 0, -0.0234375, -0.0234375, 0.0078125, 0.0078125, -0.0390625, -0.0390625, 0.2734375, 0.2734375, -0.3203125, -0.3203125, -0.28125, -0.28125, -0.3046875, -0.3046875, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625], "type": "scatter"}, {"xaxis": "x", "colorbar": {"y": 0.513888888888889, "title": {"text": ""}, "len": 0.9525371828521435, "x": 0.9934383202099738}, "yaxis": "y", "x": [1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100], "showlegend": true, "mode": "lines", "name": "Im", "legendgroup": "Im", "line": {"color": "rgba(227, 111, 71, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [-0.0078125, -0.0078125, 0, 0, -0.0234375, -0.0234375, 0.0078125, 0.0078125, -0.0390625, -0.0390625, 0.2734375, 0.2734375, -0.3203125, -0.3203125, -0.28125, -0.28125, -0.3046875, -0.3046875, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125, -0.3203125, 0.2265625, 0.2265625, 0.2578125, 0.2578125, -0.328125, -0.328125, 0.265625, 0.265625, -0.3515625, -0.3515625, -0.28125, -0.28125, -0.3203125], "type": "scatter"}], "config": {"showlegend": true, "xaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [0, 25, 50, 75, 100], "range": [-2, 104], "domain": [0.0658209390492855, 0.9934383202099738], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["0", "25", "50", "75", "100"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "y", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [], "height": 400, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [-0.30000000000000004, -0.2, -0.1, 0, 0.1, 0.2], "range": [-0.37031250000000004, 0.29218750000000004], "domain": [0.03762029746281716, 0.9901574803149606], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["-0.3", "-0.2", "-0.1", "0.0", "0.1", "0.2"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "x", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "legend": {"yanchor": "auto", "xanchor": "auto", "bordercolor": "rgba(0, 0, 0, 1)", "bgcolor": "rgba(255, 255, 255, 1.000)", "borderwidth": 1, "tracegroupgap": 0, "y": 1, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "title": {"font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}, "text": ""}, "traceorder": "normal", "x": 1}, "width": 819.1875}}
{"id": "29d078f9_e0de_4c4c_b5c7_9ffabe557243", "data": [{"xaxis": "x", "colorbar": {"y": 0.513888888888889, "title": {"text": ""}, "len": 0.9525371828521435, "x": 0.9934383202099738}, "yaxis": "y", "x": [1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101], "showlegend": true, "mode": "lines", "name": "Valid_sim", "legendgroup": "Valid_sim", "line": {"color": "rgba(0, 154, 250, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "type": "scatter"}, {"xaxis": "x", "colorbar": {"y": 0.513888888888889, "title": {"text": ""}, "len": 0.9525371828521435, "x": 0.9934383202099738}, "yaxis": "y", "x": [1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100], "showlegend": true, "mode": "lines", "name": "Valid", "legendgroup": "Valid", "line": {"color": "rgba(227, 111, 71, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "type": "scatter"}], "config": {"showlegend": true, "xaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [0, 25, 50, 75, 100], "range": [-2, 104], "domain": [0.0658209390492855, 0.9934383202099738], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["0", "25", "50", "75", "100"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "y", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [], "height": 400, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [0, 0.25, 0.5, 0.75, 1], "range": [-0.030000000000000027, 1.03], "domain": [0.03762029746281716, 0.9901574803149606], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["0.00", "0.25", "0.50", "0.75", "1.00"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "x", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "legend": {"yanchor": "auto", "xanchor": "auto", "bordercolor": "rgba(0, 0, 0, 1)", "bgcolor": "rgba(255, 255, 255, 1.000)", "borderwidth": 1, "tracegroupgap": 0, "y": 1, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "title": {"font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}, "text": ""}, "traceorder": "normal", "x": 1}, "width": 819.1875}}