element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Path II Programmable
  • Challenges & Projects
  • Design Challenges
  • Path II Programmable
  • More
  • Cancel
Path II Programmable
Blog Week #2
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: cmelement14
  • Date Created: 27 Oct 2019 3:21 AM Date Created
  • Views 1176 views
  • Likes 6 likes
  • Comments 6 comments
  • ultra96-v2
  • path ii programmable
Related
Recommended

Week #2

cmelement14
cmelement14
27 Oct 2019

  • HW Lab 7 - Create Custom IP
    • Lesson Learned - Case Sensitive Problem
    • A Missing Field?
    • Duplicated Lines
    • Mystery Folder
  • HW Lab 8 - Walk Around without Mezzanine Board
    • Amazing Hardware Debugger & Built-in Logical Analyzer
    • Missing Menu Item?
  • HW Lab 9 - Incorrect Line Numbers Referred in Lab Instruction
  • SW Lab 1 to 3 - Preparation
  • SW Lab 4 - Explore Further - A Failed Memory Test
    • Mismatch between Instruction and Screenshot
    • Create an Extra Memory Test Application to Fail
  • SW Lab 5 -
  • Missing Instruction for Setting Up Debug Configuration for Copied Application Project
    • Test Results of Four Applications
    • Powerful Xilinx SDK System Debugger
    • Debug Example for Test_Memory_Failure Application
  • Summary

 

 

HW Lab 7 - Create Custom IP

 

HW Lab 7 is much more complicated than the previous labs. We create a custom IP using VHDL and Verilog code. Also complex IPs are used in this lab too. It took 46 min to generate bitstream on my VM (with an Intel Xeon CPU E3-1505M v5 @3.4GHz). 6 out of 8 CPUs and 24GB out of 32GB RAM are assigned to the VM.

 

 

Lesson Learned - Case Sensitive Problem

 

I learned a lesson regarding name case sensitive. There's no consistence in terms of name case sensitive among all parts involved for Xilinx FPGA design. For example, VHDL is case insensitive while Verilog & XDC are case sensitive.

 

I used name LS_Mezz_PWM_Out1 in constrain file but LS_Mezz_PWM_out1 in block diagram, so the synthesizer gave critical warnings:

image

 

My suggestion: having case sensitive mindset when you name everything (no matter in VHDL, Verilog, XDC, etc.) but NEVER use two names which just have UPPER/lower case difference.

 

 

A Missing Field?

 

HW Lab 7, page 5, there's no field called Library as shown in step 7 below (it may mean the field "IP location"). See the screenshot below.

 

image

 

 

Duplicated Lines

 

HW Lab 7, page 19, Figure 24 shows duplicated lines and it should look like below

 

image

 

Mystery Folder

 

HW Lab 7, page 35, Figure 56, somehow I don't have the src folder (I followed the instruction from HW lab 1 to this point without copying anything from provided solution archive) as shown in the lab instruction, but I don't run into any issues without that folder.

 

image

 

 

HW Lab 8 - Walk Around without Mezzanine Board

 

I don't have the Mezzanine (rscasny will send it to all trainees but I cannot wait for this lab) and the LCD mini-Click, so I used a LED (highlighted below).

image

 

The following is a video showing the test result when I cycled the brightness from 0 to 9 and back to 0 through the UART console.

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

 

Amazing Hardware Debugger & Built-in Logical Analyzer

 

I heard about built-in logical analyzer before, but this is the first time I actually used. I am really impressed by how easily we can use JTAG and TCL commands to debug the hardware and logical analyzer core to observe the hardware behavior. Great tools for trouble-shooting hardware design.

 

 

Missing Menu Item?

 

HW Lab 8, page 22, there's no menu items called "Close Implemented Design". I think it really means "Close Project".

image

 

 

HW Lab 9 - Incorrect Line Numbers Referred in Lab Instruction

 

There are a couple of labs talking about TCL commands such as HW Lab 4 and this lab. TCL is very powerful script language widely used in EDA software including FPGA design environment. Probably for each GUI operation in Vivado, SDK or SDSoC, there's one or more corresponding TCL commands accomplishing the same task. You can easily exchange your TCL script files for a design with your colleagues while exchanging GUI design files may be troublesome.

 

I find that from the highlighted line number (shown below) in page 7, HW lab 9 and onwards, all referenced line numbers are offset by 3.

image

 

 

 

SW Lab 1 to 3 - Preparation

 

Just like the HW labs, SW lab instructions are very detailed and straightforward to follow. Lab 1 to 3 are the preparation for the labs followed. Since I started from HW labs, I am already familiar with many operations in these three labs.

 

SW Lab 1 describes the components in the hardware platform archive file. Since I completed the hardware training course, I use the hardware platform file exported from my HW lab 9. If you don't have one from HW lab, you can copy one from the provided solution folder.

 

SW Lab 2 shows how to create a SDK workspace, import hardware platform designed in HW labs and examine HW platform content and documentation.

 

SW Lab 3 teaches how to generate a standalone BSP and configure BSP settings such as UART. It also teaches how to examine sample code and peripheral datasheets.

 

 

 

SW Lab 4 - Explore Further - A Failed Memory Test

 

