Generating the SDSoC Hardware Platform Description

As described inSDSoC Tcl Commands in Vivado, the hardware platform port interface is defined in the Vivado project, and is extracted by the SDSoC Platform Utility using Tcl commands which are contained in the script filezc702_axis_io/src/vivado/zc702_axis_io_pfm.tcl.

  1. The following command creates a hardware platform object.
    set pfm [sdsoc::create_pfm zc702_axis_io.hpfm]
  2. The following commands declare the platform name and provide a brief description that will be displayed when a user executes 'sdscc -sds-pf-info zc702_axis_io'.
    sdsoc::pfm_name $pfm "xilinx.com" "xd" "zc702_axis_io" "1.0" sdsoc::pfm_description $pfm "Zynq ZC702 Board With Direct I/O"
  3. The following commands declare the clocks; the default platform clock has id 1:. The 'true' argument indicates that this clock is the platform default.
    sdsoc::pfm_clock $pfm FCLK_CLK0 ps7 0 false psr0 sdsoc::pfm_clock $pfm FCLK_CLK1 ps7 1 true psr1
    Tip:The command also specifies the associated proc_sys_resetIP instances ( psr0, psr1) that are required of every platform clock.
  4. The following commands declare the platform AXI interfaces. Each AXI port requires a "memory type" declaration, which must be one of{M_AXI_GP, S_AXI_ACP, S_AXI_HP, MIG}, i.e., a general purpose AXI master, a cache coherent slave interface, a high-performance port or an interface to an external memory controller respectively. The choice of AXI ports is up to the platform creator. Note that although this platform declares both general purpose masters, the coherent port, and all four high performance ports on the processing system IP block, the only requirement is that at least one general purpose AXI master and one AXI slave port must be declared.
    sdsoc::pfm_axi_port $pfm M_AXI_GP0 ps7 M_AXI_GP sdsoc::pfm_axi_port $pfm M_AXI_GP1 ps7 M_AXI_GP sdsoc::pfm_axi_port $pfm S_AXI_ACP ps7 S_AXI_ACP sdsoc::pfm_axi_port $pfm S_AXI_HP0 ps7 S_AXI_HP sdsoc::pfm_axi_port $pfm S_AXI_HP1 ps7 S_AXI_HP sdsoc::pfm_axi_port $pfm S_AXI_HP2 ps7 S_AXI_HP sdsoc::pfm_axi_port $pfm S_AXI_HP3 ps7 S_AXI_HP
  5. The following command declares thestream_fifomaster AXI4-Stream bus interface that proxies the direct I/O:
    sdsoc::pfm_axis_port $pfm M_AXIS stream_fifo M_AXIS
  6. The following commands declare the interrupt inputs:
    for {set i 0} {$i < 16} {incr i} { sdsoc::pfm_irq $pfm In$i irq_concat }
  7. Having declared all of the interfaces, the following command generates the platform hardware metadata filezc702_axis_io.hpfmwhen the platform is generated by the SDSoC Platform Utility.
    sdsoc::generate_hw_pfm $pfm
You can validate the platform hardware description file for a platform with the following command.
sds-pf-check /samples/platforms/zc702_axis_io/hw/zc702_axis_io.hpfm

You should see a message such as/samples/platforms/zc702_axis_io/hw/zc702_axi_io_hw.pfm validates.