Jump to content
  • 0

Running XAPP1079 on Zybo


vic

Question

Hi,

I'm trying to run the XAPP 1079 on Zybo. As the profile is not originally made for this specific board, I had to make some changes. I follow all the insructions for the Vivado and the SDK, but in the end after the board boots from the microSD card I don't see anything in the terminal. I was wondering first if the changes that I made are correct and if anymore are needed. One specific issue I am having is that while creating an instance of the Zynq7 processor, it uses the configuration preset for the ZC702 board. Can/Should I change that?

Below are the tcl scripts that i have modified.

Spoiler


################################################################
# This is a generated script based on design: design_1
#
# Though there are limitations about the generated script,
# the main purpose of this utility is to make learning
# IP Integrator Tcl commands easier.
################################################################

################################################################
# Check if script is running in correct Vivado version.
################################################################
set scripts_vivado_version 2017.1
set current_vivado_version [version -short]

if { [string first $scripts_vivado_version $current_vivado_version] == -1 } {
   puts ""
   puts "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 design_1_script.tcl

# If you do not already have a project created,
# you can create a project using the following command:
#    create_project project_1 myproj -part xc7z010clg400-1
#    set_property BOARD_PART digilentinc.com:zybo:part0:1.0 [current_project]

# CHECKING IF PROJECT EXISTS
if { [get_projects -quiet] eq "" } {
   puts "ERROR: Please open or create a project!"
   return 1
}



# CHANGE DESIGN NAME HERE
set design_name design_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 "ERROR: Please set the variable <design_name> 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 } {
      puts "INFO: Changing value of <design_name> from <$design_name> to <$cur_design> since current design is empty."
      set design_name [get_property NAME $cur_design]
   }
   puts "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 "ERROR: Design <$design_name> already exists in your project, please set the variable <design_name> 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 "ERROR: Design <$design_name> already exists in your project, please set the variable <design_name> 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.

   puts "INFO: Currently there is no design <$design_name> in project, so creating one..."

   create_bd_design $design_name

   puts "INFO: Making design <$design_name> as current_bd_design."
   current_bd_design $design_name

}

puts "INFO: Currently the variable <design_name> is equal to \"$design_name\"."

if { $nRet != 0 } {
   puts $errMsg
   return $nRet
}

##################################################################
# DESIGN PROCs
##################################################################



# Procedure to create entire design; Provide argument to make
# procedure reusable. If parentCell is "", will use root.
proc create_root_design { parentCell } {

  if { $parentCell eq "" } {
     set parentCell [get_bd_cells /]
  }

  # Get object for parentCell
  set parentObj [get_bd_cells $parentCell]
  if { $parentObj == "" } {
     puts "ERROR: Unable to find parent cell <$parentCell>!"
     return
  }

  # Make sure parentObj is hier blk
  set parentType [get_property TYPE $parentObj]
  if { $parentType ne "hier" } {
     puts "ERROR: Parent <$parentObj> has TYPE = <$parentType>. Expected to be <hier>."
     return
  }

  # Save current instance; Restore later
  set oldCurInst [current_bd_instance .]

  # Set parent object as current
  current_bd_instance $parentObj


  # Create interface ports
  set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ]
  set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ]

  # Create ports

  # Create instance: ila_0, and set properties
  set ila_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:ila:6.2 ila_0 ]
  set_property -dict [ list CONFIG.C_ENABLE_ILA_AXI_MON {false} CONFIG.C_MONITOR_TYPE {Native} CONFIG.C_NUM_OF_PROBES {4}  ] $ila_0

  # Create instance: irq_gen_0, and set properties
  set irq_gen_0 [ create_bd_cell -type ip -vlnv xilinx.com:user:irq_gen:1.1 irq_gen_0 ]

  # Create instance: processing_system7_0, and set properties
  set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ]
  set_property -dict [ list CONFIG.PCW_CORE1_IRQ_INTR {1} CONFIG.PCW_USE_FABRIC_INTERRUPT {1} CONFIG.preset {ZC702}  ] $processing_system7_0

  # Create instance: processing_system7_0_axi_periph, and set properties
  set processing_system7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 processing_system7_0_axi_periph ]
  set_property -dict [ list CONFIG.NUM_MI {1}  ] $processing_system7_0_axi_periph

  # Create instance: rst_processing_system7_0_100M, and set properties
  set rst_processing_system7_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_processing_system7_0_100M ]

  # Create instance: vio_0, and set properties
  set vio_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:vio:3.0 vio_0 ]
  set_property -dict [ list CONFIG.C_NUM_PROBE_IN {0}  ] $vio_0

  # Create interface connections
  connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR]
  connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO]
  connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins processing_system7_0_axi_periph/S00_AXI]
  connect_bd_intf_net -intf_net processing_system7_0_axi_periph_M00_AXI [get_bd_intf_pins irq_gen_0/S_AXI] [get_bd_intf_pins processing_system7_0_axi_periph/M00_AXI]

  # Create port connections
  connect_bd_net -net irq_gen_0_IRQ [get_bd_pins ila_0/probe2] [get_bd_pins irq_gen_0/IRQ] [get_bd_pins processing_system7_0/Core1_nIRQ]
  connect_bd_net -net irq_gen_0_slv_reg [get_bd_pins ila_0/probe1] [get_bd_pins irq_gen_0/slv_reg]
  connect_bd_net -net irq_gen_0_vio_rise_edge [get_bd_pins ila_0/probe0] [get_bd_pins irq_gen_0/vio_rise_edge]
  connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_pins ila_0/clk] [get_bd_pins irq_gen_0/S_AXI_ACLK] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins processing_system7_0_axi_periph/ACLK] [get_bd_pins processing_system7_0_axi_periph/M00_ACLK] [get_bd_pins processing_system7_0_axi_periph/S00_ACLK] [get_bd_pins rst_processing_system7_0_100M/slowest_sync_clk] [get_bd_pins vio_0/clk]
  connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_processing_system7_0_100M/ext_reset_in]
  connect_bd_net -net rst_processing_system7_0_100M_interconnect_aresetn [get_bd_pins processing_system7_0_axi_periph/ARESETN] [get_bd_pins rst_processing_system7_0_100M/interconnect_aresetn]
  connect_bd_net -net rst_processing_system7_0_100M_peripheral_aresetn [get_bd_pins irq_gen_0/S_AXI_ARESETN] [get_bd_pins processing_system7_0_axi_periph/M00_ARESETN] [get_bd_pins processing_system7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_processing_system7_0_100M/peripheral_aresetn]
  connect_bd_net -net vio_0_probe_out0 [get_bd_pins ila_0/probe3] [get_bd_pins irq_gen_0/VIO_IRQ_TICK] [get_bd_pins vio_0/probe_out0]

  # Create address segments
  create_bd_addr_seg -range 0x10000 -offset 0x78600000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs irq_gen_0/S_AXI/reg0] SEG_irq_gen_0_reg0
  

  # Restore current instance
  current_bd_instance $oldCurInst

  save_bd_design
}
# End of create_root_design()


##################################################################
# MAIN FLOW
##################################################################

create_root_design ""

 

 

Spoiler



# Create project
set proj_name project_1
create_project -force $proj_name ./$proj_name

# Set project properties
set obj [get_projects $proj_name]
set_property "part" "xc7z010clg400-1" $obj
set_property "target_language" "Verilog" $obj
set_property board_part digilentinc.com:zybo:part0:1.0 $obj

# Set the directory path for the new project
set proj_dir [get_property directory $obj]

set_property ip_repo_paths  $proj_dir/../../src/my_ip [current_fileset]
update_ip_catalog

#create BD
source $proj_dir/../../src/scripts/create_bd_701.tcl
validate_bd_design
save_bd_design

#Create top wrapper file
make_wrapper -files [get_files $proj_dir/$proj_name.srcs/sources_1/bd/design_1/design_1.bd] -top
import_files -force -norecurse $proj_dir/$proj_name.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v

#implement the design and create bit file
launch_runs impl_1 -to_step write_bitstream
wait_on_run -timeout 60 impl_1

#Export design to SDK
file mkdir $proj_dir/$proj_name.sdk
file copy -force $proj_dir/$proj_name.runs/impl_1/design_1_wrapper.sysdef $proj_dir/$proj_name.sdk/design_1_wrapper.hdf
launch_sdk -workspace $proj_dir/$proj_name.sdk -hwspec $proj_dir/$proj_name.sdk/design_1_wrapper.hdf

 

I have tried running the profile both on the 2017.1 and the 2015.4 version of Vivado. It is possible that it has something to do with the standalone bsp. I have tried running a simple hello world from a single core of the ARM A9 and it runs just fine. But when I try running a simple hello world application with both the cores (essentially changing the SDK part of the XAPP), I still see nothing on the terminal.

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

For sure you will need to apply the correct preset to the board. Input clock frequency, DDR3 parameters and MIO mapping most probably differ between the two boards. After you apply the Zybo preset check the differences between the two preset, stuff like which UART controller should be used for stdout.

Also, you were saying it does not show anything after booting from SD. Define FSBL_DEBUG and confirm that it actually boots your application. Also try launching over JTAG from SDK.

Link to comment
Share on other sites

On 15/6/2017 at 2:34 PM, elodg said:

For sure you will need to apply the correct preset to the board. Input clock frequency, DDR3 parameters and MIO mapping most probably differ between the two boards. After you apply the Zybo preset check the differences between the two preset, stuff like which UART controller should be used for stdout.

How do I apply the correct preset for Zybo? Because after opening the IP customization for the Zynq7, I don't see any specific preset. There is only ZC702, ZC706, Zedboard, Default and None. Can I somehow add the Zybo profile?

I should note that I have already added the board files into the Vivado folder.

Link to comment
Share on other sites

https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1

This will install board definition files for the ZYBO. Then, in your project settings you can choose the board and not the Xilinx part. Finally, instantiating the PS IP and running block automation will give you the option to apply board preset to the processor.

In your case, in an existing project it is probably better to import a preset to the Zynq Processing system only. I don't know why we haven't published this before, but I added it to our ZYBO repo: https://github.com/Digilent/ZYBO/tree/master/Resources/Preset

Just go to Presets -> Apply Configuration and choose the tcl file from above.

Link to comment
Share on other sites

I made some changes to the tcl file, using the preset file that you posted.

Spoiler


################################################################
# This is a generated script based on design: design_1
#
# Though there are limitations about the generated script,
# the main purpose of this utility is to make learning
# IP Integrator Tcl commands easier.
################################################################

################################################################
# Check if script is running in correct Vivado version.
################################################################
set scripts_vivado_version 2017.1
set current_vivado_version [version -short]

if { [string first $scripts_vivado_version $current_vivado_version] == -1 } {
   puts ""
   puts "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 design_1_script.tcl

# If you do not already have a project created,
# you can create a project using the following command:
#    create_project project_1 myproj -part xc7z010clg400-1
#    set_property BOARD_PART digilentinc.com:zybo:part0:1.0 [current_project]


# CHANGE DESIGN NAME HERE
set design_name design_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

# CHECKING IF PROJECT EXISTS
if { [get_projects -quiet] eq "" } {
   puts "ERROR: Please open or create a project!"
   return 1
}


# 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} ne "" && ${cur_design} eq ${design_name} } {

   # Checks if design is empty or not
   if { $list_cells ne "" } {
      set errMsg "ERROR: Design <$design_name> already exists in your project, please set the variable <design_name> to another value."
      set nRet 1
   } else {
      puts "INFO: Constructing design in IPI design <$design_name>..."
   }
} elseif { ${cur_design} ne "" && ${cur_design} ne ${design_name} } {

   if { $list_cells eq "" } {
      puts "INFO: You have an empty design <${cur_design}>. Will go ahead and create design..."
   } else {
      set errMsg "ERROR: Design <${cur_design}> is not empty! Please do not source this script on non-empty designs."
      set nRet 1
   }
} else {

   if { [get_files -quiet ${design_name}.bd] eq "" } {
      puts "INFO: Currently there is no design <$design_name> in project, so creating one..."

      create_bd_design $design_name

      puts "INFO: Making design <$design_name> as current_bd_design."
      current_bd_design $design_name

   } else {
      set errMsg "ERROR: Design <$design_name> already exists in your project, please set the variable <design_name> to another value."
      set nRet 3
   }

}

puts "INFO: Currently the variable <design_name> is equal to \"$design_name\"."

if { $nRet != 0 } {
   puts $errMsg
   return $nRet
}

##################################################################
# DESIGN PROCs
##################################################################



# Procedure to create entire design; Provide argument to make
# procedure reusable. If parentCell is "", will use root.
proc create_root_design { parentCell } {

  if { $parentCell eq "" } {
     set parentCell [get_bd_cells /]
  }

  # Get object for parentCell
  set parentObj [get_bd_cells $parentCell]
  if { $parentObj == "" } {
     puts "ERROR: Unable to find parent cell <$parentCell>!"
     return
  }

  # Make sure parentObj is hier blk
  set parentType [get_property TYPE $parentObj]
  if { $parentType ne "hier" } {
     puts "ERROR: Parent <$parentObj> has TYPE = <$parentType>. Expected to be <hier>."
     return
  }

  # Save current instance; Restore later
  set oldCurInst [current_bd_instance .]

  # Set parent object as current
  current_bd_instance $parentObj


  # Create interface ports
  set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ]
  set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ]

  # Create ports

  # Create instance: ila_0, and set properties
  set ila_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:ila:6.2 ila_0 ]
  set_property -dict [ list CONFIG.C_MONITOR_TYPE {Native} CONFIG.C_NUM_OF_PROBES {4}  ] $ila_0

  # Create instance: irq_gen_0, and set properties
  set irq_gen_0 [ create_bd_cell -type ip -vlnv xilinx.com:user:irq_gen:1.1 irq_gen_0 ]

  # Create instance: processing_system7_0, and set properties
  set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ]
  set_property -dict [ list CONFIG.PCW_DDR_RAM_BASEADDR {0x00100000}  \
    CONFIG.PCW_DDR_RAM_HIGHADDR {0x1FFFFFFF}  \
    CONFIG.PCW_UART0_BASEADDR {0xE0000000}  \
    CONFIG.PCW_UART0_HIGHADDR {0xE0000FFF}  \
    CONFIG.PCW_UART1_BASEADDR {0xE0001000}  \
    CONFIG.PCW_UART1_HIGHADDR {0xE0001FFF}  \
    CONFIG.PCW_I2C0_BASEADDR {0xE0004000}  \
    CONFIG.PCW_I2C0_HIGHADDR {0xE0004FFF}  \
    CONFIG.PCW_I2C1_BASEADDR {0xE0005000}  \
    CONFIG.PCW_I2C1_HIGHADDR {0xE0005FFF}  \
    CONFIG.PCW_SPI0_BASEADDR {0xE0006000}  \
    CONFIG.PCW_SPI0_HIGHADDR {0xE0006FFF}  \
    CONFIG.PCW_SPI1_BASEADDR {0xE0007000}  \
    CONFIG.PCW_SPI1_HIGHADDR {0xE0007FFF}  \
    CONFIG.PCW_CAN0_BASEADDR {0xE0008000}  \
    CONFIG.PCW_CAN0_HIGHADDR {0xE0008FFF}  \
    CONFIG.PCW_CAN1_BASEADDR {0xE0009000}  \
    CONFIG.PCW_CAN1_HIGHADDR {0xE0009FFF}  \
    CONFIG.PCW_GPIO_BASEADDR {0xE000A000}  \
    CONFIG.PCW_GPIO_HIGHADDR {0xE000AFFF}  \
    CONFIG.PCW_ENET0_BASEADDR {0xE000B000}  \
    CONFIG.PCW_ENET0_HIGHADDR {0xE000BFFF}  \
    CONFIG.PCW_ENET1_BASEADDR {0xE000C000}  \
    CONFIG.PCW_ENET1_HIGHADDR {0xE000CFFF}  \
    CONFIG.PCW_SDIO0_BASEADDR {0xE0100000}  \
    CONFIG.PCW_SDIO0_HIGHADDR {0xE0100FFF}  \
    CONFIG.PCW_SDIO1_BASEADDR {0xE0101000}  \
    CONFIG.PCW_SDIO1_HIGHADDR {0xE0101FFF}  \
    CONFIG.PCW_USB0_BASEADDR {0xE0102000}  \
    CONFIG.PCW_USB0_HIGHADDR {0xE0102fff}  \
    CONFIG.PCW_USB1_BASEADDR {0xE0103000}  \
    CONFIG.PCW_USB1_HIGHADDR {0xE0103fff}  \
    CONFIG.PCW_TTC0_BASEADDR {0xE0104000}  \
    CONFIG.PCW_TTC0_HIGHADDR {0xE0104fff}  \
    CONFIG.PCW_TTC1_BASEADDR {0xE0105000}  \
    CONFIG.PCW_TTC1_HIGHADDR {0xE0105fff}  \
    CONFIG.PCW_FCLK_CLK0_BUF {true}  \
    CONFIG.PCW_FCLK_CLK1_BUF {false}  \
    CONFIG.PCW_FCLK_CLK2_BUF {false}  \
    CONFIG.PCW_FCLK_CLK3_BUF {false}  \
    CONFIG.PCW_UIPARAM_DDR_FREQ_MHZ {525}  \
    CONFIG.PCW_UIPARAM_DDR_BANK_ADDR_COUNT {3}  \
    CONFIG.PCW_UIPARAM_DDR_ROW_ADDR_COUNT {14}  \
    CONFIG.PCW_UIPARAM_DDR_COL_ADDR_COUNT {10}  \
    CONFIG.PCW_UIPARAM_DDR_CL {7}  \
    CONFIG.PCW_UIPARAM_DDR_CWL {6}  \
    CONFIG.PCW_UIPARAM_DDR_T_RCD {7}  \
    CONFIG.PCW_UIPARAM_DDR_T_RP {7}  \
    CONFIG.PCW_UIPARAM_DDR_T_RC {48.75}  \
    CONFIG.PCW_UIPARAM_DDR_T_RAS_MIN {35.0}  \
    CONFIG.PCW_UIPARAM_DDR_T_FAW {40.0}  \
    CONFIG.PCW_UIPARAM_DDR_AL {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 {-0.073}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 {-0.034}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 {-0.03}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 {-0.082}  \
    CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY0 {0.176}  \
    CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY1 {0.159}  \
    CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY2 {0.162}  \
    CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY3 {0.187}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_0_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_1_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_2_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_3_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_0_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_1_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_2_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_3_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_0_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_1_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_2_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_3_LENGTH_MM {0}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_0_PACKAGE_LENGTH {101.239}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_1_PACKAGE_LENGTH {79.5025}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_2_PACKAGE_LENGTH {60.536}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_3_PACKAGE_LENGTH {71.7715}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_0_PACKAGE_LENGTH {104.5365}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_1_PACKAGE_LENGTH {70.676}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_2_PACKAGE_LENGTH {59.1615}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_3_PACKAGE_LENGTH {81.319}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_0_PACKAGE_LENGTH {54.563}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_1_PACKAGE_LENGTH {54.563}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_2_PACKAGE_LENGTH {54.563}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_3_PACKAGE_LENGTH {54.563}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_0_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_1_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_2_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_DQS_3_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_0_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_1_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_2_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_DQ_3_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_0_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_1_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_2_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_3_PROPOGATION_DELAY {160}  \
    CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_0 {-0.047}  \
    CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_1 {-0.025}  \
    CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_2 {-0.006}  \
    CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_3 {-0.017}  \
    CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY0 {0.080}  \
    CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY1 {0.063}  \
    CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY2 {0.057}  \
    CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY3 {0.068}  \
    CONFIG.PCW_CPU_CPU_6X4X_MAX_RANGE {667}  \
    CONFIG.PCW_CRYSTAL_PERIPHERAL_FREQMHZ {50.000000}  \
    CONFIG.PCW_APU_PERIPHERAL_FREQMHZ {650}  \
    CONFIG.PCW_DCI_PERIPHERAL_FREQMHZ {10.159}  \
    CONFIG.PCW_QSPI_PERIPHERAL_FREQMHZ {200}  \
    CONFIG.PCW_SMC_PERIPHERAL_FREQMHZ {100}  \
    CONFIG.PCW_USB0_PERIPHERAL_FREQMHZ {60}  \
    CONFIG.PCW_USB1_PERIPHERAL_FREQMHZ {60}  \
    CONFIG.PCW_SDIO_PERIPHERAL_FREQMHZ {50}  \
    CONFIG.PCW_UART_PERIPHERAL_FREQMHZ {100}  \
    CONFIG.PCW_SPI_PERIPHERAL_FREQMHZ {166.666666}  \
    CONFIG.PCW_CAN_PERIPHERAL_FREQMHZ {100}  \
    CONFIG.PCW_CAN0_PERIPHERAL_FREQMHZ {-1}  \
    CONFIG.PCW_CAN1_PERIPHERAL_FREQMHZ {-1}  \
    CONFIG.PCW_I2C_PERIPHERAL_FREQMHZ {25}  \
    CONFIG.PCW_WDT_PERIPHERAL_FREQMHZ {133.333333}  \
    CONFIG.PCW_TTC_PERIPHERAL_FREQMHZ {50}  \
    CONFIG.PCW_TTC0_CLK0_PERIPHERAL_FREQMHZ {133.333333}  \
    CONFIG.PCW_TTC0_CLK1_PERIPHERAL_FREQMHZ {133.333333}  \
    CONFIG.PCW_TTC0_CLK2_PERIPHERAL_FREQMHZ {133.333333}  \
    CONFIG.PCW_TTC1_CLK0_PERIPHERAL_FREQMHZ {133.333333}  \
    CONFIG.PCW_TTC1_CLK1_PERIPHERAL_FREQMHZ {133.333333}  \
    CONFIG.PCW_TTC1_CLK2_PERIPHERAL_FREQMHZ {133.333333}  \
    CONFIG.PCW_PCAP_PERIPHERAL_FREQMHZ {200}  \
    CONFIG.PCW_TPIU_PERIPHERAL_FREQMHZ {200}  \
    CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {100}  \
    CONFIG.PCW_FPGA1_PERIPHERAL_FREQMHZ {50}  \
    CONFIG.PCW_FPGA2_PERIPHERAL_FREQMHZ {50}  \
    CONFIG.PCW_FPGA3_PERIPHERAL_FREQMHZ {50}  \
    CONFIG.PCW_ACT_APU_PERIPHERAL_FREQMHZ {650.000000}  \
    CONFIG.PCW_UIPARAM_ACT_DDR_FREQ_MHZ {525.000000}  \
    CONFIG.PCW_ACT_DCI_PERIPHERAL_FREQMHZ {10.096154}  \
    CONFIG.PCW_ACT_QSPI_PERIPHERAL_FREQMHZ {200.000000}  \
    CONFIG.PCW_ACT_SMC_PERIPHERAL_FREQMHZ {10.000000}  \
    CONFIG.PCW_ACT_ENET0_PERIPHERAL_FREQMHZ {125.000000}  \
    CONFIG.PCW_ACT_ENET1_PERIPHERAL_FREQMHZ {10.000000}  \
    CONFIG.PCW_ACT_USB0_PERIPHERAL_FREQMHZ {60}  \
    CONFIG.PCW_ACT_USB1_PERIPHERAL_FREQMHZ {60}  \
    CONFIG.PCW_ACT_SDIO_PERIPHERAL_FREQMHZ {50.000000}  \
    CONFIG.PCW_ACT_UART_PERIPHERAL_FREQMHZ {100.000000}  \
    CONFIG.PCW_ACT_SPI_PERIPHERAL_FREQMHZ {10.000000}  \
    CONFIG.PCW_ACT_CAN_PERIPHERAL_FREQMHZ {10.000000}  \
    CONFIG.PCW_ACT_CAN0_PERIPHERAL_FREQMHZ {23.8095}  \
    CONFIG.PCW_ACT_CAN1_PERIPHERAL_FREQMHZ {23.8095}  \
    CONFIG.PCW_ACT_I2C_PERIPHERAL_FREQMHZ {50}  \
    CONFIG.PCW_ACT_WDT_PERIPHERAL_FREQMHZ {108.333336}  \
    CONFIG.PCW_ACT_TTC_PERIPHERAL_FREQMHZ {50}  \
    CONFIG.PCW_ACT_PCAP_PERIPHERAL_FREQMHZ {200.000000}  \
    CONFIG.PCW_ACT_TPIU_PERIPHERAL_FREQMHZ {200.000000}  \
    CONFIG.PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ {100.000000}  \
    CONFIG.PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ {50.000000}  \
    CONFIG.PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ {50.000000}  \
    CONFIG.PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ {50.000000}  \
    CONFIG.PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ {108.333336}  \
    CONFIG.PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ {108.333336}  \
    CONFIG.PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ {108.333336}  \
    CONFIG.PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ {108.333336}  \
    CONFIG.PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ {108.333336}  \
    CONFIG.PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ {108.333336}  \
    CONFIG.PCW_CLK0_FREQ {100000000}  \
    CONFIG.PCW_CLK1_FREQ {50000000}  \
    CONFIG.PCW_CLK2_FREQ {50000000}  \
    CONFIG.PCW_CLK3_FREQ {50000000}  \
    CONFIG.PCW_OVERRIDE_BASIC_CLOCK {0}  \
    CONFIG.PCW_CPU_PERIPHERAL_DIVISOR0 {2}  \
    CONFIG.PCW_DDR_PERIPHERAL_DIVISOR0 {2}  \
    CONFIG.PCW_SMC_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_QSPI_PERIPHERAL_DIVISOR0 {5}  \
    CONFIG.PCW_SDIO_PERIPHERAL_DIVISOR0 {20}  \
    CONFIG.PCW_UART_PERIPHERAL_DIVISOR0 {10}  \
    CONFIG.PCW_SPI_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_CAN_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_CAN_PERIPHERAL_DIVISOR1 {1}  \
    CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR0 {10}  \
    CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR0 {20}  \
    CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR0 {20}  \
    CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR0 {20}  \
    CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR1 {1}  \
    CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR1 {1}  \
    CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR1 {1}  \
    CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR1 {1}  \
    CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR0 {8}  \
    CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR1 {1}  \
    CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR1 {1}  \
    CONFIG.PCW_TPIU_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_DCI_PERIPHERAL_DIVISOR0 {52}  \
    CONFIG.PCW_DCI_PERIPHERAL_DIVISOR1 {2}  \
    CONFIG.PCW_PCAP_PERIPHERAL_DIVISOR0 {5}  \
    CONFIG.PCW_TTC0_CLK0_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_TTC0_CLK1_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_TTC0_CLK2_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_TTC1_CLK0_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_TTC1_CLK1_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_TTC1_CLK2_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_WDT_PERIPHERAL_DIVISOR0 {1}  \
    CONFIG.PCW_ARMPLL_CTRL_FBDIV {26}  \
    CONFIG.PCW_IOPLL_CTRL_FBDIV {20}  \
    CONFIG.PCW_DDRPLL_CTRL_FBDIV {21}  \
    CONFIG.PCW_CPU_CPU_PLL_FREQMHZ {1300.000}  \
    CONFIG.PCW_IO_IO_PLL_FREQMHZ {1000.000}  \
    CONFIG.PCW_DDR_DDR_PLL_FREQMHZ {1050.000}  \
    CONFIG.PCW_SMC_PERIPHERAL_VALID {0}  \
    CONFIG.PCW_SDIO_PERIPHERAL_VALID {1}  \
    CONFIG.PCW_SPI_PERIPHERAL_VALID {0}  \
    CONFIG.PCW_CAN_PERIPHERAL_VALID {0}  \
    CONFIG.PCW_UART_PERIPHERAL_VALID {1}  \
    CONFIG.PCW_EN_EMIO_CAN0 {0}  \
    CONFIG.PCW_EN_EMIO_CAN1 {0}  \
    CONFIG.PCW_EN_EMIO_ENET0 {0}  \
    CONFIG.PCW_EN_EMIO_ENET1 {0}  \
    CONFIG.PCW_EN_PTP_ENET0 {0}  \
    CONFIG.PCW_EN_PTP_ENET1 {0}  \
    CONFIG.PCW_EN_EMIO_GPIO {0}  \
    CONFIG.PCW_EN_EMIO_I2C0 {0}  \
    CONFIG.PCW_EN_EMIO_I2C1 {0}  \
    CONFIG.PCW_EN_EMIO_PJTAG {0}  \
    CONFIG.PCW_EN_EMIO_SDIO0 {0}  \
    CONFIG.PCW_EN_EMIO_CD_SDIO0 {0}  \
    CONFIG.PCW_EN_EMIO_WP_SDIO0 {1}  \
    CONFIG.PCW_EN_EMIO_SDIO1 {0}  \
    CONFIG.PCW_EN_EMIO_CD_SDIO1 {0}  \
    CONFIG.PCW_EN_EMIO_WP_SDIO1 {0}  \
    CONFIG.PCW_EN_EMIO_SPI0 {0}  \
    CONFIG.PCW_EN_EMIO_SPI1 {0}  \
    CONFIG.PCW_EN_EMIO_UART0 {0}  \
    CONFIG.PCW_EN_EMIO_UART1 {0}  \
    CONFIG.PCW_EN_EMIO_MODEM_UART0 {0}  \
    CONFIG.PCW_EN_EMIO_MODEM_UART1 {0}  \
    CONFIG.PCW_EN_EMIO_TTC0 {1}  \
    CONFIG.PCW_EN_EMIO_TTC1 {0}  \
    CONFIG.PCW_EN_EMIO_WDT {0}  \
    CONFIG.PCW_EN_EMIO_TRACE {0}  \
    CONFIG.PCW_USE_AXI_NONSECURE {0}  \
    CONFIG.PCW_USE_M_AXI_GP0 {1}  \
    CONFIG.PCW_USE_M_AXI_GP1 {0}  \
    CONFIG.PCW_USE_S_AXI_GP0 {0}  \
    CONFIG.PCW_USE_S_AXI_GP1 {0}  \
    CONFIG.PCW_USE_S_AXI_ACP {0}  \
    CONFIG.PCW_USE_S_AXI_HP0 {0}  \
    CONFIG.PCW_USE_S_AXI_HP1 {0}  \
    CONFIG.PCW_USE_S_AXI_HP2 {0}  \
    CONFIG.PCW_USE_S_AXI_HP3 {0}  \
    CONFIG.PCW_M_AXI_GP0_FREQMHZ {10}  \
    CONFIG.PCW_M_AXI_GP1_FREQMHZ {10}  \
    CONFIG.PCW_S_AXI_GP0_FREQMHZ {10}  \
    CONFIG.PCW_S_AXI_GP1_FREQMHZ {10}  \
    CONFIG.PCW_S_AXI_ACP_FREQMHZ {10}  \
    CONFIG.PCW_S_AXI_HP0_FREQMHZ {10}  \
    CONFIG.PCW_S_AXI_HP1_FREQMHZ {10}  \
    CONFIG.PCW_S_AXI_HP2_FREQMHZ {10}  \
    CONFIG.PCW_S_AXI_HP3_FREQMHZ {10}  \
    CONFIG.PCW_USE_DMA0 {0}  \
    CONFIG.PCW_USE_DMA1 {0}  \
    CONFIG.PCW_USE_DMA2 {0}  \
    CONFIG.PCW_USE_DMA3 {0}  \
    CONFIG.PCW_USE_TRACE {0}  \
    CONFIG.PCW_TRACE_PIPELINE_WIDTH {8}  \
    CONFIG.PCW_INCLUDE_TRACE_BUFFER {0}  \
    CONFIG.PCW_TRACE_BUFFER_FIFO_SIZE {128}  \
    CONFIG.PCW_USE_TRACE_DATA_EDGE_DETECTOR {0}  \
    CONFIG.PCW_TRACE_BUFFER_CLOCK_DELAY {12}  \
    CONFIG.PCW_USE_CROSS_TRIGGER {0}  \
    CONFIG.PCW_FTM_CTI_IN0 {DISABLED}  \
    CONFIG.PCW_FTM_CTI_IN1 {DISABLED}  \
    CONFIG.PCW_FTM_CTI_IN2 {DISABLED}  \
    CONFIG.PCW_FTM_CTI_IN3 {DISABLED}  \
    CONFIG.PCW_FTM_CTI_OUT0 {DISABLED}  \
    CONFIG.PCW_FTM_CTI_OUT1 {DISABLED}  \
    CONFIG.PCW_FTM_CTI_OUT2 {DISABLED}  \
    CONFIG.PCW_FTM_CTI_OUT3 {DISABLED}  \
    CONFIG.PCW_USE_DEBUG {0}  \
    CONFIG.PCW_USE_CR_FABRIC {1}  \
    CONFIG.PCW_USE_AXI_FABRIC_IDLE {0}  \
    CONFIG.PCW_USE_DDR_BYPASS {0}  \
    CONFIG.PCW_USE_FABRIC_INTERRUPT {0}  \
    CONFIG.PCW_USE_PROC_EVENT_BUS {0}  \
    CONFIG.PCW_USE_EXPANDED_IOP {0}  \
    CONFIG.PCW_USE_HIGH_OCM {0}  \
    CONFIG.PCW_USE_PS_SLCR_REGISTERS {0}  \
    CONFIG.PCW_USE_EXPANDED_PS_SLCR_REGISTERS {0}  \
    CONFIG.PCW_USE_CORESIGHT {0}  \
    CONFIG.PCW_EN_EMIO_SRAM_INT {0}  \
    CONFIG.PCW_GPIO_EMIO_GPIO_WIDTH {64}  \
    CONFIG.PCW_UART0_BAUD_RATE {115200}  \
    CONFIG.PCW_UART1_BAUD_RATE {115200}  \
    CONFIG.PCW_EN_4K_TIMER {0}  \
    CONFIG.PCW_M_AXI_GP0_ID_WIDTH {12}  \
    CONFIG.PCW_M_AXI_GP0_ENABLE_STATIC_REMAP {0}  \
    CONFIG.PCW_M_AXI_GP0_SUPPORT_NARROW_BURST {0}  \
    CONFIG.PCW_M_AXI_GP0_THREAD_ID_WIDTH {12}  \
    CONFIG.PCW_M_AXI_GP1_ID_WIDTH {12}  \
    CONFIG.PCW_M_AXI_GP1_ENABLE_STATIC_REMAP {0}  \
    CONFIG.PCW_M_AXI_GP1_SUPPORT_NARROW_BURST {0}  \
    CONFIG.PCW_M_AXI_GP1_THREAD_ID_WIDTH {12}  \
    CONFIG.PCW_S_AXI_GP0_ID_WIDTH {6}  \
    CONFIG.PCW_S_AXI_GP1_ID_WIDTH {6}  \
    CONFIG.PCW_S_AXI_ACP_ID_WIDTH {3}  \
    CONFIG.PCW_INCLUDE_ACP_TRANS_CHECK {0}  \
    CONFIG.PCW_USE_DEFAULT_ACP_USER_VAL {0}  \
    CONFIG.PCW_S_AXI_ACP_ARUSER_VAL {31}  \
    CONFIG.PCW_S_AXI_ACP_AWUSER_VAL {31}  \
    CONFIG.PCW_S_AXI_HP0_ID_WIDTH {6}  \
    CONFIG.PCW_S_AXI_HP0_DATA_WIDTH {64}  \
    CONFIG.PCW_S_AXI_HP1_ID_WIDTH {6}  \
    CONFIG.PCW_S_AXI_HP1_DATA_WIDTH {64}  \
    CONFIG.PCW_S_AXI_HP2_ID_WIDTH {6}  \
    CONFIG.PCW_S_AXI_HP2_DATA_WIDTH {64}  \
    CONFIG.PCW_S_AXI_HP3_ID_WIDTH {6}  \
    CONFIG.PCW_S_AXI_HP3_DATA_WIDTH {64}  \
    CONFIG.PCW_EN_DDR {1}  \
    CONFIG.PCW_EN_SMC {0}  \
    CONFIG.PCW_EN_QSPI {1}  \
    CONFIG.PCW_EN_CAN0 {0}  \
    CONFIG.PCW_EN_CAN1 {0}  \
    CONFIG.PCW_EN_ENET0 {1}  \
    CONFIG.PCW_EN_ENET1 {0}  \
    CONFIG.PCW_EN_GPIO {1}  \
    CONFIG.PCW_EN_I2C0 {0}  \
    CONFIG.PCW_EN_I2C1 {0}  \
    CONFIG.PCW_EN_PJTAG {0}  \
    CONFIG.PCW_EN_SDIO0 {1}  \
    CONFIG.PCW_EN_SDIO1 {0}  \
    CONFIG.PCW_EN_SPI0 {0}  \
    CONFIG.PCW_EN_SPI1 {0}  \
    CONFIG.PCW_EN_UART0 {0}  \
    CONFIG.PCW_EN_UART1 {1}  \
    CONFIG.PCW_EN_MODEM_UART0 {0}  \
    CONFIG.PCW_EN_MODEM_UART1 {0}  \
    CONFIG.PCW_EN_TTC0 {1}  \
    CONFIG.PCW_EN_TTC1 {0}  \
    CONFIG.PCW_EN_WDT {0}  \
    CONFIG.PCW_EN_TRACE {0}  \
    CONFIG.PCW_EN_USB0 {1}  \
    CONFIG.PCW_EN_USB1 {0}  \
    CONFIG.PCW_DQ_WIDTH {32}  \
    CONFIG.PCW_DQS_WIDTH {4}  \
    CONFIG.PCW_DM_WIDTH {4}  \
    CONFIG.PCW_MIO_PRIMITIVE {54}  \
    CONFIG.PCW_EN_CLK0_PORT {1}  \
    CONFIG.PCW_EN_CLK1_PORT {0}  \
    CONFIG.PCW_EN_CLK2_PORT {0}  \
    CONFIG.PCW_EN_CLK3_PORT {0}  \
    CONFIG.PCW_EN_RST0_PORT {1}  \
    CONFIG.PCW_EN_RST1_PORT {0}  \
    CONFIG.PCW_EN_RST2_PORT {0}  \
    CONFIG.PCW_EN_RST3_PORT {0}  \
    CONFIG.PCW_EN_CLKTRIG0_PORT {0}  \
    CONFIG.PCW_EN_CLKTRIG1_PORT {0}  \
    CONFIG.PCW_EN_CLKTRIG2_PORT {0}  \
    CONFIG.PCW_EN_CLKTRIG3_PORT {0}  \
    CONFIG.PCW_P2F_DMAC_ABORT_INTR {0}  \
    CONFIG.PCW_P2F_DMAC0_INTR {0}  \
    CONFIG.PCW_P2F_DMAC1_INTR {0}  \
    CONFIG.PCW_P2F_DMAC2_INTR {0}  \
    CONFIG.PCW_P2F_DMAC3_INTR {0}  \
    CONFIG.PCW_P2F_DMAC4_INTR {0}  \
    CONFIG.PCW_P2F_DMAC5_INTR {0}  \
    CONFIG.PCW_P2F_DMAC6_INTR {0}  \
    CONFIG.PCW_P2F_DMAC7_INTR {0}  \
    CONFIG.PCW_P2F_SMC_INTR {0}  \
    CONFIG.PCW_P2F_QSPI_INTR {0}  \
    CONFIG.PCW_P2F_CTI_INTR {0}  \
    CONFIG.PCW_P2F_GPIO_INTR {0}  \
    CONFIG.PCW_P2F_USB0_INTR {0}  \
    CONFIG.PCW_P2F_ENET0_INTR {0}  \
    CONFIG.PCW_P2F_SDIO0_INTR {0}  \
    CONFIG.PCW_P2F_I2C0_INTR {0}  \
    CONFIG.PCW_P2F_SPI0_INTR {0}  \
    CONFIG.PCW_P2F_UART0_INTR {0}  \
    CONFIG.PCW_P2F_CAN0_INTR {0}  \
    CONFIG.PCW_P2F_USB1_INTR {0}  \
    CONFIG.PCW_P2F_ENET1_INTR {0}  \
    CONFIG.PCW_P2F_SDIO1_INTR {0}  \
    CONFIG.PCW_P2F_I2C1_INTR {0}  \
    CONFIG.PCW_P2F_SPI1_INTR {0}  \
    CONFIG.PCW_P2F_UART1_INTR {0}  \
    CONFIG.PCW_P2F_CAN1_INTR {0}  \
    CONFIG.PCW_IRQ_F2P_INTR {0}  \
    CONFIG.PCW_IRQ_F2P_MODE {DIRECT}  \
    CONFIG.PCW_CORE0_FIQ_INTR {0}  \
    CONFIG.PCW_CORE0_IRQ_INTR {0}  \
    CONFIG.PCW_CORE1_FIQ_INTR {0}  \
    CONFIG.PCW_CORE1_IRQ_INTR {0}  \
    CONFIG.PCW_VALUE_SILVERSION {3}  \
    CONFIG.PCW_IMPORT_BOARD_PRESET {None}  \
    CONFIG.PCW_PERIPHERAL_BOARD_PRESET {part0}  \
    CONFIG.PCW_PRESET_BANK0_VOLTAGE {LVCMOS 3.3V}  \
    CONFIG.PCW_PRESET_BANK1_VOLTAGE {LVCMOS 1.8V}  \
    CONFIG.PCW_UIPARAM_DDR_ENABLE {1}  \
    CONFIG.PCW_UIPARAM_DDR_ADV_ENABLE {0}  \
    CONFIG.PCW_UIPARAM_DDR_MEMORY_TYPE {DDR 3}  \
    CONFIG.PCW_UIPARAM_DDR_ECC {Disabled}  \
    CONFIG.PCW_UIPARAM_DDR_BUS_WIDTH {32 Bit}  \
    CONFIG.PCW_UIPARAM_DDR_BL {8}  \
    CONFIG.PCW_UIPARAM_DDR_HIGH_TEMP {Normal (0-85)}  \
    CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41K128M16 JT-125}  \
    CONFIG.PCW_UIPARAM_DDR_DRAM_WIDTH {16 Bits}  \
    CONFIG.PCW_UIPARAM_DDR_DEVICE_CAPACITY {2048 MBits}  \
    CONFIG.PCW_UIPARAM_DDR_SPEED_BIN {DDR3_1066F}  \
    CONFIG.PCW_UIPARAM_DDR_TRAIN_WRITE_LEVEL {1}  \
    CONFIG.PCW_UIPARAM_DDR_TRAIN_READ_GATE {1}  \
    CONFIG.PCW_UIPARAM_DDR_TRAIN_DATA_EYE {1}  \
    CONFIG.PCW_UIPARAM_DDR_CLOCK_STOP_EN {0}  \
    CONFIG.PCW_UIPARAM_DDR_USE_INTERNAL_VREF {0}  \
    CONFIG.PCW_DDR_PRIORITY_WRITEPORT_0 {<Select>}  \
    CONFIG.PCW_DDR_PRIORITY_WRITEPORT_1 {<Select>}  \
    CONFIG.PCW_DDR_PRIORITY_WRITEPORT_2 {<Select>}  \
    CONFIG.PCW_DDR_PRIORITY_WRITEPORT_3 {<Select>}  \
    CONFIG.PCW_DDR_PRIORITY_READPORT_0 {<Select>}  \
    CONFIG.PCW_DDR_PRIORITY_READPORT_1 {<Select>}  \
    CONFIG.PCW_DDR_PRIORITY_READPORT_2 {<Select>}  \
    CONFIG.PCW_DDR_PRIORITY_READPORT_3 {<Select>}  \
    CONFIG.PCW_DDR_PORT0_HPR_ENABLE {0}  \
    CONFIG.PCW_DDR_PORT1_HPR_ENABLE {0}  \
    CONFIG.PCW_DDR_PORT2_HPR_ENABLE {0}  \
    CONFIG.PCW_DDR_PORT3_HPR_ENABLE {0}  \
    CONFIG.PCW_DDR_HPRLPR_QUEUE_PARTITION {HPR(0)/LPR(32)}  \
    CONFIG.PCW_DDR_LPR_TO_CRITICAL_PRIORITY_LEVEL {2}  \
    CONFIG.PCW_DDR_HPR_TO_CRITICAL_PRIORITY_LEVEL {15}  \
    CONFIG.PCW_DDR_WRITE_TO_CRITICAL_PRIORITY_LEVEL {2}  \
    CONFIG.PCW_NAND_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_NAND_NAND_IO {<Select>}  \
    CONFIG.PCW_NAND_GRP_D8_ENABLE {0}  \
    CONFIG.PCW_NAND_GRP_D8_IO {<Select>}  \
    CONFIG.PCW_NOR_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_NOR_NOR_IO {<Select>}  \
    CONFIG.PCW_NOR_GRP_A25_ENABLE {0}  \
    CONFIG.PCW_NOR_GRP_A25_IO {<Select>}  \
    CONFIG.PCW_NOR_GRP_CS0_ENABLE {0}  \
    CONFIG.PCW_NOR_GRP_CS0_IO {<Select>}  \
    CONFIG.PCW_NOR_GRP_SRAM_CS0_ENABLE {0}  \
    CONFIG.PCW_NOR_GRP_SRAM_CS0_IO {<Select>}  \
    CONFIG.PCW_NOR_GRP_CS1_ENABLE {0}  \
    CONFIG.PCW_NOR_GRP_CS1_IO {<Select>}  \
    CONFIG.PCW_NOR_GRP_SRAM_CS1_ENABLE {0}  \
    CONFIG.PCW_NOR_GRP_SRAM_CS1_IO {<Select>}  \
    CONFIG.PCW_NOR_GRP_SRAM_INT_ENABLE {0}  \
    CONFIG.PCW_NOR_GRP_SRAM_INT_IO {<Select>}  \
    CONFIG.PCW_QSPI_PERIPHERAL_ENABLE {1}  \
    CONFIG.PCW_QSPI_QSPI_IO {MIO 1 .. 6}  \
    CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1}  \
    CONFIG.PCW_QSPI_GRP_SINGLE_SS_IO {MIO 1 .. 6}  \
    CONFIG.PCW_QSPI_GRP_SS1_ENABLE {0}  \
    CONFIG.PCW_QSPI_GRP_SS1_IO {<Select>}  \
    CONFIG.PCW_QSPI_GRP_IO1_ENABLE {0}  \
    CONFIG.PCW_QSPI_GRP_IO1_IO {<Select>}  \
    CONFIG.PCW_QSPI_GRP_FBCLK_ENABLE {1}  \
    CONFIG.PCW_QSPI_GRP_FBCLK_IO {MIO 8}  \
    CONFIG.PCW_QSPI_INTERNAL_HIGHADDRESS {0xFCFFFFFF}  \
    CONFIG.PCW_ENET0_PERIPHERAL_ENABLE {1}  \
    CONFIG.PCW_ENET0_ENET0_IO {MIO 16 .. 27}  \
    CONFIG.PCW_ENET0_GRP_MDIO_ENABLE {1}  \
    CONFIG.PCW_ENET0_GRP_MDIO_IO {MIO 52 .. 53}  \
    CONFIG.PCW_ENET_RESET_ENABLE {1}  \
    CONFIG.PCW_ENET_RESET_SELECT {Share reset pin}  \
    CONFIG.PCW_ENET0_RESET_ENABLE {0}  \
    CONFIG.PCW_ENET0_RESET_IO {<Select>}  \
    CONFIG.PCW_ENET1_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_ENET1_ENET1_IO {<Select>}  \
    CONFIG.PCW_ENET1_GRP_MDIO_ENABLE {0}  \
    CONFIG.PCW_ENET1_GRP_MDIO_IO {<Select>}  \
    CONFIG.PCW_ENET1_RESET_ENABLE {0}  \
    CONFIG.PCW_ENET1_RESET_IO {<Select>}  \
    CONFIG.PCW_SD0_PERIPHERAL_ENABLE {1}  \
    CONFIG.PCW_SD0_SD0_IO {MIO 40 .. 45}  \
    CONFIG.PCW_SD0_GRP_CD_ENABLE {1}  \
    CONFIG.PCW_SD0_GRP_CD_IO {MIO 47}  \
    CONFIG.PCW_SD0_GRP_WP_ENABLE {1}  \
    CONFIG.PCW_SD0_GRP_WP_IO {EMIO}  \
    CONFIG.PCW_SD0_GRP_POW_ENABLE {0}  \
    CONFIG.PCW_SD0_GRP_POW_IO {<Select>}  \
    CONFIG.PCW_SD1_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_SD1_SD1_IO {<Select>}  \
    CONFIG.PCW_SD1_GRP_CD_ENABLE {0}  \
    CONFIG.PCW_SD1_GRP_CD_IO {<Select>}  \
    CONFIG.PCW_SD1_GRP_WP_ENABLE {0}  \
    CONFIG.PCW_SD1_GRP_WP_IO {<Select>}  \
    CONFIG.PCW_SD1_GRP_POW_ENABLE {0}  \
    CONFIG.PCW_SD1_GRP_POW_IO {<Select>}  \
    CONFIG.PCW_UART0_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_UART0_UART0_IO {<Select>}  \
    CONFIG.PCW_UART0_GRP_FULL_ENABLE {0}  \
    CONFIG.PCW_UART0_GRP_FULL_IO {<Select>}  \
    CONFIG.PCW_UART1_PERIPHERAL_ENABLE {1}  \
    CONFIG.PCW_UART1_UART1_IO {MIO 48 .. 49}  \
    CONFIG.PCW_UART1_GRP_FULL_ENABLE {0}  \
    CONFIG.PCW_UART1_GRP_FULL_IO {<Select>}  \
    CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_SPI0_SPI0_IO {<Select>}  \
    CONFIG.PCW_SPI0_GRP_SS0_ENABLE {0}  \
    CONFIG.PCW_SPI0_GRP_SS0_IO {<Select>}  \
    CONFIG.PCW_SPI0_GRP_SS1_ENABLE {0}  \
    CONFIG.PCW_SPI0_GRP_SS1_IO {<Select>}  \
    CONFIG.PCW_SPI0_GRP_SS2_ENABLE {0}  \
    CONFIG.PCW_SPI0_GRP_SS2_IO {<Select>}  \
    CONFIG.PCW_SPI1_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_SPI1_SPI1_IO {<Select>}  \
    CONFIG.PCW_SPI1_GRP_SS0_ENABLE {0}  \
    CONFIG.PCW_SPI1_GRP_SS0_IO {<Select>}  \
    CONFIG.PCW_SPI1_GRP_SS1_ENABLE {0}  \
    CONFIG.PCW_SPI1_GRP_SS1_IO {<Select>}  \
    CONFIG.PCW_SPI1_GRP_SS2_ENABLE {0}  \
    CONFIG.PCW_SPI1_GRP_SS2_IO {<Select>}  \
    CONFIG.PCW_CAN0_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_CAN0_CAN0_IO {<Select>}  \
    CONFIG.PCW_CAN0_GRP_CLK_ENABLE {0}  \
    CONFIG.PCW_CAN0_GRP_CLK_IO {<Select>}  \
    CONFIG.PCW_CAN1_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_CAN1_CAN1_IO {<Select>}  \
    CONFIG.PCW_CAN1_GRP_CLK_ENABLE {0}  \
    CONFIG.PCW_CAN1_GRP_CLK_IO {<Select>}  \
    CONFIG.PCW_TRACE_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_TRACE_TRACE_IO {<Select>}  \
    CONFIG.PCW_TRACE_GRP_2BIT_ENABLE {0}  \
    CONFIG.PCW_TRACE_GRP_2BIT_IO {<Select>}  \
    CONFIG.PCW_TRACE_GRP_4BIT_ENABLE {0}  \
    CONFIG.PCW_TRACE_GRP_4BIT_IO {<Select>}  \
    CONFIG.PCW_TRACE_GRP_8BIT_ENABLE {0}  \
    CONFIG.PCW_TRACE_GRP_8BIT_IO {<Select>}  \
    CONFIG.PCW_TRACE_GRP_16BIT_ENABLE {0}  \
    CONFIG.PCW_TRACE_GRP_16BIT_IO {<Select>}  \
    CONFIG.PCW_TRACE_GRP_32BIT_ENABLE {0}  \
    CONFIG.PCW_TRACE_GRP_32BIT_IO {<Select>}  \
    CONFIG.PCW_TRACE_INTERNAL_WIDTH {2}  \
    CONFIG.PCW_WDT_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_WDT_WDT_IO {<Select>}  \
    CONFIG.PCW_TTC0_PERIPHERAL_ENABLE {1}  \
    CONFIG.PCW_TTC0_TTC0_IO {EMIO}  \
    CONFIG.PCW_TTC1_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_TTC1_TTC1_IO {<Select>}  \
    CONFIG.PCW_PJTAG_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_PJTAG_PJTAG_IO {<Select>}  \
    CONFIG.PCW_USB0_PERIPHERAL_ENABLE {1}  \
    CONFIG.PCW_USB0_USB0_IO {MIO 28 .. 39}  \
    CONFIG.PCW_USB_RESET_ENABLE {1}  \
    CONFIG.PCW_USB_RESET_SELECT {Share reset pin}  \
    CONFIG.PCW_USB0_RESET_ENABLE {1}  \
    CONFIG.PCW_USB0_RESET_IO {MIO 46}  \
    CONFIG.PCW_USB1_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_USB1_USB1_IO {<Select>}  \
    CONFIG.PCW_USB1_RESET_ENABLE {0}  \
    CONFIG.PCW_USB1_RESET_IO {<Select>}  \
    CONFIG.PCW_I2C0_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_I2C0_I2C0_IO {<Select>}  \
    CONFIG.PCW_I2C0_GRP_INT_ENABLE {0}  \
    CONFIG.PCW_I2C0_GRP_INT_IO {<Select>}  \
    CONFIG.PCW_I2C0_RESET_ENABLE {0}  \
    CONFIG.PCW_I2C0_RESET_IO {<Select>}  \
    CONFIG.PCW_I2C1_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_I2C1_I2C1_IO {<Select>}  \
    CONFIG.PCW_I2C1_GRP_INT_ENABLE {0}  \
    CONFIG.PCW_I2C1_GRP_INT_IO {<Select>}  \
    CONFIG.PCW_I2C_RESET_ENABLE {1}  \
    CONFIG.PCW_I2C_RESET_SELECT {<Select>}  \
    CONFIG.PCW_I2C1_RESET_ENABLE {0}  \
    CONFIG.PCW_I2C1_RESET_IO {<Select>}  \
    CONFIG.PCW_GPIO_PERIPHERAL_ENABLE {0}  \
    CONFIG.PCW_GPIO_MIO_GPIO_ENABLE {1}  \
    CONFIG.PCW_GPIO_MIO_GPIO_IO {MIO}  \
    CONFIG.PCW_GPIO_EMIO_GPIO_ENABLE {0}  \
    CONFIG.PCW_GPIO_EMIO_GPIO_IO {<Select>}  \
    CONFIG.PCW_APU_CLK_RATIO_ENABLE {6:2:1}  \
    CONFIG.PCW_ENET0_PERIPHERAL_FREQMHZ {1000 Mbps}  \
    CONFIG.PCW_ENET1_PERIPHERAL_FREQMHZ {1000 Mbps}  \
    CONFIG.PCW_CPU_PERIPHERAL_CLKSRC {ARM PLL}  \
    CONFIG.PCW_DDR_PERIPHERAL_CLKSRC {DDR PLL}  \
    CONFIG.PCW_SMC_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_QSPI_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_SDIO_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_UART_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_SPI_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_CAN_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_FCLK0_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_FCLK1_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_FCLK2_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_FCLK3_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_ENET0_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_ENET1_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_CAN0_PERIPHERAL_CLKSRC {External}  \
    CONFIG.PCW_CAN1_PERIPHERAL_CLKSRC {External}  \
    CONFIG.PCW_TPIU_PERIPHERAL_CLKSRC {External}  \
    CONFIG.PCW_TTC0_CLK0_PERIPHERAL_CLKSRC {CPU_1X}  \
    CONFIG.PCW_TTC0_CLK1_PERIPHERAL_CLKSRC {CPU_1X}  \
    CONFIG.PCW_TTC0_CLK2_PERIPHERAL_CLKSRC {CPU_1X}  \
    CONFIG.PCW_TTC1_CLK0_PERIPHERAL_CLKSRC {CPU_1X}  \
    CONFIG.PCW_TTC1_CLK1_PERIPHERAL_CLKSRC {CPU_1X}  \
    CONFIG.PCW_TTC1_CLK2_PERIPHERAL_CLKSRC {CPU_1X}  \
    CONFIG.PCW_WDT_PERIPHERAL_CLKSRC {CPU_1X}  \
    CONFIG.PCW_DCI_PERIPHERAL_CLKSRC {DDR PLL}  \
    CONFIG.PCW_PCAP_PERIPHERAL_CLKSRC {IO PLL}  \
    CONFIG.PCW_USB_RESET_POLARITY {Active Low}  \
    CONFIG.PCW_ENET_RESET_POLARITY {Active Low}  \
    CONFIG.PCW_I2C_RESET_POLARITY {Active Low}  \
    CONFIG.PCW_MIO_0_PULLUP {enabled}  \
    CONFIG.PCW_MIO_0_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_0_DIRECTION {inout}  \
    CONFIG.PCW_MIO_0_SLEW {slow}  \
    CONFIG.PCW_MIO_1_PULLUP {disabled}  \
    CONFIG.PCW_MIO_1_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_1_DIRECTION {out}  \
    CONFIG.PCW_MIO_1_SLEW {fast}  \
    CONFIG.PCW_MIO_2_PULLUP {disabled}  \
    CONFIG.PCW_MIO_2_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_2_DIRECTION {inout}  \
    CONFIG.PCW_MIO_2_SLEW {fast}  \
    CONFIG.PCW_MIO_3_PULLUP {disabled}  \
    CONFIG.PCW_MIO_3_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_3_DIRECTION {inout}  \
    CONFIG.PCW_MIO_3_SLEW {fast}  \
    CONFIG.PCW_MIO_4_PULLUP {disabled}  \
    CONFIG.PCW_MIO_4_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_4_DIRECTION {inout}  \
    CONFIG.PCW_MIO_4_SLEW {fast}  \
    CONFIG.PCW_MIO_5_PULLUP {disabled}  \
    CONFIG.PCW_MIO_5_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_5_DIRECTION {inout}  \
    CONFIG.PCW_MIO_5_SLEW {fast}  \
    CONFIG.PCW_MIO_6_PULLUP {disabled}  \
    CONFIG.PCW_MIO_6_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_6_DIRECTION {out}  \
    CONFIG.PCW_MIO_6_SLEW {fast}  \
    CONFIG.PCW_MIO_7_PULLUP {disabled}  \
    CONFIG.PCW_MIO_7_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_7_DIRECTION {out}  \
    CONFIG.PCW_MIO_7_SLEW {slow}  \
    CONFIG.PCW_MIO_8_PULLUP {disabled}  \
    CONFIG.PCW_MIO_8_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_8_DIRECTION {out}  \
    CONFIG.PCW_MIO_8_SLEW {fast}  \
    CONFIG.PCW_MIO_9_PULLUP {enabled}  \
    CONFIG.PCW_MIO_9_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_9_DIRECTION {inout}  \
    CONFIG.PCW_MIO_9_SLEW {slow}  \
    CONFIG.PCW_MIO_10_PULLUP {enabled}  \
    CONFIG.PCW_MIO_10_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_10_DIRECTION {inout}  \
    CONFIG.PCW_MIO_10_SLEW {slow}  \
    CONFIG.PCW_MIO_11_PULLUP {enabled}  \
    CONFIG.PCW_MIO_11_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_11_DIRECTION {inout}  \
    CONFIG.PCW_MIO_11_SLEW {slow}  \
    CONFIG.PCW_MIO_12_PULLUP {enabled}  \
    CONFIG.PCW_MIO_12_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_12_DIRECTION {inout}  \
    CONFIG.PCW_MIO_12_SLEW {slow}  \
    CONFIG.PCW_MIO_13_PULLUP {enabled}  \
    CONFIG.PCW_MIO_13_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_13_DIRECTION {inout}  \
    CONFIG.PCW_MIO_13_SLEW {slow}  \
    CONFIG.PCW_MIO_14_PULLUP {enabled}  \
    CONFIG.PCW_MIO_14_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_14_DIRECTION {inout}  \
    CONFIG.PCW_MIO_14_SLEW {slow}  \
    CONFIG.PCW_MIO_15_PULLUP {enabled}  \
    CONFIG.PCW_MIO_15_IOTYPE {LVCMOS 3.3V}  \
    CONFIG.PCW_MIO_15_DIRECTION {inout}  \
    CONFIG.PCW_MIO_15_SLEW {slow}  \
    CONFIG.PCW_MIO_16_PULLUP {disabled}  \
    CONFIG.PCW_MIO_16_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_16_DIRECTION {out}  \
    CONFIG.PCW_MIO_16_SLEW {fast}  \
    CONFIG.PCW_MIO_17_PULLUP {disabled}  \
    CONFIG.PCW_MIO_17_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_17_DIRECTION {out}  \
    CONFIG.PCW_MIO_17_SLEW {fast}  \
    CONFIG.PCW_MIO_18_PULLUP {disabled}  \
    CONFIG.PCW_MIO_18_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_18_DIRECTION {out}  \
    CONFIG.PCW_MIO_18_SLEW {fast}  \
    CONFIG.PCW_MIO_19_PULLUP {disabled}  \
    CONFIG.PCW_MIO_19_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_19_DIRECTION {out}  \
    CONFIG.PCW_MIO_19_SLEW {fast}  \
    CONFIG.PCW_MIO_20_PULLUP {disabled}  \
    CONFIG.PCW_MIO_20_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_20_DIRECTION {out}  \
    CONFIG.PCW_MIO_20_SLEW {fast}  \
    CONFIG.PCW_MIO_21_PULLUP {disabled}  \
    CONFIG.PCW_MIO_21_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_21_DIRECTION {out}  \
    CONFIG.PCW_MIO_21_SLEW {fast}  \
    CONFIG.PCW_MIO_22_PULLUP {disabled}  \
    CONFIG.PCW_MIO_22_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_22_DIRECTION {in}  \
    CONFIG.PCW_MIO_22_SLEW {fast}  \
    CONFIG.PCW_MIO_23_PULLUP {disabled}  \
    CONFIG.PCW_MIO_23_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_23_DIRECTION {in}  \
    CONFIG.PCW_MIO_23_SLEW {fast}  \
    CONFIG.PCW_MIO_24_PULLUP {disabled}  \
    CONFIG.PCW_MIO_24_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_24_DIRECTION {in}  \
    CONFIG.PCW_MIO_24_SLEW {fast}  \
    CONFIG.PCW_MIO_25_PULLUP {disabled}  \
    CONFIG.PCW_MIO_25_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_25_DIRECTION {in}  \
    CONFIG.PCW_MIO_25_SLEW {fast}  \
    CONFIG.PCW_MIO_26_PULLUP {disabled}  \
    CONFIG.PCW_MIO_26_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_26_DIRECTION {in}  \
    CONFIG.PCW_MIO_26_SLEW {fast}  \
    CONFIG.PCW_MIO_27_PULLUP {disabled}  \
    CONFIG.PCW_MIO_27_IOTYPE {HSTL 1.8V}  \
    CONFIG.PCW_MIO_27_DIRECTION {in}  \
    CONFIG.PCW_MIO_27_SLEW {fast}  \
    CONFIG.PCW_MIO_28_PULLUP {disabled}  \
    CONFIG.PCW_MIO_28_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_28_DIRECTION {inout}  \
    CONFIG.PCW_MIO_28_SLEW {fast}  \
    CONFIG.PCW_MIO_29_PULLUP {disabled}  \
    CONFIG.PCW_MIO_29_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_29_DIRECTION {in}  \
    CONFIG.PCW_MIO_29_SLEW {fast}  \
    CONFIG.PCW_MIO_30_PULLUP {disabled}  \
    CONFIG.PCW_MIO_30_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_30_DIRECTION {out}  \
    CONFIG.PCW_MIO_30_SLEW {fast}  \
    CONFIG.PCW_MIO_31_PULLUP {disabled}  \
    CONFIG.PCW_MIO_31_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_31_DIRECTION {in}  \
    CONFIG.PCW_MIO_31_SLEW {fast}  \
    CONFIG.PCW_MIO_32_PULLUP {disabled}  \
    CONFIG.PCW_MIO_32_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_32_DIRECTION {inout}  \
    CONFIG.PCW_MIO_32_SLEW {fast}  \
    CONFIG.PCW_MIO_33_PULLUP {disabled}  \
    CONFIG.PCW_MIO_33_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_33_DIRECTION {inout}  \
    CONFIG.PCW_MIO_33_SLEW {fast}  \
    CONFIG.PCW_MIO_34_PULLUP {disabled}  \
    CONFIG.PCW_MIO_34_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_34_DIRECTION {inout}  \
    CONFIG.PCW_MIO_34_SLEW {fast}  \
    CONFIG.PCW_MIO_35_PULLUP {disabled}  \
    CONFIG.PCW_MIO_35_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_35_DIRECTION {inout}  \
    CONFIG.PCW_MIO_35_SLEW {fast}  \
    CONFIG.PCW_MIO_36_PULLUP {disabled}  \
    CONFIG.PCW_MIO_36_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_36_DIRECTION {in}  \
    CONFIG.PCW_MIO_36_SLEW {fast}  \
    CONFIG.PCW_MIO_37_PULLUP {disabled}  \
    CONFIG.PCW_MIO_37_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_37_DIRECTION {inout}  \
    CONFIG.PCW_MIO_37_SLEW {fast}  \
    CONFIG.PCW_MIO_38_PULLUP {disabled}  \
    CONFIG.PCW_MIO_38_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_38_DIRECTION {inout}  \
    CONFIG.PCW_MIO_38_SLEW {fast}  \
    CONFIG.PCW_MIO_39_PULLUP {disabled}  \
    CONFIG.PCW_MIO_39_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_39_DIRECTION {inout}  \
    CONFIG.PCW_MIO_39_SLEW {fast}  \
    CONFIG.PCW_MIO_40_PULLUP {disabled}  \
    CONFIG.PCW_MIO_40_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_40_DIRECTION {inout}  \
    CONFIG.PCW_MIO_40_SLEW {fast}  \
    CONFIG.PCW_MIO_41_PULLUP {disabled}  \
    CONFIG.PCW_MIO_41_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_41_DIRECTION {inout}  \
    CONFIG.PCW_MIO_41_SLEW {fast}  \
    CONFIG.PCW_MIO_42_PULLUP {disabled}  \
    CONFIG.PCW_MIO_42_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_42_DIRECTION {inout}  \
    CONFIG.PCW_MIO_42_SLEW {fast}  \
    CONFIG.PCW_MIO_43_PULLUP {disabled}  \
    CONFIG.PCW_MIO_43_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_43_DIRECTION {inout}  \
    CONFIG.PCW_MIO_43_SLEW {fast}  \
    CONFIG.PCW_MIO_44_PULLUP {disabled}  \
    CONFIG.PCW_MIO_44_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_44_DIRECTION {inout}  \
    CONFIG.PCW_MIO_44_SLEW {fast}  \
    CONFIG.PCW_MIO_45_PULLUP {disabled}  \
    CONFIG.PCW_MIO_45_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_45_DIRECTION {inout}  \
    CONFIG.PCW_MIO_45_SLEW {fast}  \
    CONFIG.PCW_MIO_46_PULLUP {enabled}  \
    CONFIG.PCW_MIO_46_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_46_DIRECTION {out}  \
    CONFIG.PCW_MIO_46_SLEW {slow}  \
    CONFIG.PCW_MIO_47_PULLUP {disabled}  \
    CONFIG.PCW_MIO_47_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_47_DIRECTION {in}  \
    CONFIG.PCW_MIO_47_SLEW {slow}  \
    CONFIG.PCW_MIO_48_PULLUP {disabled}  \
    CONFIG.PCW_MIO_48_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_48_DIRECTION {out}  \
    CONFIG.PCW_MIO_48_SLEW {slow}  \
    CONFIG.PCW_MIO_49_PULLUP {disabled}  \
    CONFIG.PCW_MIO_49_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_49_DIRECTION {in}  \
    CONFIG.PCW_MIO_49_SLEW {slow}  \
    CONFIG.PCW_MIO_50_PULLUP {disabled}  \
    CONFIG.PCW_MIO_50_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_50_DIRECTION {inout}  \
    CONFIG.PCW_MIO_50_SLEW {slow}  \
    CONFIG.PCW_MIO_51_PULLUP {disabled}  \
    CONFIG.PCW_MIO_51_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_51_DIRECTION {inout}  \
    CONFIG.PCW_MIO_51_SLEW {slow}  \
    CONFIG.PCW_MIO_52_PULLUP {disabled}  \
    CONFIG.PCW_MIO_52_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_52_DIRECTION {out}  \
    CONFIG.PCW_MIO_52_SLEW {slow}  \
    CONFIG.PCW_MIO_53_PULLUP {disabled}  \
    CONFIG.PCW_MIO_53_IOTYPE {LVCMOS 1.8V}  \
    CONFIG.PCW_MIO_53_DIRECTION {inout}  \
    CONFIG.PCW_MIO_53_SLEW {slow}  \
    CONFIG.PCW_UIPARAM_GENERATE_SUMMARY {NA}  \
    CONFIG.PCW_MIO_TREE_PERIPHERALS {GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#Quad SPI Flash#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#USB Reset#SD 0#UART 1#UART 1#GPIO#GPIO#Enet 0#Enet 0}  \
    CONFIG.PCW_MIO_TREE_SIGNALS {gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]#qspi0_sclk#gpio[7]#qspi_fbclk#gpio[9]#gpio[10]#gpio[11]#gpio[12]#gpio[13]#gpio[14]#gpio[15]#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#reset#cd#tx#rx#gpio[50]#gpio[51]#mdc#mdio}  \
    CONFIG.PCW_PS7_SI_REV {PRODUCTION}  \
    CONFIG.PCW_FPGA_FCLK0_ENABLE {1}  \
    CONFIG.PCW_FPGA_FCLK1_ENABLE {0}  \
    CONFIG.PCW_FPGA_FCLK2_ENABLE {0}  \
    CONFIG.PCW_FPGA_FCLK3_ENABLE {0}  \
    CONFIG.PCW_NOR_SRAM_CS0_T_TR {1}  \
    CONFIG.PCW_NOR_SRAM_CS0_T_PC {1}  \
    CONFIG.PCW_NOR_SRAM_CS0_T_WP {1}  \
    CONFIG.PCW_NOR_SRAM_CS0_T_CEOE {1}  \
    CONFIG.PCW_NOR_SRAM_CS0_T_WC {11}  \
    CONFIG.PCW_NOR_SRAM_CS0_T_RC {11}  \
    CONFIG.PCW_NOR_SRAM_CS0_WE_TIME {0}  \
    CONFIG.PCW_NOR_SRAM_CS1_T_TR {1}  \
    CONFIG.PCW_NOR_SRAM_CS1_T_PC {1}  \
    CONFIG.PCW_NOR_SRAM_CS1_T_WP {1}  \
    CONFIG.PCW_NOR_SRAM_CS1_T_CEOE {1}  \
    CONFIG.PCW_NOR_SRAM_CS1_T_WC {11}  \
    CONFIG.PCW_NOR_SRAM_CS1_T_RC {11}  \
    CONFIG.PCW_NOR_SRAM_CS1_WE_TIME {0}  \
    CONFIG.PCW_NOR_CS0_T_TR {1}  \
    CONFIG.PCW_NOR_CS0_T_PC {1}  \
    CONFIG.PCW_NOR_CS0_T_WP {1}  \
    CONFIG.PCW_NOR_CS0_T_CEOE {1}  \
    CONFIG.PCW_NOR_CS0_T_WC {11}  \
    CONFIG.PCW_NOR_CS0_T_RC {11}  \
    CONFIG.PCW_NOR_CS0_WE_TIME {0}  \
    CONFIG.PCW_NOR_CS1_T_TR {1}  \
    CONFIG.PCW_NOR_CS1_T_PC {1}  \
    CONFIG.PCW_NOR_CS1_T_WP {1}  \
    CONFIG.PCW_NOR_CS1_T_CEOE {1}  \
    CONFIG.PCW_NOR_CS1_T_WC {11}  \
    CONFIG.PCW_NOR_CS1_T_RC {11}  \
    CONFIG.PCW_NOR_CS1_WE_TIME {0}  \
    CONFIG.PCW_NAND_CYCLES_T_RR {1}  \
    CONFIG.PCW_NAND_CYCLES_T_AR {1}  \
    CONFIG.PCW_NAND_CYCLES_T_CLR {1}  \
    CONFIG.PCW_NAND_CYCLES_T_WP {1}  \
    CONFIG.PCW_NAND_CYCLES_T_REA {1}  \
    CONFIG.PCW_NAND_CYCLES_T_WC {11}  \
    CONFIG.PCW_NAND_CYCLES_T_RC {11}  \
    CONFIG.PCW_SMC_CYCLE_T0 {NA}  \
    CONFIG.PCW_SMC_CYCLE_T1 {NA}  \
    CONFIG.PCW_SMC_CYCLE_T2 {NA}  \
    CONFIG.PCW_SMC_CYCLE_T3 {NA}  \
    CONFIG.PCW_SMC_CYCLE_T4 {NA}  \
    CONFIG.PCW_SMC_CYCLE_T5 {NA}  \
    CONFIG.PCW_SMC_CYCLE_T6 {NA}  \
    CONFIG.PCW_PACKAGE_NAME {clg400}  \
    CONFIG.PCW_PLL_BYPASSMODE_ENABLE {0}  \
	CONFIG.preset {Default*}\
	] $processing_system7_0

  # Create instance: processing_system7_0_axi_periph, and set properties
  set processing_system7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 processing_system7_0_axi_periph ]
  set_property -dict [ list CONFIG.NUM_MI {1}  ] $processing_system7_0_axi_periph

  # Create instance: rst_processing_system7_0_100M, and set properties
  set rst_processing_system7_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_processing_system7_0_100M ]

  # Create instance: vio_0, and set properties
  set vio_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:vio:3.0 vio_0 ]
  set_property -dict [ list CONFIG.C_NUM_PROBE_IN {0}  ] $vio_0

  # Create interface connections
  connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR]
  connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO]
  connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins processing_system7_0_axi_periph/S00_AXI]
  connect_bd_intf_net -intf_net processing_system7_0_axi_periph_M00_AXI [get_bd_intf_pins irq_gen_0/S_AXI] [get_bd_intf_pins processing_system7_0_axi_periph/M00_AXI]

  # Create port connections
  connect_bd_net -net irq_gen_0_IRQ [get_bd_pins ila_0/probe2] [get_bd_pins irq_gen_0/IRQ] [get_bd_pins processing_system7_0/Core1_nIRQ]
  connect_bd_net -net irq_gen_0_slv_reg [get_bd_pins ila_0/probe1] [get_bd_pins irq_gen_0/slv_reg]
  connect_bd_net -net irq_gen_0_vio_rise_edge [get_bd_pins ila_0/probe0] [get_bd_pins irq_gen_0/vio_rise_edge]
  connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_pins ila_0/clk] [get_bd_pins irq_gen_0/S_AXI_ACLK] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins processing_system7_0_axi_periph/ACLK] [get_bd_pins processing_system7_0_axi_periph/M00_ACLK] [get_bd_pins processing_system7_0_axi_periph/S00_ACLK] [get_bd_pins rst_processing_system7_0_100M/slowest_sync_clk] [get_bd_pins vio_0/clk]
  connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_processing_system7_0_100M/ext_reset_in]
  connect_bd_net -net rst_processing_system7_0_100M_interconnect_aresetn [get_bd_pins processing_system7_0_axi_periph/ARESETN] [get_bd_pins rst_processing_system7_0_100M/interconnect_aresetn]
  connect_bd_net -net rst_processing_system7_0_100M_peripheral_aresetn [get_bd_pins irq_gen_0/S_AXI_ARESETN] [get_bd_pins processing_system7_0_axi_periph/M00_ARESETN] [get_bd_pins processing_system7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_processing_system7_0_100M/peripheral_aresetn]
  connect_bd_net -net vio_0_probe_out0 [get_bd_pins ila_0/probe3] [get_bd_pins irq_gen_0/VIO_IRQ_TICK] [get_bd_pins vio_0/probe_out0]

  # Create address segments
  create_bd_addr_seg -range 0x10000 -offset 0x78600000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs irq_gen_0/S_AXI/reg0] SEG_irq_gen_0_reg0
  

  # Restore current instance
  current_bd_instance $oldCurInst

  save_bd_design
}
# End of create_root_design()