Mismatch between Instruction and Screenshot

 

HW Lab 4, Page 3, the instruction doesn't match with the screenshot (instruction says Next but screenshot shows Finish). I followed the screenshot and realized it didn't make sense in the next step (i.e., step 3).

image

image

 

 

Create an Extra Memory Test Application to Fail

 

There are three application projects created according to the lab instruction: Hello_Zynq, Test_Memory and Test_Memory_1MB (which is copied from Test_Memory).

 

Based on the Exploring Further section shown below, I created an extra application Test_Memory_Failure which is copied from Test_Memory_1MB.

image

 

Given the factor that it may take a long time to test 2GB DDR RAM to see the failure, I only test 1MB like the Test_Memory application does, but I moved the start offset much higher (as highlighted below in the following screenshot) and make the test to reach into the reserved top 1MB. Thus I expect the test fail and the failure was verified in the next lab - HW Lab 5.

 

image

 

 

 

SW Lab 5 -

Missing Instruction for Setting Up Debug Configuration for Copied Application Project

When I try to set up the run configurations for both Test_Memory_1MB and Test_Memory_Failure application, the configuration didn't pick up the right configuration name and some settings such as project name and application code. I think the lab instruction forget to mentions this extra step I describe below.

image

 

Thus, I have to manually modify those settings as shown in the screenshot below (this is the example for Test_Memory_Failure application)

image

 

 

Test Results of Four Applications

 

Test results in order:

1. Hello_Zynq

2. Test_Memory

3. Test_Memory_1MB

4. Test_Memory_Failure

image

 

 

Powerful Xilinx SDK System Debugger

 

I just realize Xilinx SDK System Debugger is such powerful debugger software based on the following lab instruction. Hope I can exercise its multi-core debugging capability in future projects. A debugger tool supporting Multi-core debugging may cost thousands of dollars.

image

 

Debug Example for Test_Memory_Failure Application

 

I will show the debugging process for the Test_Memory_Failure as a debug example. To speed up the debug process (i.e., shorten the time to generate failure), I increased the start address again (make the first memory access succeed and the second one fail).

image

Let's start the debugger, I created a breakpoint at line 116 in xil_testmem.c file where the actual memory access occurs. There are two default breakpoints created by SDK. One is the automatic stop point in main() after the debugger is launched. The other one is in the _exit() function when main() function returns to the standalone OS.image

 

Let's resume the application execution, it successfully stop at the breakpoint I created. Memory location 0x7ffffff8 has been written with content of 0x1.

image

 

Let's step over once, we see it stops at line 114 (the beginning of the for loop) and variable I and Val are both incremented by 1.

image

 

Let's resume the application execution, it shows the memory access error.

image

 

 

 

Summary

 

The labs are getting more complicated and lab instructions are well written but not perfect. My journey so far is still pretty smooth. I was able to dig a little bit deeper according to the Exploring  Further sections. My blog is based on my personal experience and I cannot guarantee the correctness of the content. Your comments and feedback are always welcome. If any trainee needs help on any lab I have completed, please don't hesitate to ask. Enjoy your training!

  • Sign in to reply

Top Comments

  • nerdyupdates
    nerdyupdates over 6 years ago +1
    Nice work on the memory failure test case! Failed just as you expected. I did not have the SW debug configuration issue you ran into. I wonder why yours did not pick up the naming and settings. You are…
  • cmelement14
    cmelement14 over 6 years ago in reply to clem57 +1
    I haven’t asked for help yet. The lab instructions are very detailed. Maybe later when I work on my project I may have some questions to ask. Stay tuned.
  • cmelement14
    cmelement14 over 6 years ago in reply to cmelement14 +1
    Update: I copied Hello_Zynq project. When I set up the debugger configuration, it automatically picked up a name "System Debugger using Debug_Hello_Zynq.elf on Local (1)". I guess because there's already…
Parents
  • nerdyupdates
    nerdyupdates over 6 years ago

    Nice work on the memory failure test case! Failed just as you expected.

    I did not have the SW debug configuration issue you ran into. I wonder why yours did not pick up the naming and settings.

    You are really powering through! Hopefully I'll be into the HW labs by tomorrow. I'm looking forward to trying the hardware debugger/logic analyzer you mentioned.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
Comment
  • nerdyupdates
    nerdyupdates over 6 years ago

    Nice work on the memory failure test case! Failed just as you expected.

    I did not have the SW debug configuration issue you ran into. I wonder why yours did not pick up the naming and settings.

    You are really powering through! Hopefully I'll be into the HW labs by tomorrow. I'm looking forward to trying the hardware debugger/logic analyzer you mentioned.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
Children
  • cmelement14
    cmelement14 over 6 years ago in reply to nerdyupdates

    Weird it didn't work for me. I will copy Hello_Zynq project and give it a try and see if it works.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • cmelement14
    cmelement14 over 6 years ago in reply to cmelement14

    Update: I copied Hello_Zynq project. When I set up the debugger configuration, it automatically picked up a name "System Debugger using Debug_Hello_Zynq.elf on Local (1)". I guess because there's already a configuration for Hello_Zynq before I copied the project. Anyhow, I think the different behavior is because the different project state when the copy occurs.

     

    image

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube