I just obtained a new ZCU104 Eval kit (AMD Zynq Ultrascale+ MPSoC ZCU104 Evaluation Kit) and I'm running into some issues with my bitstreams.
I have a bitstream implementation of a ARM Cortex-M0 mcu and tested this on the board and observed the expected results. Now I want to move development to another ZCU104 eval board that I've just obtained, I flashed the exact bitstream but the I/Os don't seem to be working. In debugging, I tested with a simpler design below:
- `timescale 1ns/1ps
- module test(
- input logic clk_p,
- input logic clk_n,
- output logic clk_50,
- // output logic sys_clk,
- // output logic locked,
- output logic [2:0] led
- );
- logic sys_clk;
- logic locked;
- IBUFGDS osc_clk (
- .O(sys_clk),
- .I(clk_p),
- .IB(clk_n)
- );
- clk_wiz_1 clock_test
- (
- // Clock out ports
- .clk_out1(clk_50), // output clk_out1
- // Status and control signals
- .locked(locked), // output locked
- // Clock in ports
- .clk_in1(sys_clk) // input clk_in1
- );
- assign led[0] = locked;
- assign led[1] = 1'b1;
- assign led[2] = 1'b1;
- endmodule
- # Clock - ZCU104 125MHz System Clock (Differential)
- set_property PACKAGE_PIN F23 [get_ports clk_p]
- set_property IOSTANDARD LVDS [get_ports clk_p]
- set_property PACKAGE_PIN E23 [get_ports clk_n]
- set_property IOSTANDARD LVDS [get_ports clk_n]
- ##############################################################
- # Status LEDs - ZCU104 User LEDs
- ##############################################################
- set_property PACKAGE_PIN D6 [get_ports clk_50]
- set_property IOSTANDARD LVCMOS33 [get_ports clk_50]
- set_property PACKAGE_PIN D5 [get_ports {led[0]}]
- set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
- set_property PACKAGE_PIN A5 [get_ports {led[1]}]
- set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
- set_property PACKAGE_PIN B5 [get_ports {led[2]}]
- set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
What's interesting is I did observe an expected output from driving the pins of the led directly with assign statements as shown above. But the led connected to locked which is an output driven by the clock wiz module is not set. Running post synthesis and implementation simulations indicate the locked signal and clock wizard work fine so I'm confused.
I think the issue is in the hardware configuration, are there additional bringup steps that I'm missing? I've referenced the documentation and SW6 is set to JTAG mode (0000/0x0) but I can't seem to find the issue.