##################################################################
# MAIN FLOW
##################################################################

create_root_design ""

 

There are some changes to the previous tcl script that I posted. They are in the property list of the ila and of course the property list of the Zynq processing system.

set_property -dict [ list CONFIG.C_MONITOR_TYPE {Native} CONFIG.C_NUM_OF_PROBES {4}  ] $ila_0

instead of

set_property -dict [ list CONFIG.C_ENABLE_ILA_AXI_MON {false} CONFIG.C_MONITOR_TYPE {Native} CONFIG.C_NUM_OF_PROBES {4}  ] $ila_0

as far as the ila.

In the property list of Zynq, I posted the Configs of the preset file.

I managed to see a "Hello World" one time in the terminal from the first core and not the second, but I haven't been able to reproduce it. I don't think the problem lies still in the board design part, but I would be happy to hear your opinion. Maybe you could reproduce the result. In the XAPP1079 instructions, a modified BSP (5.19) is used. I have tried using this and the current BSP of the SDK (6.2), but I haven't seen a difference. Is it absolutely necessary to use the BSP that the instructions say or any other should be fine?

create_bd_701_new.tcl

Link to comment
Share on other sites

I managed to make the application note run on Zybo, but with some minor problems.

As far as the tcl script for block design is concerned, I copied the configs from the configuration preset for the Zybo and pasted them in the property list of the instance of processing_system7_0 in the code.

