wiki:Apollo SM recipes

Start BUTool:

zynq_os:~$ cd /work/
zynq_os:/work$ source ./env.sh 
zynq_os:/work$ BUTool.exe -a connections.xml 
Registered device: APOLLOSM
Registered device: APOLLOIPMC
Using .xml connection file...
Warning: Input is a connection file but no device entry specified, using default entry name: test.0
>

Power-up/down CM:

In BUTool:

>cmpwrup 
CM 1 is powered up
>cmpwrdown 
CM 1 is powered down
>

Program CM FPGA via SVF:

This example programs the Kintex on the CMS CM. This currently takes a while...

>cmpwrup 
CM 1 is powered up
>status
Process done
              C2C| AXILITE_AR_READY_TIMEOUT| LINK_GOOD| PHY_LANE_UP|
               --|-------------------------|----------|------------|
              CM1|                         |         0|           1|
            CM1_K|                        1|          |            |
            CM1_V|                        1|          |            |
              CM2|                         |         0|           0|

               CM| IOS_ENABLED| PWR_GOOD|
               --|------------|---------|
              CM1|           1|        1|

         FIRMWARE|    SM_ZYNQ|
               --|-----------|
       BUILD_DATE| 0x20191024|
       BUILD_TIME| 0x   91819|

           STATUS| TEMP| TEMP_MAX| TEMP_MIN|
               --|-----|---------|---------|
             ZYNQ|   39|       39|       39|

SW VER: -1
>svfplayer /fw/CM/top_K.svf XVC1

xsvftool-gpio, part of Lib(X)SVF (http://www.clifford.at/libxsvf/).
Copyright (C) 2009  RIEGL Research ForschungsGmbH
Copyright (C) 2009  Clifford Wolf <clifford@clifford.at>
Lib(X)SVF is free software licensed under the ISC license.
Modified for use in Apollo platform by Michael Kremer, kremerme@bu.edu

playing /fw/CM/top_K.svf
JTAG setup succesful
JTAG shtdown succesful.
SVFplayer ran without errors.
>status
Process done
              C2C| AXILITE_AR_READY_TIMEOUT| LINK_GOOD| PHY_LANE_UP|
               --|-------------------------|----------|------------|
              CM1|                         |         1|           1|
            CM1_K|                        1|          |            |
            CM1_V|                        1|          |            |
              CM2|                         |         0|           0|

               CM| IOS_ENABLED| PWR_GOOD|
               --|------------|---------|
              CM1|           1|        1|

         FIRMWARE|    SM_ZYNQ|
               --|-----------|
       BUILD_DATE| 0x20191024|
       BUILD_TIME| 0x   91819|

           STATUS| TEMP| TEMP_MAX| TEMP_MIN|
               --|-----|---------|---------|
             ZYNQ|   39|       40|       39|

SW VER: -1

During this configuration the C2C link came up right away. If it doesn't, follow the Initialize C2C instructions.

The C2C has probably had a bad transaction happend before the FPGA was ready, so you'll probably have to unblock the C2C bridges with the following

>write C2C1_AXILITE_FW.UNBLOCK
Mask write to C2C1_AXILITE_FW.UNBLOCK
>write C2C1_AXI_FW.UNBLOCK
Mask write to C2C1_AXI_FW.UNBLOCK
>status
Process done
              C2C| AXILITE_AR_READY_TIMEOUT| LINK_GOOD| PHY_LANE_UP|
               --|-------------------------|----------|------------|
              CM1|                         |         1|           1|
            CM1_V|                        1|          |            |
              CM2|                         |         0|           0|

               CM| IOS_ENABLED| PWR_GOOD|
               --|------------|---------|
              CM1|           1|        1|

         FIRMWARE|  CM_KINTEX|    SM_ZYNQ|
               --|-----------|-----------|
       BUILD_DATE| 0x20190918| 0x20191024|
       BUILD_TIME| 0x  194908| 0x   91819|

           STATUS| TEMP| TEMP_MAX| TEMP_MIN|
               --|-----|---------|---------|
      KINTEX_X100| 2481|     2515|     2448|
             ZYNQ|   39|       40|       39|

SW VER: -1

Now the CM1_K TIMEOUT value is cleared and the CM_KINTEX FW info and temperatures are available.


Initialize C2C: If the links don't come up right away, do the following.

write CM.CM1.C2C.INITIALIZE 1
sleep 1
write CM.CM1.C2C.INITIALIZE 0
Last modified 4 weeks ago Last modified on Oct 25, 2019, 9:06:46 AM