diff --git a/.gitignore b/.gitignore index 823a81765..d63a128c6 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,13 @@ Temporary Items !/.gitignore !/README.md + +# Claude Code +.claude/ +CLAUDE.md + +# Graphify output +graphify-out/ + +# Personal Files +personal_files/ \ No newline at end of file diff --git a/.graphifyignore b/.graphifyignore new file mode 100644 index 000000000..8d4070920 --- /dev/null +++ b/.graphifyignore @@ -0,0 +1,10 @@ +# Vivado build artifacts - regenerated on every synthesis run +**/top.cache/ +**/top.gen/ +**/top.runs/ +**/top.sim/ +**/top.hw/ +**/top.ip_user_files/ +**/.Xil/ +**/*.jou +**/*.log diff --git a/firmware/ip/adaptive_sweep/component.xml b/firmware/ip/adaptive_sweep/component.xml new file mode 100644 index 000000000..22de082ca --- /dev/null +++ b/firmware/ip/adaptive_sweep/component.xml @@ -0,0 +1,752 @@ + + + emrhnozdemir + QICK + adaptive_sweep + 1.0 + + + rst_n + + + + + + + RST + + + rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + clk + + + + + + + CLK + + + clk + + + + + + qick_peripheral + + + + + + + b_dt + + + qtag_dt2_i + + + + + c_dt + + + qtag_dt3_i + + + + + a_dt + + + qtag_dt1_i + + + + + d_dt + + + qtag_dt4_i + + + + + rdy + + + qtag_rdy_o + + + + + Enable + + + qtag_en_i + + + + + dt_in_2 + + + qtag_dt2_o + + + + + Operation + + + qtag_op_i + + + + + dt_in_1 + + + qtag_dt1_o + + + + + dt_valid + + + qtag_vld_o + + + + + + NUM_READ_OUTSTANDING + + + + NUM_WRITE_OUTSTANDING + + + + + + s_ro_axis_aresetn + + + + + + + RST + + + s_ro_axis_aresetn + + + + + + POLARITY + ACTIVE_LOW + + + + + s_ro_axis_aclk + + + + + + + CLK + + + s_ro_axis_aclk + + + + + + ASSOCIATED_RESET + s_ro_axis_aresetn + + + + + + + + xilinx_anylanguagesynthesis + Synthesis + :vivado.xilinx.com:synthesis + Verilog + adaptive_sweep + + xilinx_anylanguagesynthesis_view_fileset + + + + viewChecksum + 7ed7359d + + + + + xilinx_anylanguagebehavioralsimulation + Simulation + :vivado.xilinx.com:simulation + Verilog + adaptive_sweep + + xilinx_anylanguagebehavioralsimulation_view_fileset + + + + viewChecksum + 7ed7359d + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 2db471fc + + + + + xilinx_testbench + Test Bench + :vivado.xilinx.com:simulation.testbench + tb_polyak_avg + + xilinx_testbench_view_fileset + + + + viewChecksum + c81c3e81 + + + + + + + clk + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + rst_n + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_en_i + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_op_i + + in + + 4 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt1_i + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt2_i + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt3_i + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt4_i + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_rdy_o + + out + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt1_o + + out + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt2_o + + out + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_vld_o + + out + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + s_ro_axis_aclk + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + s_ro_axis_aresetn + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + s_ro_axis_tdata + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + s_ro_axis_tvalid + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + s_ro_axis_tready + + out + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + trigger_i + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + + LUT_DEPTH + Lut Depth + 256 + + + LUT_AW + Lut Aw + 8 + + + X_WIDTH + X Width + 32 + + + IQ_WIDTH + Iq Width + 16 + + + SUM_WIDTH + Sum Width + 48 + + + POW_WIDTH + Pow Width + 32 + + + COUNT_WIDTH + Count Width + 16 + + + RO_FIFO_DEPTH_LOG2 + Ro Fifo Depth Log2 + 6 + + + KW_TOL + Kw Tol + 0x000007D0 + + + + + + choice_list_74b5137e + ACTIVE_HIGH + ACTIVE_LOW + + + choice_list_9d8b0d81 + ACTIVE_HIGH + ACTIVE_LOW + + + + + xilinx_anylanguagesynthesis_view_fileset + + src/adaptive_sweep_control.v + verilogSource + + + src/bisect_control.v + verilogSource + + + src/iq_power.v + verilogSource + + + src/kw_steps.v + verilogSource + + + src/polyak_averager.v + verilogSource + + + src/readout_capture.v + verilogSource + + + src/adaptive_sweep.v + verilogSource + CHECKSUM_019d365f + + + + xilinx_anylanguagebehavioralsimulation_view_fileset + + src/adaptive_sweep_control.v + verilogSource + + + src/bisect_control.v + verilogSource + + + src/iq_power.v + verilogSource + + + src/kw_steps.v + verilogSource + + + src/polyak_averager.v + verilogSource + + + src/readout_capture.v + verilogSource + + + src/adaptive_sweep.v + verilogSource + + + + xilinx_xpgui_view_fileset + + xgui/adaptive_sweep_v1_0.tcl + tclSource + CHECKSUM_2db471fc + XGUI_VERSION_2 + + + + xilinx_testbench_view_fileset + + src/tb/tb_polyak_avg.sv + systemVerilogSource + USED_IN_implementation + USED_IN_simulation + USED_IN_synthesis + + + + adaptive_sweep_v1_0 + + + Component_Name + adaptive_sweep_v1_0 + + + LUT_DEPTH + Lut Depth + 256 + + + LUT_AW + Lut Aw + 8 + + + X_WIDTH + X Width + 32 + + + IQ_WIDTH + Iq Width + 16 + + + SUM_WIDTH + Sum Width + 48 + + + POW_WIDTH + Pow Width + 32 + + + COUNT_WIDTH + Count Width + 16 + + + RO_FIFO_DEPTH_LOG2 + Ro Fifo Depth Log2 + 6 + + + KW_TOL + Kw Tol + 0x000007D0 + + + + + + artix7 + artix7l + aartix7 + qartix7 + zynq + qzynq + azynq + zynquplus + + + /UserIP + + adaptive_sweep_v1_0 + package_project + + XPM_FIFO + + 9 + + xilinx.com:user:adaptive_sweep:1.0 + + 2026-05-06T14:33:10Z + + + 2023.1 + + + + + + + + diff --git a/firmware/ip/adaptive_sweep/src/adaptive_sweep.v b/firmware/ip/adaptive_sweep/src/adaptive_sweep.v new file mode 100644 index 000000000..28b9d290e --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/adaptive_sweep.v @@ -0,0 +1,342 @@ +`timescale 1ns / 1ps +// +// adaptive_sweep.v -- top wrapper for the adaptive_sweep IP. +// +// Replaces the placeholder 4-entry frequency LUT with the real RTL +// implementation of Section 9 of resonator_sweep.ipynb (KW + Polyak +// averaging + 3 dB bisection). +// +// Hierarchy: +// adaptive_sweep +// adaptive_sweep_control (QP2 opcode FSM, c_clk) +// readout_capture (ro_clk -> c_clk CDC FIFO + trigger) +// polyak_averager (I) (chunked Polyak average of I) +// polyak_averager (Q) (chunked Polyak average of Q) +// iq_power (I_avg^2 + Q_avg^2) +// kw_steps (LUT-driven KW step + clamp) +// bisect_control (3 dB edge bisection FSM) +// +// Ports: +// QP2 slave : qtag_* (unchanged from placeholder) +// AXIS slave : s_ro_axis_* (snoop on m1_axis of axis_dyn_readout_v1) +// trigger_i : 1-bit, ro_clk async +// + +module adaptive_sweep #( + parameter integer LUT_DEPTH = 256, + parameter integer LUT_AW = 8, + parameter integer X_WIDTH = 32, + parameter integer IQ_WIDTH = 16, + parameter integer SUM_WIDTH = 48, + parameter integer POW_WIDTH = 32, + parameter integer COUNT_WIDTH = 16, + parameter integer RO_FIFO_DEPTH_LOG2 = 6, + parameter [X_WIDTH-1:0] KW_TOL = 32'h0000_07D0 +)( + input wire clk, // c_clk + input wire rst_n, + + // ---- QP2 (tProc-side) ---- + input wire qtag_en_i, + input wire [4:0] qtag_op_i, + input wire [31:0] qtag_dt1_i, + input wire [31:0] qtag_dt2_i, + input wire [31:0] qtag_dt3_i, + input wire [31:0] qtag_dt4_i, + output wire qtag_rdy_o, + output wire [31:0] qtag_dt1_o, + output wire [31:0] qtag_dt2_o, + output wire qtag_vld_o, + + // ---- Readout snoop (m1_axis of axis_dyn_readout_v1) ---- + input wire s_ro_axis_aclk, // ro_clk + input wire s_ro_axis_aresetn, + input wire [2*IQ_WIDTH-1:0] s_ro_axis_tdata, // {Q[15:0],I[15:0]} + input wire s_ro_axis_tvalid, + output wire s_ro_axis_tready, + + // ---- External trigger (ro_clk async, sourced from tProc trig_0_o) ---- + input wire trigger_i +); + + // ------------------------------------------------------------- + // Inter-module wires + // ------------------------------------------------------------- + // adaptive_sweep_control <-> polyak_averagers + wire pa_soft_reset; + wire [31:0] pa_reciprocal; + wire [3:0] pa_chunk_log2; + wire signed [X_WIDTH-1:0] pa_i_xbar; + wire signed [X_WIDTH-1:0] pa_q_xbar; + + // adaptive_sweep_control <-> iq_power + wire pwr_compute_pulse; + wire signed [IQ_WIDTH-1:0] pwr_i_in; + wire signed [IQ_WIDTH-1:0] pwr_q_in; + wire [POW_WIDTH-1:0] pwr_value; + wire pwr_valid; + + // adaptive_sweep_control <-> kw_steps + wire kw_lut_we; + wire [LUT_AW-1:0] kw_lut_addr; + wire signed [X_WIDTH-1:0] kw_lut_din; + wire kw_step_trigger; + wire signed [X_WIDTH-1:0] kw_dp_signed; + wire [LUT_AW-1:0] kw_k_idx; + wire signed [X_WIDTH-1:0] kw_x_in; + wire signed [X_WIDTH-1:0] kw_x_min; + wire signed [X_WIDTH-1:0] kw_x_max; + wire signed [X_WIDTH-1:0] kw_x_out; + wire kw_conv_flag; + wire kw_valid; + + // adaptive_sweep_control <-> bisect_control + wire bs_init; + wire [X_WIDTH-1:0] bs_lo_init; + wire [X_WIDTH-1:0] bs_hi_init; + wire bs_side_left; + wire bs_polarity_peak; + wire [X_WIDTH-1:0] bs_tol_in; + wire bs_step; + wire [X_WIDTH-1:0] bs_pow_mid; + wire [X_WIDTH-1:0] bs_pow_thr; + wire [X_WIDTH-1:0] bs_mid_next; + wire [X_WIDTH-1:0] bs_lo_o; + wire [X_WIDTH-1:0] bs_hi_o; + wire bs_converged; + wire bs_valid; + + // adaptive_sweep_control <-> readout_capture + wire rc_arm_pulse; + wire [COUNT_WIDTH-1:0] rc_n_samples; + wire rc_capture_done; + wire [COUNT_WIDTH-1:0] rc_samples_remaining; + wire signed [IQ_WIDTH-1:0] rc_i_out; + wire signed [IQ_WIDTH-1:0] rc_q_out; + wire rc_iq_valid; + wire rc_iq_ready; + + // x state visibility (currently unused outside ctrl, but routed for future) + wire signed [X_WIDTH-1:0] x_current; + wire signed [X_WIDTH-1:0] x_min; + wire signed [X_WIDTH-1:0] x_max; + wire [LUT_AW-1:0] iter_k; + + // The polyak averagers always consume samples as soon as readout_capture + // presents them. iq_ready is therefore tied high. + assign rc_iq_ready = 1'b1; + + // ------------------------------------------------------------- + // adaptive_sweep_control + // ------------------------------------------------------------- + adaptive_sweep_control #( + .X_WIDTH (X_WIDTH), + .IQ_WIDTH (IQ_WIDTH), + .POW_WIDTH (POW_WIDTH), + .COUNT_WIDTH(COUNT_WIDTH), + .LUT_AW (LUT_AW) + ) u_ctrl ( + .clk (clk), + .rst_n (rst_n), + + .qtag_en_i (qtag_en_i), + .qtag_op_i (qtag_op_i), + .qtag_dt1_i (qtag_dt1_i), + .qtag_dt2_i (qtag_dt2_i), + .qtag_dt3_i (qtag_dt3_i), + .qtag_dt4_i (qtag_dt4_i), + .qtag_rdy_o (qtag_rdy_o), + .qtag_dt1_o (qtag_dt1_o), + .qtag_dt2_o (qtag_dt2_o), + .qtag_vld_o (qtag_vld_o), + + .pa_soft_reset (pa_soft_reset), + .pa_reciprocal (pa_reciprocal), + .pa_chunk_log2 (pa_chunk_log2), + .pa_i_xbar (pa_i_xbar), + .pa_q_xbar (pa_q_xbar), + + .pwr_compute_pulse (pwr_compute_pulse), + .pwr_i_in (pwr_i_in), + .pwr_q_in (pwr_q_in), + .pwr_value (pwr_value), + .pwr_valid (pwr_valid), + + .kw_lut_we (kw_lut_we), + .kw_lut_addr (kw_lut_addr), + .kw_lut_din (kw_lut_din), + .kw_step_trigger (kw_step_trigger), + .kw_dp_signed (kw_dp_signed), + .kw_k_idx (kw_k_idx), + .kw_x_in (kw_x_in), + .kw_x_min (kw_x_min), + .kw_x_max (kw_x_max), + .kw_x_out (kw_x_out), + .kw_conv_flag (kw_conv_flag), + .kw_valid (kw_valid), + + .bs_init (bs_init), + .bs_lo_init (bs_lo_init), + .bs_hi_init (bs_hi_init), + .bs_side_left (bs_side_left), + .bs_polarity_peak (bs_polarity_peak), + .bs_tol_in (bs_tol_in), + .bs_step (bs_step), + .bs_pow_mid (bs_pow_mid), + .bs_pow_thr (bs_pow_thr), + .bs_mid_next (bs_mid_next), + .bs_lo_o (bs_lo_o), + .bs_hi_o (bs_hi_o), + .bs_converged (bs_converged), + .bs_valid (bs_valid), + + .rc_arm_pulse (rc_arm_pulse), + .rc_n_samples (rc_n_samples), + .rc_capture_done (rc_capture_done), + .rc_samples_remaining (rc_samples_remaining), + + .x_current_o (x_current), + .x_min_o (x_min), + .x_max_o (x_max), + .iter_k_o (iter_k) + ); + + // ------------------------------------------------------------- + // readout_capture (ro_clk -> c_clk CDC, trigger gate) + // ------------------------------------------------------------- + readout_capture #( + .IQ_WIDTH (IQ_WIDTH), + .FIFO_DEPTH_LOG2(RO_FIFO_DEPTH_LOG2), + .COUNT_WIDTH (COUNT_WIDTH) + ) u_rc ( + .clk (clk), + .rst_n (rst_n), + .arm_pulse (rc_arm_pulse), + .n_samples (rc_n_samples), + .capture_done_o (rc_capture_done), + .i_out (rc_i_out), + .q_out (rc_q_out), + .iq_valid (rc_iq_valid), + .iq_ready (rc_iq_ready), + .samples_remaining (rc_samples_remaining), + + .s_ro_axis_aclk (s_ro_axis_aclk), + .s_ro_axis_aresetn (s_ro_axis_aresetn), + .s_ro_axis_tdata (s_ro_axis_tdata), + .s_ro_axis_tvalid (s_ro_axis_tvalid), + .s_ro_axis_tready (s_ro_axis_tready), + .trigger_i (trigger_i) + ); + + // ------------------------------------------------------------- + // polyak_averager (I) + // ------------------------------------------------------------- + polyak_averager #( + .SAMPLE_WIDTH(IQ_WIDTH), + .SUM_WIDTH (SUM_WIDTH), + .AVG_WIDTH (X_WIDTH), + .RECIP_WIDTH (32), + .COUNT_WIDTH (COUNT_WIDTH) + ) u_pa_i ( + .clk (clk), + .rst_n (rst_n), + .sample_in (rc_i_out), + .sample_valid (rc_iq_valid), + .reciprocal_in (pa_reciprocal), + .chunk_size_log2 (pa_chunk_log2), + .soft_reset (pa_soft_reset), + .xbar_o (pa_i_xbar), + .xbar_delta_o (), + .count_o (), + .valid_o () + ); + + // ------------------------------------------------------------- + // polyak_averager (Q) + // ------------------------------------------------------------- + polyak_averager #( + .SAMPLE_WIDTH(IQ_WIDTH), + .SUM_WIDTH (SUM_WIDTH), + .AVG_WIDTH (X_WIDTH), + .RECIP_WIDTH (32), + .COUNT_WIDTH (COUNT_WIDTH) + ) u_pa_q ( + .clk (clk), + .rst_n (rst_n), + .sample_in (rc_q_out), + .sample_valid (rc_iq_valid), + .reciprocal_in (pa_reciprocal), + .chunk_size_log2 (pa_chunk_log2), + .soft_reset (pa_soft_reset), + .xbar_o (pa_q_xbar), + .xbar_delta_o (), + .count_o (), + .valid_o () + ); + + // ------------------------------------------------------------- + // iq_power : I_avg^2 + Q_avg^2 (one-shot, fired by control) + // ------------------------------------------------------------- + iq_power #( + .IQ_WIDTH (IQ_WIDTH), + .POW_WIDTH(POW_WIDTH) + ) u_iqp ( + .clk (clk), + .rst_n (rst_n), + .i_in (pwr_i_in), + .q_in (pwr_q_in), + .valid_in(pwr_compute_pulse), + .power_o (pwr_value), + .valid_o (pwr_valid) + ); + + // ------------------------------------------------------------- + // kw_steps : LUT-driven KW step + clamp + // ------------------------------------------------------------- + kw_steps #( + .X_WIDTH (X_WIDTH), + .LUT_DEPTH(LUT_DEPTH), + .LUT_AW (LUT_AW), + .KW_TOL (KW_TOL) + ) u_kw ( + .clk (clk), + .rst_n (rst_n), + .lut_we (kw_lut_we), + .lut_addr (kw_lut_addr), + .lut_din (kw_lut_din), + .step_trigger(kw_step_trigger), + .dp_signed (kw_dp_signed), + .k_idx (kw_k_idx), + .x_in (kw_x_in), + .x_min (kw_x_min), + .x_max (kw_x_max), + .x_out (kw_x_out), + .conv_flag (kw_conv_flag), + .valid_o (kw_valid) + ); + + // ------------------------------------------------------------- + // bisect_control : 3 dB edge bisection + // ------------------------------------------------------------- + bisect_control #( + .X_WIDTH(X_WIDTH) + ) u_bs ( + .clk (clk), + .rst_n (rst_n), + .init (bs_init), + .lo_init (bs_lo_init), + .hi_init (bs_hi_init), + .side_left (bs_side_left), + .polarity_peak(bs_polarity_peak), + .tol_in (bs_tol_in), + .step (bs_step), + .pow_mid (bs_pow_mid), + .pow_thr (bs_pow_thr), + .mid_next (bs_mid_next), + .lo_o (bs_lo_o), + .hi_o (bs_hi_o), + .converged_o (bs_converged), + .valid_o (bs_valid) + ); + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/adaptive_sweep_control.v b/firmware/ip/adaptive_sweep/src/adaptive_sweep_control.v new file mode 100644 index 000000000..1a58df5e8 --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/adaptive_sweep_control.v @@ -0,0 +1,409 @@ +`timescale 1ns / 1ps +// +// adaptive_sweep_control.v +// +// QICK Custom-Peripheral (QP2 / qtag_*) opcode FSM. Translates 5-bit +// opcodes from tProc into control / configuration signals for the +// adaptive_sweep sub-modules and returns one or two 32-bit result words. +// +// The handshake follows the existing custom-peripheral protocol used by +// adaptive_sweep.v's placeholder implementation: +// - tProc asserts qtag_en_i and presents qtag_op_i + qtag_dt{1..4}_i +// - We detect the rising edge of qtag_en_i (en_rise) and start the op +// - qtag_rdy_o is driven low while busy +// - qtag_vld_o pulses high for one cycle when the result is on +// qtag_dt1_o / qtag_dt2_o. +// +// Opcode map (5 bits): +// 0x00 NOP --- +// 0x01 RESET_ALL soft-reset polyak averagers + bisect, clear x_state +// 0x02 SET_NAVG dt1=n_avg (info), dt2=reciprocal=ceil(2^32/n_avg) +// 0x03 SET_CHUNK_LOG2 dt1[3:0]=chunk_size_log2 (1..8) +// 0x04 SET_X dt1=x_fixed (current x state) +// 0x05 SET_BOUNDS dt1=x_min, dt2=x_max +// 0x06 ARM_CAPTURE dt1=n_samples to collect +// 0x07 GET_IQ_AVG -> dt1_o=I_avg, dt2_o=Q_avg +// 0x08 GET_POWER -> dt1_o=power, dt2_o={31'b0, valid} +// 0x09 KW_LUT_WE dt1[7:0]=index, dt2=value (signed step) +// 0x0A KW_STEP dt1=dp_signed, dt2[7:0]=k_idx +// -> dt1_o=x_new, dt2_o={31'b0, conv_flag} +// 0x0B GET_X -> dt1_o=x_current, dt2_o=iter_k +// 0x0C GET_XBAR -> dt1_o=xbar_x, dt2_o=xbar_delta_x (running x avg) +// 0x0D BISECT_INIT dt1=lo, dt2=hi, dt3=tol, +// dt4[0]=side_left, dt4[1]=polarity_peak +// 0x0E BISECT_STEP dt1=pow_mid, dt2=pow_thr +// -> dt1_o=mid_next, dt2_o={31'b0, converged} +// 0x0F GET_BISECT -> dt1_o=lo, dt2_o=hi +// 0x10 GET_STATUS -> dt1_o=samples_remaining, dt2_o=flags +// others NOP +// + +module adaptive_sweep_control #( + parameter integer X_WIDTH = 32, + parameter integer IQ_WIDTH = 16, + parameter integer POW_WIDTH = 32, + parameter integer COUNT_WIDTH= 16, + parameter integer LUT_AW = 8 +)( + input wire clk, + input wire rst_n, + + // ---- QP2 (tProc-side) ---- + input wire qtag_en_i, + input wire [4:0] qtag_op_i, + input wire [31:0] qtag_dt1_i, + input wire [31:0] qtag_dt2_i, + input wire [31:0] qtag_dt3_i, + input wire [31:0] qtag_dt4_i, + output reg qtag_rdy_o, + output reg [31:0] qtag_dt1_o, + output reg [31:0] qtag_dt2_o, + output reg qtag_vld_o, + + // ---- polyak_averager (I, Q) common ports ---- + output reg pa_soft_reset, + output reg [31:0] pa_reciprocal, + output reg [3:0] pa_chunk_log2, + // I-channel result + input wire signed [X_WIDTH-1:0] pa_i_xbar, + // Q-channel result + input wire signed [X_WIDTH-1:0] pa_q_xbar, + + // ---- iq_power result (post-average) ---- + output reg pwr_compute_pulse, // pulses to start compute + output reg signed [IQ_WIDTH-1:0] pwr_i_in, + output reg signed [IQ_WIDTH-1:0] pwr_q_in, + input wire [POW_WIDTH-1:0] pwr_value, + input wire pwr_valid, + + // ---- kw_steps ---- + output reg kw_lut_we, + output reg [LUT_AW-1:0] kw_lut_addr, + output reg signed [X_WIDTH-1:0] kw_lut_din, + output reg kw_step_trigger, + output reg signed [X_WIDTH-1:0] kw_dp_signed, + output reg [LUT_AW-1:0] kw_k_idx, + output reg signed [X_WIDTH-1:0] kw_x_in, + output reg signed [X_WIDTH-1:0] kw_x_min, + output reg signed [X_WIDTH-1:0] kw_x_max, + input wire signed [X_WIDTH-1:0] kw_x_out, + input wire kw_conv_flag, + input wire kw_valid, + + // ---- bisect_control ---- + output reg bs_init, + output reg [X_WIDTH-1:0] bs_lo_init, + output reg [X_WIDTH-1:0] bs_hi_init, + output reg bs_side_left, + output reg bs_polarity_peak, + output reg [X_WIDTH-1:0] bs_tol_in, + output reg bs_step, + output reg [X_WIDTH-1:0] bs_pow_mid, + output reg [X_WIDTH-1:0] bs_pow_thr, + input wire [X_WIDTH-1:0] bs_mid_next, + input wire [X_WIDTH-1:0] bs_lo_o, + input wire [X_WIDTH-1:0] bs_hi_o, + input wire bs_converged, + input wire bs_valid, + + // ---- readout_capture ---- + output reg rc_arm_pulse, + output reg [COUNT_WIDTH-1:0] rc_n_samples, + input wire rc_capture_done, + input wire [COUNT_WIDTH-1:0] rc_samples_remaining, + + // ---- internal x state visible to adaptive_sweep top ---- + output reg signed [X_WIDTH-1:0] x_current_o, + output reg signed [X_WIDTH-1:0] x_min_o, + output reg signed [X_WIDTH-1:0] x_max_o, + output reg [LUT_AW-1:0] iter_k_o // KW iteration counter +); + + // -------------------- Opcode constants -------------------- + localparam [4:0] OP_NOP = 5'h00; + localparam [4:0] OP_RESET_ALL = 5'h01; + localparam [4:0] OP_SET_NAVG = 5'h02; + localparam [4:0] OP_SET_CHUNK_LOG2 = 5'h03; + localparam [4:0] OP_SET_X = 5'h04; + localparam [4:0] OP_SET_BOUNDS = 5'h05; + localparam [4:0] OP_ARM_CAPTURE = 5'h06; + localparam [4:0] OP_GET_IQ_AVG = 5'h07; + localparam [4:0] OP_GET_POWER = 5'h08; + localparam [4:0] OP_KW_LUT_WE = 5'h09; + localparam [4:0] OP_KW_STEP = 5'h0A; + localparam [4:0] OP_GET_X = 5'h0B; + localparam [4:0] OP_GET_XBAR = 5'h0C; + localparam [4:0] OP_BISECT_INIT = 5'h0D; + localparam [4:0] OP_BISECT_STEP = 5'h0E; + localparam [4:0] OP_GET_BISECT = 5'h0F; + localparam [4:0] OP_GET_STATUS = 5'h10; + + // -------------------- en_rise detect -------------------- + reg en_d; + wire en_rise = qtag_en_i & ~en_d; + always @(posedge clk) begin + if (!rst_n) en_d <= 1'b0; + else en_d <= qtag_en_i; + end + + // -------------------- FSM -------------------- + localparam [2:0] S_IDLE = 3'd0; + localparam [2:0] S_DISPATCH = 3'd1; + localparam [2:0] S_WAIT_KW = 3'd2; + localparam [2:0] S_WAIT_BS = 3'd3; + localparam [2:0] S_WAIT_PWR = 3'd4; + localparam [2:0] S_RESPOND = 3'd5; + + reg [2:0] state; + reg [4:0] op_r; + reg [31:0] dt1_r, dt2_r, dt3_r, dt4_r; + reg [31:0] res1_r, res2_r; + + // -------------------- Sequential FSM -------------------- + always @(posedge clk) begin + if (!rst_n) begin + state <= S_IDLE; + op_r <= 5'h0; + dt1_r <= 32'h0; + dt2_r <= 32'h0; + dt3_r <= 32'h0; + dt4_r <= 32'h0; + res1_r <= 32'h0; + res2_r <= 32'h0; + + qtag_rdy_o <= 1'b1; + qtag_dt1_o <= 32'h0; + qtag_dt2_o <= 32'h0; + qtag_vld_o <= 1'b0; + + pa_soft_reset <= 1'b0; + pa_reciprocal <= 32'h0; + pa_chunk_log2 <= 4'd4; + + pwr_compute_pulse <= 1'b0; + pwr_i_in <= 0; + pwr_q_in <= 0; + + kw_lut_we <= 1'b0; + kw_lut_addr <= 0; + kw_lut_din <= 0; + kw_step_trigger <= 1'b0; + kw_dp_signed <= 0; + kw_k_idx <= 0; + kw_x_in <= 0; + kw_x_min <= 0; + kw_x_max <= 0; + + bs_init <= 1'b0; + bs_lo_init <= 0; + bs_hi_init <= 0; + bs_side_left <= 1'b0; + bs_polarity_peak <= 1'b0; + bs_tol_in <= 0; + bs_step <= 1'b0; + bs_pow_mid <= 0; + bs_pow_thr <= 0; + + rc_arm_pulse <= 1'b0; + rc_n_samples <= 0; + + x_current_o <= 0; + x_min_o <= 32'sh8000_0000; + x_max_o <= 32'sh7FFF_FFFF; + iter_k_o <= 0; + end else begin + // Default: 1-cycle pulses go low + pa_soft_reset <= 1'b0; + pwr_compute_pulse <= 1'b0; + kw_lut_we <= 1'b0; + kw_step_trigger <= 1'b0; + bs_init <= 1'b0; + bs_step <= 1'b0; + rc_arm_pulse <= 1'b0; + qtag_vld_o <= 1'b0; + + case (state) + // ---------------------------------------------------- + S_IDLE: begin + qtag_rdy_o <= 1'b1; + if (en_rise) begin + op_r <= qtag_op_i; + dt1_r <= qtag_dt1_i; + dt2_r <= qtag_dt2_i; + dt3_r <= qtag_dt3_i; + dt4_r <= qtag_dt4_i; + qtag_rdy_o <= 1'b0; + state <= S_DISPATCH; + end + end + + // ---------------------------------------------------- + S_DISPATCH: begin + case (op_r) + OP_NOP: begin + res1_r <= 32'h0; + res2_r <= 32'h0; + state <= S_RESPOND; + end + + OP_RESET_ALL: begin + pa_soft_reset <= 1'b1; + iter_k_o <= 0; + state <= S_RESPOND; + end + + OP_SET_NAVG: begin + pa_reciprocal <= dt2_r; // ceil(2^32 / n_avg) + state <= S_RESPOND; + end + + OP_SET_CHUNK_LOG2: begin + pa_chunk_log2 <= dt1_r[3:0]; + state <= S_RESPOND; + end + + OP_SET_X: begin + x_current_o <= $signed(dt1_r); + state <= S_RESPOND; + end + + OP_SET_BOUNDS: begin + x_min_o <= $signed(dt1_r); + x_max_o <= $signed(dt2_r); + state <= S_RESPOND; + end + + OP_ARM_CAPTURE: begin + rc_arm_pulse <= 1'b1; + rc_n_samples <= dt1_r[COUNT_WIDTH-1:0]; + // Also clear polyak averagers for a fresh measurement + pa_soft_reset <= 1'b1; + state <= S_RESPOND; + end + + OP_GET_IQ_AVG: begin + res1_r <= pa_i_xbar; + res2_r <= pa_q_xbar; + state <= S_RESPOND; + end + + OP_GET_POWER: begin + // Kick off an iq_power compute on the current xbar + pwr_i_in <= pa_i_xbar[IQ_WIDTH-1:0]; + pwr_q_in <= pa_q_xbar[IQ_WIDTH-1:0]; + pwr_compute_pulse <= 1'b1; + state <= S_WAIT_PWR; + end + + OP_KW_LUT_WE: begin + kw_lut_we <= 1'b1; + kw_lut_addr <= dt1_r[LUT_AW-1:0]; + kw_lut_din <= $signed(dt2_r); + state <= S_RESPOND; + end + + OP_KW_STEP: begin + kw_dp_signed <= $signed(dt1_r); + kw_k_idx <= dt2_r[LUT_AW-1:0]; + kw_x_in <= x_current_o; + kw_x_min <= x_min_o; + kw_x_max <= x_max_o; + kw_step_trigger <= 1'b1; + state <= S_WAIT_KW; + end + + OP_GET_X: begin + res1_r <= x_current_o; + res2_r <= {{(32-LUT_AW){1'b0}}, iter_k_o}; + state <= S_RESPOND; + end + + OP_GET_XBAR: begin + // Reuse pa_i_xbar as the "x running average" channel + // (or return current x as a placeholder). + res1_r <= x_current_o; + res2_r <= 32'h0; + state <= S_RESPOND; + end + + OP_BISECT_INIT: begin + bs_init <= 1'b1; + bs_lo_init <= dt1_r; + bs_hi_init <= dt2_r; + bs_tol_in <= dt3_r; + bs_side_left <= dt4_r[0]; + bs_polarity_peak <= dt4_r[1]; + state <= S_RESPOND; + end + + OP_BISECT_STEP: begin + bs_pow_mid <= dt1_r; + bs_pow_thr <= dt2_r; + bs_step <= 1'b1; + state <= S_WAIT_BS; + end + + OP_GET_BISECT: begin + res1_r <= bs_lo_o; + res2_r <= bs_hi_o; + state <= S_RESPOND; + end + + OP_GET_STATUS: begin + res1_r <= {{(32-COUNT_WIDTH){1'b0}}, rc_samples_remaining}; + res2_r <= {30'h0, rc_capture_done, 1'b0}; + state <= S_RESPOND; + end + + default: begin + res1_r <= 32'h0; + res2_r <= 32'h0; + state <= S_RESPOND; + end + endcase + end + + // ---------------------------------------------------- + S_WAIT_KW: begin + if (kw_valid) begin + res1_r <= kw_x_out; + res2_r <= {31'h0, kw_conv_flag}; + x_current_o <= kw_x_out; + iter_k_o <= iter_k_o + 1'b1; + state <= S_RESPOND; + end + end + + // ---------------------------------------------------- + S_WAIT_BS: begin + if (bs_valid) begin + res1_r <= bs_mid_next; + res2_r <= {31'h0, bs_converged}; + state <= S_RESPOND; + end + end + + // ---------------------------------------------------- + S_WAIT_PWR: begin + if (pwr_valid) begin + res1_r <= pwr_value; + res2_r <= 32'h1; // valid flag + state <= S_RESPOND; + end + end + + // ---------------------------------------------------- + S_RESPOND: begin + qtag_dt1_o <= res1_r; + qtag_dt2_o <= res2_r; + qtag_vld_o <= 1'b1; + qtag_rdy_o <= 1'b1; + state <= S_IDLE; + end + + default: state <= S_IDLE; + endcase + end + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/bisect_control.v b/firmware/ip/adaptive_sweep/src/bisect_control.v new file mode 100644 index 000000000..c34255297 --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/bisect_control.v @@ -0,0 +1,128 @@ +`timescale 1ns / 1ps +// +// bisect_control.v +// +// 3 dB edge bisection (Section 9 Phase 3.5). Maintains a closed interval +// [lo, hi] in normalized x-space and on every `step` pulse evaluates the +// caller-supplied (pow_mid, pow_thr) pair to halve the interval toward the +// edge. +// +// 4-way decision (peak vs dip, left vs right), as described in +// Section 9 §1.7: +// peak / left : pow_mid < pow_thr -> lo<=mid else hi<=mid +// peak / right: pow_mid > pow_thr -> lo<=mid else hi<=mid +// dip / left : pow_mid > pow_thr -> lo<=mid else hi<=mid +// dip / right: pow_mid < pow_thr -> lo<=mid else hi<=mid +// +// Convergence: (hi - lo) < tol_in. No DSP / no BRAM, only adders + +// comparators + muxes. 2-cycle latency from `step` to mid_next/converged. +// + +module bisect_control #( + parameter integer X_WIDTH = 32 +)( + input wire clk, + input wire rst_n, + + // Initialization + input wire init, + input wire [X_WIDTH-1:0] lo_init, + input wire [X_WIDTH-1:0] hi_init, + input wire side_left, // 1=left edge, 0=right edge + input wire polarity_peak, // 1=peak, 0=dip + input wire [X_WIDTH-1:0] tol_in, + + // Step request + input wire step, + input wire [X_WIDTH-1:0] pow_mid, + input wire [X_WIDTH-1:0] pow_thr, + + // Outputs + output reg [X_WIDTH-1:0] mid_next, + output reg [X_WIDTH-1:0] lo_o, + output reg [X_WIDTH-1:0] hi_o, + output reg converged_o, + output reg valid_o // pulses 1 cycle on step completion +); + + // Latched configuration + reg side_left_r; + reg polarity_peak_r; + reg [X_WIDTH-1:0] tol_r; + + // Stage 1 registers (for `step`) + reg s1_step; + reg s1_cmp_gt; // pow_mid > pow_thr + reg [X_WIDTH-1:0] s1_mid; + reg [X_WIDTH-1:0] s1_lo, s1_hi; + reg s1_converged; + + // The "raise lo" decision summary table: + // raise_lo = polarity_peak ? + // (side_left ? !cmp_gt : cmp_gt) // peak + // : + // (side_left ? cmp_gt : !cmp_gt); // dip + // raise_lo == 1 -> lo<=mid; else hi<=mid. + + always @(posedge clk) begin + if (!rst_n) begin + lo_o <= 0; + hi_o <= 0; + mid_next <= 0; + converged_o <= 1'b0; + valid_o <= 1'b0; + side_left_r <= 1'b0; + polarity_peak_r <= 1'b0; + tol_r <= 0; + s1_step <= 1'b0; + s1_cmp_gt <= 1'b0; + s1_mid <= 0; + s1_lo <= 0; + s1_hi <= 0; + s1_converged <= 1'b0; + end else begin + valid_o <= 1'b0; + s1_step <= 1'b0; + + // Init takes precedence: arms the controller with the initial + // interval and resets convergence. No "step" should arrive on + // the same cycle as init. + if (init) begin + lo_o <= lo_init; + hi_o <= hi_init; + mid_next <= (lo_init + hi_init) >> 1; + converged_o <= 1'b0; + side_left_r <= side_left; + polarity_peak_r <= polarity_peak; + tol_r <= tol_in; + end + else if (step && !converged_o) begin + // Stage 1: compute mid, compare, snapshot interval + s1_step <= 1'b1; + s1_cmp_gt <= (pow_mid > pow_thr); + s1_mid <= mid_next; // current midpoint that was probed + s1_lo <= lo_o; + s1_hi <= hi_o; + s1_converged <= ((hi_o - lo_o) < tol_r); + end + + // Stage 2: apply decision + if (s1_step) begin : apply_decision + reg raise_lo; + raise_lo = polarity_peak_r + ? (side_left_r ? ~s1_cmp_gt : s1_cmp_gt) + : (side_left_r ? s1_cmp_gt : ~s1_cmp_gt); + if (raise_lo) begin + lo_o <= s1_mid; + mid_next <= (s1_mid + s1_hi) >> 1; + end else begin + hi_o <= s1_mid; + mid_next <= (s1_lo + s1_mid) >> 1; + end + converged_o <= s1_converged; + valid_o <= 1'b1; + end + end + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/iq_power.v b/firmware/ip/adaptive_sweep/src/iq_power.v new file mode 100644 index 000000000..6807f68af --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/iq_power.v @@ -0,0 +1,68 @@ +`timescale 1ns / 1ps +// +// iq_power.v +// +// Computes exact magnitude squared: power_o = i_in*i_in + q_in*q_in +// Two DSP48E2 multipliers (one per channel) plus a 32-bit add. +// Fully pipelined, 3-cycle latency, 1 sample/cycle throughput. +// +// Range: +// Worst case I, Q = -2^(IQ_WIDTH-1) -> i^2 = q^2 = 2^(2*IQ_WIDTH-2) +// For IQ_WIDTH=16: i^2 + q^2 <= 2^31, fits in POW_WIDTH=32 unsigned. +// +// Pipeline (target c_clk = 200 MHz on RFSoC 4x2): +// P0 i_in, q_in -> i_r, q_r (DSP A reg, 1 LUT level) +// P1 i_sq <= i_r * i_r; q_sq <= q_r * q_r (DSP M reg, 16x16 mul ~1.5 ns) +// P2 power_o <= i_sq + q_sq (32-bit add or DSP P) +// + +module iq_power #( + parameter integer IQ_WIDTH = 16, + parameter integer POW_WIDTH = 32 +)( + input wire clk, + input wire rst_n, + + input wire signed [IQ_WIDTH-1:0] i_in, + input wire signed [IQ_WIDTH-1:0] q_in, + input wire valid_in, + + output reg [POW_WIDTH-1:0] power_o, + output reg valid_o +); + + // P0: input regs + reg signed [IQ_WIDTH-1:0] i_r, q_r; + reg vld_r0; + + // P1: squared + (* use_dsp = "yes" *) reg [2*IQ_WIDTH-1:0] i_sq; + (* use_dsp = "yes" *) reg [2*IQ_WIDTH-1:0] q_sq; + reg vld_r1; + + always @(posedge clk) begin + if (!rst_n) begin + i_r <= {IQ_WIDTH{1'b0}}; + q_r <= {IQ_WIDTH{1'b0}}; + i_sq <= {(2*IQ_WIDTH){1'b0}}; + q_sq <= {(2*IQ_WIDTH){1'b0}}; + power_o <= {POW_WIDTH{1'b0}}; + vld_r0 <= 1'b0; + vld_r1 <= 1'b0; + valid_o <= 1'b0; + end else begin + // P0 + i_r <= i_in; + q_r <= q_in; + vld_r0 <= valid_in; + // P1: signed * signed -> non-negative + i_sq <= $signed(i_r) * $signed(i_r); + q_sq <= $signed(q_r) * $signed(q_r); + vld_r1 <= vld_r0; + // P2 + power_o <= i_sq + q_sq; + valid_o <= vld_r1; + end + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/kw_steps.v b/firmware/ip/adaptive_sweep/src/kw_steps.v new file mode 100644 index 000000000..1a7bea790 --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/kw_steps.v @@ -0,0 +1,179 @@ +`timescale 1ns / 1ps +// +// kw_steps.v +// +// LUT-driven Kiefer-Wolfowitz step generator. +// +// The ARM (PS) precomputes a step magnitude schedule -- typically the +// Section 9 _ak_s9(k) function or any other custom decay -- and writes it +// into the on-chip BRAM through {lut_we, lut_addr, lut_din}. +// +// On a step_trigger pulse the module: +// 1. Reads LUT[k_idx] (sync BRAM read) +// 2. Determines the step direction from sign(dp_signed): +// dp > 0 -> step = +LUT[k_idx] (move x toward higher response) +// dp < 0 -> step = -LUT[k_idx] +// dp = 0 -> step = 0 +// 3. x_sum = x_in + step +// 4. x_out = clamp(x_sum, x_min, x_max) +// 5. conv_flag asserted if |step| < KW_TOL (caller-provided tol param) +// +// 6-stage pipeline. No multipliers, one BRAM18. Critical path: 32-bit +// add followed by clamp compare in stage K5; if synthesis flags slack, +// move clamp into a separate stage K6. +// + +module kw_steps #( + parameter integer X_WIDTH = 32, + parameter integer LUT_DEPTH = 256, + parameter integer LUT_AW = 8, // log2(LUT_DEPTH) + parameter [X_WIDTH-1:0] KW_TOL = 32'h0000_07D0 // ~2000 in fixed-point +)( + input wire clk, + input wire rst_n, + + // LUT write port (from adaptive_sweep_control on KW_LUT_WE opcode) + input wire lut_we, + input wire [LUT_AW-1:0] lut_addr, + input wire signed [X_WIDTH-1:0] lut_din, + + // Step request + input wire step_trigger, + input wire signed [X_WIDTH-1:0] dp_signed, // = y_plus - y_minus + input wire [LUT_AW-1:0] k_idx, + input wire signed [X_WIDTH-1:0] x_in, + input wire signed [X_WIDTH-1:0] x_min, + input wire signed [X_WIDTH-1:0] x_max, + + // Step result + output reg signed [X_WIDTH-1:0] x_out, + output reg conv_flag, + output reg valid_o +); + + // -------------------- LUT (256 x 32, BRAM) -------------------- + (* ram_style = "block" *) reg signed [X_WIDTH-1:0] lut [0:LUT_DEPTH-1]; + reg signed [X_WIDTH-1:0] lut_q; + + always @(posedge clk) begin + if (lut_we) + lut[lut_addr] <= lut_din; + // Port B: synchronous read on every step trigger. + // For Vivado BRAM inference we drive the read every cycle. + lut_q <= lut[k_idx]; + end + + // -------------------- Pipeline registers -------------------- + // K0 (sample): inputs latched directly into K1 below + reg k1_trig; + reg k1_sign_pos; + reg k1_is_zero; + reg signed [X_WIDTH-1:0] k1_x_in; + reg signed [X_WIDTH-1:0] k1_x_min, k1_x_max; + reg [LUT_AW-1:0] k1_idx; + + // K2: lut_q valid here (BRAM 1-cycle latency) + reg k2_trig; + reg k2_sign_pos; + reg k2_is_zero; + reg signed [X_WIDTH-1:0] k2_x_in; + reg signed [X_WIDTH-1:0] k2_x_min, k2_x_max; + + // K3: step computed + reg k3_trig; + reg signed [X_WIDTH-1:0] k3_step; + reg signed [X_WIDTH-1:0] k3_x_in; + reg signed [X_WIDTH-1:0] k3_x_min, k3_x_max; + + // K4: x_sum + reg k4_trig; + reg signed [X_WIDTH-1:0] k4_x_sum; + reg signed [X_WIDTH-1:0] k4_x_min, k4_x_max; + reg signed [X_WIDTH-1:0] k4_step; + + // K5: clamp + conv flag (output stage) + + // -------------------- Stages -------------------- + always @(posedge clk) begin + if (!rst_n) begin + k1_trig <= 1'b0; + k1_sign_pos<= 1'b0; + k1_is_zero <= 1'b0; + k1_x_in <= 0; + k1_x_min <= 0; + k1_x_max <= 0; + k1_idx <= 0; + + k2_trig <= 1'b0; + k2_sign_pos<= 1'b0; + k2_is_zero <= 1'b0; + k2_x_in <= 0; + k2_x_min <= 0; + k2_x_max <= 0; + + k3_trig <= 1'b0; + k3_step <= 0; + k3_x_in <= 0; + k3_x_min <= 0; + k3_x_max <= 0; + + k4_trig <= 1'b0; + k4_x_sum <= 0; + k4_x_min <= 0; + k4_x_max <= 0; + k4_step <= 0; + + x_out <= 0; + conv_flag <= 1'b0; + valid_o <= 1'b0; + end else begin + // K1: latch inputs and compute sign / is_zero + k1_trig <= step_trigger; + k1_sign_pos <= ~dp_signed[X_WIDTH-1]; // 1 if non-negative + k1_is_zero <= (dp_signed == {X_WIDTH{1'b0}}); + k1_x_in <= x_in; + k1_x_min <= x_min; + k1_x_max <= x_max; + k1_idx <= k_idx; + + // K2: lut_q is now valid (BRAM read completed this cycle) + k2_trig <= k1_trig; + k2_sign_pos <= k1_sign_pos; + k2_is_zero <= k1_is_zero; + k2_x_in <= k1_x_in; + k2_x_min <= k1_x_min; + k2_x_max <= k1_x_max; + + // K3: pick signed step or zero + k3_trig <= k2_trig; + k3_x_in <= k2_x_in; + k3_x_min <= k2_x_min; + k3_x_max <= k2_x_max; + if (k2_is_zero) + k3_step <= 0; + else if (k2_sign_pos) + k3_step <= lut_q; + else + k3_step <= -lut_q; + + // K4: x_sum = x_in + step + k4_trig <= k3_trig; + k4_x_sum <= k3_x_in + k3_step; + k4_x_min <= k3_x_min; + k4_x_max <= k3_x_max; + k4_step <= k3_step; + + // K5: clamp + conv flag + output valid + valid_o <= k4_trig; + if (k4_x_sum < k4_x_min) x_out <= k4_x_min; + else if (k4_x_sum > k4_x_max) x_out <= k4_x_max; + else x_out <= k4_x_sum; + // conv flag uses absolute value of step + if ((k4_step >= 0 ? k4_step : -k4_step) < KW_TOL) + conv_flag <= 1'b1; + else + conv_flag <= 1'b0; + end + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/polyak_averager.v b/firmware/ip/adaptive_sweep/src/polyak_averager.v new file mode 100644 index 000000000..2bf99015d --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/polyak_averager.v @@ -0,0 +1,158 @@ +`timescale 1ns / 1ps +// +// polyak_averager.v +// +// Chunked Polyak / running averager built around a single reciprocal-multiply +// "divider". The ARM precomputes RECIPROCAL = ceil(2^32 / n_avg) and writes +// it through reciprocal_in. Every 2^chunk_size_log2 valid samples the module +// fires: xbar = (sum * reciprocal) >>> 32. +// +// One instance is used per channel (e.g. one for I and one for Q). When +// chunk_size_log2 is chosen so that 2^chunk_size_log2 == n_avg the module +// behaves as a one-shot averager (drop a soft_reset between measurements); +// when chunks are smaller than the total measurement length it behaves as a +// running chunked Polyak average and exposes xbar_delta_o for convergence +// detection. +// +// Datapath / timing (target c_clk = 200 MHz on RFSoC 4x2 ZU48DR) +// H0 sample_in -> sign-extended sample_ext (1 LUT level) +// H1 sum <= sum + sample_ext (48-bit add) +// C0 on chunk close: latch sum_chunk, reciprocal (DSP A reg) +// C1 mul_p1 <= sum_chunk * reciprocal (DSP M reg) +// C2 mul_p2 <= mul_p1 (DSP P reg) +// C3 xbar_next = mul_p2 >>> 32 (wire) +// C4 xbar_o, xbar_delta_o, valid_o (output regs) +// +// Synchronous active-low reset only (project policy commit b4f6bcc9). +// + +module polyak_averager #( + parameter integer SAMPLE_WIDTH = 16, // signed input width + parameter integer SUM_WIDTH = 48, // signed accumulator + parameter integer AVG_WIDTH = 32, // signed average output + parameter integer RECIP_WIDTH = 32, // unsigned reciprocal + parameter integer COUNT_WIDTH = 16 // total sample counter +)( + input wire clk, + input wire rst_n, + + // Sample input + input wire signed [SAMPLE_WIDTH-1:0] sample_in, + input wire sample_valid, + + // Configuration + input wire [RECIP_WIDTH-1:0] reciprocal_in, + input wire [3:0] chunk_size_log2, // 1..8 + + // Control + input wire soft_reset, // clear sum/count/xbar + + // Outputs + output reg signed [AVG_WIDTH-1:0] xbar_o, + output reg [AVG_WIDTH-1:0] xbar_delta_o, + output reg [COUNT_WIDTH-1:0] count_o, + output reg valid_o // pulses 1 cycle on chunk close +); + + // ----------------------------------------------------------- + // Hot path: accumulate samples and detect chunk close + // ----------------------------------------------------------- + reg signed [SUM_WIDTH-1:0] sum; + reg signed [SUM_WIDTH-1:0] sum_chunk; // snapshot of sum at chunk close + reg [COUNT_WIDTH-1:0] in_chunk_count; // counts 0..(2^k - 1) + reg chunk_close_r; + reg [RECIP_WIDTH-1:0] reciprocal_r; + + wire signed [SUM_WIDTH-1:0] sample_ext = + {{(SUM_WIDTH-SAMPLE_WIDTH){sample_in[SAMPLE_WIDTH-1]}}, sample_in}; + + // chunk_size_log2 acts as a comparator threshold against in_chunk_count. + // 1..8 supported -> chunk lengths 2..256. + wire [COUNT_WIDTH-1:0] chunk_len_minus1 = + ({{(COUNT_WIDTH-1){1'b0}}, 1'b1} << chunk_size_log2) - 1'b1; + + always @(posedge clk) begin + if (!rst_n || soft_reset) begin + sum <= {SUM_WIDTH{1'b0}}; + sum_chunk <= {SUM_WIDTH{1'b0}}; + in_chunk_count <= {COUNT_WIDTH{1'b0}}; + count_o <= {COUNT_WIDTH{1'b0}}; + chunk_close_r <= 1'b0; + reciprocal_r <= {RECIP_WIDTH{1'b0}}; + end else begin + chunk_close_r <= 1'b0; + // reciprocal latches every cycle so the ARM can update it between chunks + reciprocal_r <= reciprocal_in; + + if (sample_valid) begin + sum <= sum + sample_ext; + count_o <= count_o + 1'b1; + + if (in_chunk_count == chunk_len_minus1) begin + // This is the last sample of the chunk: snapshot the + // running sum (including this sample) and pulse chunk_close. + in_chunk_count <= {COUNT_WIDTH{1'b0}}; + sum_chunk <= sum + sample_ext; + chunk_close_r <= 1'b1; + end else begin + in_chunk_count <= in_chunk_count + 1'b1; + end + end + end + end + + // ----------------------------------------------------------- + // Cold path: sum_chunk * reciprocal -> xbar (multi-cycle) + // 4-stage DSP pipeline; result valid 4 cycles after chunk_close_r. + // ----------------------------------------------------------- + reg signed [SUM_WIDTH-1:0] mul_a_r; + reg signed [RECIP_WIDTH:0] mul_b_r; // sign-extend unsigned to keep signed mul + (* use_dsp = "yes" *) + reg signed [SUM_WIDTH+RECIP_WIDTH:0] mul_p1; // 1st stage of DSP + reg signed [SUM_WIDTH+RECIP_WIDTH:0] mul_p2; // 2nd stage of DSP + reg signed [AVG_WIDTH-1:0] xbar_next; + reg signed [AVG_WIDTH-1:0] xbar_prev; + reg [3:0] pipe_valid; // shift register tracking valid + + always @(posedge clk) begin + if (!rst_n || soft_reset) begin + mul_a_r <= {SUM_WIDTH{1'b0}}; + mul_b_r <= {(RECIP_WIDTH+1){1'b0}}; + mul_p1 <= {(SUM_WIDTH+RECIP_WIDTH+1){1'b0}}; + mul_p2 <= {(SUM_WIDTH+RECIP_WIDTH+1){1'b0}}; + xbar_next <= {AVG_WIDTH{1'b0}}; + xbar_prev <= {AVG_WIDTH{1'b0}}; + xbar_o <= {AVG_WIDTH{1'b0}}; + xbar_delta_o <= {AVG_WIDTH{1'b0}}; + valid_o <= 1'b0; + pipe_valid <= 4'b0; + end else begin + // Stage 0 -> 1 + mul_a_r <= sum_chunk; + mul_b_r <= {1'b0, reciprocal_r}; // unsigned -> 33b signed positive + // Stage 1 -> 2 + mul_p1 <= $signed(mul_a_r) * $signed(mul_b_r); + // Stage 2 -> 3 + mul_p2 <= mul_p1; + // Stage 3 -> 4: arithmetic right-shift by 32 then truncate to AVG_WIDTH. + // product = sum_chunk * reciprocal (signed, SUM_WIDTH+RECIP_WIDTH+1 bits) + // xbar = product >>> 32 (lower AVG_WIDTH bits of that = product[31+AVG_WIDTH:32]) + xbar_next <= mul_p2[32 +: AVG_WIDTH]; + // Stage 4: register xbar, compute |delta| + if (pipe_valid[3]) begin + xbar_o <= xbar_next; + xbar_prev <= xbar_next; + xbar_delta_o <= (xbar_next >= xbar_prev) ? + (xbar_next - xbar_prev) : + (xbar_prev - xbar_next); + valid_o <= 1'b1; + end else begin + valid_o <= 1'b0; + end + + // Pipeline valid shift register + pipe_valid <= {pipe_valid[2:0], chunk_close_r}; + end + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/readout_capture.v b/firmware/ip/adaptive_sweep/src/readout_capture.v new file mode 100644 index 000000000..c7a4c097c --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/readout_capture.v @@ -0,0 +1,235 @@ +`timescale 1ns / 1ps +// +// readout_capture.v +// +// Snoops the m1_axis output of axis_dyn_readout_v1 (32-bit packed I/Q on +// ro_clk = 307.2 MHz), gates by an external trigger, optionally counts a +// fixed window of N samples, and surfaces decoded I/Q on the c_clk domain +// (200 MHz) through an asynchronous BRAM FIFO. +// +// Snoop semantics: drives s_ro_axis_tready=1 always. This means the +// upstream writer (the readout) is never back-pressured by us, so the +// existing avg_buffer consumer is unaffected. The price is that if our +// FIFO ever fills up we silently drop samples -- size the FIFO so this +// can't happen for the configured n_samples. +// +// Two CDC paths: +// arm_pulse : c_clk -> ro_clk (level toggled into a Gray bit then +// synced; we synthesize a 1-cycle ro_clk pulse from a +// rising edge). +// capture_done : ro_clk -> c_clk (synced level then edge-detected). +// +// FIFO: xpm_fifo_async, 32-bit data, 64 deep, FWFT. ~1 BRAM18. +// + +module readout_capture #( + parameter integer IQ_WIDTH = 16, + parameter integer FIFO_DEPTH_LOG2 = 6, // 2^6 = 64 + parameter integer COUNT_WIDTH = 16 +)( + // ----------- c_clk domain ----------- + input wire clk, + input wire rst_n, + + // Capture control (from adaptive_sweep_control) + input wire arm_pulse, // 1-cycle pulse to start a window + input wire [COUNT_WIDTH-1:0] n_samples, // window length + output reg capture_done_o, // sticky high until next arm + + // Decoded sample stream consumed by polyak_averager + iq_power + output wire signed [IQ_WIDTH-1:0] i_out, + output wire signed [IQ_WIDTH-1:0] q_out, + output wire iq_valid, + input wire iq_ready, // back-pressure to consumers + output wire [COUNT_WIDTH-1:0] samples_remaining, + + // ----------- ro_clk domain ----------- + input wire s_ro_axis_aclk, + input wire s_ro_axis_aresetn, + input wire [2*IQ_WIDTH-1:0] s_ro_axis_tdata, // {Q[15:0], I[15:0]} + input wire s_ro_axis_tvalid, + output wire s_ro_axis_tready, // tied to 1 + input wire trigger_i // external trigger (ro_clk async) +); + + // ---------------------------------------------------------------- + // c_clk -> ro_clk : arm_pulse to ro_clk-domain "armed" enable + // ---------------------------------------------------------------- + // Implement as a toggle FF in c_clk; synchronize the toggle into + // ro_clk; edge-detect the synchronized toggle into a 1-cycle ro_clk + // pulse. Standard XPM_CDC_PULSE pattern done by hand to keep the + // module portable. + reg arm_toggle_c; + always @(posedge clk) begin + if (!rst_n) arm_toggle_c <= 1'b0; + else if (arm_pulse) arm_toggle_c <= ~arm_toggle_c; + end + + (* ASYNC_REG = "TRUE" *) reg arm_tog_sync_0, arm_tog_sync_1, arm_tog_sync_2; + always @(posedge s_ro_axis_aclk) begin + if (!s_ro_axis_aresetn) begin + arm_tog_sync_0 <= 1'b0; + arm_tog_sync_1 <= 1'b0; + arm_tog_sync_2 <= 1'b0; + end else begin + arm_tog_sync_0 <= arm_toggle_c; + arm_tog_sync_1 <= arm_tog_sync_0; + arm_tog_sync_2 <= arm_tog_sync_1; + end + end + wire arm_pulse_ro = arm_tog_sync_1 ^ arm_tog_sync_2; + + // ---------------------------------------------------------------- + // c_clk -> ro_clk : n_samples (slow-changing config) -- 2-FF sync + // Safe to sync as a multibit because the value is only consumed + // when arm_pulse_ro fires, and arm_pulse_ro is at least 3 ro_clk + // cycles after n_samples is stable in c_clk. + // ---------------------------------------------------------------- + (* ASYNC_REG = "TRUE" *) reg [COUNT_WIDTH-1:0] n_samples_sync_0, n_samples_sync_1; + always @(posedge s_ro_axis_aclk) begin + if (!s_ro_axis_aresetn) begin + n_samples_sync_0 <= 0; + n_samples_sync_1 <= 0; + end else begin + n_samples_sync_0 <= n_samples; + n_samples_sync_1 <= n_samples_sync_0; + end + end + + // ---------------------------------------------------------------- + // ro_clk side: trigger gate, sample counter, FIFO writes + // ---------------------------------------------------------------- + reg armed_ro; + reg [COUNT_WIDTH-1:0] remaining_ro; + reg trigger_d; + wire trigger_rise = trigger_i & ~trigger_d; + + wire fifo_full; + wire fifo_wr_en; + + // Write enable: armed AND tvalid AND not full. If full, drop sample + // (simulation will assert). + assign fifo_wr_en = armed_ro & s_ro_axis_tvalid & ~fifo_full; + assign s_ro_axis_tready = 1'b1; // snoop never stalls writer + + always @(posedge s_ro_axis_aclk) begin + if (!s_ro_axis_aresetn) begin + armed_ro <= 1'b0; + remaining_ro <= 0; + trigger_d <= 1'b0; + end else begin + trigger_d <= trigger_i; + + // arm_pulse_ro loads the counter and arms (waits for trigger) + if (arm_pulse_ro) begin + armed_ro <= 1'b0; // not yet capturing + remaining_ro <= n_samples_sync_1; + end + + // Trigger starts capture only if a window is loaded + if (trigger_rise && remaining_ro != 0) begin + armed_ro <= 1'b1; + end + + // While capturing, decrement on each accepted write + if (armed_ro && fifo_wr_en) begin + if (remaining_ro == 1) begin + armed_ro <= 1'b0; // last sample + remaining_ro <= 0; + end else begin + remaining_ro <= remaining_ro - 1'b1; + end + end + end + end + + // capture_done_ro: pulse-toggle into c_clk for capture_done_o + reg capture_done_tog_ro; + always @(posedge s_ro_axis_aclk) begin + if (!s_ro_axis_aresetn) + capture_done_tog_ro <= 1'b0; + else if (armed_ro && fifo_wr_en && remaining_ro == 1) + capture_done_tog_ro <= ~capture_done_tog_ro; + end + + (* ASYNC_REG = "TRUE" *) reg cap_done_sync_0, cap_done_sync_1, cap_done_sync_2; + always @(posedge clk) begin + if (!rst_n) begin + cap_done_sync_0 <= 1'b0; + cap_done_sync_1 <= 1'b0; + cap_done_sync_2 <= 1'b0; + capture_done_o <= 1'b0; + end else begin + cap_done_sync_0 <= capture_done_tog_ro; + cap_done_sync_1 <= cap_done_sync_0; + cap_done_sync_2 <= cap_done_sync_1; + // arm_pulse clears the sticky done flag + if (arm_pulse) capture_done_o <= 1'b0; + else if (cap_done_sync_1 ^ cap_done_sync_2) capture_done_o <= 1'b1; + end + end + + // ---------------------------------------------------------------- + // Async FIFO (xpm_fifo_async, 32 wide, 64 deep, FWFT) + // ---------------------------------------------------------------- + wire [2*IQ_WIDTH-1:0] fifo_dout; + wire fifo_empty; + wire fifo_rd_en; + + assign fifo_rd_en = ~fifo_empty & iq_ready; + + xpm_fifo_async #( + .CDC_SYNC_STAGES (2), + .DOUT_RESET_VALUE ("0"), + .ECC_MODE ("no_ecc"), + .FIFO_MEMORY_TYPE ("block"), + .FIFO_READ_LATENCY (0), // FWFT + .FIFO_WRITE_DEPTH (1 << FIFO_DEPTH_LOG2), + .FULL_RESET_VALUE (0), + .READ_DATA_WIDTH (2*IQ_WIDTH), + .READ_MODE ("fwft"), + .RELATED_CLOCKS (0), + .USE_ADV_FEATURES ("0000"), + .WAKEUP_TIME (0), + .WRITE_DATA_WIDTH (2*IQ_WIDTH), + .WR_DATA_COUNT_WIDTH(1) + ) u_fifo ( + .rst (~s_ro_axis_aresetn), // active high + .wr_clk (s_ro_axis_aclk), + .wr_en (fifo_wr_en), + .din (s_ro_axis_tdata), + .full (fifo_full), + .rd_clk (clk), + .rd_en (fifo_rd_en), + .dout (fifo_dout), + .empty (fifo_empty), + // Unused + .injectdbiterr(1'b0), + .injectsbiterr(1'b0), + .sleep (1'b0), + .almost_empty (), .almost_full (), .data_valid (), + .dbiterr (), .overflow (), .prog_empty (), + .prog_full (), .rd_data_count(), .rd_rst_busy(), + .sbiterr (), .underflow (), .wr_data_count(), + .wr_rst_busy () + ); + + assign i_out = fifo_dout[IQ_WIDTH-1:0]; + assign q_out = fifo_dout[2*IQ_WIDTH-1:IQ_WIDTH]; + assign iq_valid = ~fifo_empty; + + // c_clk-side samples_remaining mirror (lossy view, for tProc status reads). + // Snapshot at arm_pulse, decrement when sample is consumed downstream. + reg [COUNT_WIDTH-1:0] remaining_c; + always @(posedge clk) begin + if (!rst_n) begin + remaining_c <= 0; + end else begin + if (arm_pulse) remaining_c <= n_samples; + else if (fifo_rd_en && remaining_c != 0) + remaining_c <= remaining_c - 1'b1; + end + end + assign samples_remaining = remaining_c; + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/tb/tb_adaptive_sweep.sv b/firmware/ip/adaptive_sweep/src/tb/tb_adaptive_sweep.sv new file mode 100644 index 000000000..f8a69e4b0 --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/tb/tb_adaptive_sweep.sv @@ -0,0 +1,290 @@ +`timescale 1ns / 1ps +// +// tb_adaptive_sweep.sv +// +// Top-level integration testbench for the adaptive_sweep IP. Emulates a +// tProc on the QP2 (qtag_*) interface and a readout on the AXIS snoop +// interface, walks through a representative opcode sequence, and checks +// the major datapaths. +// +// Sequence: +// 1. Reset, configure (SET_NAVG, SET_CHUNK_LOG2, SET_BOUNDS, SET_X) +// 2. Load a small KW LUT (8 entries used for this test) +// 3. ARM_CAPTURE(16), then drive 16 synthetic I/Q samples on ro_clk +// and pulse the trigger; wait for capture_done +// 4. GET_IQ_AVG -> compare to expected mean +// 5. GET_POWER -> compare to I_avg^2 + Q_avg^2 +// 6. KW_STEP with dp>0 -> verify x increases by LUT[k_idx] +// 7. BISECT_INIT + BISECT_STEP loop on a synthetic peak curve +// + +module tb_adaptive_sweep; + + // ---------------- Parameters ---------------- + localparam int IQ_WIDTH = 16; + localparam int X_WIDTH = 32; + localparam int LUT_AW = 8; + localparam int COUNT_WIDTH = 16; + localparam int N_AVG = 16; + localparam int CHUNK_LOG2 = 4; + // ceil(2^32 / 16) = 268_435_456 + localparam logic [31:0] RECIP_16 = 32'd268435456; + + // ---------------- Clocks ---------------- + logic clk; // c_clk = 200 MHz + logic ro_clk; // ro_clk = 307.2 MHz + initial clk = 0; + initial ro_clk = 0; + always #2.5 clk = ~clk; + always #1.6275 ro_clk = ~ro_clk; + + // ---------------- Resets ---------------- + logic rst_n; + logic ro_aresetn; + + // ---------------- DUT ports ---------------- + logic qtag_en; + logic [4:0] qtag_op; + logic [31:0] qtag_dt1, qtag_dt2, qtag_dt3, qtag_dt4; + logic qtag_rdy; + logic [31:0] qtag_dt1_o, qtag_dt2_o; + logic qtag_vld; + + logic [2*IQ_WIDTH-1:0] ro_tdata; + logic ro_tvalid; + logic ro_tready; + logic trigger; + + int errors = 0, passes = 0; + + // ---------------- DUT ---------------- + adaptive_sweep #( + .LUT_DEPTH (256), + .LUT_AW (LUT_AW), + .X_WIDTH (X_WIDTH), + .IQ_WIDTH (IQ_WIDTH), + .SUM_WIDTH (48), + .POW_WIDTH (32), + .COUNT_WIDTH (COUNT_WIDTH), + .RO_FIFO_DEPTH_LOG2(6), + .KW_TOL (32'h0000_07D0) + ) dut ( + .clk (clk), + .rst_n (rst_n), + .qtag_en_i (qtag_en), + .qtag_op_i (qtag_op), + .qtag_dt1_i (qtag_dt1), + .qtag_dt2_i (qtag_dt2), + .qtag_dt3_i (qtag_dt3), + .qtag_dt4_i (qtag_dt4), + .qtag_rdy_o (qtag_rdy), + .qtag_dt1_o (qtag_dt1_o), + .qtag_dt2_o (qtag_dt2_o), + .qtag_vld_o (qtag_vld), + .s_ro_axis_aclk (ro_clk), + .s_ro_axis_aresetn (ro_aresetn), + .s_ro_axis_tdata (ro_tdata), + .s_ro_axis_tvalid (ro_tvalid), + .s_ro_axis_tready (ro_tready), + .trigger_i (trigger) + ); + + // ---------------- QP2 driver ---------------- + task automatic qp2_op(input [4:0] op, + input [31:0] d1, input [31:0] d2, + input [31:0] d3, input [31:0] d4, + output [31:0] r1, output [31:0] r2); + int t; + @(posedge clk); + qtag_op <= op; + qtag_dt1 <= d1; + qtag_dt2 <= d2; + qtag_dt3 <= d3; + qtag_dt4 <= d4; + qtag_en <= 1'b1; + @(posedge clk); + qtag_en <= 1'b0; + // wait for qtag_vld + t = 0; + while (!qtag_vld && t < 200) begin @(posedge clk); t++; end + if (!qtag_vld) begin + $display("[%0t] ERROR: qp2_op(0x%02h) timeout", $time, op); + errors++; + r1 = 0; r2 = 0; + end else begin + r1 = qtag_dt1_o; + r2 = qtag_dt2_o; + end + endtask + + task automatic check_int(input string n, input int got, input int exp, + input int tol = 1); + int diff; + diff = (got > exp) ? (got - exp) : (exp - got); + if (diff <= tol) begin + $display("[%0t] PASS %s: got=%0d exp=%0d", $time, n, got, exp); + passes++; + end else begin + $display("[%0t] FAIL %s: got=%0d exp=%0d (tol=%0d)", + $time, n, got, exp, tol); + errors++; + end + endtask + + // ---------------- ro_clk stream feeder ---------------- + // Sends `n` samples with constant (i_val, q_val) on ro_clk after `wait_cycles`. + task automatic ro_stream_constant(input int n, + input signed [IQ_WIDTH-1:0] i_val, + input signed [IQ_WIDTH-1:0] q_val, + input int wait_cycles); + int sent; + @(posedge ro_clk); + repeat (wait_cycles) @(posedge ro_clk); + sent = 0; + ro_tvalid <= 1'b1; + while (sent < n) begin + ro_tdata <= {q_val, i_val}; + @(posedge ro_clk); + sent++; + end + ro_tvalid <= 1'b0; + endtask + + // Trigger pulse on ro_clk + task automatic ro_trigger(); + @(posedge ro_clk); + trigger <= 1; + @(posedge ro_clk); + trigger <= 0; + endtask + + // ---------------- Stimulus ---------------- + logic [31:0] r1, r2; + + initial begin + // Init + rst_n = 0; + ro_aresetn = 0; + qtag_en = 0; + qtag_op = 0; + qtag_dt1 = 0; + qtag_dt2 = 0; + qtag_dt3 = 0; + qtag_dt4 = 0; + ro_tdata = 0; + ro_tvalid = 0; + trigger = 0; + repeat (20) @(posedge clk); + rst_n = 1; + ro_aresetn = 1; + repeat (20) @(posedge clk); + + // 1. Configure + $display("---- 1. Configure ----"); + qp2_op(5'h01, 0, 0, 0, 0, r1, r2); // RESET_ALL + qp2_op(5'h02, N_AVG, RECIP_16, 0, 0, r1, r2); // SET_NAVG + qp2_op(5'h03, CHUNK_LOG2, 0, 0, 0, r1, r2); // SET_CHUNK_LOG2 + qp2_op(5'h05, 32'h0, 32'h0010_0000, 0, 0, r1, r2); // SET_BOUNDS [0, 1M] + qp2_op(5'h04, 32'h0001_0000, 0, 0, 0, r1, r2); // SET_X = 65536 + + // 2. Load a small KW LUT (k=0..7 -> 1000) + $display("---- 2. Load KW LUT ----"); + for (int k = 0; k < 8; k++) begin + qp2_op(5'h09, k, 32'sd5000, 0, 0, r1, r2); // KW_LUT_WE + end + + // 3. ARM and stream constant samples 100/200 + $display("---- 3. ARM_CAPTURE + stream ----"); + qp2_op(5'h06, N_AVG, 0, 0, 0, r1, r2); // ARM_CAPTURE(16) + // start ro stream a few cycles after arm + trigger + fork + ro_stream_constant(N_AVG, 16'sd100, 16'sd200, 4); + begin + repeat (8) @(posedge ro_clk); + ro_trigger(); + end + join + + // Poll GET_STATUS until capture_done + begin + int t; + t = 0; + while (t < 100) begin + qp2_op(5'h10, 0, 0, 0, 0, r1, r2); + if (r2[1]) begin + $display("[%0t] capture_done observed (samples_remaining=%0d)", + $time, r1); + break; + end + t++; + end + if (t >= 100) begin + $display("[%0t] FAIL: capture_done never observed", $time); + errors++; + end + end + + // 4. GET_IQ_AVG -> expect (100, 200) + $display("---- 4. GET_IQ_AVG ----"); + qp2_op(5'h07, 0, 0, 0, 0, r1, r2); + check_int("I_avg", $signed(r1), 32'sd100, 1); + check_int("Q_avg", $signed(r2), 32'sd200, 1); + + // 5. GET_POWER -> expect 100^2 + 200^2 = 50000 + $display("---- 5. GET_POWER ----"); + qp2_op(5'h08, 0, 0, 0, 0, r1, r2); + check_int("power", r1, 50000, 2); + + // 6. KW_STEP with dp>0, k=0 -> x: 65536 -> 70536 (step=+5000) + $display("---- 6. KW_STEP (dp>0) ----"); + qp2_op(5'h0A, 32'sd1000, 32'd0, 0, 0, r1, r2); + check_int("x_new", $signed(r1), 32'sd70536, 1); + + // 6b. GET_X + qp2_op(5'h0B, 0, 0, 0, 0, r1, r2); + check_int("x_after_step", $signed(r1), 32'sd70536, 1); + + // 7. BISECT_INIT + BISECT_STEP loop: peak / left at edge=400 + $display("---- 7. BISECT (peak/left, edge~400) ----"); + // dt4: bit0=side_left=1, bit1=polarity_peak=1 -> dt4=2'b11 + qp2_op(5'h0D, 32'd0, 32'd1024, 32'd4, 32'd3, r1, r2); // BISECT_INIT + for (int it = 0; it < 16; it++) begin + int x_mid; + int dx; + int p; + // Read mid_next + qp2_op(5'h0F, 0, 0, 0, 0, r1, r2); // GET_BISECT + x_mid = (r1 + r2) >> 1; + dx = (x_mid > 512) ? (x_mid - 512) : (512 - x_mid); + p = 32768 - dx*64; if (p < 0) p = 0; + qp2_op(5'h0E, p, 32'd16000, 0, 0, r1, r2); // BISECT_STEP + if (r2[0]) begin + $display("[%0t] bisect converged at iter %0d", $time, it); + break; + end + end + qp2_op(5'h0F, 0, 0, 0, 0, r1, r2); + if (r1 <= 32'd400 && 32'd400 <= r2) begin + $display("[%0t] PASS bisect.range: [%0d, %0d] contains 400", + $time, r1, r2); + passes++; + end else begin + $display("[%0t] FAIL bisect.range: [%0d, %0d] does not contain 400", + $time, r1, r2); + errors++; + end + + $display("==== tb_adaptive_sweep done: %0d passes, %0d errors ====", + passes, errors); + if (errors == 0) $display("RESULT: ALL PASS"); + else $display("RESULT: %0d FAIL", errors); + $finish; + end + + initial begin + #2000000; + $display("[%0t] WATCHDOG: simulation timeout", $time); + $finish; + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/tb/tb_bisect_control.sv b/firmware/ip/adaptive_sweep/src/tb/tb_bisect_control.sv new file mode 100644 index 000000000..41e3634ea --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/tb/tb_bisect_control.sv @@ -0,0 +1,165 @@ +`timescale 1ns / 1ps +// +// tb_bisect_control.sv +// +// Unit testbench for bisect_control.v. Verifies that on a synthetic peak +// curve the bisection narrows to within `tol` in the expected number of +// steps for all four (polarity, side) corners. +// + +module tb_bisect_control; + + localparam int X_WIDTH = 32; + localparam [X_WIDTH-1:0] LO0 = 32'd0; + localparam [X_WIDTH-1:0] HI0 = 32'd1024; + localparam [X_WIDTH-1:0] TOL = 32'd4; + localparam [X_WIDTH-1:0] EDGE = 32'd400; // synthetic edge location + + logic clk, rst_n; + logic init, step; + logic [X_WIDTH-1:0] lo_init, hi_init, tol_in; + logic side_left, polarity_peak; + logic [X_WIDTH-1:0] pow_mid, pow_thr; + logic [X_WIDTH-1:0] mid_next, lo_o, hi_o; + logic converged_o, valid_o; + + int errors = 0, passes = 0; + + initial clk = 0; + always #5 clk = ~clk; + + bisect_control #(.X_WIDTH(X_WIDTH)) dut ( + .clk (clk), + .rst_n (rst_n), + .init (init), + .lo_init (lo_init), + .hi_init (hi_init), + .side_left (side_left), + .polarity_peak(polarity_peak), + .tol_in (tol_in), + .step (step), + .pow_mid (pow_mid), + .pow_thr (pow_thr), + .mid_next (mid_next), + .lo_o (lo_o), + .hi_o (hi_o), + .converged_o (converged_o), + .valid_o (valid_o) + ); + + // Synthetic peak power curve, peak at x=512: + // pow(x) = max(0, 32768 - |x-512|*64) + // Threshold 16000 -> left edge at x=512-(32768-16000)/64=512-262=250 + // right edge at x=512+262=774 + function automatic [31:0] pow_peak(input [31:0] x); + int dx; + int p; + dx = (x > 512) ? (x - 512) : (512 - x); + p = 32768 - dx * 64; + if (p < 0) p = 0; + return p; + endfunction + + function automatic [31:0] pow_dip(input [31:0] x); + int dx; + int p; + dx = (x > 512) ? (x - 512) : (512 - x); + p = dx * 64; + if (p > 32768) p = 32768; + return p; + endfunction + + task automatic do_init(input [X_WIDTH-1:0] lo, input [X_WIDTH-1:0] hi, + input s_left, input p_peak, + input [X_WIDTH-1:0] tol); + @(posedge clk); + init <= 1; + lo_init <= lo; + hi_init <= hi; + side_left <= s_left; + polarity_peak <= p_peak; + tol_in <= tol; + @(posedge clk); + init <= 0; + endtask + + task automatic do_step(input [X_WIDTH-1:0] mid_x, + input bit peak); + int t; + @(posedge clk); + pow_mid <= peak ? pow_peak(mid_x) : pow_dip(mid_x); + pow_thr <= 32'd16000; + step <= 1; + @(posedge clk); + step <= 0; + t = 0; + while (!valid_o && t < 16) begin @(posedge clk); t++; end + endtask + + task automatic check_range(input string n, + input [X_WIDTH-1:0] lo, + input [X_WIDTH-1:0] hi, + input [X_WIDTH-1:0] target); + if (lo <= target && target <= hi) begin + $display("[%0t] PASS %s: [%0d, %0d] contains %0d", + $time, n, lo, hi, target); + passes++; + end else begin + $display("[%0t] FAIL %s: [%0d, %0d] does NOT contain %0d", + $time, n, lo, hi, target); + errors++; + end + endtask + + task automatic run_bisect(input bit s_left, input bit p_peak, + input [X_WIDTH-1:0] target_edge); + do_init(LO0, HI0, s_left, p_peak, TOL); + repeat (3) @(posedge clk); + for (int i = 0; i < 20; i++) begin + if (converged_o) break; + do_step(mid_next, p_peak); + end + check_range($sformatf("polarity=%0d side_left=%0d", p_peak, s_left), + lo_o, hi_o, target_edge); + endtask + + initial begin + rst_n = 0; + init = 0; step = 0; + lo_init = 0; hi_init = 0; tol_in = 0; + side_left = 0; polarity_peak = 0; + pow_mid = 0; pow_thr = 0; + repeat (5) @(posedge clk); + rst_n = 1; + repeat (3) @(posedge clk); + + // peak / left edge -> ~250 + $display("---- run peak/left ----"); + run_bisect(1'b1, 1'b1, 32'd250); + + // peak / right edge -> ~774 + $display("---- run peak/right ----"); + run_bisect(1'b0, 1'b1, 32'd774); + + // dip / left edge -> ~250 + $display("---- run dip/left ----"); + run_bisect(1'b1, 1'b0, 32'd250); + + // dip / right edge -> ~774 + $display("---- run dip/right ----"); + run_bisect(1'b0, 1'b0, 32'd774); + + $display("==== tb_bisect_control done: %0d passes, %0d errors ====", + passes, errors); + if (errors == 0) $display("RESULT: ALL PASS"); + else $display("RESULT: %0d FAIL", errors); + $finish; + end + + initial begin + #200000; + $display("[%0t] WATCHDOG: simulation timeout", $time); + $finish; + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/tb/tb_iq_power.sv b/firmware/ip/adaptive_sweep/src/tb/tb_iq_power.sv new file mode 100644 index 000000000..cefa8bb14 --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/tb/tb_iq_power.sv @@ -0,0 +1,139 @@ +`timescale 1ns / 1ps +// +// tb_iq_power.sv +// +// Unit testbench for iq_power.v. Streams a small set of (I, Q) corner +// vectors and checks power_o == I*I + Q*Q for each, with the documented +// 3-cycle latency. +// + +module tb_iq_power; + + localparam int IQ_WIDTH = 16; + localparam int POW_WIDTH = 32; + localparam int LAT = 3; // pipeline latency in cycles + + logic clk; + logic rst_n; + logic signed [IQ_WIDTH-1:0] i_in, q_in; + logic valid_in; + logic [POW_WIDTH-1:0] power_o; + logic valid_o; + + // Reference shift register so we can compare delayed input to current output + logic signed [IQ_WIDTH-1:0] i_pipe [0:LAT-1]; + logic signed [IQ_WIDTH-1:0] q_pipe [0:LAT-1]; + logic v_pipe [0:LAT-1]; + + int errors = 0; + int passes = 0; + + initial clk = 0; + always #5 clk = ~clk; + + iq_power #( + .IQ_WIDTH (IQ_WIDTH), + .POW_WIDTH(POW_WIDTH) + ) dut ( + .clk (clk), + .rst_n (rst_n), + .i_in (i_in), + .q_in (q_in), + .valid_in(valid_in), + .power_o (power_o), + .valid_o (valid_o) + ); + + // shift the pipeline every cycle + always @(posedge clk) begin + if (!rst_n) begin + for (int k = 0; k < LAT; k++) begin + i_pipe[k] <= '0; + q_pipe[k] <= '0; + v_pipe[k] <= 1'b0; + end + end else begin + i_pipe[0] <= i_in; + q_pipe[0] <= q_in; + v_pipe[0] <= valid_in; + for (int k = 1; k < LAT; k++) begin + i_pipe[k] <= i_pipe[k-1]; + q_pipe[k] <= q_pipe[k-1]; + v_pipe[k] <= v_pipe[k-1]; + end + end + end + + // Continuous self-check: when valid_o goes high, power_o must equal + // (i_pipe[LAT-1])^2 + (q_pipe[LAT-1])^2 + always @(posedge clk) begin + if (rst_n && valid_o) begin + automatic logic [POW_WIDTH-1:0] expected = + $signed(i_pipe[LAT-1]) * $signed(i_pipe[LAT-1]) + + $signed(q_pipe[LAT-1]) * $signed(q_pipe[LAT-1]); + if (power_o === expected) begin + passes++; + end else begin + $display("[%0t] FAIL: I=%0d Q=%0d -> got=%0d exp=%0d", + $time, i_pipe[LAT-1], q_pipe[LAT-1], + power_o, expected); + errors++; + end + end + end + + task automatic drive(input signed [IQ_WIDTH-1:0] iv, + input signed [IQ_WIDTH-1:0] qv); + @(posedge clk); + i_in <= iv; + q_in <= qv; + valid_in <= 1'b1; + @(posedge clk); + valid_in <= 1'b0; + i_in <= '0; + q_in <= '0; + endtask + + initial begin + rst_n = 0; + i_in = 0; + q_in = 0; + valid_in = 0; + repeat (5) @(posedge clk); + rst_n = 1; + repeat (3) @(posedge clk); + + // Corner cases + drive( 0, 0); + drive( 16'sh7FFF, 0); // max positive I + drive( 0, 16'sh7FFF); // max positive Q + drive(-16'sh8000, 0); // max negative I + drive( 0, -16'sh8000); // max negative Q + drive( 16'sh7FFF, 16'sh7FFF); // both max positive + drive(-16'sh8000, -16'sh8000); // both max negative + drive( 16'sd100, 16'sd200); // small values + drive(-16'sd100, 16'sd200); // mixed signs + drive( 16'sd1234, -16'sd5678); + + // Random walk + for (int n = 0; n < 64; n++) begin + drive($random, $random); + end + + // Drain pipeline + repeat (LAT + 5) @(posedge clk); + + $display("==== tb_iq_power done: %0d passes, %0d errors ====", + passes, errors); + if (errors == 0) $display("RESULT: ALL PASS"); + else $display("RESULT: %0d FAIL", errors); + $finish; + end + + initial begin + #20000; + $display("[%0t] WATCHDOG: simulation timeout", $time); + $finish; + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/tb/tb_kw_steps.sv b/firmware/ip/adaptive_sweep/src/tb/tb_kw_steps.sv new file mode 100644 index 000000000..407c265de --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/tb/tb_kw_steps.sv @@ -0,0 +1,214 @@ +`timescale 1ns / 1ps +// +// tb_kw_steps.sv +// +// Unit testbench for kw_steps.v. Exercises: +// T1: load LUT with halve-every-16 schedule (AK0=1000) +// T2: dp_signed > 0 -> x increases by LUT[k] +// T3: dp_signed < 0 -> x decreases by LUT[k] +// T4: dp_signed = 0 -> x unchanged, conv_flag=1 +// T5: x_sum below x_min -> clamp to x_min +// T6: x_sum above x_max -> clamp to x_max +// T7: conv_flag asserts when |LUT[k]| < KW_TOL +// + +module tb_kw_steps; + + localparam int X_WIDTH = 32; + localparam int LUT_DEPTH = 256; + localparam int LUT_AW = 8; + localparam [X_WIDTH-1:0] KW_TOL = 32'h0000_07D0; // 2000 + + localparam int LAT = 5; // step_trigger -> valid_o latency + + logic clk; + logic rst_n; + logic lut_we; + logic [LUT_AW-1:0] lut_addr; + logic signed [X_WIDTH-1:0] lut_din; + logic step_trigger; + logic signed [X_WIDTH-1:0] dp_signed; + logic [LUT_AW-1:0] k_idx; + logic signed [X_WIDTH-1:0] x_in, x_min, x_max; + logic signed [X_WIDTH-1:0] x_out; + logic conv_flag; + logic valid_o; + + int errors = 0, passes = 0; + + initial clk = 0; + always #5 clk = ~clk; + + kw_steps #( + .X_WIDTH (X_WIDTH), + .LUT_DEPTH(LUT_DEPTH), + .LUT_AW (LUT_AW), + .KW_TOL (KW_TOL) + ) dut ( + .clk (clk), + .rst_n (rst_n), + .lut_we (lut_we), + .lut_addr (lut_addr), + .lut_din (lut_din), + .step_trigger(step_trigger), + .dp_signed (dp_signed), + .k_idx (k_idx), + .x_in (x_in), + .x_min (x_min), + .x_max (x_max), + .x_out (x_out), + .conv_flag (conv_flag), + .valid_o (valid_o) + ); + + // ---------------- Helpers ---------------- + task automatic load_lut(input [LUT_AW-1:0] addr, + input signed [X_WIDTH-1:0] val); + @(posedge clk); + lut_we <= 1'b1; + lut_addr <= addr; + lut_din <= val; + @(posedge clk); + lut_we <= 1'b0; + endtask + + task automatic do_step(input signed [X_WIDTH-1:0] dp, + input [LUT_AW-1:0] kk, + input signed [X_WIDTH-1:0] xi, + input signed [X_WIDTH-1:0] xmn, + input signed [X_WIDTH-1:0] xmx, + output signed [X_WIDTH-1:0] xo, + output cf); + int t; + @(posedge clk); + dp_signed <= dp; + k_idx <= kk; + x_in <= xi; + x_min <= xmn; + x_max <= xmx; + step_trigger <= 1'b1; + @(posedge clk); + step_trigger <= 1'b0; + // wait for valid_o + t = 0; + while (!valid_o && t < 32) begin + @(posedge clk); + t++; + end + if (!valid_o) begin + $display("[%0t] ERROR: timeout waiting for valid_o", $time); + errors++; + xo = 0; cf = 0; + end else begin + xo = x_out; + cf = conv_flag; + end + endtask + + task automatic check_int(input string n, + input signed [X_WIDTH-1:0] got, + input signed [X_WIDTH-1:0] exp); + if (got === exp) begin + $display("[%0t] PASS %s: %0d", $time, n, got); + passes++; + end else begin + $display("[%0t] FAIL %s: got=%0d exp=%0d", $time, n, got, exp); + errors++; + end + endtask + + task automatic check_bit(input string n, input got, input exp); + if (got === exp) begin + $display("[%0t] PASS %s: %0b", $time, n, got); + passes++; + end else begin + $display("[%0t] FAIL %s: got=%0b exp=%0b", $time, n, got, exp); + errors++; + end + endtask + + // ---------------- Stimulus ---------------- + signed [X_WIDTH-1:0] xo; + bit cf; + + initial begin + rst_n = 0; + lut_we = 0; + lut_addr = 0; + lut_din = 0; + step_trigger = 0; + dp_signed = 0; + k_idx = 0; + x_in = 0; + x_min = 0; + x_max = 0; + repeat (5) @(posedge clk); + rst_n = 1; + repeat (3) @(posedge clk); + + // T1: load LUT with halve-every-16 schedule (AK0=1000) + $display("---- T1: load LUT ----"); + for (int k = 0; k < 256; k++) begin + int sh; + sh = k / 16; // halve every 16 + load_lut(k[LUT_AW-1:0], 32'sd1000 >>> sh); + end + + // T2: dp > 0, k=0 -> step = +1000, x: 5000 -> 6000. + // |step|=1000 < KW_TOL=2000 -> conv=1. + $display("---- T2: dp>0 ----"); + do_step(32'sd100, 8'd0, 32'sd5000, -32'sd1000000, 32'sd1000000, xo, cf); + check_int("T2.x_out", xo, 32'sd6000); + check_bit("T2.conv_flag", cf, 1'b1); + + // T3: dp<0, k=0 -> step = -1000, x: 5000 -> 4000 + $display("---- T3: dp<0 ----"); + do_step(-32'sd100, 8'd0, 32'sd5000, -32'sd1000000, 32'sd1000000, xo, cf); + check_int("T3.x_out", xo, 32'sd4000); + + // T4: dp=0 -> step=0, x unchanged, conv=1 + $display("---- T4: dp=0 ----"); + do_step(32'sd0, 8'd0, 32'sd5000, -32'sd1000000, 32'sd1000000, xo, cf); + check_int("T4.x_out", xo, 32'sd5000); + check_bit("T4.conv_flag", cf, 1'b1); + + // T5: clamp to x_min + $display("---- T5: clamp to x_min ----"); + do_step(-32'sd1, 8'd0, 32'sd100, 32'sd0, 32'sd1000000, xo, cf); + // step = -1000, x_in = 100, x_sum = -900, clamp to x_min=0 + check_int("T5.x_out", xo, 32'sd0); + + // T6: clamp to x_max + $display("---- T6: clamp to x_max ----"); + do_step(32'sd1, 8'd0, 32'sd999900, 32'sd0, 32'sd1000000, xo, cf); + // step = +1000, x_in = 999900, x_sum = 1000900, clamp to x_max=1000000 + check_int("T6.x_out", xo, 32'sd1000000); + + // T7: conv flag for |step| sh=5 -> step=1000>>5=31, conv=1) + $display("---- T7: conv_flag asserts ----"); + do_step(32'sd1, 8'd80, 32'sd5000, -32'sd1000000, 32'sd1000000, xo, cf); + check_bit("T7.conv_flag", cf, 1'b1); + + // Conv flag does NOT assert for k=0 since 1000<2000? actually 1000<2000 IS true, + // so conv=1 at k=0 too. Use a smaller tol or larger LUT entries to test the + // "not converged" branch: + load_lut(8'd5, 32'sd5000); // bigger than KW_TOL=2000 + $display("---- T7b: conv_flag negates ----"); + do_step(32'sd1, 8'd5, 32'sd5000, -32'sd1000000, 32'sd1000000, xo, cf); + check_int("T7b.x_out", xo, 32'sd10000); + check_bit("T7b.conv_flag", cf, 1'b0); // |5000|>=2000 -> not converged + + $display("==== tb_kw_steps done: %0d passes, %0d errors ====", + passes, errors); + if (errors == 0) $display("RESULT: ALL PASS"); + else $display("RESULT: %0d FAIL", errors); + $finish; + end + + initial begin + #100000; + $display("[%0t] WATCHDOG: simulation timeout", $time); + $finish; + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/tb/tb_polyak_avg.sv b/firmware/ip/adaptive_sweep/src/tb/tb_polyak_avg.sv new file mode 100644 index 000000000..b7a2d1be6 --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/tb/tb_polyak_avg.sv @@ -0,0 +1,212 @@ +`timescale 1ns / 1ps +// +// tb_polyak_avg.sv +// +// Unit testbench for polyak_averager.v. Exercises: +// T1: 16 constant samples (positive) -> xbar == sample +// T2: 16 ramp samples 1..16 -> xbar == 8 (floor of 8.5) +// T3: 16 negative samples -> xbar == sample (signed) +// T4: two back-to-back chunks -> chunk_close fires twice, +// xbar_delta_o tracks change +// T5: soft_reset clears state -> next chunk starts fresh +// +// Pass criterion: every assertion holds (counted) and $finish reached. +// 100 MHz clock (10 ns) — exact value irrelevant for behavior, RFSoC +// timing closure is checked in synthesis, not simulation. +// + +module tb_polyak_avg; + + // ----------------- Parameters ----------------- + localparam integer SAMPLE_WIDTH = 16; + localparam integer SUM_WIDTH = 48; + localparam integer AVG_WIDTH = 32; + localparam integer RECIP_WIDTH = 32; + localparam integer COUNT_WIDTH = 16; + + // For n_avg = 16: reciprocal = ceil(2^32 / 16) = 268_435_456 + localparam logic [RECIP_WIDTH-1:0] RECIP_16 = 32'd268435456; + localparam logic [3:0] CHUNK_LOG2_16 = 4'd4; + + // ----------------- DUT signals ----------------- + logic clk; + logic rst_n; + logic signed [SAMPLE_WIDTH-1:0] sample_in; + logic sample_valid; + logic [RECIP_WIDTH-1:0] reciprocal_in; + logic [3:0] chunk_size_log2; + logic soft_reset; + logic signed [AVG_WIDTH-1:0] xbar_o; + logic [AVG_WIDTH-1:0] xbar_delta_o; + logic [COUNT_WIDTH-1:0] count_o; + logic valid_o; + + // ----------------- Bookkeeping ----------------- + int errors = 0; + int passes = 0; + + // ----------------- Clock ----------------- + initial clk = 0; + always #5 clk = ~clk; // 100 MHz + + // ----------------- DUT ----------------- + polyak_averager #( + .SAMPLE_WIDTH (SAMPLE_WIDTH), + .SUM_WIDTH (SUM_WIDTH), + .AVG_WIDTH (AVG_WIDTH), + .RECIP_WIDTH (RECIP_WIDTH), + .COUNT_WIDTH (COUNT_WIDTH) + ) dut ( + .clk (clk), + .rst_n (rst_n), + .sample_in (sample_in), + .sample_valid (sample_valid), + .reciprocal_in (reciprocal_in), + .chunk_size_log2 (chunk_size_log2), + .soft_reset (soft_reset), + .xbar_o (xbar_o), + .xbar_delta_o (xbar_delta_o), + .count_o (count_o), + .valid_o (valid_o) + ); + + // ----------------- Tasks ----------------- + task automatic feed_sample(input signed [SAMPLE_WIDTH-1:0] v); + @(posedge clk); + sample_in <= v; + sample_valid <= 1'b1; + @(posedge clk); + sample_valid <= 1'b0; + endtask + + // wait until valid_o pulses (1 cycle pulse), capture xbar + task automatic wait_for_valid(output signed [AVG_WIDTH-1:0] xbar_captured, + output [AVG_WIDTH-1:0] delta_captured); + int timeout; + timeout = 0; + while (!valid_o && timeout < 200) begin + @(posedge clk); + timeout++; + end + if (!valid_o) begin + $display("[%0t] ERROR: timeout waiting for valid_o", $time); + errors++; + end else begin + xbar_captured = xbar_o; + delta_captured = xbar_delta_o; + end + @(posedge clk); + endtask + + task automatic check(input string name, + input signed [AVG_WIDTH-1:0] got, + input signed [AVG_WIDTH-1:0] exp, + input integer tol); + if (got > exp ? (got - exp) : (exp - got) <= tol) begin + $display("[%0t] PASS %s: got=%0d exp=%0d (tol=%0d)", + $time, name, got, exp, tol); + passes++; + end else begin + $display("[%0t] FAIL %s: got=%0d exp=%0d (tol=%0d)", + $time, name, got, exp, tol); + errors++; + end + endtask + + task automatic do_soft_reset(); + @(posedge clk); + soft_reset <= 1'b1; + @(posedge clk); + soft_reset <= 1'b0; + endtask + + // ----------------- Stimulus ----------------- + signed [AVG_WIDTH-1:0] xbar_cap; + [AVG_WIDTH-1:0] delta_cap; + + initial begin + // Init + rst_n = 0; + sample_in = 0; + sample_valid = 0; + reciprocal_in = RECIP_16; + chunk_size_log2 = CHUNK_LOG2_16; + soft_reset = 0; + repeat (5) @(posedge clk); + rst_n = 1; + repeat (3) @(posedge clk); + + // ----------------------------------------- + // T1: 16 constant samples == 100 -> xbar==100 + // ----------------------------------------- + $display("---- T1: constant 100 ----"); + for (int i = 0; i < 16; i++) feed_sample(16'sd100); + wait_for_valid(xbar_cap, delta_cap); + check("T1.xbar", xbar_cap, 32'sd100, 1); + + // ----------------------------------------- + // T2: ramp 1..16 -> sum=136, xbar=floor(136/16)=8 + // ----------------------------------------- + $display("---- T2: ramp 1..16 ----"); + do_soft_reset(); + for (int i = 1; i <= 16; i++) feed_sample(i); + wait_for_valid(xbar_cap, delta_cap); + check("T2.xbar", xbar_cap, 32'sd8, 1); + + // ----------------------------------------- + // T3: 16 samples == -250 -> xbar == -250 + // ----------------------------------------- + $display("---- T3: constant -250 ----"); + do_soft_reset(); + for (int i = 0; i < 16; i++) feed_sample(-16'sd250); + wait_for_valid(xbar_cap, delta_cap); + check("T3.xbar", xbar_cap, -32'sd250, 1); + + // ----------------------------------------- + // T4: two back-to-back chunks, second chunk has different value + // ----------------------------------------- + $display("---- T4: two chunks 100 then 200 ----"); + do_soft_reset(); + for (int i = 0; i < 16; i++) feed_sample(16'sd100); + wait_for_valid(xbar_cap, delta_cap); + check("T4.first.xbar", xbar_cap, 32'sd100, 1); + for (int i = 0; i < 16; i++) feed_sample(16'sd200); + wait_for_valid(xbar_cap, delta_cap); + // Cumulative average across 32 samples: (16*100 + 16*200)/32 = 150 + // BUT this module averages PER chunk (sum reset implicitly between chunks?). + // Our implementation lets `sum` accumulate across chunks, so second-chunk + // sum = 16*100 + 16*200 = 4800; xbar = 4800 * recip / 2^32. + // recip is for n=16, so xbar ~= 4800 / 16 = 300 (not 150). + // The "running average" interpretation would need the ARM to update recip. + // For this TB we verify the documented behavior: sum carries over. + check("T4.second.xbar(carried-sum)", xbar_cap, 32'sd300, 2); + // delta vs first xbar (100) -> ~200 + check("T4.delta", $signed(delta_cap), 32'sd200, 2); + + // ----------------------------------------- + // T5: soft_reset clears state, third chunk all 50 -> xbar=50 + // ----------------------------------------- + $display("---- T5: soft_reset then constant 50 ----"); + do_soft_reset(); + for (int i = 0; i < 16; i++) feed_sample(16'sd50); + wait_for_valid(xbar_cap, delta_cap); + check("T5.xbar", xbar_cap, 32'sd50, 1); + + // ----------------------------------------- + // Summary + // ----------------------------------------- + $display("==== tb_polyak_avg done: %0d passes, %0d errors ====", + passes, errors); + if (errors == 0) $display("RESULT: ALL PASS"); + else $display("RESULT: %0d FAIL", errors); + $finish; + end + + // ----------------- Watchdog ----------------- + initial begin + #50000; + $display("[%0t] WATCHDOG: simulation timeout", $time); + $finish; + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/src/tb/tb_readout_capture.sv b/firmware/ip/adaptive_sweep/src/tb/tb_readout_capture.sv new file mode 100644 index 000000000..19cb516bb --- /dev/null +++ b/firmware/ip/adaptive_sweep/src/tb/tb_readout_capture.sv @@ -0,0 +1,169 @@ +`timescale 1ns / 1ps +// +// tb_readout_capture.sv +// +// Unit testbench for readout_capture.v. Generates ro_clk = 307.2 MHz and +// c_clk = 200 MHz, drives a stream of indexed I/Q samples on the ro_clk +// AXIS slave port, fires a trigger mid-stream, and verifies that exactly +// n_samples samples cross to the c_clk side in order. +// + +module tb_readout_capture; + + localparam int IQ_WIDTH = 16; + localparam int FIFO_DEPTH_LOG2 = 6; + localparam int COUNT_WIDTH = 16; + localparam int N_SAMPLES = 16; + + // Clocks + logic clk; + logic ro_clk; + initial clk = 0; + initial ro_clk = 0; + always #2.5 clk = ~clk; // 200 MHz + always #1.6275 ro_clk = ~ro_clk; // ~307.2 MHz + + // Resets + logic rst_n; + logic ro_aresetn; + + // c_clk control + logic arm_pulse; + logic [COUNT_WIDTH-1:0] n_samples; + logic capture_done; + logic signed [IQ_WIDTH-1:0] i_out, q_out; + logic iq_valid; + logic iq_ready; + logic [COUNT_WIDTH-1:0] samples_remaining; + + // ro_clk AXIS + logic [2*IQ_WIDTH-1:0] ro_tdata; + logic ro_tvalid; + logic ro_tready; + logic trigger; + + int errors = 0, passes = 0; + + readout_capture #( + .IQ_WIDTH (IQ_WIDTH), + .FIFO_DEPTH_LOG2(FIFO_DEPTH_LOG2), + .COUNT_WIDTH (COUNT_WIDTH) + ) dut ( + .clk (clk), + .rst_n (rst_n), + .arm_pulse (arm_pulse), + .n_samples (n_samples), + .capture_done_o (capture_done), + .i_out (i_out), + .q_out (q_out), + .iq_valid (iq_valid), + .iq_ready (iq_ready), + .samples_remaining(samples_remaining), + + .s_ro_axis_aclk (ro_clk), + .s_ro_axis_aresetn (ro_aresetn), + .s_ro_axis_tdata (ro_tdata), + .s_ro_axis_tvalid (ro_tvalid), + .s_ro_axis_tready (ro_tready), + .trigger_i (trigger) + ); + + // Continuous I/Q stream on ro_clk. i = counter, q = -counter. + int sample_cnt; + always @(posedge ro_clk) begin + if (!ro_aresetn) begin + sample_cnt <= 0; + ro_tdata <= '0; + ro_tvalid <= 1'b0; + end else begin + ro_tvalid <= 1'b1; + // Q in upper, I in lower + ro_tdata <= {(-sample_cnt[IQ_WIDTH-1:0]), sample_cnt[IQ_WIDTH-1:0]}; + sample_cnt <= sample_cnt + 1; + end + end + + // Drain the FIFO at full rate so we observe every captured sample + assign iq_ready = 1'b1; + + // Capture observed samples for checking + int observed = 0; + int first_i = -1; + always @(posedge clk) begin + if (rst_n && iq_valid && iq_ready) begin + if (first_i == -1) first_i = i_out; + observed <= observed + 1; + end + end + + initial begin + rst_n = 0; + ro_aresetn = 0; + arm_pulse = 0; + n_samples = N_SAMPLES; + trigger = 0; + observed = 0; + first_i = -1; + repeat (10) @(posedge clk); + rst_n = 1; + ro_aresetn = 1; + repeat (20) @(posedge clk); + + // Arm capture + @(posedge clk); + arm_pulse <= 1; + @(posedge clk); + arm_pulse <= 0; + + // Wait some ro_clk cycles, then fire trigger + repeat (50) @(posedge ro_clk); + @(posedge ro_clk); + trigger <= 1; + @(posedge ro_clk); + trigger <= 0; + + // Wait for capture_done + begin + int t; + t = 0; + while (!capture_done && t < 5000) begin + @(posedge clk); + t++; + end + if (!capture_done) begin + $display("[%0t] FAIL: capture_done never asserted", $time); + errors++; + end else begin + $display("[%0t] PASS: capture_done asserted", $time); + passes++; + end + end + + // Drain FIFO + repeat (200) @(posedge clk); + + // Check exactly N_SAMPLES were observed + if (observed === N_SAMPLES) begin + $display("[%0t] PASS: observed=%0d == N_SAMPLES=%0d", + $time, observed, N_SAMPLES); + passes++; + end else begin + $display("[%0t] FAIL: observed=%0d != N_SAMPLES=%0d", + $time, observed, N_SAMPLES); + errors++; + end + + $display("==== tb_readout_capture done: %0d passes, %0d errors ====", + passes, errors); + if (errors == 0) $display("RESULT: ALL PASS"); + else $display("RESULT: %0d FAIL", errors); + $finish; + end + + initial begin + #1000000; + $display("[%0t] WATCHDOG: simulation timeout", $time); + $finish; + end + +endmodule diff --git a/firmware/ip/adaptive_sweep/xgui/adaptive_sweep_v1_0.tcl b/firmware/ip/adaptive_sweep/xgui/adaptive_sweep_v1_0.tcl new file mode 100644 index 000000000..25a1ee5d1 --- /dev/null +++ b/firmware/ip/adaptive_sweep/xgui/adaptive_sweep_v1_0.tcl @@ -0,0 +1,136 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + ipgui::add_page $IPINST -name "Page 0" + + +} + +proc update_PARAM_VALUE.COUNT_WIDTH { PARAM_VALUE.COUNT_WIDTH } { + # Procedure called to update COUNT_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.COUNT_WIDTH { PARAM_VALUE.COUNT_WIDTH } { + # Procedure called to validate COUNT_WIDTH + return true +} + +proc update_PARAM_VALUE.IQ_WIDTH { PARAM_VALUE.IQ_WIDTH } { + # Procedure called to update IQ_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.IQ_WIDTH { PARAM_VALUE.IQ_WIDTH } { + # Procedure called to validate IQ_WIDTH + return true +} + +proc update_PARAM_VALUE.KW_TOL { PARAM_VALUE.KW_TOL } { + # Procedure called to update KW_TOL when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.KW_TOL { PARAM_VALUE.KW_TOL } { + # Procedure called to validate KW_TOL + return true +} + +proc update_PARAM_VALUE.LUT_AW { PARAM_VALUE.LUT_AW } { + # Procedure called to update LUT_AW when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.LUT_AW { PARAM_VALUE.LUT_AW } { + # Procedure called to validate LUT_AW + return true +} + +proc update_PARAM_VALUE.LUT_DEPTH { PARAM_VALUE.LUT_DEPTH } { + # Procedure called to update LUT_DEPTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.LUT_DEPTH { PARAM_VALUE.LUT_DEPTH } { + # Procedure called to validate LUT_DEPTH + return true +} + +proc update_PARAM_VALUE.POW_WIDTH { PARAM_VALUE.POW_WIDTH } { + # Procedure called to update POW_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.POW_WIDTH { PARAM_VALUE.POW_WIDTH } { + # Procedure called to validate POW_WIDTH + return true +} + +proc update_PARAM_VALUE.RO_FIFO_DEPTH_LOG2 { PARAM_VALUE.RO_FIFO_DEPTH_LOG2 } { + # Procedure called to update RO_FIFO_DEPTH_LOG2 when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.RO_FIFO_DEPTH_LOG2 { PARAM_VALUE.RO_FIFO_DEPTH_LOG2 } { + # Procedure called to validate RO_FIFO_DEPTH_LOG2 + return true +} + +proc update_PARAM_VALUE.SUM_WIDTH { PARAM_VALUE.SUM_WIDTH } { + # Procedure called to update SUM_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.SUM_WIDTH { PARAM_VALUE.SUM_WIDTH } { + # Procedure called to validate SUM_WIDTH + return true +} + +proc update_PARAM_VALUE.X_WIDTH { PARAM_VALUE.X_WIDTH } { + # Procedure called to update X_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.X_WIDTH { PARAM_VALUE.X_WIDTH } { + # Procedure called to validate X_WIDTH + return true +} + + +proc update_MODELPARAM_VALUE.LUT_DEPTH { MODELPARAM_VALUE.LUT_DEPTH PARAM_VALUE.LUT_DEPTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.LUT_DEPTH}] ${MODELPARAM_VALUE.LUT_DEPTH} +} + +proc update_MODELPARAM_VALUE.LUT_AW { MODELPARAM_VALUE.LUT_AW PARAM_VALUE.LUT_AW } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.LUT_AW}] ${MODELPARAM_VALUE.LUT_AW} +} + +proc update_MODELPARAM_VALUE.X_WIDTH { MODELPARAM_VALUE.X_WIDTH PARAM_VALUE.X_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.X_WIDTH}] ${MODELPARAM_VALUE.X_WIDTH} +} + +proc update_MODELPARAM_VALUE.IQ_WIDTH { MODELPARAM_VALUE.IQ_WIDTH PARAM_VALUE.IQ_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.IQ_WIDTH}] ${MODELPARAM_VALUE.IQ_WIDTH} +} + +proc update_MODELPARAM_VALUE.SUM_WIDTH { MODELPARAM_VALUE.SUM_WIDTH PARAM_VALUE.SUM_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.SUM_WIDTH}] ${MODELPARAM_VALUE.SUM_WIDTH} +} + +proc update_MODELPARAM_VALUE.POW_WIDTH { MODELPARAM_VALUE.POW_WIDTH PARAM_VALUE.POW_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.POW_WIDTH}] ${MODELPARAM_VALUE.POW_WIDTH} +} + +proc update_MODELPARAM_VALUE.COUNT_WIDTH { MODELPARAM_VALUE.COUNT_WIDTH PARAM_VALUE.COUNT_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.COUNT_WIDTH}] ${MODELPARAM_VALUE.COUNT_WIDTH} +} + +proc update_MODELPARAM_VALUE.RO_FIFO_DEPTH_LOG2 { MODELPARAM_VALUE.RO_FIFO_DEPTH_LOG2 PARAM_VALUE.RO_FIFO_DEPTH_LOG2 } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.RO_FIFO_DEPTH_LOG2}] ${MODELPARAM_VALUE.RO_FIFO_DEPTH_LOG2} +} + +proc update_MODELPARAM_VALUE.KW_TOL { MODELPARAM_VALUE.KW_TOL PARAM_VALUE.KW_TOL } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.KW_TOL}] ${MODELPARAM_VALUE.KW_TOL} +} + diff --git a/firmware/ip/axis_avg_buffer/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_avg_buffer/src/axi_mst_0/axi_mst_0.xci index 350ae6412..2c16196a6 100644 --- a/firmware/ip/axis_avg_buffer/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_avg_buffer/src/axi_mst_0/axi_mst_0.xci @@ -64,7 +64,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "xilinx.com:zcu216:part0:2.0" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], diff --git a/firmware/ip/axis_buffer_ddr/src/tb/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_buffer_ddr/src/tb/axi_mst_0/axi_mst_0.xci index 88ccced05..59d2d41ac 100644 --- a/firmware/ip/axis_buffer_ddr/src/tb/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_buffer_ddr/src/tb/axi_mst_0/axi_mst_0.xci @@ -64,7 +64,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "xilinx.com:zcu216:part0:2.0" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], diff --git a/firmware/ip/axis_buffer_ddr/src/tb/axi_slv_0/axi_slv_0.xci b/firmware/ip/axis_buffer_ddr/src/tb/axi_slv_0/axi_slv_0.xci index 3a16abf68..59254a729 100644 --- a/firmware/ip/axis_buffer_ddr/src/tb/axi_slv_0/axi_slv_0.xci +++ b/firmware/ip/axis_buffer_ddr/src/tb/axi_slv_0/axi_slv_0.xci @@ -64,7 +64,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "xilinx.com:zcu216:part0:2.0" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], diff --git a/firmware/ip/axis_dyn_readout_v1/src/dds_compiler_0/dds_compiler_0.xci b/firmware/ip/axis_dyn_readout_v1/src/dds_compiler_0/dds_compiler_0.xci index 3c5321ff6..5bd551ba8 100644 --- a/firmware/ip/axis_dyn_readout_v1/src/dds_compiler_0/dds_compiler_0.xci +++ b/firmware/ip/axis_dyn_readout_v1/src/dds_compiler_0/dds_compiler_0.xci @@ -163,7 +163,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], @@ -183,7 +183,7 @@ "OUTPUTDIR": [ { "value": "../../../../projects/qick_tprocv2_216_demo/top/top.tmp/axis_dyn_readout_v1_v1_0_project/axis_dyn_readout_v1_v1_0_project.gen/sources_1/ip/dds_compiler_0" } ], "SELECTEDSIMMODEL": [ { "value": "" } ], "SHAREDDIR": [ { "value": "." } ], - "SWVERSION": [ { "value": "2022.1" } ], + "SWVERSION": [ { "value": "2023.1" } ], "SYNTHESISFLOW": [ { "value": "GLOBAL" } ] } }, diff --git a/firmware/ip/axis_dyn_readout_v1/src/fir_compiler_0/fir_compiler_0.xci b/firmware/ip/axis_dyn_readout_v1/src/fir_compiler_0/fir_compiler_0.xci index b157ab253..59ca585ff 100644 --- a/firmware/ip/axis_dyn_readout_v1/src/fir_compiler_0/fir_compiler_0.xci +++ b/firmware/ip/axis_dyn_readout_v1/src/fir_compiler_0/fir_compiler_0.xci @@ -163,7 +163,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], @@ -348,4 +348,4 @@ } } } -} +} \ No newline at end of file diff --git a/firmware/ip/axis_kidsim_v3/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_kidsim_v3/src/axi_mst_0/axi_mst_0.xci index 88ccced05..59d2d41ac 100644 --- a/firmware/ip/axis_kidsim_v3/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_kidsim_v3/src/axi_mst_0/axi_mst_0.xci @@ -64,7 +64,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "xilinx.com:zcu216:part0:2.0" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], diff --git a/firmware/ip/axis_kidsim_v3/src/dds/dds_0/dds_0.xci b/firmware/ip/axis_kidsim_v3/src/dds/dds_0/dds_0.xci index fd8e3b87e..335e185fa 100644 --- a/firmware/ip/axis_kidsim_v3/src/dds/dds_0/dds_0.xci +++ b/firmware/ip/axis_kidsim_v3/src/dds/dds_0/dds_0.xci @@ -163,7 +163,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "xilinx.com:zcu216:part0:2.0" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], diff --git a/firmware/ip/axis_pfb_readout_v2/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_pfb_readout_v2/src/axi_mst_0/axi_mst_0.xci index ac9cf042c..08cc24e40 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/axi_mst_0/axi_mst_0.xci @@ -130,7 +130,7 @@ 0 0 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/dds_0/dds_0.xci b/firmware/ip/axis_pfb_readout_v2/src/dds_0/dds_0.xci index f65db0d9d..ab024c5f6 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/dds_0/dds_0.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/dds_0/dds_0.xci @@ -226,7 +226,7 @@ false 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_0/fir_0.xci b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_0/fir_0.xci index 64b9287c7..21c26f0c4 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_0/fir_0.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_0/fir_0.xci @@ -226,7 +226,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_1/fir_1.xci b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_1/fir_1.xci index 1db52de13..a09790f9b 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_1/fir_1.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_1/fir_1.xci @@ -226,7 +226,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_2/fir_2.xci b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_2/fir_2.xci index 0f0a644b8..f73be1298 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_2/fir_2.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_2/fir_2.xci @@ -226,7 +226,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_3/fir_3.xci b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_3/fir_3.xci index d0fd7e8ec..00b43c08c 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_3/fir_3.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_3/fir_3.xci @@ -226,7 +226,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_4/fir_4.xci b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_4/fir_4.xci index 48cef3abb..beec0de16 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_4/fir_4.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_4/fir_4.xci @@ -226,7 +226,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_5/fir_5.xci b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_5/fir_5.xci index be396b4ba..081c8e050 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_5/fir_5.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_5/fir_5.xci @@ -226,7 +226,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_6/fir_6.xci b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_6/fir_6.xci index fb143ce18..c3bad38d2 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_6/fir_6.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_6/fir_6.xci @@ -226,7 +226,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_7/fir_7.xci b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_7/fir_7.xci index bcf4c7433..c8d216e9b 100644 --- a/firmware/ip/axis_pfb_readout_v2/src/fir/fir_7/fir_7.xci +++ b/firmware/ip/axis_pfb_readout_v2/src/fir/fir_7/fir_7.xci @@ -226,7 +226,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v3/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_pfb_readout_v3/src/axi_mst_0/axi_mst_0.xci index 88ccced05..59d2d41ac 100644 --- a/firmware/ip/axis_pfb_readout_v3/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_pfb_readout_v3/src/axi_mst_0/axi_mst_0.xci @@ -64,7 +64,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "xilinx.com:zcu216:part0:2.0" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], diff --git a/firmware/ip/axis_pfb_readout_v3/src/dds/dds_0/dds_0.xci b/firmware/ip/axis_pfb_readout_v3/src/dds/dds_0/dds_0.xci index b6e5eac13..a9330cc07 100644 --- a/firmware/ip/axis_pfb_readout_v3/src/dds/dds_0/dds_0.xci +++ b/firmware/ip/axis_pfb_readout_v3/src/dds/dds_0/dds_0.xci @@ -227,7 +227,7 @@ false 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/dds/dds_0/dds_0.xci b/firmware/ip/axis_pfb_readout_v4/src/dds/dds_0/dds_0.xci index 6ef4c7e10..8f5cddc28 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/dds/dds_0/dds_0.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/dds/dds_0/dds_0.xci @@ -227,7 +227,7 @@ false 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_0/fir_0.xci b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_0/fir_0.xci index d3704deda..d2c321f12 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_0/fir_0.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_0/fir_0.xci @@ -227,7 +227,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_1/fir_1.xci b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_1/fir_1.xci index 09d60320e..b765f36ca 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_1/fir_1.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_1/fir_1.xci @@ -227,7 +227,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_2/fir_2.xci b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_2/fir_2.xci index 6c6b57bf4..b45c6cc1a 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_2/fir_2.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_2/fir_2.xci @@ -227,7 +227,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_3/fir_3.xci b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_3/fir_3.xci index 578e4d745..911d75062 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_3/fir_3.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_3/fir_3.xci @@ -227,7 +227,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_4/fir_4.xci b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_4/fir_4.xci index a711e889a..175dbc4f0 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_4/fir_4.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_4/fir_4.xci @@ -227,7 +227,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_5/fir_5.xci b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_5/fir_5.xci index 7a66fd719..2fd8c149d 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_5/fir_5.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_5/fir_5.xci @@ -227,7 +227,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_6/fir_6.xci b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_6/fir_6.xci index c5d236249..a31722ef1 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_6/fir_6.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_6/fir_6.xci @@ -227,7 +227,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_7/fir_7.xci b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_7/fir_7.xci index f3d90963c..ac48ef057 100644 --- a/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_7/fir_7.xci +++ b/firmware/ip/axis_pfb_readout_v4/src/pfb/fir/fir_7/fir_7.xci @@ -227,7 +227,7 @@ 0.5 2 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfba_pr_4x256_v1/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_pfba_pr_4x256_v1/src/axi_mst_0/axi_mst_0.xci index ac9cf042c..08cc24e40 100644 --- a/firmware/ip/axis_pfba_pr_4x256_v1/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_pfba_pr_4x256_v1/src/axi_mst_0/axi_mst_0.xci @@ -130,7 +130,7 @@ 0 0 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_pfbs_pr_4x256_v1/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_pfbs_pr_4x256_v1/src/axi_mst_0/axi_mst_0.xci index ac9cf042c..08cc24e40 100644 --- a/firmware/ip/axis_pfbs_pr_4x256_v1/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_pfbs_pr_4x256_v1/src/axi_mst_0/axi_mst_0.xci @@ -130,7 +130,7 @@ 0 0 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_readout_v2/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_readout_v2/src/axi_mst_0/axi_mst_0.xci index ac9cf042c..08cc24e40 100644 --- a/firmware/ip/axis_readout_v2/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_readout_v2/src/axi_mst_0/axi_mst_0.xci @@ -130,7 +130,7 @@ 0 0 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_sg_int4_v1/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_sg_int4_v1/src/axi_mst_0/axi_mst_0.xci index ac9cf042c..08cc24e40 100644 --- a/firmware/ip/axis_sg_int4_v1/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_sg_int4_v1/src/axi_mst_0/axi_mst_0.xci @@ -130,7 +130,7 @@ 0 0 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_sg_int4_v1/src/dds_compiler_0/dds_compiler_0.xci b/firmware/ip/axis_sg_int4_v1/src/dds_compiler_0/dds_compiler_0.xci index 562a7638f..a17fb5799 100644 --- a/firmware/ip/axis_sg_int4_v1/src/dds_compiler_0/dds_compiler_0.xci +++ b/firmware/ip/axis_sg_int4_v1/src/dds_compiler_0/dds_compiler_0.xci @@ -226,7 +226,7 @@ false 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_sg_int4_v1/src/fir_0/fir_0.xci b/firmware/ip/axis_sg_int4_v1/src/fir_0/fir_0.xci index e6289ddc3..708c11914 100644 --- a/firmware/ip/axis_sg_int4_v1/src/fir_0/fir_0.xci +++ b/firmware/ip/axis_sg_int4_v1/src/fir_0/fir_0.xci @@ -226,7 +226,7 @@ 0.5 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_sg_mux4_v1/src/dds_compiler_0/dds_compiler_0.xci b/firmware/ip/axis_sg_mux4_v1/src/dds_compiler_0/dds_compiler_0.xci index 274be99b6..f41a49ad6 100644 --- a/firmware/ip/axis_sg_mux4_v1/src/dds_compiler_0/dds_compiler_0.xci +++ b/firmware/ip/axis_sg_mux4_v1/src/dds_compiler_0/dds_compiler_0.xci @@ -226,7 +226,7 @@ false 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_sg_mux4_v2/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_sg_mux4_v2/src/axi_mst_0/axi_mst_0.xci index ac9cf042c..08cc24e40 100644 --- a/firmware/ip/axis_sg_mux4_v2/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_sg_mux4_v2/src/axi_mst_0/axi_mst_0.xci @@ -130,7 +130,7 @@ 0 0 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_sg_mux4_v2/src/dds_compiler_0/dds_compiler_0.xci b/firmware/ip/axis_sg_mux4_v2/src/dds_compiler_0/dds_compiler_0.xci index 6ae4d1670..3215c139e 100644 --- a/firmware/ip/axis_sg_mux4_v2/src/dds_compiler_0/dds_compiler_0.xci +++ b/firmware/ip/axis_sg_mux4_v2/src/dds_compiler_0/dds_compiler_0.xci @@ -226,7 +226,7 @@ false 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_sg_mux4_v3/src/dds_compiler_0/dds_compiler_0.xci b/firmware/ip/axis_sg_mux4_v3/src/dds_compiler_0/dds_compiler_0.xci index 3d3cffbbd..60a49cb87 100644 --- a/firmware/ip/axis_sg_mux4_v3/src/dds_compiler_0/dds_compiler_0.xci +++ b/firmware/ip/axis_sg_mux4_v3/src/dds_compiler_0/dds_compiler_0.xci @@ -227,7 +227,7 @@ false 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_signal_gen_v5/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/axis_signal_gen_v5/src/axi_mst_0/axi_mst_0.xci index ac9cf042c..08cc24e40 100644 --- a/firmware/ip/axis_signal_gen_v5/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/axis_signal_gen_v5/src/axi_mst_0/axi_mst_0.xci @@ -130,7 +130,7 @@ 0 0 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/axis_signal_gen_v5/src/dds_compiler_0/dds_compiler_0.xci b/firmware/ip/axis_signal_gen_v5/src/dds_compiler_0/dds_compiler_0.xci index 825c3173c..1c6aa12c9 100644 --- a/firmware/ip/axis_signal_gen_v5/src/dds_compiler_0/dds_compiler_0.xci +++ b/firmware/ip/axis_signal_gen_v5/src/dds_compiler_0/dds_compiler_0.xci @@ -226,7 +226,7 @@ false 1 zynquplusRFSOC - xilinx.com:zcu216:part0:2.0 + realdigital.org:rfsoc4x2:part0:1.0 xczu49dr ffvf1760 diff --git a/firmware/ip/fine_tuning_sweep/component.xml b/firmware/ip/fine_tuning_sweep/component.xml new file mode 100644 index 000000000..7b3c98e6f --- /dev/null +++ b/firmware/ip/fine_tuning_sweep/component.xml @@ -0,0 +1,584 @@ + + + emrhnozdemir + QICK + fine_tuning_sweep + 1.0 + + + s_axis + + + + + + + TDATA + + + s_axis_tdata + + + + + TVALID + + + s_axis_tvalid + + + + + TREADY + + + s_axis_tready + + + + + + rst_n + + + + + + + RST + + + rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + clk + + + + + + + CLK + + + clk + + + + + + ASSOCIATED_BUSIF + qick_peripheral:s_axis + + + ASSOCIATED_RESET + rst_n + + + + + qick_peripheral + + + + + + + Enable + + + qtag_en_i + + + + + Operation + + + qtag_op_i + + + + + a_dt + + + qtag_dt1_i + + + + + b_dt + + + qtag_dt2_i + + + + + c_dt + + + qtag_dt3_i + + + + + d_dt + + + qtag_dt4_i + + + + + rdy + + + qtag_rdy_o + + + + + dt_in_1 + + + qtag_dt1_o + + + + + dt_in_2 + + + qtag_dt2_o + + + + + dt_valid + + + qtag_vld_o + + + + + + NUM_READ_OUTSTANDING + + + + NUM_WRITE_OUTSTANDING + + + + + + + + + xilinx_anylanguagesynthesis + Synthesis + :vivado.xilinx.com:synthesis + Verilog + fine_tuning_sweep + + xilinx_anylanguagesynthesis_view_fileset + + + + viewChecksum + 4b193fb0 + + + + + xilinx_anylanguagebehavioralsimulation + Simulation + :vivado.xilinx.com:simulation + Verilog + fine_tuning_sweep + + xilinx_anylanguagebehavioralsimulation_view_fileset + + + + viewChecksum + 4b193fb0 + + + + + xilinx_testbench + Test Bench + :vivado.xilinx.com:simulation.testbench + tb_fine_tuning_sweep + + xilinx_testbench_view_fileset + + + + viewChecksum + 4102393e + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + ebd328eb + + + + + + + clk + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + rst_n + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_en_i + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_op_i + + in + + 4 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt1_i + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt2_i + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt3_i + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt4_i + + in + + 31 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_rdy_o + + out + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt1_o + + out + + 31 + 0 + + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_dt2_o + + out + + 31 + 0 + + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + qtag_vld_o + + out + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + s_axis_tvalid + + in + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + s_axis_tready + + out + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + s_axis_tdata + + in + + 63 + 0 + + + + wire + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + + + choice_list_9d8b0d81 + ACTIVE_HIGH + ACTIVE_LOW + + + + + xilinx_anylanguagesynthesis_view_fileset + + src/amplitude_calculator.v + verilogSource + IMPORTED_FILE + + + src/peak_finder.v + verilogSource + IMPORTED_FILE + + + src/fine_tuning_sweep.v + verilogSource + CHECKSUM_3b2fa475 + IMPORTED_FILE + + + + xilinx_anylanguagebehavioralsimulation_view_fileset + + src/amplitude_calculator.v + verilogSource + IMPORTED_FILE + + + src/peak_finder.v + verilogSource + IMPORTED_FILE + + + src/fine_tuning_sweep.v + verilogSource + IMPORTED_FILE + + + + xilinx_testbench_view_fileset + + src/tb_fine_tuning_sweep.sv + systemVerilogSource + IMPORTED_FILE + USED_IN_simulation + USED_IN_testbench + + + + xilinx_xpgui_view_fileset + + xgui/fine_tuning_sweep_v1_0.tcl + tclSource + CHECKSUM_b7d7cb27 + XGUI_VERSION_2 + + + + fine_tuning_sweep_v1_0 + + + Component_Name + fine_tuning_sweep_v1_0 + + + + + + artix7 + artix7l + aartix7 + qartix7 + zynq + qzynq + azynq + zynquplus + + + /UserIP + + fine_tuning_sweep_v1_0 + package_project + 38 + 2026-07-15T14:33:00Z + + + 2023.1 + + + + + + + diff --git a/firmware/ip/fine_tuning_sweep/src/amplitude_calculator.v b/firmware/ip/fine_tuning_sweep/src/amplitude_calculator.v new file mode 100644 index 000000000..fd470ecaa --- /dev/null +++ b/firmware/ip/fine_tuning_sweep/src/amplitude_calculator.v @@ -0,0 +1,189 @@ +`timescale 1ns / 1ps + +module amplitude_calculator ( + input wire clk, + input wire rst_n, + + input wire s_axis_tvalid, + input wire s_axis_tready, + input wire [63:0] s_axis_tdata, + + input wire arm, + input wire [31:0] averager_value, + input wire [31:0] nsamp, + + (* mark_debug = "true" *) output reg [35:0] m_axis_tdata, + (* mark_debug = "true" *) output reg m_axis_tvalid +); + + function [4:0] flog2; + input [31:0] v; + integer k; + begin + flog2 = 5'd0; + for (k = 1; k <= 31; k = k + 1) begin + if (v[k]) + flog2 = k[4:0]; + end + end + endfunction + + (* mark_debug = "true" *) reg signed [31:0] i_in, q_in; + (* mark_debug = "true" *) reg v_in, r_in; + + always @(posedge clk) begin + if (!rst_n) begin + i_in <= 0; + q_in <= 0; + v_in <= 0; + r_in <= 0; + end else begin + i_in <= s_axis_tdata[31:0]; + q_in <= s_axis_tdata[63:32]; + v_in <= s_axis_tvalid; + r_in <= s_axis_tready; + end + end + + (* mark_debug = "true" *) reg armed; + (* mark_debug = "true" *) reg [31:0] shot_cnt; + (* mark_debug = "true" *) reg [31:0] avg_m1; + (* mark_debug = "true" *) reg [4:0] s1_r, s2_r; + (* mark_debug = "true" *) reg signed [45:0] i_acc, q_acc; + (* mark_debug = "true" *) reg signed [17:0] point_mean_i, point_mean_q; + + wire signed [32:0] i_in_ext = {{1{i_in[31]}}, i_in}; + wire signed [32:0] q_in_ext = {{1{q_in[31]}}, q_in}; + wire signed [32:0] round1 = (s1_r == 5'd0) ? {33{1'b0}} : ({{32{1'b0}}, 1'b1} <<< (s1_r - 5'd1)); + wire signed [32:0] i_shifted1 = (i_in_ext + round1) >>> s1_r; + wire signed [32:0] q_shifted1 = (q_in_ext + round1) >>> s1_r; + wire signed [16:0] shot_mean_i = i_shifted1[16:0]; + wire signed [16:0] shot_mean_q = q_shifted1[16:0]; + + wire signed [45:0] i_acc_next = i_acc + {{29{shot_mean_i[16]}}, shot_mean_i}; + wire signed [45:0] q_acc_next = q_acc + {{29{shot_mean_q[16]}}, shot_mean_q}; + + wire acc_en = armed & v_in & r_in; + wire is_last = (shot_cnt == avg_m1); + wire emit_now = acc_en & is_last; + + wire signed [45:0] round2 = (s2_r == 5'd0) ? {46{1'b0}} : ({{45{1'b0}}, 1'b1} <<< (s2_r - 5'd1)); + wire signed [45:0] i_acc_round = i_acc_next + round2; + wire signed [45:0] q_acc_round = q_acc_next + round2; + wire signed [45:0] i_acc_shifted = i_acc_round >>> s2_r; + wire signed [45:0] q_acc_shifted = q_acc_round >>> s2_r; + wire signed [17:0] point_mean_i_next = i_acc_shifted[17:0]; + wire signed [17:0] point_mean_q_next = q_acc_shifted[17:0]; + + always @(posedge clk) begin + if (!rst_n) begin + armed <= 1'b0; + shot_cnt <= 32'd0; + avg_m1 <= 32'd0; + s1_r <= 5'd0; + s2_r <= 5'd0; + i_acc <= {46{1'b0}}; + q_acc <= {46{1'b0}}; + point_mean_i <= {18{1'b0}}; + point_mean_q <= {18{1'b0}}; + end else begin + if (arm) begin + armed <= 1'b1; + shot_cnt <= 32'd0; + avg_m1 <= (averager_value == 32'd0) ? 32'd0 : averager_value - 32'd1; + s1_r <= flog2(nsamp); + s2_r <= flog2(averager_value); + i_acc <= {46{1'b0}}; + q_acc <= {46{1'b0}}; + point_mean_i <= point_mean_i; + point_mean_q <= point_mean_q; + end else if (acc_en) begin + avg_m1 <= avg_m1; + s1_r <= s1_r; + s2_r <= s2_r; + if (is_last) begin + armed <= 1'b0; + shot_cnt <= 32'd0; + i_acc <= {46{1'b0}}; + q_acc <= {46{1'b0}}; + point_mean_i <= point_mean_i_next; + point_mean_q <= point_mean_q_next; + end else begin + armed <= 1'b1; + shot_cnt <= shot_cnt + 32'd1; + i_acc <= i_acc_next; + q_acc <= q_acc_next; + point_mean_i <= point_mean_i; + point_mean_q <= point_mean_q; + end + end else begin + armed <= armed; + shot_cnt <= shot_cnt; + avg_m1 <= avg_m1; + s1_r <= s1_r; + s2_r <= s2_r; + i_acc <= i_acc; + q_acc <= q_acc; + point_mean_i <= point_mean_i; + point_mean_q <= point_mean_q; + end + end + end + + (* mark_debug = "true" *) reg fin_v0, fin_v1, fin_v2; + reg signed [17:0] sq_operand; + (* mark_debug = "true" *) reg [35:0] power_acc; + + wire signed [35:0] point_mean_i_sq = point_mean_i * point_mean_i; + wire signed [35:0] sq_operand_sq = sq_operand * sq_operand; + + always @(posedge clk) begin + if (!rst_n) begin + fin_v0 <= 1'b0; + fin_v1 <= 1'b0; + fin_v2 <= 1'b0; + sq_operand <= {18{1'b0}}; + power_acc <= {36{1'b0}}; + m_axis_tdata <= {36{1'b0}}; + m_axis_tvalid <= 1'b0; + end else begin + fin_v0 <= emit_now; + if (fin_v0) begin + power_acc <= point_mean_i_sq; + sq_operand <= point_mean_q; + end else if (fin_v1) begin + power_acc <= power_acc + sq_operand_sq; + sq_operand <= sq_operand; + end else begin + power_acc <= power_acc; + sq_operand <= sq_operand; + end + fin_v1 <= fin_v0; + fin_v2 <= fin_v1; + m_axis_tvalid <= fin_v2; + m_axis_tdata <= power_acc; + end + end + + (* mark_debug = "true" *) reg s_axis_tvalid_dbg; + (* mark_debug = "true" *) reg [63:0] s_axis_tdata_dbg; + (* mark_debug = "true" *) reg arm_dbg; + (* mark_debug = "true" *) reg acc_en_dbg; + (* mark_debug = "true" *) reg emit_now_dbg; + always @(posedge clk) begin + if (!rst_n) begin + s_axis_tvalid_dbg <= 1'b0; + s_axis_tdata_dbg <= 64'd0; + arm_dbg <= 1'b0; + acc_en_dbg <= 1'b0; + emit_now_dbg <= 1'b0; + end else begin + s_axis_tvalid_dbg <= s_axis_tvalid; + s_axis_tdata_dbg <= s_axis_tdata; + arm_dbg <= arm; + acc_en_dbg <= acc_en; + emit_now_dbg <= emit_now; + end + end + +endmodule diff --git a/firmware/ip/fine_tuning_sweep/src/fine_tuning_sweep.v b/firmware/ip/fine_tuning_sweep/src/fine_tuning_sweep.v new file mode 100644 index 000000000..11ab4cb0a --- /dev/null +++ b/firmware/ip/fine_tuning_sweep/src/fine_tuning_sweep.v @@ -0,0 +1,175 @@ +`timescale 1ns / 1ps + +module fine_tuning_sweep ( + input wire clk, + input wire rst_n, + + input wire qtag_en_i, + input wire [4:0] qtag_op_i, + input wire [31:0] qtag_dt1_i, + input wire [31:0] qtag_dt2_i, + input wire [31:0] qtag_dt3_i, + input wire [31:0] qtag_dt4_i, + (* mark_debug = "true" *) output reg qtag_rdy_o, + (* mark_debug = "true" *) output reg [31:0] qtag_dt1_o, + output reg [31:0] qtag_dt2_o, + (* mark_debug = "true" *) output reg qtag_vld_o, + + input wire s_axis_tvalid, + output wire s_axis_tready, + input wire [63:0] s_axis_tdata +); + + assign s_axis_tready = 1'b1; + + reg en_d; + wire en_rise = qtag_en_i & ~en_d; + + always @(posedge clk) begin + if (!rst_n) + en_d <= 1'b0; + else + en_d <= qtag_en_i; + end + + wire start_now = en_rise & (qtag_op_i == 5'd1); + + (* mark_debug = "true" *) reg [31:0] reg_start; + (* mark_debug = "true" *) reg [31:0] reg_step; + (* mark_debug = "true" *) reg [31:0] reg_npoints; + (* mark_debug = "true" *) reg [31:0] reg_avg; + (* mark_debug = "true" *) reg [31:0] reg_nsamp; + (* mark_debug = "true" *) reg reg_mode; + + wire [31:0] pf_freq_word; + wire pf_freq_valid; + wire pf_finish; + wire [35:0] max_amplitude; + wire [31:0] freq_at_max; + + always @(posedge clk) begin + if (!rst_n) begin + reg_start <= 32'd0; + reg_step <= 32'd0; + reg_npoints <= 32'd0; + reg_avg <= 32'd0; + reg_nsamp <= 32'd0; + reg_mode <= 1'b0; + end else if (en_rise & (qtag_op_i == 5'd0)) begin + reg_start <= qtag_dt1_i; + reg_step <= qtag_dt2_i; + reg_npoints <= qtag_dt3_i; + reg_avg <= qtag_dt4_i; + reg_nsamp <= reg_nsamp; + reg_mode <= reg_mode; + end else if (en_rise & (qtag_op_i == 5'd2)) begin + reg_start <= reg_start; + reg_step <= reg_step; + reg_npoints <= reg_npoints; + reg_avg <= reg_avg; + reg_nsamp <= qtag_dt1_i; + reg_mode <= qtag_dt2_i[0]; + end else begin + reg_start <= reg_start; + reg_step <= reg_step; + reg_npoints <= reg_npoints; + reg_avg <= reg_avg; + reg_nsamp <= reg_nsamp; + reg_mode <= reg_mode; + end + end + + always @(posedge clk) begin + if (!rst_n) begin + qtag_dt1_o <= 32'd0; + qtag_dt2_o <= 32'd0; + qtag_vld_o <= 1'b0; + end else if (start_now) begin + qtag_dt1_o <= 32'd0; + qtag_dt2_o <= 32'd0; + qtag_vld_o <= 1'b0; + end else if (pf_finish) begin + qtag_dt1_o <= pf_freq_word; + qtag_dt2_o <= 32'd0; + qtag_vld_o <= 1'b1; + end else begin + qtag_dt1_o <= qtag_dt1_o; + qtag_dt2_o <= qtag_dt2_o; + qtag_vld_o <= qtag_vld_o; + end + end + + always @(posedge clk) begin + if (!rst_n) + qtag_rdy_o <= 1'b1; + else if (start_now) + qtag_rdy_o <= 1'b0; + else if (pf_finish) + qtag_rdy_o <= 1'b1; + else + qtag_rdy_o <= qtag_rdy_o; + end + + wire point_arm = start_now | pf_freq_valid; + + wire [35:0] amp_data_c; + wire amp_valid_c; + + amplitude_calculator u_amplitude_calculator ( + .clk (clk), + .rst_n (rst_n), + .s_axis_tvalid (s_axis_tvalid), + .s_axis_tready (s_axis_tready), + .s_axis_tdata (s_axis_tdata), + .arm (point_arm), + .averager_value (reg_avg), + .nsamp (reg_nsamp), + .m_axis_tdata (amp_data_c), + .m_axis_tvalid (amp_valid_c) + ); + + peak_finder u_peak_finder_v2 ( + .clk (clk), + .rstn (rst_n), + .start (start_now), + .start_freq (reg_start), + .step (reg_step), + .n_points (reg_npoints), + .mode (reg_mode), + .amp_valid (amp_valid_c), + .amp_data (amp_data_c), + .freq_word (pf_freq_word), + .freq_valid (pf_freq_valid), + .finish (pf_finish), + .max_amplitude (max_amplitude), + .freq_at_max (freq_at_max) + ); + + (* mark_debug = "true" *) reg s_axis_tvalid_dbg; + (* mark_debug = "true" *) reg s_axis_tready_dbg; + (* mark_debug = "true" *) reg [63:0] s_axis_tdata_dbg; + (* mark_debug = "true" *) reg amp_valid_c_dbg; + (* mark_debug = "true" *) reg [35:0] amp_data_c_dbg; + (* mark_debug = "true" *) reg qtag_en_dbg; + (* mark_debug = "true" *) reg [4:0] qtag_op_dbg; + always @(posedge clk) begin + if (!rst_n) begin + s_axis_tvalid_dbg <= 1'b0; + s_axis_tready_dbg <= 1'b0; + s_axis_tdata_dbg <= 64'd0; + amp_valid_c_dbg <= 1'b0; + amp_data_c_dbg <= {36{1'b0}}; + qtag_en_dbg <= 1'b0; + qtag_op_dbg <= 5'd0; + end else begin + s_axis_tvalid_dbg <= s_axis_tvalid; + s_axis_tready_dbg <= s_axis_tready; + s_axis_tdata_dbg <= s_axis_tdata; + amp_valid_c_dbg <= amp_valid_c; + amp_data_c_dbg <= amp_data_c; + qtag_en_dbg <= qtag_en_i; + qtag_op_dbg <= qtag_op_i; + end + end + +endmodule diff --git a/firmware/ip/fine_tuning_sweep/src/peak_finder.v b/firmware/ip/fine_tuning_sweep/src/peak_finder.v new file mode 100644 index 000000000..2d183df26 --- /dev/null +++ b/firmware/ip/fine_tuning_sweep/src/peak_finder.v @@ -0,0 +1,184 @@ +`timescale 1ns / 1ps + +module peak_finder ( + input wire clk, + input wire rstn, + + input wire start, + input wire [31:0] start_freq, + input wire [31:0] step, + input wire [31:0] n_points, + input wire mode, + + input wire amp_valid, + input wire [35:0] amp_data, + + (* mark_debug = "true" *) output reg [31:0] freq_word, + (* mark_debug = "true" *) output reg freq_valid, + (* mark_debug = "true" *) output reg finish, + + (* mark_debug = "true" *) output reg [35:0] max_amplitude, + (* mark_debug = "true" *) output reg [31:0] freq_at_max +); + + localparam [1:0] IDLE = 2'd0, SEND_FREQ = 2'd1, WAIT_MEAS = 2'd2; + + (* mark_debug = "true" *) reg [1:0] state; + reg [1:0] next_state; + (* mark_debug = "true" *) reg [31:0] cur_freq, cur_step, n_pts, point_idx; + + (* mark_debug = "true" *) reg last_point_r; + (* mark_debug = "true" *) reg mode_r; + + wire is_better = mode_r ? (amp_data < max_amplitude) : (amp_data > max_amplitude); + + + always @(posedge clk) begin + if (!rstn) + state <= IDLE; + else + state <= next_state; + end + + always @(*) begin + case (state) + IDLE: + next_state = start ? SEND_FREQ : IDLE; + + SEND_FREQ: + next_state = WAIT_MEAS; + + WAIT_MEAS: begin + if (amp_valid) + next_state = last_point_r ? IDLE : SEND_FREQ; + else + next_state = WAIT_MEAS; + end + + default: + next_state = IDLE; + endcase + end + + always @(posedge clk) begin + if (!rstn) begin + freq_word <= 32'd0; + freq_valid <= 1'b0; + finish <= 1'b0; + max_amplitude <= {36{1'b0}}; + freq_at_max <= 32'd0; + cur_freq <= 32'd0; + cur_step <= 32'd0; + n_pts <= 32'd0; + point_idx <= 32'd0; + last_point_r <= 1'b0; + mode_r <= 1'b0; + end else begin + case (state) + IDLE: begin + freq_word <= freq_word; + freq_valid <= 1'b0; + finish <= 1'b0; + if (start) begin + cur_freq <= start_freq; + cur_step <= step; + n_pts <= n_points; + point_idx <= 32'd0; + last_point_r <= (32'd1 >= n_points); + mode_r <= mode; + max_amplitude <= mode ? {36{1'b1}} : {36{1'b0}}; + freq_at_max <= 32'd0; + end else begin + cur_freq <= cur_freq; + cur_step <= cur_step; + n_pts <= n_pts; + point_idx <= point_idx; + last_point_r <= last_point_r; + mode_r <= mode_r; + max_amplitude <= max_amplitude; + freq_at_max <= freq_at_max; + end + end + + SEND_FREQ: begin + freq_word <= cur_freq; + freq_valid <= 1'b1; + finish <= 1'b0; + max_amplitude <= max_amplitude; + freq_at_max <= freq_at_max; + cur_freq <= cur_freq; + cur_step <= cur_step; + n_pts <= n_pts; + point_idx <= point_idx; + last_point_r <= last_point_r; + mode_r <= mode_r; + end + + WAIT_MEAS: begin + freq_valid <= 1'b0; + cur_step <= cur_step; + n_pts <= n_pts; + mode_r <= mode_r; + if (amp_valid) begin + if (is_better) begin + max_amplitude <= amp_data; + freq_at_max <= cur_freq; + end else begin + max_amplitude <= max_amplitude; + freq_at_max <= freq_at_max; + end + + if (last_point_r) begin + freq_word <= is_better ? cur_freq : freq_at_max; + finish <= 1'b1; + cur_freq <= cur_freq; + point_idx <= point_idx; + last_point_r <= last_point_r; + end else begin + freq_word <= freq_word; + finish <= 1'b0; + cur_freq <= cur_freq + cur_step; + point_idx <= point_idx + 32'd1; + last_point_r <= (point_idx + 32'd2 >= n_pts); + end + end else begin + freq_word <= freq_word; + finish <= 1'b0; + max_amplitude <= max_amplitude; + freq_at_max <= freq_at_max; + cur_freq <= cur_freq; + point_idx <= point_idx; + last_point_r <= last_point_r; + end + end + + default: begin + freq_word <= freq_word; + freq_valid <= 1'b0; + finish <= 1'b0; + max_amplitude <= max_amplitude; + freq_at_max <= freq_at_max; + cur_freq <= cur_freq; + cur_step <= cur_step; + n_pts <= n_pts; + point_idx <= point_idx; + last_point_r <= last_point_r; + mode_r <= mode_r; + end + endcase + end + end + + (* mark_debug = "true" *) reg rstn_dbg; + (* mark_debug = "true" *) reg start_dbg; + always @(posedge clk) begin + if (!rstn) begin + rstn_dbg <= 1'b0; + start_dbg <= 1'b0; + end else begin + rstn_dbg <= rstn; + start_dbg <= start; + end + end + +endmodule diff --git a/firmware/ip/fine_tuning_sweep/src/tb_amplitude_calculator.sv b/firmware/ip/fine_tuning_sweep/src/tb_amplitude_calculator.sv new file mode 100644 index 000000000..0ca3f1389 --- /dev/null +++ b/firmware/ip/fine_tuning_sweep/src/tb_amplitude_calculator.sv @@ -0,0 +1,358 @@ +`timescale 1ns / 1ps +//------------------------------------------------------------------------------ +// tb_amplitude_calculator -- self-checking unit sim for the two-stage +// accumulate-and-shift power calculator. +// +// Golden model mirrors the RTL's exact round-half-up + floor-log2-shift +// algorithm (see CLAUDE.md: I1-I4) using 64-bit integer math -- DUT power +// must match the golden model EXACTLY for every case below. +// +// N2 (avg) is tested up to 4096 (2^12) shots per point, not the design's +// documented max of 2^29 -- simulating 2^29 shots is not tractable in +// xsim. The 46-bit accumulator width for N2<=2^29 is a closed-form proof +// (see plan / CLAUDE.md), not exhaustively simulated here; this TB +// exercises the SAME shift/round logic at a power-of-two and non-power-of- +// two N2 to validate the algorithm, and separately asserts the proven +// tight numeric bounds on shot_mean/point_mean every cycle regardless of +// N2 used. +//------------------------------------------------------------------------------ + +module tb_amplitude_calculator(); + + reg clk; + reg rst_n; + always #5 clk = ~clk; + + reg s_axis_tvalid; + reg s_axis_tready; + reg [63:0] s_axis_tdata; + reg arm; + reg [31:0] averager_value; + reg [31:0] nsamp; + wire [35:0] m_axis_tdata; + wire m_axis_tvalid; + + amplitude_calculator dut ( + .clk (clk), + .rst_n (rst_n), + .s_axis_tvalid (s_axis_tvalid), + .s_axis_tready (s_axis_tready), + .s_axis_tdata (s_axis_tdata), + .arm (arm), + .averager_value (averager_value), + .nsamp (nsamp), + .m_axis_tdata (m_axis_tdata), + .m_axis_tvalid (m_axis_tvalid) + ); + + integer pass_count, fail_count; + + function automatic int flog2_g(input int unsigned v); + int r; + int k; + begin + r = 0; + for (k = 1; k <= 31; k = k + 1) begin + if (v[k]) + r = k; + end + flog2_g = r; + end + endfunction + + function automatic longint round_shift_g(input longint val, input int s); + longint rnd; + begin + rnd = (s == 0) ? 0 : (64'sd1 <<< (s - 1)); + round_shift_g = (val + rnd) >>> s; + end + endfunction + + function automatic longint golden_power( + input longint isums[], + input longint qsums[], + input int unsigned nsamp_v, + input int unsigned avg_v + ); + int s1, s2; + longint iacc, qacc, ipm, qpm; + int k; + begin + s1 = flog2_g(nsamp_v); + s2 = flog2_g(avg_v); + iacc = 0; + qacc = 0; + for (k = 0; k < isums.size(); k = k + 1) begin + iacc = iacc + round_shift_g(isums[k], s1); + qacc = qacc + round_shift_g(qsums[k], s1); + end + ipm = round_shift_g(iacc, s2); + qpm = round_shift_g(qacc, s2); + golden_power = ipm * ipm + qpm * qpm; + end + endfunction + + function automatic real true_power( + input longint isums[], + input longint qsums[], + input int unsigned nsamp_v, + input int unsigned avg_v + ); + longint isum, qsum; + real denom, mean_i, mean_q; + int k, s1, s2; + begin + isum = 0; + qsum = 0; + for (k = 0; k < isums.size(); k = k + 1) begin + isum = isum + isums[k]; + qsum = qsum + qsums[k]; + end + // exact (UNROUNDED) two-stage mean using the SAME 2^s1 * 2^s2 + // divisor the RTL uses -- not exact n1*avg. Dividing by the + // nearest power-of-two-below-n1 (not n1 itself) is an + // intentional, systematic scale factor of the design (same for + // every point in a pass, so argmax-irrelevant); this function + // isolates the ROUNDING error on top of that, which is the + // quantity the near-tie/quantization bound documents. + s1 = flog2_g(nsamp_v); + s2 = flog2_g(avg_v); + denom = real'(longint'(1) <<< (s1 + s2)); + mean_i = real'(isum) / denom; + mean_q = real'(qsum) / denom; + true_power = mean_i * mean_i + mean_q * mean_q; + end + endfunction + + task automatic do_reset; + begin + rst_n = 1'b0; + s_axis_tvalid = 1'b0; + s_axis_tready = 1'b1; + s_axis_tdata = 64'd0; + arm = 1'b0; + averager_value = 32'd0; + nsamp = 32'd0; + pass_count = 0; + fail_count = 0; + repeat (5) @(posedge clk); + #1; + rst_n = 1'b1; + repeat (5) @(posedge clk); + end + endtask + + task automatic pulse_arm(input int unsigned nsamp_v, input int unsigned avg_v); + begin + @(posedge clk); #1; + nsamp = nsamp_v; + averager_value = avg_v; + arm = 1'b1; + @(posedge clk); #1; + arm = 1'b0; + end + endtask + + task automatic fire_shot(input longint isum, input longint qsum); + begin + @(posedge clk); #1; + s_axis_tdata = {qsum[31:0], isum[31:0]}; + s_axis_tvalid = 1'b1; + @(posedge clk); #1; + s_axis_tvalid = 1'b0; + s_axis_tdata = 64'd0; + end + endtask + + task automatic wait_result(output longint got_power); + begin + while (!m_axis_tvalid) @(posedge clk); + got_power = {28'd0, m_axis_tdata}; + @(posedge clk); + end + endtask + + task automatic run_point( + input int unsigned nsamp_v, + input int unsigned avg_v, + input longint isums[], + input longint qsums[], + input string tag + ); + longint golden, got; + int k; + begin + pulse_arm(nsamp_v, avg_v); + for (k = 0; k < isums.size(); k = k + 1) + fire_shot(isums[k], qsums[k]); + wait_result(got); + golden = golden_power(isums, qsums, nsamp_v, avg_v); + if (got == golden) begin + pass_count = pass_count + 1; + $display("[%0t] PASS %s: power=%0d", $time, tag, got); + end else begin + fail_count = fail_count + 1; + $display("[%0t] FAIL %s: got=%0d golden=%0d", $time, tag, got, golden); + end + end + endtask + + task automatic run_bound_check( + input int unsigned nsamp_v, + input int unsigned avg_v, + input longint isums[], + input longint qsums[], + input real rel_bound, + input string tag + ); + longint got; + real truep, relerr; + int k; + begin + pulse_arm(nsamp_v, avg_v); + for (k = 0; k < isums.size(); k = k + 1) + fire_shot(isums[k], qsums[k]); + wait_result(got); + truep = true_power(isums, qsums, nsamp_v, avg_v); + relerr = (truep == 0.0) ? 0.0 : (real'(got) - truep) / truep; + if (relerr < 0.0) + relerr = -relerr; + if (relerr <= rel_bound) begin + pass_count = pass_count + 1; + $display("[%0t] PASS %s: quantized=%0d true=%.3e relerr=%.3e (bound %.3e)", + $time, tag, got, truep, relerr, rel_bound); + end else begin + fail_count = fail_count + 1; + $display("[%0t] FAIL %s: quantized=%0d true=%.3e relerr=%.3e EXCEEDS bound %.3e", + $time, tag, got, truep, relerr, rel_bound); + end + end + endtask + + always @(posedge clk) begin + if (rst_n && dut.acc_en) begin + if (dut.shot_mean_i > 17'sd65534 || dut.shot_mean_i < -17'sd65535) begin + $display("[%0t] BOUND FAIL: shot_mean_i=%0d outside proven [-65535,65534]", $time, dut.shot_mean_i); + fail_count = fail_count + 1; + end + if (dut.shot_mean_q > 17'sd65534 || dut.shot_mean_q < -17'sd65535) begin + $display("[%0t] BOUND FAIL: shot_mean_q=%0d outside proven [-65535,65534]", $time, dut.shot_mean_q); + fail_count = fail_count + 1; + end + if (dut.is_last) begin + if (dut.point_mean_i_next > 18'sd131070 || dut.point_mean_i_next < -18'sd131072) begin + $display("[%0t] BOUND FAIL: point_mean_i_next=%0d outside proven [-131072,131070]", $time, dut.point_mean_i_next); + fail_count = fail_count + 1; + end + if (dut.point_mean_q_next > 18'sd131070 || dut.point_mean_q_next < -18'sd131072) begin + $display("[%0t] BOUND FAIL: point_mean_q_next=%0d outside proven [-131072,131070]", $time, dut.point_mean_q_next); + fail_count = fail_count + 1; + end + end + end + end + + longint isums_a[], qsums_a[]; + int k; + + initial begin + clk = 0; + do_reset(); + + // 1. Full-scale: n1=2^16 (avg_buffer's own overflow ceiling), positive + // extreme, N2=4096 (power-of-two stand-in for "N2 at max", see header) + isums_a = new[4096]; + qsums_a = new[4096]; + for (k = 0; k < 4096; k = k + 1) begin + isums_a[k] = 65536 * 32767; + qsums_a[k] = 65536 * 32767; + end + run_point(65536, 4096, isums_a, qsums_a, "fullscale_pos_pow2"); + + // 1b. Full-scale negative extreme -- exact int32 min shot sum + for (k = 0; k < 4096; k = k + 1) begin + isums_a[k] = -65536 * 32768; + qsums_a[k] = -65536 * 32768; + end + run_point(65536, 4096, isums_a, qsums_a, "fullscale_neg_pow2"); + + // 2. Worst non-power n1 AND N2 simultaneously + isums_a = new[1000]; + qsums_a = new[1000]; + for (k = 0; k < 1000; k = k + 1) begin + isums_a[k] = 1000 * 20000 - k; + qsums_a[k] = -1000 * 15000 + 2 * k; + end + run_point(1000, 1000, isums_a, qsums_a, "n1_1000_avg_1000_nonpow2"); + + // 2b. Small worst non-power n1=3, N2=3 + isums_a = new[3]; + qsums_a = new[3]; + isums_a[0] = 3 * 100; qsums_a[0] = 3 * (-200); + isums_a[1] = 3 * (-50); qsums_a[1] = 3 * 300; + isums_a[2] = 3 * 400; qsums_a[2] = 3 * (-10); + run_point(3, 3, isums_a, qsums_a, "n1_3_avg_3"); + + // 2c. 2^k+1 non-power cases: n1=1025, N2=65 + isums_a = new[65]; + qsums_a = new[65]; + for (k = 0; k < 65; k = k + 1) begin + isums_a[k] = 1025 * (1000 + k); + qsums_a[k] = 1025 * (-2000 + 3 * k); + end + run_point(1025, 65, isums_a, qsums_a, "n1_1025_avg_65_2kplus1"); + + // 3. n1=1, N2=1 -- s1=0 and s2=0, zero round constant, identity path + isums_a = new[1]; + qsums_a = new[1]; + isums_a[0] = 12345; + qsums_a[0] = -6789; + run_point(1, 1, isums_a, qsums_a, "n1_1_avg_1_identity"); + + // 3b. n1=1, N2=60 -- s1=0 mixed with s2>0 + isums_a = new[60]; + qsums_a = new[60]; + for (k = 0; k < 60; k = k + 1) begin + isums_a[k] = 1000 - 2 * k; + qsums_a[k] = -500 + 3 * k; + end + run_point(1, 60, isums_a, qsums_a, "n1_1_avg_60"); + + // 4. Sign stress: I+/Q-, both-, alternating, n1=1000, N2=4 + isums_a = new[4]; + qsums_a = new[4]; + isums_a[0] = 1000 * 1000; qsums_a[0] = 1000 * (-2000); + isums_a[1] = 1000 * (-1500); qsums_a[1] = 1000 * 800; + isums_a[2] = 1000 * (-3000); qsums_a[2] = 1000 * (-3000); + isums_a[3] = 1000 * 500; qsums_a[3] = 1000 * 500; + run_point(1000, 4, isums_a, qsums_a, "sign_stress"); + + // 6. Quantization error bound (near-tie floor): moderate n1/N2, verify + // the DUT's rounded power sits within the documented ~2^-17 relative + // bound of the TRUE (unrounded) sum-then-square power. + isums_a = new[500]; + qsums_a = new[500]; + for (k = 0; k < 500; k = k + 1) begin + isums_a[k] = 1000 * (7000 + (k % 37) - 18); + qsums_a[k] = 1000 * (-4000 + (k % 23) - 11); + end + run_bound_check(1000, 500, isums_a, qsums_a, 0.0001, "quantization_bound"); + + $display("------------------------------------------------"); + $display("[%0t] SUMMARY: %0d PASS, %0d FAIL", $time, pass_count, fail_count); + if (fail_count == 0) + $display("[%0t] ALL PASS", $time); + else + $display("[%0t] FAILURES PRESENT", $time); + + #200; + $finish; + end + + initial begin + #5000000; + $display("[%0t] TIMEOUT", $time); + $finish; + end + +endmodule diff --git a/firmware/ip/fine_tuning_sweep/src/tb_fine_tuning_sweep.sv b/firmware/ip/fine_tuning_sweep/src/tb_fine_tuning_sweep.sv new file mode 100644 index 000000000..b694bde9a --- /dev/null +++ b/firmware/ip/fine_tuning_sweep/src/tb_fine_tuning_sweep.sv @@ -0,0 +1,197 @@ +`timescale 1ns / 1ps +//------------------------------------------------------------------------------ +// tb_fine_tuning_sweep -- self-checking sim for the single-clock sweep FSM. +// +// Models the tProc + DUT loop against the avg_buffer-m2 front end, with NO +// read opcode: the IP presents freq_word on qtag_dt1_o + raises qtag_vld_o / +// qtag_rdy_o on finish, and the tProc reads the result directly. +// * OP2 loads nsamp (n1, for the amplitude_calculator's stage-1 shift) +// and the peak/dip comparison mode +// * OP0 loads the sweep config (start/step/n_points/avg) +// * OP1 starts the sweep; the tProc then waits for qtag_rdy_o to drop (WSTART) +// * per point: while armed, "retune" the synthetic readout to cur_freq and +// present AVG accumulated m2 words (one 64-bit {Q,I} per shot) as tready/ +// tvalid beats; the accumulator disarms when it has its AVG shots +// * finish: qtag_rdy_o rises (WDONE) -> read freq_at_max from qtag_dt1_o +// The synthetic readout is a triangular peak (mode=0) or notch (mode=1) +// centred on PEAK_FREQ, so freq_at_max must land on the grid point nearest +// PEAK_FREQ in both modes. NSAMP_TEST=8 (s1=3 nonzero) exercises the +// stage-1 shift; stimulus is pre-scaled by NSAMP_TEST so the recovered +// shot_mean lands in the same numeric range as before the two-stage +// rearchitecture, preserving the argmax/argmin behavior. Single clock: the +// real BD brings s_axis into the core clock via axis_clock_converter. +//------------------------------------------------------------------------------ + +module tb_fine_tuning_sweep(); + + reg clk; + reg rst_n; + always #5 clk = ~clk; + + reg qtag_en_i; + reg [4:0] qtag_op_i; + reg [31:0] qtag_dt1_i, qtag_dt2_i, qtag_dt3_i, qtag_dt4_i; + wire qtag_rdy_o; + wire [31:0] qtag_dt1_o, qtag_dt2_o; + wire qtag_vld_o; + + reg [63:0] s_axis_tdata; + reg s_axis_tvalid; + wire s_axis_tready; + + fine_tuning_sweep uut ( + .clk (clk), + .rst_n (rst_n), + .qtag_en_i (qtag_en_i), + .qtag_op_i (qtag_op_i), + .qtag_dt1_i (qtag_dt1_i), + .qtag_dt2_i (qtag_dt2_i), + .qtag_dt3_i (qtag_dt3_i), + .qtag_dt4_i (qtag_dt4_i), + .qtag_rdy_o (qtag_rdy_o), + .qtag_dt1_o (qtag_dt1_o), + .qtag_dt2_o (qtag_dt2_o), + .qtag_vld_o (qtag_vld_o), + .s_axis_tvalid (s_axis_tvalid), + .s_axis_tready (s_axis_tready), + .s_axis_tdata (s_axis_tdata) + ); + + localparam [31:0] START_FREQ = 32'd6000000; + localparam [31:0] STEP = 32'd1000000; + localparam [31:0] NPOINTS = 32'd100; + localparam [31:0] AVG = 32'd3; + localparam [31:0] NSAMP_TEST = 32'd8; + + localparam [31:0] PEAK_FREQ = 32'd18000000; + localparam [31:0] PEAK_WIDTH = 32'd4000000; + + reg [31:0] tuned_freq; + reg [15:0] adc_amp; + reg test_mode; + + always @(*) begin : amp_model + integer diff; + integer bump; + diff = tuned_freq - PEAK_FREQ; + if (diff < 0) diff = -diff; + if (diff < PEAK_WIDTH) + bump = 30000 - ((diff * 29000) / PEAK_WIDTH); + else + bump = 1000; + adc_amp = test_mode ? (31000 - bump) : bump; + end + + task qp2_send(input [4:0] op, + input [31:0] d1, input [31:0] d2, + input [31:0] d3, input [31:0] d4); + begin + @(posedge clk); #1; + qtag_en_i = 1'b1; qtag_op_i = op; + qtag_dt1_i = d1; qtag_dt2_i = d2; qtag_dt3_i = d3; qtag_dt4_i = d4; + @(posedge clk); #1; + qtag_en_i = 1'b0; + @(posedge clk); + end + endtask + + // present one avg_buffer m2 word: {Q,I} accumulated for this shot, as a + // single tvalid/tready beat. Pre-scaled by NSAMP_TEST so the stage-1 + // shift (s1=3 at NSAMP_TEST=8) recovers a shot_mean tracking adc_amp -- + // bigger amplitude -> bigger point_mean^2*2 after stage 2. + task fire_shot; + reg [31:0] scaled; + begin + scaled = adc_amp * NSAMP_TEST; + @(posedge clk); #1; + s_axis_tvalid = 1'b1; + s_axis_tdata = {scaled, scaled}; + @(posedge clk); #1; + s_axis_tvalid = 1'b0; + s_axis_tdata = 64'd0; + @(posedge clk); + end + endtask + + reg [31:0] rd_freq; + integer step_i, a; + integer fail_count; + + task run_sweep_test(input mode_v, input [31:0] tag); + begin + test_mode = mode_v; + tuned_freq = 0; + + qp2_send(5'd2, NSAMP_TEST, {31'd0, mode_v}, 0, 0); + $display("[%0t] %s CONFIG: nsamp=%0d mode=%0d", $time, tag, NSAMP_TEST, mode_v); + + qp2_send(5'd0, START_FREQ, STEP, NPOINTS, AVG); + $display("[%0t] %s CONFIG: start=%0d step=%0d N=%0d avg=%0d", + $time, tag, START_FREQ, STEP, NPOINTS, AVG); + + qp2_send(5'd1, 0, 0, 0, 0); + while (qtag_rdy_o) @(posedge clk); + $display("[%0t] %s SWEEP STARTED (target @ %0d)", $time, tag, PEAK_FREQ); + + step_i = 0; + while (!qtag_rdy_o) begin + @(posedge clk); #1; + if (uut.u_amplitude_calculator.armed) begin + tuned_freq = uut.u_peak_finder_v2.cur_freq; + #1; + step_i = step_i + 1; + for (a = 0; a < AVG; a = a + 1) fire_shot; + while (uut.u_amplitude_calculator.armed) @(posedge clk); + end + end + + rd_freq = qtag_dt1_o; + $display("------------------------------------------------"); + $display("[%0t] %s FINISH. freq_at_max = %0d Hz (vld=%0b)", + $time, tag, rd_freq, qtag_vld_o); + + if (rd_freq == PEAK_FREQ) + $display("[%0t] %s PASS: freq_at_max (%0d) == expected (%0d)", + $time, tag, rd_freq, PEAK_FREQ); + else begin + $display("[%0t] %s FAIL: freq_at_max (%0d) != expected (%0d)", + $time, tag, rd_freq, PEAK_FREQ); + fail_count = fail_count + 1; + end + $display("[%0t] %s SWEPT %0d points", $time, tag, step_i); + end + endtask + + initial begin + clk = 0; rst_n = 0; + qtag_en_i = 0; qtag_op_i = 0; + qtag_dt1_i = 0; qtag_dt2_i = 0; qtag_dt3_i = 0; qtag_dt4_i = 0; + tuned_freq = 0; + test_mode = 1'b0; + fail_count = 0; + s_axis_tvalid = 1'b0; s_axis_tdata = 64'd0; + + #100; rst_n = 1; #100; + $display("[%0t] RESET DONE", $time); + + run_sweep_test(1'b0, "PEAK"); + run_sweep_test(1'b1, "DIP "); + + $display("------------------------------------------------"); + if (fail_count == 0) + $display("[%0t] ALL PASS", $time); + else + $display("[%0t] %0d FAILURE(S)", $time, fail_count); + + #500; + $display("[%0t] SIM COMPLETE", $time); + $finish; + end + + initial begin + #10000000; + $display("[%0t] TIMEOUT -- sweep never finished", $time); + $finish; + end + +endmodule diff --git a/firmware/ip/fine_tuning_sweep/xgui/fine_tuning_sweep_v1_0.tcl b/firmware/ip/fine_tuning_sweep/xgui/fine_tuning_sweep_v1_0.tcl new file mode 100644 index 000000000..04eb794dd --- /dev/null +++ b/firmware/ip/fine_tuning_sweep/xgui/fine_tuning_sweep_v1_0.tcl @@ -0,0 +1,25 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + ipgui::add_param $IPINST -name "ACC_WIDTH" -parent ${Page_0} + + +} + +proc update_PARAM_VALUE.ACC_WIDTH { PARAM_VALUE.ACC_WIDTH } { + # Procedure called to update ACC_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.ACC_WIDTH { PARAM_VALUE.ACC_WIDTH } { + # Procedure called to validate ACC_WIDTH + return true +} + + +proc update_MODELPARAM_VALUE.ACC_WIDTH { MODELPARAM_VALUE.ACC_WIDTH PARAM_VALUE.ACC_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.ACC_WIDTH}] ${MODELPARAM_VALUE.ACC_WIDTH} +} + diff --git a/firmware/ip/qick_processor/src/dsp_macro_0/dsp_macro_0.xci b/firmware/ip/qick_processor/src/dsp_macro_0/dsp_macro_0.xci index 30bd7cf38..5ec9f3345 100644 --- a/firmware/ip/qick_processor/src/dsp_macro_0/dsp_macro_0.xci +++ b/firmware/ip/qick_processor/src/dsp_macro_0/dsp_macro_0.xci @@ -154,7 +154,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], diff --git a/firmware/ip/qick_processor/src/qick_processor.sv b/firmware/ip/qick_processor/src/qick_processor.sv index a21d1971d..56036f965 100644 --- a/firmware/ip/qick_processor/src/qick_processor.sv +++ b/firmware/ip/qick_processor/src/qick_processor.sv @@ -306,10 +306,10 @@ always_ff @(posedge c_clk_i) begin qp1_dt_r <= qp1_dt_i ; end else if ( qp1_clr ) qp1_dt_new <= 0 ; // Q-PERIPHERAL 2 Control - if ( qp2_vld_i ) begin + if ( qp2_vld_i ) begin qp2_dt_new <= 1 ; qp2_dt_r <= qp2_dt_i ; - end else if ( qp1_clr ) qp2_dt_new <= 0 ; + end else if ( qp2_clr ) qp2_dt_new <= 0 ; end end diff --git a/firmware/ip/qick_time_tagger/src/axi_mst_0/axi_mst_0.xci b/firmware/ip/qick_time_tagger/src/axi_mst_0/axi_mst_0.xci index 350ae6412..2c16196a6 100644 --- a/firmware/ip/qick_time_tagger/src/axi_mst_0/axi_mst_0.xci +++ b/firmware/ip/qick_time_tagger/src/axi_mst_0/axi_mst_0.xci @@ -64,7 +64,7 @@ }, "project_parameters": { "ARCHITECTURE": [ { "value": "zynquplusRFSOC" } ], - "BASE_BOARD_PART": [ { "value": "xilinx.com:zcu216:part0:2.0" } ], + "BASE_BOARD_PART": [ { "value": "realdigital.org:rfsoc4x2:part0:1.0" } ], "BOARD_CONNECTIONS": [ { "value": "" } ], "DEVICE": [ { "value": "xczu49dr" } ], "PACKAGE": [ { "value": "ffvf1760" } ], diff --git a/firmware/projects/qick_tprocv1_111_rfbv1_standard/bd_2020-2.tcl b/firmware/projects/qick_tprocv1_111_rfbv1_standard/bd_2020-2.tcl deleted file mode 100644 index a13a5df40..000000000 --- a/firmware/projects/qick_tprocv1_111_rfbv1_standard/bd_2020-2.tcl +++ /dev/null @@ -1,2698 +0,0 @@ - -################################################################ -# This is a generated script based on design: d_1 -# -# Though there are limitations about the generated script, -# the main purpose of this utility is to make learning -# IP Integrator Tcl commands easier. -################################################################ - -namespace eval _tcl { -proc get_script_folder {} { - set script_path [file normalize [info script]] - set script_folder [file dirname $script_path] - return $script_folder -} -} -variable script_folder -set script_folder [_tcl::get_script_folder] - -################################################################ -# Check if script is running in correct Vivado version. -################################################################ -set scripts_vivado_version 2020.2 -set current_vivado_version [version -short] - -if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { - puts "" - catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} - - return 1 -} - -################################################################ -# START -################################################################ - -# To test this script, run the following commands from Vivado Tcl console: -# source d_1_script.tcl - - -# The design that will be created by this Tcl script contains the following -# module references: -# lo_spi_mux, vect2bits_16 - -# Please add the sources of those modules before sourcing this Tcl script. - -# If there is no project opened, this script will create a -# project, but make sure you do not have an existing project -# <./myproj/project_1.xpr> in the current working folder. - -set list_projs [get_projects -quiet] -if { $list_projs eq "" } { - create_project project_1 myproj -part xczu28dr-ffvg1517-2-e - set_property BOARD_PART xilinx.com:zcu111:part0:1.4 [current_project] -} - - -# CHANGE DESIGN NAME HERE -variable design_name -set design_name d_1 - -# If you do not already have an existing IP Integrator design open, -# you can create a design using the following command: -# create_bd_design $design_name - -# Creating design if needed -set errMsg "" -set nRet 0 - -set cur_design [current_bd_design -quiet] -set list_cells [get_bd_cells -quiet] - -if { ${design_name} eq "" } { - # USE CASES: - # 1) Design_name not set - - set errMsg "Please set the variable to a non-empty value." - set nRet 1 - -} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { - # USE CASES: - # 2): Current design opened AND is empty AND names same. - # 3): Current design opened AND is empty AND names diff; design_name NOT in project. - # 4): Current design opened AND is empty AND names diff; design_name exists in project. - - if { $cur_design ne $design_name } { - common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." - set design_name [get_property NAME $cur_design] - } - common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." - -} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { - # USE CASES: - # 5) Current design opened AND has components AND same names. - - set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." - set nRet 1 -} elseif { [get_files -quiet ${design_name}.bd] ne "" } { - # USE CASES: - # 6) Current opened design, has components, but diff names, design_name exists in project. - # 7) No opened design, design_name exists in project. - - set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." - set nRet 2 - -} else { - # USE CASES: - # 8) No opened design, design_name not in project. - # 9) Current opened design, has components, but diff names, design_name not in project. - - common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." - - create_bd_design $design_name - - common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." - current_bd_design $design_name - -} - -common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." - -if { $nRet != 0 } { - catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} - return $nRet -} - -set bCheckIPsPassed 1 -################################################################## -# CHECK IPs -################################################################## -set bCheckIPs 1 -if { $bCheckIPs == 1 } { - set list_check_ips "\ -xilinx.com:ip:axi_quad_spi:3.2\ -xilinx.com:ip:axi_bram_ctrl:4.1\ -xilinx.com:ip:blk_mem_gen:8.4\ -xilinx.com:ip:axi_dma:7.1\ -xilinx.com:ip:smartconnect:1.0\ -QICK:QICK:axis_avg_buffer:1.2\ -xilinx.com:ip:axis_clock_converter:1.1\ -QICK:QICK:axis_constant:1.0\ -QICK:QICK:axis_readout_v2:1.0\ -xilinx.com:ip:axis_register_slice:1.1\ -QICK:QICK:axis_set_reg:1.0\ -QICK:QICK:axis_signal_gen_v6:1.0\ -xilinx.com:ip:axis_switch:1.1\ -QICK:QICK:axis_terminator:1.0\ -QICK:QICK:axis_tproc64x32_x8:1.0\ -xilinx.com:ip:xlconstant:1.1\ -xilinx.com:ip:clk_wiz:6.0\ -xilinx.com:ip:proc_sys_reset:5.0\ -xilinx.com:ip:system_ila:1.1\ -xilinx.com:ip:usp_rf_data_converter:2.4\ -xilinx.com:ip:zynq_ultra_ps_e:3.3\ -" - - set list_ips_missing "" - common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." - - foreach ip_vlnv $list_check_ips { - set ip_obj [get_ipdefs -all $ip_vlnv] - if { $ip_obj eq "" } { - lappend list_ips_missing $ip_vlnv - } - } - - if { $list_ips_missing ne "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } - set bCheckIPsPassed 0 - } - -} - -################################################################## -# CHECK Modules -################################################################## -set bCheckModules 1 -if { $bCheckModules == 1 } { - set list_check_mods "\ -lo_spi_mux\ -vect2bits_16\ -" - - set list_mods_missing "" - common::send_gid_msg -ssname BD::TCL -id 2020 -severity "INFO" "Checking if the following modules exist in the project's sources: $list_check_mods ." - - foreach mod_vlnv $list_check_mods { - if { [can_resolve_reference $mod_vlnv] == 0 } { - lappend list_mods_missing $mod_vlnv - } - } - - if { $list_mods_missing ne "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2021 -severity "ERROR" "The following module(s) are not found in the project: $list_mods_missing" } - common::send_gid_msg -ssname BD::TCL -id 2022 -severity "INFO" "Please add source files for the missing module(s) above." - set bCheckIPsPassed 0 - } -} - -if { $bCheckIPsPassed != 1 } { - common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." - return 3 -} - -################################################################## -# DESIGN PROCs -################################################################## - - - -# Procedure to create entire design; Provide argument to make -# procedure reusable. If parentCell is "", will use root. -proc create_root_design { parentCell } { - - variable script_folder - variable design_name - - if { $parentCell eq "" } { - set parentCell [get_bd_cells /] - } - - # Get object for parentCell - set parentObj [get_bd_cells $parentCell] - if { $parentObj == "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} - return - } - - # Make sure parentObj is hier blk - set parentType [get_property TYPE $parentObj] - if { $parentType ne "hier" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} - return - } - - # Save current instance; Restore later - set oldCurInst [current_bd_instance .] - - # Set parent object as current - current_bd_instance $parentObj - - - # Create interface ports - set adc0_clk [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_clock_rtl:1.0 adc0_clk ] - - set dac0_clk [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_clock_rtl:1.0 dac0_clk ] - - set dac1_clk [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_clock_rtl:1.0 dac1_clk ] - - set sysref_in [ create_bd_intf_port -mode Slave -vlnv xilinx.com:display_usp_rf_data_converter:diff_pins_rtl:1.0 sysref_in ] - - set vin0 [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vin0 ] - - set vin1 [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vin1 ] - - set vout0 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout0 ] - - set vout1 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout1 ] - - set vout2 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout2 ] - - set vout3 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout3 ] - - set vout4 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout4 ] - - set vout5 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout5 ] - - set vout6 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout6 ] - - - # Create ports - set ATTN_CLK [ create_bd_port -dir O ATTN_CLK ] - set ATTN_LE [ create_bd_port -dir O -from 2 -to 0 ATTN_LE ] - set ATTN_SI [ create_bd_port -dir O ATTN_SI ] - set BIAS_CE [ create_bd_port -dir O -from 0 -to 0 BIAS_CE ] - set BIAS_CLR [ create_bd_port -dir O -from 0 -to 0 BIAS_CLR ] - set BIAS_RESET [ create_bd_port -dir O -from 0 -to 0 BIAS_RESET ] - set BIAS_S [ create_bd_port -dir O -from 3 -to 0 BIAS_S ] - set BIAS_SCLK [ create_bd_port -dir O BIAS_SCLK ] - set BIAS_SDI [ create_bd_port -dir O BIAS_SDI ] - set BIAS_SDO [ create_bd_port -dir I BIAS_SDO ] - set LO_CS0 [ create_bd_port -dir O LO_CS0 ] - set LO_CS1 [ create_bd_port -dir O LO_CS1 ] - set LO_MISO0 [ create_bd_port -dir I LO_MISO0 ] - set LO_MISO1 [ create_bd_port -dir I LO_MISO1 ] - set LO_MOSI [ create_bd_port -dir O LO_MOSI ] - set LO_SCLK [ create_bd_port -dir O LO_SCLK ] - set PMOD0_0_LS [ create_bd_port -dir O PMOD0_0_LS ] - set PMOD0_1_LS [ create_bd_port -dir O PMOD0_1_LS ] - set PMOD0_2_LS [ create_bd_port -dir O PMOD0_2_LS ] - set PMOD0_3_LS [ create_bd_port -dir O PMOD0_3_LS ] - set PMOD0_4_LS [ create_bd_port -dir O PMOD0_4_LS ] - set PMOD0_5_LS [ create_bd_port -dir O PMOD0_5_LS ] - set PMOD0_6_LS [ create_bd_port -dir O PMOD0_6_LS ] - set PMOD0_7_LS [ create_bd_port -dir O PMOD0_7_LS ] - set PMOD1_0_LS [ create_bd_port -dir I PMOD1_0_LS ] - set PWR_SYNC [ create_bd_port -dir O -from 0 -to 0 PWR_SYNC ] - set RST_5VEN [ create_bd_port -dir O -from 0 -to 0 RST_5VEN ] - set S [ create_bd_port -dir O -from 3 -to 0 S ] - set SCLK [ create_bd_port -dir O SCLK ] - set SDI [ create_bd_port -dir O SDI ] - set SDO [ create_bd_port -dir I SDO ] - - # Create instance: attn_spi, and set properties - set attn_spi [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_quad_spi:3.2 attn_spi ] - set_property -dict [ list \ - CONFIG.C_NUM_SS_BITS {3} \ - CONFIG.C_NUM_TRANSFER_BITS {16} \ - ] $attn_spi - - # Create instance: axi_bram_ctrl_0, and set properties - set axi_bram_ctrl_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_bram_ctrl:4.1 axi_bram_ctrl_0 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {64} \ - CONFIG.ECC_TYPE {0} \ - CONFIG.SINGLE_PORT_BRAM {1} \ - ] $axi_bram_ctrl_0 - - # Create instance: axi_bram_ctrl_0_bram, and set properties - set axi_bram_ctrl_0_bram [ create_bd_cell -type ip -vlnv xilinx.com:ip:blk_mem_gen:8.4 axi_bram_ctrl_0_bram ] - set_property -dict [ list \ - CONFIG.EN_SAFETY_CKT {false} \ - CONFIG.Enable_B {Use_ENB_Pin} \ - CONFIG.Memory_Type {True_Dual_Port_RAM} \ - CONFIG.Port_B_Clock {100} \ - CONFIG.Port_B_Enable_Rate {100} \ - CONFIG.Port_B_Write_Rate {50} \ - CONFIG.Read_Width_B {64} \ - CONFIG.Use_RSTB_Pin {true} \ - CONFIG.Write_Width_B {64} \ - ] $axi_bram_ctrl_0_bram - - # Create instance: axi_dma_avg, and set properties - set axi_dma_avg [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_avg ] - set_property -dict [ list \ - CONFIG.c_include_mm2s {0} \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_include_stscntrl_strm {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_avg - - # Create instance: axi_dma_buf, and set properties - set axi_dma_buf [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_buf ] - set_property -dict [ list \ - CONFIG.c_include_mm2s {0} \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_include_stscntrl_strm {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_buf - - # Create instance: axi_dma_gen, and set properties - set axi_dma_gen [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_gen ] - set_property -dict [ list \ - CONFIG.c_include_mm2s {1} \ - CONFIG.c_include_s2mm {0} \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_include_stscntrl_strm {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_gen - - # Create instance: axi_dma_tproc, and set properties - set axi_dma_tproc [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_tproc ] - set_property -dict [ list \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_include_stscntrl_strm {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_tproc - - # Create instance: axi_smc, and set properties - set axi_smc [ create_bd_cell -type ip -vlnv xilinx.com:ip:smartconnect:1.0 axi_smc ] - set_property -dict [ list \ - CONFIG.NUM_SI {5} \ - ] $axi_smc - - # Create instance: axis_avg_buffer_0, and set properties - set axis_avg_buffer_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_avg_buffer:1.2 axis_avg_buffer_0 ] - set_property -dict [ list \ - CONFIG.N_AVG {14} \ - ] $axis_avg_buffer_0 - - # Create instance: axis_avg_buffer_1, and set properties - set axis_avg_buffer_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_avg_buffer:1.2 axis_avg_buffer_1 ] - set_property -dict [ list \ - CONFIG.N_AVG {14} \ - ] $axis_avg_buffer_1 - - # Create instance: axis_clk_cnvrt_avg_0, and set properties - set axis_clk_cnvrt_avg_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clk_cnvrt_avg_0 ] - - # Create instance: axis_clk_cnvrt_avg_1, and set properties - set axis_clk_cnvrt_avg_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clk_cnvrt_avg_1 ] - - # Create instance: axis_clk_cnvrt_gen_3, and set properties - set axis_clk_cnvrt_gen_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clk_cnvrt_gen_3 ] - - # Create instance: axis_clk_cnvrt_gen_4, and set properties - set axis_clk_cnvrt_gen_4 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clk_cnvrt_gen_4 ] - - # Create instance: axis_clk_cnvrt_gen_5, and set properties - set axis_clk_cnvrt_gen_5 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clk_cnvrt_gen_5 ] - - # Create instance: axis_clk_cnvrt_gen_6, and set properties - set axis_clk_cnvrt_gen_6 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clk_cnvrt_gen_6 ] - - # Create instance: axis_constant_0, and set properties - set axis_constant_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_constant:1.0 axis_constant_0 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {64} \ - ] $axis_constant_0 - - # Create instance: axis_constant_1, and set properties - set axis_constant_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_constant:1.0 axis_constant_1 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {64} \ - ] $axis_constant_1 - - # Create instance: axis_readout_v2_0, and set properties - set axis_readout_v2_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_readout_v2:1.0 axis_readout_v2_0 ] - - # Create instance: axis_readout_v2_1, and set properties - set axis_readout_v2_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_readout_v2:1.0 axis_readout_v2_1 ] - - # Create instance: axis_register_slice_0, and set properties - set axis_register_slice_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_0 ] - - # Create instance: axis_register_slice_1, and set properties - set axis_register_slice_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_1 ] - - # Create instance: axis_set_reg_0, and set properties - set axis_set_reg_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_set_reg:1.0 axis_set_reg_0 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {160} \ - ] $axis_set_reg_0 - - # Create instance: axis_signal_gen_v6_0, and set properties - set axis_signal_gen_v6_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_0 ] - - # Create instance: axis_signal_gen_v6_1, and set properties - set axis_signal_gen_v6_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_1 ] - - # Create instance: axis_signal_gen_v6_2, and set properties - set axis_signal_gen_v6_2 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_2 ] - - # Create instance: axis_signal_gen_v6_3, and set properties - set axis_signal_gen_v6_3 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_3 ] - - # Create instance: axis_signal_gen_v6_4, and set properties - set axis_signal_gen_v6_4 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_4 ] - - # Create instance: axis_signal_gen_v6_5, and set properties - set axis_signal_gen_v6_5 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_5 ] - - # Create instance: axis_signal_gen_v6_6, and set properties - set axis_signal_gen_v6_6 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_6 ] - - # Create instance: axis_switch_avg, and set properties - set axis_switch_avg [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_switch:1.1 axis_switch_avg ] - set_property -dict [ list \ - CONFIG.ROUTING_MODE {1} \ - ] $axis_switch_avg - - # Create instance: axis_switch_buf, and set properties - set axis_switch_buf [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_switch:1.1 axis_switch_buf ] - set_property -dict [ list \ - CONFIG.ROUTING_MODE {1} \ - ] $axis_switch_buf - - # Create instance: axis_switch_gen, and set properties - set axis_switch_gen [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_switch:1.1 axis_switch_gen ] - set_property -dict [ list \ - CONFIG.DECODER_REG {1} \ - CONFIG.NUM_MI {7} \ - CONFIG.NUM_SI {1} \ - CONFIG.ROUTING_MODE {1} \ - ] $axis_switch_gen - - # Create instance: axis_terminator_0, and set properties - set axis_terminator_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_terminator:1.0 axis_terminator_0 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {256} \ - ] $axis_terminator_0 - - # Create instance: axis_terminator_1, and set properties - set axis_terminator_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_terminator:1.0 axis_terminator_1 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {256} \ - ] $axis_terminator_1 - - # Create instance: axis_tproc64x32_x8_0, and set properties - set axis_tproc64x32_x8_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_tproc64x32_x8:1.0 axis_tproc64x32_x8_0 ] - set_property -dict [ list \ - CONFIG.DMEM_N {12} \ - CONFIG.PMEM_N {20} \ - ] $axis_tproc64x32_x8_0 - - # Create instance: bias_constant_0, and set properties - set bias_constant_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 bias_constant_0 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {0} \ - ] $bias_constant_0 - - # Create instance: bias_constant_1, and set properties - set bias_constant_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 bias_constant_1 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {1} \ - ] $bias_constant_1 - - # Create instance: clk_adc0_x2, and set properties - set clk_adc0_x2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:6.0 clk_adc0_x2 ] - set_property -dict [ list \ - CONFIG.CLKIN1_JITTER_PS {52.08} \ - CONFIG.CLKOUT1_JITTER {81.938} \ - CONFIG.CLKOUT1_PHASE_ERROR {82.655} \ - CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {384} \ - CONFIG.MMCM_CLKFBOUT_MULT_F {6.250} \ - CONFIG.MMCM_CLKIN1_PERIOD {5.208} \ - CONFIG.MMCM_CLKIN2_PERIOD {10.0} \ - CONFIG.MMCM_CLKOUT0_DIVIDE_F {3.125} \ - ] $clk_adc0_x2 - - # Create instance: dac_bias_spi, and set properties - set dac_bias_spi [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_quad_spi:3.2 dac_bias_spi ] - set_property -dict [ list \ - CONFIG.C_NUM_SS_BITS {4} \ - CONFIG.C_NUM_TRANSFER_BITS {8} \ - ] $dac_bias_spi - - # Create instance: dig_lconstant_1, and set properties - set dig_lconstant_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 dig_lconstant_1 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {1} \ - ] $dig_lconstant_1 - - # Create instance: lo_spi, and set properties - set lo_spi [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_quad_spi:3.2 lo_spi ] - set_property -dict [ list \ - CONFIG.C_NUM_SS_BITS {2} \ - CONFIG.C_NUM_TRANSFER_BITS {8} \ - ] $lo_spi - - # Create instance: lo_spi_mux_0, and set properties - set block_name lo_spi_mux - set block_cell_name lo_spi_mux_0 - if { [catch {set lo_spi_mux_0 [create_bd_cell -type module -reference $block_name $block_cell_name] } errmsg] } { - catch {common::send_gid_msg -ssname BD::TCL -id 2095 -severity "ERROR" "Unable to add referenced block <$block_name>. Please add the files for ${block_name}'s definition into the project."} - return 1 - } elseif { $lo_spi_mux_0 eq "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2096 -severity "ERROR" "Unable to referenced block <$block_name>. Please add the files for ${block_name}'s definition into the project."} - return 1 - } - - # Create instance: ps8_0_axi_periph, and set properties - set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] - set_property -dict [ list \ - CONFIG.NUM_MI {26} \ - ] $ps8_0_axi_periph - - # Create instance: psf_spi, and set properties - set psf_spi [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_quad_spi:3.2 psf_spi ] - set_property -dict [ list \ - CONFIG.C_NUM_SS_BITS {4} \ - CONFIG.C_NUM_TRANSFER_BITS {8} \ - ] $psf_spi - - # Create instance: rst_100, and set properties - set rst_100 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_100 ] - - # Create instance: rst_adc0, and set properties - set rst_adc0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_adc0 ] - - # Create instance: rst_adc0_x2, and set properties - set rst_adc0_x2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_adc0_x2 ] - - # Create instance: rst_dac0, and set properties - set rst_dac0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_dac0 ] - - # Create instance: rst_dac1, and set properties - set rst_dac1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_dac1 ] - - # Create instance: system_ila_0, and set properties - set system_ila_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:system_ila:1.1 system_ila_0 ] - set_property -dict [ list \ - CONFIG.C_BRAM_CNT {6} \ - CONFIG.C_MON_TYPE {MIX} \ - CONFIG.C_NUM_MONITOR_SLOTS {1} \ - CONFIG.C_SLOT {0} \ - CONFIG.C_SLOT_0_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - CONFIG.C_SLOT_1_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - CONFIG.C_SLOT_2_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - CONFIG.C_SLOT_3_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - CONFIG.C_SLOT_4_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - ] $system_ila_0 - - # Create instance: system_ila_1, and set properties - set system_ila_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:system_ila:1.1 system_ila_1 ] - set_property -dict [ list \ - CONFIG.C_BRAM_CNT {6} \ - CONFIG.C_MON_TYPE {MIX} \ - CONFIG.C_NUM_MONITOR_SLOTS {1} \ - CONFIG.C_SLOT {0} \ - CONFIG.C_SLOT_0_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - CONFIG.C_SLOT_1_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - CONFIG.C_SLOT_2_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - CONFIG.C_SLOT_3_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - CONFIG.C_SLOT_4_INTF_TYPE {xilinx.com:interface:axis_rtl:1.0} \ - ] $system_ila_1 - - # Create instance: usp_rf_data_converter_0, and set properties - set usp_rf_data_converter_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:usp_rf_data_converter:2.4 usp_rf_data_converter_0 ] - set_property -dict [ list \ - CONFIG.ADC0_Enable {1} \ - CONFIG.ADC0_Fabric_Freq {384.000} \ - CONFIG.ADC0_Outclk_Freq {192.000} \ - CONFIG.ADC0_PLL_Enable {true} \ - CONFIG.ADC0_Refclk_Freq {204.800} \ - CONFIG.ADC0_Sampling_Rate {3.072} \ - CONFIG.ADC_Decimation_Mode00 {1} \ - CONFIG.ADC_Decimation_Mode01 {1} \ - CONFIG.ADC_Decimation_Mode02 {1} \ - CONFIG.ADC_Decimation_Mode03 {1} \ - CONFIG.ADC_Mixer_Type00 {0} \ - CONFIG.ADC_Mixer_Type01 {0} \ - CONFIG.ADC_Mixer_Type02 {0} \ - CONFIG.ADC_Mixer_Type03 {0} \ - CONFIG.ADC_Slice00_Enable {true} \ - CONFIG.ADC_Slice01_Enable {true} \ - CONFIG.ADC_Slice02_Enable {true} \ - CONFIG.ADC_Slice03_Enable {true} \ - CONFIG.DAC0_Enable {1} \ - CONFIG.DAC0_Fabric_Freq {384.000} \ - CONFIG.DAC0_Outclk_Freq {384.000} \ - CONFIG.DAC0_PLL_Enable {true} \ - CONFIG.DAC0_Refclk_Freq {204.800} \ - CONFIG.DAC0_Sampling_Rate {6.144} \ - CONFIG.DAC1_Enable {1} \ - CONFIG.DAC1_Fabric_Freq {384.000} \ - CONFIG.DAC1_Outclk_Freq {384.000} \ - CONFIG.DAC1_PLL_Enable {true} \ - CONFIG.DAC1_Refclk_Freq {204.800} \ - CONFIG.DAC1_Sampling_Rate {6.144} \ - CONFIG.DAC_Interpolation_Mode00 {1} \ - CONFIG.DAC_Interpolation_Mode01 {1} \ - CONFIG.DAC_Interpolation_Mode02 {1} \ - CONFIG.DAC_Interpolation_Mode10 {1} \ - CONFIG.DAC_Interpolation_Mode11 {1} \ - CONFIG.DAC_Interpolation_Mode12 {1} \ - CONFIG.DAC_Interpolation_Mode13 {1} \ - CONFIG.DAC_Mixer_Type00 {0} \ - CONFIG.DAC_Mixer_Type01 {0} \ - CONFIG.DAC_Mixer_Type02 {0} \ - CONFIG.DAC_Mixer_Type10 {0} \ - CONFIG.DAC_Mixer_Type11 {0} \ - CONFIG.DAC_Mixer_Type12 {0} \ - CONFIG.DAC_Mixer_Type13 {0} \ - CONFIG.DAC_Slice00_Enable {true} \ - CONFIG.DAC_Slice01_Enable {true} \ - CONFIG.DAC_Slice02_Enable {true} \ - CONFIG.DAC_Slice10_Enable {true} \ - CONFIG.DAC_Slice11_Enable {true} \ - CONFIG.DAC_Slice12_Enable {true} \ - CONFIG.DAC_Slice13_Enable {true} \ - ] $usp_rf_data_converter_0 - - # Create instance: vect2bits_16_0, and set properties - set block_name vect2bits_16 - set block_cell_name vect2bits_16_0 - if { [catch {set vect2bits_16_0 [create_bd_cell -type module -reference $block_name $block_cell_name] } errmsg] } { - catch {common::send_gid_msg -ssname BD::TCL -id 2095 -severity "ERROR" "Unable to add referenced block <$block_name>. Please add the files for ${block_name}'s definition into the project."} - return 1 - } elseif { $vect2bits_16_0 eq "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2096 -severity "ERROR" "Unable to referenced block <$block_name>. Please add the files for ${block_name}'s definition into the project."} - return 1 - } - - # Create instance: xlconstant_0, and set properties - set xlconstant_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_0 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {0} \ - CONFIG.CONST_WIDTH {64} \ - ] $xlconstant_0 - - # Create instance: xlconstant_1, and set properties - set xlconstant_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_1 ] - set_property -dict [ list \ - CONFIG.CONST_WIDTH {1} \ - ] $xlconstant_1 - - # Create instance: xlconstant_2, and set properties - set xlconstant_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_2 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {0} \ - CONFIG.CONST_WIDTH {1} \ - ] $xlconstant_2 - - # Create instance: xlconstant_3, and set properties - set xlconstant_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_3 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {0} \ - CONFIG.CONST_WIDTH {8} \ - ] $xlconstant_3 - - # Create instance: zynq_ultra_ps_e_0, and set properties - set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] - set_property -dict [ list \ - CONFIG.CAN0_BOARD_INTERFACE {custom} \ - CONFIG.CAN1_BOARD_INTERFACE {custom} \ - CONFIG.CSU_BOARD_INTERFACE {custom} \ - CONFIG.DP_BOARD_INTERFACE {custom} \ - CONFIG.GEM0_BOARD_INTERFACE {custom} \ - CONFIG.GEM1_BOARD_INTERFACE {custom} \ - CONFIG.GEM2_BOARD_INTERFACE {custom} \ - CONFIG.GEM3_BOARD_INTERFACE {custom} \ - CONFIG.GPIO_BOARD_INTERFACE {custom} \ - CONFIG.IIC0_BOARD_INTERFACE {custom} \ - CONFIG.IIC1_BOARD_INTERFACE {custom} \ - CONFIG.NAND_BOARD_INTERFACE {custom} \ - CONFIG.PCIE_BOARD_INTERFACE {custom} \ - CONFIG.PJTAG_BOARD_INTERFACE {custom} \ - CONFIG.PMU_BOARD_INTERFACE {custom} \ - CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ - CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ - CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ - CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS33} \ - CONFIG.PSU_DDR_RAM_HIGHADDR {0xFFFFFFFF} \ - CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x800000000} \ - CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ - CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ - CONFIG.PSU_IMPORT_BOARD_PRESET {} \ - CONFIG.PSU_MIO_0_DIRECTION {out} \ - CONFIG.PSU_MIO_0_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_0_POLARITY {Default} \ - CONFIG.PSU_MIO_0_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_0_SLEW {fast} \ - CONFIG.PSU_MIO_10_DIRECTION {inout} \ - CONFIG.PSU_MIO_10_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_10_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_10_POLARITY {Default} \ - CONFIG.PSU_MIO_10_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_10_SLEW {fast} \ - CONFIG.PSU_MIO_11_DIRECTION {inout} \ - CONFIG.PSU_MIO_11_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_11_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_11_POLARITY {Default} \ - CONFIG.PSU_MIO_11_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_11_SLEW {fast} \ - CONFIG.PSU_MIO_12_DIRECTION {out} \ - CONFIG.PSU_MIO_12_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_12_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_12_POLARITY {Default} \ - CONFIG.PSU_MIO_12_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_12_SLEW {fast} \ - CONFIG.PSU_MIO_13_DIRECTION {inout} \ - CONFIG.PSU_MIO_13_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_13_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_13_POLARITY {Default} \ - CONFIG.PSU_MIO_13_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_13_SLEW {fast} \ - CONFIG.PSU_MIO_14_DIRECTION {inout} \ - CONFIG.PSU_MIO_14_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_14_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_14_POLARITY {Default} \ - CONFIG.PSU_MIO_14_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_14_SLEW {fast} \ - CONFIG.PSU_MIO_15_DIRECTION {inout} \ - CONFIG.PSU_MIO_15_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_15_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_15_POLARITY {Default} \ - CONFIG.PSU_MIO_15_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_15_SLEW {fast} \ - CONFIG.PSU_MIO_16_DIRECTION {inout} \ - CONFIG.PSU_MIO_16_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_16_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_16_POLARITY {Default} \ - CONFIG.PSU_MIO_16_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_16_SLEW {fast} \ - CONFIG.PSU_MIO_17_DIRECTION {inout} \ - CONFIG.PSU_MIO_17_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_17_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_17_POLARITY {Default} \ - CONFIG.PSU_MIO_17_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_17_SLEW {fast} \ - CONFIG.PSU_MIO_18_DIRECTION {in} \ - CONFIG.PSU_MIO_18_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_18_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_18_POLARITY {Default} \ - CONFIG.PSU_MIO_18_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_18_SLEW {fast} \ - CONFIG.PSU_MIO_19_DIRECTION {out} \ - CONFIG.PSU_MIO_19_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_19_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_19_POLARITY {Default} \ - CONFIG.PSU_MIO_19_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_19_SLEW {fast} \ - CONFIG.PSU_MIO_1_DIRECTION {inout} \ - CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_1_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_1_POLARITY {Default} \ - CONFIG.PSU_MIO_1_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_1_SLEW {fast} \ - CONFIG.PSU_MIO_20_DIRECTION {inout} \ - CONFIG.PSU_MIO_20_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_20_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_20_POLARITY {Default} \ - CONFIG.PSU_MIO_20_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_20_SLEW {fast} \ - CONFIG.PSU_MIO_21_DIRECTION {inout} \ - CONFIG.PSU_MIO_21_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_21_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_21_POLARITY {Default} \ - CONFIG.PSU_MIO_21_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_21_SLEW {fast} \ - CONFIG.PSU_MIO_22_DIRECTION {inout} \ - CONFIG.PSU_MIO_22_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_22_POLARITY {Default} \ - CONFIG.PSU_MIO_22_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_22_SLEW {fast} \ - CONFIG.PSU_MIO_23_DIRECTION {inout} \ - CONFIG.PSU_MIO_23_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_23_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_23_POLARITY {Default} \ - CONFIG.PSU_MIO_23_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_23_SLEW {fast} \ - CONFIG.PSU_MIO_24_DIRECTION {inout} \ - CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_24_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_24_POLARITY {Default} \ - CONFIG.PSU_MIO_24_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_24_SLEW {fast} \ - CONFIG.PSU_MIO_25_DIRECTION {inout} \ - CONFIG.PSU_MIO_25_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_25_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_25_POLARITY {Default} \ - CONFIG.PSU_MIO_25_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_25_SLEW {fast} \ - CONFIG.PSU_MIO_26_DIRECTION {inout} \ - CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_26_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_26_POLARITY {Default} \ - CONFIG.PSU_MIO_26_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_26_SLEW {fast} \ - CONFIG.PSU_MIO_27_DIRECTION {out} \ - CONFIG.PSU_MIO_27_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_27_POLARITY {Default} \ - CONFIG.PSU_MIO_27_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_27_SLEW {fast} \ - CONFIG.PSU_MIO_28_DIRECTION {in} \ - CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_28_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_28_POLARITY {Default} \ - CONFIG.PSU_MIO_28_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_28_SLEW {fast} \ - CONFIG.PSU_MIO_29_DIRECTION {out} \ - CONFIG.PSU_MIO_29_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_29_POLARITY {Default} \ - CONFIG.PSU_MIO_29_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_29_SLEW {fast} \ - CONFIG.PSU_MIO_2_DIRECTION {inout} \ - CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_2_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_2_POLARITY {Default} \ - CONFIG.PSU_MIO_2_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_2_SLEW {fast} \ - CONFIG.PSU_MIO_30_DIRECTION {in} \ - CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_30_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_30_POLARITY {Default} \ - CONFIG.PSU_MIO_30_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_30_SLEW {fast} \ - CONFIG.PSU_MIO_31_DIRECTION {inout} \ - CONFIG.PSU_MIO_31_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_31_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_31_POLARITY {Default} \ - CONFIG.PSU_MIO_31_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_31_SLEW {fast} \ - CONFIG.PSU_MIO_32_DIRECTION {out} \ - CONFIG.PSU_MIO_32_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_32_POLARITY {Default} \ - CONFIG.PSU_MIO_32_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_32_SLEW {fast} \ - CONFIG.PSU_MIO_33_DIRECTION {out} \ - CONFIG.PSU_MIO_33_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_33_POLARITY {Default} \ - CONFIG.PSU_MIO_33_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_33_SLEW {fast} \ - CONFIG.PSU_MIO_34_DIRECTION {out} \ - CONFIG.PSU_MIO_34_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_34_POLARITY {Default} \ - CONFIG.PSU_MIO_34_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_34_SLEW {fast} \ - CONFIG.PSU_MIO_35_DIRECTION {out} \ - CONFIG.PSU_MIO_35_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_35_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_35_POLARITY {Default} \ - CONFIG.PSU_MIO_35_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_35_SLEW {fast} \ - CONFIG.PSU_MIO_36_DIRECTION {out} \ - CONFIG.PSU_MIO_36_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_36_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_36_POLARITY {Default} \ - CONFIG.PSU_MIO_36_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_36_SLEW {fast} \ - CONFIG.PSU_MIO_37_DIRECTION {out} \ - CONFIG.PSU_MIO_37_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_37_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_37_POLARITY {Default} \ - CONFIG.PSU_MIO_37_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_37_SLEW {fast} \ - CONFIG.PSU_MIO_38_DIRECTION {inout} \ - CONFIG.PSU_MIO_38_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_38_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_38_POLARITY {Default} \ - CONFIG.PSU_MIO_38_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_38_SLEW {fast} \ - CONFIG.PSU_MIO_39_DIRECTION {inout} \ - CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_39_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_39_POLARITY {Default} \ - CONFIG.PSU_MIO_39_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_39_SLEW {fast} \ - CONFIG.PSU_MIO_3_DIRECTION {inout} \ - CONFIG.PSU_MIO_3_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_3_POLARITY {Default} \ - CONFIG.PSU_MIO_3_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_3_SLEW {fast} \ - CONFIG.PSU_MIO_40_DIRECTION {inout} \ - CONFIG.PSU_MIO_40_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_40_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_40_POLARITY {Default} \ - CONFIG.PSU_MIO_40_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_40_SLEW {fast} \ - CONFIG.PSU_MIO_41_DIRECTION {inout} \ - CONFIG.PSU_MIO_41_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_41_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_41_POLARITY {Default} \ - CONFIG.PSU_MIO_41_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_41_SLEW {fast} \ - CONFIG.PSU_MIO_42_DIRECTION {inout} \ - CONFIG.PSU_MIO_42_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_42_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_42_POLARITY {Default} \ - CONFIG.PSU_MIO_42_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_42_SLEW {fast} \ - CONFIG.PSU_MIO_43_DIRECTION {inout} \ - CONFIG.PSU_MIO_43_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_43_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_43_POLARITY {Default} \ - CONFIG.PSU_MIO_43_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_43_SLEW {fast} \ - CONFIG.PSU_MIO_44_DIRECTION {inout} \ - CONFIG.PSU_MIO_44_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_44_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_44_POLARITY {Default} \ - CONFIG.PSU_MIO_44_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_44_SLEW {fast} \ - CONFIG.PSU_MIO_45_DIRECTION {in} \ - CONFIG.PSU_MIO_45_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_45_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_45_POLARITY {Default} \ - CONFIG.PSU_MIO_45_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_45_SLEW {fast} \ - CONFIG.PSU_MIO_46_DIRECTION {inout} \ - CONFIG.PSU_MIO_46_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_46_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_46_POLARITY {Default} \ - CONFIG.PSU_MIO_46_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_46_SLEW {fast} \ - CONFIG.PSU_MIO_47_DIRECTION {inout} \ - CONFIG.PSU_MIO_47_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_47_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_47_POLARITY {Default} \ - CONFIG.PSU_MIO_47_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_47_SLEW {fast} \ - CONFIG.PSU_MIO_48_DIRECTION {inout} \ - CONFIG.PSU_MIO_48_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_48_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_48_POLARITY {Default} \ - CONFIG.PSU_MIO_48_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_48_SLEW {fast} \ - CONFIG.PSU_MIO_49_DIRECTION {inout} \ - CONFIG.PSU_MIO_49_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_49_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_49_POLARITY {Default} \ - CONFIG.PSU_MIO_49_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_49_SLEW {fast} \ - CONFIG.PSU_MIO_4_DIRECTION {inout} \ - CONFIG.PSU_MIO_4_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_4_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_4_POLARITY {Default} \ - CONFIG.PSU_MIO_4_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_4_SLEW {fast} \ - CONFIG.PSU_MIO_50_DIRECTION {inout} \ - CONFIG.PSU_MIO_50_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_50_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_50_POLARITY {Default} \ - CONFIG.PSU_MIO_50_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_50_SLEW {fast} \ - CONFIG.PSU_MIO_51_DIRECTION {out} \ - CONFIG.PSU_MIO_51_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_51_POLARITY {Default} \ - CONFIG.PSU_MIO_51_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_51_SLEW {fast} \ - CONFIG.PSU_MIO_52_DIRECTION {in} \ - CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_52_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_52_POLARITY {Default} \ - CONFIG.PSU_MIO_52_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_52_SLEW {fast} \ - CONFIG.PSU_MIO_53_DIRECTION {in} \ - CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_53_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_53_POLARITY {Default} \ - CONFIG.PSU_MIO_53_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_53_SLEW {fast} \ - CONFIG.PSU_MIO_54_DIRECTION {inout} \ - CONFIG.PSU_MIO_54_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_54_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_54_POLARITY {Default} \ - CONFIG.PSU_MIO_54_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_54_SLEW {fast} \ - CONFIG.PSU_MIO_55_DIRECTION {in} \ - CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_55_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_55_POLARITY {Default} \ - CONFIG.PSU_MIO_55_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_55_SLEW {fast} \ - CONFIG.PSU_MIO_56_DIRECTION {inout} \ - CONFIG.PSU_MIO_56_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_56_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_56_POLARITY {Default} \ - CONFIG.PSU_MIO_56_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_56_SLEW {fast} \ - CONFIG.PSU_MIO_57_DIRECTION {inout} \ - CONFIG.PSU_MIO_57_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_57_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_57_POLARITY {Default} \ - CONFIG.PSU_MIO_57_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_57_SLEW {fast} \ - CONFIG.PSU_MIO_58_DIRECTION {out} \ - CONFIG.PSU_MIO_58_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_58_POLARITY {Default} \ - CONFIG.PSU_MIO_58_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_58_SLEW {fast} \ - CONFIG.PSU_MIO_59_DIRECTION {inout} \ - CONFIG.PSU_MIO_59_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_59_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_59_POLARITY {Default} \ - CONFIG.PSU_MIO_59_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_59_SLEW {fast} \ - CONFIG.PSU_MIO_5_DIRECTION {out} \ - CONFIG.PSU_MIO_5_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_5_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_5_POLARITY {Default} \ - CONFIG.PSU_MIO_5_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_5_SLEW {fast} \ - CONFIG.PSU_MIO_60_DIRECTION {inout} \ - CONFIG.PSU_MIO_60_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_60_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_60_POLARITY {Default} \ - CONFIG.PSU_MIO_60_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_60_SLEW {fast} \ - CONFIG.PSU_MIO_61_DIRECTION {inout} \ - CONFIG.PSU_MIO_61_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_61_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_61_POLARITY {Default} \ - CONFIG.PSU_MIO_61_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_61_SLEW {fast} \ - CONFIG.PSU_MIO_62_DIRECTION {inout} \ - CONFIG.PSU_MIO_62_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_62_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_62_POLARITY {Default} \ - CONFIG.PSU_MIO_62_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_62_SLEW {fast} \ - CONFIG.PSU_MIO_63_DIRECTION {inout} \ - CONFIG.PSU_MIO_63_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_63_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_63_POLARITY {Default} \ - CONFIG.PSU_MIO_63_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_63_SLEW {fast} \ - CONFIG.PSU_MIO_64_DIRECTION {out} \ - CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_64_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_64_POLARITY {Default} \ - CONFIG.PSU_MIO_64_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_64_SLEW {fast} \ - CONFIG.PSU_MIO_65_DIRECTION {out} \ - CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_65_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_65_POLARITY {Default} \ - CONFIG.PSU_MIO_65_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_65_SLEW {fast} \ - CONFIG.PSU_MIO_66_DIRECTION {out} \ - CONFIG.PSU_MIO_66_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_66_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_66_POLARITY {Default} \ - CONFIG.PSU_MIO_66_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_66_SLEW {fast} \ - CONFIG.PSU_MIO_67_DIRECTION {out} \ - CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_67_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_67_POLARITY {Default} \ - CONFIG.PSU_MIO_67_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_67_SLEW {fast} \ - CONFIG.PSU_MIO_68_DIRECTION {out} \ - CONFIG.PSU_MIO_68_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_68_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_68_POLARITY {Default} \ - CONFIG.PSU_MIO_68_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_68_SLEW {fast} \ - CONFIG.PSU_MIO_69_DIRECTION {out} \ - CONFIG.PSU_MIO_69_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_69_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_69_POLARITY {Default} \ - CONFIG.PSU_MIO_69_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_69_SLEW {fast} \ - CONFIG.PSU_MIO_6_DIRECTION {out} \ - CONFIG.PSU_MIO_6_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_6_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_6_POLARITY {Default} \ - CONFIG.PSU_MIO_6_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_6_SLEW {fast} \ - CONFIG.PSU_MIO_70_DIRECTION {in} \ - CONFIG.PSU_MIO_70_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_70_POLARITY {Default} \ - CONFIG.PSU_MIO_70_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_70_SLEW {fast} \ - CONFIG.PSU_MIO_71_DIRECTION {in} \ - CONFIG.PSU_MIO_71_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_71_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_71_POLARITY {Default} \ - CONFIG.PSU_MIO_71_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_71_SLEW {fast} \ - CONFIG.PSU_MIO_72_DIRECTION {in} \ - CONFIG.PSU_MIO_72_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_72_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_72_POLARITY {Default} \ - CONFIG.PSU_MIO_72_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_72_SLEW {fast} \ - CONFIG.PSU_MIO_73_DIRECTION {in} \ - CONFIG.PSU_MIO_73_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_73_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_73_POLARITY {Default} \ - CONFIG.PSU_MIO_73_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_73_SLEW {fast} \ - CONFIG.PSU_MIO_74_DIRECTION {in} \ - CONFIG.PSU_MIO_74_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_74_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_74_POLARITY {Default} \ - CONFIG.PSU_MIO_74_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_74_SLEW {fast} \ - CONFIG.PSU_MIO_75_DIRECTION {in} \ - CONFIG.PSU_MIO_75_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_75_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_75_POLARITY {Default} \ - CONFIG.PSU_MIO_75_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_75_SLEW {fast} \ - CONFIG.PSU_MIO_76_DIRECTION {out} \ - CONFIG.PSU_MIO_76_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_76_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_76_POLARITY {Default} \ - CONFIG.PSU_MIO_76_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_76_SLEW {fast} \ - CONFIG.PSU_MIO_77_DIRECTION {inout} \ - CONFIG.PSU_MIO_77_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_77_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_77_POLARITY {Default} \ - CONFIG.PSU_MIO_77_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_77_SLEW {fast} \ - CONFIG.PSU_MIO_7_DIRECTION {out} \ - CONFIG.PSU_MIO_7_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_7_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_7_POLARITY {Default} \ - CONFIG.PSU_MIO_7_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_7_SLEW {fast} \ - CONFIG.PSU_MIO_8_DIRECTION {inout} \ - CONFIG.PSU_MIO_8_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_8_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_8_POLARITY {Default} \ - CONFIG.PSU_MIO_8_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_8_SLEW {fast} \ - CONFIG.PSU_MIO_9_DIRECTION {inout} \ - CONFIG.PSU_MIO_9_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_9_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_9_POLARITY {Default} \ - CONFIG.PSU_MIO_9_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_9_SLEW {fast} \ - CONFIG.PSU_MIO_TREE_PERIPHERALS {Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Feedback Clk#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO0 MIO#I2C 0#I2C 0#I2C 1#I2C 1#UART 0#UART 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO1 MIO#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#PMU GPO 3#PMU GPO 4#PMU GPO 5#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#MDIO 3#MDIO 3} \ - CONFIG.PSU_MIO_TREE_SIGNALS {sclk_out#miso_mo1#mo2#mo3#mosi_mi0#n_ss_out#clk_for_lpbk#n_ss_out_upper#mo_upper[0]#mo_upper[1]#mo_upper[2]#mo_upper[3]#sclk_out_upper#gpio0[13]#scl_out#sda_out#scl_out#sda_out#rxd#txd#gpio0[20]#gpio0[21]#gpio0[22]#gpio0[23]#gpio0[24]#gpio0[25]#gpio1[26]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpo[3]#gpo[4]#gpo[5]#gpio1[38]#sdio1_data_out[4]#sdio1_data_out[5]#sdio1_data_out[6]#sdio1_data_out[7]#gpio1[43]#gpio1[44]#sdio1_cd_n#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#rgmii_tx_clk#rgmii_txd[0]#rgmii_txd[1]#rgmii_txd[2]#rgmii_txd[3]#rgmii_tx_ctl#rgmii_rx_clk#rgmii_rxd[0]#rgmii_rxd[1]#rgmii_rxd[2]#rgmii_rxd[3]#rgmii_rx_ctl#gem3_mdc#gem3_mdio_out} \ - CONFIG.PSU_PERIPHERAL_BOARD_PRESET {} \ - CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {8} \ - CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {8} \ - CONFIG.PSU_SMC_CYCLE_T0 {NA} \ - CONFIG.PSU_SMC_CYCLE_T1 {NA} \ - CONFIG.PSU_SMC_CYCLE_T2 {NA} \ - CONFIG.PSU_SMC_CYCLE_T3 {NA} \ - CONFIG.PSU_SMC_CYCLE_T4 {NA} \ - CONFIG.PSU_SMC_CYCLE_T5 {NA} \ - CONFIG.PSU_SMC_CYCLE_T6 {NA} \ - CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ - CONFIG.PSU_VALUE_SILVERSION {3} \ - CONFIG.PSU__ACPU0__POWER__ON {1} \ - CONFIG.PSU__ACPU1__POWER__ON {1} \ - CONFIG.PSU__ACPU2__POWER__ON {1} \ - CONFIG.PSU__ACPU3__POWER__ON {1} \ - CONFIG.PSU__ACTUAL__IP {1} \ - CONFIG.PSU__ACT_DDR_FREQ_MHZ {1066.656006} \ - CONFIG.PSU__AFI0_COHERENCY {0} \ - CONFIG.PSU__AFI1_COHERENCY {0} \ - CONFIG.PSU__AUX_REF_CLK__FREQMHZ {33.333} \ - CONFIG.PSU__CAN0_LOOP_CAN1__ENABLE {0} \ - CONFIG.PSU__CAN0__GRP_CLK__ENABLE {0} \ - CONFIG.PSU__CAN0__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ - CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1199.988037} \ - CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ - CONFIG.PSU__CRF_APB__ACPU_CTRL__FREQMHZ {1200} \ - CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ - CONFIG.PSU__CRF_APB__ACPU__FRAC_ENABLED {0} \ - CONFIG.PSU__CRF_APB__AFI0_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI0_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI0_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI0_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI0_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI1_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI1_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI1_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI1_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI1_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI2_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI2_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI2_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI2_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI2_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI3_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI3_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI3_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI3_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI3_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI4_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI4_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI4_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI4_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI4_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI5_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI5_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI5_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI5_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI5_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRF_APB__APM_CTRL__ACT_FREQMHZ {1} \ - CONFIG.PSU__CRF_APB__APM_CTRL__DIVISOR0 {1} \ - CONFIG.PSU__CRF_APB__APM_CTRL__FREQMHZ {1} \ - CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {249.997498} \ - CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__ACT_FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {5} \ - CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {249.997498} \ - CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {533.328003} \ - CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {1067} \ - CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {599.994019} \ - CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__FREQMHZ {600} \ - CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.999750} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__FREQMHZ {25} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {0} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.785446} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {14} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__FREQMHZ {27} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {299.997009} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {5} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__FREQMHZ {300} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ - CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {0} \ - CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {599.994019} \ - CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__FREQMHZ {600} \ - CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ - CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {0} \ - CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRF_APB__GPU_REF_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__GTGREF0_REF_CTRL__ACT_FREQMHZ {-1} \ - CONFIG.PSU__CRF_APB__GTGREF0_REF_CTRL__DIVISOR0 {-1} \ - CONFIG.PSU__CRF_APB__GTGREF0_REF_CTRL__FREQMHZ {-1} \ - CONFIG.PSU__CRF_APB__GTGREF0_REF_CTRL__SRCSEL {NA} \ - CONFIG.PSU__CRF_APB__GTGREF0__ENABLE {NA} \ - CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__ACT_FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__SATA_REF_CTRL__ACT_FREQMHZ {249.997498} \ - CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ - CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.328003} \ - CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__FREQMHZ {533.33} \ - CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {90} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {499.994995} \ - CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__ACT_FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__AFI6__ENABLE {0} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {49.999500} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {30} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__FREQMHZ {50} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {499.994995} \ - CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__CPU_R5_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {180} \ - CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {180} \ - CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {SysOsc} \ - CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {249.997498} \ - CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__DEBUG_R5_ATCLK_CTRL__ACT_FREQMHZ {1000} \ - CONFIG.PSU__CRL_APB__DEBUG_R5_ATCLK_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__DEBUG_R5_ATCLK_CTRL__FREQMHZ {1000} \ - CONFIG.PSU__CRL_APB__DEBUG_R5_ATCLK_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1499.984985} \ - CONFIG.PSU__CRL_APB__DLL_REF_CTRL__FREQMHZ {1500} \ - CONFIG.PSU__CRL_APB__DLL_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__ACT_FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__ACT_FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__ACT_FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__ACT_FREQMHZ {124.998749} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__ACT_FREQMHZ {249.997498} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {90} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {249.997498} \ - CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {499.994995} \ - CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__OCM_MAIN_CTRL__ACT_FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__OCM_MAIN_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__OCM_MAIN_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__OCM_MAIN_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.498123} \ - CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ - CONFIG.PSU__CRL_APB__PCAP_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {1.999980} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {50} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {15} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {2} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {4} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__ACT_FREQMHZ {124.998749} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {45} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {7} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.498123} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {214} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {7} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {214} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {7} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {249.997498} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {19.999800} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {25} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {3} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ - CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ - CONFIG.PSU__CSU_COHERENCY {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_0__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_0__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_10__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_10__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_11__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_11__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_12__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_12__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_1__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_1__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_2__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_2__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_3__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_3__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_4__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_4__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_5__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_5__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_6__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_6__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_7__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_7__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_8__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_8__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_9__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_9__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__DDRC__ADDR_MIRROR {0} \ - CONFIG.PSU__DDRC__AL {0} \ - CONFIG.PSU__DDRC__BANK_ADDR_COUNT {2} \ - CONFIG.PSU__DDRC__BG_ADDR_COUNT {1} \ - CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ - CONFIG.PSU__DDRC__BUS_WIDTH {64 Bit} \ - CONFIG.PSU__DDRC__CL {15} \ - CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ - CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ - CONFIG.PSU__DDRC__COMPONENTS {UDIMM} \ - CONFIG.PSU__DDRC__CWL {14} \ - CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ - CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ - CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {0} \ - CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {0} \ - CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {0} \ - CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {0} \ - CONFIG.PSU__DDRC__DDR4_T_REF_MODE {0} \ - CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {Normal (0-85)} \ - CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ - CONFIG.PSU__DDRC__DEVICE_CAPACITY {8192 MBits} \ - CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ - CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ - CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ - CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ - CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ - CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ - CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ - CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ - CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ - CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ - CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ - CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ - CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ - CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ - CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ - CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ - CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ - CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ - CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ - CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ - CONFIG.PSU__DDRC__DRAM_WIDTH {16 Bits} \ - CONFIG.PSU__DDRC__ECC {Disabled} \ - CONFIG.PSU__DDRC__ECC_SCRUB {0} \ - CONFIG.PSU__DDRC__ENABLE {1} \ - CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ - CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {0} \ - CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ - CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ - CONFIG.PSU__DDRC__EN_2ND_CLK {0} \ - CONFIG.PSU__DDRC__FGRM {1X} \ - CONFIG.PSU__DDRC__FREQ_MHZ {1} \ - CONFIG.PSU__DDRC__LPDDR3_DUALRANK_SDP {0} \ - CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ - CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {NA} \ - CONFIG.PSU__DDRC__LP_ASR {manual normal} \ - CONFIG.PSU__DDRC__MEMORY_TYPE {DDR 4} \ - CONFIG.PSU__DDRC__PARITY_ENABLE {0} \ - CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ - CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ - CONFIG.PSU__DDRC__PLL_BYPASS {0} \ - CONFIG.PSU__DDRC__PWR_DOWN_EN {0} \ - CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ - CONFIG.PSU__DDRC__RD_DQS_CENTER {0} \ - CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ - CONFIG.PSU__DDRC__SB_TARGET {15-15-15} \ - CONFIG.PSU__DDRC__SELF_REF_ABORT {0} \ - CONFIG.PSU__DDRC__SPEED_BIN {DDR4_2133P} \ - CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ - CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ - CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ - CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ - CONFIG.PSU__DDRC__T_FAW {30.0} \ - CONFIG.PSU__DDRC__T_RAS_MIN {33} \ - CONFIG.PSU__DDRC__T_RC {47.06} \ - CONFIG.PSU__DDRC__T_RCD {15} \ - CONFIG.PSU__DDRC__T_RP {15} \ - CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ - CONFIG.PSU__DDRC__VIDEO_BUFFER_SIZE {0} \ - CONFIG.PSU__DDRC__VREF {1} \ - CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {1} \ - CONFIG.PSU__DDR_QOS_ENABLE {0} \ - CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {} \ - CONFIG.PSU__DDR_QOS_HP0_RDQOS {} \ - CONFIG.PSU__DDR_QOS_HP0_WRQOS {} \ - CONFIG.PSU__DDR_QOS_HP1_RDQOS {} \ - CONFIG.PSU__DDR_QOS_HP1_WRQOS {} \ - CONFIG.PSU__DDR_QOS_HP2_RDQOS {} \ - CONFIG.PSU__DDR_QOS_HP2_WRQOS {} \ - CONFIG.PSU__DDR_QOS_HP3_RDQOS {} \ - CONFIG.PSU__DDR_QOS_HP3_WRQOS {} \ - CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {} \ - CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {} \ - CONFIG.PSU__DDR_QOS_WR_THRSHLD {} \ - CONFIG.PSU__DDR_SW_REFRESH_ENABLED {1} \ - CONFIG.PSU__DDR__INTERFACE__FREQMHZ {533.500} \ - CONFIG.PSU__DEVICE_TYPE {RFSOC} \ - CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ - CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ - CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ - CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ - CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__DLL__ISUSED {1} \ - CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ - CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ - CONFIG.PSU__DP__REF_CLK_FREQ {27} \ - CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ - CONFIG.PSU__ENABLE__DDR__REFRESH__SIGNALS {0} \ - CONFIG.PSU__ENET0__FIFO__ENABLE {0} \ - CONFIG.PSU__ENET0__GRP_MDIO__ENABLE {0} \ - CONFIG.PSU__ENET0__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__ENET0__PTP__ENABLE {0} \ - CONFIG.PSU__ENET0__TSU__ENABLE {0} \ - CONFIG.PSU__ENET1__FIFO__ENABLE {0} \ - CONFIG.PSU__ENET1__GRP_MDIO__ENABLE {0} \ - CONFIG.PSU__ENET1__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__ENET1__PTP__ENABLE {0} \ - CONFIG.PSU__ENET1__TSU__ENABLE {0} \ - CONFIG.PSU__ENET2__FIFO__ENABLE {0} \ - CONFIG.PSU__ENET2__GRP_MDIO__ENABLE {0} \ - CONFIG.PSU__ENET2__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__ENET2__PTP__ENABLE {0} \ - CONFIG.PSU__ENET2__TSU__ENABLE {0} \ - CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ - CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {1} \ - CONFIG.PSU__ENET3__GRP_MDIO__IO {MIO 76 .. 77} \ - CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__ENET3__PERIPHERAL__IO {MIO 64 .. 75} \ - CONFIG.PSU__ENET3__PTP__ENABLE {0} \ - CONFIG.PSU__ENET3__TSU__ENABLE {0} \ - CONFIG.PSU__EN_AXI_STATUS_PORTS {0} \ - CONFIG.PSU__EN_EMIO_TRACE {0} \ - CONFIG.PSU__EP__IP {0} \ - CONFIG.PSU__EXPAND__CORESIGHT {0} \ - CONFIG.PSU__EXPAND__FPD_SLAVES {0} \ - CONFIG.PSU__EXPAND__GIC {0} \ - CONFIG.PSU__EXPAND__LOWER_LPS_SLAVES {0} \ - CONFIG.PSU__EXPAND__UPPER_LPS_SLAVES {0} \ - CONFIG.PSU__FPDMASTERS_COHERENCY {0} \ - CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {99.999001} \ - CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ - CONFIG.PSU__FPGA_PL0_ENABLE {1} \ - CONFIG.PSU__FPGA_PL1_ENABLE {1} \ - CONFIG.PSU__FPGA_PL2_ENABLE {0} \ - CONFIG.PSU__FPGA_PL3_ENABLE {0} \ - CONFIG.PSU__FP__POWER__ON {1} \ - CONFIG.PSU__FTM__CTI_IN_0 {0} \ - CONFIG.PSU__FTM__CTI_IN_1 {0} \ - CONFIG.PSU__FTM__CTI_IN_2 {0} \ - CONFIG.PSU__FTM__CTI_IN_3 {0} \ - CONFIG.PSU__FTM__CTI_OUT_0 {0} \ - CONFIG.PSU__FTM__CTI_OUT_1 {0} \ - CONFIG.PSU__FTM__CTI_OUT_2 {0} \ - CONFIG.PSU__FTM__CTI_OUT_3 {0} \ - CONFIG.PSU__FTM__GPI {0} \ - CONFIG.PSU__FTM__GPO {0} \ - CONFIG.PSU__GEM0_COHERENCY {0} \ - CONFIG.PSU__GEM0_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__GEM1_COHERENCY {0} \ - CONFIG.PSU__GEM1_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__GEM2_COHERENCY {0} \ - CONFIG.PSU__GEM2_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__GEM3_COHERENCY {0} \ - CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__GEM__TSU__ENABLE {0} \ - CONFIG.PSU__GEN_IPI_0__MASTER {APU} \ - CONFIG.PSU__GEN_IPI_10__MASTER {NONE} \ - CONFIG.PSU__GEN_IPI_1__MASTER {RPU0} \ - CONFIG.PSU__GEN_IPI_2__MASTER {RPU1} \ - CONFIG.PSU__GEN_IPI_3__MASTER {PMU} \ - CONFIG.PSU__GEN_IPI_4__MASTER {PMU} \ - CONFIG.PSU__GEN_IPI_5__MASTER {PMU} \ - CONFIG.PSU__GEN_IPI_6__MASTER {PMU} \ - CONFIG.PSU__GEN_IPI_7__MASTER {NONE} \ - CONFIG.PSU__GEN_IPI_8__MASTER {NONE} \ - CONFIG.PSU__GEN_IPI_9__MASTER {NONE} \ - CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ - CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ - CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__GPIO_EMIO_WIDTH {1} \ - CONFIG.PSU__GPIO_EMIO__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__GPIO_EMIO__PERIPHERAL__IO {} \ - CONFIG.PSU__GPIO_EMIO__WIDTH {[94:0]} \ - CONFIG.PSU__GPU_PP0__POWER__ON {0} \ - CONFIG.PSU__GPU_PP1__POWER__ON {0} \ - CONFIG.PSU__GT_REF_CLK__FREQMHZ {33.333} \ - CONFIG.PSU__GT__LINK_SPEED {HBR} \ - CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ - CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ - CONFIG.PSU__HIGH_ADDRESS__ENABLE {1} \ - CONFIG.PSU__HPM0_FPD__NUM_READ_THREADS {4} \ - CONFIG.PSU__HPM0_FPD__NUM_WRITE_THREADS {4} \ - CONFIG.PSU__HPM0_LPD__NUM_READ_THREADS {4} \ - CONFIG.PSU__HPM0_LPD__NUM_WRITE_THREADS {4} \ - CONFIG.PSU__HPM1_FPD__NUM_READ_THREADS {4} \ - CONFIG.PSU__HPM1_FPD__NUM_WRITE_THREADS {4} \ - CONFIG.PSU__I2C0_LOOP_I2C1__ENABLE {0} \ - CONFIG.PSU__I2C0__GRP_INT__ENABLE {0} \ - CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__I2C0__PERIPHERAL__IO {MIO 14 .. 15} \ - CONFIG.PSU__I2C1__GRP_INT__ENABLE {0} \ - CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 16 .. 17} \ - CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ - CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ - CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ - CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ - CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ - CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ - CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ - CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ - CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ - CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ - CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ - CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ - CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {99.999001} \ - CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ - CONFIG.PSU__IRQ_P2F_ADMA_CHAN__INT {0} \ - CONFIG.PSU__IRQ_P2F_AIB_AXI__INT {0} \ - CONFIG.PSU__IRQ_P2F_AMS__INT {0} \ - CONFIG.PSU__IRQ_P2F_APM_FPD__INT {0} \ - CONFIG.PSU__IRQ_P2F_APU_COMM__INT {0} \ - CONFIG.PSU__IRQ_P2F_APU_CPUMNT__INT {0} \ - CONFIG.PSU__IRQ_P2F_APU_CTI__INT {0} \ - CONFIG.PSU__IRQ_P2F_APU_EXTERR__INT {0} \ - CONFIG.PSU__IRQ_P2F_APU_IPI__INT {0} \ - CONFIG.PSU__IRQ_P2F_APU_L2ERR__INT {0} \ - CONFIG.PSU__IRQ_P2F_APU_PMU__INT {0} \ - CONFIG.PSU__IRQ_P2F_APU_REGS__INT {0} \ - CONFIG.PSU__IRQ_P2F_ATB_LPD__INT {0} \ - CONFIG.PSU__IRQ_P2F_CAN0__INT {0} \ - CONFIG.PSU__IRQ_P2F_CAN1__INT {0} \ - CONFIG.PSU__IRQ_P2F_CLKMON__INT {0} \ - CONFIG.PSU__IRQ_P2F_CSUPMU_WDT__INT {0} \ - CONFIG.PSU__IRQ_P2F_CSU_DMA__INT {0} \ - CONFIG.PSU__IRQ_P2F_CSU__INT {0} \ - CONFIG.PSU__IRQ_P2F_DDR_SS__INT {0} \ - CONFIG.PSU__IRQ_P2F_DPDMA__INT {0} \ - CONFIG.PSU__IRQ_P2F_DPORT__INT {0} \ - CONFIG.PSU__IRQ_P2F_EFUSE__INT {0} \ - CONFIG.PSU__IRQ_P2F_ENT0_WAKEUP__INT {0} \ - CONFIG.PSU__IRQ_P2F_ENT0__INT {0} \ - CONFIG.PSU__IRQ_P2F_ENT1_WAKEUP__INT {0} \ - CONFIG.PSU__IRQ_P2F_ENT1__INT {0} \ - CONFIG.PSU__IRQ_P2F_ENT2_WAKEUP__INT {0} \ - CONFIG.PSU__IRQ_P2F_ENT2__INT {0} \ - CONFIG.PSU__IRQ_P2F_ENT3_WAKEUP__INT {0} \ - CONFIG.PSU__IRQ_P2F_ENT3__INT {0} \ - CONFIG.PSU__IRQ_P2F_FPD_APB__INT {0} \ - CONFIG.PSU__IRQ_P2F_FPD_ATB_ERR__INT {0} \ - CONFIG.PSU__IRQ_P2F_FP_WDT__INT {0} \ - CONFIG.PSU__IRQ_P2F_GDMA_CHAN__INT {0} \ - CONFIG.PSU__IRQ_P2F_GPIO__INT {0} \ - CONFIG.PSU__IRQ_P2F_GPU__INT {0} \ - CONFIG.PSU__IRQ_P2F_I2C0__INT {0} \ - CONFIG.PSU__IRQ_P2F_I2C1__INT {0} \ - CONFIG.PSU__IRQ_P2F_LPD_APB__INT {0} \ - CONFIG.PSU__IRQ_P2F_LPD_APM__INT {0} \ - CONFIG.PSU__IRQ_P2F_LP_WDT__INT {0} \ - CONFIG.PSU__IRQ_P2F_NAND__INT {0} \ - CONFIG.PSU__IRQ_P2F_OCM_ERR__INT {0} \ - CONFIG.PSU__IRQ_P2F_PCIE_DMA__INT {0} \ - CONFIG.PSU__IRQ_P2F_PCIE_LEGACY__INT {0} \ - CONFIG.PSU__IRQ_P2F_PCIE_MSC__INT {0} \ - CONFIG.PSU__IRQ_P2F_PCIE_MSI__INT {0} \ - CONFIG.PSU__IRQ_P2F_PL_IPI__INT {0} \ - CONFIG.PSU__IRQ_P2F_QSPI__INT {0} \ - CONFIG.PSU__IRQ_P2F_R5_CORE0_ECC_ERR__INT {0} \ - CONFIG.PSU__IRQ_P2F_R5_CORE1_ECC_ERR__INT {0} \ - CONFIG.PSU__IRQ_P2F_RPU_IPI__INT {0} \ - CONFIG.PSU__IRQ_P2F_RPU_PERMON__INT {0} \ - CONFIG.PSU__IRQ_P2F_RTC_ALARM__INT {0} \ - CONFIG.PSU__IRQ_P2F_RTC_SECONDS__INT {0} \ - CONFIG.PSU__IRQ_P2F_SATA__INT {0} \ - CONFIG.PSU__IRQ_P2F_SDIO0_WAKE__INT {0} \ - CONFIG.PSU__IRQ_P2F_SDIO0__INT {0} \ - CONFIG.PSU__IRQ_P2F_SDIO1_WAKE__INT {0} \ - CONFIG.PSU__IRQ_P2F_SDIO1__INT {0} \ - CONFIG.PSU__IRQ_P2F_SPI0__INT {0} \ - CONFIG.PSU__IRQ_P2F_SPI1__INT {0} \ - CONFIG.PSU__IRQ_P2F_TTC0__INT0 {0} \ - CONFIG.PSU__IRQ_P2F_TTC0__INT1 {0} \ - CONFIG.PSU__IRQ_P2F_TTC0__INT2 {0} \ - CONFIG.PSU__IRQ_P2F_TTC1__INT0 {0} \ - CONFIG.PSU__IRQ_P2F_TTC1__INT1 {0} \ - CONFIG.PSU__IRQ_P2F_TTC1__INT2 {0} \ - CONFIG.PSU__IRQ_P2F_TTC2__INT0 {0} \ - CONFIG.PSU__IRQ_P2F_TTC2__INT1 {0} \ - CONFIG.PSU__IRQ_P2F_TTC2__INT2 {0} \ - CONFIG.PSU__IRQ_P2F_TTC3__INT0 {0} \ - CONFIG.PSU__IRQ_P2F_TTC3__INT1 {0} \ - CONFIG.PSU__IRQ_P2F_TTC3__INT2 {0} \ - CONFIG.PSU__IRQ_P2F_UART0__INT {0} \ - CONFIG.PSU__IRQ_P2F_UART1__INT {0} \ - CONFIG.PSU__IRQ_P2F_USB3_ENDPOINT__INT0 {0} \ - CONFIG.PSU__IRQ_P2F_USB3_ENDPOINT__INT1 {0} \ - CONFIG.PSU__IRQ_P2F_USB3_OTG__INT0 {0} \ - CONFIG.PSU__IRQ_P2F_USB3_OTG__INT1 {0} \ - CONFIG.PSU__IRQ_P2F_USB3_PMU_WAKEUP__INT {0} \ - CONFIG.PSU__IRQ_P2F_XMPU_FPD__INT {0} \ - CONFIG.PSU__IRQ_P2F_XMPU_LPD__INT {0} \ - CONFIG.PSU__IRQ_P2F__INTF_FPD_SMMU__INT {0} \ - CONFIG.PSU__IRQ_P2F__INTF_PPD_CCI__INT {0} \ - CONFIG.PSU__L2_BANK0__POWER__ON {1} \ - CONFIG.PSU__LPDMA0_COHERENCY {0} \ - CONFIG.PSU__LPDMA1_COHERENCY {0} \ - CONFIG.PSU__LPDMA2_COHERENCY {0} \ - CONFIG.PSU__LPDMA3_COHERENCY {0} \ - CONFIG.PSU__LPDMA4_COHERENCY {0} \ - CONFIG.PSU__LPDMA5_COHERENCY {0} \ - CONFIG.PSU__LPDMA6_COHERENCY {0} \ - CONFIG.PSU__LPDMA7_COHERENCY {0} \ - CONFIG.PSU__LPD_SLCR__CSUPMU_WDT_CLK_SEL__SELECT {APB} \ - CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ - CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ - CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ - CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ - CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ - CONFIG.PSU__M_AXI_GP0_SUPPORTS_NARROW_BURST {1} \ - CONFIG.PSU__M_AXI_GP1_SUPPORTS_NARROW_BURST {1} \ - CONFIG.PSU__M_AXI_GP2_SUPPORTS_NARROW_BURST {1} \ - CONFIG.PSU__NAND_COHERENCY {0} \ - CONFIG.PSU__NAND_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__NAND__CHIP_ENABLE__ENABLE {0} \ - CONFIG.PSU__NAND__DATA_STROBE__ENABLE {0} \ - CONFIG.PSU__NAND__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__NAND__READY0_BUSY__ENABLE {0} \ - CONFIG.PSU__NAND__READY1_BUSY__ENABLE {0} \ - CONFIG.PSU__NAND__READY_BUSY__ENABLE {0} \ - CONFIG.PSU__NUM_FABRIC_RESETS {1} \ - CONFIG.PSU__OCM_BANK0__POWER__ON {1} \ - CONFIG.PSU__OCM_BANK1__POWER__ON {1} \ - CONFIG.PSU__OCM_BANK2__POWER__ON {1} \ - CONFIG.PSU__OCM_BANK3__POWER__ON {1} \ - CONFIG.PSU__OVERRIDE_HPX_QOS {0} \ - CONFIG.PSU__OVERRIDE__BASIC_CLOCK {0} \ - CONFIG.PSU__PCIE__ACS_VIOLAION {0} \ - CONFIG.PSU__PCIE__ACS_VIOLATION {0} \ - CONFIG.PSU__PCIE__AER_CAPABILITY {0} \ - CONFIG.PSU__PCIE__ATOMICOP_EGRESS_BLOCKED {0} \ - CONFIG.PSU__PCIE__BAR0_64BIT {0} \ - CONFIG.PSU__PCIE__BAR0_ENABLE {0} \ - CONFIG.PSU__PCIE__BAR0_PREFETCHABLE {0} \ - CONFIG.PSU__PCIE__BAR0_VAL {} \ - CONFIG.PSU__PCIE__BAR1_64BIT {0} \ - CONFIG.PSU__PCIE__BAR1_ENABLE {0} \ - CONFIG.PSU__PCIE__BAR1_PREFETCHABLE {0} \ - CONFIG.PSU__PCIE__BAR1_VAL {} \ - CONFIG.PSU__PCIE__BAR2_64BIT {0} \ - CONFIG.PSU__PCIE__BAR2_ENABLE {0} \ - CONFIG.PSU__PCIE__BAR2_PREFETCHABLE {0} \ - CONFIG.PSU__PCIE__BAR2_VAL {} \ - CONFIG.PSU__PCIE__BAR3_64BIT {0} \ - CONFIG.PSU__PCIE__BAR3_ENABLE {0} \ - CONFIG.PSU__PCIE__BAR3_PREFETCHABLE {0} \ - CONFIG.PSU__PCIE__BAR3_VAL {} \ - CONFIG.PSU__PCIE__BAR4_64BIT {0} \ - CONFIG.PSU__PCIE__BAR4_ENABLE {0} \ - CONFIG.PSU__PCIE__BAR4_PREFETCHABLE {0} \ - CONFIG.PSU__PCIE__BAR4_VAL {} \ - CONFIG.PSU__PCIE__BAR5_64BIT {0} \ - CONFIG.PSU__PCIE__BAR5_ENABLE {0} \ - CONFIG.PSU__PCIE__BAR5_PREFETCHABLE {0} \ - CONFIG.PSU__PCIE__BAR5_VAL {} \ - CONFIG.PSU__PCIE__CLASS_CODE_BASE {} \ - CONFIG.PSU__PCIE__CLASS_CODE_INTERFACE {} \ - CONFIG.PSU__PCIE__CLASS_CODE_SUB {} \ - CONFIG.PSU__PCIE__CLASS_CODE_VALUE {} \ - CONFIG.PSU__PCIE__COMPLETER_ABORT {0} \ - CONFIG.PSU__PCIE__COMPLTION_TIMEOUT {0} \ - CONFIG.PSU__PCIE__CORRECTABLE_INT_ERR {0} \ - CONFIG.PSU__PCIE__CRS_SW_VISIBILITY {0} \ - CONFIG.PSU__PCIE__DEVICE_ID {} \ - CONFIG.PSU__PCIE__ECRC_CHECK {0} \ - CONFIG.PSU__PCIE__ECRC_ERR {0} \ - CONFIG.PSU__PCIE__ECRC_GEN {0} \ - CONFIG.PSU__PCIE__EROM_ENABLE {0} \ - CONFIG.PSU__PCIE__EROM_VAL {} \ - CONFIG.PSU__PCIE__FLOW_CONTROL_ERR {0} \ - CONFIG.PSU__PCIE__FLOW_CONTROL_PROTOCOL_ERR {0} \ - CONFIG.PSU__PCIE__HEADER_LOG_OVERFLOW {0} \ - CONFIG.PSU__PCIE__INTX_GENERATION {0} \ - CONFIG.PSU__PCIE__LANE0__ENABLE {0} \ - CONFIG.PSU__PCIE__LANE1__ENABLE {0} \ - CONFIG.PSU__PCIE__LANE2__ENABLE {0} \ - CONFIG.PSU__PCIE__LANE3__ENABLE {0} \ - CONFIG.PSU__PCIE__MC_BLOCKED_TLP {0} \ - CONFIG.PSU__PCIE__MSIX_BAR_INDICATOR {} \ - CONFIG.PSU__PCIE__MSIX_CAPABILITY {0} \ - CONFIG.PSU__PCIE__MSIX_PBA_BAR_INDICATOR {} \ - CONFIG.PSU__PCIE__MSIX_PBA_OFFSET {0} \ - CONFIG.PSU__PCIE__MSIX_TABLE_OFFSET {0} \ - CONFIG.PSU__PCIE__MSIX_TABLE_SIZE {0} \ - CONFIG.PSU__PCIE__MSI_64BIT_ADDR_CAPABLE {0} \ - CONFIG.PSU__PCIE__MSI_CAPABILITY {0} \ - CONFIG.PSU__PCIE__MULTIHEADER {0} \ - CONFIG.PSU__PCIE__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__PCIE__PERIPHERAL__ENDPOINT_ENABLE {1} \ - CONFIG.PSU__PCIE__PERIPHERAL__ROOTPORT_ENABLE {0} \ - CONFIG.PSU__PCIE__PERM_ROOT_ERR_UPDATE {0} \ - CONFIG.PSU__PCIE__RECEIVER_ERR {0} \ - CONFIG.PSU__PCIE__RECEIVER_OVERFLOW {0} \ - CONFIG.PSU__PCIE__RESET__POLARITY {Active Low} \ - CONFIG.PSU__PCIE__REVISION_ID {} \ - CONFIG.PSU__PCIE__SUBSYSTEM_ID {} \ - CONFIG.PSU__PCIE__SUBSYSTEM_VENDOR_ID {} \ - CONFIG.PSU__PCIE__SURPRISE_DOWN {0} \ - CONFIG.PSU__PCIE__TLP_PREFIX_BLOCKED {0} \ - CONFIG.PSU__PCIE__UNCORRECTABL_INT_ERR {0} \ - CONFIG.PSU__PCIE__VENDOR_ID {} \ - CONFIG.PSU__PJTAG__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__PL_CLK0_BUF {TRUE} \ - CONFIG.PSU__PL_CLK1_BUF {FALSE} \ - CONFIG.PSU__PL_CLK2_BUF {FALSE} \ - CONFIG.PSU__PL_CLK3_BUF {FALSE} \ - CONFIG.PSU__PL__POWER__ON {1} \ - CONFIG.PSU__PMU_COHERENCY {0} \ - CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ - CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ - CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ - CONFIG.PSU__PMU__GPI0__ENABLE {0} \ - CONFIG.PSU__PMU__GPI1__ENABLE {0} \ - CONFIG.PSU__PMU__GPI2__ENABLE {0} \ - CONFIG.PSU__PMU__GPI3__ENABLE {0} \ - CONFIG.PSU__PMU__GPI4__ENABLE {0} \ - CONFIG.PSU__PMU__GPI5__ENABLE {0} \ - CONFIG.PSU__PMU__GPO0__ENABLE {1} \ - CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ - CONFIG.PSU__PMU__GPO1__ENABLE {1} \ - CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ - CONFIG.PSU__PMU__GPO2__ENABLE {1} \ - CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ - CONFIG.PSU__PMU__GPO2__POLARITY {low} \ - CONFIG.PSU__PMU__GPO3__ENABLE {1} \ - CONFIG.PSU__PMU__GPO3__IO {MIO 35} \ - CONFIG.PSU__PMU__GPO3__POLARITY {low} \ - CONFIG.PSU__PMU__GPO4__ENABLE {1} \ - CONFIG.PSU__PMU__GPO4__IO {MIO 36} \ - CONFIG.PSU__PMU__GPO4__POLARITY {low} \ - CONFIG.PSU__PMU__GPO5__ENABLE {1} \ - CONFIG.PSU__PMU__GPO5__IO {MIO 37} \ - CONFIG.PSU__PMU__GPO5__POLARITY {low} \ - CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ - CONFIG.PSU__PRESET_APPLIED {1} \ - CONFIG.PSU__PROTECTION__DDR_SEGMENTS {NONE} \ - CONFIG.PSU__PROTECTION__DEBUG {0} \ - CONFIG.PSU__PROTECTION__ENABLE {0} \ - CONFIG.PSU__PROTECTION__FPD_SEGMENTS {\ -SA:0xFD1A0000; SIZE:1280; UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write;\ -subsystemId:PMU Firmware | SA:0xFD000000; SIZE:64; UNIT:KB; RegionTZ:Secure;\ -WrAllowed:Read/Write; subsystemId:PMU Firmware | SA:0xFD010000; SIZE:64;\ -UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write; subsystemId:PMU Firmware | \ -SA:0xFD020000; SIZE:64; UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write;\ -subsystemId:PMU Firmware | SA:0xFD030000; SIZE:64; UNIT:KB; RegionTZ:Secure;\ -WrAllowed:Read/Write; subsystemId:PMU Firmware | SA:0xFD040000; SIZE:64;\ -UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write; subsystemId:PMU Firmware | \ -SA:0xFD050000; SIZE:64; UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write;\ -subsystemId:PMU Firmware | SA:0xFD610000; SIZE:512; UNIT:KB;\ -RegionTZ:Secure; WrAllowed:Read/Write; subsystemId:PMU Firmware | \ -SA:0xFD5D0000; SIZE:64; UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write;\ -subsystemId:PMU Firmware | SA:0xFD1A0000 ; SIZE:1280; UNIT:KB;\ -RegionTZ:Secure ; WrAllowed:Read/Write; subsystemId:Secure Subsystem} \ - CONFIG.PSU__PROTECTION__LOCK_UNUSED_SEGMENTS {0} \ - CONFIG.PSU__PROTECTION__LPD_SEGMENTS {\ -SA:0xFF980000; SIZE:64; UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write;\ -subsystemId:PMU Firmware| SA:0xFF5E0000; SIZE:2560; UNIT:KB; RegionTZ:Secure;\ -WrAllowed:Read/Write; subsystemId:PMU Firmware| SA:0xFFCC0000; SIZE:64;\ -UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write; subsystemId:PMU Firmware|\ -SA:0xFF180000; SIZE:768; UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write;\ -subsystemId:PMU Firmware| SA:0xFF410000; SIZE:640; UNIT:KB; RegionTZ:Secure;\ -WrAllowed:Read/Write; subsystemId:PMU Firmware| SA:0xFFA70000; SIZE:64;\ -UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write; subsystemId:PMU Firmware|\ -SA:0xFF9A0000; SIZE:64; UNIT:KB; RegionTZ:Secure; WrAllowed:Read/Write;\ -subsystemId:PMU Firmware|SA:0xFF5E0000 ; SIZE:2560; UNIT:KB; RegionTZ:Secure ;\ -WrAllowed:Read/Write; subsystemId:Secure Subsystem|SA:0xFFCC0000 ; SIZE:64;\ -UNIT:KB; RegionTZ:Secure ; WrAllowed:Read/Write; subsystemId:Secure\ -Subsystem|SA:0xFF180000 ; SIZE:768; UNIT:KB; RegionTZ:Secure ;\ -WrAllowed:Read/Write; subsystemId:Secure Subsystem|SA:0xFF9A0000 ; SIZE:64;\ -UNIT:KB; RegionTZ:Secure ; WrAllowed:Read/Write; subsystemId:Secure Subsystem} \ - CONFIG.PSU__PROTECTION__MASTERS {\ -USB1:NonSecure;0|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;1|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;0|S_AXI_HP1_FPD:NA;0|S_AXI_HP0_FPD:NA;0|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;0|SATA1:NonSecure;1|SATA0:NonSecure;1|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;1|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;1|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ - CONFIG.PSU__PROTECTION__MASTERS_TZ {\ -GEM0:NonSecure|SD1:NonSecure|GEM2:NonSecure|GEM1:NonSecure|GEM3:NonSecure|PCIe:NonSecure|DP:NonSecure|NAND:NonSecure|GPU:NonSecure|USB1:NonSecure|USB0:NonSecure|LDMA:NonSecure|FDMA:NonSecure|QSPI:NonSecure|SD0:NonSecure} \ - CONFIG.PSU__PROTECTION__OCM_SEGMENTS {NONE} \ - CONFIG.PSU__PROTECTION__PRESUBSYSTEMS {NONE} \ - CONFIG.PSU__PROTECTION__SLAVES {\ -LPD;USB3_1_XHCI;FE300000;FE3FFFFF;0|LPD;USB3_1;FF9E0000;FF9EFFFF;0|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;0|LPD;SPI0;FF040000;FF04FFFF;0|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;0|FPD;SATA;FD0C0000;FD0CFFFF;1|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;1|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;1|FPD;GPU;FD4B0000;FD4BFFFF;0|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;1|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display\ -Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;87FFFFFFF;1|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ - CONFIG.PSU__PROTECTION__SUBSYSTEMS {PMU Firmware:PMU|Secure Subsystem:} \ - CONFIG.PSU__PSS_ALT_REF_CLK__ENABLE {0} \ - CONFIG.PSU__PSS_ALT_REF_CLK__FREQMHZ {33.333} \ - CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333} \ - CONFIG.PSU__QSPI_COHERENCY {0} \ - CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {1} \ - CONFIG.PSU__QSPI__GRP_FBCLK__IO {MIO 6} \ - CONFIG.PSU__QSPI__PERIPHERAL__DATA_MODE {x4} \ - CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__QSPI__PERIPHERAL__IO {MIO 0 .. 12} \ - CONFIG.PSU__QSPI__PERIPHERAL__MODE {Dual Parallel} \ - CONFIG.PSU__REPORT__DBGLOG {0} \ - CONFIG.PSU__RPU_COHERENCY {0} \ - CONFIG.PSU__RPU__POWER__ON {1} \ - CONFIG.PSU__SATA__LANE0__ENABLE {0} \ - CONFIG.PSU__SATA__LANE1__ENABLE {1} \ - CONFIG.PSU__SATA__LANE1__IO {GT Lane3} \ - CONFIG.PSU__SATA__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__SATA__REF_CLK_FREQ {125} \ - CONFIG.PSU__SATA__REF_CLK_SEL {Ref Clk3} \ - CONFIG.PSU__SAXIGP0__DATA_WIDTH {128} \ - CONFIG.PSU__SAXIGP1__DATA_WIDTH {128} \ - CONFIG.PSU__SAXIGP2__DATA_WIDTH {128} \ - CONFIG.PSU__SAXIGP3__DATA_WIDTH {128} \ - CONFIG.PSU__SAXIGP4__DATA_WIDTH {128} \ - CONFIG.PSU__SAXIGP5__DATA_WIDTH {128} \ - CONFIG.PSU__SAXIGP6__DATA_WIDTH {128} \ - CONFIG.PSU__SD0_COHERENCY {0} \ - CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__SD0__CLK_100_SDR_OTAP_DLY {0x3} \ - CONFIG.PSU__SD0__CLK_200_SDR_OTAP_DLY {0x3} \ - CONFIG.PSU__SD0__CLK_50_DDR_ITAP_DLY {0x3D} \ - CONFIG.PSU__SD0__CLK_50_DDR_OTAP_DLY {0x4} \ - CONFIG.PSU__SD0__CLK_50_SDR_ITAP_DLY {0x15} \ - CONFIG.PSU__SD0__CLK_50_SDR_OTAP_DLY {0x5} \ - CONFIG.PSU__SD0__GRP_CD__ENABLE {0} \ - CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ - CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ - CONFIG.PSU__SD0__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__SD0__RESET__ENABLE {0} \ - CONFIG.PSU__SD1_COHERENCY {0} \ - CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__SD1__CLK_100_SDR_OTAP_DLY {0x3} \ - CONFIG.PSU__SD1__CLK_200_SDR_OTAP_DLY {0x3} \ - CONFIG.PSU__SD1__CLK_50_DDR_ITAP_DLY {0x3D} \ - CONFIG.PSU__SD1__CLK_50_DDR_OTAP_DLY {0x4} \ - CONFIG.PSU__SD1__CLK_50_SDR_ITAP_DLY {0x15} \ - CONFIG.PSU__SD1__CLK_50_SDR_OTAP_DLY {0x5} \ - CONFIG.PSU__SD1__DATA_TRANSFER_MODE {8Bit} \ - CONFIG.PSU__SD1__GRP_CD__ENABLE {1} \ - CONFIG.PSU__SD1__GRP_CD__IO {MIO 45} \ - CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ - CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ - CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 39 .. 51} \ - CONFIG.PSU__SD1__RESET__ENABLE {0} \ - CONFIG.PSU__SD1__SLOT_TYPE {SD 3.0} \ - CONFIG.PSU__SPI0_LOOP_SPI1__ENABLE {0} \ - CONFIG.PSU__SPI0__GRP_SS0__ENABLE {0} \ - CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ - CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ - CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__SPI1__GRP_SS0__ENABLE {0} \ - CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ - CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ - CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ - CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__SWDT0__PERIPHERAL__IO {NA} \ - CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ - CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ - CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__SWDT1__PERIPHERAL__IO {NA} \ - CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ - CONFIG.PSU__TCM0A__POWER__ON {1} \ - CONFIG.PSU__TCM0B__POWER__ON {1} \ - CONFIG.PSU__TCM1A__POWER__ON {1} \ - CONFIG.PSU__TCM1B__POWER__ON {1} \ - CONFIG.PSU__TESTSCAN__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__TRACE_PIPELINE_WIDTH {8} \ - CONFIG.PSU__TRACE__INTERNAL_WIDTH {32} \ - CONFIG.PSU__TRACE__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__TRISTATE__INVERTED {1} \ - CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ - CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ - CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__TTC0__PERIPHERAL__IO {NA} \ - CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ - CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ - CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__TTC1__PERIPHERAL__IO {NA} \ - CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ - CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ - CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__TTC2__PERIPHERAL__IO {NA} \ - CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ - CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ - CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__TTC3__PERIPHERAL__IO {NA} \ - CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ - CONFIG.PSU__UART0_LOOP_UART1__ENABLE {0} \ - CONFIG.PSU__UART0__BAUD_RATE {115200} \ - CONFIG.PSU__UART0__MODEM__ENABLE {0} \ - CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 18 .. 19} \ - CONFIG.PSU__UART1__BAUD_RATE {115200} \ - CONFIG.PSU__UART1__MODEM__ENABLE {0} \ - CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__UART1__PERIPHERAL__IO {EMIO} \ - CONFIG.PSU__USB0_COHERENCY {0} \ - CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ - CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ - CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk2} \ - CONFIG.PSU__USB0__RESET__ENABLE {0} \ - CONFIG.PSU__USB1_COHERENCY {0} \ - CONFIG.PSU__USB1__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__USB1__RESET__ENABLE {0} \ - CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ - CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ - CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ - CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ - CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ - CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ - CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ - CONFIG.PSU__USE_DIFF_RW_CLK_GP0 {0} \ - CONFIG.PSU__USE_DIFF_RW_CLK_GP1 {0} \ - CONFIG.PSU__USE_DIFF_RW_CLK_GP2 {0} \ - CONFIG.PSU__USE_DIFF_RW_CLK_GP3 {0} \ - CONFIG.PSU__USE_DIFF_RW_CLK_GP4 {0} \ - CONFIG.PSU__USE_DIFF_RW_CLK_GP5 {0} \ - CONFIG.PSU__USE_DIFF_RW_CLK_GP6 {0} \ - CONFIG.PSU__USE__ADMA {0} \ - CONFIG.PSU__USE__APU_LEGACY_INTERRUPT {0} \ - CONFIG.PSU__USE__AUDIO {0} \ - CONFIG.PSU__USE__CLK {0} \ - CONFIG.PSU__USE__CLK0 {0} \ - CONFIG.PSU__USE__CLK1 {0} \ - CONFIG.PSU__USE__CLK2 {0} \ - CONFIG.PSU__USE__CLK3 {0} \ - CONFIG.PSU__USE__CROSS_TRIGGER {0} \ - CONFIG.PSU__USE__DDR_INTF_REQUESTED {0} \ - CONFIG.PSU__USE__DEBUG__TEST {0} \ - CONFIG.PSU__USE__EVENT_RPU {0} \ - CONFIG.PSU__USE__FABRIC__RST {1} \ - CONFIG.PSU__USE__FTM {0} \ - CONFIG.PSU__USE__GDMA {0} \ - CONFIG.PSU__USE__IRQ {0} \ - CONFIG.PSU__USE__IRQ0 {1} \ - CONFIG.PSU__USE__IRQ1 {0} \ - CONFIG.PSU__USE__M_AXI_GP0 {1} \ - CONFIG.PSU__USE__M_AXI_GP1 {1} \ - CONFIG.PSU__USE__M_AXI_GP2 {0} \ - CONFIG.PSU__USE__PROC_EVENT_BUS {0} \ - CONFIG.PSU__USE__RPU_LEGACY_INTERRUPT {0} \ - CONFIG.PSU__USE__RST0 {0} \ - CONFIG.PSU__USE__RST1 {0} \ - CONFIG.PSU__USE__RST2 {0} \ - CONFIG.PSU__USE__RST3 {0} \ - CONFIG.PSU__USE__RTC {0} \ - CONFIG.PSU__USE__STM {0} \ - CONFIG.PSU__USE__S_AXI_ACE {0} \ - CONFIG.PSU__USE__S_AXI_ACP {0} \ - CONFIG.PSU__USE__S_AXI_GP0 {1} \ - CONFIG.PSU__USE__S_AXI_GP1 {0} \ - CONFIG.PSU__USE__S_AXI_GP2 {0} \ - CONFIG.PSU__USE__S_AXI_GP3 {0} \ - CONFIG.PSU__USE__S_AXI_GP4 {0} \ - CONFIG.PSU__USE__S_AXI_GP5 {0} \ - CONFIG.PSU__USE__S_AXI_GP6 {0} \ - CONFIG.PSU__USE__USB3_0_HUB {0} \ - CONFIG.PSU__USE__USB3_1_HUB {0} \ - CONFIG.PSU__USE__VIDEO {0} \ - CONFIG.PSU__VIDEO_REF_CLK__ENABLE {0} \ - CONFIG.PSU__VIDEO_REF_CLK__FREQMHZ {33.333} \ - CONFIG.QSPI_BOARD_INTERFACE {custom} \ - CONFIG.SATA_BOARD_INTERFACE {custom} \ - CONFIG.SD0_BOARD_INTERFACE {custom} \ - CONFIG.SD1_BOARD_INTERFACE {custom} \ - CONFIG.SPI0_BOARD_INTERFACE {custom} \ - CONFIG.SPI1_BOARD_INTERFACE {custom} \ - CONFIG.SUBPRESET1 {Custom} \ - CONFIG.SUBPRESET2 {Custom} \ - CONFIG.SWDT0_BOARD_INTERFACE {custom} \ - CONFIG.SWDT1_BOARD_INTERFACE {custom} \ - CONFIG.TRACE_BOARD_INTERFACE {custom} \ - CONFIG.TTC0_BOARD_INTERFACE {custom} \ - CONFIG.TTC1_BOARD_INTERFACE {custom} \ - CONFIG.TTC2_BOARD_INTERFACE {custom} \ - CONFIG.TTC3_BOARD_INTERFACE {custom} \ - CONFIG.UART0_BOARD_INTERFACE {custom} \ - CONFIG.UART1_BOARD_INTERFACE {custom} \ - CONFIG.USB0_BOARD_INTERFACE {custom} \ - CONFIG.USB1_BOARD_INTERFACE {custom} \ - ] $zynq_ultra_ps_e_0 - - # Create interface connections - connect_bd_intf_net -intf_net adc0_clk_1 [get_bd_intf_ports adc0_clk] [get_bd_intf_pins usp_rf_data_converter_0/adc0_clk] - connect_bd_intf_net -intf_net axi_bram_ctrl_0_BRAM_PORTA [get_bd_intf_pins axi_bram_ctrl_0/BRAM_PORTA] [get_bd_intf_pins axi_bram_ctrl_0_bram/BRAM_PORTA] - connect_bd_intf_net -intf_net axi_dma_0_M_AXIS_MM2S [get_bd_intf_pins axi_dma_tproc/M_AXIS_MM2S] [get_bd_intf_pins axis_tproc64x32_x8_0/s0_axis] - connect_bd_intf_net -intf_net axi_dma_0_M_AXI_MM2S [get_bd_intf_pins axi_dma_tproc/M_AXI_MM2S] [get_bd_intf_pins axi_smc/S00_AXI] - connect_bd_intf_net -intf_net axi_dma_0_M_AXI_S2MM [get_bd_intf_pins axi_dma_tproc/M_AXI_S2MM] [get_bd_intf_pins axi_smc/S01_AXI] - connect_bd_intf_net -intf_net axi_dma_0_M_AXI_S2MM1 [get_bd_intf_pins axi_dma_mr/M_AXI_S2MM] [get_bd_intf_pins axi_smc/S05_AXI] - connect_bd_intf_net -intf_net axi_dma_1_M_AXIS_MM2S [get_bd_intf_pins axi_dma_gen/M_AXIS_MM2S] [get_bd_intf_pins axis_switch_gen/S00_AXIS] - connect_bd_intf_net -intf_net axi_dma_1_M_AXI_MM2S [get_bd_intf_pins axi_dma_gen/M_AXI_MM2S] [get_bd_intf_pins axi_smc/S02_AXI] - connect_bd_intf_net -intf_net axi_dma_avg_M_AXI_S2MM [get_bd_intf_pins axi_dma_avg/M_AXI_S2MM] [get_bd_intf_pins axi_smc/S03_AXI] - connect_bd_intf_net -intf_net axi_dma_buf_M_AXI_S2MM [get_bd_intf_pins axi_dma_buf/M_AXI_S2MM] [get_bd_intf_pins axi_smc/S04_AXI] - connect_bd_intf_net -intf_net axi_smc_1_M00_AXI [get_bd_intf_pins axi_smc_1/M00_AXI] [get_bd_intf_pins ddr4_0/C0_DDR4_S_AXI] - connect_bd_intf_net -intf_net axi_smc_M00_AXI [get_bd_intf_pins axi_smc/M00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HPC0_FPD] - connect_bd_intf_net -intf_net axis_avg_buffer_0_m0_axis [get_bd_intf_pins axis_avg_buffer_0/m0_axis] [get_bd_intf_pins axis_switch_avg/S00_AXIS] - connect_bd_intf_net -intf_net axis_avg_buffer_0_m1_axis [get_bd_intf_pins axis_avg_buffer_0/m1_axis] [get_bd_intf_pins axis_switch_buf/S00_AXIS] - connect_bd_intf_net -intf_net axis_avg_buffer_0_m2_axis [get_bd_intf_pins axis_avg_buffer_0/m2_axis] [get_bd_intf_pins axis_clk_cnvrt_avg_0/S_AXIS] - connect_bd_intf_net -intf_net axis_avg_buffer_1_m0_axis [get_bd_intf_pins axis_avg_buffer_1/m0_axis] [get_bd_intf_pins axis_switch_avg/S01_AXIS] - connect_bd_intf_net -intf_net axis_avg_buffer_1_m1_axis [get_bd_intf_pins axis_avg_buffer_1/m1_axis] [get_bd_intf_pins axis_switch_buf/S01_AXIS] - connect_bd_intf_net -intf_net axis_avg_buffer_1_m2_axis [get_bd_intf_pins axis_avg_buffer_1/m2_axis] [get_bd_intf_pins axis_clk_cnvrt_avg_1/S_AXIS] - connect_bd_intf_net -intf_net axis_broadcaster_0_M00_AXIS [get_bd_intf_pins axis_avg_buffer_0/s_axis] [get_bd_intf_pins axis_broadcaster_0/M00_AXIS] - connect_bd_intf_net -intf_net axis_broadcaster_0_M01_AXIS [get_bd_intf_pins axis_broadcaster_0/M01_AXIS] [get_bd_intf_pins axis_switch_ddr/S00_AXIS] - connect_bd_intf_net -intf_net axis_broadcaster_1_M00_AXIS [get_bd_intf_pins axis_avg_buffer_1/s_axis] [get_bd_intf_pins axis_broadcaster_1/M00_AXIS] - connect_bd_intf_net -intf_net axis_broadcaster_1_M01_AXIS [get_bd_intf_pins axis_broadcaster_1/M01_AXIS] [get_bd_intf_pins axis_switch_ddr/S01_AXIS] - connect_bd_intf_net -intf_net axis_buffer_ddr_v1_0_m_axi [get_bd_intf_pins axi_smc_1/S01_AXI] [get_bd_intf_pins axis_buffer_ddr_v1_0/m_axi] - connect_bd_intf_net -intf_net axis_cdcsync_v1_0_m0_axis [get_bd_intf_pins axis_cdcsync_v1_0/m0_axis] [get_bd_intf_pins axis_signal_gen_v6_0/s1_axis] - connect_bd_intf_net -intf_net axis_cdcsync_v1_0_m1_axis [get_bd_intf_pins axis_cdcsync_v1_0/m1_axis] [get_bd_intf_pins axis_signal_gen_v6_1/s1_axis] - connect_bd_intf_net -intf_net axis_cdcsync_v1_0_m2_axis [get_bd_intf_pins axis_cdcsync_v1_0/m2_axis] [get_bd_intf_pins axis_signal_gen_v6_2/s1_axis] - connect_bd_intf_net -intf_net axis_cdcsync_v1_1_m0_axis [get_bd_intf_pins axis_cdcsync_v1_1/m0_axis] [get_bd_intf_pins axis_signal_gen_v6_3/s1_axis] - connect_bd_intf_net -intf_net axis_cdcsync_v1_1_m1_axis [get_bd_intf_pins axis_cdcsync_v1_1/m1_axis] [get_bd_intf_pins axis_signal_gen_v6_4/s1_axis] - connect_bd_intf_net -intf_net axis_cdcsync_v1_1_m2_axis [get_bd_intf_pins axis_cdcsync_v1_1/m2_axis] [get_bd_intf_pins axis_signal_gen_v6_5/s1_axis] - connect_bd_intf_net -intf_net axis_cdcsync_v1_1_m3_axis [get_bd_intf_pins axis_cdcsync_v1_1/m3_axis] [get_bd_intf_pins axis_signal_gen_v6_6/s1_axis] - connect_bd_intf_net -intf_net axis_clk_cnvrt_avg_0_M_AXIS [get_bd_intf_pins axis_clk_cnvrt_avg_0/M_AXIS] [get_bd_intf_pins axis_tproc64x32_x8_0/s1_axis] - connect_bd_intf_net -intf_net axis_clk_cnvrt_avg_1_M_AXIS [get_bd_intf_pins axis_clk_cnvrt_avg_1/M_AXIS] [get_bd_intf_pins axis_tproc64x32_x8_0/s2_axis] - connect_bd_intf_net -intf_net axis_clock_converter_0_M_AXIS [get_bd_intf_pins axis_buffer_ddr_v1_0/s_axis] [get_bd_intf_pins axis_clock_converter_0/M_AXIS] - connect_bd_intf_net -intf_net axis_dwidth_converter_0_M_AXIS [get_bd_intf_pins axis_clock_converter_0/S_AXIS] [get_bd_intf_pins axis_dwidth_converter_0/M_AXIS] - connect_bd_intf_net -intf_net axis_readout_v2_0_m0_axis [get_bd_intf_pins axis_readout_v2_0/m0_axis] [get_bd_intf_pins axis_switch_mr/S00_AXIS] - connect_bd_intf_net -intf_net axis_readout_v2_0_m1_axis [get_bd_intf_pins axis_broadcaster_0/S_AXIS] [get_bd_intf_pins axis_readout_v2_0/m1_axis] - connect_bd_intf_net -intf_net axis_readout_v2_1_m0_axis [get_bd_intf_pins axis_readout_v2_1/m0_axis] [get_bd_intf_pins axis_switch_mr/S01_AXIS] - connect_bd_intf_net -intf_net axis_readout_v2_1_m1_axis [get_bd_intf_pins axis_broadcaster_1/S_AXIS] [get_bd_intf_pins axis_readout_v2_1/m1_axis] - connect_bd_intf_net -intf_net axis_register_slice_0_M_AXIS [get_bd_intf_pins axis_readout_v2_0/s_axis] [get_bd_intf_pins axis_register_slice_0/M_AXIS] - connect_bd_intf_net -intf_net axis_register_slice_1_M_AXIS [get_bd_intf_pins axis_readout_v2_1/s_axis] [get_bd_intf_pins axis_register_slice_1/M_AXIS] - connect_bd_intf_net -intf_net axis_signal_gen_v6_0_m_axis [get_bd_intf_pins axis_signal_gen_v6_0/m_axis] [get_bd_intf_pins usp_rf_data_converter_0/s00_axis] - connect_bd_intf_net -intf_net axis_signal_gen_v6_1_m_axis [get_bd_intf_pins axis_signal_gen_v6_1/m_axis] [get_bd_intf_pins usp_rf_data_converter_0/s01_axis] - connect_bd_intf_net -intf_net axis_signal_gen_v6_2_m_axis [get_bd_intf_pins axis_signal_gen_v6_2/m_axis] [get_bd_intf_pins usp_rf_data_converter_0/s02_axis] - connect_bd_intf_net -intf_net axis_signal_gen_v6_3_m_axis [get_bd_intf_pins axis_signal_gen_v6_3/m_axis] [get_bd_intf_pins usp_rf_data_converter_0/s10_axis] - connect_bd_intf_net -intf_net axis_signal_gen_v6_4_m_axis [get_bd_intf_pins axis_signal_gen_v6_4/m_axis] [get_bd_intf_pins usp_rf_data_converter_0/s11_axis] - connect_bd_intf_net -intf_net axis_signal_gen_v6_5_m_axis [get_bd_intf_pins axis_signal_gen_v6_5/m_axis] [get_bd_intf_pins usp_rf_data_converter_0/s12_axis] - connect_bd_intf_net -intf_net axis_signal_gen_v6_6_m_axis [get_bd_intf_pins axis_signal_gen_v6_6/m_axis] [get_bd_intf_pins usp_rf_data_converter_0/s13_axis] - connect_bd_intf_net -intf_net axis_switch_0_M00_AXIS [get_bd_intf_pins axis_signal_gen_v6_0/s0_axis] [get_bd_intf_pins axis_switch_gen/M00_AXIS] - connect_bd_intf_net -intf_net axis_switch_0_M01_AXIS [get_bd_intf_pins axis_signal_gen_v6_1/s0_axis] [get_bd_intf_pins axis_switch_gen/M01_AXIS] - connect_bd_intf_net -intf_net axis_switch_0_M02_AXIS [get_bd_intf_pins axis_signal_gen_v6_2/s0_axis] [get_bd_intf_pins axis_switch_gen/M02_AXIS] - connect_bd_intf_net -intf_net axis_switch_0_M03_AXIS [get_bd_intf_pins axis_signal_gen_v6_3/s0_axis] [get_bd_intf_pins axis_switch_gen/M03_AXIS] - connect_bd_intf_net -intf_net axis_switch_0_M04_AXIS [get_bd_intf_pins axis_signal_gen_v6_4/s0_axis] [get_bd_intf_pins axis_switch_gen/M04_AXIS] - connect_bd_intf_net -intf_net axis_switch_0_M05_AXIS [get_bd_intf_pins axis_signal_gen_v6_5/s0_axis] [get_bd_intf_pins axis_switch_gen/M05_AXIS] - connect_bd_intf_net -intf_net axis_switch_0_M06_AXIS [get_bd_intf_pins axis_signal_gen_v6_6/s0_axis] [get_bd_intf_pins axis_switch_gen/M06_AXIS] - connect_bd_intf_net -intf_net axis_switch_avg_M00_AXIS [get_bd_intf_pins axi_dma_avg/S_AXIS_S2MM] [get_bd_intf_pins axis_switch_avg/M00_AXIS] - connect_bd_intf_net -intf_net axis_switch_buf_M00_AXIS [get_bd_intf_pins axi_dma_buf/S_AXIS_S2MM] [get_bd_intf_pins axis_switch_buf/M00_AXIS] - connect_bd_intf_net -intf_net axis_switch_ddr_M00_AXIS [get_bd_intf_pins axis_dwidth_converter_0/S_AXIS] [get_bd_intf_pins axis_switch_ddr/M00_AXIS] - connect_bd_intf_net -intf_net axis_switch_mr_M00_AXIS [get_bd_intf_pins axis_switch_mr/M00_AXIS] [get_bd_intf_pins mr_buffer_et_0/s00_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m0_axis [get_bd_intf_pins axi_dma_tproc/S_AXIS_S2MM] [get_bd_intf_pins axis_tproc64x32_x8_0/m0_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m1_axis [get_bd_intf_pins axis_set_reg_0/s_axis] [get_bd_intf_pins axis_tproc64x32_x8_0/m1_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m2_axis [get_bd_intf_pins axis_cdcsync_v1_0/s0_axis] [get_bd_intf_pins axis_tproc64x32_x8_0/m2_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m3_axis [get_bd_intf_pins axis_cdcsync_v1_0/s1_axis] [get_bd_intf_pins axis_tproc64x32_x8_0/m3_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m4_axis [get_bd_intf_pins axis_cdcsync_v1_0/s2_axis] [get_bd_intf_pins axis_tproc64x32_x8_0/m4_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m5_axis [get_bd_intf_pins axis_cdcsync_v1_1/s0_axis] [get_bd_intf_pins axis_tproc64x32_x8_0/m5_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m6_axis [get_bd_intf_pins axis_cdcsync_v1_1/s1_axis] [get_bd_intf_pins axis_tproc64x32_x8_0/m6_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m7_axis [get_bd_intf_pins axis_cdcsync_v1_1/s2_axis] [get_bd_intf_pins axis_tproc64x32_x8_0/m7_axis] - connect_bd_intf_net -intf_net axis_tproc64x32_x8_0_m8_axis [get_bd_intf_pins axis_cdcsync_v1_1/s3_axis] [get_bd_intf_pins axis_tproc64x32_x8_0/m8_axis] - connect_bd_intf_net -intf_net dac0_clk_1 [get_bd_intf_ports dac0_clk] [get_bd_intf_pins usp_rf_data_converter_0/dac0_clk] - connect_bd_intf_net -intf_net dac1_clk_1 [get_bd_intf_ports dac1_clk] [get_bd_intf_pins usp_rf_data_converter_0/dac1_clk] - connect_bd_intf_net -intf_net ddr4_0_C0_DDR4 [get_bd_intf_ports ddr4_pl] [get_bd_intf_pins ddr4_0/C0_DDR4] - connect_bd_intf_net -intf_net default_sysclk1_300mhz_1 [get_bd_intf_ports sys_clk_ddr4] [get_bd_intf_pins ddr4_0/C0_SYS_CLK] - connect_bd_intf_net -intf_net mr_buffer_et_0_m00_axis [get_bd_intf_pins axi_dma_mr/S_AXIS_S2MM] [get_bd_intf_pins mr_buffer_et_0/m00_axis] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_dma_tproc/S_AXI_LITE] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins axis_tproc64x32_x8_0/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M02_AXI [get_bd_intf_pins axis_signal_gen_v6_0/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M02_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M03_AXI [get_bd_intf_pins axis_signal_gen_v6_1/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M03_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M04_AXI [get_bd_intf_pins axis_signal_gen_v6_2/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M04_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M05_AXI [get_bd_intf_pins axis_signal_gen_v6_3/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M05_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M06_AXI [get_bd_intf_pins axi_dma_gen/S_AXI_LITE] [get_bd_intf_pins ps8_0_axi_periph/M06_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M07_AXI [get_bd_intf_pins axis_switch_gen/S_AXI_CTRL] [get_bd_intf_pins ps8_0_axi_periph/M07_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M08_AXI [get_bd_intf_pins ps8_0_axi_periph/M08_AXI] [get_bd_intf_pins usp_rf_data_converter_0/s_axi] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M09_AXI [get_bd_intf_pins axis_avg_buffer_0/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M09_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M10_AXI [get_bd_intf_pins axis_avg_buffer_1/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M10_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M11_AXI [get_bd_intf_pins axis_signal_gen_v6_4/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M11_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M12_AXI [get_bd_intf_pins axis_signal_gen_v6_5/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M12_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M13_AXI [get_bd_intf_pins axi_bram_ctrl_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M13_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M14_AXI [get_bd_intf_pins axis_signal_gen_v6_6/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M14_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M15_AXI [get_bd_intf_pins axis_readout_v2_0/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M15_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M16_AXI [get_bd_intf_pins axis_readout_v2_1/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M16_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M17_AXI [get_bd_intf_pins axis_switch_avg/S_AXI_CTRL] [get_bd_intf_pins ps8_0_axi_periph/M17_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M18_AXI [get_bd_intf_pins axis_switch_buf/S_AXI_CTRL] [get_bd_intf_pins ps8_0_axi_periph/M18_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M19_AXI [get_bd_intf_pins axi_dma_avg/S_AXI_LITE] [get_bd_intf_pins ps8_0_axi_periph/M19_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M20_AXI [get_bd_intf_pins axi_dma_buf/S_AXI_LITE] [get_bd_intf_pins ps8_0_axi_periph/M20_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M21_AXI [get_bd_intf_pins axis_buffer_ddr_v1_0/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M21_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M22_AXI [get_bd_intf_pins axis_switch_ddr/S_AXI_CTRL] [get_bd_intf_pins ps8_0_axi_periph/M22_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M23_AXI [get_bd_intf_pins axis_switch_mr/S_AXI_CTRL] [get_bd_intf_pins ps8_0_axi_periph/M23_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M24_AXI [get_bd_intf_pins mr_buffer_et_0/s00_axi] [get_bd_intf_pins ps8_0_axi_periph/M24_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M25_AXI [get_bd_intf_pins axi_dma_mr/S_AXI_LITE] [get_bd_intf_pins ps8_0_axi_periph/M25_AXI] - connect_bd_intf_net -intf_net ps8_0_axi_periph_M26_AXI [get_bd_intf_pins axi_intc_0/s_axi] [get_bd_intf_pins ps8_0_axi_periph/M26_AXI] - connect_bd_intf_net -intf_net sysref_in_1 [get_bd_intf_ports sysref_in] [get_bd_intf_pins usp_rf_data_converter_0/sysref_in] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_m00_axis [get_bd_intf_pins axis_register_slice_0/S_AXIS] [get_bd_intf_pins usp_rf_data_converter_0/m00_axis] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_m02_axis [get_bd_intf_pins axis_register_slice_1/S_AXIS] [get_bd_intf_pins usp_rf_data_converter_0/m02_axis] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_vout00 [get_bd_intf_ports vout0] [get_bd_intf_pins usp_rf_data_converter_0/vout00] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_vout01 [get_bd_intf_ports vout1] [get_bd_intf_pins usp_rf_data_converter_0/vout01] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_vout02 [get_bd_intf_ports vout2] [get_bd_intf_pins usp_rf_data_converter_0/vout02] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_vout10 [get_bd_intf_ports vout3] [get_bd_intf_pins usp_rf_data_converter_0/vout10] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_vout11 [get_bd_intf_ports vout4] [get_bd_intf_pins usp_rf_data_converter_0/vout11] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_vout12 [get_bd_intf_ports vout5] [get_bd_intf_pins usp_rf_data_converter_0/vout12] - connect_bd_intf_net -intf_net usp_rf_data_converter_0_vout13 [get_bd_intf_ports vout6] [get_bd_intf_pins usp_rf_data_converter_0/vout13] - connect_bd_intf_net -intf_net vin0_1 [get_bd_intf_ports vin0] [get_bd_intf_pins usp_rf_data_converter_0/vin0_01] - connect_bd_intf_net -intf_net vin1_1 [get_bd_intf_ports vin1] [get_bd_intf_pins usp_rf_data_converter_0/vin0_23] - connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] - connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM1_FPD [get_bd_intf_pins axi_smc_1/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM1_FPD] - - # Create port connections - connect_bd_net -net PMOD1_0_LS_1 [get_bd_ports PMOD1_0_LS] [get_bd_pins axis_tproc64x32_x8_0/start] - connect_bd_net -net axi_bram_ctrl_0_bram_doutb [get_bd_pins axi_bram_ctrl_0_bram/doutb] [get_bd_pins axis_tproc64x32_x8_0/pmem_do] - connect_bd_net -net axi_dma_avg_s2mm_introut [get_bd_pins axi_dma_avg/s2mm_introut] [get_bd_pins xlconcat_0/In3] - connect_bd_net -net axi_dma_buf_s2mm_introut [get_bd_pins axi_dma_buf/s2mm_introut] [get_bd_pins xlconcat_0/In4] - connect_bd_net -net axi_dma_gen_mm2s_introut [get_bd_pins axi_dma_gen/mm2s_introut] [get_bd_pins xlconcat_0/In2] - connect_bd_net -net axi_dma_mr_s2mm_introut [get_bd_pins axi_dma_mr/s2mm_introut] [get_bd_pins xlconcat_0/In5] - connect_bd_net -net axi_dma_tproc_mm2s_introut [get_bd_pins axi_dma_tproc/mm2s_introut] [get_bd_pins xlconcat_0/In0] - connect_bd_net -net axi_dma_tproc_s2mm_introut [get_bd_pins axi_dma_tproc/s2mm_introut] [get_bd_pins xlconcat_0/In1] - connect_bd_net -net axi_intc_0_irq [get_bd_pins axi_intc_0/irq] [get_bd_pins zynq_ultra_ps_e_0/pl_ps_irq0] - connect_bd_net -net axis_set_reg_0_dout [get_bd_pins axis_set_reg_0/dout] [get_bd_pins vect2bits_16_0/din] - connect_bd_net -net axis_tproc64x32_x8_0_pmem_addr [get_bd_pins axi_bram_ctrl_0_bram/addrb] [get_bd_pins axis_tproc64x32_x8_0/pmem_addr] - connect_bd_net -net clk_adc0_x2_clk_out1 [get_bd_pins axis_avg_buffer_0/s_axis_aclk] [get_bd_pins axis_avg_buffer_1/s_axis_aclk] [get_bd_pins axis_broadcaster_0/aclk] [get_bd_pins axis_broadcaster_1/aclk] [get_bd_pins axis_clock_converter_0/s_axis_aclk] [get_bd_pins axis_dwidth_converter_0/aclk] [get_bd_pins axis_readout_v2_0/aclk] [get_bd_pins axis_readout_v2_1/aclk] [get_bd_pins axis_register_slice_0/aclk] [get_bd_pins axis_register_slice_1/aclk] [get_bd_pins axis_switch_ddr/aclk] [get_bd_pins axis_switch_mr/aclk] [get_bd_pins clk_adc0_x2/clk_out1] [get_bd_pins mr_buffer_et_0/s00_axis_aclk] [get_bd_pins rst_adc0_x2/slowest_sync_clk] [get_bd_pins usp_rf_data_converter_0/m0_axis_aclk] - connect_bd_net -net clk_adc0_x2_locked [get_bd_pins clk_adc0_x2/locked] [get_bd_pins rst_adc0_x2/dcm_locked] - connect_bd_net -net ddr4_0_c0_ddr4_ui_clk [get_bd_pins axi_smc_1/aclk] [get_bd_pins axis_buffer_ddr_v1_0/aclk] [get_bd_pins axis_clock_converter_0/m_axis_aclk] [get_bd_pins ddr4_0/c0_ddr4_ui_clk] [get_bd_pins rst_ddr4/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm1_fpd_aclk] - connect_bd_net -net ddr4_0_c0_ddr4_ui_clk_sync_rst [get_bd_pins ddr4_0/c0_ddr4_ui_clk_sync_rst] [get_bd_pins rst_ddr4/ext_reset_in] - connect_bd_net -net rst_100_bus_struct_reset [get_bd_pins ddr4_0/sys_rst] [get_bd_pins rst_100/bus_struct_reset] - connect_bd_net -net rst_adc0_peripheral_reset [get_bd_pins clk_adc0_x2/reset] [get_bd_pins rst_adc0/peripheral_reset] - connect_bd_net -net rst_adc0_x2_peripheral_aresetn [get_bd_pins axis_avg_buffer_0/s_axis_aresetn] [get_bd_pins axis_avg_buffer_1/s_axis_aresetn] [get_bd_pins axis_broadcaster_0/aresetn] [get_bd_pins axis_broadcaster_1/aresetn] [get_bd_pins axis_clock_converter_0/s_axis_aresetn] [get_bd_pins axis_dwidth_converter_0/aresetn] [get_bd_pins axis_readout_v2_0/aresetn] [get_bd_pins axis_readout_v2_1/aresetn] [get_bd_pins axis_register_slice_0/aresetn] [get_bd_pins axis_register_slice_1/aresetn] [get_bd_pins axis_switch_ddr/aresetn] [get_bd_pins axis_switch_mr/aresetn] [get_bd_pins mr_buffer_et_0/s00_axis_aresetn] [get_bd_pins rst_adc0_x2/peripheral_aresetn] [get_bd_pins usp_rf_data_converter_0/m0_axis_aresetn] - connect_bd_net -net rst_dac0_peripheral_aresetn [get_bd_pins axis_cdcsync_v1_0/m_axis_aresetn] [get_bd_pins axis_cdcsync_v1_0/s_axis_aresetn] [get_bd_pins axis_cdcsync_v1_1/s_axis_aresetn] [get_bd_pins axis_clk_cnvrt_avg_0/m_axis_aresetn] [get_bd_pins axis_clk_cnvrt_avg_1/m_axis_aresetn] [get_bd_pins axis_set_reg_0/s_axis_aresetn] [get_bd_pins axis_signal_gen_v6_0/aresetn] [get_bd_pins axis_signal_gen_v6_1/aresetn] [get_bd_pins axis_signal_gen_v6_2/aresetn] [get_bd_pins axis_tproc64x32_x8_0/aresetn] [get_bd_pins rst_dac0/peripheral_aresetn] [get_bd_pins usp_rf_data_converter_0/s0_axis_aresetn] - connect_bd_net -net rst_dac1_peripheral_aresetn [get_bd_pins axis_cdcsync_v1_1/m_axis_aresetn] [get_bd_pins axis_signal_gen_v6_3/aresetn] [get_bd_pins axis_signal_gen_v6_4/aresetn] [get_bd_pins axis_signal_gen_v6_5/aresetn] [get_bd_pins axis_signal_gen_v6_6/aresetn] [get_bd_pins rst_dac1/peripheral_aresetn] [get_bd_pins usp_rf_data_converter_0/s1_axis_aresetn] - connect_bd_net -net rst_ddr4_0_333M_peripheral_aresetn [get_bd_pins axi_smc_1/aresetn] [get_bd_pins axis_buffer_ddr_v1_0/aresetn] [get_bd_pins axis_clock_converter_0/m_axis_aresetn] [get_bd_pins ddr4_0/c0_ddr4_aresetn] [get_bd_pins rst_ddr4/peripheral_aresetn] - connect_bd_net -net rst_ps8_0_99M_peripheral_aresetn [get_bd_pins axi_bram_ctrl_0/s_axi_aresetn] [get_bd_pins axi_dma_avg/axi_resetn] [get_bd_pins axi_dma_buf/axi_resetn] [get_bd_pins axi_dma_gen/axi_resetn] [get_bd_pins axi_dma_mr/axi_resetn] [get_bd_pins axi_dma_tproc/axi_resetn] [get_bd_pins axi_intc_0/s_axi_aresetn] [get_bd_pins axi_smc/aresetn] [get_bd_pins axis_avg_buffer_0/m_axis_aresetn] [get_bd_pins axis_avg_buffer_0/s_axi_aresetn] [get_bd_pins axis_avg_buffer_1/m_axis_aresetn] [get_bd_pins axis_avg_buffer_1/s_axi_aresetn] [get_bd_pins axis_buffer_ddr_v1_0/s_axi_aresetn] [get_bd_pins axis_clk_cnvrt_avg_0/s_axis_aresetn] [get_bd_pins axis_clk_cnvrt_avg_1/s_axis_aresetn] [get_bd_pins axis_readout_v2_0/s_axi_aresetn] [get_bd_pins axis_readout_v2_1/s_axi_aresetn] [get_bd_pins axis_signal_gen_v6_0/s0_axis_aresetn] [get_bd_pins axis_signal_gen_v6_0/s_axi_aresetn] [get_bd_pins axis_signal_gen_v6_1/s0_axis_aresetn] [get_bd_pins axis_signal_gen_v6_1/s_axi_aresetn] [get_bd_pins axis_signal_gen_v6_2/s0_axis_aresetn] [get_bd_pins axis_signal_gen_v6_2/s_axi_aresetn] [get_bd_pins axis_signal_gen_v6_3/s0_axis_aresetn] [get_bd_pins axis_signal_gen_v6_3/s_axi_aresetn] [get_bd_pins axis_signal_gen_v6_4/s0_axis_aresetn] [get_bd_pins axis_signal_gen_v6_4/s_axi_aresetn] [get_bd_pins axis_signal_gen_v6_5/s0_axis_aresetn] [get_bd_pins axis_signal_gen_v6_5/s_axi_aresetn] [get_bd_pins axis_signal_gen_v6_6/s0_axis_aresetn] [get_bd_pins axis_signal_gen_v6_6/s_axi_aresetn] [get_bd_pins axis_switch_avg/aresetn] [get_bd_pins axis_switch_avg/s_axi_ctrl_aresetn] [get_bd_pins axis_switch_buf/aresetn] [get_bd_pins axis_switch_buf/s_axi_ctrl_aresetn] [get_bd_pins axis_switch_ddr/s_axi_ctrl_aresetn] [get_bd_pins axis_switch_gen/aresetn] [get_bd_pins axis_switch_gen/s_axi_ctrl_aresetn] [get_bd_pins axis_switch_mr/s_axi_ctrl_aresetn] [get_bd_pins axis_tproc64x32_x8_0/m0_axis_aresetn] [get_bd_pins axis_tproc64x32_x8_0/s0_axis_aresetn] [get_bd_pins axis_tproc64x32_x8_0/s_axi_aresetn] [get_bd_pins mr_buffer_et_0/m00_axis_aresetn] [get_bd_pins mr_buffer_et_0/s00_axi_aresetn] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/M02_ARESETN] [get_bd_pins ps8_0_axi_periph/M03_ARESETN] [get_bd_pins ps8_0_axi_periph/M04_ARESETN] [get_bd_pins ps8_0_axi_periph/M05_ARESETN] [get_bd_pins ps8_0_axi_periph/M06_ARESETN] [get_bd_pins ps8_0_axi_periph/M07_ARESETN] [get_bd_pins ps8_0_axi_periph/M08_ARESETN] [get_bd_pins ps8_0_axi_periph/M09_ARESETN] [get_bd_pins ps8_0_axi_periph/M10_ARESETN] [get_bd_pins ps8_0_axi_periph/M11_ARESETN] [get_bd_pins ps8_0_axi_periph/M12_ARESETN] [get_bd_pins ps8_0_axi_periph/M13_ARESETN] [get_bd_pins ps8_0_axi_periph/M14_ARESETN] [get_bd_pins ps8_0_axi_periph/M15_ARESETN] [get_bd_pins ps8_0_axi_periph/M16_ARESETN] [get_bd_pins ps8_0_axi_periph/M17_ARESETN] [get_bd_pins ps8_0_axi_periph/M18_ARESETN] [get_bd_pins ps8_0_axi_periph/M19_ARESETN] [get_bd_pins ps8_0_axi_periph/M20_ARESETN] [get_bd_pins ps8_0_axi_periph/M21_ARESETN] [get_bd_pins ps8_0_axi_periph/M22_ARESETN] [get_bd_pins ps8_0_axi_periph/M23_ARESETN] [get_bd_pins ps8_0_axi_periph/M24_ARESETN] [get_bd_pins ps8_0_axi_periph/M25_ARESETN] [get_bd_pins ps8_0_axi_periph/M26_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_100/peripheral_aresetn] [get_bd_pins usp_rf_data_converter_0/s_axi_aresetn] - connect_bd_net -net usp_rf_data_converter_0_clk_adc0 [get_bd_pins clk_adc0_x2/clk_in1] [get_bd_pins rst_adc0/slowest_sync_clk] [get_bd_pins usp_rf_data_converter_0/clk_adc0] - connect_bd_net -net usp_rf_data_converter_0_clk_dac0 [get_bd_pins axi_bram_ctrl_0_bram/clkb] [get_bd_pins axis_cdcsync_v1_0/m_axis_aclk] [get_bd_pins axis_cdcsync_v1_0/s_axis_aclk] [get_bd_pins axis_cdcsync_v1_1/s_axis_aclk] [get_bd_pins axis_clk_cnvrt_avg_0/m_axis_aclk] [get_bd_pins axis_clk_cnvrt_avg_1/m_axis_aclk] [get_bd_pins axis_set_reg_0/s_axis_aclk] [get_bd_pins axis_signal_gen_v6_0/aclk] [get_bd_pins axis_signal_gen_v6_1/aclk] [get_bd_pins axis_signal_gen_v6_2/aclk] [get_bd_pins axis_tproc64x32_x8_0/aclk] [get_bd_pins rst_dac0/slowest_sync_clk] [get_bd_pins usp_rf_data_converter_0/clk_dac0] [get_bd_pins usp_rf_data_converter_0/s0_axis_aclk] - connect_bd_net -net usp_rf_data_converter_0_clk_dac1 [get_bd_pins axis_cdcsync_v1_1/m_axis_aclk] [get_bd_pins axis_signal_gen_v6_3/aclk] [get_bd_pins axis_signal_gen_v6_4/aclk] [get_bd_pins axis_signal_gen_v6_5/aclk] [get_bd_pins axis_signal_gen_v6_6/aclk] [get_bd_pins rst_dac1/slowest_sync_clk] [get_bd_pins usp_rf_data_converter_0/clk_dac1] [get_bd_pins usp_rf_data_converter_0/s1_axis_aclk] - connect_bd_net -net vect2bits_16_0_dout0 [get_bd_ports PMOD0_0_LS] [get_bd_pins vect2bits_16_0/dout0] - connect_bd_net -net vect2bits_16_0_dout1 [get_bd_ports PMOD0_1_LS] [get_bd_pins vect2bits_16_0/dout1] - connect_bd_net -net vect2bits_16_0_dout2 [get_bd_ports PMOD0_2_LS] [get_bd_pins vect2bits_16_0/dout2] - connect_bd_net -net vect2bits_16_0_dout3 [get_bd_ports PMOD0_3_LS] [get_bd_pins vect2bits_16_0/dout3] - connect_bd_net -net vect2bits_16_0_dout4 [get_bd_ports PMOD0_4_LS] [get_bd_pins vect2bits_16_0/dout4] - connect_bd_net -net vect2bits_16_0_dout5 [get_bd_ports PMOD0_5_LS] [get_bd_pins vect2bits_16_0/dout5] - connect_bd_net -net vect2bits_16_0_dout6 [get_bd_ports PMOD0_6_LS] [get_bd_pins vect2bits_16_0/dout6] - connect_bd_net -net vect2bits_16_0_dout7 [get_bd_ports PMOD0_7_LS] [get_bd_pins vect2bits_16_0/dout7] - connect_bd_net -net vect2bits_16_0_dout8 [get_bd_pins axis_buffer_ddr_v1_0/trigger] [get_bd_pins vect2bits_16_0/dout8] - connect_bd_net -net vect2bits_16_0_dout9 [get_bd_pins mr_buffer_et_0/trigger] [get_bd_pins vect2bits_16_0/dout9] - connect_bd_net -net vect2bits_16_0_dout14 [get_bd_pins axis_avg_buffer_0/trigger] [get_bd_pins vect2bits_16_0/dout14] - connect_bd_net -net vect2bits_16_0_dout15 [get_bd_pins axis_avg_buffer_1/trigger] [get_bd_pins vect2bits_16_0/dout15] - connect_bd_net -net xlconcat_0_dout [get_bd_pins axi_intc_0/intr] [get_bd_pins xlconcat_0/dout] - connect_bd_net -net xlconstant_0_dout [get_bd_pins axi_bram_ctrl_0_bram/dinb] [get_bd_pins xlconstant_0/dout] - connect_bd_net -net xlconstant_1_dout [get_bd_pins axi_bram_ctrl_0_bram/enb] [get_bd_pins xlconstant_1/dout] - connect_bd_net -net xlconstant_2_dout [get_bd_pins axi_bram_ctrl_0_bram/rstb] [get_bd_pins xlconstant_2/dout] - connect_bd_net -net xlconstant_3_dout [get_bd_pins axi_bram_ctrl_0_bram/web] [get_bd_pins xlconstant_3/dout] - connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_bram_ctrl_0/s_axi_aclk] [get_bd_pins axi_dma_avg/m_axi_s2mm_aclk] [get_bd_pins axi_dma_avg/s_axi_lite_aclk] [get_bd_pins axi_dma_buf/m_axi_s2mm_aclk] [get_bd_pins axi_dma_buf/s_axi_lite_aclk] [get_bd_pins axi_dma_gen/m_axi_mm2s_aclk] [get_bd_pins axi_dma_gen/s_axi_lite_aclk] [get_bd_pins axi_dma_mr/m_axi_s2mm_aclk] [get_bd_pins axi_dma_mr/s_axi_lite_aclk] [get_bd_pins axi_dma_tproc/m_axi_mm2s_aclk] [get_bd_pins axi_dma_tproc/m_axi_s2mm_aclk] [get_bd_pins axi_dma_tproc/s_axi_lite_aclk] [get_bd_pins axi_intc_0/s_axi_aclk] [get_bd_pins axi_smc/aclk] [get_bd_pins axis_avg_buffer_0/m_axis_aclk] [get_bd_pins axis_avg_buffer_0/s_axi_aclk] [get_bd_pins axis_avg_buffer_1/m_axis_aclk] [get_bd_pins axis_avg_buffer_1/s_axi_aclk] [get_bd_pins axis_buffer_ddr_v1_0/s_axi_aclk] [get_bd_pins axis_clk_cnvrt_avg_0/s_axis_aclk] [get_bd_pins axis_clk_cnvrt_avg_1/s_axis_aclk] [get_bd_pins axis_readout_v2_0/s_axi_aclk] [get_bd_pins axis_readout_v2_1/s_axi_aclk] [get_bd_pins axis_signal_gen_v6_0/s0_axis_aclk] [get_bd_pins axis_signal_gen_v6_0/s_axi_aclk] [get_bd_pins axis_signal_gen_v6_1/s0_axis_aclk] [get_bd_pins axis_signal_gen_v6_1/s_axi_aclk] [get_bd_pins axis_signal_gen_v6_2/s0_axis_aclk] [get_bd_pins axis_signal_gen_v6_2/s_axi_aclk] [get_bd_pins axis_signal_gen_v6_3/s0_axis_aclk] [get_bd_pins axis_signal_gen_v6_3/s_axi_aclk] [get_bd_pins axis_signal_gen_v6_4/s0_axis_aclk] [get_bd_pins axis_signal_gen_v6_4/s_axi_aclk] [get_bd_pins axis_signal_gen_v6_5/s0_axis_aclk] [get_bd_pins axis_signal_gen_v6_5/s_axi_aclk] [get_bd_pins axis_signal_gen_v6_6/s0_axis_aclk] [get_bd_pins axis_signal_gen_v6_6/s_axi_aclk] [get_bd_pins axis_switch_avg/aclk] [get_bd_pins axis_switch_avg/s_axi_ctrl_aclk] [get_bd_pins axis_switch_buf/aclk] [get_bd_pins axis_switch_buf/s_axi_ctrl_aclk] [get_bd_pins axis_switch_ddr/s_axi_ctrl_aclk] [get_bd_pins axis_switch_gen/aclk] [get_bd_pins axis_switch_gen/s_axi_ctrl_aclk] [get_bd_pins axis_switch_mr/s_axi_ctrl_aclk] [get_bd_pins axis_tproc64x32_x8_0/m0_axis_aclk] [get_bd_pins axis_tproc64x32_x8_0/s0_axis_aclk] [get_bd_pins axis_tproc64x32_x8_0/s_axi_aclk] [get_bd_pins mr_buffer_et_0/m00_axis_aclk] [get_bd_pins mr_buffer_et_0/s00_axi_aclk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/M02_ACLK] [get_bd_pins ps8_0_axi_periph/M03_ACLK] [get_bd_pins ps8_0_axi_periph/M04_ACLK] [get_bd_pins ps8_0_axi_periph/M05_ACLK] [get_bd_pins ps8_0_axi_periph/M06_ACLK] [get_bd_pins ps8_0_axi_periph/M07_ACLK] [get_bd_pins ps8_0_axi_periph/M08_ACLK] [get_bd_pins ps8_0_axi_periph/M09_ACLK] [get_bd_pins ps8_0_axi_periph/M10_ACLK] [get_bd_pins ps8_0_axi_periph/M11_ACLK] [get_bd_pins ps8_0_axi_periph/M12_ACLK] [get_bd_pins ps8_0_axi_periph/M13_ACLK] [get_bd_pins ps8_0_axi_periph/M14_ACLK] [get_bd_pins ps8_0_axi_periph/M15_ACLK] [get_bd_pins ps8_0_axi_periph/M16_ACLK] [get_bd_pins ps8_0_axi_periph/M17_ACLK] [get_bd_pins ps8_0_axi_periph/M18_ACLK] [get_bd_pins ps8_0_axi_periph/M19_ACLK] [get_bd_pins ps8_0_axi_periph/M20_ACLK] [get_bd_pins ps8_0_axi_periph/M21_ACLK] [get_bd_pins ps8_0_axi_periph/M22_ACLK] [get_bd_pins ps8_0_axi_periph/M23_ACLK] [get_bd_pins ps8_0_axi_periph/M24_ACLK] [get_bd_pins ps8_0_axi_periph/M25_ACLK] [get_bd_pins ps8_0_axi_periph/M26_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_100/slowest_sync_clk] [get_bd_pins usp_rf_data_converter_0/s_axi_aclk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins zynq_ultra_ps_e_0/saxihpc0_fpd_aclk] - connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins rst_100/ext_reset_in] [get_bd_pins rst_adc0/ext_reset_in] [get_bd_pins rst_adc0_x2/ext_reset_in] [get_bd_pins rst_dac0/ext_reset_in] [get_bd_pins rst_dac1/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] - - # Create address segments - assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces axi_dma_avg/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_LOW] -force - assign_bd_address -offset 0xC0000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces axi_dma_avg/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_QSPI] -force - assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces axi_dma_buf/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_LOW] -force - assign_bd_address -offset 0xC0000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces axi_dma_buf/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_QSPI] -force - assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces axi_dma_gen/Data_MM2S] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_LOW] -force - assign_bd_address -offset 0xC0000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces axi_dma_gen/Data_MM2S] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_QSPI] -force - assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces axi_dma_mr/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_LOW] -force - assign_bd_address -offset 0xC0000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces axi_dma_mr/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_QSPI] -force - assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces axi_dma_tproc/Data_MM2S] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_LOW] -force - assign_bd_address -offset 0xC0000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces axi_dma_tproc/Data_MM2S] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_QSPI] -force - assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces axi_dma_tproc/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_LOW] -force - assign_bd_address -offset 0xC0000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces axi_dma_tproc/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_QSPI] -force - assign_bd_address -offset 0x00000000 -range 0x000100000000 -target_address_space [get_bd_addr_spaces axis_buffer_ddr_v1_0/m_axi] [get_bd_addr_segs ddr4_0/C0_DDR4_MEMORY_MAP/C0_DDR4_ADDRESS_BLOCK] -force - assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_bram_ctrl_0/S_AXI/Mem0] -force - assign_bd_address -offset 0xA0252000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_dma_mr/S_AXI_LITE/Reg] -force - assign_bd_address -offset 0xA0240000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_dma_avg/S_AXI_LITE/Reg] -force - assign_bd_address -offset 0xA0241000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_dma_buf/S_AXI_LITE/Reg] -force - assign_bd_address -offset 0xA0242000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_dma_gen/S_AXI_LITE/Reg] -force - assign_bd_address -offset 0xA0243000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_dma_tproc/S_AXI_LITE/Reg] -force - assign_bd_address -offset 0xA0253000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_intc_0/S_AXI/Reg] -force - assign_bd_address -offset 0xA0244000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_avg_buffer_0/s_axi/reg0] -force - assign_bd_address -offset 0xA0245000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_avg_buffer_1/s_axi/reg0] -force - assign_bd_address -offset 0xA0254000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_buffer_ddr_v1_0/s_axi/reg0] -force - assign_bd_address -offset 0xA0246000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_readout_v2_0/s_axi/reg0] -force - assign_bd_address -offset 0xA0247000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_readout_v2_1/s_axi/reg0] -force - assign_bd_address -offset 0xA0248000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_signal_gen_v6_0/s_axi/reg0] -force - assign_bd_address -offset 0xA0249000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_signal_gen_v6_1/s_axi/reg0] -force - assign_bd_address -offset 0xA024A000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_signal_gen_v6_2/s_axi/reg0] -force - assign_bd_address -offset 0xA024B000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_signal_gen_v6_3/s_axi/reg0] -force - assign_bd_address -offset 0xA024C000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_signal_gen_v6_4/s_axi/reg0] -force - assign_bd_address -offset 0xA024D000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_signal_gen_v6_5/s_axi/reg0] -force - assign_bd_address -offset 0xA024E000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_signal_gen_v6_6/s_axi/reg0] -force - assign_bd_address -offset 0xA024F000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_switch_avg/S_AXI_CTRL/Reg] -force - assign_bd_address -offset 0xA0250000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_switch_buf/S_AXI_CTRL/Reg] -force - assign_bd_address -offset 0xA0255000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_switch_ddr/S_AXI_CTRL/Reg] -force - assign_bd_address -offset 0xA0251000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_switch_gen/S_AXI_CTRL/Reg] -force - assign_bd_address -offset 0xA0256000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_switch_mr/S_AXI_CTRL/Reg] -force - assign_bd_address -offset 0x000400000000 -range 0x000100000000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axis_tproc64x32_x8_0/s_axi/reg0] -force - assign_bd_address -offset 0x000500000000 -range 0x000100000000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs ddr4_0/C0_DDR4_MEMORY_MAP/C0_DDR4_ADDRESS_BLOCK] -force - assign_bd_address -offset 0xA0257000 -range 0x00001000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mr_buffer_et_0/s00_axi/reg0] -force - assign_bd_address -offset 0xA0280000 -range 0x00040000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs usp_rf_data_converter_0/s_axi/Reg] -force - - # Exclude Address Segments - exclude_bd_addr_seg -target_address_space [get_bd_addr_spaces axi_dma_avg/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_HIGH] - exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces axi_dma_avg/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_LPS_OCM] - exclude_bd_addr_seg -target_address_space [get_bd_addr_spaces axi_dma_buf/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_HIGH] - exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces axi_dma_buf/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_LPS_OCM] - exclude_bd_addr_seg -target_address_space [get_bd_addr_spaces axi_dma_gen/Data_MM2S] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_HIGH] - exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces axi_dma_gen/Data_MM2S] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_LPS_OCM] - exclude_bd_addr_seg -target_address_space [get_bd_addr_spaces axi_dma_mr/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_HIGH] - exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces axi_dma_mr/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_LPS_OCM] - exclude_bd_addr_seg -target_address_space [get_bd_addr_spaces axi_dma_tproc/Data_MM2S] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_HIGH] - exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces axi_dma_tproc/Data_MM2S] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_LPS_OCM] - exclude_bd_addr_seg -target_address_space [get_bd_addr_spaces axi_dma_tproc/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_DDR_HIGH] - exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces axi_dma_tproc/Data_S2MM] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP0/HPC0_LPS_OCM] - - # Perform GUI Layout - regenerate_bd_layout -layout_string { - "ActiveEmotionalView":"Default View", - "Default View_ScaleFactor":"0.322782", - "Default View_TopLeft":"-1131,-1242", - "ExpandedHierarchyInLayout":"", - "guistr":"# # String gsaved with Nlview 7.0r4 2019-12-20 bk=1.5203 VDI=41 GEI=36 GUI=JA:10.0 TLS -# -string -flagsOSRD -preplace port adc0_clk -pg 1 -lvl 17 -x 7420 -y 2060 -defaultsOSRD -right -preplace port dac0_clk -pg 1 -lvl 17 -x 7420 -y 2100 -defaultsOSRD -right -preplace port dac1_clk -pg 1 -lvl 17 -x 7420 -y 2080 -defaultsOSRD -right -preplace port ddr4_pl -pg 1 -lvl 17 -x 7420 -y 1210 -defaultsOSRD -preplace port sys_clk_ddr4 -pg 1 -lvl 17 -x 7420 -y 1140 -defaultsOSRD -right -preplace port sysref_in -pg 1 -lvl 17 -x 7420 -y 2040 -defaultsOSRD -right -preplace port vin0 -pg 1 -lvl 17 -x 7420 -y 1990 -defaultsOSRD -right -preplace port vin1 -pg 1 -lvl 17 -x 7420 -y 2010 -defaultsOSRD -right -preplace port vout0 -pg 1 -lvl 17 -x 7420 -y 1640 -defaultsOSRD -preplace port vout1 -pg 1 -lvl 17 -x 7420 -y 1660 -defaultsOSRD -preplace port vout2 -pg 1 -lvl 17 -x 7420 -y 1680 -defaultsOSRD -preplace port vout3 -pg 1 -lvl 17 -x 7420 -y 1700 -defaultsOSRD -preplace port vout4 -pg 1 -lvl 17 -x 7420 -y 1720 -defaultsOSRD -preplace port vout5 -pg 1 -lvl 17 -x 7420 -y 1740 -defaultsOSRD -preplace port vout6 -pg 1 -lvl 17 -x 7420 -y 1760 -defaultsOSRD -preplace port port-id_PMOD0_0_LS -pg 1 -lvl 17 -x 7420 -y 3360 -defaultsOSRD -preplace port port-id_PMOD0_1_LS -pg 1 -lvl 17 -x 7420 -y 3380 -defaultsOSRD -preplace port port-id_PMOD0_2_LS -pg 1 -lvl 17 -x 7420 -y 3400 -defaultsOSRD -preplace port port-id_PMOD0_3_LS -pg 1 -lvl 17 -x 7420 -y 3420 -defaultsOSRD -preplace port port-id_PMOD0_4_LS -pg 1 -lvl 17 -x 7420 -y 3440 -defaultsOSRD -preplace port port-id_PMOD0_5_LS -pg 1 -lvl 17 -x 7420 -y 3460 -defaultsOSRD -preplace port port-id_PMOD0_6_LS -pg 1 -lvl 17 -x 7420 -y 3480 -defaultsOSRD -preplace port port-id_PMOD0_7_LS -pg 1 -lvl 17 -x 7420 -y 3500 -defaultsOSRD -preplace port port-id_PMOD1_0_LS -pg 1 -lvl 0 -x -40 -y 2350 -defaultsOSRD -preplace inst axi_bram_ctrl_0 -pg 1 -lvl 1 -x 150 -y 2430 -defaultsOSRD -preplace inst axi_bram_ctrl_0_bram -pg 1 -lvl 2 -x 820 -y 2610 -defaultsOSRD -preplace inst axi_dma_avg -pg 1 -lvl 13 -x 6160 -y 440 -defaultsOSRD -preplace inst axi_dma_buf -pg 1 -lvl 13 -x 6160 -y 720 -defaultsOSRD -resize 320 156 -preplace inst axi_dma_gen -pg 1 -lvl 2 -x 820 -y 1350 -defaultsOSRD -preplace inst axi_dma_tproc -pg 1 -lvl 2 -x 820 -y 1900 -defaultsOSRD -preplace inst axi_smc -pg 1 -lvl 3 -x 1280 -y -420 -defaultsOSRD -preplace inst axi_smc_1 -pg 1 -lvl 15 -x 6840 -y 1290 -defaultsOSRD -preplace inst axis_avg_buffer_0 -pg 1 -lvl 11 -x 5290 -y 400 -defaultsOSRD -preplace inst axis_avg_buffer_1 -pg 1 -lvl 11 -x 5290 -y 730 -defaultsOSRD -resize 220 236 -preplace inst axis_broadcaster_0 -pg 1 -lvl 10 -x 4830 -y 460 -defaultsOSRD -preplace inst axis_broadcaster_1 -pg 1 -lvl 10 -x 4830 -y 810 -defaultsOSRD -resize 280 116 -preplace inst axis_buffer_ddr_v1_0 -pg 1 -lvl 14 -x 6560 -y 1270 -defaultsOSRD -preplace inst axis_cdcsync_v1_0 -pg 1 -lvl 3 -x 1280 -y 1870 -defaultsOSRD -preplace inst axis_cdcsync_v1_1 -pg 1 -lvl 3 -x 1280 -y 2330 -defaultsOSRD -preplace inst axis_clk_cnvrt_avg_0 -pg 1 -lvl 12 -x 5730 -y -20 -defaultsOSRD -preplace inst axis_clk_cnvrt_avg_1 -pg 1 -lvl 12 -x 5730 -y 160 -defaultsOSRD -resize 220 156 -preplace inst axis_clock_converter_0 -pg 1 -lvl 13 -x 6160 -y 1290 -defaultsOSRD -preplace inst axis_dwidth_converter_0 -pg 1 -lvl 12 -x 5730 -y 1300 -defaultsOSRD -preplace inst axis_readout_v2_0 -pg 1 -lvl 9 -x 4520 -y 430 -defaultsOSRD -preplace inst axis_readout_v2_1 -pg 1 -lvl 9 -x 4520 -y 780 -defaultsOSRD -preplace inst axis_register_slice_0 -pg 1 -lvl 8 -x 4190 -y 460 -defaultsOSRD -preplace inst axis_register_slice_1 -pg 1 -lvl 8 -x 4190 -y 810 -defaultsOSRD -resize 180 116 -preplace inst axis_set_reg_0 -pg 1 -lvl 6 -x 3080 -y 3510 -defaultsOSRD -preplace inst axis_signal_gen_v6_0 -pg 1 -lvl 6 -x 3080 -y 1430 -defaultsOSRD -preplace inst axis_signal_gen_v6_1 -pg 1 -lvl 6 -x 3080 -y 1690 -defaultsOSRD -resize 220 236 -preplace inst axis_signal_gen_v6_2 -pg 1 -lvl 6 -x 3080 -y 1950 -defaultsOSRD -resize 220 236 -preplace inst axis_signal_gen_v6_3 -pg 1 -lvl 6 -x 3080 -y 2360 -defaultsOSRD -resize 220 236 -preplace inst axis_signal_gen_v6_4 -pg 1 -lvl 6 -x 3080 -y 2620 -defaultsOSRD -resize 220 236 -preplace inst axis_signal_gen_v6_5 -pg 1 -lvl 6 -x 3080 -y 2880 -defaultsOSRD -resize 220 236 -preplace inst axis_signal_gen_v6_6 -pg 1 -lvl 6 -x 3080 -y 3140 -defaultsOSRD -resize 220 236 -preplace inst axis_switch_avg -pg 1 -lvl 12 -x 5730 -y 420 -defaultsOSRD -preplace inst axis_switch_buf -pg 1 -lvl 12 -x 5730 -y 730 -defaultsOSRD -resize 240 196 -preplace inst axis_switch_ddr -pg 1 -lvl 11 -x 5290 -y 1280 -defaultsOSRD -preplace inst axis_switch_gen -pg 1 -lvl 3 -x 1280 -y 1390 -defaultsOSRD -preplace inst clk_adc0_x2 -pg 1 -lvl 4 -x 1840 -y 580 -defaultsOSRD -preplace inst ddr4_0 -pg 1 -lvl 16 -x 7220 -y 1270 -defaultsOSRD -preplace inst ps8_0_axi_periph -pg 1 -lvl 5 -x 2530 -y -580 -defaultsOSRD -preplace inst rst_100 -pg 1 -lvl 4 -x 1840 -y -170 -defaultsOSRD -preplace inst rst_adc0 -pg 1 -lvl 4 -x 1840 -y 10 -defaultsOSRD -resize 320 156 -preplace inst rst_adc0_x2 -pg 1 -lvl 4 -x 1840 -y 730 -defaultsOSRD -resize 320 156 -preplace inst rst_dac0 -pg 1 -lvl 4 -x 1840 -y 190 -defaultsOSRD -resize 320 156 -preplace inst rst_dac1 -pg 1 -lvl 4 -x 1840 -y 370 -defaultsOSRD -resize 320 156 -preplace inst rst_ddr4 -pg 1 -lvl 4 -x 1840 -y 910 -defaultsOSRD -preplace inst usp_rf_data_converter_0 -pg 1 -lvl 7 -x 3820 -y 1720 -defaultsOSRD -preplace inst vect2bits_16_0 -pg 1 -lvl 12 -x 5730 -y 3510 -defaultsOSRD -preplace inst xlconstant_0 -pg 1 -lvl 1 -x 150 -y 2550 -defaultsOSRD -preplace inst xlconstant_1 -pg 1 -lvl 1 -x 150 -y 2660 -defaultsOSRD -resize 140 88 -preplace inst xlconstant_2 -pg 1 -lvl 1 -x 150 -y 2770 -defaultsOSRD -resize 140 88 -preplace inst xlconstant_3 -pg 1 -lvl 1 -x 150 -y 2880 -defaultsOSRD -resize 140 88 -preplace inst zynq_ultra_ps_e_0 -pg 1 -lvl 4 -x 1840 -y -380 -defaultsOSRD -preplace inst axis_switch_mr -pg 1 -lvl 11 -x 5290 -y 970 -defaultsOSRD -preplace inst mr_buffer_et_0 -pg 1 -lvl 12 -x 5730 -y 970 -defaultsOSRD -preplace inst axi_dma_mr -pg 1 -lvl 13 -x 6160 -y 960 -defaultsOSRD -preplace inst xlconcat_0 -pg 1 -lvl 2 -x 820 -y -140 -defaultsOSRD -preplace inst axis_tproc64x32_x8_0 -pg 1 -lvl 2 -x 820 -y 2250 -defaultsOSRD -preplace inst axi_intc_0 -pg 1 -lvl 3 -x 1280 -y -140 -defaultsOSRD -preplace netloc PMOD1_0_LS_1 1 0 2 N 2350 300J -preplace netloc axi_bram_ctrl_0_bram_doutb 1 1 1 370 2400n -preplace netloc axi_dma_avg_s2mm_introut 1 1 13 330 1110 N 1110 NJ 1110 NJ 1110 NJ 1110 NJ 1110 NJ 1110 NJ 1110 NJ 1110 NJ 1110 NJ 1110 NJ 1110 6380 -preplace netloc axi_dma_buf_s2mm_introut 1 1 13 360 1090 N 1090 NJ 1090 2240J 680 NJ 680 NJ 680 NJ 680 4300J 610 NJ 610 4990J 560 5490J 550 NJ 550 6340 -preplace netloc axi_dma_gen_mm2s_introut 1 1 2 370 -260 1000 -preplace netloc axi_dma_mr_s2mm_introut 1 1 13 370 1070 N 1070 NJ 1070 2250J 690 NJ 690 NJ 690 NJ 690 4320J 620 NJ 620 5030J 570 5520J 560 NJ 560 6350 -preplace netloc axi_dma_tproc_mm2s_introut 1 1 2 360 -280 1020 -preplace netloc axi_dma_tproc_s2mm_introut 1 1 2 380 -250 1010 -preplace netloc axi_intc_0_irq 1 3 1 1430 -340n -preplace netloc axis_set_reg_0_dout 1 6 6 N 3510 N 3510 N 3510 N 3510 N 3510 N -preplace netloc axis_tproc64x32_x8_0_pmem_addr 1 1 2 380 2470 1000 -preplace netloc clk_adc0_x2_clk_out1 1 3 10 1520 1060 2190 1060 N 1060 3320 1020 3980 710 4390 640 4660 650 5080 1090 5560 1210 5900 -preplace netloc clk_adc0_x2_locked 1 3 2 1530 1040 2150 -preplace netloc ddr4_0_c0_ddr4_ui_clk 1 3 14 1470 1130 NJ 1130 NJ 1130 NJ 1130 NJ 1130 4300 1160 NJ 1160 NJ 1160 NJ 1160 5910J 1180 6430 1150 6700 1150 N 1150 7400 -preplace netloc ddr4_0_c0_ddr4_ui_clk_sync_rst 1 3 14 1490 1140 N 1140 N 1140 3270 1300 N 1300 N 1300 N 1300 4990 1400 N 1400 N 1400 N 1400 N 1400 N 1400 7400 -preplace netloc rst_100_bus_struct_reset 1 4 12 2250J 240 NJ 240 NJ 240 NJ 240 N 240 NJ 240 NJ 240 5480J 280 NJ 280 N 280 N 280 6990 -preplace netloc rst_adc0_peripheral_reset 1 3 2 1510 1050 2170 -preplace netloc rst_adc0_x2_peripheral_aresetn 1 4 9 2210 1010 N 1010 3290 1010 3990 720 4380 650 4650J 680 5090 1100 5570 1220 5920 -preplace netloc rst_dac0_peripheral_aresetn 1 1 11 370 2040 1090J 1270 N 1270 2230 1270 2800 1270 3260J 210 3960 200 N 200 NJ 200 N 200 5430 -preplace netloc rst_dac1_peripheral_aresetn 1 2 5 1120 2090 N 2090 2220 2090 2830 2090 3320J -preplace netloc rst_ddr4_0_333M_peripheral_aresetn 1 4 12 2200 1000 N 1000 N 1000 4010 730 4360 660 N 660 5070 590 N 590 5930 1140 6410 1140 6680 1200 6980 -preplace netloc rst_ps8_0_99M_peripheral_aresetn 1 0 14 0 2320 300 1440 1080 1150 N 1150 2260J 1150 2730 1170 3250 1170 N 1170 4340 1170 N 1170 5000 250 5510 600 5980 1100 6390 -preplace netloc usp_rf_data_converter_0_clk_adc0 1 3 5 1480 1080 NJ 1080 N 1080 NJ 1080 3960 -preplace netloc usp_rf_data_converter_0_clk_dac0 1 1 11 360 2460 1110 2000 1430 1870 NJ 1870 2840 1290 3220J 1290 4000 210 N 210 NJ 210 N 210 5460 -preplace netloc usp_rf_data_converter_0_clk_dac1 1 2 6 1130 2100 1460 2100 NJ 2100 2820 2100 3340J 2000 3990 -preplace netloc vect2bits_16_0_dout0 1 12 5 N 3360 N 3360 N 3360 N 3360 N -preplace netloc vect2bits_16_0_dout1 1 12 5 N 3380 N 3380 N 3380 N 3380 N -preplace netloc vect2bits_16_0_dout2 1 12 5 N 3400 N 3400 N 3400 N 3400 N -preplace netloc vect2bits_16_0_dout3 1 12 5 N 3420 N 3420 N 3420 N 3420 N -preplace netloc vect2bits_16_0_dout4 1 12 5 NJ 3440 N 3440 N 3440 NJ 3440 N -preplace netloc vect2bits_16_0_dout5 1 12 5 NJ 3460 N 3460 N 3460 NJ 3460 N -preplace netloc vect2bits_16_0_dout6 1 12 5 NJ 3480 N 3480 N 3480 NJ 3480 N -preplace netloc vect2bits_16_0_dout7 1 12 5 NJ 3500 N 3500 N 3500 NJ 3500 N -preplace netloc vect2bits_16_0_dout8 1 12 2 5970 1190 6400 -preplace netloc vect2bits_16_0_dout9 1 11 2 5570 610 5890 -preplace netloc vect2bits_16_0_dout14 1 10 3 5120 2320 N 2320 5880 -preplace netloc vect2bits_16_0_dout15 1 10 3 5130 2330 N 2330 5870 -preplace netloc xlconcat_0_dout 1 2 1 1070 -140n -preplace netloc xlconstant_0_dout 1 1 1 320 2550n -preplace netloc xlconstant_1_dout 1 1 1 340 2650n -preplace netloc xlconstant_2_dout 1 1 1 320 2670n -preplace netloc xlconstant_3_dout 1 1 1 370 2690n -preplace netloc zynq_ultra_ps_e_0_pl_clk0 1 0 14 -10 2300 290 1450 1030 -550 1460 -550 2280 60 2750 1050 3310 1050 N 1050 4310 670 N 670 5040 260 5540 580 5970 1090 6420 -preplace netloc zynq_ultra_ps_e_0_pl_resetn0 1 3 2 1500 1030 2160 -preplace netloc adc0_clk_1 1 6 11 3370 2060 N 2060 N 2060 N 2060 N 2060 N 2060 N 2060 N 2060 N 2060 N 2060 N -preplace netloc axi_bram_ctrl_0_BRAM_PORTA 1 1 1 320 2430n -preplace netloc axi_dma_0_M_AXIS_MM2S 1 1 2 380 2020 1000 -preplace netloc axi_dma_0_M_AXI_MM2S 1 2 1 1040 -490n -preplace netloc axi_dma_0_M_AXI_S2MM 1 2 1 1060J -470n -preplace netloc axi_dma_0_M_AXI_S2MM1 1 2 12 1110 -280 N -280 2230 70 2920 220 N 220 N 220 N 220 N 220 N 220 5560 270 N 270 6370 -preplace netloc axi_dma_1_M_AXIS_MM2S 1 2 1 N 1340 -preplace netloc axi_dma_1_M_AXI_MM2S 1 2 1 1050J -450n -preplace netloc axi_dma_avg_M_AXI_S2MM 1 2 12 1080 -1230 N -1230 N -1230 N -1230 N -1230 N -1230 N -1230 N -1230 N -1230 N -1230 N -1230 6340 -preplace netloc axi_dma_buf_M_AXI_S2MM 1 2 12 1090 1120 N 1120 N 1120 N 1120 N 1120 N 1120 N 1120 N 1120 N 1120 N 1120 N 1120 6360 -preplace netloc axi_smc_1_M00_AXI 1 15 1 7000 1260n -preplace netloc axi_smc_M00_AXI 1 3 1 N -420 -preplace netloc axis_avg_buffer_0_m0_axis 1 11 1 5460 360n -preplace netloc axis_avg_buffer_0_m1_axis 1 11 1 5460 400n -preplace netloc axis_avg_buffer_0_m2_axis 1 11 1 5450 -60n -preplace netloc axis_avg_buffer_1_m0_axis 1 11 1 5480 380n -preplace netloc axis_avg_buffer_1_m1_axis 1 11 1 5460 690n -preplace netloc axis_avg_buffer_1_m2_axis 1 11 1 5440 120n -preplace netloc axis_broadcaster_0_M00_AXIS 1 10 1 4990 320n -preplace netloc axis_broadcaster_0_M01_AXIS 1 10 1 5010 470n -preplace netloc axis_broadcaster_1_M00_AXIS 1 10 1 5110 650n -preplace netloc axis_broadcaster_1_M01_AXIS 1 10 1 4990 820n -preplace netloc axis_buffer_ddr_v1_0_m_axi 1 14 1 N 1280 -preplace netloc axis_cdcsync_v1_0_m0_axis 1 3 3 1440 1370 N 1370 NJ -preplace netloc axis_cdcsync_v1_0_m1_axis 1 3 3 1520 1630 NJ 1630 N -preplace netloc axis_cdcsync_v1_0_m2_axis 1 3 3 N 1880 NJ 1880 2770 -preplace netloc axis_cdcsync_v1_1_m0_axis 1 3 3 N 2300 NJ 2300 N -preplace netloc axis_cdcsync_v1_1_m1_axis 1 3 3 N 2320 NJ 2320 2720 -preplace netloc axis_cdcsync_v1_1_m2_axis 1 3 3 N 2340 NJ 2340 2700 -preplace netloc axis_cdcsync_v1_1_m3_axis 1 3 3 N 2360 NJ 2360 2690 -preplace netloc axis_clk_cnvrt_avg_0_M_AXIS 1 1 12 310 -270 NJ -270 N -270 2270J 80 2900 230 NJ 230 N 230 N 230 NJ 230 N 230 5550 260 5890 -preplace netloc axis_clk_cnvrt_avg_1_M_AXIS 1 1 12 340 1010 NJ 1010 N 1010 2180J 990 N 990 NJ 990 3960 700 4350 630 NJ 630 5060 580 5530 570 5870 -preplace netloc axis_clock_converter_0_M_AXIS 1 13 1 6360 1210n -preplace netloc axis_dwidth_converter_0_M_AXIS 1 12 1 5980 1250n -preplace netloc axis_readout_v2_0_m0_axis 1 9 2 4670 640 5030 -preplace netloc axis_readout_v2_0_m1_axis 1 9 1 N 440 -preplace netloc axis_readout_v2_1_m0_axis 1 9 2 4640 930 N -preplace netloc axis_readout_v2_1_m1_axis 1 9 1 N 790 -preplace netloc axis_register_slice_0_M_AXIS 1 8 1 4300 380n -preplace netloc axis_register_slice_1_M_AXIS 1 8 1 4370 730n -preplace netloc axis_signal_gen_v6_0_m_axis 1 6 1 3230 1430n -preplace netloc axis_signal_gen_v6_1_m_axis 1 6 1 3210 1550n -preplace netloc axis_signal_gen_v6_2_m_axis 1 6 1 3230 1570n -preplace netloc axis_signal_gen_v6_3_m_axis 1 6 1 3240 1590n -preplace netloc axis_signal_gen_v6_4_m_axis 1 6 1 3300 1610n -preplace netloc axis_signal_gen_v6_5_m_axis 1 6 1 3330 1630n -preplace netloc axis_signal_gen_v6_6_m_axis 1 6 1 3350 1650n -preplace netloc axis_switch_0_M00_AXIS 1 3 3 N 1330 N 1330 2880 -preplace netloc axis_switch_0_M01_AXIS 1 3 3 N 1350 N 1350 2870 -preplace netloc axis_switch_0_M02_AXIS 1 3 3 1420 1380 N 1380 2850 -preplace netloc axis_switch_0_M03_AXIS 1 3 3 1450 1400 N 1400 2790 -preplace netloc axis_switch_0_M04_AXIS 1 3 3 1420 1420 N 1420 2760 -preplace netloc axis_switch_0_M05_AXIS 1 3 3 1420 1440 N 1440 2740 -preplace netloc axis_switch_0_M06_AXIS 1 3 3 1420 1460 N 1460 2710 -preplace netloc axis_switch_avg_M00_AXIS 1 12 1 N 420 -preplace netloc axis_switch_buf_M00_AXIS 1 12 1 5940 700n -preplace netloc axis_switch_ddr_M00_AXIS 1 11 1 N 1280 -preplace netloc axis_switch_mr_M00_AXIS 1 11 1 5450 890n -preplace netloc axis_tproc64x32_x8_0_m0_axis 1 1 2 370 2030 1000 -preplace netloc axis_tproc64x32_x8_0_m1_axis 1 2 4 N 2180 N 2180 N 2180 2680 -preplace netloc axis_tproc64x32_x8_0_m2_axis 1 2 1 1070 1800n -preplace netloc axis_tproc64x32_x8_0_m3_axis 1 2 1 1080 1820n -preplace netloc axis_tproc64x32_x8_0_m4_axis 1 2 1 1100 1840n -preplace netloc axis_tproc64x32_x8_0_m5_axis 1 2 1 N 2260 -preplace netloc axis_tproc64x32_x8_0_m6_axis 1 2 1 N 2280 -preplace netloc axis_tproc64x32_x8_0_m7_axis 1 2 1 N 2300 -preplace netloc axis_tproc64x32_x8_0_m8_axis 1 2 1 N 2320 -preplace netloc dac0_clk_1 1 6 11 3360 2100 N 2100 N 2100 N 2100 N 2100 N 2100 N 2100 N 2100 N 2100 N 2100 N -preplace netloc dac1_clk_1 1 6 11 3380 2080 N 2080 N 2080 N 2080 N 2080 N 2080 N 2080 N 2080 N 2080 N 2080 N -preplace netloc ddr4_0_C0_DDR4 1 16 1 N 1210 -preplace netloc default_sysclk1_300mhz_1 1 15 2 7000 1140 N -preplace netloc mr_buffer_et_0_m00_axis 1 12 1 5960 940n -preplace netloc ps8_0_axi_periph_M00_AXI 1 1 5 350 470 N 470 N 470 NJ 470 2710 -preplace netloc ps8_0_axi_periph_M01_AXI 1 1 5 320 480 N 480 N 480 NJ 480 2700 -preplace netloc ps8_0_axi_periph_M02_AXI 1 5 1 2940 -800n -preplace netloc ps8_0_axi_periph_M03_AXI 1 5 1 2930 -780n -preplace netloc ps8_0_axi_periph_M04_AXI 1 5 1 2910 -760n -preplace netloc ps8_0_axi_periph_M05_AXI 1 5 1 2890 -740n -preplace netloc ps8_0_axi_periph_M06_AXI 1 1 5 380 500 N 500 N 500 NJ 500 2730 -preplace netloc ps8_0_axi_periph_M07_AXI 1 2 4 1100 510 N 510 NJ 510 2720 -preplace netloc ps8_0_axi_periph_M08_AXI 1 5 2 N -680 3280 -preplace netloc ps8_0_axi_periph_M09_AXI 1 5 6 N -660 N -660 N -660 N -660 N -660 5120 -preplace netloc ps8_0_axi_periph_M10_AXI 1 5 6 N -640 N -640 N -640 N -640 N -640 5100 -preplace netloc ps8_0_axi_periph_M11_AXI 1 5 1 2860 -620n -preplace netloc ps8_0_axi_periph_M12_AXI 1 5 1 2810 -600n -preplace netloc ps8_0_axi_periph_M13_AXI 1 0 6 -20 490 N 490 NJ 490 N 490 NJ 490 2680 -preplace netloc ps8_0_axi_periph_M14_AXI 1 5 1 2780 -560n -preplace netloc ps8_0_axi_periph_M15_AXI 1 5 4 N -540 N -540 N -540 4380 -preplace netloc ps8_0_axi_periph_M16_AXI 1 5 4 N -520 N -520 N -520 4330 -preplace netloc ps8_0_axi_periph_M17_AXI 1 5 7 N -500 NJ -500 N -500 N -500 N -500 N -500 5570 -preplace netloc ps8_0_axi_periph_M18_AXI 1 5 7 N -480 NJ -480 N -480 N -480 N -480 N -480 5500 -preplace netloc ps8_0_axi_periph_M19_AXI 1 5 8 N -460 N -460 N -460 N -460 N -460 N -460 N -460 5980 -preplace netloc ps8_0_axi_periph_M20_AXI 1 5 8 N -440 N -440 N -440 N -440 N -440 N -440 N -440 5960 -preplace netloc ps8_0_axi_periph_M21_AXI 1 5 9 N -420 NJ -420 NJ -420 N -420 NJ -420 NJ -420 N -420 N -420 6440 -preplace netloc ps8_0_axi_periph_M22_AXI 1 5 6 N -400 NJ -400 N -400 N -400 N -400 5020 -preplace netloc ps8_0_axi_periph_M23_AXI 1 5 6 N -380 N -380 N -380 N -380 N -380 5050 -preplace netloc ps8_0_axi_periph_M24_AXI 1 5 7 N -360 N -360 N -360 N -360 N -360 N -360 5470 -preplace netloc ps8_0_axi_periph_M25_AXI 1 5 8 N -340 N -340 N -340 N -340 N -340 N -340 N -340 5950 -preplace netloc ps8_0_axi_periph_M26_AXI 1 2 4 1110 1020 N 1020 N 1020 2690 -preplace netloc sysref_in_1 1 6 11 3410 2040 N 2040 N 2040 N 2040 N 2040 N 2040 N 2040 N 2040 N 2040 N 2040 N -preplace netloc usp_rf_data_converter_0_m00_axis 1 7 1 3970 440n -preplace netloc usp_rf_data_converter_0_m02_axis 1 7 1 4020 790n -preplace netloc usp_rf_data_converter_0_vout00 1 7 10 N 1640 N 1640 N 1640 N 1640 N 1640 N 1640 N 1640 N 1640 N 1640 N -preplace netloc usp_rf_data_converter_0_vout01 1 7 10 N 1660 N 1660 N 1660 N 1660 N 1660 N 1660 N 1660 N 1660 N 1660 N -preplace netloc usp_rf_data_converter_0_vout02 1 7 10 N 1680 N 1680 N 1680 N 1680 N 1680 N 1680 N 1680 N 1680 N 1680 N -preplace netloc usp_rf_data_converter_0_vout10 1 7 10 N 1700 N 1700 N 1700 N 1700 N 1700 N 1700 N 1700 N 1700 N 1700 N -preplace netloc usp_rf_data_converter_0_vout11 1 7 10 N 1720 N 1720 N 1720 N 1720 N 1720 N 1720 N 1720 N 1720 N 1720 N -preplace netloc usp_rf_data_converter_0_vout12 1 7 10 N 1740 N 1740 N 1740 N 1740 N 1740 N 1740 N 1740 N 1740 N 1740 N -preplace netloc usp_rf_data_converter_0_vout13 1 7 10 N 1760 N 1760 N 1760 N 1760 N 1760 N 1760 N 1760 N 1760 N 1760 N -preplace netloc vin0_1 1 6 11 3390 1990 N 1990 N 1990 N 1990 N 1990 N 1990 N 1990 N 1990 N 1990 N 1990 N -preplace netloc vin1_1 1 6 11 3400 2010 N 2010 N 2010 N 2010 N 2010 N 2010 N 2010 N 2010 N 2010 N 2010 N -preplace netloc zynq_ultra_ps_e_0_M_AXI_HPM0_FPD 1 4 1 2170J -1160n -preplace netloc zynq_ultra_ps_e_0_M_AXI_HPM1_FPD 1 4 11 2160J -1220 NJ -1220 NJ -1220 NJ -1220 N -1220 NJ -1220 NJ -1220 NJ -1220 NJ -1220 N -1220 6690 -levelinfo -pg 1 -40 150 820 1280 1840 2530 3080 3820 4190 4520 4830 5290 5730 6160 6560 6840 7220 7420 -pagesize -pg 1 -db -bbox -sgen -190 -1790 7570 4060 -" -} - - # Restore current instance - current_bd_instance $oldCurInst - - validate_bd_design - save_bd_design -} -# End of create_root_design() - - -################################################################## -# MAIN FLOW -################################################################## - -create_root_design "" - - diff --git a/firmware/projects/qick_tprocv1_111_standard/ios.xdc b/firmware/projects/qick_tprocv1_111_standard/ios.xdc deleted file mode 100644 index ec196598e..000000000 --- a/firmware/projects/qick_tprocv1_111_standard/ios.xdc +++ /dev/null @@ -1,33 +0,0 @@ -set_property PACKAGE_PIN C17 [get_ports "PMOD0_0_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD0_0_LS"]; -set_property PACKAGE_PIN M18 [get_ports "PMOD0_1_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD0_1_LS"]; -set_property PACKAGE_PIN H16 [get_ports "PMOD0_2_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD0_2_LS"]; -set_property PACKAGE_PIN H17 [get_ports "PMOD0_3_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD0_3_LS"]; -set_property PACKAGE_PIN J16 [get_ports "PMOD0_4_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD0_4_LS"]; -set_property PACKAGE_PIN K16 [get_ports "PMOD0_5_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD0_5_LS"]; -set_property PACKAGE_PIN H15 [get_ports "PMOD0_6_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD0_6_LS"]; -set_property PACKAGE_PIN J15 [get_ports "PMOD0_7_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD0_7_LS"]; - -set_property PACKAGE_PIN L14 [get_ports "PMOD1_0_LS"]; -set_property IOSTANDARD LVCMOS12 [get_ports "PMOD1_0_LS"]; -#set_property PACKAGE_PIN L15 [get_ports "PMOD1_1_LS"]; -#set_property IOSTANDARD LVCMOS12 [get_ports "PMOD1_1_LS"]; -#set_property PACKAGE_PIN M13 [get_ports "PMOD1_2_LS"]; -#set_property IOSTANDARD LVCMOS12 [get_ports "PMOD1_2_LS"]; -#set_property PACKAGE_PIN N13 [get_ports "PMOD1_3_LS"]; -#set_property IOSTANDARD LVCMOS12 [get_ports "PMOD1_3_LS"]; -#set_property PACKAGE_PIN M15 [get_ports "PMOD1_4_LS"]; -#set_property IOSTANDARD LVCMOS12 [get_ports "PMOD1_4_LS"]; -#set_property PACKAGE_PIN N15 [get_ports "PMOD1_5_LS"]; -#set_property IOSTANDARD LVCMOS12 [get_ports "PMOD1_5_LS"]; -#set_property PACKAGE_PIN M14 [get_ports "PMOD1_6_LS"]; -#set_property IOSTANDARD LVCMOS12 [get_ports "PMOD1_6_LS"]; -#set_property PACKAGE_PIN N14 [get_ports "PMOD1_7_LS"]; -#set_property IOSTANDARD LVCMOS12 [get_ports "PMOD1_7_LS"]; diff --git a/firmware/projects/qick_tprocv1_111_standard/out/qick_111.bit b/firmware/projects/qick_tprocv1_111_standard/out/qick_111.bit deleted file mode 120000 index 32c82e18f..000000000 --- a/firmware/projects/qick_tprocv1_111_standard/out/qick_111.bit +++ /dev/null @@ -1 +0,0 @@ -../top/top.runs/impl_1/d_1_wrapper.bit \ No newline at end of file diff --git a/firmware/projects/qick_tprocv1_111_standard/out/qick_111.hwh b/firmware/projects/qick_tprocv1_111_standard/out/qick_111.hwh deleted file mode 120000 index 2ecfd9ba7..000000000 --- a/firmware/projects/qick_tprocv1_111_standard/out/qick_111.hwh +++ /dev/null @@ -1 +0,0 @@ -../top/top.gen/sources_1/bd/d_1/hw_handoff/d_1.hwh \ No newline at end of file diff --git a/firmware/projects/qick_tprocv1_111_standard/out/qick_111.ltx b/firmware/projects/qick_tprocv1_111_standard/out/qick_111.ltx deleted file mode 120000 index 87dc36017..000000000 --- a/firmware/projects/qick_tprocv1_111_standard/out/qick_111.ltx +++ /dev/null @@ -1 +0,0 @@ -../top/top.runs/impl_1/d_1_wrapper.ltx \ No newline at end of file diff --git a/firmware/projects/qick_tprocv1_111_standard/proj.tcl b/firmware/projects/qick_tprocv1_111_standard/proj.tcl deleted file mode 100644 index f6fbbfb74..000000000 --- a/firmware/projects/qick_tprocv1_111_standard/proj.tcl +++ /dev/null @@ -1,95 +0,0 @@ -# Set the reference directory for source file relative paths (by default the value is script directory path) -set origin_dir "." - -# Use origin directory path location variable, if specified in the tcl shell -if { [info exists ::origin_dir_loc] } { - set origin_dir $::origin_dir_loc -} - -# Set the project name -set _xil_proj_name_ "top" - -# Set the directory path for the original project from where this script was exported -set orig_proj_dir "[file normalize "$origin_dir/"]" - -# Create project -create_project ${_xil_proj_name_} ./${_xil_proj_name_} -part xczu28dr-ffvg1517-2-e - -# Set the directory path for the new project -set proj_dir [get_property directory [current_project]] - -# Set project properties -set obj [current_project] -set_property -name "board_part" -value "xilinx.com:zcu111:part0:1.4" -objects $obj -set_property -name "corecontainer.enable" -value "1" -objects $obj -set_property -name "default_lib" -value "xil_defaultlib" -objects $obj -set_property -name "enable_core_container" -value "1" -objects $obj -set_property -name "enable_resource_estimation" -value "0" -objects $obj -set_property -name "dsa.board_id" -value "zcu111" -objects $obj -set_property -name "dsa.description" -value "Vivado generated DSA" -objects $obj -set_property -name "dsa.dr_bd_base_address" -value "0" -objects $obj -set_property -name "dsa.emu_dir" -value "emu" -objects $obj -set_property -name "dsa.flash_interface_type" -value "bpix16" -objects $obj -set_property -name "dsa.flash_offset_address" -value "0" -objects $obj -set_property -name "dsa.flash_size" -value "1024" -objects $obj -set_property -name "dsa.host_architecture" -value "x86_64" -objects $obj -set_property -name "dsa.host_interface" -value "pcie" -objects $obj -set_property -name "dsa.num_compute_units" -value "60" -objects $obj -set_property -name "dsa.platform_state" -value "pre_synth" -objects $obj -set_property -name "dsa.vendor" -value "xilinx" -objects $obj -set_property -name "dsa.version" -value "0.0" -objects $obj -set_property -name "enable_vhdl_2008" -value "1" -objects $obj -set_property -name "ip_cache_permissions" -value "read write" -objects $obj -set_property -name "ip_output_repo" -value "$proj_dir/${_xil_proj_name_}.cache/ip" -objects $obj -set_property -name "mem.enable_memory_map_generation" -value "1" -objects $obj -set_property -name "platform.board_id" -value "zcu111" -objects $obj -set_property -name "revised_directory_structure" -value "1" -objects $obj -set_property -name "sim.central_dir" -value "$proj_dir/${_xil_proj_name_}.ip_user_files" -objects $obj -set_property -name "sim.ip.auto_export_scripts" -value "1" -objects $obj -set_property -name "simulator_language" -value "Mixed" -objects $obj -set_property -name "xpm_libraries" -value "XPM_CDC XPM_FIFO XPM_MEMORY" -objects $obj - -# Set IP repository paths -set obj [get_filesets sources_1] -set_property "ip_repo_paths" "[file normalize "$origin_dir/../../ip"]" $obj - -# Rebuild user ip_repo's index before adding any source files -update_ip_catalog -rebuild - -# Set 'sources_1' fileset object -set obj [get_filesets sources_1] -set files [list \ - [ file normalize "$origin_dir/../../hdl/vect2bits_16.v"] \ -] -add_files -norecurse -fileset $obj $files - -# Set 'constrs_1' fileset object -set obj [get_filesets constrs_1] - -# Add/Import constrs file and set constrs file properties -set files [list \ - [ file normalize "$origin_dir/timing.xdc"] \ - [ file normalize "$origin_dir/ios.xdc"] \ -] -add_files -fileset $obj $files - -# Source Block Design. -set file "[file normalize "$origin_dir/bd_2022-1.tcl"]" -source $file - -# Update compile order. -#update_compile_order -fileset sources_1 - -# Set sources_1 fileset object -set obj [get_filesets sources_1] - -# Create HDL Wrapper. -make_wrapper -files [get_files d_1.bd] -top - -# Add files to sources_1 fileset -set files [list \ - [file normalize "${origin_dir}/top/top.srcs/sources_1/bd/d_1/hdl/d_1_wrapper.v" ]\ -] -add_files -fileset $obj $files - -set_property strategy "Performance_Explore" [get_runs impl_1] diff --git a/firmware/projects/qick_tprocv1_111_standard/timing.xdc b/firmware/projects/qick_tprocv1_111_standard/timing.xdc deleted file mode 100644 index b04aa8531..000000000 --- a/firmware/projects/qick_tprocv1_111_standard/timing.xdc +++ /dev/null @@ -1,48 +0,0 @@ -set clk_axi [get_clocks -of_objects [get_nets -of_objects [get_pins d_1_i/usp_rf_data_converter_0/s_axi_aclk]]] -set clk_adc0_x2 [get_clocks -of_objects [get_nets -of_objects [get_pins d_1_i/clk_adc0_x2/clk_out1]]] -set clk_dac0 [get_clocks -of_objects [get_nets -of_objects [get_pins d_1_i/usp_rf_data_converter_0/clk_dac0]]] -set clk_dac1 [get_clocks -of_objects [get_nets -of_objects [get_pins d_1_i/usp_rf_data_converter_0/clk_dac1]]] -set clk_ddr4 [get_clocks -of_objects [get_nets -of_objects [get_pins d_1_i/ddr4_0/c0_ddr4_ui_clk]]] - -#set_clock_group -name clk_axi_to_fabric -asynchronous \ -# -group [get_clocks $clk_axi] \ -# -group [get_clocks $clk_dac0] \ -# -group [get_clocks $clk_dac1] \ -# -group [get_clocks $clk_adc0_x2] - -#set_clock_group -name clk_adc_to_adc_x2 -asynchronous \ -# -group [get_clocks $clk_adc0] \ -# -group [get_clocks $clk_adc0_x2] - - - -set_clock_group -name clk_axi_to_adc0_x2 -asynchronous \ - -group [get_clocks $clk_axi] \ - -group [get_clocks $clk_adc0_x2] - -set_clock_group -name clk_axi_to_dac0 -asynchronous \ - -group [get_clocks $clk_axi] \ - -group [get_clocks $clk_dac0] - -set_clock_group -name clk_axi_to_dac1 -asynchronous \ - -group [get_clocks $clk_axi] \ - -group [get_clocks $clk_dac1] - -set_clock_group -name clk_tproc_to_dac1 -asynchronous \ - -group [get_clocks $clk_dac0] \ - -group [get_clocks $clk_dac1] - -set_clock_group -name clk_tproc_to_adc0_x2 -asynchronous \ - -group [get_clocks $clk_dac0] \ - -group [get_clocks $clk_adc0_x2] - -set_clock_group -name clk_axi_to_ddr4 -asynchronous \ - -group [get_clocks $clk_axi] \ - -group [get_clocks $clk_ddr4] - -set_clock_group -name clk_ddr4_to_adc0_x2 -asynchronous \ - -group [get_clocks $clk_ddr4] \ - -group [get_clocks $clk_adc0_x2] - -set_false_path -from [get_cells d_1_i/axis_set_reg_0/U0/dout_r_reg*] - diff --git a/firmware/projects/qick_tprocv1_216_standard/bd_2022-1.tcl b/firmware/projects/qick_tprocv1_216_standard/bd_2022-1.tcl deleted file mode 100644 index c8a6c5266..000000000 --- a/firmware/projects/qick_tprocv1_216_standard/bd_2022-1.tcl +++ /dev/null @@ -1,2538 +0,0 @@ - -################################################################ -# This is a generated script based on design: d_1 -# -# Though there are limitations about the generated script, -# the main purpose of this utility is to make learning -# IP Integrator Tcl commands easier. -################################################################ - -namespace eval _tcl { -proc get_script_folder {} { - set script_path [file normalize [info script]] - set script_folder [file dirname $script_path] - return $script_folder -} -} -variable script_folder -set script_folder [_tcl::get_script_folder] - -################################################################ -# Check if script is running in correct Vivado version. -################################################################ -set scripts_vivado_version 2022.1 -set current_vivado_version [version -short] - -if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { - puts "" - catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} - - return 1 -} - -################################################################ -# START -################################################################ - -# To test this script, run the following commands from Vivado Tcl console: -# source d_1_script.tcl - - -# The design that will be created by this Tcl script contains the following -# module references: -# vect2bits_16 - -# Please add the sources of those modules before sourcing this Tcl script. - -# If there is no project opened, this script will create a -# project, but make sure you do not have an existing project -# <./myproj/project_1.xpr> in the current working folder. - -set list_projs [get_projects -quiet] -if { $list_projs eq "" } { - create_project project_1 myproj -part xczu49dr-ffvf1760-2-e - set_property BOARD_PART xilinx.com:zcu216:part0:2.0 [current_project] -} - - -# CHANGE DESIGN NAME HERE -variable design_name -set design_name d_1 - -# If you do not already have an existing IP Integrator design open, -# you can create a design using the following command: -# create_bd_design $design_name - -# Creating design if needed -set errMsg "" -set nRet 0 - -set cur_design [current_bd_design -quiet] -set list_cells [get_bd_cells -quiet] - -if { ${design_name} eq "" } { - # USE CASES: - # 1) Design_name not set - - set errMsg "Please set the variable to a non-empty value." - set nRet 1 - -} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { - # USE CASES: - # 2): Current design opened AND is empty AND names same. - # 3): Current design opened AND is empty AND names diff; design_name NOT in project. - # 4): Current design opened AND is empty AND names diff; design_name exists in project. - - if { $cur_design ne $design_name } { - common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." - set design_name [get_property NAME $cur_design] - } - common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." - -} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { - # USE CASES: - # 5) Current design opened AND has components AND same names. - - set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." - set nRet 1 -} elseif { [get_files -quiet ${design_name}.bd] ne "" } { - # USE CASES: - # 6) Current opened design, has components, but diff names, design_name exists in project. - # 7) No opened design, design_name exists in project. - - set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." - set nRet 2 - -} else { - # USE CASES: - # 8) No opened design, design_name not in project. - # 9) Current opened design, has components, but diff names, design_name not in project. - - common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." - - create_bd_design $design_name - - common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." - current_bd_design $design_name - -} - -common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." - -if { $nRet != 0 } { - catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} - return $nRet -} - -set bCheckIPsPassed 1 -################################################################## -# CHECK IPs -################################################################## -set bCheckIPs 1 -if { $bCheckIPs == 1 } { - set list_check_ips "\ -xilinx.com:ip:axi_bram_ctrl:4.1\ -xilinx.com:ip:blk_mem_gen:8.4\ -xilinx.com:ip:axi_dma:7.1\ -xilinx.com:ip:axi_intc:4.1\ -xilinx.com:ip:smartconnect:1.0\ -QICK:QICK:axis_avg_buffer:1.2\ -xilinx.com:ip:axis_broadcaster:1.1\ -QICK:QICK:axis_buffer_ddr_v1:1.0\ -QICK:QICK:axis_cdcsync_v1:1.0\ -xilinx.com:ip:axis_clock_converter:1.1\ -xilinx.com:ip:axis_dwidth_converter:1.1\ -QICK:QICK:axis_readout_v2:1.0\ -xilinx.com:ip:axis_register_slice:1.1\ -QICK:QICK:axis_set_reg:1.0\ -QICK:QICK:axis_signal_gen_v6:1.0\ -xilinx.com:ip:axis_switch:1.1\ -QICK:QICK:axis_tproc64x32_x8:1.0\ -xilinx.com:ip:ddr4:2.2\ -QICK:QICK:mr_buffer_et:1.1\ -xilinx.com:ip:proc_sys_reset:5.0\ -xilinx.com:ip:usp_rf_data_converter:2.6\ -xilinx.com:ip:xlconcat:2.1\ -xilinx.com:ip:xlconstant:1.1\ -xilinx.com:ip:zynq_ultra_ps_e:3.4\ -" - - set list_ips_missing "" - common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." - - foreach ip_vlnv $list_check_ips { - set ip_obj [get_ipdefs -all $ip_vlnv] - if { $ip_obj eq "" } { - lappend list_ips_missing $ip_vlnv - } - } - - if { $list_ips_missing ne "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } - set bCheckIPsPassed 0 - } - -} - -################################################################## -# CHECK Modules -################################################################## -set bCheckModules 1 -if { $bCheckModules == 1 } { - set list_check_mods "\ -vect2bits_16\ -" - - set list_mods_missing "" - common::send_gid_msg -ssname BD::TCL -id 2020 -severity "INFO" "Checking if the following modules exist in the project's sources: $list_check_mods ." - - foreach mod_vlnv $list_check_mods { - if { [can_resolve_reference $mod_vlnv] == 0 } { - lappend list_mods_missing $mod_vlnv - } - } - - if { $list_mods_missing ne "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2021 -severity "ERROR" "The following module(s) are not found in the project: $list_mods_missing" } - common::send_gid_msg -ssname BD::TCL -id 2022 -severity "INFO" "Please add source files for the missing module(s) above." - set bCheckIPsPassed 0 - } -} - -if { $bCheckIPsPassed != 1 } { - common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." - return 3 -} - -################################################################## -# DESIGN PROCs -################################################################## - - - -# Procedure to create entire design; Provide argument to make -# procedure reusable. If parentCell is "", will use root. -proc create_root_design { parentCell } { - - variable script_folder - variable design_name - - if { $parentCell eq "" } { - set parentCell [get_bd_cells /] - } - - # Get object for parentCell - set parentObj [get_bd_cells $parentCell] - if { $parentObj == "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} - return - } - - # Make sure parentObj is hier blk - set parentType [get_property TYPE $parentObj] - if { $parentType ne "hier" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} - return - } - - # Save current instance; Restore later - set oldCurInst [current_bd_instance .] - - # Set parent object as current - current_bd_instance $parentObj - - - # Create interface ports - set adc2_clk_0 [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_clock_rtl:1.0 adc2_clk_0 ] - - set dac2_clk_0 [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_clock_rtl:1.0 dac2_clk_0 ] - - set ddr4_sdram_c0 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddr4_rtl:1.0 ddr4_sdram_c0 ] - - set default_sysclk_c0_300mhz [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_clock_rtl:1.0 default_sysclk_c0_300mhz ] - set_property -dict [ list \ - CONFIG.FREQ_HZ {300000000} \ - ] $default_sysclk_c0_300mhz - - set sysref_in_0 [ create_bd_intf_port -mode Slave -vlnv xilinx.com:display_usp_rf_data_converter:diff_pins_rtl:1.0 sysref_in_0 ] - - set vin20_0 [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vin20_0 ] - - set vin22_0 [ create_bd_intf_port -mode Slave -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vin22_0 ] - - set vout0 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout0 ] - - set vout1 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout1 ] - - set vout2 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout2 ] - - set vout3 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout3 ] - - set vout4 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout4 ] - - set vout5 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout5 ] - - set vout6 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:diff_analog_io_rtl:1.0 vout6 ] - - - # Create ports - set PMOD0_0_LS [ create_bd_port -dir O PMOD0_0_LS ] - set PMOD0_1_LS [ create_bd_port -dir O PMOD0_1_LS ] - set PMOD0_2_LS [ create_bd_port -dir O PMOD0_2_LS ] - set PMOD0_3_LS [ create_bd_port -dir O PMOD0_3_LS ] - set PMOD0_4_LS [ create_bd_port -dir O PMOD0_4_LS ] - set PMOD0_5_LS [ create_bd_port -dir O PMOD0_5_LS ] - set PMOD0_6_LS [ create_bd_port -dir O PMOD0_6_LS ] - set PMOD0_7_LS [ create_bd_port -dir O PMOD0_7_LS ] - set PMOD1_0_LS [ create_bd_port -dir I PMOD1_0_LS ] - - # Create instance: axi_bram_ctrl_0, and set properties - set axi_bram_ctrl_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_bram_ctrl:4.1 axi_bram_ctrl_0 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {64} \ - CONFIG.SINGLE_PORT_BRAM {1} \ - ] $axi_bram_ctrl_0 - - # Create instance: axi_bram_ctrl_0_bram, and set properties - set axi_bram_ctrl_0_bram [ create_bd_cell -type ip -vlnv xilinx.com:ip:blk_mem_gen:8.4 axi_bram_ctrl_0_bram ] - set_property -dict [ list \ - CONFIG.Byte_Size {8} \ - CONFIG.EN_SAFETY_CKT {false} \ - CONFIG.Enable_32bit_Address {true} \ - CONFIG.Enable_B {Use_ENB_Pin} \ - CONFIG.Memory_Type {True_Dual_Port_RAM} \ - CONFIG.Port_B_Clock {100} \ - CONFIG.Port_B_Enable_Rate {100} \ - CONFIG.Port_B_Write_Rate {50} \ - CONFIG.Read_Width_B {64} \ - CONFIG.Register_PortA_Output_of_Memory_Primitives {false} \ - CONFIG.Register_PortB_Output_of_Memory_Primitives {false} \ - CONFIG.Use_Byte_Write_Enable {true} \ - CONFIG.Use_RSTA_Pin {true} \ - CONFIG.Use_RSTB_Pin {true} \ - CONFIG.Write_Width_B {64} \ - CONFIG.use_bram_block {BRAM_Controller} \ - ] $axi_bram_ctrl_0_bram - - # Create instance: axi_dma_avg, and set properties - set axi_dma_avg [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_avg ] - set_property -dict [ list \ - CONFIG.c_include_mm2s {0} \ - CONFIG.c_include_s2mm {1} \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_avg - - # Create instance: axi_dma_buf, and set properties - set axi_dma_buf [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_buf ] - set_property -dict [ list \ - CONFIG.c_include_mm2s {0} \ - CONFIG.c_include_s2mm {1} \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_buf - - # Create instance: axi_dma_gen, and set properties - set axi_dma_gen [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_gen ] - set_property -dict [ list \ - CONFIG.c_include_s2mm {0} \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_gen - - # Create instance: axi_dma_mr, and set properties - set axi_dma_mr [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_mr ] - set_property -dict [ list \ - CONFIG.c_include_mm2s {0} \ - CONFIG.c_include_s2mm {1} \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_mr - - # Create instance: axi_dma_tproc, and set properties - set axi_dma_tproc [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 axi_dma_tproc ] - set_property -dict [ list \ - CONFIG.c_include_s2mm {1} \ - CONFIG.c_include_sg {0} \ - CONFIG.c_sg_length_width {26} \ - ] $axi_dma_tproc - - # Create instance: axi_intc_0, and set properties - set axi_intc_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_intc:4.1 axi_intc_0 ] - set_property -dict [ list \ - CONFIG.C_IRQ_CONNECTION {1} \ - ] $axi_intc_0 - - # Create instance: axi_smc, and set properties - set axi_smc [ create_bd_cell -type ip -vlnv xilinx.com:ip:smartconnect:1.0 axi_smc ] - set_property -dict [ list \ - CONFIG.NUM_SI {6} \ - ] $axi_smc - - # Create instance: axi_smc_1, and set properties - set axi_smc_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:smartconnect:1.0 axi_smc_1 ] - - # Create instance: axis_avg_buffer_0, and set properties - set axis_avg_buffer_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_avg_buffer:1.2 axis_avg_buffer_0 ] - set_property -dict [ list \ - CONFIG.N_AVG {14} \ - ] $axis_avg_buffer_0 - - # Create instance: axis_avg_buffer_1, and set properties - set axis_avg_buffer_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_avg_buffer:1.2 axis_avg_buffer_1 ] - set_property -dict [ list \ - CONFIG.N_AVG {14} \ - ] $axis_avg_buffer_1 - - # Create instance: axis_broadcaster_0, and set properties - set axis_broadcaster_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_broadcaster:1.1 axis_broadcaster_0 ] - set_property -dict [ list \ - CONFIG.HAS_TREADY {0} \ - ] $axis_broadcaster_0 - - # Create instance: axis_broadcaster_1, and set properties - set axis_broadcaster_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_broadcaster:1.1 axis_broadcaster_1 ] - set_property -dict [ list \ - CONFIG.HAS_TREADY {0} \ - ] $axis_broadcaster_1 - - # Create instance: axis_buffer_ddr_v1_0, and set properties - set axis_buffer_ddr_v1_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_buffer_ddr_v1:1.0 axis_buffer_ddr_v1_0 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {256} \ - CONFIG.TARGET_SLAVE_BASE_ADDR {0x00000000} \ - ] $axis_buffer_ddr_v1_0 - - # Create instance: axis_cdcsync_v1_0, and set properties - set axis_cdcsync_v1_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_cdcsync_v1:1.0 axis_cdcsync_v1_0 ] - set_property -dict [ list \ - CONFIG.B {160} \ - CONFIG.N {4} \ - ] $axis_cdcsync_v1_0 - - # Create instance: axis_cdcsync_v1_1, and set properties - set axis_cdcsync_v1_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_cdcsync_v1:1.0 axis_cdcsync_v1_1 ] - set_property -dict [ list \ - CONFIG.B {160} \ - CONFIG.N {4} \ - ] $axis_cdcsync_v1_1 - - # Create instance: axis_clk_cnvrt_avg_0, and set properties - set axis_clk_cnvrt_avg_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clk_cnvrt_avg_0 ] - - # Create instance: axis_clk_cnvrt_avg_1, and set properties - set axis_clk_cnvrt_avg_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clk_cnvrt_avg_1 ] - - # Create instance: axis_clock_converter_0, and set properties - set axis_clock_converter_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_clock_converter:1.1 axis_clock_converter_0 ] - - # Create instance: axis_dwidth_converter_0, and set properties - set axis_dwidth_converter_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_dwidth_converter:1.1 axis_dwidth_converter_0 ] - set_property -dict [ list \ - CONFIG.M_TDATA_NUM_BYTES {32} \ - ] $axis_dwidth_converter_0 - - # Create instance: axis_readout_v2_0, and set properties - set axis_readout_v2_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_readout_v2:1.0 axis_readout_v2_0 ] - - # Create instance: axis_readout_v2_1, and set properties - set axis_readout_v2_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_readout_v2:1.0 axis_readout_v2_1 ] - - # Create instance: axis_register_slice_0, and set properties - set axis_register_slice_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_0 ] - - # Create instance: axis_register_slice_1, and set properties - set axis_register_slice_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_1 ] - - # Create instance: axis_register_slice_2, and set properties - set axis_register_slice_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_2 ] - - # Create instance: axis_register_slice_3, and set properties - set axis_register_slice_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_3 ] - - # Create instance: axis_register_slice_4, and set properties - set axis_register_slice_4 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_4 ] - - # Create instance: axis_register_slice_5, and set properties - set axis_register_slice_5 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_5 ] - - # Create instance: axis_register_slice_6, and set properties - set axis_register_slice_6 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_6 ] - - # Create instance: axis_register_slice_7, and set properties - set axis_register_slice_7 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_7 ] - - # Create instance: axis_register_slice_8, and set properties - set axis_register_slice_8 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_register_slice:1.1 axis_register_slice_8 ] - - # Create instance: axis_set_reg_0, and set properties - set axis_set_reg_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_set_reg:1.0 axis_set_reg_0 ] - set_property -dict [ list \ - CONFIG.DATA_WIDTH {160} \ - ] $axis_set_reg_0 - - # Create instance: axis_signal_gen_v6_0, and set properties - set axis_signal_gen_v6_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_0 ] - - # Create instance: axis_signal_gen_v6_1, and set properties - set axis_signal_gen_v6_1 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_1 ] - - # Create instance: axis_signal_gen_v6_2, and set properties - set axis_signal_gen_v6_2 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_2 ] - - # Create instance: axis_signal_gen_v6_3, and set properties - set axis_signal_gen_v6_3 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_3 ] - - # Create instance: axis_signal_gen_v6_4, and set properties - set axis_signal_gen_v6_4 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_4 ] - - # Create instance: axis_signal_gen_v6_5, and set properties - set axis_signal_gen_v6_5 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_5 ] - - # Create instance: axis_signal_gen_v6_6, and set properties - set axis_signal_gen_v6_6 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_signal_gen_v6:1.0 axis_signal_gen_v6_6 ] - - # Create instance: axis_switch_avg, and set properties - set axis_switch_avg [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_switch:1.1 axis_switch_avg ] - set_property -dict [ list \ - CONFIG.ROUTING_MODE {1} \ - ] $axis_switch_avg - - # Create instance: axis_switch_buf, and set properties - set axis_switch_buf [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_switch:1.1 axis_switch_buf ] - set_property -dict [ list \ - CONFIG.ROUTING_MODE {1} \ - ] $axis_switch_buf - - # Create instance: axis_switch_ddr, and set properties - set axis_switch_ddr [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_switch:1.1 axis_switch_ddr ] - set_property -dict [ list \ - CONFIG.ROUTING_MODE {1} \ - ] $axis_switch_ddr - - # Create instance: axis_switch_gen, and set properties - set axis_switch_gen [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_switch:1.1 axis_switch_gen ] - set_property -dict [ list \ - CONFIG.DECODER_REG {1} \ - CONFIG.NUM_MI {7} \ - CONFIG.NUM_SI {1} \ - CONFIG.ROUTING_MODE {1} \ - ] $axis_switch_gen - - # Create instance: axis_switch_mr, and set properties - set axis_switch_mr [ create_bd_cell -type ip -vlnv xilinx.com:ip:axis_switch:1.1 axis_switch_mr ] - set_property -dict [ list \ - CONFIG.ROUTING_MODE {1} \ - ] $axis_switch_mr - - # Create instance: axis_tproc64x32_x8_0, and set properties - set axis_tproc64x32_x8_0 [ create_bd_cell -type ip -vlnv QICK:QICK:axis_tproc64x32_x8:1.0 axis_tproc64x32_x8_0 ] - set_property -dict [ list \ - CONFIG.DMEM_N {12} \ - CONFIG.PMEM_N {20} \ - ] $axis_tproc64x32_x8_0 - - # Create instance: ddr4_0, and set properties - set ddr4_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:ddr4:2.2 ddr4_0 ] - set_property -dict [ list \ - CONFIG.ADDN_UI_CLKOUT1_FREQ_HZ {100} \ - CONFIG.C0.CS_WIDTH {2} \ - CONFIG.C0.DDR4_AxiAddressWidth {32} \ - CONFIG.C0.DDR4_AxiDataWidth {256} \ - CONFIG.C0.DDR4_CLKOUT0_DIVIDE {3} \ - CONFIG.C0.DDR4_Clamshell {true} \ - CONFIG.C0.DDR4_DataWidth {32} \ - CONFIG.C0.DDR4_InputClockPeriod {3334} \ - CONFIG.C0.DDR4_MemoryPart {MT40A1G8WE-075E} \ - CONFIG.C0_CLOCK_BOARD_INTERFACE {default_sysclk_c0_300mhz} \ - CONFIG.C0_DDR4_BOARD_INTERFACE {ddr4_sdram_c0} \ - ] $ddr4_0 - - # Create instance: mr_buffer_et_0, and set properties - set mr_buffer_et_0 [ create_bd_cell -type ip -vlnv QICK:QICK:mr_buffer_et:1.1 mr_buffer_et_0 ] - set_property -dict [ list \ - CONFIG.B {32} \ - CONFIG.N {10} \ - ] $mr_buffer_et_0 - - # Create instance: ps8_0_axi_periph, and set properties - set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] - set_property -dict [ list \ - CONFIG.NUM_MI {27} \ - ] $ps8_0_axi_periph - - # Create instance: rst_100, and set properties - set rst_100 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_100 ] - - # Create instance: rst_adc, and set properties - set rst_adc [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_adc ] - set_property -dict [ list \ - CONFIG.RESET_BOARD_INTERFACE {Custom} \ - CONFIG.USE_BOARD_FLOW {true} \ - ] $rst_adc - - # Create instance: rst_dac2, and set properties - set rst_dac2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_dac2 ] - set_property -dict [ list \ - CONFIG.RESET_BOARD_INTERFACE {Custom} \ - CONFIG.USE_BOARD_FLOW {true} \ - ] $rst_dac2 - - # Create instance: rst_dac3, and set properties - set rst_dac3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_dac3 ] - set_property -dict [ list \ - CONFIG.RESET_BOARD_INTERFACE {Custom} \ - CONFIG.USE_BOARD_FLOW {true} \ - ] $rst_dac3 - - # Create instance: rst_ddr4, and set properties - set rst_ddr4 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ddr4 ] - - # Create instance: usp_rf_data_converter_0, and set properties - set usp_rf_data_converter_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:usp_rf_data_converter:2.6 usp_rf_data_converter_0 ] - set_property -dict [ list \ - CONFIG.ADC2_Clock_Dist {0} \ - CONFIG.ADC2_Fabric_Freq {307.200} \ - CONFIG.ADC2_Outclk_Freq {307.200} \ - CONFIG.ADC2_PLL_Enable {true} \ - CONFIG.ADC2_Refclk_Freq {245.760} \ - CONFIG.ADC2_Sampling_Rate {2.4576} \ - CONFIG.ADC3_Enable {0} \ - CONFIG.ADC3_Fabric_Freq {0.0} \ - CONFIG.ADC_Coarse_Mixer_Freq20 {3} \ - CONFIG.ADC_Coarse_Mixer_Freq22 {3} \ - CONFIG.ADC_Coarse_Mixer_Freq30 {0} \ - CONFIG.ADC_Data_Width20 {8} \ - CONFIG.ADC_Decimation_Mode20 {1} \ - CONFIG.ADC_Decimation_Mode22 {1} \ - CONFIG.ADC_Decimation_Mode30 {0} \ - CONFIG.ADC_Mixer_Type20 {1} \ - CONFIG.ADC_Mixer_Type22 {1} \ - CONFIG.ADC_Mixer_Type30 {3} \ - CONFIG.ADC_OBS22 {false} \ - CONFIG.ADC_OBS31 {false} \ - CONFIG.ADC_OBS32 {false} \ - CONFIG.ADC_OBS33 {false} \ - CONFIG.ADC_RESERVED_1_20 {false} \ - CONFIG.ADC_RESERVED_1_21 {false} \ - CONFIG.ADC_RESERVED_1_22 {false} \ - CONFIG.ADC_RESERVED_1_23 {false} \ - CONFIG.ADC_RESERVED_1_30 {false} \ - CONFIG.ADC_RESERVED_1_31 {false} \ - CONFIG.ADC_RESERVED_1_32 {false} \ - CONFIG.ADC_RESERVED_1_33 {false} \ - CONFIG.ADC_Slice00_Enable {false} \ - CONFIG.ADC_Slice20_Enable {true} \ - CONFIG.ADC_Slice21_Enable {false} \ - CONFIG.ADC_Slice22_Enable {true} \ - CONFIG.ADC_Slice30_Enable {false} \ - CONFIG.DAC2_Clock_Dist {1} \ - CONFIG.DAC2_Fabric_Freq {430.080} \ - CONFIG.DAC2_Outclk_Freq {430.080} \ - CONFIG.DAC2_PLL_Enable {true} \ - CONFIG.DAC2_Refclk_Freq {245.760} \ - CONFIG.DAC2_Sampling_Rate {6.88128} \ - CONFIG.DAC3_Clock_Source {6} \ - CONFIG.DAC3_Fabric_Freq {430.080} \ - CONFIG.DAC3_Outclk_Freq {430.080} \ - CONFIG.DAC3_PLL_Enable {true} \ - CONFIG.DAC3_Refclk_Freq {245.760} \ - CONFIG.DAC3_Sampling_Rate {6.88128} \ - CONFIG.DAC_Coarse_Mixer_Freq20 {3} \ - CONFIG.DAC_Coarse_Mixer_Freq21 {3} \ - CONFIG.DAC_Coarse_Mixer_Freq22 {3} \ - CONFIG.DAC_Coarse_Mixer_Freq23 {3} \ - CONFIG.DAC_Coarse_Mixer_Freq30 {3} \ - CONFIG.DAC_Coarse_Mixer_Freq31 {3} \ - CONFIG.DAC_Coarse_Mixer_Freq32 {3} \ - CONFIG.DAC_Interpolation_Mode20 {1} \ - CONFIG.DAC_Interpolation_Mode21 {1} \ - CONFIG.DAC_Interpolation_Mode22 {1} \ - CONFIG.DAC_Interpolation_Mode23 {1} \ - CONFIG.DAC_Interpolation_Mode30 {1} \ - CONFIG.DAC_Interpolation_Mode31 {1} \ - CONFIG.DAC_Interpolation_Mode32 {1} \ - CONFIG.DAC_Mixer_Type20 {1} \ - CONFIG.DAC_Mixer_Type21 {1} \ - CONFIG.DAC_Mixer_Type22 {1} \ - CONFIG.DAC_Mixer_Type23 {1} \ - CONFIG.DAC_Mixer_Type30 {1} \ - CONFIG.DAC_Mixer_Type31 {1} \ - CONFIG.DAC_Mixer_Type32 {1} \ - CONFIG.DAC_Mode20 {3} \ - CONFIG.DAC_Mode21 {3} \ - CONFIG.DAC_Mode22 {3} \ - CONFIG.DAC_Mode23 {3} \ - CONFIG.DAC_Mode30 {3} \ - CONFIG.DAC_Mode31 {3} \ - CONFIG.DAC_Mode32 {3} \ - CONFIG.DAC_Slice20_Enable {true} \ - CONFIG.DAC_Slice21_Enable {true} \ - CONFIG.DAC_Slice22_Enable {true} \ - CONFIG.DAC_Slice23_Enable {true} \ - CONFIG.DAC_Slice30_Enable {true} \ - CONFIG.DAC_Slice31_Enable {true} \ - CONFIG.DAC_Slice32_Enable {true} \ - CONFIG.DAC_Slice33_Enable {false} \ - CONFIG.DAC_VOP_Mode {0} \ - ] $usp_rf_data_converter_0 - - # Create instance: vect2bits_16_0, and set properties - set block_name vect2bits_16 - set block_cell_name vect2bits_16_0 - if { [catch {set vect2bits_16_0 [create_bd_cell -type module -reference $block_name $block_cell_name] } errmsg] } { - catch {common::send_gid_msg -ssname BD::TCL -id 2095 -severity "ERROR" "Unable to add referenced block <$block_name>. Please add the files for ${block_name}'s definition into the project."} - return 1 - } elseif { $vect2bits_16_0 eq "" } { - catch {common::send_gid_msg -ssname BD::TCL -id 2096 -severity "ERROR" "Unable to referenced block <$block_name>. Please add the files for ${block_name}'s definition into the project."} - return 1 - } - - # Create instance: xlconcat_0, and set properties - set xlconcat_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconcat:2.1 xlconcat_0 ] - - # Create instance: xlconcat_1, and set properties - set xlconcat_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconcat:2.1 xlconcat_1 ] - set_property -dict [ list \ - CONFIG.NUM_PORTS {6} \ - ] $xlconcat_1 - - # Create instance: xlconstant_0, and set properties - set xlconstant_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_0 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {0} \ - CONFIG.CONST_WIDTH {64} \ - ] $xlconstant_0 - - # Create instance: xlconstant_1, and set properties - set xlconstant_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_1 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {1} \ - CONFIG.CONST_WIDTH {1} \ - ] $xlconstant_1 - - # Create instance: xlconstant_2, and set properties - set xlconstant_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_2 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {0} \ - CONFIG.CONST_WIDTH {8} \ - ] $xlconstant_2 - - # Create instance: xlconstant_3, and set properties - set xlconstant_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_3 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {0} \ - CONFIG.CONST_WIDTH {1} \ - ] $xlconstant_3 - - # Create instance: xlconstant_4, and set properties - set xlconstant_4 [ create_bd_cell -type ip -vlnv xilinx.com:ip:xlconstant:1.1 xlconstant_4 ] - set_property -dict [ list \ - CONFIG.CONST_VAL {0} \ - CONFIG.CONST_WIDTH {12} \ - ] $xlconstant_4 - - # Create instance: zynq_ultra_ps_e_0, and set properties - set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.4 zynq_ultra_ps_e_0 ] - set_property -dict [ list \ - CONFIG.CAN0_BOARD_INTERFACE {custom} \ - CONFIG.CAN1_BOARD_INTERFACE {custom} \ - CONFIG.CSU_BOARD_INTERFACE {custom} \ - CONFIG.DP_BOARD_INTERFACE {custom} \ - CONFIG.GEM0_BOARD_INTERFACE {custom} \ - CONFIG.GEM1_BOARD_INTERFACE {custom} \ - CONFIG.GEM2_BOARD_INTERFACE {custom} \ - CONFIG.GEM3_BOARD_INTERFACE {custom} \ - CONFIG.GPIO_BOARD_INTERFACE {custom} \ - CONFIG.IIC0_BOARD_INTERFACE {custom} \ - CONFIG.IIC1_BOARD_INTERFACE {custom} \ - CONFIG.NAND_BOARD_INTERFACE {custom} \ - CONFIG.PCIE_BOARD_INTERFACE {custom} \ - CONFIG.PJTAG_BOARD_INTERFACE {custom} \ - CONFIG.PMU_BOARD_INTERFACE {custom} \ - CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ - CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ - CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ - CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS33} \ - CONFIG.PSU_DDR_RAM_HIGHADDR {0xFFFFFFFF} \ - CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x800000000} \ - CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ - CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {1} \ - CONFIG.PSU_IMPORT_BOARD_PRESET {} \ - CONFIG.PSU_MIO_0_DIRECTION {out} \ - CONFIG.PSU_MIO_0_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_0_POLARITY {Default} \ - CONFIG.PSU_MIO_0_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_0_SLEW {fast} \ - CONFIG.PSU_MIO_10_DIRECTION {inout} \ - CONFIG.PSU_MIO_10_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_10_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_10_POLARITY {Default} \ - CONFIG.PSU_MIO_10_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_10_SLEW {fast} \ - CONFIG.PSU_MIO_11_DIRECTION {inout} \ - CONFIG.PSU_MIO_11_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_11_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_11_POLARITY {Default} \ - CONFIG.PSU_MIO_11_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_11_SLEW {fast} \ - CONFIG.PSU_MIO_12_DIRECTION {out} \ - CONFIG.PSU_MIO_12_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_12_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_12_POLARITY {Default} \ - CONFIG.PSU_MIO_12_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_12_SLEW {fast} \ - CONFIG.PSU_MIO_13_DIRECTION {inout} \ - CONFIG.PSU_MIO_13_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_13_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_13_POLARITY {Default} \ - CONFIG.PSU_MIO_13_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_13_SLEW {fast} \ - CONFIG.PSU_MIO_14_DIRECTION {inout} \ - CONFIG.PSU_MIO_14_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_14_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_14_POLARITY {Default} \ - CONFIG.PSU_MIO_14_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_14_SLEW {fast} \ - CONFIG.PSU_MIO_15_DIRECTION {inout} \ - CONFIG.PSU_MIO_15_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_15_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_15_POLARITY {Default} \ - CONFIG.PSU_MIO_15_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_15_SLEW {fast} \ - CONFIG.PSU_MIO_16_DIRECTION {inout} \ - CONFIG.PSU_MIO_16_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_16_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_16_POLARITY {Default} \ - CONFIG.PSU_MIO_16_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_16_SLEW {fast} \ - CONFIG.PSU_MIO_17_DIRECTION {inout} \ - CONFIG.PSU_MIO_17_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_17_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_17_POLARITY {Default} \ - CONFIG.PSU_MIO_17_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_17_SLEW {fast} \ - CONFIG.PSU_MIO_18_DIRECTION {in} \ - CONFIG.PSU_MIO_18_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_18_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_18_POLARITY {Default} \ - CONFIG.PSU_MIO_18_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_18_SLEW {fast} \ - CONFIG.PSU_MIO_19_DIRECTION {out} \ - CONFIG.PSU_MIO_19_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_19_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_19_POLARITY {Default} \ - CONFIG.PSU_MIO_19_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_19_SLEW {fast} \ - CONFIG.PSU_MIO_1_DIRECTION {inout} \ - CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_1_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_1_POLARITY {Default} \ - CONFIG.PSU_MIO_1_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_1_SLEW {fast} \ - CONFIG.PSU_MIO_20_DIRECTION {inout} \ - CONFIG.PSU_MIO_20_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_20_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_20_POLARITY {Default} \ - CONFIG.PSU_MIO_20_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_20_SLEW {fast} \ - CONFIG.PSU_MIO_21_DIRECTION {inout} \ - CONFIG.PSU_MIO_21_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_21_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_21_POLARITY {Default} \ - CONFIG.PSU_MIO_21_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_21_SLEW {fast} \ - CONFIG.PSU_MIO_22_DIRECTION {inout} \ - CONFIG.PSU_MIO_22_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_22_POLARITY {Default} \ - CONFIG.PSU_MIO_22_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_22_SLEW {fast} \ - CONFIG.PSU_MIO_23_DIRECTION {inout} \ - CONFIG.PSU_MIO_23_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_23_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_23_POLARITY {Default} \ - CONFIG.PSU_MIO_23_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_23_SLEW {fast} \ - CONFIG.PSU_MIO_24_DIRECTION {inout} \ - CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_24_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_24_POLARITY {Default} \ - CONFIG.PSU_MIO_24_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_24_SLEW {fast} \ - CONFIG.PSU_MIO_25_DIRECTION {inout} \ - CONFIG.PSU_MIO_25_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_25_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_25_POLARITY {Default} \ - CONFIG.PSU_MIO_25_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_25_SLEW {fast} \ - CONFIG.PSU_MIO_26_DIRECTION {inout} \ - CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_26_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_26_POLARITY {Default} \ - CONFIG.PSU_MIO_26_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_26_SLEW {fast} \ - CONFIG.PSU_MIO_27_DIRECTION {inout} \ - CONFIG.PSU_MIO_27_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_27_POLARITY {Default} \ - CONFIG.PSU_MIO_27_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_27_SLEW {fast} \ - CONFIG.PSU_MIO_28_DIRECTION {inout} \ - CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_28_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_28_POLARITY {Default} \ - CONFIG.PSU_MIO_28_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_28_SLEW {fast} \ - CONFIG.PSU_MIO_29_DIRECTION {inout} \ - CONFIG.PSU_MIO_29_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_29_POLARITY {Default} \ - CONFIG.PSU_MIO_29_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_29_SLEW {fast} \ - CONFIG.PSU_MIO_2_DIRECTION {inout} \ - CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_2_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_2_POLARITY {Default} \ - CONFIG.PSU_MIO_2_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_2_SLEW {fast} \ - CONFIG.PSU_MIO_30_DIRECTION {inout} \ - CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_30_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_30_POLARITY {Default} \ - CONFIG.PSU_MIO_30_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_30_SLEW {fast} \ - CONFIG.PSU_MIO_31_DIRECTION {inout} \ - CONFIG.PSU_MIO_31_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_31_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_31_POLARITY {Default} \ - CONFIG.PSU_MIO_31_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_31_SLEW {fast} \ - CONFIG.PSU_MIO_32_DIRECTION {out} \ - CONFIG.PSU_MIO_32_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_32_POLARITY {Default} \ - CONFIG.PSU_MIO_32_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_32_SLEW {fast} \ - CONFIG.PSU_MIO_33_DIRECTION {out} \ - CONFIG.PSU_MIO_33_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_33_POLARITY {Default} \ - CONFIG.PSU_MIO_33_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_33_SLEW {fast} \ - CONFIG.PSU_MIO_34_DIRECTION {out} \ - CONFIG.PSU_MIO_34_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_34_POLARITY {Default} \ - CONFIG.PSU_MIO_34_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_34_SLEW {fast} \ - CONFIG.PSU_MIO_35_DIRECTION {out} \ - CONFIG.PSU_MIO_35_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_35_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_35_POLARITY {Default} \ - CONFIG.PSU_MIO_35_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_35_SLEW {fast} \ - CONFIG.PSU_MIO_36_DIRECTION {out} \ - CONFIG.PSU_MIO_36_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_36_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_36_POLARITY {Default} \ - CONFIG.PSU_MIO_36_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_36_SLEW {fast} \ - CONFIG.PSU_MIO_37_DIRECTION {out} \ - CONFIG.PSU_MIO_37_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_37_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_37_POLARITY {Default} \ - CONFIG.PSU_MIO_37_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_37_SLEW {fast} \ - CONFIG.PSU_MIO_38_DIRECTION {inout} \ - CONFIG.PSU_MIO_38_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_38_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_38_POLARITY {Default} \ - CONFIG.PSU_MIO_38_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_38_SLEW {fast} \ - CONFIG.PSU_MIO_39_DIRECTION {inout} \ - CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_39_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_39_POLARITY {Default} \ - CONFIG.PSU_MIO_39_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_39_SLEW {fast} \ - CONFIG.PSU_MIO_3_DIRECTION {inout} \ - CONFIG.PSU_MIO_3_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_3_POLARITY {Default} \ - CONFIG.PSU_MIO_3_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_3_SLEW {fast} \ - CONFIG.PSU_MIO_40_DIRECTION {inout} \ - CONFIG.PSU_MIO_40_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_40_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_40_POLARITY {Default} \ - CONFIG.PSU_MIO_40_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_40_SLEW {fast} \ - CONFIG.PSU_MIO_41_DIRECTION {inout} \ - CONFIG.PSU_MIO_41_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_41_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_41_POLARITY {Default} \ - CONFIG.PSU_MIO_41_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_41_SLEW {fast} \ - CONFIG.PSU_MIO_42_DIRECTION {inout} \ - CONFIG.PSU_MIO_42_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_42_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_42_POLARITY {Default} \ - CONFIG.PSU_MIO_42_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_42_SLEW {fast} \ - CONFIG.PSU_MIO_43_DIRECTION {inout} \ - CONFIG.PSU_MIO_43_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_43_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_43_POLARITY {Default} \ - CONFIG.PSU_MIO_43_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_43_SLEW {fast} \ - CONFIG.PSU_MIO_44_DIRECTION {inout} \ - CONFIG.PSU_MIO_44_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_44_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_44_POLARITY {Default} \ - CONFIG.PSU_MIO_44_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_44_SLEW {fast} \ - CONFIG.PSU_MIO_45_DIRECTION {in} \ - CONFIG.PSU_MIO_45_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_45_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_45_POLARITY {Default} \ - CONFIG.PSU_MIO_45_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_45_SLEW {fast} \ - CONFIG.PSU_MIO_46_DIRECTION {inout} \ - CONFIG.PSU_MIO_46_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_46_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_46_POLARITY {Default} \ - CONFIG.PSU_MIO_46_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_46_SLEW {fast} \ - CONFIG.PSU_MIO_47_DIRECTION {inout} \ - CONFIG.PSU_MIO_47_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_47_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_47_POLARITY {Default} \ - CONFIG.PSU_MIO_47_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_47_SLEW {fast} \ - CONFIG.PSU_MIO_48_DIRECTION {inout} \ - CONFIG.PSU_MIO_48_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_48_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_48_POLARITY {Default} \ - CONFIG.PSU_MIO_48_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_48_SLEW {fast} \ - CONFIG.PSU_MIO_49_DIRECTION {inout} \ - CONFIG.PSU_MIO_49_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_49_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_49_POLARITY {Default} \ - CONFIG.PSU_MIO_49_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_49_SLEW {fast} \ - CONFIG.PSU_MIO_4_DIRECTION {inout} \ - CONFIG.PSU_MIO_4_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_4_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_4_POLARITY {Default} \ - CONFIG.PSU_MIO_4_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_4_SLEW {fast} \ - CONFIG.PSU_MIO_50_DIRECTION {inout} \ - CONFIG.PSU_MIO_50_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_50_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_50_POLARITY {Default} \ - CONFIG.PSU_MIO_50_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_50_SLEW {fast} \ - CONFIG.PSU_MIO_51_DIRECTION {out} \ - CONFIG.PSU_MIO_51_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_51_POLARITY {Default} \ - CONFIG.PSU_MIO_51_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_51_SLEW {fast} \ - CONFIG.PSU_MIO_52_DIRECTION {in} \ - CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_52_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_52_POLARITY {Default} \ - CONFIG.PSU_MIO_52_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_52_SLEW {fast} \ - CONFIG.PSU_MIO_53_DIRECTION {in} \ - CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_53_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_53_POLARITY {Default} \ - CONFIG.PSU_MIO_53_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_53_SLEW {fast} \ - CONFIG.PSU_MIO_54_DIRECTION {inout} \ - CONFIG.PSU_MIO_54_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_54_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_54_POLARITY {Default} \ - CONFIG.PSU_MIO_54_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_54_SLEW {fast} \ - CONFIG.PSU_MIO_55_DIRECTION {in} \ - CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_55_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_55_POLARITY {Default} \ - CONFIG.PSU_MIO_55_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_55_SLEW {fast} \ - CONFIG.PSU_MIO_56_DIRECTION {inout} \ - CONFIG.PSU_MIO_56_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_56_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_56_POLARITY {Default} \ - CONFIG.PSU_MIO_56_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_56_SLEW {fast} \ - CONFIG.PSU_MIO_57_DIRECTION {inout} \ - CONFIG.PSU_MIO_57_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_57_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_57_POLARITY {Default} \ - CONFIG.PSU_MIO_57_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_57_SLEW {fast} \ - CONFIG.PSU_MIO_58_DIRECTION {out} \ - CONFIG.PSU_MIO_58_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_58_POLARITY {Default} \ - CONFIG.PSU_MIO_58_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_58_SLEW {fast} \ - CONFIG.PSU_MIO_59_DIRECTION {inout} \ - CONFIG.PSU_MIO_59_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_59_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_59_POLARITY {Default} \ - CONFIG.PSU_MIO_59_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_59_SLEW {fast} \ - CONFIG.PSU_MIO_5_DIRECTION {out} \ - CONFIG.PSU_MIO_5_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_5_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_5_POLARITY {Default} \ - CONFIG.PSU_MIO_5_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_5_SLEW {fast} \ - CONFIG.PSU_MIO_60_DIRECTION {inout} \ - CONFIG.PSU_MIO_60_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_60_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_60_POLARITY {Default} \ - CONFIG.PSU_MIO_60_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_60_SLEW {fast} \ - CONFIG.PSU_MIO_61_DIRECTION {inout} \ - CONFIG.PSU_MIO_61_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_61_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_61_POLARITY {Default} \ - CONFIG.PSU_MIO_61_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_61_SLEW {fast} \ - CONFIG.PSU_MIO_62_DIRECTION {inout} \ - CONFIG.PSU_MIO_62_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_62_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_62_POLARITY {Default} \ - CONFIG.PSU_MIO_62_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_62_SLEW {fast} \ - CONFIG.PSU_MIO_63_DIRECTION {inout} \ - CONFIG.PSU_MIO_63_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_63_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_63_POLARITY {Default} \ - CONFIG.PSU_MIO_63_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_63_SLEW {fast} \ - CONFIG.PSU_MIO_64_DIRECTION {out} \ - CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_64_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_64_POLARITY {Default} \ - CONFIG.PSU_MIO_64_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_64_SLEW {fast} \ - CONFIG.PSU_MIO_65_DIRECTION {out} \ - CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_65_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_65_POLARITY {Default} \ - CONFIG.PSU_MIO_65_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_65_SLEW {fast} \ - CONFIG.PSU_MIO_66_DIRECTION {out} \ - CONFIG.PSU_MIO_66_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_66_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_66_POLARITY {Default} \ - CONFIG.PSU_MIO_66_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_66_SLEW {fast} \ - CONFIG.PSU_MIO_67_DIRECTION {out} \ - CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_67_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_67_POLARITY {Default} \ - CONFIG.PSU_MIO_67_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_67_SLEW {fast} \ - CONFIG.PSU_MIO_68_DIRECTION {out} \ - CONFIG.PSU_MIO_68_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_68_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_68_POLARITY {Default} \ - CONFIG.PSU_MIO_68_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_68_SLEW {fast} \ - CONFIG.PSU_MIO_69_DIRECTION {out} \ - CONFIG.PSU_MIO_69_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_69_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_69_POLARITY {Default} \ - CONFIG.PSU_MIO_69_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_69_SLEW {fast} \ - CONFIG.PSU_MIO_6_DIRECTION {out} \ - CONFIG.PSU_MIO_6_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_6_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_6_POLARITY {Default} \ - CONFIG.PSU_MIO_6_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_6_SLEW {fast} \ - CONFIG.PSU_MIO_70_DIRECTION {in} \ - CONFIG.PSU_MIO_70_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_70_POLARITY {Default} \ - CONFIG.PSU_MIO_70_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_70_SLEW {fast} \ - CONFIG.PSU_MIO_71_DIRECTION {in} \ - CONFIG.PSU_MIO_71_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_71_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_71_POLARITY {Default} \ - CONFIG.PSU_MIO_71_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_71_SLEW {fast} \ - CONFIG.PSU_MIO_72_DIRECTION {in} \ - CONFIG.PSU_MIO_72_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_72_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_72_POLARITY {Default} \ - CONFIG.PSU_MIO_72_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_72_SLEW {fast} \ - CONFIG.PSU_MIO_73_DIRECTION {in} \ - CONFIG.PSU_MIO_73_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_73_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_73_POLARITY {Default} \ - CONFIG.PSU_MIO_73_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_73_SLEW {fast} \ - CONFIG.PSU_MIO_74_DIRECTION {in} \ - CONFIG.PSU_MIO_74_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_74_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_74_POLARITY {Default} \ - CONFIG.PSU_MIO_74_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_74_SLEW {fast} \ - CONFIG.PSU_MIO_75_DIRECTION {in} \ - CONFIG.PSU_MIO_75_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_75_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_75_POLARITY {Default} \ - CONFIG.PSU_MIO_75_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_75_SLEW {fast} \ - CONFIG.PSU_MIO_76_DIRECTION {out} \ - CONFIG.PSU_MIO_76_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_76_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_76_POLARITY {Default} \ - CONFIG.PSU_MIO_76_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_76_SLEW {fast} \ - CONFIG.PSU_MIO_77_DIRECTION {inout} \ - CONFIG.PSU_MIO_77_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_77_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_77_POLARITY {Default} \ - CONFIG.PSU_MIO_77_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_77_SLEW {fast} \ - CONFIG.PSU_MIO_7_DIRECTION {out} \ - CONFIG.PSU_MIO_7_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_7_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_7_POLARITY {Default} \ - CONFIG.PSU_MIO_7_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_7_SLEW {fast} \ - CONFIG.PSU_MIO_8_DIRECTION {inout} \ - CONFIG.PSU_MIO_8_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_8_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_8_POLARITY {Default} \ - CONFIG.PSU_MIO_8_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_8_SLEW {fast} \ - CONFIG.PSU_MIO_9_DIRECTION {inout} \ - CONFIG.PSU_MIO_9_DRIVE_STRENGTH {12} \ - CONFIG.PSU_MIO_9_INPUT_TYPE {cmos} \ - CONFIG.PSU_MIO_9_POLARITY {Default} \ - CONFIG.PSU_MIO_9_PULLUPDOWN {pullup} \ - CONFIG.PSU_MIO_9_SLEW {fast} \ - CONFIG.PSU_MIO_TREE_PERIPHERALS {\ -Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad\ -SPI Flash#Feedback Clk#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI\ -Flash#Quad SPI Flash#Quad SPI Flash#GPIO0 MIO#I2C 0#I2C 0#I2C 1#I2C 1#UART\ -0#UART 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO1\ -MIO#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU\ -GPO 2#PMU GPO 3#PMU GPO 4#PMU GPO 5#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#GPIO1\ -MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB\ -0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem\ -3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#Gem 3#MDIO 3#MDIO 3} \ - CONFIG.PSU_MIO_TREE_SIGNALS {\ -sclk_out#miso_mo1#mo2#mo3#mosi_mi0#n_ss_out#clk_for_lpbk#n_ss_out_upper#mo_upper[0]#mo_upper[1]#mo_upper[2]#mo_upper[3]#sclk_out_upper#gpio0[13]#scl_out#sda_out#scl_out#sda_out#rxd#txd#gpio0[20]#gpio0[21]#gpio0[22]#gpio0[23]#gpio0[24]#gpio0[25]#gpio1[26]#gpio1[27]#gpio1[28]#gpio1[29]#gpio1[30]#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpo[3]#gpo[4]#gpo[5]#gpio1[38]#sdio1_data_out[4]#sdio1_data_out[5]#sdio1_data_out[6]#sdio1_data_out[7]#gpio1[43]#gpio1[44]#sdio1_cd_n#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#rgmii_tx_clk#rgmii_txd[0]#rgmii_txd[1]#rgmii_txd[2]#rgmii_txd[3]#rgmii_tx_ctl#rgmii_rx_clk#rgmii_rxd[0]#rgmii_rxd[1]#rgmii_rxd[2]#rgmii_rxd[3]#rgmii_rx_ctl#gem3_mdc#gem3_mdio_out} \ - CONFIG.PSU_PERIPHERAL_BOARD_PRESET {} \ - CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {8} \ - CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {8} \ - CONFIG.PSU_SMC_CYCLE_T0 {NA} \ - CONFIG.PSU_SMC_CYCLE_T1 {NA} \ - CONFIG.PSU_SMC_CYCLE_T2 {NA} \ - CONFIG.PSU_SMC_CYCLE_T3 {NA} \ - CONFIG.PSU_SMC_CYCLE_T4 {NA} \ - CONFIG.PSU_SMC_CYCLE_T5 {NA} \ - CONFIG.PSU_SMC_CYCLE_T6 {NA} \ - CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ - CONFIG.PSU_VALUE_SILVERSION {3} \ - CONFIG.PSU__ACPU0__POWER__ON {1} \ - CONFIG.PSU__ACPU1__POWER__ON {1} \ - CONFIG.PSU__ACPU2__POWER__ON {1} \ - CONFIG.PSU__ACPU3__POWER__ON {1} \ - CONFIG.PSU__ACTUAL__IP {1} \ - CONFIG.PSU__ACT_DDR_FREQ_MHZ {1049.999878} \ - CONFIG.PSU__AFI0_COHERENCY {0} \ - CONFIG.PSU__AFI1_COHERENCY {0} \ - CONFIG.PSU__AUX_REF_CLK__FREQMHZ {33.333} \ - CONFIG.PSU__CAN0_LOOP_CAN1__ENABLE {0} \ - CONFIG.PSU__CAN0__GRP_CLK__ENABLE {0} \ - CONFIG.PSU__CAN0__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ - CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1199.999756} \ - CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ - CONFIG.PSU__CRF_APB__ACPU_CTRL__FREQMHZ {1200} \ - CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ - CONFIG.PSU__CRF_APB__ACPU__FRAC_ENABLED {0} \ - CONFIG.PSU__CRF_APB__AFI0_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI0_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI0_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI0_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI0_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI1_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI1_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI1_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI1_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI1_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI2_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI2_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI2_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI2_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI2_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI3_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI3_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI3_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI3_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI3_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI4_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI4_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI4_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI4_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI4_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__AFI5_REF_CTRL__ACT_FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI5_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__AFI5_REF_CTRL__FREQMHZ {667} \ - CONFIG.PSU__CRF_APB__AFI5_REF_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__AFI5_REF__ENABLE {0} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRF_APB__APM_CTRL__ACT_FREQMHZ {1} \ - CONFIG.PSU__CRF_APB__APM_CTRL__DIVISOR0 {1} \ - CONFIG.PSU__CRF_APB__APM_CTRL__FREQMHZ {1} \ - CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {249.999954} \ - CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__ACT_FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {5} \ - CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {249.999954} \ - CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {524.999939} \ - CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {1066} \ - CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {599.999878} \ - CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__FREQMHZ {600} \ - CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {63} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {25} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {63} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__FREQMHZ {25} \ - CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {0} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {27} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {10} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__FREQMHZ {27} \ - CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {320} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {5} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__FREQMHZ {300} \ - CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ - CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {0} \ - CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {599.999878} \ - CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__FREQMHZ {600} \ - CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ - CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {0} \ - CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRF_APB__GPU_REF_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__GTGREF0_REF_CTRL__ACT_FREQMHZ {-1} \ - CONFIG.PSU__CRF_APB__GTGREF0_REF_CTRL__DIVISOR0 {-1} \ - CONFIG.PSU__CRF_APB__GTGREF0_REF_CTRL__FREQMHZ {-1} \ - CONFIG.PSU__CRF_APB__GTGREF0_REF_CTRL__SRCSEL {NA} \ - CONFIG.PSU__CRF_APB__GTGREF0__ENABLE {NA} \ - CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__ACT_FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__SATA_REF_CTRL__ACT_FREQMHZ {249.999954} \ - CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {99.999985} \ - CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ - CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {524.999939} \ - CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ - CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__FREQMHZ {533.33} \ - CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {90} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {499.999908} \ - CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__ACT_FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__AFI6__ENABLE {0} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {49.999992} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {30} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__FREQMHZ {50} \ - CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {499.999908} \ - CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__CPU_R5_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {180} \ - CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {180} \ - CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {SysOsc} \ - CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {249.999954} \ - CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__DEBUG_R5_ATCLK_CTRL__ACT_FREQMHZ {1000} \ - CONFIG.PSU__CRL_APB__DEBUG_R5_ATCLK_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__DEBUG_R5_ATCLK_CTRL__FREQMHZ {1000} \ - CONFIG.PSU__CRL_APB__DEBUG_R5_ATCLK_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1499.999756} \ - CONFIG.PSU__CRL_APB__DLL_REF_CTRL__FREQMHZ {1500} \ - CONFIG.PSU__CRL_APB__DLL_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__ACT_FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__ACT_FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__ACT_FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__ACT_FREQMHZ {124.999977} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__ACT_FREQMHZ {249.999954} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__ACT_FREQMHZ {99.999985} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {99.999985} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {90} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {249.999954} \ - CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {99.999985} \ - CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {499.999908} \ - CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__OCM_MAIN_CTRL__ACT_FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__OCM_MAIN_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__OCM_MAIN_CTRL__FREQMHZ {500} \ - CONFIG.PSU__CRL_APB__OCM_MAIN_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.499969} \ - CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ - CONFIG.PSU__CRL_APB__PCAP_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {99.999985} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {4} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {4} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__ACT_FREQMHZ {124.999977} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__FREQMHZ {125} \ - CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {90} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.000000} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {27.138} \ - CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ - CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {0} \ - CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {7} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.499969} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {214} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {7} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {214} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {7} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__FREQMHZ {200} \ - CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {RPLL} \ - CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {99.999985} \ - CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {99.999985} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {99.999001} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__FREQMHZ {100} \ - CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {249.999954} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__FREQMHZ {250} \ - CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {19.999996} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {25} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {3} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ - CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ - CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ - CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ - CONFIG.PSU__CSU_COHERENCY {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_0__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_0__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_10__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_10__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_11__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_11__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_12__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_12__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_1__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_1__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_2__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_2__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_3__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_3__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_4__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_4__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_5__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_5__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_6__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_6__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_7__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_7__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_8__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_8__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_9__ENABLE {0} \ - CONFIG.PSU__CSU__CSU_TAMPER_9__ERASE_BBRAM {0} \ - CONFIG.PSU__CSU__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__DDRC__ADDR_MIRROR {0} \ - CONFIG.PSU__DDRC__AL {0} \ - CONFIG.PSU__DDRC__BANK_ADDR_COUNT {2} \ - CONFIG.PSU__DDRC__BG_ADDR_COUNT {1} \ - CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ - CONFIG.PSU__DDRC__BUS_WIDTH {64 Bit} \ - CONFIG.PSU__DDRC__CL {15} \ - CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ - CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ - CONFIG.PSU__DDRC__COMPONENTS {UDIMM} \ - CONFIG.PSU__DDRC__CWL {11} \ - CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ - CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ - CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {0} \ - CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {0} \ - CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {0} \ - CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {0} \ - CONFIG.PSU__DDRC__DDR4_T_REF_MODE {0} \ - CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {Normal (0-85)} \ - CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ - CONFIG.PSU__DDRC__DEVICE_CAPACITY {8192 MBits} \ - CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ - CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ - CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ - CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ - CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ - CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ - CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ - CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ - CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ - CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ - CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ - CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ - CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ - CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ - CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ - CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ - CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ - CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ - CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ - CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ - CONFIG.PSU__DDRC__DRAM_WIDTH {16 Bits} \ - CONFIG.PSU__DDRC__ECC {Disabled} \ - CONFIG.PSU__DDRC__ECC_SCRUB {0} \ - CONFIG.PSU__DDRC__ENABLE {1} \ - CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ - CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {0} \ - CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ - CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ - CONFIG.PSU__DDRC__EN_2ND_CLK {0} \ - CONFIG.PSU__DDRC__FGRM {1X} \ - CONFIG.PSU__DDRC__FREQ_MHZ {1} \ - CONFIG.PSU__DDRC__LPDDR3_DUALRANK_SDP {0} \ - CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ - CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {NA} \ - CONFIG.PSU__DDRC__LP_ASR {manual normal} \ - CONFIG.PSU__DDRC__MEMORY_TYPE {DDR 4} \ - CONFIG.PSU__DDRC__PARITY_ENABLE {0} \ - CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ - CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ - CONFIG.PSU__DDRC__PLL_BYPASS {0} \ - CONFIG.PSU__DDRC__PWR_DOWN_EN {0} \ - CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ - CONFIG.PSU__DDRC__RD_DQS_CENTER {0} \ - CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ - CONFIG.PSU__DDRC__SB_TARGET {15-15-15} \ - CONFIG.PSU__DDRC__SELF_REF_ABORT {0} \ - CONFIG.PSU__DDRC__SPEED_BIN {DDR4_2133P} \ - CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ - CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ - CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ - CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ - CONFIG.PSU__DDRC__T_FAW {30.0} \ - CONFIG.PSU__DDRC__T_RAS_MIN {33} \ - CONFIG.PSU__DDRC__T_RC {46.5} \ - CONFIG.PSU__DDRC__T_RCD {15} \ - CONFIG.PSU__DDRC__T_RP {15} \ - CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ - CONFIG.PSU__DDRC__VIDEO_BUFFER_SIZE {0} \ - CONFIG.PSU__DDRC__VREF {1} \ - CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {1} \ - CONFIG.PSU__DDR_QOS_ENABLE {0} \ - CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {} \ - CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {} \ - CONFIG.PSU__DDR_QOS_HP0_RDQOS {} \ - CONFIG.PSU__DDR_QOS_HP0_WRQOS {} \ - CONFIG.PSU__DDR_QOS_HP1_RDQOS {} \ - CONFIG.PSU__DDR_QOS_HP1_WRQOS {} \ - CONFIG.PSU__DDR_QOS_HP2_RDQOS {} \ - CONFIG.PSU__DDR_QOS_HP2_WRQOS {} \ - CONFIG.PSU__DDR_QOS_HP3_RDQOS {} \ - CONFIG.PSU__DDR_QOS_HP3_WRQOS {} \ - CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {} \ - CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {} \ - CONFIG.PSU__DDR_QOS_WR_THRSHLD {} \ - CONFIG.PSU__DDR_SW_REFRESH_ENABLED {1} \ - CONFIG.PSU__DDR__INTERFACE__FREQMHZ {533.000} \ - CONFIG.PSU__DEVICE_TYPE {RFSOC} \ - CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {0} \ - CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {0} \ - CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__DLL__ISUSED {1} \ - CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__ENABLE__DDR__REFRESH__SIGNALS {0} \ - CONFIG.PSU__ENET0__FIFO__ENABLE {0} \ - CONFIG.PSU__ENET0__GRP_MDIO__ENABLE {0} \ - CONFIG.PSU__ENET0__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__ENET0__PTP__ENABLE {0} \ - CONFIG.PSU__ENET0__TSU__ENABLE {0} \ - CONFIG.PSU__ENET1__FIFO__ENABLE {0} \ - CONFIG.PSU__ENET1__GRP_MDIO__ENABLE {0} \ - CONFIG.PSU__ENET1__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__ENET1__PTP__ENABLE {0} \ - CONFIG.PSU__ENET1__TSU__ENABLE {0} \ - CONFIG.PSU__ENET2__FIFO__ENABLE {0} \ - CONFIG.PSU__ENET2__GRP_MDIO__ENABLE {0} \ - CONFIG.PSU__ENET2__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__ENET2__PTP__ENABLE {0} \ - CONFIG.PSU__ENET2__TSU__ENABLE {0} \ - CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ - CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {1} \ - CONFIG.PSU__ENET3__GRP_MDIO__IO {MIO 76 .. 77} \ - CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__ENET3__PERIPHERAL__IO {MIO 64 .. 75} \ - CONFIG.PSU__ENET3__PTP__ENABLE {0} \ - CONFIG.PSU__ENET3__TSU__ENABLE {0} \ - CONFIG.PSU__EN_AXI_STATUS_PORTS {0} \ - CONFIG.PSU__EN_EMIO_TRACE {0} \ - CONFIG.PSU__EP__IP {0} \ - CONFIG.PSU__EXPAND__CORESIGHT {0} \ - CONFIG.PSU__EXPAND__FPD_SLAVES {0} \ - CONFIG.PSU__EXPAND__GIC {0} \ - CONFIG.PSU__EXPAND__LOWER_LPS_SLAVES {0} \ - CONFIG.PSU__EXPAND__UPPER_LPS_SLAVES {0} \ - CONFIG.PSU__FPDMASTERS_COHERENCY {0} \ - CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {99.999985} \ - CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {99.999985} \ - CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ - CONFIG.PSU__FPGA_PL0_ENABLE {1} \ - CONFIG.PSU__FPGA_PL1_ENABLE {0} \ - CONFIG.PSU__FPGA_PL2_ENABLE {0} \ - CONFIG.PSU__FPGA_PL3_ENABLE {0} \ - CONFIG.PSU__FP__POWER__ON {1} \ - CONFIG.PSU__FTM__CTI_IN_0 {0} \ - CONFIG.PSU__FTM__CTI_IN_1 {0} \ - CONFIG.PSU__FTM__CTI_IN_2 {0} \ - CONFIG.PSU__FTM__CTI_IN_3 {0} \ - CONFIG.PSU__FTM__CTI_OUT_0 {0} \ - CONFIG.PSU__FTM__CTI_OUT_1 {0} \ - CONFIG.PSU__FTM__CTI_OUT_2 {0} \ - CONFIG.PSU__FTM__CTI_OUT_3 {0} \ - CONFIG.PSU__FTM__GPI {0} \ - CONFIG.PSU__FTM__GPO {0} \ - CONFIG.PSU__GEM0_COHERENCY {0} \ - CONFIG.PSU__GEM0_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__GEM1_COHERENCY {0} \ - CONFIG.PSU__GEM1_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__GEM2_COHERENCY {0} \ - CONFIG.PSU__GEM2_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__GEM3_COHERENCY {0} \ - CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ - CONFIG.PSU__GEM__TSU__ENABLE {0} \ - CONFIG.PSU__GEN_IPI_0__MASTER {APU} \ - CONFIG.PSU__GEN_IPI_10__MASTER {NONE} \ - CONFIG.PSU__GEN_IPI_1__MASTER {RPU0} \ - CONFIG.PSU__GEN_IPI_2__MASTER {RPU1} \ - CONFIG.PSU__GEN_IPI_3__MASTER {PMU} \ - CONFIG.PSU__GEN_IPI_4__MASTER {PMU} \ - CONFIG.PSU__GEN_IPI_5__MASTER {PMU} \ - CONFIG.PSU__GEN_IPI_6__MASTER {PMU} \ - CONFIG.PSU__GEN_IPI_7__MASTER {NONE} \ - CONFIG.PSU__GEN_IPI_8__MASTER {NONE} \ - CONFIG.PSU__GEN_IPI_9__MASTER {NONE} \ - CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ - CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ - CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ - CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__GPIO_EMIO_WIDTH {1} \ - CONFIG.PSU__GPIO_EMIO__PERIPHERAL__ENABLE {0} \ - CONFIG.PSU__GPIO_EMIO__PERIPHERAL__IO {