Here is the code snippet. It is abbreviated because it is too large to post, but I have attached the whole file.

# Create instance: processing_system7_0, and set properties
  set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ]
  set_property -dict [ list CONFIG.PCW_DDR_RAM_BASEADDR {0x00100000}  \
    CONFIG.PCW_DDR_RAM_HIGHADDR {0x1FFFFFFF}  \
    .
    .
    .
    CONFIG.PCW_PLL_BYPASSMODE_ENABLE {0}  \
    CONFIG.preset {Default*}\
    ] $processing_system7_0

As far the .c file for CPU0, I followed this post.

I changed the part that would reset CPU1,

{
/*
*  Reset and start CPU1
*- Application for cpu1 exists at 0x00000000 per cpu1 linkerscript
...
...
...
}

with this code.

#define CPU1STARTADR 0xfffffff0
#define sev() __asm__("sev")

print("CPU0: writing startaddress for cpu1\n\r");

print("CPU0: writing startaddress for cpu1\n\r");
Xil_Out32(CPU1STARTADR, 0x00200000);
dmb(); //waits until write has finished

print("CPU0: sending the SEV to wake up CPU1\n\r");
sev();

Now when I debug the application projects in the SDK, I can see continuous Hello Worlds from both CPUs. The minor problem that continues to exist is that the part of the application note about the interrupt doesn't seem to work. I don't know it it is because the change in the .c file of CPU0.

create_bd_701_new.tcl

app_cpu0.c

Link to comment
Share on other sites

I am now trying to run a program or two from the ParMibench (or here). I started with basicmath. As I understand, it uses threads. But is it possible to have threads in a bare-metal application, or is it necessary to install a version of Linux on Zybo?

I tried making a blank application project in the SDK and then importing the files that are in the basic math folder. In one of the files the pthread.h file is included, but as this is a bare-metal application there is no pthread.h from the operating system. Is it possible at all to run such an application in the current setup (with some moderate changes) or is it a given that I should install a Linux distribution?

Link to comment
Share on other sites

I modified a benchmark from the ParMiBench suite to run in bare-metal. The thing is it runs significantly slower than when I run it on Linux. It may be something with the way I modified it, or something inherent in bare-metal execution. The benchamrk is part of the Basicmath subsuite. It essentially converts rad to degrees and degrees to rad. In Linux you can choose the number of workers (threads), but I am comparing two workers executing it, with it running on both CPUs in bare-metal, so in essence it should at least be somewhat close.

 

This is what I wrote for bare-metal based on the XAPP1079. I attached the entirety of the files, but I will post underneath the essential parts.

 

Spoiler

 

CPU0


#define CPU1STARTADR 0xfffffff0
	#define sev() __asm__("sev")

    print("CPU0: writing startaddress for cpu1\n\r");
    Xil_Out32(CPU1STARTADR, 0x00200000);
    dmb(); //waits until write has finished

    print("CPU0: sending the SEV to wake up CPU1\n\r");
    sev();

    double X;
    double value;
    int selector = 2;

    XTime tStart, tEnd;

    if(selector==1){

    	//degToRadianConvLarge

		printf("********* PERFORM DEGREE TO RADIAN ANGLE CONVERSION : ***********\n");
		XTime_GetTime(&tStart);
		for (X = 0.0; X <= 180.0; X +=1e-9){
			//Uncomment if wanting to print
			/*
			printf("Conversion from CPU0: %3.0f degrees = %.12f radians\n", X, (PI * X / 180.0));
			COMM_VAL = 1;
			while(COMM_VAL == 1);
			*/
			value = (PI * X / 180.0);
		}
		XTime_GetTime(&tEnd);
    }

    else if(selector==2){

    	//degToRadianConvSmall

		printf("********* PERFORM DEGREE TO RADIAN ANGLE CONVERSION : ***********\n");
		XTime_GetTime(&tStart);
		for (X = 0.0; X <= 180.0; X +=1e-8){
			//Uncomment if wanting to print
			/*
			printf("Conversion from CPU0: %3.0f degrees = %.12f radians\n", X, (PI * X / 180.0));
			COMM_VAL = 1;
			while(COMM_VAL == 1);
			*/
			value = (PI * X / 180.0);
		}
		XTime_GetTime(&tEnd);
    }

	...The same for the rad to degrees conversion...

    COMM_VAL = 1;

    printf("Output from CPU0 took %.2f seconds. \n", 1.0 * (tEnd - tStart) / (COUNTS_PER_SECOND));

    return 0;

 

 

Spoiler

 

CPU1


double X;
	double value;
	int selector = 2;

	XTime tStart, tEnd;

	if(selector==1){

		//degToRadianConvLarge
		XTime_GetTime(&tStart);
		for (X = 181.0; X <= 360.0; X +=1e-9){
			//Uncomment if wanting to print
			/*
			while(COMM_VAL == 0){};
			printf("Conversion from CPU0: %3.0f degrees = %.12f radians\n", X, (PI * X / 180.0));
			COMM_VAL = 0;
			*/
			value = (PI * X / 180.0);
		}
		XTime_GetTime(&tEnd);
	}

	else if(selector==2){

		//degToRadianConvSmall
		XTime_GetTime(&tStart);
		for (X = 181.0; X <= 360.0; X +=1e-8){
			//Uncomment if wanting to print
			/*
			while(COMM_VAL == 0){};
			printf("Conversion from CPU0: %3.0f degrees = %.12f radians\n", X, (PI * X / 180.0));
			COMM_VAL = 0;
			*/
			value = (PI * X / 180.0);
		}
		XTime_GetTime(&tEnd);
	}

	...The same for the rad to degrees conversion...

	/*
	 * Disable and disconnect the interrupt system
	 */
	DisableIntrSystem(&IntcInstancePtr, PL_IRQ_ID);

	printf("Output from CPU1 took %.2f seconds. \n", 1.0 * (tEnd - tStart) / (COUNTS_PER_SECOND));

	COMM_VAL = 0;

    return 0;

 

On Linux the degrees to rad conversion (small dataset) on both cores takes about 2m51s, but in bare-metal it takes almost 25min.

app_cpu0.c

app_cpu1.c

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...