]> git.sur5r.net Git - freertos/commitdiff
Add Virtex5 demo that uses the single precision floating point.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 30 Jun 2009 19:39:09 +0000 (19:39 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 30 Jun 2009 19:39:09 +0000 (19:39 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@792 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

100 files changed:
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/FreeRTOSConfig.h [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/RTOSDemo_linker_script.ld [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop-reg-test.c [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop-reg-test.h [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop.c [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/main.c [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/partest/partest.c [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/serial/serial.c [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/Version_Changes.log [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_Colors.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_Globals.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_StyleDefs.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_BusLaneSpaces.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Busses.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Functions.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Globals.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_IOPorts.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Main.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Peripherals.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Processors.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgDiag_BifShapes.xsl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/svg10.dtd [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/bitinit.opt [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.gise [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.ise [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.xise [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise.lock [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject_StrTbl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/__stored_object_table__ [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl_StrTbl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main_StrTbl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Current-Module [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Current-Module_StrTbl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-Data-system [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-Data-system_StrTbl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-DataFactory-Default [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-DataFactory-Default_StrTbl [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/Autonym/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/HierarchicalDesign/HDProject/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ProjectNavigator/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ProjectNavigator11/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/XSLTProcess/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/_ProjRepoInternal_/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/bitgen/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/bitinit/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/common/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/cpldfit/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/dumpngdio/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/fuse/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/hprep6/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/idem/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/libgen/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/map/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/netgen/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngc2edif/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngcbuild/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngdbuild/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/par/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/platgen/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/runner/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/simgen/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/taengine/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/trce/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/tsim/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/vhpcomp/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/vlogcomp/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xpwr/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xreport/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xst/regkeys [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/version [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/xmsgprops.lst [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/libgen.opt [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/platgen.opt [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/rtosdemo_compiler.opt [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/simgen.opt [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/system.filters [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/system.gui [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/xplorer.opt [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/xpsxflow.opt [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/svg10.dtd [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/system.css [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/system.svg [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/data/system.ucf [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/bitgen.ut [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/download.cmd [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/fast_runtime.opt [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_mhs.11.1 [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_mss.11.1 [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_xmp.11.1 [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.bsb [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.log [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.make [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.mhs [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.mss [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.xmp [new file with mode: 0644]
Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system_incl.make [new file with mode: 0644]

diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/FreeRTOSConfig.h b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/FreeRTOSConfig.h
new file mode 100644 (file)
index 0000000..7c18d73
--- /dev/null
@@ -0,0 +1,115 @@
+/*\r
+       FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+       This file is part of the FreeRTOS.org distribution.\r
+\r
+       FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+       under the terms of the GNU General Public License (version 2) as published\r
+       by the Free Software Foundation and modified by the FreeRTOS exception.\r
+       **NOTE** The exception to the GPL is included to allow you to distribute a\r
+       combined work that includes FreeRTOS.org without being obliged to provide\r
+       the source code for any proprietary components.  Alternative commercial\r
+       license and support terms are also available upon request.  See the \r
+       licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+       FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT\r
+       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+       more details.\r
+\r
+       You should have received a copy of the GNU General Public License along\r
+       with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
+\r
+\r
+       ***************************************************************************\r
+       *                                                                         *\r
+       * Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *\r
+       *                                                                         *\r
+       * This is a concise, step by step, 'hands on' guide that describes both   *\r
+       * general multitasking concepts and FreeRTOS specifics. It presents and   *\r
+       * explains numerous examples that are written using the FreeRTOS API.     *\r
+       * Full source code for all the examples is provided in an accompanying    *\r
+       * .zip file.                                                              *\r
+       *                                                                         *\r
+       ***************************************************************************\r
+\r
+       1 tab == 4 spaces!\r
+\r
+       Please ensure to read the configuration and relevant port sections of the\r
+       online documentation.\r
+\r
+       http://www.FreeRTOS.org - Documentation, latest information, license and\r
+       contact details.\r
+\r
+       http://www.SafeRTOS.com - A version that is certified for use in safety\r
+       critical systems.\r
+\r
+       http://www.OpenRTOS.com - Commercial support, development, porting,\r
+       licensing and training services.\r
+*/\r
+\r
+#ifndef FREERTOS_CONFIG_H\r
+#define FREERTOS_CONFIG_H\r
+\r
+/*-----------------------------------------------------------\r
+ * Application specific definitions.\r
+ *\r
+ * These definitions should be adjusted for your particular hardware and\r
+ * application requirements.\r
+ *\r
+ * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE\r
+ * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. \r
+ *\r
+ * See http://www.freertos.org/a00110.html.\r
+ *----------------------------------------------------------*/\r
+\r
+#define configUSE_PREEMPTION                   1\r
+#define configUSE_IDLE_HOOK                            0\r
+#define configUSE_TICK_HOOK                            0\r
+#define configMINIMAL_STACK_SIZE               ( ( unsigned portSHORT ) 250 )\r
+#define configCPU_CLOCK_HZ                             ( ( unsigned portLONG ) 200000000 )     /* Clock setup from start.asm in the demo application. */\r
+#define configTICK_RATE_HZ                             ( (portTickType) 1000 )\r
+#define configMAX_PRIORITIES                   ( ( unsigned portBASE_TYPE ) 6 )\r
+#define configTOTAL_HEAP_SIZE                  ( (size_t) (80 * 1024) )\r
+#define configMAX_TASK_NAME_LEN                        ( 20 )\r
+#define configUSE_16_BIT_TICKS                 1\r
+#define configIDLE_SHOULD_YIELD                        1\r
+#define configUSE_MUTEXES                              1\r
+#define configUSE_TRACE_FACILITY               0\r
+#define configCHECK_FOR_STACK_OVERFLOW 2\r
+#define configUSE_COUNTING_SEMAPHORES  1\r
+#define configUSE_APPLICATION_TASK_TAG 1\r
+#define configUSE_FPU                                  1\r
+\r
+\r
+/* Co-routine definitions. */\r
+#define configUSE_CO_ROUTINES                  0\r
+#define configMAX_CO_ROUTINE_PRIORITIES ( 4 )\r
+\r
+/* Set the following definitions to 1 to include the API function, or zero\r
+to exclude the API function. */\r
+#define INCLUDE_vTaskPrioritySet                       1\r
+#define INCLUDE_uxTaskPriorityGet                      1\r
+#define INCLUDE_vTaskDelete                                    1\r
+#define INCLUDE_vTaskCleanUpResources          1\r
+#define INCLUDE_vTaskSuspend                           1\r
+#define INCLUDE_vResumeFromISR                         1\r
+#define INCLUDE_vTaskDelayUntil                                1\r
+#define INCLUDE_vTaskDelay                                     1\r
+#define INCLUDE_xTaskGetSchedulerState         1\r
+#define INCLUDE_xTaskGetCurrentTaskHandle      1\r
+#define INCLUDE_uxTaskGetStackHighWaterMark    1\r
+#define configUSE_RECURSIVE_MUTEXES                    1\r
+\r
+\r
+#if configUSE_FPU == 1\r
+       /* Include the header that define the traceTASK_SWITCHED_IN() and\r
+       traceTASK_SWITCHED_OUT() macros to save and restore the floating\r
+       point registers for tasks that have requested this behaviour. */\r
+       #include "FPU_Macros.h"\r
+#endif\r
+\r
+#endif /* FREERTOS_CONFIG_H */\r
+\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/RTOSDemo_linker_script.ld b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/RTOSDemo_linker_script.ld
new file mode 100644 (file)
index 0000000..f4fc3bb
--- /dev/null
@@ -0,0 +1,226 @@
+/*******************************************************************/\r
+/*                                                                 */\r
+/* This file is automatically generated by linker script generator.*/\r
+/*                                                                 */\r
+/* Version: Xilinx EDK 11.1 EDK_L.29.1                                */\r
+/*                                                                 */\r
+/* Copyright (c) 2004 Xilinx, Inc.  All rights reserved.           */\r
+/*                                                                 */\r
+/* Description : PowerPC440 Linker Script                          */\r
+/*                                                                 */\r
+/*******************************************************************/\r
+\r
+_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x400;\r
+_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x400;\r
+\r
+/* Define Memories in the system */\r
+\r
+MEMORY\r
+{\r
+   DDR2_SDRAM_C_MEM_BASEADDR : ORIGIN = 0x00000000, LENGTH = 0x10000000\r
+   SRAM_C_MEM0_BASEADDR : ORIGIN = 0xF8000000, LENGTH = 0x00100000\r
+   xps_bram_if_cntlr_1 : ORIGIN = 0xFFFFE000, LENGTH = 0x00001F00\r
+}\r
+\r
+/* Specify the default entry point to the program */\r
+\r
+ENTRY(_boot)\r
+STARTUP(boot.o)\r
+\r
+/* Define the sections, and where they are mapped in memory */\r
+\r
+SECTIONS\r
+{\r
+.vectors : {\r
+   __vectors_start = .;\r
+   *(.vectors)\r
+   __vectors_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.text : {\r
+   *(.text)\r
+   *(.text.*)\r
+   *(.gnu.linkonce.t.*)\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.init : {\r
+   KEEP (*(.init))\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.fini : {\r
+   KEEP (*(.fini))\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.rodata : {\r
+   __rodata_start = .;\r
+   *(.rodata)\r
+   *(.rodata.*)\r
+   *(.gnu.linkonce.r.*)\r
+   __rodata_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.rodata1 : {\r
+   __rodata1_start = .;\r
+   *(.rodata1)\r
+   *(.rodata1.*)\r
+   __rodata1_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.sdata2 : {\r
+   __sdata2_start = .;\r
+   *(.sdata2)\r
+   *(.sdata2.*)\r
+   *(.gnu.linkonce.s2.*)\r
+   __sdata2_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.sbss2 : {\r
+   __sbss2_start = .;\r
+   *(.sbss2)\r
+   *(.sbss2.*)\r
+   *(.gnu.linkonce.sb2.*)\r
+   __sbss2_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.data : {\r
+   __data_start = .;\r
+   *(.data)\r
+   *(.data.*)\r
+   *(.gnu.linkonce.d.*)\r
+   __data_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.data1 : {\r
+   __data1_start = .;\r
+   *(.data1)\r
+   *(.data1.*)\r
+   __data1_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.got : {\r
+   *(.got)\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.got1 : {\r
+   *(.got1)\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.got2 : {\r
+   *(.got2)\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.ctors : {\r
+   __CTOR_LIST__ = .;\r
+   ___CTORS_LIST___ = .;\r
+   KEEP (*crtbegin.o(.ctors))\r
+   KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))\r
+   KEEP (*(SORT(.ctors.*)))\r
+   KEEP (*(.ctors))\r
+   __CTOR_END__ = .;\r
+   ___CTORS_END___ = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.dtors : {\r
+   __DTOR_LIST__ = .;\r
+   ___DTORS_LIST___ = .;\r
+   KEEP (*crtbegin.o(.dtors))\r
+   KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))\r
+   KEEP (*(SORT(.dtors.*)))\r
+   KEEP (*(.dtors))\r
+   __DTOR_END__ = .;\r
+   ___DTORS_END___ = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.fixup : {\r
+   __fixup_start = .;\r
+   *(.fixup)\r
+   __fixup_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.eh_frame : {\r
+   *(.eh_frame)\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.jcr : {\r
+   *(.jcr)\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.gcc_except_table : {\r
+   *(.gcc_except_table)\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.sdata : {\r
+   __sdata_start = .;\r
+   *(.sdata)\r
+   *(.sdata.*)\r
+   *(.gnu.linkonce.s.*)\r
+   __sdata_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.sbss : {\r
+   __sbss_start = .;\r
+   *(.sbss)\r
+   *(.sbss.*)\r
+   *(.gnu.linkonce.sb.*)\r
+   *(.scommon)\r
+   __sbss_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.tdata : {\r
+   __tdata_start = .;\r
+   *(.tdata)\r
+   *(.tdata.*)\r
+   *(.gnu.linkonce.td.*)\r
+   __tdata_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.tbss : {\r
+   __tbss_start = .;\r
+   *(.tbss)\r
+   *(.tbss.*)\r
+   *(.gnu.linkonce.tb.*)\r
+   __tbss_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.bss : {\r
+   __bss_start = .;\r
+   *(.bss)\r
+   *(.bss.*)\r
+   *(.gnu.linkonce.b.*)\r
+   *(COMMON)\r
+   . = ALIGN(4);\r
+   __bss_end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.boot0 0xFFFFFF00 : {\r
+   __boot0_start = .;\r
+   *(.boot0)\r
+   __boot0_end = .;\r
+} \r
+\r
+.boot 0xFFFFFFFC : {\r
+   __boot_start = .;\r
+   *(.boot)\r
+   __boot_end = .;\r
+} \r
+\r
+/* Generate Stack and Heap Sections */\r
+\r
+.stack : {\r
+   _stack_end = .;\r
+   . += _STACK_SIZE;\r
+   . = ALIGN(16);\r
+   __stack = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+.heap : {\r
+   . = ALIGN(16);\r
+   _heap_start = .;\r
+   . += _HEAP_SIZE;\r
+   . = ALIGN(16);\r
+   _heap_end = .;\r
+   _end = .;\r
+} > SRAM_C_MEM0_BASEADDR\r
+\r
+}\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop-reg-test.c b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop-reg-test.c
new file mode 100644 (file)
index 0000000..79a650d
--- /dev/null
@@ -0,0 +1,246 @@
+/*\r
+       FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+       This file is part of the FreeRTOS.org distribution.\r
+\r
+       FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+       under the terms of the GNU General Public License (version 2) as published\r
+       by the Free Software Foundation and modified by the FreeRTOS exception.\r
+       **NOTE** The exception to the GPL is included to allow you to distribute a\r
+       combined work that includes FreeRTOS.org without being obliged to provide\r
+       the source code for any proprietary components.  Alternative commercial\r
+       license and support terms are also available upon request.  See the \r
+       licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+       FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT\r
+       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+       more details.\r
+\r
+       You should have received a copy of the GNU General Public License along\r
+       with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
+\r
+\r
+       ***************************************************************************\r
+       *                                                                         *\r
+       * Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *\r
+       *                                                                         *\r
+       * This is a concise, step by step, 'hands on' guide that describes both   *\r
+       * general multitasking concepts and FreeRTOS specifics. It presents and   *\r
+       * explains numerous examples that are written using the FreeRTOS API.     *\r
+       * Full source code for all the examples is provided in an accompanying    *\r
+       * .zip file.                                                              *\r
+       *                                                                         *\r
+       ***************************************************************************\r
+\r
+       1 tab == 4 spaces!\r
+\r
+       Please ensure to read the configuration and relevant port sections of the\r
+       online documentation.\r
+\r
+       http://www.FreeRTOS.org - Documentation, latest information, license and\r
+       contact details.\r
+\r
+       http://www.SafeRTOS.com - A version that is certified for use in safety\r
+       critical systems.\r
+\r
+       http://www.OpenRTOS.com - Commercial support, development, porting,\r
+       licensing and training services.\r
+*/\r
+\r
+/*\r
+ * Tests the floating point context save and restore mechanism.\r
+ *\r
+ * Two tasks are created - each of which is allocated a buffer of \r
+ * portNO_FLOP_REGISTERS_TO_SAVE 32bit variables into which the flop context\r
+ * of the task is saved when the task is switched out, and from which the\r
+ * flop context of the task is restored when the task is switch in.  Prior to \r
+ * the tasks being created each position in the two buffers is filled with a \r
+ * unique value - this way the flop context of each task is different.\r
+ *\r
+ * The two test tasks never block so are always in either the Running or\r
+ * Ready state.  They execute at the lowest priority so will get pre-empted\r
+ * regularly, although the yield frequently so will not get much execution\r
+ * time.  The lack of execution time is not a problem as its only the \r
+ * switching in and out that is being tested.\r
+ *\r
+ * Whenever a task is moved from the Ready to the Running state its flop \r
+ * context will be loaded from the buffer, but while the task is in the\r
+ * Running state the buffer is not used and can contain any value - in this\r
+ * case and for test purposes the task itself clears the buffer to zero.  \r
+ * The next time the task is moved out of the Running state into the\r
+ * Ready state the flop context will once more get saved to the buffer - \r
+ * overwriting the zeros.\r
+ *\r
+ * Therefore whenever the task is not in the Running state its buffer contains\r
+ * the most recent values of its floating point registers - the zeroing out\r
+ * of the buffer while the task was executing being used to ensure the values \r
+ * the buffer contains are not stale.\r
+ *\r
+ * When neither test task is in the Running state the buffers should contain\r
+ * the unique values allocated before the tasks were created.  If so then\r
+ * the floating point context has been maintained.  This check is performed\r
+ * by the 'check' task (defined in main.c) by calling \r
+ * xAreFlopRegisterTestsStillRunning().\r
+ *\r
+ * The test tasks also increment a value each time they execute.\r
+ * xAreFlopRegisterTestsStillRunning() also checks that this value has changed\r
+ * since it last ran to ensure the test tasks are still getting processing time.\r
+ */\r
+\r
+/* Standard includes files. */\r
+#include <string.h>\r
+\r
+/* Scheduler include files. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+#define flopNUMBER_OF_TASKS            2\r
+#define flopSTART_VALUE ( 0x1 )\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* The two test tasks as described at the top of this file. */\r
+static void vFlopTest1( void *pvParameters );\r
+static void vFlopTest2( void *pvParameters );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Buffers into which the flop registers will be saved.  There is a buffer for \r
+both tasks. */\r
+static volatile unsigned portLONG ulFlopRegisters[ flopNUMBER_OF_TASKS ][ portNO_FLOP_REGISTERS_TO_SAVE ];\r
+\r
+/* Variables that are incremented by the tasks to indicate that they are still\r
+running. */\r
+static volatile unsigned portLONG ulFlop1CycleCount = 0, ulFlop2CycleCount = 0;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vStartFlopRegTests( void )\r
+{\r
+xTaskHandle xTaskJustCreated;\r
+unsigned portBASE_TYPE x, y, z = flopSTART_VALUE;\r
+\r
+       /* Fill the arrays into which the flop registers are to be saved with \r
+       known values.  These are the values that will be written to the flop\r
+       registers when the tasks start, and as the tasks do not perform any\r
+       flop operations the values should never change.  Each position in the\r
+       buffer contains a different value so the flop context of each task\r
+       will be different. */\r
+       for( x = 0; x < flopNUMBER_OF_TASKS; x++ )\r
+       {\r
+               for( y = 0; y < ( portNO_FLOP_REGISTERS_TO_SAVE - 1); y++ )\r
+               {\r
+                       ulFlopRegisters[ x ][ y ] = z;\r
+                       z++;\r
+               }\r
+       }\r
+\r
+\r
+       /* Create the first task. */\r
+       xTaskCreate( vFlopTest1, ( signed portCHAR * ) "flop1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xTaskJustCreated );\r
+\r
+       /* The task     tag value is a value that can be associated with a task, but \r
+       is not used by the scheduler itself.  Its use is down to the application so\r
+       it makes a convenient place in this case to store the pointer to the buffer\r
+       into which the flop context of the task will be stored.  The first created\r
+       task uses ulFlopRegisters[ 0 ], the second ulFlopRegisters[ 1 ]. */\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 0 ][ 0 ] ) );\r
+\r
+       /* Do the same for the second task. */\r
+       xTaskCreate( vFlopTest2, ( signed portCHAR * ) "flop2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, &xTaskJustCreated );\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 1 ][ 0 ] ) );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vFlopTest1( void *pvParameters )\r
+{\r
+       /* Just to remove compiler warning. */\r
+       ( void ) pvParameters;\r
+\r
+       for( ;; )\r
+       {\r
+               /* The values from the buffer should have now been written to the flop\r
+               registers.  Clear the buffer to ensure the same values then get written\r
+               back the next time the task runs.  Being preempted during this memset\r
+               could cause the test to fail, hence the critical section. */\r
+               portENTER_CRITICAL();\r
+                       memset( ( void * ) ulFlopRegisters[ 0 ], 0x00, ( portNO_FLOP_REGISTERS_TO_SAVE * sizeof( unsigned portBASE_TYPE ) ) );\r
+               portEXIT_CRITICAL();\r
+\r
+               /* We don't have to do anything other than indicate that we are \r
+               still running. */\r
+               ulFlop1CycleCount++;\r
+               taskYIELD();\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vFlopTest2( void *pvParameters )\r
+{\r
+       /* Just to remove compiler warning. */\r
+       ( void ) pvParameters;\r
+\r
+       for( ;; )\r
+       {\r
+               /* The values from the buffer should have now been written to the flop\r
+               registers.  Clear the buffer to ensure the same values then get written\r
+               back the next time the task runs. */\r
+               portENTER_CRITICAL();\r
+                       memset( ( void * ) ulFlopRegisters[ 1 ], 0x00, ( portNO_FLOP_REGISTERS_TO_SAVE * sizeof( unsigned portBASE_TYPE ) ) );\r
+               portEXIT_CRITICAL();\r
+\r
+               /* We don't have to do anything other than indicate that we are \r
+               still running. */\r
+               ulFlop2CycleCount++;\r
+               taskYIELD();\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+portBASE_TYPE xAreFlopRegisterTestsStillRunning( void )\r
+{\r
+portBASE_TYPE xReturn = pdPASS;\r
+unsigned portBASE_TYPE x, y, z = flopSTART_VALUE;\r
+static unsigned portLONG ulLastFlop1CycleCount = 0, ulLastFlop2CycleCount = 0;\r
+\r
+       /* Called from the 'check' task.\r
+       \r
+       The flop tasks cannot be currently running, check their saved registers\r
+       are as expected.  The tests tasks do not perform any flop operations so\r
+       their registers should be as per their initial setting. */\r
+       for( x = 0; x < flopNUMBER_OF_TASKS; x++ )\r
+       {\r
+               for( y = 0; y < ( portNO_FLOP_REGISTERS_TO_SAVE - 1 ); y++ )\r
+               {\r
+                       if( ulFlopRegisters[ x ][ y ] != z )\r
+                       {\r
+                               xReturn = pdFAIL;\r
+                               break;\r
+                       }\r
+\r
+                       z++;\r
+               }\r
+       }\r
+\r
+       /* Check both tasks have actually been swapped in and out since this function\r
+       last executed. */\r
+       if( ulFlop1CycleCount == ulLastFlop1CycleCount )\r
+       {\r
+               xReturn = pdFAIL;\r
+       }\r
+\r
+       if( ulFlop2CycleCount == ulLastFlop2CycleCount )\r
+       {\r
+               xReturn = pdFAIL;\r
+       }\r
+\r
+       ulLastFlop1CycleCount = ulFlop1CycleCount;\r
+       ulLastFlop2CycleCount = ulFlop2CycleCount;\r
+\r
+       return xReturn;\r
+}\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop-reg-test.h b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop-reg-test.h
new file mode 100644 (file)
index 0000000..0bddeb2
--- /dev/null
@@ -0,0 +1,58 @@
+/*\r
+       FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+       This file is part of the FreeRTOS.org distribution.\r
+\r
+       FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+       under the terms of the GNU General Public License (version 2) as published\r
+       by the Free Software Foundation and modified by the FreeRTOS exception.\r
+       **NOTE** The exception to the GPL is included to allow you to distribute a\r
+       combined work that includes FreeRTOS.org without being obliged to provide\r
+       the source code for any proprietary components.  Alternative commercial\r
+       license and support terms are also available upon request.  See the \r
+       licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+       FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT\r
+       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+       more details.\r
+\r
+       You should have received a copy of the GNU General Public License along\r
+       with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
+\r
+\r
+       ***************************************************************************\r
+       *                                                                         *\r
+       * Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *\r
+       *                                                                         *\r
+       * This is a concise, step by step, 'hands on' guide that describes both   *\r
+       * general multitasking concepts and FreeRTOS specifics. It presents and   *\r
+       * explains numerous examples that are written using the FreeRTOS API.     *\r
+       * Full source code for all the examples is provided in an accompanying    *\r
+       * .zip file.                                                              *\r
+       *                                                                         *\r
+       ***************************************************************************\r
+\r
+       1 tab == 4 spaces!\r
+\r
+       Please ensure to read the configuration and relevant port sections of the\r
+       online documentation.\r
+\r
+       http://www.FreeRTOS.org - Documentation, latest information, license and\r
+       contact details.\r
+\r
+       http://www.SafeRTOS.com - A version that is certified for use in safety\r
+       critical systems.\r
+\r
+       http://www.OpenRTOS.com - Commercial support, development, porting,\r
+       licensing and training services.\r
+*/\r
+\r
+#ifndef FLOP_REG_TEST_H\r
+#define FLOP_REG_TEST_H\r
+\r
+void vStartFlopRegTests( void );\r
+portBASE_TYPE xAreFlopRegisterTestsStillRunning( void );\r
+\r
+#endif\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop.c b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop.c
new file mode 100644 (file)
index 0000000..7e291b0
--- /dev/null
@@ -0,0 +1,402 @@
+/*\r
+       FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+       This file is part of the FreeRTOS.org distribution.\r
+\r
+       FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+       under the terms of the GNU General Public License (version 2) as published\r
+       by the Free Software Foundation and modified by the FreeRTOS exception.\r
+       **NOTE** The exception to the GPL is included to allow you to distribute a\r
+       combined work that includes FreeRTOS.org without being obliged to provide\r
+       the source code for any proprietary components.  Alternative commercial\r
+       license and support terms are also available upon request.  See the \r
+       licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+       FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT\r
+       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+       more details.\r
+\r
+       You should have received a copy of the GNU General Public License along\r
+       with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
+\r
+\r
+       ***************************************************************************\r
+       *                                                                         *\r
+       * Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *\r
+       *                                                                         *\r
+       * This is a concise, step by step, 'hands on' guide that describes both   *\r
+       * general multitasking concepts and FreeRTOS specifics. It presents and   *\r
+       * explains numerous examples that are written using the FreeRTOS API.     *\r
+       * Full source code for all the examples is provided in an accompanying    *\r
+       * .zip file.                                                              *\r
+       *                                                                         *\r
+       ***************************************************************************\r
+\r
+       1 tab == 4 spaces!\r
+\r
+       Please ensure to read the configuration and relevant port sections of the\r
+       online documentation.\r
+\r
+       http://www.FreeRTOS.org - Documentation, latest information, license and\r
+       contact details.\r
+\r
+       http://www.SafeRTOS.com - A version that is certified for use in safety\r
+       critical systems.\r
+\r
+       http://www.OpenRTOS.com - Commercial support, development, porting,\r
+       licensing and training services.\r
+*/\r
+\r
+/*\r
+ * Creates eight tasks, each of which loops continuously performing a\r
+ * floating point calculation.\r
+ *\r
+ * All the tasks run at the idle priority and never block or yield.  This causes \r
+ * all eight tasks to time slice with the idle task.  Running at the idle priority \r
+ * means that these tasks will get pre-empted any time another task is ready to run\r
+ * or a time slice occurs.  More often than not the pre-emption will occur mid \r
+ * calculation, creating a good test of the schedulers context switch mechanism - a \r
+ * calculation producing an unexpected result could be a symptom of a corruption in \r
+ * the context of a task.\r
+ *\r
+ * This file demonstrates the use of the task tag and traceTASK_SWITCHED_IN and\r
+ * traceTASK_SWITCHED_OUT macros to save and restore the floating point context.\r
+ */\r
+\r
+#include <stdlib.h>\r
+#include <math.h>\r
+\r
+/* Scheduler include files. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/* Demo program include files. */\r
+#include "flop.h"\r
+\r
+/* Misc. definitions. */\r
+#define mathSTACK_SIZE         configMINIMAL_STACK_SIZE\r
+#define mathNUMBER_OF_TASKS  ( 8 )\r
+\r
+/* Four tasks, each of which performs a different floating point calculation.  \r
+Each of the four is created twice. */\r
+static portTASK_FUNCTION_PROTO( vCompetingMathTask1, pvParameters );\r
+static portTASK_FUNCTION_PROTO( vCompetingMathTask2, pvParameters );\r
+static portTASK_FUNCTION_PROTO( vCompetingMathTask3, pvParameters );\r
+static portTASK_FUNCTION_PROTO( vCompetingMathTask4, pvParameters );\r
+\r
+/* These variables are used to check that all the tasks are still running.  If a \r
+task gets a calculation wrong it will stop incrementing its check variable. */\r
+static volatile unsigned portSHORT usTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned portSHORT ) 0 };\r
+\r
+/* Buffers into which the flop registers will be saved.  There is a buffer for \r
+each task created within this file.  Zeroing out this array is the normal and\r
+safe option as this will cause the task to start with all zeros in its flop\r
+context. */\r
+static unsigned portLONG ulFlopRegisters[ mathNUMBER_OF_TASKS ][ portNO_FLOP_REGISTERS_TO_SAVE ];\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+void vStartMathTasks( unsigned portBASE_TYPE uxPriority )\r
+{\r
+xTaskHandle xTaskJustCreated;\r
+portBASE_TYPE x, y;\r
+\r
+       /* Place known values into the buffers into which the flop registers are \r
+       to be saved.  This is for debug purposes only, it is not normally\r
+       required.  The last position in each array is left at zero as the status\r
+       register will be loaded from there. \r
+       \r
+       It is intended that these values can be viewed being loaded into the\r
+       flop registers when a task is started - however the Insight debugger\r
+       does not seem to want to show the flop register values. */\r
+       for( x = 0; x < mathNUMBER_OF_TASKS; x++ )\r
+       {\r
+               for( y = 0; y < ( portNO_FLOP_REGISTERS_TO_SAVE - 1 ); y++ )\r
+               {\r
+                       ulFlopRegisters[ x ][ y ] = ( x + 1 );\r
+               }\r
+       }\r
+\r
+       /* Create the first task - passing it the address of the check variable\r
+       that it is going to increment.  This check variable is used as an \r
+       indication that the task is still running. */\r
+       xTaskCreate( vCompetingMathTask1, ( signed portCHAR * ) "Math1", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 0 ] ), uxPriority, &xTaskJustCreated );\r
+\r
+       /* The task     tag value is a value that can be associated with a task, but \r
+       is not used by the scheduler itself.  Its use is down to the application so\r
+       it makes a convenient place in this case to store the pointer to the buffer\r
+       into which the flop context of the task will be stored.  The first created\r
+       task uses ulFlopRegisters[ 0 ], the second ulFlopRegisters[ 1 ], etc. */\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 0 ][ 0 ] ) );\r
+\r
+       /* Create another 7 tasks, allocating a buffer for each. */\r
+       xTaskCreate( vCompetingMathTask2, ( signed portCHAR * ) "Math2", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 1 ] ), uxPriority, &xTaskJustCreated  );\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 1 ][ 0 ] ) );\r
+\r
+       xTaskCreate( vCompetingMathTask3, ( signed portCHAR * ) "Math3", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 2 ] ), uxPriority, &xTaskJustCreated  );\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 2 ][ 0 ] ) );\r
+\r
+       xTaskCreate( vCompetingMathTask4, ( signed portCHAR * ) "Math4", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 3 ] ), uxPriority, &xTaskJustCreated  );\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 3 ][ 0 ] ) );\r
+\r
+       xTaskCreate( vCompetingMathTask1, ( signed portCHAR * ) "Math5", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 4 ] ), uxPriority, &xTaskJustCreated  );\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 4 ][ 0 ] ) );\r
+\r
+       xTaskCreate( vCompetingMathTask2, ( signed portCHAR * ) "Math6", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 5 ] ), uxPriority, &xTaskJustCreated  );\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 5 ][ 0 ] ) );\r
+\r
+       xTaskCreate( vCompetingMathTask3, ( signed portCHAR * ) "Math7", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 6 ] ), uxPriority, &xTaskJustCreated  );\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 6 ][ 0 ] ) );\r
+\r
+       xTaskCreate( vCompetingMathTask4, ( signed portCHAR * ) "Math8", mathSTACK_SIZE, ( void * ) &( usTaskCheck[ 7 ] ), uxPriority, &xTaskJustCreated  );\r
+       vTaskSetApplicationTaskTag( xTaskJustCreated, ( void * ) &( ulFlopRegisters[ 7 ][ 0 ] ) );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portTASK_FUNCTION( vCompetingMathTask1, pvParameters )\r
+{\r
+volatile portFLOAT ff1, ff2, ff3, ff4;\r
+volatile unsigned portSHORT *pusTaskCheckVariable;\r
+volatile portFLOAT fAnswer;\r
+portSHORT sError = pdFALSE;\r
+\r
+       ff1 = 123.4567F;\r
+       ff2 = 2345.6789F;\r
+       ff3 = -918.222F;\r
+\r
+       fAnswer = ( ff1 + ff2 ) * ff3;\r
+\r
+       /* The variable this task increments to show it is still running is passed in \r
+       as the parameter. */\r
+       pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;\r
+\r
+       /* Keep performing a calculation and checking the result against a constant. */\r
+       for(;;)\r
+       {\r
+               ff1 = 123.4567F;\r
+               ff2 = 2345.6789F;\r
+               ff3 = -918.222F;\r
+\r
+               ff4 = ( ff1 + ff2 ) * ff3;\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               /* If the calculation does not match the expected constant, stop the \r
+               increment of the check variable. */\r
+               if( fabs( ff4 - fAnswer ) > 0.001F )\r
+               {\r
+                       sError = pdTRUE;\r
+               }\r
+\r
+               if( sError == pdFALSE )\r
+               {\r
+                       /* If the calculation has always been correct, increment the check \r
+                       variable so we know this task is still running okay. */\r
+                       ( *pusTaskCheckVariable )++;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portTASK_FUNCTION( vCompetingMathTask2, pvParameters )\r
+{\r
+volatile portFLOAT ff1, ff2, ff3, ff4;\r
+volatile unsigned portSHORT *pusTaskCheckVariable;\r
+volatile portFLOAT fAnswer;\r
+portSHORT sError = pdFALSE;\r
+\r
+       ff1 = -389.38F;\r
+       ff2 = 32498.2F;\r
+       ff3 = -2.0001F;\r
+\r
+       fAnswer = ( ff1 / ff2 ) * ff3;\r
+\r
+\r
+       /* The variable this task increments to show it is still running is passed in \r
+       as the parameter. */\r
+       pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;\r
+\r
+       /* Keep performing a calculation and checking the result against a constant. */\r
+       for( ;; )\r
+       {\r
+               ff1 = -389.38F;\r
+               ff2 = 32498.2F;\r
+               ff3 = -2.0001F;\r
+\r
+               ff4 = ( ff1 / ff2 ) * ff3;\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+               \r
+               /* If the calculation does not match the expected constant, stop the \r
+               increment of the check variable. */\r
+               if( fabs( ff4 - fAnswer ) > 0.001F )\r
+               {\r
+                       sError = pdTRUE;\r
+               }\r
+\r
+               if( sError == pdFALSE )\r
+               {\r
+                       /* If the calculation has always been correct, increment the check \r
+                       variable so we know\r
+                       this task is still running okay. */\r
+                       ( *pusTaskCheckVariable )++;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portTASK_FUNCTION( vCompetingMathTask3, pvParameters )\r
+{\r
+volatile portFLOAT *pfArray, fTotal1, fTotal2, fDifference;\r
+volatile unsigned portSHORT *pusTaskCheckVariable;\r
+const size_t xArraySize = 10;\r
+size_t xPosition;\r
+portSHORT sError = pdFALSE;\r
+\r
+       /* The variable this task increments to show it is still running is passed in \r
+       as the parameter. */\r
+       pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;\r
+\r
+       pfArray = ( portFLOAT * ) pvPortMalloc( xArraySize * sizeof( portFLOAT ) );\r
+\r
+       /* Keep filling an array, keeping a running total of the values placed in the \r
+       array.  Then run through the array adding up all the values.  If the two totals \r
+       do not match, stop the check variable from incrementing. */\r
+       for( ;; )\r
+       {\r
+               fTotal1 = 0.0F;\r
+               fTotal2 = 0.0F;\r
+\r
+               for( xPosition = 0; xPosition < xArraySize; xPosition++ )\r
+               {\r
+                       pfArray[ xPosition ] = ( portFLOAT ) xPosition + 5.5F;\r
+                       fTotal1 += ( portFLOAT ) xPosition + 5.5F;      \r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               for( xPosition = 0; xPosition < xArraySize; xPosition++ )\r
+               {\r
+                       fTotal2 += pfArray[ xPosition ];\r
+               }\r
+\r
+               fDifference = fTotal1 - fTotal2;\r
+               if( fabs( fDifference ) > 0.001F )\r
+               {\r
+                       sError = pdTRUE;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               if( sError == pdFALSE )\r
+               {\r
+                       /* If the calculation has always been correct, increment the check \r
+                       variable so we know     this task is still running okay. */\r
+                       ( *pusTaskCheckVariable )++;\r
+               }\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portTASK_FUNCTION( vCompetingMathTask4, pvParameters )\r
+{\r
+volatile portFLOAT *pfArray, fTotal1, fTotal2, fDifference;\r
+volatile unsigned portSHORT *pusTaskCheckVariable;\r
+const size_t xArraySize = 10;\r
+size_t xPosition;\r
+portSHORT sError = pdFALSE;\r
+\r
+       /* The variable this task increments to show it is still running is passed in \r
+       as the parameter. */\r
+       pusTaskCheckVariable = ( unsigned portSHORT * ) pvParameters;\r
+\r
+       pfArray = ( portFLOAT * ) pvPortMalloc( xArraySize * sizeof( portFLOAT ) );\r
+\r
+       /* Keep filling an array, keeping a running total of the values placed in the \r
+       array.  Then run through the array adding up all the values.  If the two totals \r
+       do not match, stop the check variable from incrementing. */\r
+       for( ;; )\r
+       {\r
+               fTotal1 = 0.0F;\r
+               fTotal2 = 0.0F;\r
+\r
+               for( xPosition = 0; xPosition < xArraySize; xPosition++ )\r
+               {\r
+                       pfArray[ xPosition ] = ( portFLOAT ) xPosition * 12.123F;\r
+                       fTotal1 += ( portFLOAT ) xPosition * 12.123F;   \r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               for( xPosition = 0; xPosition < xArraySize; xPosition++ )\r
+               {\r
+                       fTotal2 += pfArray[ xPosition ];\r
+               }\r
+\r
+               fDifference = fTotal1 - fTotal2;\r
+               if( fabs( fDifference ) > 0.001F )\r
+               {\r
+                       sError = pdTRUE;\r
+               }\r
+\r
+               #if configUSE_PREEMPTION == 0\r
+                       taskYIELD();\r
+               #endif\r
+\r
+               if( sError == pdFALSE )\r
+               {\r
+                       /* If the calculation has always been correct, increment the check \r
+                       variable so we know     this task is still running okay. */\r
+                       ( *pusTaskCheckVariable )++;\r
+               }\r
+       }\r
+}                               \r
+/*-----------------------------------------------------------*/\r
+\r
+/* This is called to check that all the created tasks are still running. */\r
+portBASE_TYPE xAreMathsTaskStillRunning( void )\r
+{\r
+/* Keep a history of the check variables so we know if they have been incremented \r
+since the last call. */\r
+static unsigned portSHORT usLastTaskCheck[ mathNUMBER_OF_TASKS ] = { ( unsigned portSHORT ) 0 };\r
+portBASE_TYPE xReturn = pdTRUE, xTask;\r
+\r
+       /* Check the maths tasks are still running by ensuring their check variables \r
+       are still incrementing. */\r
+       for( xTask = 0; xTask < mathNUMBER_OF_TASKS; xTask++ )\r
+       {\r
+               if( usTaskCheck[ xTask ] == usLastTaskCheck[ xTask ] )\r
+               {\r
+                       /* The check has not incremented so an error exists. */\r
+                       xReturn = pdFALSE;\r
+               }\r
+\r
+               usLastTaskCheck[ xTask ] = usTaskCheck[ xTask ];\r
+       }\r
+\r
+       return xReturn;\r
+}\r
+\r
+\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/main.c b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/main.c
new file mode 100644 (file)
index 0000000..b532119
--- /dev/null
@@ -0,0 +1,701 @@
+/*\r
+       FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+       This file is part of the FreeRTOS.org distribution.\r
+\r
+       FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+       under the terms of the GNU General Public License (version 2) as published\r
+       by the Free Software Foundation and modified by the FreeRTOS exception.\r
+       **NOTE** The exception to the GPL is included to allow you to distribute a\r
+       combined work that includes FreeRTOS.org without being obliged to provide\r
+       the source code for any proprietary components.  Alternative commercial\r
+       license and support terms are also available upon request.  See the \r
+       licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+       FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT\r
+       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+       more details.\r
+\r
+       You should have received a copy of the GNU General Public License along\r
+       with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
+\r
+\r
+       ***************************************************************************\r
+       *                                                                         *\r
+       * Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *\r
+       *                                                                         *\r
+       * This is a concise, step by step, 'hands on' guide that describes both   *\r
+       * general multitasking concepts and FreeRTOS specifics. It presents and   *\r
+       * explains numerous examples that are written using the FreeRTOS API.     *\r
+       * Full source code for all the examples is provided in an accompanying    *\r
+       * .zip file.                                                              *\r
+       *                                                                         *\r
+       ***************************************************************************\r
+\r
+       1 tab == 4 spaces!\r
+\r
+       Please ensure to read the configuration and relevant port sections of the\r
+       online documentation.\r
+\r
+       http://www.FreeRTOS.org - Documentation, latest information, license and\r
+       contact details.\r
+\r
+       http://www.SafeRTOS.com - A version that is certified for use in safety\r
+       critical systems.\r
+\r
+       http://www.OpenRTOS.com - Commercial support, development, porting,\r
+       licensing and training services.\r
+*/\r
+\r
+/*\r
+ * Creates all the demo application tasks, then starts the scheduler.  The WEB\r
+ * documentation provides more details of the demo application tasks.\r
+ * \r
+ * In addition to the standard demo tasks, the follow demo specific tasks are\r
+ * create:\r
+ *\r
+ * The "Check" task.  This only executes every three seconds but has the highest \r
+ * priority so is guaranteed to get processor time.  Its main function is to \r
+ * check that all the other tasks are still operational.  Most tasks maintain \r
+ * a unique count that is incremented each time the task successfully completes \r
+ * its function.  Should any error occur within such a task the count is \r
+ * permanently halted.  The check task inspects the count of each task to ensure \r
+ * it has changed since the last time the check task executed.  If all the count \r
+ * variables have changed all the tasks are still executing error free, and the \r
+ * check task toggles the onboard LED.  Should any task contain an error at any time \r
+ * the LED toggle rate will change from 3 seconds to 500ms.\r
+ *\r
+ * The "Register Check" tasks.  These tasks fill the CPU registers with known\r
+ * values, then check that each register still contains the expected value, the\r
+ * discovery of an unexpected value being indicative of an error in the RTOS\r
+ * context switch mechanism.  The register check tasks operate at low priority\r
+ * so are switched in and out frequently.\r
+ *\r
+ */\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+/* Xilinx library includes. */\r
+#include "xcache_l.h"\r
+#include "xintc.h"\r
+\r
+/* Demo application includes. */\r
+#include "flash.h"\r
+#include "integer.h"\r
+#include "comtest2.h"\r
+#include "semtest.h"\r
+#include "BlockQ.h"\r
+#include "dynamic.h"\r
+#include "GenQTest.h"\r
+#include "QPeek.h"\r
+#include "blocktim.h"\r
+#include "death.h"\r
+#include "partest.h"\r
+#include "countsem.h"\r
+#include "recmutex.h"\r
+#include "flop.h"\r
+#include "flop-reg-test.h"\r
+\r
+/* Priorities assigned to the demo tasks. */\r
+#define mainCHECK_TASK_PRIORITY                        ( tskIDLE_PRIORITY + 4 )\r
+#define mainSEM_TEST_PRIORITY                  ( tskIDLE_PRIORITY + 2 )\r
+#define mainCOM_TEST_PRIORITY                  ( tskIDLE_PRIORITY + 1 )\r
+#define mainQUEUE_BLOCK_PRIORITY               ( tskIDLE_PRIORITY + 1 )\r
+#define mainDEATH_PRIORITY                             ( tskIDLE_PRIORITY + 1 )\r
+#define mainLED_TASK_PRIORITY                  ( tskIDLE_PRIORITY + 1 )\r
+#define mainGENERIC_QUEUE_PRIORITY             ( tskIDLE_PRIORITY )\r
+#define mainQUEUE_POLL_PRIORITY                        ( tskIDLE_PRIORITY + 1 )\r
+#define mainFLOP_PRIORITY                              ( tskIDLE_PRIORITY )\r
+\r
+/* The first LED used by the COM test and check tasks respectively. */\r
+#define mainCOM_TEST_LED                               ( 4 )\r
+#define mainCHECK_TEST_LED                             ( 3 )\r
+\r
+/* The baud rate used by the comtest tasks is set by the hardware, so the\r
+baud rate parameters passed into the comtest initialisation has no effect. */\r
+#define mainBAUD_SET_IN_HARDWARE               ( 0 )\r
+\r
+/* Delay periods used by the check task.  If no errors have been found then\r
+the check LED will toggle every mainNO_ERROR_CHECK_DELAY milliseconds.  If an\r
+error has been found at any time then the toggle rate will increase to \r
+mainERROR_CHECK_DELAY milliseconds. */\r
+#define mainNO_ERROR_CHECK_DELAY               ( ( portTickType ) 3000 / portTICK_RATE_MS  )\r
+#define mainERROR_CHECK_DELAY                  ( ( portTickType ) 500 / portTICK_RATE_MS  )\r
+\r
+\r
+/* \r
+ * The tasks defined within this file - described within the comments at the\r
+ * head of this page. \r
+ */\r
+static void prvRegTestTask1( void *pvParameters );\r
+static void prvRegTestTask2( void *pvParameters );\r
+static void prvErrorChecks( void *pvParameters );\r
+\r
+/*\r
+ * Called by the 'check' task to inspect all the standard demo tasks within\r
+ * the system, as described within the comments at the head of this page.\r
+ */\r
+static portBASE_TYPE prvCheckOtherTasksAreStillRunning( void );\r
+\r
+/*\r
+ * Perform any hardware initialisation required by the demo application.\r
+ */\r
+static void prvSetupHardware( void );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* xRegTestStatus will get set to pdFAIL by the regtest tasks if they\r
+discover an unexpected value. */\r
+static volatile unsigned portBASE_TYPE xRegTestStatus = pdPASS;\r
+\r
+/* Counters used to ensure the regtest tasks are still running. */\r
+static volatile unsigned portLONG ulRegTest1Counter = 0UL, ulRegTest2Counter = 0UL;\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+int main( void )\r
+{\r
+\r
+       /* Must be called prior to installing any interrupt handlers! */\r
+       vPortSetupInterruptController();\r
+\r
+       /* In this case prvSetupHardware() just enables the caches and and\r
+       configures the IO ports for the LED outputs. */\r
+       prvSetupHardware();\r
+\r
+       /* Start the standard demo application tasks.  Note that the baud rate used\r
+       by the comtest tasks is set by the hardware, so the baud rate parameter\r
+       passed has no effect. */\r
+       vStartLEDFlashTasks( mainLED_TASK_PRIORITY );   \r
+       vStartIntegerMathTasks( tskIDLE_PRIORITY );\r
+       vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainBAUD_SET_IN_HARDWARE, mainCOM_TEST_LED );\r
+       vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );\r
+       vStartBlockingQueueTasks ( mainQUEUE_BLOCK_PRIORITY );  \r
+       vStartDynamicPriorityTasks();   \r
+       vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY );\r
+       vStartQueuePeekTasks();\r
+       vCreateBlockTimeTasks();\r
+       vStartCountingSemaphoreTasks();\r
+       vStartRecursiveMutexTasks();\r
+\r
+       #if ( configUSE_FPU == 1 )\r
+               vStartMathTasks( mainFLOP_PRIORITY );\r
+               vStartFlopRegTests();\r
+       #endif\r
+\r
+       /* Create the tasks defined within this file. */\r
+       xTaskCreate( prvRegTestTask1, ( signed portCHAR * ) "Regtest1", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\r
+       xTaskCreate( prvRegTestTask2, ( signed portCHAR * ) "Regtest2", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\r
+       xTaskCreate( prvErrorChecks, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );\r
+\r
+       /* The suicide tasks must be started last as they record the number of other\r
+       tasks that exist within the system.  The value is then used to ensure at run\r
+       time the number of tasks that exists is within expected bounds. */\r
+       vCreateSuicidalTasks( mainDEATH_PRIORITY );\r
+\r
+       /* Now start the scheduler.  Following this call the created tasks should\r
+       be executing. */        \r
+       vTaskStartScheduler();\r
+\r
+       /* vTaskStartScheduler() will only return if an error occurs while the \r
+       idle task is being created. */\r
+       for( ;; );\r
+\r
+       return 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static portBASE_TYPE prvCheckOtherTasksAreStillRunning( void )\r
+{\r
+portBASE_TYPE lReturn = pdPASS;\r
+static unsigned portLONG ulLastRegTest1Counter= 0UL, ulLastRegTest2Counter = 0UL;\r
+\r
+       /* The demo tasks maintain a count that increments every cycle of the task\r
+       provided that the task has never encountered an error.  This function \r
+       checks the counts maintained by the tasks to ensure they are still being\r
+       incremented.  A count remaining at the same value between calls therefore\r
+       indicates that an error has been detected. */\r
+\r
+       if( xAreIntegerMathsTaskStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+\r
+       if( xAreComTestTasksStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       \r
+       if( xAreSemaphoreTasksStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       \r
+       if( xAreBlockingQueuesStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       \r
+       if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       \r
+       if( xIsCreateTaskStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       \r
+       if( xAreBlockTimeTestTasksStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       \r
+       if( xAreGenericQueueTasksStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       \r
+       if( xAreQueuePeekTasksStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+\r
+       if( xAreCountingSemaphoreTasksStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+\r
+       if( xAreRecursiveMutexTasksStillRunning() != pdTRUE )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+\r
+       #if ( configUSE_FPU == 1 )\r
+               if( xAreMathsTaskStillRunning() != pdTRUE )\r
+               {\r
+                       lReturn = pdFAIL;\r
+               }\r
+\r
+               if( xAreFlopRegisterTestsStillRunning() != pdTRUE )\r
+               {\r
+                       lReturn = pdFAIL;\r
+               }\r
+       #endif\r
+\r
+       /* Have the register test tasks found any errors? */\r
+       if( xRegTestStatus != pdPASS )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+\r
+       /* Are the register test tasks still looping? */\r
+       if( ulLastRegTest1Counter == ulRegTest1Counter )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       else\r
+       {\r
+               ulLastRegTest1Counter = ulRegTest1Counter;\r
+       }\r
+\r
+       if( ulLastRegTest2Counter == ulRegTest2Counter )\r
+       {\r
+               lReturn = pdFAIL;\r
+       }\r
+       else\r
+       {\r
+               ulLastRegTest2Counter = ulRegTest2Counter;\r
+       }\r
+\r
+       return lReturn;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvErrorChecks( void *pvParameters )\r
+{\r
+portTickType xDelayPeriod = mainNO_ERROR_CHECK_DELAY, xLastExecutionTime;\r
+volatile unsigned portBASE_TYPE uxFreeStack;\r
+\r
+       /* Just to remove compiler warning. */\r
+       ( void ) pvParameters;\r
+\r
+       /* This call is just to demonstrate the use of the function - nothing is\r
+       done with the value.  You would expect the stack high water mark to be\r
+       lower (the function to return a larger value) here at function entry than\r
+       later following calls to other functions. */\r
+       uxFreeStack = uxTaskGetStackHighWaterMark( NULL );\r
+\r
+       /* Initialise xLastExecutionTime so the first call to vTaskDelayUntil()\r
+       works correctly. */\r
+       xLastExecutionTime = xTaskGetTickCount();\r
+\r
+       /* Cycle for ever, delaying then checking all the other tasks are still\r
+       operating without error. */\r
+       for( ;; )\r
+       {\r
+               /* Again just for demo purposes - uxFreeStack should have a lower value\r
+               here than following the call to uxTaskGetStackHighWaterMark() on the\r
+               task entry. */\r
+               uxFreeStack = uxTaskGetStackHighWaterMark( NULL );\r
+\r
+               /* Wait until it is time to check again.  The time we wait here depends\r
+               on whether an error has been detected or not.  When an error is \r
+               detected the time is shortened resulting in a faster LED flash rate. */\r
+               vTaskDelayUntil( &xLastExecutionTime, xDelayPeriod );\r
+\r
+               /* See if the other tasks are all ok. */\r
+               if( prvCheckOtherTasksAreStillRunning() != pdPASS )\r
+               {\r
+                       /* An error occurred in one of the tasks so shorten the delay \r
+                       period - which has the effect of increasing the frequency of the\r
+                       LED toggle. */\r
+                       xDelayPeriod = mainERROR_CHECK_DELAY;\r
+               }\r
+\r
+               /* Flash! */\r
+               vParTestToggleLED( mainCHECK_TEST_LED );\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvSetupHardware( void )\r
+{\r
+       XCache_EnableICache( 0x80000000 );\r
+       XCache_EnableDCache( 0x80000000 );\r
+\r
+       /* Setup the IO port for use with the LED outputs. */\r
+       vParTestInitialise();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void prvRegTest1Pass( void )\r
+{\r
+       /* Called from the inline assembler - this cannot be static\r
+       otherwise it can get optimised away. */\r
+       ulRegTest1Counter++;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void prvRegTest2Pass( void )\r
+{\r
+       /* Called from the inline assembler - this cannot be static\r
+       otherwise it can get optimised away. */\r
+       ulRegTest2Counter++;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void prvRegTestFail( void )\r
+{\r
+       /* Called from the inline assembler - this cannot be static\r
+       otherwise it can get optimised away. */\r
+       xRegTestStatus = pdFAIL;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvRegTestTask1( void *pvParameters )\r
+{\r
+       /* Just to remove compiler warning. */\r
+       ( void ) pvParameters;\r
+\r
+       /* The first register test task as described at the top of this file.  The\r
+       values used in the registers are different to those use in the second \r
+       register test task.  Also, unlike the second register test task, this task\r
+       yields between setting the register values and subsequently checking the\r
+       register values. */\r
+       asm volatile\r
+       (\r
+               "RegTest1Start:                                 \n\t" \\r
+               "                                                               \n\t" \\r
+               "       li              0, 301                          \n\t" \\r
+               "       mtspr   256, 0  #USPRG0         \n\t" \\r
+               "       li              0, 501                          \n\t" \\r
+               "       mtspr   8, 0    #LR                     \n\t" \\r
+               "       li              0, 4                            \n\t" \\r
+               "       mtspr   1, 0    #XER            \n\t" \\r
+               "                                                               \n\t" \\r
+               "       li              0, 1                            \n\t" \\r
+               "       li              2, 2                            \n\t" \\r
+               "       li              3, 3                            \n\t" \\r
+               "       li              4,      4                               \n\t" \\r
+               "       li              5,      5                               \n\t" \\r
+               "       li              6,      6                               \n\t" \\r
+               "       li              7,      7                               \n\t" \\r
+               "       li              8,      8                               \n\t" \\r
+               "       li              9,      9                               \n\t" \\r
+               "       li              10,     10                              \n\t" \\r
+               "       li              11,     11                              \n\t" \\r
+               "       li              12,     12                              \n\t" \\r
+               "       li              13,     13                              \n\t" \\r
+               "       li              14,     14                              \n\t" \\r
+               "       li              15,     15                              \n\t" \\r
+               "       li              16,     16                              \n\t" \\r
+               "       li              17,     17                              \n\t" \\r
+               "       li              18,     18                              \n\t" \\r
+               "       li              19,     19                              \n\t" \\r
+               "       li              20,     20                              \n\t" \\r
+               "       li              21,     21                              \n\t" \\r
+               "       li              22,     22                              \n\t" \\r
+               "       li              23,     23                              \n\t" \\r
+               "       li              24,     24                              \n\t" \\r
+               "       li              25,     25                              \n\t" \\r
+               "       li              26,     26                              \n\t" \\r
+               "       li              27,     27                              \n\t" \\r
+               "       li              28,     28                              \n\t" \\r
+               "       li              29,     29                              \n\t" \\r
+               "       li              30,     30                              \n\t" \\r
+               "       li              31,     31                              \n\t" \\r
+               "                                                               \n\t" \\r
+               "       sc                                                      \n\t" \\r
+               "       nop                                                     \n\t" \\r
+               "                                                               \n\t" \\r
+               "       cmpwi   0, 1                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   2, 2                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   3, 3                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   4, 4                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   5, 5                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   6, 6                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   7, 7                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   8, 8                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   9, 9                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   10, 10                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   11, 11                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   12, 12                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   13, 13                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   14, 14                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   15, 15                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   16, 16                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   17, 17                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   18, 18                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   19, 19                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   20, 20                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   21, 21                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   22, 22                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   23, 23                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   24, 24                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   25, 25                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   26, 26                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   27, 27                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   28, 28                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   29, 29                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   30, 30                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       cmpwi   31, 31                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "                                                               \n\t" \\r
+               "       mfspr   0, 256  #USPRG0         \n\t" \\r
+               "       cmpwi   0, 301                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       mfspr   0, 8    #LR                     \n\t" \\r
+               "       cmpwi   0, 501                          \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "       mfspr   0, 1    #XER            \n\t" \\r
+               "       cmpwi   0, 4                            \n\t" \\r
+               "       bne     RegTest1Fail                    \n\t" \\r
+               "                                                               \n\t" \\r
+               "       bl prvRegTest1Pass                      \n\t" \\r
+               "       b RegTest1Start                         \n\t" \\r
+               "                                                               \n\t" \\r
+               "RegTest1Fail:                                  \n\t" \\r
+               "                                                               \n\t" \\r
+               "                                                               \n\t" \\r
+               "       bl prvRegTestFail                       \n\t" \\r
+               "       b RegTest1Start                         \n\t" \\r
+       );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void prvRegTestTask2( void *pvParameters )\r
+{\r
+       /* Just to remove compiler warning. */\r
+       ( void ) pvParameters;\r
+\r
+       /* The second register test task as described at the top of this file.  \r
+       Note that this task fills the registers with different values to the\r
+       first register test task. */\r
+       asm volatile\r
+       (\r
+               "RegTest2Start:                                 \n\t" \\r
+               "                                                               \n\t" \\r
+               "       li              0, 300                          \n\t" \\r
+               "       mtspr   256, 0  #USPRG0         \n\t" \\r
+               "       li              0, 500                          \n\t" \\r
+               "       mtspr   8, 0    #LR                     \n\t" \\r
+               "       li              0, 4                            \n\t" \\r
+               "       mtspr   1, 0    #XER            \n\t" \\r
+               "                                                               \n\t" \\r
+               "       li              0, 11                           \n\t" \\r
+               "       li              2, 12                           \n\t" \\r
+               "       li              3, 13                           \n\t" \\r
+               "       li              4,      14                              \n\t" \\r
+               "       li              5,      15                              \n\t" \\r
+               "       li              6,      16                              \n\t" \\r
+               "       li              7,      17                              \n\t" \\r
+               "       li              8,      18                              \n\t" \\r
+               "       li              9,      19                              \n\t" \\r
+               "       li              10,     110                             \n\t" \\r
+               "       li              11,     111                             \n\t" \\r
+               "       li              12,     112                             \n\t" \\r
+               "       li              13,     113                             \n\t" \\r
+               "       li              14,     114                             \n\t" \\r
+               "       li              15,     115                             \n\t" \\r
+               "       li              16,     116                             \n\t" \\r
+               "       li              17,     117                             \n\t" \\r
+               "       li              18,     118                             \n\t" \\r
+               "       li              19,     119                             \n\t" \\r
+               "       li              20,     120                             \n\t" \\r
+               "       li              21,     121                             \n\t" \\r
+               "       li              22,     122                             \n\t" \\r
+               "       li              23,     123                             \n\t" \\r
+               "       li              24,     124                             \n\t" \\r
+               "       li              25,     125                             \n\t" \\r
+               "       li              26,     126                             \n\t" \\r
+               "       li              27,     127                             \n\t" \\r
+               "       li              28,     128                             \n\t" \\r
+               "       li              29,     129                             \n\t" \\r
+               "       li              30,     130                             \n\t" \\r
+               "       li              31,     131                             \n\t" \\r
+               "                                                               \n\t" \\r
+               "       cmpwi   0, 11                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   2, 12                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   3, 13                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   4, 14                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   5, 15                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   6, 16                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   7, 17                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   8, 18                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   9, 19                           \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   10, 110                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   11, 111                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   12, 112                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   13, 113                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   14, 114                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   15, 115                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   16, 116                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   17, 117                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   18, 118                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   19, 119                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   20, 120                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   21, 121                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   22, 122                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   23, 123                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   24, 124                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   25, 125                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   26, 126                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   27, 127                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   28, 128                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   29, 129                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   30, 130                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       cmpwi   31, 131                         \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "                                                               \n\t" \\r
+               "       mfspr   0, 256  #USPRG0         \n\t" \\r
+               "       cmpwi   0, 300                          \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       mfspr   0, 8    #LR                     \n\t" \\r
+               "       cmpwi   0, 500                          \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "       mfspr   0, 1    #XER            \n\t" \\r
+               "       cmpwi   0, 4                            \n\t" \\r
+               "       bne     RegTest2Fail                    \n\t" \\r
+               "                                                               \n\t" \\r
+               "       bl prvRegTest2Pass                      \n\t" \\r
+               "       b RegTest2Start                         \n\t" \\r
+               "                                                               \n\t" \\r
+               "RegTest2Fail:                                  \n\t" \\r
+               "                                                               \n\t" \\r
+               "                                                               \n\t" \\r
+               "       bl prvRegTestFail                       \n\t" \\r
+               "       b RegTest2Start                         \n\t" \\r
+       );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+/* This hook function will get called if there is a suspected stack overflow.\r
+An overflow can cause the task name to be corrupted, in which case the task\r
+handle needs to be used to determine the offending task. */\r
+void vApplicationStackOverflowHook( xTaskHandle xTask, signed portCHAR *pcTaskName );\r
+void vApplicationStackOverflowHook( xTaskHandle xTask, signed portCHAR *pcTaskName )\r
+{\r
+/* To prevent the optimiser removing the variables. */\r
+volatile xTaskHandle xTaskIn = xTask;\r
+volatile signed portCHAR *pcTaskNameIn = pcTaskName;\r
+\r
+       /* Remove compiler warnings. */\r
+       ( void ) xTaskIn;\r
+       ( void ) pcTaskNameIn;\r
+\r
+       /* The following three calls are simply to stop compiler warnings about the\r
+       functions not being used - they are called from the inline assembly. */\r
+       prvRegTest1Pass();\r
+       prvRegTest2Pass();\r
+       prvRegTestFail();\r
+\r
+       for( ;; );\r
+}\r
+\r
+\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/partest/partest.c b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/partest/partest.c
new file mode 100644 (file)
index 0000000..72eee58
--- /dev/null
@@ -0,0 +1,170 @@
+/*\r
+       FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+       This file is part of the FreeRTOS.org distribution.\r
+\r
+       FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+       under the terms of the GNU General Public License (version 2) as published\r
+       by the Free Software Foundation and modified by the FreeRTOS exception.\r
+       **NOTE** The exception to the GPL is included to allow you to distribute a\r
+       combined work that includes FreeRTOS.org without being obliged to provide\r
+       the source code for any proprietary components.  Alternative commercial\r
+       license and support terms are also available upon request.  See the \r
+       licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+       FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT\r
+       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+       more details.\r
+\r
+       You should have received a copy of the GNU General Public License along\r
+       with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
+\r
+\r
+       ***************************************************************************\r
+       *                                                                         *\r
+       * Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *\r
+       *                                                                         *\r
+       * This is a concise, step by step, 'hands on' guide that describes both   *\r
+       * general multitasking concepts and FreeRTOS specifics. It presents and   *\r
+       * explains numerous examples that are written using the FreeRTOS API.     *\r
+       * Full source code for all the examples is provided in an accompanying    *\r
+       * .zip file.                                                              *\r
+       *                                                                         *\r
+       ***************************************************************************\r
+\r
+       1 tab == 4 spaces!\r
+\r
+       Please ensure to read the configuration and relevant port sections of the\r
+       online documentation.\r
+\r
+       http://www.FreeRTOS.org - Documentation, latest information, license and\r
+       contact details.\r
+\r
+       http://www.SafeRTOS.com - A version that is certified for use in safety\r
+       critical systems.\r
+\r
+       http://www.OpenRTOS.com - Commercial support, development, porting,\r
+       licensing and training services.\r
+*/\r
+\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+\r
+/* Demo application includes. */\r
+#include "partest.h"\r
+\r
+/* Library includes. */\r
+#include "xparameters.h"\r
+#include "xgpio_l.h"\r
+\r
+/* Misc hardware specific definitions. */\r
+#define partstALL_AS_OUTPUT    0x00\r
+#define partstCHANNEL_1                0x01\r
+#define partstMAX_8BIT_LED     0x07\r
+\r
+/* The outputs are split into two IO sections, these variables maintain the \r
+current value of either section. */\r
+static unsigned portBASE_TYPE uxCurrentOutput8Bit, uxCurrentOutput5Bit;\r
+\r
+/*-----------------------------------------------------------*/\r
+/*\r
+ * Setup the IO for the LED outputs.\r
+ */\r
+void vParTestInitialise( void )\r
+{\r
+       /* Set both sets of LED's on the demo board to outputs. */\r
+       XGpio_mSetDataDirection( XPAR_LEDS_8BIT_BASEADDR, partstCHANNEL_1, partstALL_AS_OUTPUT );\r
+       XGpio_mSetDataDirection( XPAR_LEDS_POSITIONS_BASEADDR, partstCHANNEL_1, partstALL_AS_OUTPUT );\r
+\r
+       /* Start with all outputs off. */\r
+       uxCurrentOutput8Bit = 0;\r
+       XGpio_mSetDataReg( XPAR_LEDS_8BIT_BASEADDR, partstCHANNEL_1, 0x00 );\r
+       uxCurrentOutput5Bit = 0;\r
+       XGpio_mSetDataReg( XPAR_LEDS_POSITIONS_BASEADDR, partstCHANNEL_1, 0x00 );\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestSetLED( unsigned portBASE_TYPE uxLED, signed portBASE_TYPE xValue )\r
+{\r
+unsigned portBASE_TYPE uxBaseAddress, *puxCurrentValue;\r
+\r
+       portENTER_CRITICAL();\r
+       {\r
+               /* Which IO section does the LED being set/cleared belong to?  The\r
+               4 bit or 5 bit outputs? */\r
+               if( uxLED <= partstMAX_8BIT_LED )\r
+               {\r
+                       uxBaseAddress = XPAR_LEDS_8BIT_BASEADDR;\r
+                       puxCurrentValue = &uxCurrentOutput5Bit;\r
+               }       \r
+               else\r
+               {\r
+                       uxBaseAddress = XPAR_LEDS_POSITIONS_BASEADDR;\r
+                       puxCurrentValue = &uxCurrentOutput8Bit;\r
+                       uxLED -= partstMAX_8BIT_LED;\r
+               }\r
+\r
+               /* Setup the bit mask accordingly. */\r
+               uxLED = 0x01 << uxLED;\r
+\r
+               /* Maintain the current output value. */\r
+               if( xValue )\r
+               {\r
+                       *puxCurrentValue |= uxLED;\r
+               }\r
+               else\r
+               {\r
+                       *puxCurrentValue &= ~uxLED;\r
+               }\r
+\r
+               /* Write the value to the port. */\r
+               XGpio_mSetDataReg( uxBaseAddress, partstCHANNEL_1, *puxCurrentValue );\r
+       }\r
+       portEXIT_CRITICAL();\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vParTestToggleLED( unsigned portBASE_TYPE uxLED )\r
+{\r
+unsigned portBASE_TYPE uxBaseAddress, *puxCurrentValue;\r
+\r
+       portENTER_CRITICAL();\r
+       {\r
+               /* Which IO section does the LED being toggled belong to?  The\r
+               4 bit or 5 bit outputs? */\r
+               if( uxLED <= partstMAX_8BIT_LED )\r
+               {\r
+\r
+                       uxBaseAddress = XPAR_LEDS_8BIT_BASEADDR;\r
+                       puxCurrentValue = &uxCurrentOutput5Bit;\r
+               }       \r
+               else\r
+               {\r
+                       uxBaseAddress = XPAR_LEDS_POSITIONS_BASEADDR;\r
+                       puxCurrentValue = &uxCurrentOutput8Bit;\r
+                       uxLED -= partstMAX_8BIT_LED;\r
+               }\r
+\r
+               /* Setup the bit mask accordingly. */\r
+               uxLED = 0x01 << uxLED;\r
+\r
+               /* Maintain the current output value. */\r
+               if( *puxCurrentValue & uxLED )\r
+               {\r
+                       *puxCurrentValue &= ~uxLED;\r
+               }\r
+               else\r
+               {\r
+                       *puxCurrentValue |= uxLED;\r
+               }\r
+\r
+               /* Write the value to the port. */\r
+               XGpio_mSetDataReg(uxBaseAddress, partstCHANNEL_1, *puxCurrentValue );\r
+       }\r
+       portEXIT_CRITICAL();\r
+}\r
+\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/serial/serial.c b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/serial/serial.c
new file mode 100644 (file)
index 0000000..d5f005a
--- /dev/null
@@ -0,0 +1,235 @@
+/*\r
+       FreeRTOS.org V5.3.1 - Copyright (C) 2003-2009 Richard Barry.\r
+\r
+       This file is part of the FreeRTOS.org distribution.\r
+\r
+       FreeRTOS.org is free software; you can redistribute it and/or modify it\r
+       under the terms of the GNU General Public License (version 2) as published\r
+       by the Free Software Foundation and modified by the FreeRTOS exception.\r
+       **NOTE** The exception to the GPL is included to allow you to distribute a\r
+       combined work that includes FreeRTOS.org without being obliged to provide\r
+       the source code for any proprietary components.  Alternative commercial\r
+       license and support terms are also available upon request.  See the \r
+       licensing section of http://www.FreeRTOS.org for full details.\r
+\r
+       FreeRTOS.org is distributed in the hope that it will be useful, but WITHOUT\r
+       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+       FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\r
+       more details.\r
+\r
+       You should have received a copy of the GNU General Public License along\r
+       with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59\r
+       Temple Place, Suite 330, Boston, MA  02111-1307  USA.\r
+\r
+\r
+       ***************************************************************************\r
+       *                                                                         *\r
+       * Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *\r
+       *                                                                         *\r
+       * This is a concise, step by step, 'hands on' guide that describes both   *\r
+       * general multitasking concepts and FreeRTOS specifics. It presents and   *\r
+       * explains numerous examples that are written using the FreeRTOS API.     *\r
+       * Full source code for all the examples is provided in an accompanying    *\r
+       * .zip file.                                                              *\r
+       *                                                                         *\r
+       ***************************************************************************\r
+\r
+       1 tab == 4 spaces!\r
+\r
+       Please ensure to read the configuration and relevant port sections of the\r
+       online documentation.\r
+\r
+       http://www.FreeRTOS.org - Documentation, latest information, license and\r
+       contact details.\r
+\r
+       http://www.SafeRTOS.com - A version that is certified for use in safety\r
+       critical systems.\r
+\r
+       http://www.OpenRTOS.com - Commercial support, development, porting,\r
+       licensing and training services.\r
+*/\r
+\r
+\r
+/* \r
+       BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART\r
+*/\r
+\r
+/* Scheduler includes. */\r
+#include "FreeRTOS.h"\r
+#include "queue.h"\r
+#include "task.h"\r
+\r
+/* Demo application includes. */\r
+#include "serial.h"\r
+\r
+/* Library includes. */\r
+#include "xparameters.h"\r
+#include "xuartlite.h"\r
+#include "xuartlite_l.h"\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+/* Queues used to hold received characters, and characters waiting to be\r
+transmitted. */\r
+static xQueueHandle xRxedChars; \r
+static xQueueHandle xCharsForTx; \r
+\r
+/* Structure that maintains information on the UART being used. */\r
+static XUartLite xUART;\r
+\r
+/*\r
+ * Sample UART interrupt handler.  Note this is used to demonstrate the kernel\r
+ * features and test the port - it is not intended to represent an efficient\r
+ * implementation.\r
+ */\r
+static void vSerialISR( XUartLite *pxUART );\r
+\r
+/*-----------------------------------------------------------*/\r
+\r
+xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )\r
+{\r
+       /* NOTE: The baud rate used by this driver is determined by the hardware\r
+       parameterization of the UART Lite peripheral, and the baud value passed to\r
+       this function has no effect. */\r
+       ( void ) ulWantedBaud;\r
+\r
+       /* Create the queues used to hold Rx and Tx characters. */\r
+       xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );\r
+       xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );\r
+\r
+       /* Only initialise the UART if the queues were created correctly. */\r
+       if( ( xRxedChars != NULL ) && ( xCharsForTx != NULL ) )\r
+       {\r
+\r
+               XUartLite_Initialize( &xUART, XPAR_RS232_UART_1_DEVICE_ID );\r
+               XUartLite_ResetFifos( &xUART );\r
+               XUartLite_DisableInterrupt( &xUART );\r
+\r
+               if( xPortInstallInterruptHandler( XPAR_XPS_INTC_0_RS232_UART_1_INTERRUPT_INTR, ( XInterruptHandler )vSerialISR, (void *)&xUART ) == pdPASS )\r
+               {\r
+                       /* xPortInstallInterruptHandler() could fail if \r
+                       vPortSetupInterruptController() has not been called prior to this \r
+                       function. */\r
+                       XUartLite_EnableInterrupt( &xUART );\r
+               }\r
+       }\r
+       \r
+       /* There is only one port so the handle is not used. */\r
+       return ( xComPortHandle ) 0;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )\r
+{\r
+       /* The port handle is not required as this driver only supports one UART. */\r
+       ( void ) pxPort;\r
+\r
+       /* Get the next character from the buffer.  Return false if no characters\r
+       are available, or arrive before xBlockTime expires. */\r
+       if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )\r
+       {\r
+               return pdTRUE;\r
+       }\r
+       else\r
+       {\r
+               return pdFALSE;\r
+       }\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )\r
+{\r
+portBASE_TYPE xReturn = pdTRUE;\r
+\r
+       /* Just to remove compiler warning. */\r
+       ( void ) pxPort;\r
+\r
+       portENTER_CRITICAL();\r
+       {\r
+               /* If the UART FIFO is full we can block posting the new data on the\r
+               Tx queue. */\r
+               if( XUartLite_mIsTransmitFull( XPAR_RS232_UART_1_BASEADDR ) )\r
+               {\r
+                       if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )\r
+                       {\r
+                               xReturn = pdFAIL;\r
+                       }\r
+               }\r
+               /* Otherwise, if there is data already in the queue we should add the\r
+               new data to the back of the queue to ensure the sequencing is \r
+               maintained. */\r
+               else if( uxQueueMessagesWaiting( xCharsForTx ) )\r
+               {\r
+                       if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )\r
+                       {\r
+                               xReturn = pdFAIL;\r
+                       }                       \r
+               }\r
+               /* If the UART FIFO is not full and there is no data already in the\r
+               queue we can write directly to the FIFO without disrupting the \r
+               sequence. */\r
+               else\r
+               {\r
+                       XIo_Out32( XPAR_RS232_UART_1_BASEADDR + XUL_TX_FIFO_OFFSET, cOutChar );\r
+               }\r
+       }\r
+       portEXIT_CRITICAL();\r
+\r
+       return xReturn;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+void vSerialClose( xComPortHandle xPort )\r
+{\r
+       /* Not supported as not required by the demo application. */\r
+       ( void ) xPort;\r
+}\r
+/*-----------------------------------------------------------*/\r
+\r
+static void vSerialISR( XUartLite *pxUART )\r
+{\r
+unsigned portLONG ulISRStatus;\r
+portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE, lDidSomething;\r
+portCHAR cChar;\r
+\r
+       /* Just to remove compiler warning. */\r
+       ( void ) pxUART;\r
+\r
+       do\r
+       {\r
+               lDidSomething = pdFALSE;\r
+\r
+               ulISRStatus = XIo_In32( XPAR_RS232_UART_1_BASEADDR + XUL_STATUS_REG_OFFSET );\r
+\r
+               if( ( ulISRStatus & XUL_SR_RX_FIFO_VALID_DATA ) != 0 )\r
+               {\r
+                       /* A character is available - place it in the queue of received\r
+                       characters.  This might wake a task that was blocked waiting for \r
+                       data. */\r
+                       cChar = ( portCHAR ) XIo_In32( XPAR_RS232_UART_1_BASEADDR + XUL_RX_FIFO_OFFSET );\r
+                       xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken );\r
+                       lDidSomething = pdTRUE;\r
+               }\r
+               \r
+               if( ( ulISRStatus & XUL_SR_TX_FIFO_EMPTY ) != 0 )\r
+               {\r
+                       /* There is space in the FIFO - if there are any characters queue for\r
+                       transmission they can be sent to the UART now.  This might unblock a\r
+                       task that was waiting for space to become available on the Tx queue. */\r
+                       if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )\r
+                       {\r
+                               XIo_Out32( XPAR_RS232_UART_1_BASEADDR + XUL_TX_FIFO_OFFSET, cChar );\r
+                               lDidSomething = pdTRUE;\r
+                       }                       \r
+               }\r
+       } while( lDidSomething == pdTRUE );\r
+\r
+       /* If we woke any tasks we may require a context switch. */\r
+       if( xHigherPriorityTaskWoken )\r
+       {\r
+               portYIELD_FROM_ISR();\r
+       }\r
+}\r
+\r
+\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/Version_Changes.log b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/Version_Changes.log
new file mode 100644 (file)
index 0000000..817aa9b
--- /dev/null
@@ -0,0 +1,15 @@
+ The following files will be modified:
+  system.mhs
+  system.mss
+
+--------------------------------------
+ The following changes will be made:
+ Core ppc440mc_ddr2 2.00.a will be replaced by 2.00.b
+ Core clock_generator 3.00.a will be replaced by 3.01.a
+
+ Driver iic 1.14.a will be replaced by 1.15.a
+ Driver cpu_ppc440 1.00.b will be replaced by 1.01.a
+--------------------------------------
+ The following changes need to be made manually by the user:
+ Core plbv46_pcie 3.00.b needs to be replaced by 4.01.a
+ Core xps_ethernetlite 2.01.a needs to be replaced by 3.00.a
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgBLKD_Dimensions.xsl
new file mode 100644 (file)
index 0000000..bf9bf94
--- /dev/null
@@ -0,0 +1,173 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink">
+                
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+       
+<!-- 
+       ======================================================
+                       BUS INTERFACE DIMENSIONS
+       ======================================================
+-->                            
+       
+<xsl:variable name="BLKD_BIF_H"     select="16"/>                              
+<xsl:variable name="BLKD_BIF_W"     select="32"/>                              
+       
+<xsl:variable name="BLKD_BIFC_H"    select="24"/>                              
+<xsl:variable name="BLKD_BIFC_W"    select="24"/>                              
+
+<xsl:variable name="BLKD_BIFC_dx"   select="ceiling($BLKD_BIFC_W div 5)"/>
+<xsl:variable name="BLKD_BIFC_dy"   select="ceiling($BLKD_BIFC_H div 5)"/>
+<xsl:variable name="BLKD_BIFC_Hi"   select="($BLKD_BIFC_H - ($BLKD_BIFC_dy * 2))"/>    
+<xsl:variable name="BLKD_BIFC_Wi"   select="($BLKD_BIFC_W - ($BLKD_BIFC_dx * 2))"/>
+
+<xsl:variable name="BLKD_BIF_TYPE_ONEWAY"  select="'OneWay'"/>
+       
+<!-- 
+       ======================================================
+                       GLOLBAL BUS INTERFACE DIMENSIONS
+               (Define for global MdtSVG_BifShapes.xsl which is used across all
+            diagrams to define the shapes of bifs the same across all diagrams)
+       ======================================================
+-->    
+       
+<xsl:variable name="BIF_H"     select="$BLKD_BIF_H"/>                          
+<xsl:variable name="BIF_W"     select="$BLKD_BIF_W"/>
+       
+<xsl:variable name="BIFC_H"    select="$BLKD_BIFC_H"/>
+<xsl:variable name="BIFC_W"    select="$BLKD_BIFC_W"/>
+       
+<xsl:variable name="BIFC_dx"   select="$BLKD_BIFC_dx"/>
+<xsl:variable name="BIFC_dy"   select="$BLKD_BIFC_dy"/>
+       
+<xsl:variable name="BIFC_Hi"   select="$BLKD_BIFC_Hi"/>        
+<xsl:variable name="BIFC_Wi"   select="$BLKD_BIFC_Wi"/>
+
+
+<!-- 
+       ======================================================
+                       BUS DIMENSIONS
+       ======================================================
+-->                            
+       
+<xsl:variable name="BLKD_P2P_BUS_W"     select="($BLKD_BUS_ARROW_H - ($BLKD_BUS_ARROW_G * 2))"/>       
+<xsl:variable name="BLKD_SBS_LANE_H"    select="($BLKD_MOD_H + ($BLKD_BIF_H * 2))"/>   
+<xsl:variable name="BLKD_BUS_LANE_W"    select="($BLKD_BIF_W + ($BLKD_MOD_BIF_GAP_H * 2))"/>
+<xsl:variable name="BLKD_BUS_ARROW_W"   select="ceiling($BLKD_BIFC_W div 3)"/> 
+<xsl:variable name="BLKD_BUS_ARROW_H"   select="ceiling($BLKD_BIFC_H div 2)"/>
+<xsl:variable name="BLKD_BUS_ARROW_G"   select="ceiling($BLKD_BIFC_W div 12)"/>
+       
+       
+<!-- 
+       ======================================================
+                       IO PORT DIMENSIONS
+       ======================================================
+-->                            
+       
+<xsl:variable name="BLKD_IOP_H"   select="16"/>                                
+<xsl:variable name="BLKD_IOP_W"   select="16"/>                                
+<xsl:variable name="BLKD_IOP_SPC" select="12"/>                                
+
+       
+<!-- 
+       ======================================================
+                       INTERRUPT NOTATION DIMENSIONS
+       ======================================================
+-->                            
+       
+<xsl:variable name="BLKD_INTR_W"  select="18"/>
+<xsl:variable name="BLKD_INTR_H"  select="18"/>
+       
+<!-- 
+       ======================================================
+                       MODULE DIMENSIONS
+       ======================================================
+-->                            
+       
+<xsl:variable name="BLKD_MOD_IO_GAP"   select="8"/>    
+       
+<xsl:variable name="BLKD_MOD_W"  select="(                    ($BLKD_BIF_W * 2) + ($BLKD_MOD_BIF_GAP_H * 1) + ($BLKD_MOD_LANE_W * 2))"/>
+<xsl:variable name="BLKD_MOD_H"  select="($BLKD_MOD_LABEL_H + ($BLKD_BIF_H * 1) + ($BLKD_MOD_BIF_GAP_V * 1) + ($BLKD_MOD_LANE_H * 2))"/>
+       
+<xsl:variable name="BLKD_MOD_BIF_GAP_H" select="ceiling($BLKD_BIF_H div 4)"/>                          
+<xsl:variable name="BLKD_MOD_BIF_GAP_V" select="ceiling($BLKD_BIFC_H div 2)"/>                         
+       
+<xsl:variable name="BLKD_MOD_LABEL_W"   select="(($BLKD_BIF_W * 2) + $BLKD_MOD_BIF_GAP_H)"/>
+<xsl:variable name="BLKD_MOD_LABEL_H"   select="(($BLKD_BIF_H * 2) + ceiling($BLKD_BIF_H div 3))"/>
+       
+<xsl:variable name="BLKD_MOD_LANE_W"    select="ceiling($BLKD_BIF_W div 3)"/>
+<xsl:variable name="BLKD_MOD_LANE_H"    select="ceiling($BLKD_BIF_H div 4)"/>
+       
+<xsl:variable name="BLKD_MOD_EDGE_W"    select="ceiling($BLKD_MOD_LANE_W div 2)"/>
+<xsl:variable name="BLKD_MOD_SHAPES_G"  select="($BLKD_BIF_W + $BLKD_BIF_W)"/>
+       
+<xsl:variable name="BLKD_MOD_BKTLANE_H" select="$BLKD_BIF_H"/>
+<xsl:variable name="BLKD_MOD_BKTLANE_W" select="$BLKD_BIF_H"/>
+       
+<xsl:variable name="BLKD_MOD_BUCKET_G"  select="ceiling($BLKD_BIF_W div 2)"/>
+       
+<xsl:variable name="BLKD_MPMC_MOD_H"    select="(($BLKD_BIF_H * 1) + ($BLKD_MOD_BIF_GAP_V * 2) + ($BLKD_MOD_LANE_H * 2))"/>
+       
+       
+<!-- 
+       ======================================================
+                       GLOBAL DIAGRAM DIMENSIONS
+       ======================================================
+-->                            
+       
+<xsl:variable name="BLKD_IORCHAN_H"      select="$BLKD_BIF_H"/>
+<xsl:variable name="BLKD_IORCHAN_W"      select="$BLKD_BIF_H"/>
+       
+<xsl:variable name="BLKD_PRTCHAN_H"      select="($BLKD_BIF_H * 2) + ceiling($BLKD_BIF_H div 2)"/>
+<xsl:variable name="BLKD_PRTCHAN_W"      select="($BLKD_BIF_H * 2) + ceiling($BLKD_BIF_H div 2) + 8"/>
+       
+<xsl:variable name="BLKD_DRAWAREA_MIN_W" select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * 3) + ($BLKD_MOD_BUCKET_G * 2)))"/>
+       
+<xsl:variable name="BLKD_INNER_X"               select="($BLKD_PRTCHAN_W  + $BLKD_IORCHAN_W + $BLKD_INNER_GAP)"/>
+<xsl:variable name="BLKD_INNER_Y"               select="($BLKD_PRTCHAN_H  + $BLKD_IORCHAN_H + $BLKD_INNER_GAP)"/>
+<xsl:variable name="BLKD_INNER_GAP"      select="ceiling($BLKD_MOD_W div 2)"/>
+       
+<xsl:variable name="BLKD_SBS2IP_GAP"    select="$BLKD_MOD_H"/>
+<xsl:variable name="BLKD_BRIDGE_GAP"    select="($BLKD_BUS_LANE_W * 4)"/>
+<xsl:variable name="BLKD_IP2UNK_GAP"    select="$BLKD_MOD_H"/>
+<xsl:variable name="BLKD_PROC2SBS_GAP"  select="($BLKD_BIF_H * 2)"/>
+<xsl:variable name="BLKD_IOR2PROC_GAP"  select="$BLKD_BIF_W"/>
+<xsl:variable name="BLKD_MPMC2PROC_GAP" select="($BLKD_BIF_H * 2)"/>
+<xsl:variable name="BLKD_SPECS2KEY_GAP" select="$BLKD_BIF_W"/>
+<xsl:variable name="BLKD_DRAWAREA2KEY_GAP"  select="ceiling($BLKD_BIF_W div 3)"/>
+       
+<xsl:variable name="BLKD_KEY_H"         select="250"/>
+<xsl:variable name="BLKD_KEY_W"         select="($BLKD_DRAWAREA_MIN_W + ceiling($BLKD_DRAWAREA_MIN_W div 2.5))"/>
+       
+       
+<xsl:variable name="BLKD_SPECS_H"       select="100"/>
+<xsl:variable name="BLKD_SPECS_W"       select="300"/>
+       
+       
+       
+<xsl:variable name="BLKD_BKT_MODS_PER_ROW"   select="3"/>
+       
+<!--           
+<xsl:template name="Print_Dimensions">
+       <xsl:message>MOD_LABEL_W  : <xsl:value-of select="$MOD_LABEL_W"/></xsl:message>
+       <xsl:message>MOD_LABEL_H  : <xsl:value-of select="$MOD_LABEL_H"/></xsl:message>
+       
+       <xsl:message>MOD_LANE_W   : <xsl:value-of select="$MOD_LANE_W"/></xsl:message>
+       <xsl:message>MOD_LANE_H   : <xsl:value-of select="$MOD_LANE_H"/></xsl:message>
+       
+       <xsl:message>MOD_EDGE_W   : <xsl:value-of select="$MOD_EDGE_W"/></xsl:message>
+       <xsl:message>MOD_SHAPES_G : <xsl:value-of select="$MOD_SHAPES_G"/></xsl:message>
+       
+       <xsl:message>MOD_BKTLANE_W   : <xsl:value-of select="$MOD_BKTLANE_W"/></xsl:message>
+       <xsl:message>MOD_BKTLANE_H   : <xsl:value-of select="$MOD_BKTLANE_H"/></xsl:message>
+       <xsl:message>MOD_BUCKET_G    : <xsl:value-of select="$MOD_BUCKET_G"/></xsl:message>
+       
+</xsl:template>                
+-->    
+       
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_Colors.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_Colors.xsl
new file mode 100644 (file)
index 0000000..8de3842
--- /dev/null
@@ -0,0 +1,134 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink">
+           
+<xsl:variable name="COL_RED"        select="'#AA0000'"/>
+<xsl:variable name="COL_GRAY"       select="'#E1E1E1'"/>
+<xsl:variable name="COL_XLNX"       select="'#AA0017'"/>
+<xsl:variable name="COL_BLACK"      select="'#000000'"/>
+<xsl:variable name="COL_WHITE"      select="'#FFFFFF'"/>
+<xsl:variable name="COL_YELLOW"     select="'#FFFFDD'"/>
+<xsl:variable name="COL_YELLOW_LT"  select="'#FFFFEE'"/>
+                               
+<xsl:variable name="COL_BG"          select="'#CCCCCC'"/>
+<xsl:variable name="COL_BG_LT"       select="'#EEEEEE'"/>
+<xsl:variable name="COL_BG_UNK"      select="'#DDDDDD'"/>
+       
+<xsl:variable name="COL_PROC_BG"     select="'#FFCCCC'"/>
+<xsl:variable name="COL_PROC_BG_MB"  select="'#222222'"/>
+<xsl:variable name="COL_PROC_BG_PP"  select="'#90001C'"/>
+<xsl:variable name="COL_PROC_BG_USR" select="'#666699'"/>
+       
+<xsl:variable name="COL_MPMC_BG"     select="'#8B0800'"/>
+       
+<xsl:variable name="COL_MOD_BG"      select="'#F0F0F0'"/>
+<xsl:variable name="COL_MOD_SPRT"    select="'#888888'"/>
+<xsl:variable name="COL_MOD_MPRT"    select="'#888888'"/>
+
+
+<xsl:variable name="COL_IORING"     select="'#000088'"/>
+<xsl:variable name="COL_IORING_LT"  select="'#CCCCFF'"/>
+<xsl:variable name="COL_SYSPRT"     select="'#0000BB'"/>
+
+<!-- 
+<xsl:variable name="COL_INTR_0"      select="'#FF9900'"/>
+<xsl:variable name="COL_INTR_1"      select="'#00CCCC'"/>
+<xsl:variable name="COL_INTR_2"      select="'#33FF33'"/>
+<xsl:variable name="COL_INTR_3"      select="'#FF00CC'"/>
+<xsl:variable name="COL_INTR_4"      select="'#99FF33'"/>
+<xsl:variable name="COL_INTR_5"      select="'#0066CC'"/>
+<xsl:variable name="COL_INTR_6"      select="'#9933FF'"/>
+<xsl:variable name="COL_INTR_7"      select="'#3300FF'"/>
+<xsl:variable name="COL_INTR_8"      select="'#00FF33'"/>
+<xsl:variable name="COL_INTR_9"      select="'#FF3333'"/>
+-->
+
+<xsl:variable name="COL_INTCS">
+       <INTCCOLOR INDEX="0"    RGB="#FF9900"/> 
+       <INTCCOLOR INDEX="1"    RGB="#00CCCC"/> 
+       <INTCCOLOR INDEX="2"    RGB="#33FF33"/> 
+       <INTCCOLOR INDEX="3"    RGB="#FF00CC"/> 
+       <INTCCOLOR INDEX="4"    RGB="#99FF33"/> 
+       <INTCCOLOR INDEX="5"    RGB="#0066CC"/> 
+       <INTCCOLOR INDEX="6"    RGB="#9933FF"/> 
+       <INTCCOLOR INDEX="7"    RGB="#3300FF"/> 
+       <INTCCOLOR INDEX="8"    RGB="#00FF33"/> 
+       <INTCCOLOR INDEX="9"    RGB="#FF3333"/> 
+</xsl:variable>
+       
+<xsl:variable name="COL_BUSSTDS">
+
+       <BUSCOLOR BUSSTD="XIL"        RGB="#990066" RGB_LT="#CC3399"/>
+       <BUSCOLOR BUSSTD="OCM"            RGB="#0000DD" RGB_LT="#9999DD"/>
+       <BUSCOLOR BUSSTD="OPB"        RGB="#339900" RGB_LT="#CCDDCC"/>
+       <BUSCOLOR BUSSTD="LMB"        RGB="#7777FF" RGB_LT="#DDDDFF"/>
+       <BUSCOLOR BUSSTD="FSL"        RGB="#CC00CC" RGB_LT="#FFBBFF"/>
+       <BUSCOLOR BUSSTD="DCR"        RGB="#6699FF" RGB_LT="#BBDDFF"/>
+       <BUSCOLOR BUSSTD="FCB"        RGB="#8C00FF" RGB_LT="#CCCCFF"/>
+       <BUSCOLOR BUSSTD="PLB"        RGB="#FF5500" RGB_LT="#FFBB00"/>
+       <BUSCOLOR BUSSTD="PLBV34"     RGB="#FF5500" RGB_LT="#FFBB00"/>
+       <BUSCOLOR BUSSTD="PLBV34_P2P" RGB="#FF5500" RGB_LT="#FFBB00"/>
+       <BUSCOLOR BUSSTD="PLBV46"     RGB="#BB9955" RGB_LT="#FFFFDD"/>
+       <BUSCOLOR BUSSTD="PLBV46_P2P" RGB="#BB9955" RGB_LT="#FFFFDD"/>
+       
+<!--   
+       <BUSCOLOR BUSSTD="PLBV46"     RGB="#9966FF" RGB_LT="#CCCCFF"/>
+       <BUSCOLOR BUSSTD="PLBV46_P2P" RGB="#9966FF" RGB_LT="#CCCCFF"/>
+       <BUSCOLOR BUSSTD="PLB"        RGB="#FFAA33" RGB_LT="#FFEE33"/>
+       <BUSCOLOR BUSSTD="PLBV46"     RGB="#FF5500" RGB_LT="#FFBB00"/>
+       <BUSCOLOR BUSSTD="PLBV46_P2P" RGB="#FF5500" RGB_LT="#FFBB00"/>
+-->    
+       
+       <BUSCOLOR BUSSTD="TARGET"      RGB="#009999" RGB_LT="#00CCCC"/>
+       <BUSCOLOR BUSSTD="INITIATOR"   RGB="#009999" RGB_LT="#00CCCC"/>
+       
+       <BUSCOLOR BUSSTD="USER"        RGB="#009999" RGB_LT="#00CCCC"/>
+       <BUSCOLOR BUSSTD="KEY"             RGB="#444444" RGB_LT="#888888"/>
+       
+</xsl:variable>
+       
+<xsl:template name="F_BusStd2RGB">
+       <xsl:param name="iBusStd"  select="'USER'"/>
+       
+       <xsl:choose>
+               <xsl:when test="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB">
+                       <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB"/>
+               </xsl:when>
+               <xsl:otherwise>
+                       <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = 'USER')]/@RGB"/>
+               </xsl:otherwise>
+       </xsl:choose>           
+</xsl:template>        
+       
+<xsl:template name="F_BusStd2RGB_LT">
+       <xsl:param name="iBusStd"  select="'USER'"/>
+       
+       <xsl:choose>
+               <xsl:when test="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB_LT">
+                       <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = $iBusStd)]/@RGB_LT"/>
+               </xsl:when>
+               <xsl:otherwise>
+                       <xsl:value-of select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR[(@BUSSTD = 'USER')]/@RGB_LT"/>
+               </xsl:otherwise>
+       </xsl:choose>           
+</xsl:template>        
+               
+<xsl:template name="F_IntcIdx2RGB">
+       <xsl:param name="iIntcIdx"  select="'0'"/>
+
+       <xsl:variable name="index_" select="$iIntcIdx mod 9"/>
+
+       <xsl:choose>
+               <xsl:when test="exsl:node-set($COL_INTCS)/INTCCOLOR[(@INDEX = $index_)]/@RGB">
+                       <xsl:value-of select="exsl:node-set($COL_INTCS)/INTCCOLOR[(@INDEX = $index_)]/@RGB"/>
+               </xsl:when>
+               <xsl:otherwise>
+                       <xsl:value-of select="exsl:node-set($COL_INTCS)/INTCCOLOR[(@INDEX = '0')]/@RGB"/>
+               </xsl:otherwise>
+       </xsl:choose>           
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_Globals.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_Globals.xsl
new file mode 100644 (file)
index 0000000..990af6c
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink">
+                
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+                  
+<xsl:variable name="G_ROOT" select="/"/>                       
+
+<xsl:variable name="G_BIFTYPES">
+
+       <BIFTYPE TYPE="SLAVE"/>
+       <BIFTYPE TYPE="MASTER"/>
+       <BIFTYPE TYPE="MASTER_SLAVE"/>
+       
+       <BIFTYPE TYPE="TARGET"/>
+       <BIFTYPE TYPE="INITIATOR"/>
+       
+       <BIFTYPE TYPE="MONITOR"/>
+       
+       <BIFTYPE TYPE="USER"/>
+       
+</xsl:variable>        
+
+<xsl:variable name="G_BUSSTDS">
+       
+       <BUSSTD NAME="XIL"/>
+       <BUSSTD NAME="OCM"/>
+       <BUSSTD NAME="OPB"/>
+       <BUSSTD NAME="LMB"/>
+       <BUSSTD NAME="FSL"/>
+       <BUSSTD NAME="DCR"/>
+       <BUSSTD NAME="FCB"/>
+       <BUSSTD NAME="PLB"/>
+       <BUSSTD NAME="PLBV46"/>
+       <BUSSTD NAME="PLBV46_P2P"/>
+
+       <BUSSTD NAME="USER"/>
+</xsl:variable>
+
+
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_StyleDefs.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtSvgDiag_StyleDefs.xsl
new file mode 100644 (file)
index 0000000..db7f0f3
--- /dev/null
@@ -0,0 +1,580 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink">
+                
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+       
+<!-- 
+       ======================================================
+                       Function to put TEXT CSS and other Internal
+                   Styling properties directly into the output 
+                   svg. The Qt 4.3 Renderer 
+                       cannot handle separate CSS StyleSheets
+       ======================================================
+-->    
+<xsl:template name="F_WriteText">
+
+       <xsl:param name="iClass"  select="'_UNKNOWN_'"/>
+       <xsl:param name="iText"  select="' '"/>
+       <xsl:param name="iX"     select="'0'"/>
+       <xsl:param name="iY"     select="'0'"/>
+       
+<!--
+       <xsl:message>TEXT  <xsl:value-of select="$iText"/></xsl:message>        
+       <xsl:message>CLASS <xsl:value-of select="$iClass"/></xsl:message>       
+-->    
+
+       <xsl:element name="text">
+               <xsl:attribute name="x"><xsl:value-of select="$iX"/></xsl:attribute>
+               <xsl:attribute name="y"><xsl:value-of select="$iY"/></xsl:attribute>
+               
+               <xsl:choose>
+                       
+                       <xsl:when test="$iClass = 'sharedbus_label'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'12pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Courier Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+
+                       <xsl:when test="$iClass = 'p2pbus_label'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Courier Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'p2pbus_label_horiz'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'12pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="writing-mode"><xsl:value-of select="'tb'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Courier Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       
+                       <xsl:when test="$iClass = 'bif_label'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Courier Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+               
+                       <xsl:when test="$iClass = 'bc_ipinst'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Courier Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'bc_iptype'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_XLNX"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'iogrp_label'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_IORING"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'mpmc_title'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_WHITE"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'16pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'oblique'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'mpmc_biflabel'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_WHITE"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'intr_symbol'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'bkt_label'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'9pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'ipclass_label'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'9pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'key_header'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+                       
+                       <xsl:when test="$iClass = 'key_title'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_XLNX"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'14pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>
+                       
+                       <xsl:when test="$iClass = 'key_label'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+                       
+                       <xsl:when test="$iClass = 'key_label_small'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'900'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+                       
+                       
+                       <xsl:when test="$iClass = 'key_label_ul'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="text-decoration"><xsl:value-of select="'underline'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+                       
+                       
+                       <xsl:when test="$iClass = 'ipd_portlabel'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+                       
+                       <xsl:when test="$iClass = 'ipd_biflabel'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'normal'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+                       
+                       <xsl:when test="$iClass = 'ipd_iptype'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_XLNX"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Verdana Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+                       
+                       <xsl:when test="$iClass = 'ipd_ipname'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'8pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Courier Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+                       
+                       <xsl:when test="$iClass = 'blkd_spec_name'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'start'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+
+                       <xsl:when test="$iClass = 'blkd_spec_value_mid'">
+                               <xsl:attribute name="fill"><xsl:value-of select="$COL_BLACK"/></xsl:attribute>
+                               <xsl:attribute name="stroke"><xsl:value-of select="'none'"/></xsl:attribute>
+                               <xsl:attribute name="font-size"><xsl:value-of select="'10pt'"/></xsl:attribute>
+                               <xsl:attribute name="font-style"><xsl:value-of select="'italic'"/></xsl:attribute>
+                               <xsl:attribute name="font-weight"><xsl:value-of select="'bold'"/></xsl:attribute>
+                               <xsl:attribute name="text-anchor"><xsl:value-of select="'middle'"/></xsl:attribute>
+                               <xsl:attribute name="font-family"><xsl:value-of select="'Courier Arial Helvetica san-serif'"/></xsl:attribute>
+                       </xsl:when>             
+
+                       <xsl:otherwise><xsl:message>UNKNOWN Text style class <xsl:value-of select="$iClass"/></xsl:message></xsl:otherwise>
+               </xsl:choose>
+               
+               <xsl:value-of select="$iText"/>
+       </xsl:element>
+       
+</xsl:template>
+       
+</xsl:stylesheet>
+
+<!--
+       text.ioplblgrp {
+               fill:        #000088;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+       text.iplabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: 800;
+               text-anchor: middle;
+               font-family: Courier Arial Helvetica sans-serif;
+       }
+               
+       text.iptype {
+               fill:        #AA0017;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }       
+       
+       text.busintlabel {
+               fill:        #810017;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  italic;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.mpmcbiflabel {
+               fill:        #FFFFFF;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.buslabel {
+               fill:        #CC3333;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+
+
+       text.ipclass {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Times Arial Helvetica sans-serif;
+       }
+
+       text.procclass {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Times Arial Helvetica sans-serif;
+       }
+               
+               
+       text.portlabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.ipdbiflbl {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: bold;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+               
+       text.mmMHeader {
+               fill:        #FFFFFF;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.mmSHeader {
+               fill:        #810017;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+
+
+       text.dbglabel {
+               fill:        #555555;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Times Arial Helvetica sans-serif;
+       }
+
+       text.iopnumb {
+               fill:        #555555;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+
+
+       tspan.iopgrp {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               baseline-shift:super;
+               font-family: Arial Courier san-serif;
+       }
+
+
+       text.biflabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+
+       }
+
+       text.p2pbuslabel {
+               fill:         #000000;
+               stroke:       none;
+               font-size:    10pt; 
+               font-style:   italic;
+               font-weight:  bold; 
+               text-anchor:  start;
+               writing-mode: tb;
+               font-family:  Verdana Arial Helvetica sans-serif;
+       }
+
+       text.mpbuslabel {
+               fill:         #000000;
+               stroke:       none;
+               font-size:    6pt; 
+               font-style:   italic;
+               font-weight:  bold; 
+               text-anchor:  start;
+               writing-mode: tb;
+               font-family:  Verdana Arial Helvetica sans-serif;
+       }
+
+
+       text.sharedbuslabel {
+               fill:         #000000;
+               stroke:       none;
+               font-size:    10pt; 
+               font-style:   italic;
+               font-weight:  bold; 
+               text-anchor:  start;
+               font-family:  Verdana Arial Helvetica sans-serif;
+       }
+
+
+       text.splitbustxt {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: sans-serif;
+       }
+
+       text.horizp2pbuslabel {
+               fill:         #000000;
+               stroke:       none;
+               font-size:    6pt; 
+               font-style:   italic;
+               font-weight:  bold; 
+               text-anchor:  start;
+               font-family:  Verdana Arial Helvetica sans-serif;
+       }
+
+
+
+       text.keytitle {
+               fill:        #AA0017;
+               stroke:      none;
+               font-size:   12pt; 
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Arial Helvetica sans-serif;
+       }
+
+       text.keyheader {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   10pt; 
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Arial Helvetica sans-serif;
+       }
+
+       text.keylabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic; 
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.keylblul {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic; 
+               font-weight: bold;
+               text-anchor: start;
+               text-decoration: underline;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.specsheader {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   10pt; 
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Arial Helvetica sans-serif;
+       }
+
+       text.specsvalue {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic; 
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.specsvaluemid {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic; 
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.intrsymbol {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Arial Helvetica sans-serif;
+       }
+
+-->
\ No newline at end of file
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_BusLaneSpaces.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_BusLaneSpaces.xsl
new file mode 100644 (file)
index 0000000..cf3864e
--- /dev/null
@@ -0,0 +1,2757 @@
+<?xml version="1.0" standalone="no"?>
+
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:math="http://exslt.org/math"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink"
+           extension-element-prefixes="math">
+           
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+       
+       
+<!-- 
+                ===========================================================
+                       Handle Bucket connections to the shared busses.
+                ===========================================================
+-->            
+       
+<xsl:template name="BCLaneSpace_BucketToSharedBus">    
+       
+       <xsl:param name="iBusStd"           select="'NONE'"/>   
+       <xsl:param name="iBifType"          select="'NONE'"/>   
+       <xsl:param name="iBusName"          select="'NONE'"/>   
+       <xsl:param name="iStackToEast"      select="'NONE'"/>   
+       <xsl:param name="iStackToWest"      select="'NONE'"/>   
+       <xsl:param name="iStackToEast_W"    select="0"/>        
+       <xsl:param name="iStackToWest_W"    select="0"/>        
+       <xsl:param name="iLaneInSpace_X"    select="0"/>        
+       <xsl:param name="iSpaceSharedBus_Y" select="0"/>        
+       
+<!--   
+       <xsl:message>Stack To East <xsl:value-of select="$iStackToEast"/></xsl:message>
+       <xsl:message>Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
+       <xsl:message>Stack to East Width <xsl:value-of select="$iStackToEast_W"/></xsl:message>
+       <xsl:message>Stack to West Width <xsl:value-of select="$iStackToWest_W"/></xsl:message>
+       <xsl:message>Shared Bus Y <xsl:value-of select="$iSpaceSharedBus_Y"/></xsl:message>
+       <xsl:message>Lane in space X <xsl:value-of select="$iLaneInSpace_X"/></xsl:message>
+-->    
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="sbs_idx_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUS_INDEX"/>
+       <xsl:variable name="sbs_name_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $sbs_idx_)]/@BUSNAME"/>
+                                       
+       <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
+                                       
+       <xsl:variable name="bktshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $sbs_idx_)]/@STACK_HORIZ_INDEX"/>
+       <xsl:variable name="bktshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $sbs_idx_)]/@SHAPE_VERTI_INDEX"/>
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
+       
+<!--   
+       <xsl:message>Ext Shape to West <xsl:value-of select="$extSpaceWest_W_"/></xsl:message>
+       <xsl:message>Ext Shape to East <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>
+-->    
+       <xsl:variable name="bktshp_Y_">
+               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                       <xsl:with-param name="iHorizIdx"  select="$bktshp_hori_idx_"/>
+                       <xsl:with-param name="iVertiIdx"  select="$bktshp_vert_idx_"/>
+               </xsl:call-template>
+       </xsl:variable>
+                                               
+       <xsl:variable name="sbsStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+                               
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                               <xsl:if test="($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_)">
+                                       <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                               </xsl:if>       
+                               
+                               <xsl:if test="not($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_)">0</xsl:if>       
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name="vert_line_x_"   select="($iLaneInSpace_X  +  ceiling($BLKD_BIFC_W div 2))"/>
+       <xsl:variable name="vert_line_y1_"  select="($iSpaceSharedBus_Y   + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
+       <xsl:variable name="vert_line_y2_"  select="($bktshp_Y_ + ceiling($BLKD_MOD_W div 2) + $sbsStack_H_diff_)"/>
+       <xsl:variable name="bcInSpace_X_"   select="($iLaneInSpace_X  +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
+       
+       
+<!--   
+       <xsl:message>Shared Bus Y <xsl:value-of select="$G_SharedBus_Y"/></xsl:message>
+       <xsl:message>Vert Bus Y <xsl:value-of select="$vert_line_y1_"/></xsl:message>
+       <xsl:message>vert y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
+       <xsl:message>vert y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
+-->    
+       
+       <xsl:variable name="horz_line_y_"   select="$vert_line_y2_"/>
+       <xsl:variable name="horz_line_x1_"  select="$vert_line_x_"/>
+       <xsl:variable name="horz_line_x2_"  select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_)"/>
+       
+       <xsl:variable name="v_bus_ul_x_"   select="$vert_line_x_"/>
+       <xsl:variable name="v_bus_ul_y_"   select="$vert_line_y1_"/>
+       <xsl:variable name="v_bus_width_"  select="$BLKD_P2P_BUS_W"/>
+               
+       <xsl:variable name="v_bus_height_" select="(($vert_line_y2_ - $vert_line_y1_) - ceiling($BLKD_BIFC_H div 2))"/>
+       
+       <xsl:variable name="h_bus_ul_x_"   select="$v_bus_ul_x_"/>
+       <xsl:variable name="h_bus_ul_y_"   select="$vert_line_y2_   - $BLKD_BIFC_H + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+       <xsl:variable name="h_bus_width_"  select="ceiling($space_W_ div 2) + $extSpaceEast_W_"/>
+       <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+       
+<!--   
+       <xsl:variable name="h_bus_width_"  select="($space_W_ + ceiling(($extSpaceWest_W_ + $extSpaceEast_W_) div 2) - $BLKD_BIFC_W)"/>
+       <xsl:message>v bus x <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
+       <xsl:message>v bus y <xsl:value-of select="$v_bus_ul_y_"/></xsl:message>
+       <xsl:message>v bus w <xsl:value-of select="$v_bus_width_"/></xsl:message>
+       <xsl:message>v bus y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
+       <xsl:message>v bus y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
+       <xsl:message>v bus h <xsl:value-of select="$v_bus_height_"/></xsl:message>
+       <xsl:message>h bus w <xsl:value-of select="$h_bus_width_"/></xsl:message>
+-->    
+       
+       
+       <!-- Draw rectangular parts of the bus -->
+       <rect x="{$v_bus_ul_x_}" 
+                 y="{$v_bus_ul_y_ - 2}"  
+                 width= "{$v_bus_width_}" 
+                 height="{$v_bus_height_}" 
+                 style="stroke:none; fill:{$busColor_}"/>
+       
+       <rect x="{$h_bus_ul_x_}" 
+                 y="{$h_bus_ul_y_ - 5}"  
+                 width= "{$h_bus_width_}" 
+                 height="{$h_bus_height_}" 
+                 style="stroke:none; fill:{$busColor_}"/>
+<!--   
+-->
+               
+</xsl:template>                                        
+       
+<!--
+                ===========================================================
+                       Handle Processor's Shared bus connections.
+                ===========================================================
+-->
+       
+<xsl:template name="BCLaneSpace_ProcBifToSharedBus">   
+       
+       <xsl:param name="iBusStd"           select="'NONE'"/>   
+       <xsl:param name="iBusName"          select="'NONE'"/>   
+       <xsl:param name="iBifType"          select="'NONE'"/>   
+       <xsl:param name="iStackToEast"      select="'NONE'"/>   
+       <xsl:param name="iStackToWest"      select="'NONE'"/>   
+       <xsl:param name="iStackToEast_W"    select="0"/>        
+       <xsl:param name="iStackToWest_W"    select="0"/>        
+       <xsl:param name="iLaneInSpace_X"    select="0"/>        
+       <xsl:param name="iSpaceSharedBus_Y" select="0"/>        
+       
+<!--                                           
+       <xsl:message>Proc Bus Std  <xsl:value-of select="$iBusStd"/></xsl:message>
+       <xsl:message>Proc Bus Name <xsl:value-of select="$iBusName"/></xsl:message>
+       <xsl:message>Proc Bif Type <xsl:value-of select="$iBifType"/></xsl:message>
+-->
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="sbs_idx_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUS_INDEX"/>
+       <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
+       <xsl:variable name="procInst_" select="BUSCONN/@INSTANCE"/>
+       
+       
+<!--   
+       <xsl:message>Shared Bus Idx <xsl:value-of select="$sbs_idx_"/></xsl:message>
+       <xsl:message>Proc inst  <xsl:value-of select="$procInst_"/></xsl:message>
+-->                                            
+       
+       <xsl:variable name="procBif_Y_"    select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+       <xsl:variable name="procBifName_"  select="BUSCONN/@BUSINTERFACE"/>
+       <xsl:variable name="procBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@BIF_X"/>
+       <xsl:variable name="procBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInst_)]/BUSINTERFACE[(@NAME = $procBifName_)]/@TYPE"/>
+                                               
+       <xsl:variable name="procshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@STACK_HORIZ_INDEX"/>
+       <xsl:variable name="procshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInst_)]/@SHAPE_VERTI_INDEX"/>
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>
+       
+       
+<!--                                           
+       <xsl:message>Ext Space to West <xsl:value-of select="$extSpaceWest_W_"/></xsl:message>
+       <xsl:message>Ext Space to East <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>
+       
+       <xsl:message>Ext Space to East <xsl:value-of select="$extSpaceEast_W_"/></xsl:message>
+       <xsl:message>Stack horiz  <xsl:value-of select="$procshp_hori_idx_"/></xsl:message>
+       <xsl:message>Stack verti  <xsl:value-of select="$procshp_vert_idx_"/></xsl:message>
+       <xsl:message>Proc Bif Y   <xsl:value-of select="$procBif_Y_"/></xsl:message>
+-->                                            
+                                               
+       <xsl:variable name="procshp_Y_">
+               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                       <xsl:with-param name="iHorizIdx"  select="$procshp_hori_idx_"/>
+                       <xsl:with-param name="iVertiIdx"  select="$procshp_vert_idx_"/>
+               </xsl:call-template>
+       </xsl:variable>
+                                               
+       
+       <xsl:variable name="procStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+               
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                               <xsl:choose>
+                                       <xsl:when test="(($procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:when test="(($procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:otherwise>0</xsl:otherwise>        
+                               </xsl:choose>   
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name="bc_Y_"  select="($procshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) + $procStack_H_diff_) - ceiling($BLKD_BIFC_H div 2)"/>
+<!--   
+       <xsl:variable name="bc_x_"  select="($laneInSpace_X +  ceiling($BLKD_BIFC_W div 2))"/>
+       <xsl:variable name="bc_x_"  select="0"/>
+       <xsl:message>Test</xsl:message>
+-->    
+
+       <xsl:variable name="bc_X_">
+               <xsl:choose>
+                       <xsl:when test="$procBifSide_ = '0'">
+                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+<!--                           
+                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_)"/>
+                               <xsl:value-of select="($space_W_ -  ceiling($BLKD_MOD_W div 2))"/>
+                               <xsl:value-of select="$space_W_ + $extSpaceEast_W_"/>
+                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+-->                            
+                       </xsl:when>
+                       <xsl:when test="$procBifSide_ = '1'">
+                               <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
+                       </xsl:when>
+                       <xsl:otherwise>0</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+                                               
+       <!-- Place the bus connectijon -->
+       <use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{$iBusStd}_busconn_{$procBifType_}"/>
+<!--   
+-->    
+       <xsl:variable name="vert_line_x_"   select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2))"/>
+       <xsl:variable name="vert_line_y1_"  select="($procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) + $procStack_H_diff_)"/>
+       <xsl:variable name="vert_line_y2_"  select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
+       
+<!--   
+       <xsl:message>Vert line Y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
+       <xsl:message>Vert line Y2 <xsl:value-of select="$vert_line_y2_"/></xsl:message>
+-->            
+       
+       <xsl:variable name="v_bus_ul_y_">
+               <xsl:choose>
+                       <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
+                               <xsl:value-of select="$vert_line_y2_"/>
+                       </xsl:when>
+                       <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
+                               <xsl:value-of select="$vert_line_y1_"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       <xsl:variable name="v_bus_ul_x_">
+               <xsl:choose>
+                       <xsl:when test="@ORIENTED='WEST'">
+                               <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
+                       </xsl:when>
+                       <xsl:when test="@ORIENTED='EAST'">
+                               <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+               
+               
+       <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
+       <xsl:variable name="v_bus_height_">
+               <xsl:choose>
+                       <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
+                               <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W"/>
+                       </xsl:when>
+                       <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
+                               <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+               
+       <xsl:variable name="h_bus_ul_x_">
+               <xsl:choose>
+                       <xsl:when test="@ORIENTED='WEST'">
+                               <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
+<!--                           
+                               <xsl:value-of select="$v_bus_ul_x_"/>
+-->    
+                       </xsl:when>
+                       <xsl:when test="@ORIENTED='EAST'">
+                               <xsl:value-of select="$v_bus_ul_x_"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+               
+               <xsl:variable name="h_bus_ul_y_">
+                       <xsl:choose>
+                               <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
+                                       <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                               </xsl:when>
+                               <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
+                                       <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+       
+       
+               <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+               <xsl:variable name="h_bus_width_">
+                       <xsl:choose>
+                               <xsl:when test="@ORIENTED='WEST'">
+                                       <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
+                               </xsl:when>
+                               <xsl:when test="@ORIENTED='EAST'">
+                                       <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2) + 1"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+                       
+<!--                   
+               <xsl:if test="(@ORIENTED = 'WEST')">
+               </xsl:if>
+                       
+               <xsl:message>bc_X_  <xsl:value-of select="$bc_X_"/></xsl:message>
+               <xsl:message>v_bus_ul_x  <xsl:value-of select="$v_bus_ul_x_"/></xsl:message>
+               <xsl:message>h_bus_width <xsl:value-of select="$h_bus_width_"/></xsl:message>
+               <xsl:message>h_bus_ul_y  <xsl:value-of select="$h_bus_ul_y_"/></xsl:message>
+-->    
+                       
+               <rect x="{$v_bus_ul_x_}" 
+                         y="{$v_bus_ul_y_ + 2}"  
+                         width= "{$v_bus_width_}" 
+                         height="{$v_bus_height_}" 
+                         style="stroke:none; fill:{$busColor_}"/>
+               
+               <rect x="{$h_bus_ul_x_}" 
+                         y="{$h_bus_ul_y_}"  
+                         width= "{$h_bus_width_}" 
+                         height="{$h_bus_height_}" 
+                         style="stroke:none; fill:{$busColor_}"/>
+</xsl:template>                                        
+       
+<!--
+                ===========================================================
+                       Handle non Processor Sharedebus connections.
+                ===========================================================
+-->
+                               
+<xsl:template name="BCLaneSpace_NonProcBifToSharedBus">        
+       
+       <xsl:param name="iBusStd"           select="'NONE'"/>   
+       <xsl:param name="iBifType"          select="'NONE'"/>   
+       <xsl:param name="iBusName"          select="'NONE'"/>   
+       <xsl:param name="iStackToEast"      select="'NONE'"/>   
+       <xsl:param name="iStackToWest"      select="'NONE'"/>   
+       <xsl:param name="iStackToEast_W"    select="0"/>        
+       <xsl:param name="iStackToWest_W"    select="0"/>        
+       <xsl:param name="iLaneInSpace_X"    select="0"/>        
+       <xsl:param name="iSpaceSharedBus_Y" select="0"/>        
+       
+                                               
+       <xsl:variable name="sbs_idx_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE= $iBusName)]/@BUS_INDEX"/>
+       <xsl:variable name="sbs_bc_y_" select="($iSpaceSharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
+<!--   
+       <xsl:variable name="sbs_bc_y_" select="($G_SharedBus_Y + ($sbs_idx_ * $BLKD_SBS_LANE_H))"/>
+-->    
+                                               
+       <xsl:variable name="cmplxInst_" select="BUSCONN/@INSTANCE"/>
+                                               
+       <xsl:variable name="cmplxBif_Y_"    select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+       <xsl:variable name="cmplxBifName_"  select="BUSCONN/@BUSINTERFACE"/>
+       <xsl:variable name="cmplxBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@BIF_X"/>
+       <xsl:variable name="cmplxBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $cmplxInst_)]/BUSINTERFACE[(@NAME = $cmplxBifName_)]/@TYPE"/>
+                                               
+       <xsl:variable name="cmplxshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@STACK_HORIZ_INDEX"/>
+       <xsl:variable name="cmplxshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $cmplxInst_)])]/@SHAPE_VERTI_INDEX"/>
+                                               
+       <xsl:variable name="is_abvSbs_" select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_ABVSBS)"/>
+       <xsl:variable name="is_blwSbs_" select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $cmplxInst_)]]/@IS_BLWSBS)"/>
+       
+<!--                                           
+       <xsl:message>iStackToEast <xsl:value-of select="$iStackToEast"/></xsl:message>
+       <xsl:message>iStackToWest <xsl:value-of select="$iStackToWest"/></xsl:message>
+       <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
+       <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
+       <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_blwSbs_"/></xsl:message>
+       <xsl:message><xsl:value-of select="$cmplxInst_"/> : <xsl:value-of select="$is_abvSbs_"/></xsl:message>
+       <xsl:message>Stack horiz  <xsl:value-of select="$cmplxshp_hori_idx_"/></xsl:message>
+       <xsl:message>Stack verti  <xsl:value-of select="$cmplxshp_vert_idx_"/></xsl:message>
+       <xsl:message>Proc Bif Y   <xsl:value-of select="$procBif_Y_"/></xsl:message>
+-->                                            
+       
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                         
+       
+       <xsl:variable name="cmplxshp_Y_">
+               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                       <xsl:with-param name="iHorizIdx"  select="$cmplxshp_hori_idx_"/>
+                       <xsl:with-param name="iVertiIdx"  select="$cmplxshp_vert_idx_"/>
+               </xsl:call-template>
+       </xsl:variable>
+       
+<!--   
+       <xsl:message>Complex shape Y <xsl:value-of select="$cmplxshp_Y_"/></xsl:message>
+-->    
+       
+       <xsl:variable name="stackToEast_">
+               <xsl:choose>
+                       <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
+                       <xsl:otherwise>NONE</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       <xsl:variable name="stackToWest_">
+               <xsl:choose>
+                       <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
+                       <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
+                       <xsl:otherwise>NONE</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable> 
+       
+                                               
+       <xsl:variable name="cmplxStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($stackToEast_ = 'NONE') or ($stackToWest_ = 'NONE'))">
+                               
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$stackToWest_"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$stackToEast_"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                               <xsl:choose>
+                                       <xsl:when test="(($cmplxshp_hori_idx_ = $stackToEast_) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:when test="(($cmplxshp_hori_idx_ = $stackToWest_) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:otherwise>0</xsl:otherwise>        
+                               </xsl:choose>   
+                                                                       
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+       
+       
+       <xsl:variable name="bc_Y_"  select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BIF_H div 2) + $cmplxStack_H_diff_) - ceiling($BLKD_BIFC_H div 2)"/>
+       
+       
+<!--   
+       <xsl:message>Sstack H Diff  <xsl:value-of select="$cmplxStack_H_diff_"/></xsl:message>
+       <xsl:message>BC Y <xsl:value-of select="$bc_Y_"/></xsl:message>
+       <xsl:variable name="bc_x_"  select="($laneInSpace_X +  ceiling($BLKD_BIFC_W div 2))"/>
+       <xsl:variable name="bc_x_"  select="0"/>
+-->    
+       <xsl:variable name="bc_X_">
+               <xsl:choose>
+                       <xsl:when test="$cmplxBifSide_ = '0'">
+                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+                       </xsl:when>
+                       <xsl:when test="$cmplxBifSide_ = '1'">
+                               <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
+                       </xsl:when>
+                       <xsl:otherwise>0</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       <use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{$iBusStd}_busconn_{$cmplxBifType_}"/>
+       
+       <xsl:variable name="vert_line_x_"  select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2))"/>
+       <xsl:variable name="vert_line_y1_" select="($cmplxshp_Y_ + $cmplxBif_Y_ + ceiling($BLKD_BIF_H div 2) + $cmplxStack_H_diff_)"/>
+       <xsl:variable name="vert_line_y2_"  select="($iSpaceSharedBus_Y  + ($sbs_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_BIFC_W div 2))"/>
+       
+       <xsl:variable name="v_bus_ul_y_">
+               <xsl:choose>
+                       <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
+                               <xsl:value-of select="$vert_line_y2_"/>
+                       </xsl:when>
+                       <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
+                               <xsl:value-of select="$vert_line_y1_"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       <xsl:variable name="v_bus_ul_x_">
+               <xsl:choose>
+                       <xsl:when test="@ORIENTED='WEST'">
+                               <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
+                       </xsl:when>
+                       <xsl:when test="@ORIENTED='EAST'">
+                               <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+               
+       <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
+       <xsl:variable name="v_bus_height_">
+               <xsl:choose>
+                       <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
+                               <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_) - $BLKD_P2P_BUS_W + 8"/>
+                       </xsl:when>
+                       <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
+                               <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_) - $BLKD_P2P_BUS_W + 8"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+               
+       <xsl:variable name="h_bus_ul_x_">
+               <xsl:choose>
+                       <xsl:when test="@ORIENTED='WEST'">
+                               <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
+                       </xsl:when>
+                       <xsl:when test="@ORIENTED='EAST'">
+                               <xsl:value-of select="$v_bus_ul_x_"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+               
+       <xsl:variable name="h_bus_ul_y_">
+               <xsl:choose>
+                       
+                       <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y1_ &gt; $vert_line_y2_)">
+                               <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                       </xsl:when>
+                       <xsl:when test="($is_blwSbs_ = 'TRUE') and ($vert_line_y2_ &gt; $vert_line_y1_)">
+                               <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                       </xsl:when>
+                       
+                       <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y1_ &gt; $vert_line_y2_)">
+                               <xsl:value-of select="$vert_line_y2_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                       </xsl:when>
+                       <xsl:when test="($is_abvSbs_ = 'TRUE') and ($vert_line_y2_ &gt; $vert_line_y1_)">
+                               <xsl:value-of select="$vert_line_y1_ - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                       </xsl:when>
+                       
+               </xsl:choose>
+       </xsl:variable> 
+       
+       
+       <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+       <xsl:variable name="h_bus_width_">
+               <xsl:choose>
+                       <xsl:when test="@ORIENTED='WEST'">
+                               <xsl:value-of select="$v_bus_ul_x_ - $h_bus_ul_x_ + $BLKD_P2P_BUS_W"/>
+                       </xsl:when>
+                       <xsl:when test="@ORIENTED='EAST'">
+                               <xsl:value-of select="($bc_X_ - $v_bus_ul_x_) + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2) + 1"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+       
+                       
+       <rect x="{$v_bus_ul_x_}" 
+                 y="{$v_bus_ul_y_ - 2}"  
+                 width= "{$v_bus_width_}" 
+                 height="{$v_bus_height_}" 
+                 style="stroke:none; fill:{$busColor_}"/>
+               
+       <rect x="{$h_bus_ul_x_}" 
+                 y="{$h_bus_ul_y_}"  
+                 width= "{$h_bus_width_}" 
+                 height="{$h_bus_height_}" 
+                 style="stroke:none; fill:{$busColor_}"/>
+               
+</xsl:template>                                        
+       
+<!-- 
+                ===========================================================
+                       Handle connections from processors to Memory UNITs
+                ===========================================================
+-->
+       
+       
+<xsl:template name="BCLaneSpace_ProcBifToMemoryUnit">  
+       
+       <xsl:param name="iBusStd"        select="'NONE'"/>      
+       <xsl:param name="iBusName"       select="'NONE'"/>      
+       <xsl:param name="iBifType"       select="'NONE'"/>      
+       <xsl:param name="iStackToEast"   select="'NONE'"/>      
+       <xsl:param name="iStackToWest"   select="'NONE'"/>      
+       <xsl:param name="iStackToEast_W" select="0"/>   
+       <xsl:param name="iStackToWest_W" select="0"/>   
+       <xsl:param name="iLaneInSpace_X" select="0"/>   
+       
+       <xsl:variable name="bcInSpace_X_"  select="$iLaneInSpace_X"/>
+       <xsl:variable name="procInstance_" select="BUSCONN[@IS_PROCCONN]/@INSTANCE"/>
+       <xsl:variable name="mem_procshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
+       <xsl:variable name="mem_procshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
+                                               
+       <xsl:variable name="mem_procshp_Y_">
+               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                       <xsl:with-param name="iHorizIdx"  select="$mem_procshp_hori_idx_"/>
+                       <xsl:with-param name="iVertiIdx"  select="$mem_procshp_vert_idx_"/>
+               </xsl:call-template>
+       </xsl:variable>
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
+       
+       <xsl:variable name="cmplxStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+                               
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                               <xsl:choose>
+                                       <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:otherwise>0</xsl:otherwise>        
+                               </xsl:choose>   
+                                                                       
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+                                               
+       <xsl:variable name="mem_procStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+       
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                       <xsl:choose>
+                               <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                       <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                               </xsl:when>     
+                               <xsl:when test="(($mem_procshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                       <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                               </xsl:when>     
+                               <xsl:otherwise>0</xsl:otherwise>        
+                       </xsl:choose>   
+                                                                       
+               </xsl:when>
+       </xsl:choose>
+  </xsl:variable>
+                                               
+       <!-- Store the conns in a variable -->  
+       <xsl:variable name="memConn_heights_">
+
+               <xsl:for-each select="BUSCONN">
+                                                               
+                       <xsl:variable name="bifName_"       select="@BUSINTERFACE"/>
+                       
+                                                       
+                       <xsl:choose>
+                               <xsl:when test="@IS_PROCCONN and @BIF_Y">
+                                                       
+                                       <xsl:variable name="procBif_Y_"    select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                       <xsl:variable name="procBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+                                       <xsl:variable name="procBusName_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
+                                       <xsl:variable name="procBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                       <xsl:variable name="bcProc_Y_"     select="($mem_procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $mem_procStack_H_diff_)"/>
+                                       <xsl:variable name="bcProc_X_">
+                                               <xsl:choose>
+                                                       <xsl:when test="$procBifSide_ = '0'">
+                                                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+                                                       </xsl:when>
+                                                       <xsl:when test="$procBifSide_ = '1'">
+                                                               <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
+                                                       </xsl:when>
+                                                       <xsl:otherwise>0</xsl:otherwise>
+                                               </xsl:choose>
+                                       </xsl:variable>
+                                               
+                                       <MEMCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
+                                                                               
+                               </xsl:when>
+                                                                       
+                               <xsl:otherwise>
+                                                                       
+                                       <xsl:variable name="memcInstance_"     select="@INSTANCE"/>
+                                       <xsl:variable name="memcshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@SHAPE_VERTI_INDEX"/>
+                                       <xsl:variable name="memcBifSide_"      select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                       <xsl:variable name="memcBif_Y_"        select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
+                                                                               
+                                       <xsl:variable name="memshp_Y_">
+                                               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                                                       <xsl:with-param name="iHorizIdx"  select="$mem_procshp_hori_idx_"/>
+                                                       <xsl:with-param name="iVertiIdx"  select="$memcshp_vert_idx_"/>
+                                               </xsl:call-template>
+                                   </xsl:variable>
+                                       
+                                       <xsl:variable name="memcMOD_W_" select="(($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
+                                                                               
+                                       <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                       
+                                       <xsl:variable name="memcConn_Y_">
+                                               <xsl:choose>
+                                                       <xsl:when test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $memcInstance_)]]/@MODS_H = 1)">
+                                                               <xsl:value-of  select="($memshp_Y_ + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V) +  ($memcBif_Y_ * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
+                                                       </xsl:when>
+                                                       <xsl:otherwise>
+                                                               <xsl:value-of  select="($memshp_Y_ + $BLKD_MOD_H + $BLKD_MOD_LANE_H + ($memcBif_Y_ * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
+                                                       </xsl:otherwise>
+                                               </xsl:choose>
+                                       </xsl:variable>
+                                       
+                                       <xsl:variable name="memcConn_X_">
+                                               <xsl:choose>
+                                                       <xsl:when test="$memcBifSide_ = '0'">
+                                                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BLKD_BIFC_W))"/>
+                                                       </xsl:when>
+                                                       <xsl:when test="$memcBifSide_ = '1'">
+                                                               <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
+                                                       </xsl:when>
+                                               </xsl:choose>
+                                       </xsl:variable>
+                                               
+                                       <xsl:variable name="memcBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+                                       <xsl:variable name="memcBusName_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $memcInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
+                                       
+                                       <MEMCONN X="{$memcConn_X_}" Y="{$memcConn_Y_}" BUSNAME="{$memcBusName_}" BUSSTD="{$iBusStd}" TYPE="{$memcBifType_}" BIFSIDE="{$memcBifSide_}"/>
+                                       
+                               </xsl:otherwise>
+                       </xsl:choose>
+               </xsl:for-each>
+       </xsl:variable>
+                                               
+                                               
+       <!-- Draw the busconnection and horizontal lines.-->                                            
+       <xsl:for-each select="exsl:node-set($memConn_heights_)/MEMCONN">
+                                                       
+               <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
+               <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+               
+               <xsl:variable name="adjusted_X_">
+                       <xsl:choose>
+                               <xsl:when test="((@X &lt; ($bus_x_ + $BLKD_BUS_ARROW_W)) and (@BIFSIDE ='0'))">
+                                       <xsl:value-of select="(@X + $BLKD_P2P_BUS_W)"/>
+                               </xsl:when>
+                               <xsl:otherwise>
+                                       <xsl:value-of select="@X"/>
+                               </xsl:otherwise>
+                       </xsl:choose>
+               </xsl:variable>
+               
+               <xsl:variable name="h_bus_ul_x_dx_">
+                       <xsl:choose>
+                               <xsl:when test="((@X &lt; ($bus_x_ + $BLKD_BUS_ARROW_W)) and (@BIFSIDE='0'))">
+                                       <xsl:value-of select="$BLKD_P2P_BUS_W"/>
+                               </xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>
+               </xsl:variable>
+               
+               <xsl:variable name="h_bus_ul_x_">
+                       <xsl:choose>
+                               <xsl:when test="@BIFSIDE='0'">
+                                       <xsl:value-of select="($bus_x_ - $h_bus_ul_x_dx_)"/>
+                               </xsl:when>
+                               <xsl:when test="@BIFSIDE='1'">
+                                       <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+               
+               <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
+       
+               <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+               <xsl:variable name="h_bus_width_">
+                       <xsl:choose>
+                               <xsl:when test="@BIFSIDE='0'">
+                                       <xsl:value-of select="($adjusted_X_ - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
+                               </xsl:when>
+                               <xsl:when test="@BIFSIDE='1'">
+                                       <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+               
+               <!-- Place the bus connection -->
+               <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
+               
+               <!-- Draw the arrow -->
+               <xsl:choose>
+                       <xsl:when test="@BIFSIDE='0'">
+                               <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowEast"/>
+                       </xsl:when>
+                       <xsl:when test="@BIFSIDE='1'">
+                               <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowWest"/>
+                       </xsl:when>
+               </xsl:choose>
+               
+               
+               <!-- Draw the horizontal part of the bus -->
+               <rect x="{$h_bus_ul_x_}" 
+                         y="{$h_bus_ul_y_}"  
+                         width= "{$h_bus_width_}" 
+                         height="{$h_bus_height_}" 
+                         style="stroke:none; fill:{$busColor_}"/>
+       </xsl:for-each>
+       
+       <xsl:variable name="busTop_"      select="math:min(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
+       <xsl:variable name="busBot_"      select="math:max(exsl:node-set($memConn_heights_)/MEMCONN/@Y)"/>
+       <xsl:variable name="busName_"     select="exsl:node-set($memConn_heights_)/MEMCONN/@BUSNAME"/>
+       <xsl:variable name="busSide_"     select="exsl:node-set($memConn_heights_)/MEMCONN/@BIFSIDE"/>
+       <xsl:variable name="leftmost_x_"  select="math:min(exsl:node-set($memConn_heights_)/MEMCONN/@X)"/>
+       
+<!--  Hack to fix CR473515 -->
+       <xsl:variable name="v_bus_x_dx_">
+               <xsl:choose> 
+                       <xsl:when test="(($busSide_ = '0') and (($leftmost_x_ - ($bcInSpace_X_ + $BLKD_P2P_BUS_W)) &lt;= $BLKD_P2P_BUS_W))">-4</xsl:when>
+                       <xsl:otherwise><xsl:value-of select="$BLKD_P2P_BUS_W"/></xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       
+       <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+       <xsl:variable name="v_bus_x_">
+               <xsl:choose>
+                       <xsl:when test="$busSide_ ='0'">
+                               <xsl:value-of select="($bcInSpace_X_ + $v_bus_x_dx_)"/>
+                       </xsl:when>
+                       <xsl:when test="$busSide_ ='1'">
+                               <xsl:value-of select="($bcInSpace_X_ + $BLKD_P2P_BUS_W)"/>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       <!-- Draw the vertical part of the bus -->      
+       <rect x="{$v_bus_x_}" 
+                 y="{$v_bus_y_}"  
+                 width= "{$BLKD_P2P_BUS_W}" 
+                 height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
+                 style="stroke:none; fill:{$busColor_}"/>
+
+<!--  Hack to fix CR473515 -->
+       <xsl:if test="($busSide_ ='0')">
+               <rect x="{$v_bus_x_}" 
+                         y="{$v_bus_y_   + ($busBot_ - $busTop_)}" 
+                     width= "{$BLKD_P2P_BUS_W * 2}" 
+                     height="{$BLKD_P2P_BUS_W}" 
+                     style="stroke:none; fill:{$busColor_}"/>
+       </xsl:if>
+                         
+<!--   
+       <xsl:message>v_bus_x  <xsl:value-of select="$v_bus_x_"/></xsl:message>
+-->    
+
+       <!-- Place the bus label.-->    
+<!-- 
+       <text class="p2pbuslabel" 
+                         x="{$bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
+                         y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
+                       <xsl:value-of select="$busName_"/>
+       </text> 
+-->    
+       
+       <xsl:call-template name="F_WriteText">
+               <xsl:with-param name="iX"               select="($bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
+               <xsl:with-param name="iY"               select="($busTop_ + ($BLKD_BUS_ARROW_H * 3))"/>
+               <xsl:with-param name="iText"    select="$busName_"/>
+               <xsl:with-param name="iClass"   select="'p2pbus_label'"/>
+       </xsl:call-template>
+                         
+</xsl:template>                                        
+       
+       
+<!-- 
+                ===========================================================
+                       Handle generic Point to Point connections
+                ===========================================================
+-->
+       
+<xsl:template name="BCLaneSpace_PointToPoint"> 
+       
+       <xsl:param name="iBusStd"        select="'NONE'"/>      
+       <xsl:param name="iBifType"       select="'NONE'"/>      
+       <xsl:param name="iBusName"       select="'NONE'"/>      
+       <xsl:param name="iStackToEast"   select="'NONE'"/>      
+       <xsl:param name="iStackToWest"   select="'NONE'"/>      
+       <xsl:param name="iStackToEast_W" select="0"/>   
+       <xsl:param name="iStackToWest_W" select="0"/>   
+       <xsl:param name="iLaneInSpace_X" select="0"/>   
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       <xsl:variable name="busColor_lt_">
+               <xsl:call-template name="F_BusStd2RGB_LT">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
+       
+       <xsl:variable name="bcInSpace_X_"  select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
+       <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
+                                       
+       <xsl:variable name="p2pshp_hori_idx_">
+               <xsl:choose>
+                       <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
+                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>         
+                                       
+       <xsl:variable name="p2pshp_vert_idx_">
+               <xsl:choose>
+                       <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
+                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>         
+                                       
+<!--                                   
+                                       <xsl:variable name="p2pshp_hori_idx_" select="/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
+                                       <xsl:variable name="p2pshp_vert_idx_" select="/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
+-->                                    
+                                               
+       <xsl:variable name="p2pshp_Y_">
+               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                       <xsl:with-param name="iHorizIdx"  select="$p2pshp_hori_idx_"/>
+                       <xsl:with-param name="iVertiIdx"  select="$p2pshp_vert_idx_"/>
+               </xsl:call-template>
+       </xsl:variable>
+                       
+       <xsl:variable name="cmplxStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+                               
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                               <xsl:choose>
+                                       <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:otherwise>0</xsl:otherwise>        
+                               </xsl:choose>   
+                                                                       
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+                                               
+                                                                                                                                                               
+       <xsl:variable name="procStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+                       
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                               <xsl:choose>
+                                       <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:otherwise>0</xsl:otherwise>        
+                               </xsl:choose>   
+                                                                       
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+                                               
+       
+       
+       <!-- Store the conns in a variable -->  
+       <xsl:variable name="p2pConn_heights_">
+       
+               <xsl:for-each select="BUSCONN">
+                                                                       
+                       <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
+                                                       
+                               <xsl:choose>
+                                       <xsl:when test="@IS_PROCCONN and @BIF_Y">
+                                                                               
+<!--                                                                           
+                                                                               <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
+-->                                                                            
+                                               <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                               <xsl:variable name="procBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+                                               <xsl:variable name="procBusName_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
+                                               <xsl:variable name="procBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                                                               
+                                               <xsl:variable name="bcProc_Y_"     select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
+                                               <xsl:variable name="bcProc_X_">
+                                                       <xsl:choose>
+                                                               <xsl:when test="$procBifSide_ = '0'">
+                                                                       <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+                                                               </xsl:when>
+                                                               <xsl:when test="$procBifSide_ = '1'">
+                                                                       <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
+                                                               </xsl:when>
+                                                               <xsl:otherwise>0</xsl:otherwise>
+                                                       </xsl:choose>
+                                               </xsl:variable>
+                                               
+                                               <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
+                                                                               
+<!--                                           
+                                               <xsl:message>bcProc_X_ <xsl:value-of select="$bcProc_X_"/></xsl:message>
+                                               <xsl:message>bcProc_Y_ <xsl:value-of select="$bcProc_Y_"/></xsl:message>
+                                               <P2PCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$busStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}" STACK_ID=""/>
+-->                                            
+                                       </xsl:when>
+                                                                       
+                                       <xsl:otherwise>
+                                                                               
+                                               <xsl:variable name="modInstance_"     select="@INSTANCE"/>
+                                               <xsl:variable name="modshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
+                                               <xsl:variable name="modBifSide_"      select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                               <xsl:variable name="modBif_Y_"        select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
+                                               <xsl:variable name="modBc_Y_"         select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                                                               
+<!--                                                                           
+                                               <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
+-->                                                                            
+                                               
+                                               <xsl:variable name="modshp_Y_">
+                                                       <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                                                               <xsl:with-param name="iHorizIdx"  select="$p2pshp_hori_idx_"/>
+                                                               <xsl:with-param name="iVertiIdx"  select="$modshp_vert_idx_"/>
+                                                       </xsl:call-template>
+                                               </xsl:variable>
+                                                                               
+                                               <xsl:variable name="modBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+                                               <xsl:variable name="modBusName_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
+                                               <xsl:variable name="bcMod_Y_"     select="($modshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
+                                               <xsl:variable name="bcMod_X_">
+                                                       <xsl:choose>
+                                                               <xsl:when test="$modBifSide_ = '0'">
+                                                                       <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+                                                               </xsl:when>
+                                                               <xsl:when test="$modBifSide_ = '1'">
+                                                                       <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
+                                                               </xsl:when>
+                                                               <xsl:otherwise>0</xsl:otherwise>
+                                                       </xsl:choose>
+                                               </xsl:variable>
+                                               
+<!--                                                                           
+                                               <xsl:message>Bc Bif Y <xsl:value-of select="$modBif_Y_"/></xsl:message> 
+                                               <xsl:message>Bc Mod Y <xsl:value-of select="$modBc_Y_"/></xsl:message>  
+                                               <xsl:message>Bc Mod X <xsl:value-of select="$bcMod_X_"/></xsl:message>  
+                                               <P2PCONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
+-->                                                                            
+                                               <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
+                                               
+                                       </xsl:otherwise>
+                                                                       
+                               </xsl:choose>
+                       </xsl:for-each>
+               </xsl:variable>
+       
+       
+       <xsl:variable name="busTop_"  select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
+       <xsl:variable name="busBot_"  select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
+       <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+       <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
+       <xsl:variable name="busStd_"  select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
+<!--   
+-->    
+       <!-- Draw the vertical part of the bus -->      
+       <xsl:if test="$busStd_ = 'PLBV46_P2P'">
+               <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
+                         y="{$v_bus_y_}"  
+                     width= "{$BLKD_P2P_BUS_W}" 
+                     height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
+                     style="stroke:{$COL_WHITE};stroke-width:1.5;fill:{$busColor_}"/>
+       </xsl:if>
+       
+       <xsl:if test="not($busStd_ = 'PLBV46_P2P')">
+               <rect x="{$bcInSpace_X_ + $BLKD_P2P_BUS_W}" 
+                     y="{$v_bus_y_}"  
+                     width= "{$BLKD_P2P_BUS_W}" 
+                     height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
+                     style="stroke:none;fill:{$busColor_}"/>
+       </xsl:if>
+       
+<!--    -->    
+       
+<!--   
+                 style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
+-->    
+
+       <!-- Place the bus label.-->    
+<!-- 
+       <text class="p2pbuslabel" 
+                         x="{$bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
+                         y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
+                       <xsl:value-of select="$busName_"/>
+       </text> 
+-->    
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="($bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
+                       <xsl:with-param name="iY"               select="($busTop_ + ($BLKD_BUS_ARROW_H * 3))"/>
+                       <xsl:with-param name="iText"    select="$busName_"/>
+                       <xsl:with-param name="iClass"   select="'p2pbus_label'"/>
+               </xsl:call-template>
+                         
+               <!-- Draw the busconnection and horizontal lines.-->                                            
+               <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
+                                                       
+                       <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
+                       <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+               
+                       <xsl:variable name="h_bus_ul_x_">
+                               <xsl:choose>
+                                       <xsl:when test="@BIFSIDE='0'">
+                                               <xsl:value-of select="$bus_x_"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='1'">
+                                               <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
+                                       </xsl:when>
+                               </xsl:choose>
+                       </xsl:variable> 
+               
+                       <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
+       
+                       <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+                       <xsl:variable name="h_bus_width_">
+<!--                           
+                               <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
+                               <xsl:message>BUSSTD  <xsl:value-of select="@BUSSTD"/></xsl:message>
+                               <xsl:message>TYPE <xsl:value-of select="@TYPE"/></xsl:message>
+-->                            
+                               <xsl:choose>
+                                       <xsl:when test="@BIFSIDE='0'">
+                                               <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='1'">
+                                               <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
+                                       </xsl:when>
+                                       
+                               </xsl:choose>
+                       </xsl:variable> 
+                       
+                       <!-- Draw Bus connection-->
+                       <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
+                       
+                       <!-- Draw the arrow -->
+                       <xsl:choose>
+                               <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowEast"/>
+                               </xsl:when>
+                               <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowWest"/>
+                               </xsl:when>
+                               
+                               <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
+                               </xsl:when>
+                               
+                               <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
+                               </xsl:when>
+                                       
+                       </xsl:choose>
+               
+                       <!-- Draw the horizontal part of the bus -->
+                       <rect x="{$h_bus_ul_x_}" 
+                                 y="{$h_bus_ul_y_}"  
+                                 width= "{$h_bus_width_}" 
+                                 height="{$h_bus_height_}" 
+                             style="stroke:none; fill:{$busColor_}"/>
+               
+       </xsl:for-each>
+                                               
+<!--   
+       <xsl:variable name="busTop_" select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
+       <xsl:variable name="busBot_" select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
+       <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($P2P_BUS_W div 2)"/>
+       <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
+-->    
+       <!-- Draw the vertical part of the bus -->      
+<!--   
+       <rect x="{$bcInSpace_X_ + $P2P_BUS_W}" 
+                 y="{$v_bus_y_}"  
+                 width= "{$P2P_BUS_W}" 
+                 height="{($busBot_ - $busTop_) + $P2P_BUS_W}" 
+                 style="stroke:{$COL_WHITE};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
+-->    
+       
+<!--   
+                 style="stroke:{$busColor_lt_};stroke-width:1;stroke-opacity:0.9;fill-opacity:2.0;fill:{$busColor_}"/>
+-->    
+       <!-- Place the bus label.-->    
+<!--   
+       <text class="p2pbuslabel" 
+                         x="{$bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
+                         y="{$busTop_ + ($BLKD_BUS_ARROW_H * 3)}">
+                       <xsl:value-of select="$busName_"/>
+       </text> 
+-->    
+       
+                                               
+</xsl:template>        
+       
+       
+                                       
+<!-- 
+                ===========================================================
+                       Handle MultiStack Point to Point connections
+                ===========================================================
+-->
+                                       
+<xsl:template name="BCLaneSpace_MultiStack_PointToPoint">      
+       
+       <xsl:param name="iBusStd"          select="'NONE'"/>    
+       <xsl:param name="iBusName"         select="'NONE'"/>    
+       <xsl:param name="iBifType"         select="'NONE'"/>    
+       <xsl:param name="iStackToEast"     select="'NONE'"/>    
+       <xsl:param name="iStackToWest"     select="'NONE'"/>    
+       <xsl:param name="iStackToEast_W"   select="0"/> 
+       <xsl:param name="iStackToWest_W"   select="0"/> 
+       <xsl:param name="iLaneInSpace_X"   select="0"/> 
+       
+<!--   
+       <xsl:message>Stack To East <xsl:value-of select="$iStackToEast"/></xsl:message>
+       <xsl:message>Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
+       <xsl:message>Stack to East Width <xsl:value-of select="$iStackToEast_W"/></xsl:message>
+       <xsl:message>Stack to West Width <xsl:value-of select="$iStackToWest_W"/></xsl:message>
+       <xsl:message>Lane in space X <xsl:value-of select="$iLaneInSpace_X"/></xsl:message>
+       <xsl:message>Shared Bus Y <xsl:value-of select="$iSpaceSharedBus_Y"/></xsl:message>
+-->    
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
+       
+       <!-- Store the connections in a variable -->
+       <xsl:variable name="bcInSpace_X_"  select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
+                                       
+       <xsl:variable name="multiConns_">
+                                               
+               <xsl:for-each select="BUSCONN">
+                                                       
+                       <xsl:variable name="bifName_"      select="@BUSINTERFACE"/>
+                       <xsl:variable name="multiInstance_" select="@INSTANCE"/>
+                       <xsl:variable name="mulshp_hori_idx_">
+                               <xsl:choose>
+                                       <xsl:when test="@IS_PROCCONN">
+                                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@STACK_HORIZ_INDEX"/>
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@STACK_HORIZ_INDEX"/>
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable> 
+                                                       
+                       <xsl:variable name="mulshp_vert_idx_">
+                               <xsl:choose>
+                                       <xsl:when test="@IS_PROCCONN">
+                                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $multiInstance_)]/@SHAPE_VERTI_INDEX"/>
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $multiInstance_)])]/@SHAPE_VERTI_INDEX"/>
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable> 
+                               
+<!--                                                   
+                       <xsl:message>Shape Horiz <xsl:value-of select="$mulshp_hori_idx_"/></xsl:message>
+                       <xsl:message>Shape Verti <xsl:value-of select="$mulshp_vert_idx_"/></xsl:message>
+-->    
+                                                       
+                       <xsl:variable name="mulshp_Y_">
+                               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                                       <xsl:with-param name="iHorizIdx"  select="$mulshp_hori_idx_"/>
+                                       <xsl:with-param name="iVertiIdx"  select="$mulshp_vert_idx_"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                                               
+                       <xsl:variable name="cmplxStack_H_diff_">
+                               <xsl:choose>
+                                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+                                               
+                                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                                       </xsl:call-template>
+                                               </xsl:variable>
+                       
+                                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                                       </xsl:call-template>
+                                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                                               <xsl:choose>
+                                                       <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                                                       <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                                       </xsl:when>     
+                                                       <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                                       </xsl:when>     
+                                                       <xsl:otherwise>0</xsl:otherwise>        
+                                               </xsl:choose>   
+                                                                       
+                                       </xsl:when>
+                               </xsl:choose>
+                       </xsl:variable>
+                                               
+                                                                                                                                                               
+                       <xsl:variable name="procStack_H_diff_">
+                               <xsl:choose>
+                                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+                       
+                                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                                       </xsl:call-template>
+                                               </xsl:variable>
+                               
+                                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                                       </xsl:call-template>
+                                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                                               <xsl:choose>
+                                                       <xsl:when test="(($mulshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                                               <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                                       </xsl:when>     
+                                                       <xsl:when test="(($mulshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                                       </xsl:when>     
+                                                       <xsl:otherwise>0</xsl:otherwise>        
+                                               </xsl:choose>   
+                                                                       
+                                       </xsl:when>
+                               </xsl:choose>
+                       </xsl:variable>
+                                                       
+                       <xsl:choose>
+                                                       
+                               <xsl:when test="@IS_PROCCONN and @BIF_Y">
+                                                                               
+                                       <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                                                               
+                                       <xsl:variable name="procBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+                                       <xsl:variable name="procBusName_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
+                                       <xsl:variable name="procBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                                                               
+                                       <xsl:variable name="bcProc_Y_"     select="($mulshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
+                                       
+                                       <xsl:variable name="bcProc_X_">
+                                               <xsl:choose>
+                                                       <xsl:when test="$procBifSide_ = '0'">
+                                                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+<!--
+                                                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2))"/>
+-->                                                    
+                                                       </xsl:when>
+                                                       <xsl:when test="$procBifSide_ = '1'">
+                                                               <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
+                                                       </xsl:when>
+                                                       <xsl:otherwise>0</xsl:otherwise>
+                                               </xsl:choose>
+                                       </xsl:variable>
+                                       
+                                       <MULTICONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME="{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}" IS_PROC="TRUE"/>
+                               </xsl:when>
+                                                                       
+                               <xsl:otherwise>
+                                                                                       
+                                       <xsl:variable name="modType_"     select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/@MODCLASS"/>
+                                       <xsl:variable name="modBif_Y_"    select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
+                                       <xsl:variable name="modBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                       <xsl:variable name="modBusStd_"   select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/>
+                                       <xsl:variable name="memcMOD_W_"   select="(($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $multiInstance_)]]/@MODS_W) * $BLKD_MOD_W)"/>
+                                                               
+                                       <xsl:variable name="modBc_Y_">
+                                               <xsl:choose>
+                                                       <xsl:when test="($modType_ = 'MEMORY_CNTLR') and (($modBusStd_ = 'LMB') or ($modBusStd_= 'OCM'))">
+                                                       <xsl:value-of select="$BLKD_MOD_H + $BLKD_MOD_LANE_H + ((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_))"/>
+                                                       </xsl:when>
+                                                       <xsl:otherwise>
+                                                       <xsl:value-of select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                                       </xsl:otherwise>
+                                               </xsl:choose>
+                                       </xsl:variable>   
+<!--                                   
+                                       <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:Y = <xsl:value-of select="$modBif_Y_"/></xsl:message>
+                                       <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:BcY = <xsl:value-of select="$modBc_Y_"/></xsl:message>
+                                       <xsl:message><xsl:value-of select="$multiInstance_"/>.<xsl:value-of select="$bifName_"/>:TcY = <xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V)"/></xsl:message>
+-->    
+                                       
+                                       <xsl:variable name="modBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+                                       <xsl:variable name="modBusName_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $multiInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
+                                       
+<!--                                   
+                                       <xsl:variable name="bcMod_Y_"     select="($mulshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2))"/>
+-->                                    
+                                       <xsl:variable name="bcMod_Y_"     select="($mulshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
+                                       
+                                       <xsl:variable name="bcMod_X_">
+                                               <xsl:choose>
+                                                       <xsl:when test="$modBifSide_ = '0'">
+                                                               <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($memcMOD_W_ div 2) + $BLKD_BIFC_W))"/>
+<!-- 
+ -->                                                   
+                                                       </xsl:when>
+                                                       <xsl:when test="$modBifSide_ = '1'">
+                                                               <xsl:value-of select="ceiling($memcMOD_W_ div 2)"/>
+                                                       </xsl:when>
+                                                       <xsl:otherwise>0</xsl:otherwise>
+                                               </xsl:choose>
+                                       </xsl:variable>
+                                               
+                                       
+                                       <MULTICONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}" IS_MOD="TRUE"/>
+<!--                                   
+                                       <MULTICONN X="{$bcInSpace_X_}" Y="{$bcMod_Y_}" BUSSTD="{$busStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
+-->                                    
+                                               
+                                       </xsl:otherwise>
+                               </xsl:choose>   
+                       </xsl:for-each>
+               </xsl:variable>
+                                       
+               <!-- Draw the busconnection and horizontal lines.-->                                            
+               <xsl:for-each select="exsl:node-set($multiConns_)/MULTICONN">
+                                                       
+                       <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
+                       <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+               
+<!--
+                                               <xsl:value-of select="$bus_x_"/>
+-->                                            
+                       <xsl:variable name="h_bus_ul_x_">
+                               <xsl:choose>
+                                       <xsl:when test="@BIFSIDE='0' and (@IS_PROC)">
+                                               <xsl:value-of select="$bus_x_ - $BLKD_P2P_BUS_W"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='0' and (@IS_MOD)">
+                                               <xsl:value-of select="$bus_x_ - $BLKD_P2P_BUS_W"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='1' and (@IS_PROC)">
+                                               <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='1' and (@IS_MOD)">
+                                               <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/>
+                                       </xsl:when>
+                               </xsl:choose>
+                       </xsl:variable> 
+               
+                       <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
+                       <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+                       <xsl:variable name="h_bus_width_">
+<!--
+                               <xsl:message>BUSSTD  <xsl:value-of select="@BUSSTD"/></xsl:message>
+                               <xsl:message>BIFSIDE <xsl:value-of select="@BIFSIDE"/></xsl:message>
+                               <xsl:message>TYPE <xsl:value-of select="@TYPE"/></xsl:message>
+-->                            
+                               <xsl:choose>
+                                       <xsl:when test="@BIFSIDE='0' and (@IS_PROC)">
+                                               <xsl:value-of select="(@X - $bus_x_ - $BLKD_P2P_BUS_W)"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='0' and (@IS_MOD)">
+                                               <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='1' and (@IS_PROC)">
+                                               <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ - $BLKD_BUS_ARROW_W - $BLKD_P2P_BUS_W"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='1' and (@IS_MOD)">
+                                               <xsl:value-of select="$BLKD_P2P_BUS_W + $BLKD_BUS_ARROW_W "/>
+<!--
+                                               <xsl:value-of select="$bus_x_ - $h_bus_ul_x_"/>
+  -->
+                                       </xsl:when>
+                               </xsl:choose>
+                       </xsl:variable>         
+                       
+                       
+<!-- 
+                       <xsl:message>h_bus_x_      <xsl:value-of select="$h_bus_ul_x_"/></xsl:message>
+                       <xsl:message>BIFSIDE  <xsl:value-of select="@BIFSIDE"/></xsl:message>
+                       <xsl:message>h_bus_width_  <xsl:value-of select="$h_bus_width_"/></xsl:message>
+ -->                   
+                       
+                       <!-- Draw the horizontal part of the bus -->
+                       <xsl:if test="($h_bus_width_ &gt; 0)">  
+                               <rect x="{$h_bus_ul_x_}" 
+                                         y="{$h_bus_ul_y_}"  
+                                         width= "{$h_bus_width_}" 
+                                         height="{$h_bus_height_}" 
+                                     style="stroke:none; fill:{$busColor_}"/>
+                       </xsl:if>     
+               
+                       
+                       <!-- Draw the arrow -->
+                       <xsl:choose>
+                               <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowEast"/>
+                               </xsl:when>
+                               <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowWest"/>
+                               </xsl:when>
+                               
+                               <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
+                               </xsl:when>
+                               
+                               <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
+                               </xsl:when>
+                                       
+                       </xsl:choose>
+               
+                       <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
+                       
+                                                       
+               </xsl:for-each>
+                                               
+               <xsl:variable name="busTop_" select="math:min(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
+               <xsl:variable name="busBot_" select="math:max(exsl:node-set($multiConns_)/MULTICONN/@Y)"/>
+               <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+               <xsl:variable name="busName_" select="exsl:node-set($multiConns_)/MULTICONN/@BUSNAME"/>
+       
+<!-- 
+-->              
+               <!-- Draw the vertical part of the bus -->      
+               <rect x="{$bcInSpace_X_ - $BLKD_P2P_BUS_W}" 
+                         y="{$v_bus_y_}"  
+                     width= "{$BLKD_P2P_BUS_W}" 
+                     height="{($busBot_ - $busTop_) + $BLKD_P2P_BUS_W}" 
+                     style="stroke:none; fill:{$busColor_}"/>
+<!-- 
+               <xsl:message>v_bus_x_  <xsl:value-of select="($bcInSpace_X_ + $BLKD_P2P_BUS_W)"/></xsl:message>
+ -->                 
+       <!-- Place the bus label.-->    
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="($bcInSpace_X_   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
+                       <xsl:with-param name="iY"               select="($busTop_ + ($BLKD_BUS_ARROW_H * 3))"/>
+                       <xsl:with-param name="iText"    select="$busName_"/>
+                       <xsl:with-param name="iClass"   select="'p2pbus_label'"/>
+               </xsl:call-template>
+                         
+</xsl:template>        
+       
+       
+<!-- 
+                ===========================================================
+                       Handle Processor to processor connections
+                ===========================================================
+-->
+<xsl:template name="BCLaneSpace_ProcToProc">   
+       
+       <xsl:param name="iBusStd"         select="'NONE'"/>     
+       <xsl:param name="iBusName"        select="'NONE'"/>     
+       <xsl:param name="iBifType"        select="'NONE'"/>     
+       <xsl:param name="iStackToEast"    select="'NONE'"/>     
+       <xsl:param name="iStackToWest"    select="'NONE'"/>     
+       <xsl:param name="iStackToEast_W"  select="0"/>  
+       <xsl:param name="iStackToWest_W"  select="0"/>  
+       <xsl:param name="iLaneInSpace_X"  select="0"/>  
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
+               
+       <xsl:variable name="pr2pr_StackToWest_"   select="math:min(BUSCONN/@STACK_HORIZ_INDEX)"/>
+       <xsl:variable name="pr2pr_StackToEast_"   select="math:max(BUSCONN/@STACK_HORIZ_INDEX)"/>
+       <xsl:variable name="proc2procConn_heights_">
+       
+       <xsl:for-each select="BUSCONN">
+                                       
+               <xsl:variable name="procInstance_" select="@INSTANCE"/>
+               <xsl:variable name="bifName_"      select="@BUSINTERFACE"/>
+               <xsl:variable name="procshp_hori_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@STACK_HORIZ_INDEX"/>
+               <xsl:variable name="procshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $procInstance_)]/@SHAPE_VERTI_INDEX"/>
+               <xsl:variable name="procshp_Y_">
+                       <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                               <xsl:with-param name="iHorizIdx"  select="$procshp_hori_idx_"/>
+                               <xsl:with-param name="iVertiIdx"  select="$procshp_vert_idx_"/>
+                       </xsl:call-template>
+               </xsl:variable>
+                                               
+               <xsl:variable name="procStack_H_diff_">
+                       <xsl:choose>
+                               <xsl:when test="   (($pr2pr_StackToEast_ = 'NONE') or ($pr2pr_StackToWest_ = 'NONE'))">0</xsl:when>
+                               <xsl:when test="not(($pr2pr_StackToEast_ = 'NONE') or ($pr2pr_StackToWest_ = 'NONE'))">
+                       
+                                       <xsl:variable name="stackToWest_AbvSbs_H_">
+                                               <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                                       <xsl:with-param name="iStackIdx"  select="$pr2pr_StackToWest_"/>
+                                               </xsl:call-template>
+                                       </xsl:variable>
+                               
+                                       <xsl:variable name="stackToEast_AbvSbs_H_">
+                                               <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                                       <xsl:with-param name="iStackIdx"  select="$pr2pr_StackToEast_"/>
+                                               </xsl:call-template>
+                                       </xsl:variable>
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                                       <xsl:choose>
+                                               <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToEast_) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                                       <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                               </xsl:when>     
+                                               <xsl:when test="(($procshp_hori_idx_ = $pr2pr_StackToWest_) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                                       <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                               </xsl:when>     
+                                               <xsl:otherwise>0</xsl:otherwise>        
+                                       </xsl:choose>   
+                                                                               
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable>
+                                               
+               <!-- Store the conns in a variable -->  
+               <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                                                                       
+               <xsl:variable name="procBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+               <xsl:variable name="procBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $procInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                                                       
+               <xsl:variable name="bcInSpace_X_">
+                       <xsl:choose>
+                               <xsl:when test="$procBifSide_ = '1'"><xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/></xsl:when>
+                               <xsl:when test="$procBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+                                                       
+               <xsl:variable name="bcProc_Y_"     select="($procshp_Y_ + $procBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
+<!--                                                   
+               <xsl:message>Conn X <xsl:value-of select="$bcInSpace_X_"/></xsl:message>
+               <xsl:message>Conn Y <xsl:value-of select="$bcProc_Y_"/></xsl:message>
+-->                                                    
+                                                                               
+                               <PR2PRCONN X="{$bcInSpace_X_}" Y="{$bcProc_Y_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}" SHAPE_ID="{$procshp_hori_idx_}"/>
+                       </xsl:for-each>
+               </xsl:variable>
+                                       
+               <xsl:variable name="pr2prLeft_"   select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
+               <xsl:variable name="pr2prRght_"   select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@SHAPE_ID)"/>
+                               
+               <xsl:variable name="pr2pr_stack_Left_X_">
+                       <xsl:call-template name="F_Calc_Stack_X"> 
+                               <xsl:with-param name="iStackIdx"  select="$pr2prLeft_"/>
+                       </xsl:call-template>            
+               </xsl:variable> 
+                                       
+               <xsl:variable name="pr2pr_stack_Rght_X_">
+                       <xsl:call-template name="F_Calc_Stack_X"> 
+                               <xsl:with-param name="iStackIdx"  select="$pr2prRght_"/>
+                       </xsl:call-template>            
+               </xsl:variable> 
+                                       
+<!--                                   
+                                       <xsl:message>Left stack X <xsl:value-of select="$pr2pr_stack_Left_X_"/></xsl:message>
+                                       <xsl:message>Rght stack X <xsl:value-of select="$pr2pr_stack_Rght_X_"/></xsl:message>
+-->                                    
+               <xsl:variable name="pr2pr_space_W_" select="($pr2pr_stack_Rght_X_ - $pr2pr_stack_Left_X_)"/>
+                                               
+                                       
+               <xsl:variable name="pr2pr_extStackEast_W_">
+                       <xsl:call-template name="F_Calc_Stack_Width">
+                               <xsl:with-param name="iStackIdx"  select="$pr2prRght_"/>
+                       </xsl:call-template>
+               </xsl:variable>
+                                       
+               <xsl:variable name="pr2pr_extStackWest_W_">
+                       <xsl:call-template name="F_Calc_Stack_Width">
+                               <xsl:with-param name="iStackIdx"  select="$pr2prLeft_"/>
+                       </xsl:call-template>
+               </xsl:variable>
+                                       
+<!--                                   
+                                       <xsl:message>Space W <xsl:value-of select="$pr2pr_space_W_"/></xsl:message>
+                                       <xsl:message>Rght stack <xsl:value-of select="$pr2pr_extStackEast_W_"/></xsl:message>
+                                       <xsl:message>Left stack <xsl:value-of select="$pr2pr_extStackWest_W_"/></xsl:message>
+-->                                    
+       
+               <xsl:variable name="connLeft_X_" select="ceiling($BLKD_MOD_W div 2)"/>
+               <xsl:variable name="connRght_X_" select="($pr2pr_space_W_ - ceiling($pr2pr_extStackWest_W_ div 2) + ceiling($pr2pr_extStackEast_W_ div 2) - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/>
+                                       
+                                       <!-- Draw the busconnections .-->                                               
+               <xsl:for-each select="exsl:node-set($proc2procConn_heights_)/PR2PRCONN">
+                       <xsl:variable name="conn_X_">
+                               <xsl:choose>
+                                       <xsl:when test="@BIFSIDE = '1'"><xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/></xsl:when>
+                                       <xsl:when test="@BIFSIDE = '0'"><xsl:value-of select="($pr2pr_space_W_ - ceiling($pr2pr_extStackWest_W_ div 2) + ceiling($pr2pr_extStackEast_W_ div 2) - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
+<!--                                                                   
+                                                                       <xsl:when test="@BIFSIDE = '0'"><xsl:value-of select="($pr2pr_space_W_ + $pr2pr_extStackWest_W_ + $pr2pr_extStackEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
+-->    
+                               </xsl:choose>
+                       </xsl:variable> 
+                                                       
+                                               
+                       <use   x="{$conn_X_}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
+               </xsl:for-each>
+                                       
+               <xsl:variable name="bc_Y_"     select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@Y)"/>
+               <xsl:variable name="bcLeft_"   select="math:min(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
+               <xsl:variable name="bcRght_"   select="math:max(exsl:node-set($proc2procConn_heights_)/PR2PRCONN/@X)"/>
+                                       
+               <xsl:variable name="leftType_"  select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcLeft_)]/@TYPE)"/>
+               <xsl:variable name="rghtType_"  select="(exsl:node-set($proc2procConn_heights_)/PR2PRCONN[(@X = $bcRght_)]/@TYPE)"/>
+                                               
+               <xsl:call-template name="Draw_Proc2ProcBus">
+                       <xsl:with-param name="iBc_Y"     select="$bc_Y_"/>
+                       <xsl:with-param name="iBusStd"   select="$iBusStd"/>
+                       <xsl:with-param name="iBusName"  select="$iBusName"/>
+                       <xsl:with-param name="iLeftType"  select="$leftType_"/>
+                       <xsl:with-param name="iRghtType"  select="$rghtType_"/>
+                       <xsl:with-param name="iBcLeft_X" select="$connLeft_X_ + $BLKD_BIFC_W"/>
+                       <xsl:with-param name="iBcRght_X" select="$connRght_X_"/>
+               </xsl:call-template>
+                               
+</xsl:template>        
+       
+<!-- 
+                ===========================================================
+                       Handle connections to the MPMC
+                ===========================================================
+-->
+<xsl:template name="BCLaneSpace_ToStandAloneMPMC">     
+       
+       <xsl:param name="iBusStd"        select="'NONE'"/>      
+       <xsl:param name="iBusName"       select="'NONE'"/>      
+       <xsl:param name="iBifType"       select="'NONE'"/>      
+       <xsl:param name="iStackToEast"   select="'NONE'"/>      
+       <xsl:param name="iStackToWest"   select="'NONE'"/>      
+       <xsl:param name="iStackToEast_W" select="0"/>   
+       <xsl:param name="iStackToWest_W" select="0"/>   
+       <xsl:param name="iLaneInSpace_X" select="0"/>   
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       <xsl:variable name="busColor_lt_">
+               <xsl:call-template name="F_BusStd2RGB_LT">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
+       
+       <xsl:variable name="bcInSpace_X_"  select="($iLaneInSpace_X +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
+       <xsl:variable name="p2pInstance_" select="BUSCONN[(@BIF_Y)]/@INSTANCE"/>
+                                       
+       <xsl:variable name="p2pshp_hori_idx_">
+               <xsl:choose>
+                       <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
+                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@STACK_HORIZ_INDEX"/>
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@STACK_HORIZ_INDEX"/>
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>         
+                                       
+       <xsl:variable name="p2pshp_vert_idx_">
+               <xsl:choose>
+                       <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]">
+                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $p2pInstance_)]/@SHAPE_VERTI_INDEX"/>
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $p2pInstance_)])]/@SHAPE_VERTI_INDEX"/>
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>         
+                                       
+       <xsl:variable name="p2pshp_Y_">
+               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                       <xsl:with-param name="iHorizIdx"  select="$p2pshp_hori_idx_"/>
+                       <xsl:with-param name="iVertiIdx"  select="$p2pshp_vert_idx_"/>
+               </xsl:call-template>
+       </xsl:variable>
+                       
+       <xsl:variable name="cmplxStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+                               
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                               
+                               <xsl:choose>
+                                       <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:otherwise>0</xsl:otherwise>        
+                               </xsl:choose>   
+                                                                       
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+                                               
+       <xsl:variable name="procStack_H_diff_">
+               <xsl:choose>
+                       <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+                       
+                               <xsl:variable name="stackToWest_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="stackToEast_AbvSbs_H_">
+                                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                               <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>stack to west H <xsl:value-of select="$stackToWest_AbvSbs_H_"/></xsl:message>
+                               <xsl:message>stack to east H <xsl:value-of select="$stackToEast_AbvSbs_H_"/></xsl:message>
+-->                            
+                               <xsl:choose>
+                                       <xsl:when test="(($p2pshp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:when test="(($p2pshp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                               <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                       </xsl:when>     
+                                       <xsl:otherwise>0</xsl:otherwise>        
+                               </xsl:choose>   
+                                                                       
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+                                               
+       
+       
+       <!-- Store the conns in a variable -->  
+       <xsl:variable name="p2pConn_heights_">
+       
+               <xsl:for-each select="BUSCONN">
+                                                                       
+                       <xsl:variable name="bifName_" select="@BUSINTERFACE"/>
+                                                       
+                               <xsl:choose>
+                                       <xsl:when test="@IS_PROCCONN and @BIF_Y">
+                                                                               
+<!--                                                                           
+                                                                               <xsl:message>Proc <xsl:value-of select="$procInstance_"/></xsl:message>
+-->                                                                            
+                                               <xsl:variable name="procBif_Y_"   select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                               <xsl:variable name="procBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+                                               <xsl:variable name="procBusName_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
+                                               <xsl:variable name="procBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $p2pInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                                                               
+                                               <xsl:variable name="bcProc_Y_"     select="($p2pshp_Y_ + $procBif_Y_ + ceiling($BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $procStack_H_diff_)"/>
+                                               <xsl:variable name="bcProc_X_">
+                                                       <xsl:choose>
+                                                               <xsl:when test="$procBifSide_ = '0'">
+                                                                       <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+                                                               </xsl:when>
+                                                               <xsl:when test="$procBifSide_ = '1'">
+                                                                       <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
+                                                               </xsl:when>
+                                                               <xsl:otherwise>0</xsl:otherwise>
+                                                       </xsl:choose>
+                                               </xsl:variable>
+                                               
+                                               <P2PCONN X="{$bcProc_X_}" Y="{$bcProc_Y_}" BUSNAME= "{$procBusName_}" BUSSTD="{$iBusStd}" TYPE="{$procBifType_}" BIFSIDE="{$procBifSide_}"/>
+                                                                               
+                                       </xsl:when>
+                                                                       
+                                       <xsl:otherwise>
+                                                                               
+                                               <xsl:variable name="modInstance_"     select="@INSTANCE"/>
+                                               <xsl:variable name="modshp_vert_idx_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[MODULE[(@INSTANCE = $modInstance_)]]/@SHAPE_VERTI_INDEX"/>
+                                               <xsl:variable name="modBifSide_"      select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                               <xsl:variable name="modBif_Y_"        select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_Y"/>
+                                               <xsl:variable name="modBc_Y_"         select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $modBif_Y_) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                                                                               
+<!--                                                                           
+                                               <xsl:message>Memory Instance <xsl:value-of select="$procInstance_"/></xsl:message>
+-->                                                                            
+                                               
+                                               <xsl:variable name="modshp_Y_">
+                                                       <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                                                               <xsl:with-param name="iHorizIdx"  select="$p2pshp_hori_idx_"/>
+                                                               <xsl:with-param name="iVertiIdx"  select="$modshp_vert_idx_"/>
+                                                       </xsl:call-template>
+                                               </xsl:variable>
+                                                                               
+                                               <xsl:variable name="modBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+                                               <xsl:variable name="modBusName_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSNAME"/>
+                                               <xsl:variable name="bcMod_Y_"     select="($modshp_Y_ + $modBc_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $cmplxStack_H_diff_)"/>
+                                               <xsl:variable name="bcMod_X_">
+                                                       <xsl:choose>
+                                                               <xsl:when test="$modBifSide_ = '0'">
+                                                                       <xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - (ceiling($BLKD_MOD_W div 2) + $BLKD_BIFC_W))"/>
+                                                               </xsl:when>
+                                                               <xsl:when test="$modBifSide_ = '1'">
+                                                                       <xsl:value-of select="ceiling($BLKD_MOD_W div 2)"/>
+                                                               </xsl:when>
+                                                               <xsl:otherwise>0</xsl:otherwise>
+                                                       </xsl:choose>
+                                               </xsl:variable>
+                                               
+                                               <P2PCONN X="{$bcMod_X_}" Y="{$bcMod_Y_}" BUSNAME="{$modBusName_}" BUSSTD="{$iBusStd}" TYPE="{$modBifType_}" BIFSIDE="{$modBifSide_}"/>
+                                               
+                                       </xsl:otherwise>
+                                                                       
+                               </xsl:choose>
+                       </xsl:for-each>
+               </xsl:variable>
+       
+       
+       <xsl:variable name="busTop_"  select="math:min(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
+       <xsl:variable name="busBot_"  select="math:max(exsl:node-set($p2pConn_heights_)/P2PCONN/@Y)"/>
+       <xsl:variable name="v_bus_y_" select="$busTop_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+       
+       <xsl:variable name="busName_" select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSNAME"/>
+       <xsl:variable name="busStd_"  select="exsl:node-set($p2pConn_heights_)/P2PCONN/@BUSSTD"/>
+       
+               <!-- Draw the vertical part of the bus -->      
+               <!-- Place the bus label.-->    
+               <!-- Draw the busconnection and horizontal lines.-->                                            
+               <xsl:for-each select="exsl:node-set($p2pConn_heights_)/P2PCONN">
+                                                       
+                       <xsl:variable name="bus_x_" select="($bcInSpace_X_ + ceiling($BLKD_BIFC_W div 2))"/>
+                       <xsl:variable name="bus_y_" select="@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+               
+                       <xsl:variable name="h_bus_ul_x_">
+                               <xsl:choose>
+                                       <xsl:when test="@BIFSIDE='0'">
+                                               <xsl:value-of select="$bus_x_"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='1'">
+                                               <xsl:value-of select="(@X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W) - 1"/>
+                                       </xsl:when>
+                               </xsl:choose>
+                       </xsl:variable> 
+               
+                       <xsl:variable name="h_bus_ul_y_" select="$bus_y_"/>
+       
+                       <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+                       <xsl:variable name="h_bus_width_">
+                               <xsl:choose>
+                                       <xsl:when test="@BIFSIDE='0'">
+                                               <xsl:value-of select="(@X - $bus_x_ - $BLKD_BUS_ARROW_W)"/>
+                                       </xsl:when>
+                                       <xsl:when test="@BIFSIDE='1'">
+                                               <xsl:value-of select="$bus_x_ - $h_bus_ul_x_ + 1"/>
+                                       </xsl:when>
+                                       
+                               </xsl:choose>
+                       </xsl:variable> 
+                       
+                       <!-- Draw Bus connection-->
+                       <use   x="{@X}"   y="{@Y}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
+                       
+                       <!-- Draw the arrow -->
+                       <xsl:choose>
+                               <xsl:when test="((@BIFSIDE='0') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowEast"/>
+                               </xsl:when>
+                               <xsl:when test="((@BIFSIDE='1') and not((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowWest"/>
+                               </xsl:when>
+                               
+                               <xsl:when test="((@BIFSIDE='0') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{@X - $BLKD_BUS_ARROW_W}"   y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
+                               </xsl:when>
+                               
+                               <xsl:when test="((@BIFSIDE='1') and ((@BUSSTD = 'FSL') and ((@TYPE = 'INITIATOR') or (@TYPE = 'MASTER'))))">
+                                       <use   x="{(@X + $BLKD_BIFC_W)}" y="{@Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2)}"  xlink:href="#{@BUSSTD}_BusArrowHInitiator"/>
+                               </xsl:when>
+                                       
+                       </xsl:choose>
+               
+                       <!-- Draw the horizontal part of the bus -->
+                       <rect x="{$h_bus_ul_x_}" 
+                                 y="{$h_bus_ul_y_}"  
+                                 width= "{$h_bus_width_}" 
+                                 height="{$h_bus_height_}" 
+                               
+                             style="stroke:none; fill:{$busColor_}"/>
+                       
+                       <!-- 
+                               Draw the vertical part of the bus. The MPMC BIF and the top arrow will
+                               be added later when the main drawing happens.
+                       -->
+                       <xsl:variable name="v_bus_ul_x_">
+                               <xsl:choose>
+                                       <xsl:when test="@BIFSIDE='0'"><xsl:value-of select="($h_bus_ul_x_)"/></xsl:when>
+                                       <xsl:when test="@BIFSIDE='1'"><xsl:value-of select="($h_bus_ul_x_ + $h_bus_width_ - $BLKD_P2P_BUS_W)"/></xsl:when>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <rect x="{$v_bus_ul_x_}" 
+                                 y="0"  
+                                 width= "{$BLKD_P2P_BUS_W}" 
+                                 height="{$h_bus_ul_y_}"  
+                             style="stroke:none; fill:{$busColor_}"/>
+       </xsl:for-each>
+                                               
+</xsl:template>        
+       
+       
+                               
+<!-- 
+        ======================================================================
+     Handle Split connections, (connections that go between adjacent stacks)
+        ======================================================================
+-->
+       
+<xsl:template name="BCLaneSpace_SplitConn">    
+       
+       <xsl:param name="iBusStd"          select="'NONE'"/>    
+       <xsl:param name="iBusName"         select="'NONE'"/>    
+       <xsl:param name="iBifType"         select="'NONE'"/>    
+       <xsl:param name="iStackToEast"     select="'NONE'"/>    
+       <xsl:param name="iStackToWest"     select="'NONE'"/>    
+       <xsl:param name="iStackToEast_W"   select="0"/> 
+       <xsl:param name="iStackToWest_W"   select="0"/> 
+       <xsl:param name="iLaneInSpace_X"   select="0"/> 
+       
+       <xsl:variable name="busColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable> 
+       
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($iStackToWest_W div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($iStackToEast_W div 2)"/>                                                 
+                       
+                                       
+       <xsl:variable name="bifName_"      select="BUSCONN/@BUSINTERFACE"/>
+       <xsl:variable name="shpInstance_"  select="BUSCONN/@INSTANCE"/>
+                                       
+<!--                                   
+                       <xsl:message>Found a split connection on <xsl:value-of select="$shpInstance_"/></xsl:message>   
+-->                                    
+                                               
+                                       
+               <xsl:variable name="shp_hori_idx_">
+                                               
+                       <xsl:choose>
+                               <xsl:when  test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
+                                       <xsl:value-of select="/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@STACK_HORIZ_INDEX"/>
+                               </xsl:when>
+                                                       
+                               <xsl:when  test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
+                                       <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@STACK_HORIZ_INDEX"/>
+                               </xsl:when>
+                               <xsl:otherwise>_unknown_</xsl:otherwise>
+                       </xsl:choose>           
+                                               
+               </xsl:variable> 
+                                       
+               <xsl:variable name="shp_vert_idx_">
+                                               
+                       <xsl:choose>
+                               <xsl:when  test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
+                                       <xsl:value-of select="/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]/@SHAPE_VERTI_INDEX"/>
+                               </xsl:when>
+                                                       
+                               <xsl:when  test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]">
+                                       <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@SHAPE_VERTI_INDEX"/>
+                               </xsl:when>
+                               <xsl:otherwise>_unknown_</xsl:otherwise>
+                       </xsl:choose>           
+                                               
+               </xsl:variable> 
+                                       
+               <xsl:variable name="splitshp_Width_">
+                                               
+                       <xsl:choose>
+                               <xsl:when  test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $shpInstance_)]">
+                                       <xsl:value-of select="$BLKD_MOD_W"/>
+                               </xsl:when>
+                                               
+                               <xsl:when  test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W">
+<!--                                                           
+                                                               <xsl:message>Using mods width on <xsl:value-of select="$shpInstance_"/></xsl:message>
+-->                                                            
+                                       <xsl:value-of select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(MODULE[(@INSTANCE = $shpInstance_)])]/@MODS_W * $BLKD_MOD_W)"/>
+                               </xsl:when>
+                               <xsl:otherwise>
+                                       <xsl:value-of select="$BLKD_MOD_W"/>
+                               </xsl:otherwise>
+                       </xsl:choose>           
+                                               
+               </xsl:variable> 
+                                       
+<!--                                   
+                                       <xsl:message>Found width of <xsl:value-of select="$splitshp_Width_"/></xsl:message>
+-->                                    
+       
+                                       
+               <xsl:variable name="splitshp_Y_">
+                       <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                               <xsl:with-param name="iHorizIdx"  select="$shp_hori_idx_"/>
+                               <xsl:with-param name="iVertiIdx"  select="$shp_vert_idx_"/>
+                       </xsl:call-template>
+               </xsl:variable>
+                                       
+                                               
+               <xsl:variable name="splitStack_H_diff_">
+                       <xsl:choose>
+                               <xsl:when test="   (($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">0</xsl:when>
+                               <xsl:when test="not(($iStackToEast = 'NONE') or ($iStackToWest = 'NONE'))">
+       
+                                       <xsl:variable name="stackToWest_AbvSbs_H_">
+                                               <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                                       <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                                               </xsl:call-template>
+                                       </xsl:variable>
+                               
+                                       <xsl:variable name="stackToEast_AbvSbs_H_">
+                                               <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                                       <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+                                               </xsl:call-template>
+                                       </xsl:variable>
+                               
+                                       <xsl:choose>
+                                               <xsl:when test="(($shp_hori_idx_ = $iStackToEast) and ($stackToWest_AbvSbs_H_ &gt; $stackToEast_AbvSbs_H_))">
+                                                       <xsl:value-of select="($stackToWest_AbvSbs_H_ - $stackToEast_AbvSbs_H_)"/>
+                                               </xsl:when>     
+                                               <xsl:when test="(($shp_hori_idx_ = $iStackToWest) and ($stackToEast_AbvSbs_H_ &gt; $stackToWest_AbvSbs_H_))">
+                                                       <xsl:value-of select="($stackToEast_AbvSbs_H_ - $stackToWest_AbvSbs_H_)"/>
+                                               </xsl:when>     
+                                               <xsl:otherwise>0</xsl:otherwise>        
+                                       </xsl:choose>   
+                                                                               
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable>
+                                               
+                                       
+               <xsl:variable name="splitBif_Y_"    select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * BUSCONN/@BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+               <xsl:variable name="splitBusStd_"   select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BUSSTD"/>
+               <xsl:variable name="splitBifType_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@TYPE"/>
+               <xsl:variable name="splitBifSide_"  select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $shpInstance_)]/BUSINTERFACE[(@NAME = $bifName_)]/@BIF_X"/>
+                                                                       
+               <xsl:variable name="bcInSpace_X_">
+                       <xsl:choose>
+                               <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="ceiling($splitshp_Width_ div 2)"/></xsl:when>
+                               <xsl:when test="$splitBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($splitshp_Width_ div 2) - $BLKD_BIFC_W)"/></xsl:when>
+                       </xsl:choose>
+                                                               
+               </xsl:variable> 
+                                       
+               <xsl:variable name="bcBus_X_">
+                       <xsl:choose>
+                               <xsl:when test="$splitBifSide_ = '1'"><xsl:value-of select="$bcInSpace_X_"/></xsl:when>
+                               <xsl:when test="$splitBifSide_ = '0'"><xsl:value-of select="($space_W_ + $extSpaceWest_W_ + $extSpaceEast_W_ - ceiling($BLKD_MOD_W div 2) - $BLKD_BIFC_W)"/></xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+                                                       
+               <xsl:variable name="bcSplit_Y_">
+                       <xsl:choose>
+                               <xsl:when test="(BUSCONN/@IS_MEMCONN) and (($splitBusStd_ = 'LMB') or ($splitBusStd_ = 'OCM'))">
+<!--                                                           
+                                       <xsl:message>Found memory conn split connection on <xsl:value-of select="$shpInstance_"/> </xsl:message>
+-->    
+                                       <xsl:value-of select="($splitshp_Y_ + $BLKD_MOD_H + $BLKD_MOD_BIF_GAP_V + (BUSCONN/@BIF_Y * ($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)) + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
+                               </xsl:when>     
+                               <xsl:otherwise>
+                                       <xsl:value-of select="($splitshp_Y_ + $splitBif_Y_ + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2) + $splitStack_H_diff_)"/>
+                               </xsl:otherwise>
+                       </xsl:choose>
+               </xsl:variable>    
+                                       
+       <use   x="{$bcInSpace_X_}"   y="{$bcSplit_Y_}"  xlink:href="#{@BUSSTD}_busconn_{$splitBifType_}"/>
+                                       
+                       
+       <xsl:call-template name="Draw_SplitConnBus">
+               <xsl:with-param name="iBc_Y"    select="$bcSplit_Y_"/>
+               <xsl:with-param name="iBc_X"    select="$bcInSpace_X_"/>
+               <xsl:with-param name="iBusStd"  select="$iBusStd"/>
+               <xsl:with-param name="iBc_Type" select="$splitBifType_"/>
+               <xsl:with-param name="iBc_Side" select="$splitBifSide_"/>
+               <xsl:with-param name="iBusName" select="$iBusName"/>
+       </xsl:call-template>
+                                       
+       
+</xsl:template>        
+       
+       
+<xsl:template name="Define_BusLaneSpace"> 
+       
+       <xsl:param name="iStackToEast"  select="'NONE'"/>
+       <xsl:param name="iStackToWest"  select="'NONE'"/>
+       
+<!--   
+       <xsl:message>Input Stack to West <xsl:value-of select="$iStackToWest"/></xsl:message>
+       <xsl:message>Input Stack to East <xsl:value-of select="$iStackToEast"/></xsl:message>
+-->
+       
+       <xsl:variable name="stackToEast_">
+               <xsl:choose>
+                       <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
+                       <xsl:otherwise>NONE</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       <xsl:variable name="stackToWest_">
+               <xsl:choose>
+                       <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
+                       <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
+                       <xsl:otherwise>NONE</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       <xsl:variable name="spaceAbvSbs_H_">
+               <xsl:call-template name="F_Calc_Space_AbvSbs_Height">
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>
+       </xsl:variable> 
+       
+       <xsl:variable name="spaceBlwSbs_H_">
+               <xsl:call-template name="F_Calc_Space_BlwSbs_Height">
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>
+       </xsl:variable> 
+       
+       
+       <xsl:variable name="space_H_" select="($spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP + $G_Total_SharedBus_H + $spaceBlwSbs_H_)"/>
+       <xsl:variable name="space_W_">
+               <xsl:call-template name="F_Calc_Space_Width"> 
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name="spaceSharedBus_Y_" select="$spaceAbvSbs_H_ + $BLKD_PROC2SBS_GAP"/>
+       
+       <xsl:variable name="space_name_">
+               <xsl:call-template name="F_generate_Space_Name"> 
+                       <xsl:with-param name="iStackToEast"  select="$stackToEast_"/>
+                       <xsl:with-param name="iStackToWest"  select="$stackToWest_"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+       <xsl:variable name = "stackToWest_W_">
+               <xsl:choose>
+                       <xsl:when test="(($iStackToEast = '0')    and    ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="(($iStackToEast = 'NONE') and not($iStackToWest = 'NONE'))">
+                               <xsl:call-template name="F_Calc_Stack_Width">
+                                       <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                               </xsl:call-template>
+                       </xsl:when>
+                       <xsl:when test="(not($iStackToEast = '0') and not($iStackToEast = 'NONE') and ($iStackToWest = 'NONE'))">
+                               <xsl:call-template name="F_Calc_Stack_Width">
+                                       <xsl:with-param name="iStackIdx"  select="($iStackToEast - 1)"/>
+                               </xsl:call-template>
+                       </xsl:when>
+                       <xsl:otherwise>0</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name = "stackToEast_W_">
+               <xsl:call-template name="F_Calc_Stack_Width">
+                       <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+               </xsl:call-template>
+       </xsl:variable>
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($stackToWest_W_ div 2)"/>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($stackToEast_W_ div 2)"/>
+       
+       <g id="{$space_name_}">
+                <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (($iStackToEast = 'NONE') and (@WEST = $iStackToWest)))]/BUSCONNLANE[@BUSSTD and @BUSNAME]">
+                               
+                               <xsl:variable name="busStd_"          select="@BUSSTD"/>
+                               <xsl:variable name="busName_"         select="@BUSNAME"/>
+                               <xsl:variable name="lane_X_"          select="@BUSLANE_X"/>
+
+                               <xsl:variable name="eastBusLane_X_">
+                                       <xsl:choose>
+                                          <xsl:when test="(@BUSLANE_X = 0)"><xsl:value-of select="@BUSLANE_X"/></xsl:when>
+                                          <xsl:otherwise><xsl:value-of select="(@BUSLANE_X  - 1)"/></xsl:otherwise>
+                                       </xsl:choose>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="laneInSpace_X_">
+                                       <xsl:choose>
+                                          <xsl:when test="(@ORIENTED = 'EAST')">
+                                                  <xsl:value-of select="($extSpaceWest_W_ + ($eastBusLane_X_ * $BLKD_BUS_LANE_W) - $BLKD_BUS_ARROW_W - $BLKD_P2P_BUS_W)"/>
+                                          </xsl:when>
+                                          <xsl:otherwise><xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:otherwise>
+                                       </xsl:choose>
+                               </xsl:variable> 
+                                               
+                        
+                               <xsl:variable name="busColor_">
+                                       <xsl:call-template name="F_BusStd2RGB">
+                                               <xsl:with-param name="iBusStd" select="@BUSSTD"/>
+                                       </xsl:call-template>    
+                               </xsl:variable>
+                               
+                               <xsl:choose>
+<!-- 
+                ===========================================================
+                       Handle Bucket connections to the shared busses.
+                ===========================================================
+-->
+                                       <xsl:when test="@BUSLANE_X and @IS_BKTCONN and BUSCONN[@TYPE] and $G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUS_INDEX">
+                                               <xsl:call-template name="BCLaneSpace_BucketToSharedBus">
+                                                       <xsl:with-param name="iBusName"           select="$busName_"/>
+                                                       <xsl:with-param name="iBusStd"            select="$busStd_"/>
+                                                       <xsl:with-param name="iBifType"           select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/BUSINTERFACE/@TYPE"/>
+                                                       <xsl:with-param name="iStackToEast"       select="$stackToEast_"/>
+                                                       <xsl:with-param name="iStackToWest"       select="$stackToWest_"/>
+                                                       <xsl:with-param name="iStackToEast_W"     select="$stackToEast_W_"/>
+                                                       <xsl:with-param name="iStackToWest_W"     select="$stackToWest_W_"/>
+                                                       <xsl:with-param name="iLaneInSpace_X"     select="$laneInSpace_X_"/>
+                                                       <xsl:with-param name="iSpaceSharedBus_Y"  select="$spaceSharedBus_Y_"/>
+                                               </xsl:call-template>    
+                                       </xsl:when>
+                                       
+<!--
+                ===========================================================
+                       Handle Processor's Shared bus connections.
+                ===========================================================
+-->
+                                       <xsl:when test="@BUSLANE_X and @IS_SBSCONN and not(@IS_MPMCCONN) and BUSCONN[@BIF_Y and @IS_PROCCONN and @INSTANCE and @BUSINTERFACE] and $G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUS_INDEX">
+                                               <xsl:call-template name="BCLaneSpace_ProcBifToSharedBus">
+                                                       <xsl:with-param name="iBusStd"            select="$busStd_"/>
+                                                       <xsl:with-param name="iBusName"           select="$busName_"/>
+                                                       <xsl:with-param name="iBifType"           select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/BUSINTERFACE/@TYPE"/>
+                                                       <xsl:with-param name="iStackToEast"       select="$stackToEast_"/>
+                                                       <xsl:with-param name="iStackToWest"       select="$stackToWest_"/>
+                                                       <xsl:with-param name="iStackToEast_W"     select="$stackToEast_W_"/>
+                                                       <xsl:with-param name="iStackToWest_W"     select="$stackToWest_W_"/>
+                                                       <xsl:with-param name="iLaneInSpace_X"     select="$laneInSpace_X_"/>
+                                                       <xsl:with-param name="iSpaceSharedBus_Y"  select="$spaceSharedBus_Y_"/>
+                                               </xsl:call-template>    
+<!--                                           
+-->    
+                                       </xsl:when>     
+                                       
+<!--
+                ===========================================================
+                       Handle non Processor Shared Bus connections.
+                ===========================================================
+-->
+                                       <xsl:when test="@BUSLANE_X and @IS_SBSCONN and not(@IS_MPMCCONN) and BUSCONN[@BIF_Y and not(@IS_PROCCONN) and @INSTANCE and @BUSINTERFACE] and /EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUS_INDEX">
+                                               <xsl:call-template name="BCLaneSpace_NonProcBifToSharedBus">
+                                                       <xsl:with-param name="iBusStd"            select="$busStd_"/>
+                                                       <xsl:with-param name="iBusName"           select="$busName_"/>
+                                                       <xsl:with-param name="iBifType"           select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/BUSINTERFACE/@TYPE"/>
+                                                       <xsl:with-param name="iStackToEast"       select="$stackToEast_"/>
+                                                       <xsl:with-param name="iStackToWest"       select="$stackToWest_"/>
+                                                       <xsl:with-param name="iStackToEast_W"     select="$stackToEast_W_"/>
+                                                       <xsl:with-param name="iStackToWest_W"     select="$stackToWest_W_"/>
+                                                       <xsl:with-param name="iLaneInSpace_X"     select="$laneInSpace_X_"/>
+                                                       <xsl:with-param name="iSpaceSharedBus_Y"  select="$spaceSharedBus_Y_"/>
+                                               </xsl:call-template>    
+<!--                                           
+-->    
+                                       </xsl:when>                                     
+                                       
+<!-- 
+                ===========================================================
+                       Handle connections from processors to Memory UNITs
+                ===========================================================
+-->                    
+                                       <xsl:when test="@BUSLANE_X and @IS_MEMCONN and not(@IS_MULTISTK) and BUSCONN[@BIF_Y and @IS_PROCCONN and not(@IS_SPLITCONN) and @INSTANCE and @BUSINTERFACE]">
+                                               <xsl:call-template name="BCLaneSpace_ProcBifToMemoryUnit">
+                                                       <xsl:with-param name="iBusStd"         select="$busStd_"/>
+                                                       <xsl:with-param name="iBusName"        select="$busName_"/>
+                                                       <xsl:with-param name="iBifType"        select="BUSCONN/@TYPE"/>
+                                                       <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
+                                                       <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
+                                                       <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
+                                                       <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
+                                                       <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
+                                               </xsl:call-template>    
+<!--                                           
+-->    
+                                       </xsl:when>                             
+                               
+                                       
+<!-- 
+                ===========================================================
+                       Handle generic Point to Point connections
+                ===========================================================
+-->
+                                       <xsl:when test="@BUSLANE_X and not(@IS_MULTISTK) and not(@IS_MPMCCONN) and not(@IS_MEMCONN) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and not(@IS_SPLITCONN)]">
+                                               <xsl:call-template name="BCLaneSpace_PointToPoint">
+                                                       <xsl:with-param name="iBusStd"         select="$busStd_"/>
+                                                       <xsl:with-param name="iBusName"        select="$busName_"/>
+                                                       <xsl:with-param name="iBifType"        select="BUSCONN/@TYPE"/>
+                                                       <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
+                                                       <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
+                                                       <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
+                                                       <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
+                                                       <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
+                                               </xsl:call-template>    
+<!--                                           
+-->    
+                                       </xsl:when>                             
+                                       
+<!-- 
+                ===========================================================
+                       Handle MultiStack Point to Point connections
+                ===========================================================
+-->
+                                       <xsl:when test="@BUSLANE_X and (@IS_MULTISTK) and not(@IS_SBSCONN) and BUSCONN[@BIF_Y and @IS_PROCCONN and @INSTANCE and @BUSINTERFACE]">
+                                               <xsl:call-template name="BCLaneSpace_MultiStack_PointToPoint">
+                                                       <xsl:with-param name="iBusStd"         select="$busStd_"/>
+                                                       <xsl:with-param name="iBusName"        select="$busName_"/>
+                                                       <xsl:with-param name="iBifType"        select="BUSCONN/@TYPE"/>
+                                                       <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
+                                                       <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
+                                                       <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
+                                                       <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
+                                                       <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
+                                               </xsl:call-template>    
+                                       </xsl:when>                             
+                                       
+<!-- 
+                ===========================================================
+                       Handle Processor to processor connections
+                ===========================================================
+-->
+<!--                                   
+-->    
+                               <xsl:when test="(@IS_PROC2PROC and (count(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE]) = 2))">
+                                       <xsl:call-template name="BCLaneSpace_ProcToProc">
+                                               <xsl:with-param name="iBusStd"         select="$busStd_"/>
+                                               <xsl:with-param name="iBusName"        select="$busName_"/>
+                                               <xsl:with-param name="iBifType"        select="BUSCONN/@TYPE"/>
+                                               <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
+                                               <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
+                                               <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
+                                               <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
+                                               <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
+                                       </xsl:call-template>    
+                               </xsl:when>
+                                       
+<!-- 
+                ===========================================================
+                       Handle connections to the StandAlone MPMC
+                ===========================================================
+-->
+                       <xsl:when test="@BUSLANE_X and (@IS_MPMCCONN) and not(@IS_SBSCONN) and BUSCONN[(@BIF_Y and @INSTANCE and @BUSINTERFACE)]">
+<!--                           
+-->                            
+                                       <xsl:call-template name="BCLaneSpace_ToStandAloneMPMC">
+                                               <xsl:with-param name="iBusStd"         select="$busStd_"/>
+                                               <xsl:with-param name="iBusName"        select="$busName_"/>
+                                               <xsl:with-param name="iBifType"        select="BUSCONN/@TYPE"/>
+                                               <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
+                                               <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
+                                               <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
+                                               <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
+                                               <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
+                                       </xsl:call-template>    
+                       </xsl:when>
+                                       
+<!-- 
+                ===========================================================
+                       Handle Split connections, (connections that go between non adjacent stacks)
+                ===========================================================
+-->
+                       <xsl:when test="(BUSCONN[@BIF_Y and @INSTANCE and @BUSINTERFACE and @IS_SPLITCONN])">
+                               <xsl:call-template name="BCLaneSpace_SplitConn">
+                                       <xsl:with-param name="iBusStd"         select="$busStd_"/>
+                                       <xsl:with-param name="iBusName"        select="$busName_"/>
+                                       <xsl:with-param name="iBifType"        select="BUSCONN/@TYPE"/>
+                                       <xsl:with-param name="iStackToEast"    select="$stackToEast_"/>
+                                       <xsl:with-param name="iStackToWest"    select="$stackToWest_"/>
+                                       <xsl:with-param name="iStackToEast_W"  select="$stackToEast_W_"/>
+                                       <xsl:with-param name="iStackToWest_W"  select="$stackToWest_W_"/>
+                                       <xsl:with-param name="iLaneInSpace_X"  select="$laneInSpace_X_"/>
+                               </xsl:call-template>    
+<!--                           
+-->    
+                       </xsl:when>
+                                       
+               </xsl:choose>
+                                                               
+       </xsl:for-each>
+       </g>
+                       
+</xsl:template>        
+       
+<xsl:template name="Define_BusLaneSpaces"> 
+       
+       <xsl:variable name="lastStack_" select="(/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH) - 1"/>
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[@EAST]">
+               <xsl:sort select="@EAST" data-type="number"/>
+                       
+               <xsl:call-template name="Define_BusLaneSpace">
+                       <xsl:with-param name="iStackToEast"  select="@EAST"/>
+               </xsl:call-template>
+       </xsl:for-each> 
+       
+<!--   
+       <xsl:message>Last Stack <xsl:value-of select="$lastStack_"/></xsl:message>
+-->    
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@WEST = $lastStack_)]">
+               <xsl:call-template name="Define_BusLaneSpace">
+                       <xsl:with-param name="iStackToWest"  select="$lastStack_"/>
+               </xsl:call-template>
+       </xsl:for-each> 
+                       
+</xsl:template>
+               
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Busses.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Busses.xsl
new file mode 100644 (file)
index 0000000..3fc2afe
--- /dev/null
@@ -0,0 +1,534 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink">
+                
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+               
+
+       
+<xsl:template name="Define_Busses">
+<!--   
+       <xsl:param name="drawarea_w"  select="500"/>
+       <xsl:param name="drawarea_h"  select="500"/>
+-->    
+       
+       <xsl:for-each select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR">
+               
+               <xsl:call-template name="Define_BusArrowsEastWest"> 
+                       <xsl:with-param name="iBusStd"    select="@BUSSTD"/>
+               </xsl:call-template>
+               
+               <xsl:call-template name="Define_BusArrowsNorthSouth"> 
+                       <xsl:with-param name="iBusStd"    select="@BUSSTD"/>
+               </xsl:call-template>
+               
+               <xsl:call-template name="Define_SplitBusses"> 
+                       <xsl:with-param name="iBusStd"    select="@BUSSTD"/>
+               </xsl:call-template>
+               
+       </xsl:for-each>
+       
+       <xsl:call-template name="Define_SharedBus"> 
+               <xsl:with-param name="iBusStd"    select="'PLB'"/>
+       </xsl:call-template>
+       
+       <xsl:call-template name="Define_SharedBus"> 
+               <xsl:with-param name="iBusStd"    select="'PLBV46'"/>
+       </xsl:call-template>
+       
+       <xsl:call-template name="Define_SharedBus"> 
+               <xsl:with-param name="iBusStd"    select="'OPB'"/>
+       </xsl:call-template>
+       
+       <xsl:call-template name="Define_SharedBus_Group"/> 
+       
+</xsl:template>
+
+<xsl:template name="Define_BusArrowsEastWest"> 
+       <xsl:param name="iBusStd"    select="'PLB'"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="busStdColor_lt_">
+               <xsl:call-template name="F_BusStd2RGB_LT">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <g id="{$iBusStd}_BusArrowEast">
+               <path class="bus"
+                         d="M   0,0
+                                L     {$BLKD_BUS_ARROW_W}, {ceiling($BLKD_BUS_ARROW_H div 2)}
+                                L   0,{$BLKD_BUS_ARROW_H}, 
+                                Z" style="stroke:none; fill:{$busStdColor_}"/>
+       </g>
+       
+       <g id="{$iBusStd}_BusArrowWest">
+               <use   x="0"   y="0"  xlink:href="#{$iBusStd}_BusArrowEast" transform="scale(-1,1) translate({$BLKD_BUS_ARROW_W * -1},0)"/>
+       </g>
+       
+       <g id="{$iBusStd}_BusArrowHInitiator">
+               <rect x="0" 
+                         y="{$BLKD_BUS_ARROW_G}"  
+                         width= "{$BLKD_BUS_ARROW_W}" 
+                         height="{$BLKD_P2P_BUS_W}" 
+                        style="stroke:none; fill:{$busStdColor_}"/>
+       </g>
+       
+</xsl:template>
+
+<!--   
+       <xsl:param name="bus_col"     select="'OPB'"/>
+-->    
+
+<xsl:template name="Define_BusArrowsNorthSouth">
+       <xsl:param name="iBusStd"    select="'PLB'"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="busStdColor_lt_">
+               <xsl:call-template name="F_BusStd2RGB_LT">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <g id="{$iBusStd}_BusArrowSouth">
+               <path class="bus"
+                         d="M   0,0
+                                L   {$BLKD_BUS_ARROW_H},0
+                                L   {ceiling($BLKD_BUS_ARROW_H div 2)}, {$BLKD_BUS_ARROW_W}
+                                Z" style="stroke:none; fill:{$busStdColor_}"/>
+       </g>
+       
+       <g id="{$iBusStd}_BusArrowNorth">
+               <use   x="0"   y="0"  xlink:href="#{$iBusStd}_BusArrowSouth" transform="scale(1,-1) translate(0,{$BLKD_BUS_ARROW_H * -1})"/>
+       </g>
+       
+       <g id="{$iBusStd}_BusArrowInitiator">
+               <rect x="{$BLKD_BUS_ARROW_G}" 
+                         y="0"  
+                         width= "{$BLKD_BUS_ARROW_W - ($BLKD_BUS_ARROW_G * 2)}" 
+                         height="{$BLKD_BUS_ARROW_H}" 
+                        style="stroke:none; fill:{$busStdColor_}"/>
+       </g>
+       
+</xsl:template>
+       
+
+<xsl:template name="Draw_P2PBus">
+       
+       <xsl:param name="iBusX"        select="0"/>
+       <xsl:param name="iBusTop"          select="0"/>
+       <xsl:param name="iBusBot"          select="0"/>
+       <xsl:param name="iBusStd"          select="'_bstd_'"/>
+       <xsl:param name="iBusName"         select="'_p2pbus_'"/>
+       <xsl:param name="iBotBifType"  select="'_unk_'"/>
+       <xsl:param name="iTopBifType"  select="'_unk_'"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:choose>
+                       
+                       <xsl:when test="@BUSSTD">
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="@BUSSTD"/>
+                               </xsl:call-template>    
+                       </xsl:when>
+                       
+                       <xsl:when test="not($iBusStd = '_bstd_')">
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+                               </xsl:call-template>    
+                       </xsl:when>
+                       
+                       <xsl:otherwise>
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="'TRS'"/>
+                               </xsl:call-template>    
+                       </xsl:otherwise>
+                       
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name="p2pH_" select="($iBusBot - $iBusTop) - ($BLKD_BUS_ARROW_H * 2)"/>
+
+       <xsl:variable name="botArrow_">
+               <xsl:choose>
+                       <xsl:when test="((($iBotBifType = 'INITIATOR') or ($iBotBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowInitiator</xsl:when>
+                       <xsl:otherwise>BusArrowSouth</xsl:otherwise> 
+               </xsl:choose>           
+       </xsl:variable>
+       
+       <xsl:variable name="topArrow_">
+               <xsl:choose>
+                       <xsl:when test="((($iTopBifType = 'INITIATOR') or ($iTopBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowInitiator</xsl:when>
+                       <xsl:otherwise>BusArrowNorth</xsl:otherwise> 
+               </xsl:choose>           
+       </xsl:variable>
+       
+       <xsl:if test="@BUSSTD">         
+               <use  x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"  
+                     y="{$iBusTop + ($BLKD_BIFC_H  - $BLKD_BUS_ARROW_H) + $BLKD_BUS_ARROW_H}"  
+                     xlink:href="#{@BUSSTD}_{$topArrow_}"/>    
+                 
+               <use  x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"  
+                     y="{$iBusBot - $BLKD_BUS_ARROW_H}"  
+                     xlink:href="#{@BUSSTD}_{$botArrow_}"/>    
+       </xsl:if>                 
+       
+       <xsl:if test="(not(@BUSSTD) and not($iBusStd = '_bstd_'))">             
+               <use  x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"  
+                     y="{$iBusTop + ($BLKD_BIFC_H  - $BLKD_BUS_ARROW_H) + $BLKD_BUS_ARROW_H}"  
+                     xlink:href="#{$iBusStd}_{$topArrow_}"/>   
+                 
+               <use  x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2)}"  
+                     y="{$iBusBot - $BLKD_BUS_ARROW_H}"  
+                     xlink:href="#{$iBusStd}_{$botArrow_}"/>   
+       </xsl:if>                 
+       
+       
+       <rect x="{($iBusX + ceiling($BLKD_BIFC_W div 2)) - ceiling($BLKD_BUS_ARROW_W div 2) + $BLKD_BUS_ARROW_G}"  
+                 y="{$iBusTop + $BLKD_BIFC_H + $BLKD_BUS_ARROW_H}"  
+                 height= "{$p2pH_  - ($BLKD_BUS_ARROW_H * 2)}" 
+                 width="{$BLKD_BUS_ARROW_W - ($BLKD_BUS_ARROW_G * 2)}" 
+                 style="stroke:none; fill:{$busStdColor_}"/>
+                 
+<!--
+       <text class="p2pbuslabel" 
+                         x="{$iBusX   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4}"
+                         y="{$iBusTop + ($BLKD_BUS_ARROW_H * 3)}">
+                       <xsl:value-of select="$iBusName"/>
+       </text>
+-->    
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="($iBusX   + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4)"/>
+                       <xsl:with-param name="iY"               select="($iBusTop + ($BLKD_BUS_ARROW_H * 3))"/>
+                       <xsl:with-param name="iText"    select="$iBusName"/>
+                       <xsl:with-param name="iClass"   select="'p2pbus_label'"/>
+               </xsl:call-template>
+                         
+       <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP">
+<!-- 
+          <text class="ioplblgrp" 
+                 x="{$iBusX   +  $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6}"
+                 y="{$iBusTop + ($BLKD_BUS_ARROW_H * 10)}">
+                          <xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP"/>
+               </text>
+-->            
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(iBusX   +  $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 6)"/>
+                       <xsl:with-param name="iY"               select="($iBusTop + ($BLKD_BUS_ARROW_H * 10))"/>
+                       <xsl:with-param name="iText"    select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iBusName)]/@GROUP"/>
+                       <xsl:with-param name="iClass"   select="'iogrp_label'"/>
+               </xsl:call-template>
+          
+       </xsl:if>       
+               
+</xsl:template>
+
+       
+<xsl:template name="Draw_Proc2ProcBus">
+       
+       <xsl:param name="iBc_Y"         select="0"/>
+       <xsl:param name="iBusStd"       select="'_bstd_'"/>
+       <xsl:param name="iBusName"      select="'_p2pbus_'"/>
+       <xsl:param name="iBcLeft_X"     select="0"/>
+       <xsl:param name="iBcRght_X"     select="0"/>
+       <xsl:param name="iLeftBifType"  select="'_unk_'"/>
+       <xsl:param name="iRghtBifType"  select="'_unk_'"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="pr2pr_W_" select="($iBcRght_X - $iBcLeft_X)"/>
+
+       <xsl:variable name="leftArrow_">
+               <xsl:choose>
+                       <xsl:when test="((($iLeftBifType = 'INITIATOR') or ($iLeftBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
+                       <xsl:otherwise>BusArrowWest</xsl:otherwise> 
+               </xsl:choose>           
+       </xsl:variable>
+       
+       <xsl:variable name="rghtArrow_">
+               <xsl:choose>
+                       <xsl:when test="((($iRghtBifType = 'INITIATOR') or ($iRghtBifType = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
+                       <xsl:otherwise>BusArrowEast</xsl:otherwise> 
+               </xsl:choose>           
+       </xsl:variable>
+       
+       
+       <xsl:variable name="bus_Y_" select="($iBc_Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2))"/>
+       
+       <use  x="{$iBcLeft_X}"                     y="{$bus_Y_}"  xlink:href="#{$iBusStd}_{$leftArrow_}"/>      
+       <use  x="{$iBcRght_X - $BLKD_BUS_ARROW_W}" y="{$bus_Y_}"  xlink:href="#{$iBusStd}_{$rghtArrow_}"/>      
+       
+       <rect x="{$iBcLeft_X + $BLKD_BUS_ARROW_W}" 
+                 y="{$bus_Y_    + $BLKD_BUS_ARROW_G}"  
+                 width= "{$pr2pr_W_    -      (2 * $BLKD_BUS_ARROW_W)}" 
+                 height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
+       
+<!-- 
+               <text class="horizp2pbuslabel" 
+                         x="{$iBcLeft_X  + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4}"
+                         y="{($bus_Y_)}"><xsl:value-of select="$iBusName"/></text>
+                         
+               <text class="horizp2pbuslabel" 
+                         x="{$iBcRght_X - (string-length($iBusName) * 8)}"
+                         y="{($bus_Y_)}"><xsl:value-of select="$iBusName"/></text>
+-->    
+          
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="($iBcLeft_X  + $BLKD_BUS_ARROW_W + ceiling($BLKD_BUS_ARROW_W div 2) + ceiling($BLKD_BUS_ARROW_W div 4) + 4)"/>
+                       <xsl:with-param name="iY"               select="$bus_Y_"/>
+                       <xsl:with-param name="iText"    select="$iBusName"/>
+                       <xsl:with-param name="iClass"   select="'p2pbus_label'"/>
+               </xsl:call-template>    
+                               
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(iBcRght_X - (string-length($iBusName) * 8))"/>
+                       <xsl:with-param name="iY"               select="$bus_Y_"/>
+                       <xsl:with-param name="iText"    select="$iBusName"/>
+                       <xsl:with-param name="iClass"   select="'p2pbus_label'"/>
+               </xsl:call-template>                                    
+       
+</xsl:template>
+       
+       
+<xsl:template name="Draw_SplitConnBus">
+       
+       <xsl:param name="iBc_X"     select="0"/>
+       <xsl:param name="iBc_Y"     select="0"/>
+       <xsl:param name="iBc_Type"  select="'_unk_'"/>
+       <xsl:param name="iBc_Side"  select="'_unk_'"/>
+       <xsl:param name="iBusStd"   select="'_bstd_'"/>
+       <xsl:param name="iBusName"  select="'_p2pbus_'"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="connArrow_">
+               <xsl:choose>
+                       <xsl:when test="((($iBc_Type = 'INITIATOR') or ($iBc_Type = 'MASTER')) and ($iBusStd = 'FSL'))">BusArrowHInitiator</xsl:when>
+                       <xsl:otherwise>BusArrowEast</xsl:otherwise> 
+               </xsl:choose>           
+       </xsl:variable>
+       
+       <xsl:variable name="arrow_Y_" select="($iBc_Y + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_BUS_ARROW_H div 2))"/>
+       
+       <xsl:variable name="bus_X_">
+               <xsl:choose>
+                       <xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($iBc_X - ($BLKD_BUS_ARROW_W * 2))"/></xsl:when>
+                       <xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($iBc_X + $BLKD_BIFC_W + $BLKD_BUS_ARROW_W)"/></xsl:when>
+               </xsl:choose>           
+       </xsl:variable> 
+       
+<!--   
+       <use  x="{$bus_X_}"  y="{$arrow_Y_}"  xlink:href="#{$busStd}_BusArrowHInitiator"/>      
+-->    
+       
+       <xsl:variable name="arrow_X_">
+               <xsl:choose>
+                       <xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($iBc_X - $BLKD_BUS_ARROW_W)"/></xsl:when>
+                       <xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($iBc_X + $BLKD_BIFC_W)"/></xsl:when>
+               </xsl:choose>           
+       </xsl:variable> 
+       <xsl:choose>
+               <xsl:when test="(($iBusStd = 'FSL') and (($iBc_Type = 'MASTER') or ($iBc_Type = 'INITIATOR')))">
+                       <use  x="{$arrow_X_}"  y="{$arrow_Y_}"  xlink:href="#{$iBusStd}_{$connArrow_}"/>        
+                       <use  x="{$bus_X_}"    y="{$arrow_Y_}"  xlink:href="#{$iBusStd}_BusArrowHInitiator"/>   
+               </xsl:when>
+               <xsl:when test="(($iBc_Side = '1') and not($iBusStd = 'FSL') and (($iBc_Type = 'MASTER') or ($iBc_Type = 'INITIATOR')))">
+                       <use  x="{$arrow_X_ - $BLKD_BIFC_W}"  y="{$arrow_Y_}"  xlink:href="#{$iBusStd}_SplitBus_WEST"/>
+               </xsl:when>
+               <xsl:when test="(($iBc_Side = '1') and (($iBc_Type = 'SLAVE') or ($iBc_Type = 'TARGET') or ($iBc_Type = 'USER')))">
+                       <use  x="{$arrow_X_}"  y="{$arrow_Y_}"  xlink:href="#{$iBusStd}_SplitBus_EAST"/>
+               </xsl:when>
+               <xsl:otherwise>
+                       <use  x="{$arrow_X_}" y="{$arrow_Y_}" xlink:href="#{$iBusStd}_{$connArrow_}"/>  
+                       <use  x="{$bus_X_}"   y="{$arrow_Y_}" xlink:href="#{$iBusStd}_BusArrowHInitiator"/>     
+               </xsl:otherwise>
+       </xsl:choose>
+       
+       <xsl:variable name="text_X_">
+               <xsl:choose>
+                       <xsl:when test="$iBc_Side = '0'"><xsl:value-of select="($bus_X_ - $BLKD_BUS_ARROW_W - (string-length($iBusName) * 5))"/></xsl:when>
+                       <xsl:when test="$iBc_Side = '1'"><xsl:value-of select="($bus_X_ + $BLKD_BUS_ARROW_W)"/></xsl:when>
+               </xsl:choose>           
+       </xsl:variable> 
+               
+       
+<!-- 
+       <text class="horizp2pbuslabel" 
+                         x="{$text_X_}"
+                         y="{($arrow_Y_)}">
+                       <xsl:value-of select="$iBusName"/>
+       </text>
+-->    
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="$text_X_"/>
+                       <xsl:with-param name="iY"               select="$arrow_Y_"/>
+                       <xsl:with-param name="iText"    select="$iBusName"/>
+                       <xsl:with-param name="iClass"   select="'p2pbus_label'"/>
+               </xsl:call-template>
+       
+</xsl:template>
+       
+       
+<xsl:template name="Define_SharedBus"> 
+       
+       <xsl:param name="iBusStd"    select="'PLB46'"/>
+       
+       <xsl:variable name="sharedbus_w_"  select="($G_Total_DrawArea_W - ($BLKD_INNER_GAP * 2))"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="busStdColor_lt_">
+               <xsl:call-template name="F_BusStd2RGB_LT">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+        <g id="{$iBusStd}_SharedBus">
+               <use  x="0"                                   y="0"  xlink:href="#{$iBusStd}_BusArrowWest"/>    
+               <use  x="{$sharedbus_w_ - $BLKD_BUS_ARROW_W}" y="0"  xlink:href="#{$iBusStd}_BusArrowEast"/>    
+               
+               <rect x="{$BLKD_BUS_ARROW_W}" 
+                         y="{$BLKD_BUS_ARROW_G}"  
+                         width= "{$sharedbus_w_  - ($BLKD_BUS_ARROW_W * 2)}" 
+                         height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
+       </g>
+</xsl:template>
+
+       
+<xsl:template name="Define_SplitBusses"> 
+       
+       <xsl:param name="iBusStd"    select="'FSL'"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="bifc_r_" select="ceiling($BLKD_BIFC_W div 3)"/>
+       
+        <g id="{$iBusStd}_SplitBus_EAST">
+               <use  x="0"  y="0"    xlink:href="#{$iBusStd}_BusArrowWest"/>   
+               
+               <rect x="{$BLKD_BUS_ARROW_W}" 
+                         y="{$BLKD_BUS_ARROW_G}"  
+                         width= "{$BLKD_BIFC_W}" 
+                         height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
+                
+       </g>
+       
+       <xsl:variable name="splbus_w_" select="($BLKD_BUS_ARROW_W + $BLKD_BIFC_W + $BLKD_BIFC_Wi)"/>
+       
+        <g id="{$iBusStd}_SplitBus_WEST">
+               <use   x="0"   y="0"  xlink:href="#{$iBusStd}_SplitBus_EAST" transform="scale(-1,1) translate({$splbus_w_ * -1},0)"/>
+       </g>
+       
+        <g id="{$iBusStd}_SplitBus_OneWay">
+                
+               <rect x="0" 
+                         y="{$BLKD_BUS_ARROW_G}"  
+                         width= "{($BLKD_BUS_ARROW_W * 2)}" 
+                         height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$busStdColor_}"/>
+                
+               <rect x="{($BLKD_BUS_ARROW_W * 2)}"
+                         y="0"  
+                         width= "{$BLKD_BUS_ARROW_H}" 
+                         height="{$BLKD_BUS_ARROW_H}" style="stroke:none; fill:{$busStdColor_}"/>
+                
+       </g>
+</xsl:template>
+
+
+<xsl:template name="Define_SharedBus_Group"> 
+
+<!-- The Bridges go into the shared bus shape -->
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE">        
+       
+               <xsl:variable name="modInst_" select="@INSTANCE"/>
+               <xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
+               
+               <xsl:call-template name="Define_Peripheral"> 
+                       <xsl:with-param name="iModVori"  select="'normal'"/>
+                       <xsl:with-param name="iModInst"  select="$modInst_"/>
+                       <xsl:with-param name="iModType"  select="$modType_"/>
+               </xsl:call-template>
+       
+       </xsl:for-each>
+       
+<g id="group_sharedBusses">
+       
+       <!-- Draw the shared bus shapes first -->       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSSHAPES/MODULE">   
+               <xsl:variable name="instance_"  select="@INSTANCE"/>
+               
+               <xsl:variable name="busStd_"   select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $instance_)]/@BUSSTD"/>    
+               <xsl:variable name="busIndex_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $instance_)]/@BUS_INDEX"/> 
+               
+               <xsl:variable name="busY_"  select="($busIndex_ * $BLKD_SBS_LANE_H)"/>  
+               
+               <use  x="0"  y="{$busY_}"  xlink:href="#{$busStd_}_SharedBus"/> 
+               
+<!-- 
+               <text class="sharedbuslabel" 
+                         x="8"
+                         y="{$busY_ + $BLKD_BUS_ARROW_H + 10}">
+                       <xsl:value-of select="$instance_"/>
+               </text>
+-->            
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'8'"/>
+                       <xsl:with-param name="iY"               select="($busY_ + $BLKD_BUS_ARROW_H + 10)"/>
+                       <xsl:with-param name="iText"    select="$instance_"/>
+                       <xsl:with-param name="iClass"   select="'sharedbus_label'"/>
+               </xsl:call-template>                            
+       </xsl:for-each>
+       
+</g>   
+
+<g id="KEY_SharedBus">
+       <use  x="0"  y="0"  xlink:href="#KEY_BusArrowWest"/>    
+       <use  x="30" y="0"  xlink:href="#KEY_BusArrowEast"/>    
+        
+       <xsl:variable name="key_col_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="'KEY'"/>
+               </xsl:call-template>    
+       </xsl:variable>
+               
+       <rect x="{$BLKD_BUS_ARROW_W}" 
+                 y="{$BLKD_BUS_ARROW_G}"  
+                 width= "{30 - $BLKD_BUS_ARROW_W}" 
+                 height="{$BLKD_BUS_ARROW_H - (2 * $BLKD_BUS_ARROW_G)}" style="stroke:none; fill:{$key_col_}"/>
+</g>
+       
+</xsl:template>
+       
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Functions.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Functions.xsl
new file mode 100644 (file)
index 0000000..b91a579
--- /dev/null
@@ -0,0 +1,1110 @@
+<?xml version="1.0" standalone="no"?>
+
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:math="http://exslt.org/math"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink"
+           extension-element-prefixes="math">
+           
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+       
+<xsl:template name="F_Calc_Proc_Height">
+       <xsl:param name="iProcInst"  select="_processor_"/>
+       
+       <xsl:variable name="tot_bifs_h_">
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H)">0</xsl:if>
+               
+               <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H">
+                       <xsl:variable name="bifs_h_" select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $iProcInst)]/@BIFS_H)"/>
+                       <xsl:value-of select="(($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_H) * $bifs_h_)"/>       
+               </xsl:if>
+       </xsl:variable> 
+       
+       <xsl:value-of select="(($BLKD_MOD_LANE_H * 2) + $tot_bifs_h_ + ($BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_H))"/>    
+</xsl:template>
+
+<xsl:template name="F_Calc_Max_Proc_Height">
+
+       <!-- Store the heights in a variable -->        
+       <xsl:variable name="proc_heights_">
+       
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE)">
+                       <PROC HEIGHT="0"/>
+               </xsl:if>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE">
+                       <xsl:variable name="procInst_" select="@INSTANCE"/> 
+                       <xsl:variable name="proc_height_">
+                               <xsl:call-template name="F_Calc_Proc_Height">   
+                                       <xsl:with-param name="iProcInst" select="$procInst_"/>
+                               </xsl:call-template>    
+                       </xsl:variable>
+                       
+<!--                   
+                       <xsl:message>Found Proc height as <xsl:value-of select="$proc_height_"/></xsl:message>
+-->                    
+                       <PROC HEIGHT="{$proc_height_}"/>
+               </xsl:for-each>
+       </xsl:variable>
+       
+       <!-- Return the max of them --> 
+<!--   
+       <xsl:message>Found Proc ax as <xsl:value-of select="math:max(exsl:node-set($proc_heights_)/PROC/@HEIGHT)"/></xsl:message>
+-->    
+
+       <xsl:value-of select="math:max(exsl:node-set($proc_heights_)/PROC/@HEIGHT)"/>
+</xsl:template>
+
+
+<xsl:template name="F_Calc_Proc_MemoryUnits_Height">
+       <xsl:param name="iProcInst"  select="_processor_"/>
+       
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and (@MODCLASS = 'MEMORY_UNIT'))])">0</xsl:if>
+       
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and (@MODCLASS='MEMORY_UNIT'))]">
+               
+       <xsl:variable name="peri_gap_">
+               <xsl:choose>
+                       <xsl:when test="not(@CSTACK_INDEX)">
+                               <xsl:value-of select="$BLKD_BIF_H"/>
+                       </xsl:when>
+                       <xsl:otherwise>0</xsl:otherwise>
+               </xsl:choose>   
+       </xsl:variable> 
+                       
+               
+               <!-- Store the all memory unit heights in a variable -->
+               <xsl:variable name="memU_heights_">
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and (@MODCLASS='MEMORY_UNIT'))]">
+<!--                           
+                               <xsl:variable name="unitId_" select="@PSTACK_MODS_Y"/>
+-->                            
+                               <xsl:variable name="unitHeight_">
+                                       <xsl:call-template name="F_Calc_MemoryUnit_Height">     
+                                               <xsl:with-param name="iShapeId" select="@SHAPE_ID"/>
+                                       </xsl:call-template>    
+                               </xsl:variable>
+                               
+                               <MEM_UNIT HEIGHT="{$unitHeight_ + $peri_gap_}"/>
+                       </xsl:for-each>
+               </xsl:variable>
+               
+               <xsl:value-of select="sum(exsl:node-set($memU_heights_)/MEM_UNIT/@HEIGHT)"/>
+       </xsl:if>
+</xsl:template>
+       
+
+<xsl:template name="F_Calc_Proc_Peripherals_Height">
+       <xsl:param name="iProcInst"  select="_processor_"/>
+       
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and not(@MODCLASS = 'MEMORY_UNIT'))])">0</xsl:if>
+       
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and not(@MODCLASS='MEMORY_UNIT'))]">
+       
+               <xsl:variable name="peri_gap_">
+                       <xsl:if test="@CSTACK_INDEX">
+                               <xsl:value-of select="$BLKD_BIF_H"/>
+                       </xsl:if>
+                       <xsl:if test="not(@IS_CSTACK)">0</xsl:if>
+               </xsl:variable>
+       
+               <!-- Store the all peripheral heights in a variable -->
+               <xsl:variable name="peri_heights_">
+                       
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@PROCESSOR = $iProcInst) and not(@MODCLASS='MEMORY_UNIT'))]">
+                               <xsl:for-each select="MODULE">
+<!--                                   
+                                       <xsl:message><xsl:value-of select="@INSTANCE"/></xsl:message>           
+-->                                    
+                                       <xsl:variable name="peri_height_">
+                                               <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                                       <xsl:with-param name="iShapeInst" select="@INSTANCE"/>
+                                               </xsl:call-template>    
+                                       </xsl:variable>
+                                       <PERI HEIGHT="{$peri_height_ + $peri_gap_}"/>
+                               </xsl:for-each>         
+                       </xsl:for-each>
+               </xsl:variable>
+               
+               <xsl:value-of select="sum(exsl:node-set($peri_heights_)/PERI/@HEIGHT)"/>
+       </xsl:if>
+</xsl:template>
+       
+       
+<xsl:template name="F_Calc_Space_AbvSbs_Height">
+       <xsl:param name="iStackToEast"  select="'NONE'"/>
+       <xsl:param name="iStackToWest"  select="'NONE'"/>
+       
+       
+       <xsl:variable name = "stackAbvSbs_West_H_">
+               <xsl:choose>
+                       <xsl:when test="(($iStackToEast = '0')   and     ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="(($iStackToEast = 'NONE') and not($iStackToWest = 'NONE'))">
+                               <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                       <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                               </xsl:call-template>
+                       </xsl:when>
+                       <xsl:when test="(not($iStackToEast = '0') and ($iStackToWest = 'NONE'))">
+                               <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                       <xsl:with-param name="iStackIdx"  select="($iStackToEast - 1)"/>
+                               </xsl:call-template>
+                       </xsl:when>
+                       <xsl:otherwise>0</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name = "stackAbvSbs_East_H_">
+               <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                       <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+               </xsl:call-template>
+       </xsl:variable>
+       
+       <xsl:variable name="stackAbvSbs_heights_">
+               <STACK HEIGHT="{$stackAbvSbs_East_H_}"/>
+               <STACK HEIGHT="{$stackAbvSbs_West_H_}"/>
+       </xsl:variable>
+       
+       <xsl:value-of select="math:max(exsl:node-set($stackAbvSbs_heights_)/STACK/@HEIGHT)"/>
+</xsl:template>
+
+       
+<xsl:template name="F_Calc_Space_BlwSbs_Height">
+       <xsl:param name="iStackToEast"  select="'NONE'"/>
+       <xsl:param name="iStackToWest"  select="'NONE'"/>
+               
+       <xsl:variable name = "stackBlwSbs_West_H_">
+               <xsl:choose>
+                       <xsl:when test="(($iStackToEast = '0')    and    ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="(($iStackToEast = 'NONE') and not($iStackToWest = 'NONE'))">
+                               <xsl:call-template name="F_Calc_Stack_BlwSbs_Height">
+                                       <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                               </xsl:call-template>
+                       </xsl:when>
+                       <xsl:when test="(not($iStackToEast = '0') and    ($iStackToWest = 'NONE'))">
+                               <xsl:call-template name="F_Calc_Stack_BlwSbs_Height">
+                                       <xsl:with-param name="iStackIdx"  select="($iStackToEast - 1)"/>
+                               </xsl:call-template>
+                       </xsl:when>
+               </xsl:choose>
+       </xsl:variable>
+       
+       
+       <xsl:variable name = "stackBlwSbs_East_H_">
+               <xsl:call-template name="F_Calc_Stack_BlwSbs_Height">
+                       <xsl:with-param name="iStackIdx"  select="$iStackToEast"/>
+               </xsl:call-template>
+       </xsl:variable>
+       
+       <xsl:variable name="stackBlwSbs_heights_">
+               <STACK HEIGHT="{$stackBlwSbs_East_H_}"/>
+               <STACK HEIGHT="{$stackBlwSbs_West_H_}"/>
+       </xsl:variable>
+       
+       <xsl:value-of select="math:max(exsl:node-set($stackBlwSbs_heights_)/STACK/@HEIGHT)"/>
+</xsl:template>
+       
+
+       
+<xsl:template name="F_Calc_Stack_AbvSbs_Height">
+       <xsl:param name="iStackIdx"  select="100"/>
+<!--   
+       <xsl:message>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</xsl:message>
+-->    
+       
+       <xsl:if test="(not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]) and
+                                  not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $iStackIdx)]))"><xsl:value-of select="$BLKD_PROC2SBS_GAP"/></xsl:if>
+       
+       <xsl:if test="(($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]) or
+                                  ($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[      (@STACK_HORIZ_INDEX = $iStackIdx)]))">
+               
+<!--                   
+               <xsl:variable name="peri_gap_">
+                       <xsl:value-of select="$BLKD_BIF_H"/>
+                       <xsl:choose>
+                               <xsl:when test="(@SHAPE_VERTI_INDEX)">
+                               </xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable> 
+-->                    
+                       
+<!--           
+               <xsl:message>The gap is <xsl:value-of select="$peri_gap_"/></xsl:message>
+               <xsl:message>The gap is <xsl:value-of select="$peri_gap_"/></xsl:message>
+               <xsl:message>================================</xsl:message>
+               <xsl:message>================================</xsl:message>
+               <xsl:message>This is above <xsl:value-of select="@INSTANCE"/></xsl:message>
+               <xsl:message><xsl:value-of select="@INSTANCE"/> : <xsl:value-of select="$peri_height_"/></xsl:message>
+-->    
+       
+       
+               <!-- Store the all peripheral heights in a variable -->
+               <xsl:variable name="peri_heights_">
+                       
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and not(@MODCLASS = 'MEMORY_UNIT') and (@IS_ABVSBS))]">
+                               <xsl:for-each select="MODULE">
+<!--                                   
+                                       <xsl:message>This is above <xsl:value-of select="@INSTANCE"/></xsl:message>
+-->                                    
+                                       
+                                       <xsl:variable name="peri_height_">
+<!--                                           
+                                               <xsl:call-template name="F_Calc_Shape_Height">  
+                                                       <xsl:with-param name="shapeId" select="@SHAPE_ID"/>
+                                               </xsl:call-template>    
+-->     
+       
+                                               <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                                       <xsl:with-param name="iShapeInst" select="@INSTANCE"/>
+                                               </xsl:call-template>    
+                                       </xsl:variable>
+                                       
+                                       <PERI HEIGHT="{$peri_height_ + $BLKD_BIF_H}"/>
+                               </xsl:for-each>
+                       </xsl:for-each>
+                       
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@MODCLASS = 'MEMORY_UNIT') and (@IS_ABVSBS))]">
+                       
+                               <xsl:variable name="memu_height_">
+                                       <xsl:call-template name="F_Calc_MemoryUnit_Height">     
+                                               <xsl:with-param name="iShapeId" select="@SHAPE_ID"/>
+                                       </xsl:call-template>    
+                               </xsl:variable>
+                       
+<!--                           
+                               <xsl:message>Mem_Unit : <xsl:value-of select="@SHAPE_ID"/> : <xsl:value-of select="$memu_height_ + $peri_gap_"/></xsl:message>
+-->                            
+                               <PERI HEIGHT="{$memu_height_ + $BLKD_BIF_H}"/>
+                       
+                       </xsl:for-each>
+                       
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_ABVSBS))]">
+                                       
+                               <xsl:variable name="proc_height_">
+                                       <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                               <xsl:with-param name="iShapeInst" select="@INSTANCE"/>
+                                       </xsl:call-template>    
+                               </xsl:variable>
+                               
+<!--                           
+               <xsl:message>===================================</xsl:message>
+               <xsl:message>Processor : <xsl:value-of select="@INSTANCE"/> : <xsl:value-of select="$peri_height_ + $peri_gap_"/></xsl:message>
+                               <PERI HEIGHT="{$proc_height_ + $BLKD_PROC2SBS_GAP }"/>
+-->                                    
+                               <PERI HEIGHT="{$proc_height_ + $BLKD_BIF_H}"/>
+                               
+                       </xsl:for-each>
+               
+               </xsl:variable>
+               
+<!--           
+       <xsl:message><xsl:value-of select="@INSTANCE"/> : <xsl:value-of select="$peri_height_ + $peri_gap_"/></xsl:message>
+       <xsl:message>================================</xsl:message>
+-->
+               
+<!--           
+       <xsl:message>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</xsl:message>
+-->            
+               <xsl:value-of select="sum(exsl:node-set($peri_heights_)/PERI/@HEIGHT)"/>
+       </xsl:if>
+       
+</xsl:template>
+       
+<xsl:template name="F_Calc_Stack_BlwSbs_Height">
+       <xsl:param name="iStackIdx"  select="100"/>
+       
+               <!-- Store the all peripheral heights in a variable -->
+               <xsl:variable name="stack_heights_">
+                       
+                       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_BLWSBS))])">
+                               <STACKSHAPE HEIGHT="0"/>
+                       </xsl:if>
+                       
+                       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@IS_BLWSBS))]">
+       
+                               <xsl:variable name="peri_gap_">
+                                       <xsl:choose>
+                                               <xsl:when test="(@SHAPE_VERTI_INDEX)">
+                                                       <xsl:value-of select="$BLKD_BIF_H"/>
+                                               </xsl:when>
+                                               <xsl:otherwise>0</xsl:otherwise>
+                                       </xsl:choose>   
+                               </xsl:variable> 
+                               
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and not(@MODCLASS = 'MEMORY_UNIT') and (@IS_BLWSBS))]">
+                                       <xsl:for-each select="MODULE">
+<!--                                   
+                                       <xsl:message>This is below <xsl:value-of select="@INSTANCE"/></xsl:message>
+-->    
+                                               <xsl:variable name="peri_height_">
+                                                       <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                                               <xsl:with-param name="iShapeInst" select="@INSTANCE"/>
+                                                       </xsl:call-template>    
+                                               </xsl:variable>
+                                               
+                                               <STACKSHAPE HEIGHT="{$peri_height_ + $peri_gap_}"/>
+                                       </xsl:for-each>
+                               </xsl:for-each>
+               
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@MODCLASS = 'MEMORY_UNIT') and (@IS_BLWSBS))]">
+                       
+                                       <xsl:variable name="memu_height_">
+                                               <xsl:call-template name="F_Calc_MemoryUnit_Height">     
+                                                       <xsl:with-param name="iShapeId" select="@SHAPE_ID"/>
+                                               </xsl:call-template>    
+                                       </xsl:variable>
+                       
+                                       <STACKSHAPE HEIGHT="{$memu_height_ + $peri_gap_}"/>
+                               
+<!--                           
+                               <xsl:message>Mem_Unit : <xsl:value-of select="@SHAPE_ID"/> : <xsl:value-of select="$memu_height_ + $peri_gap_"/></xsl:message>
+-->    
+                       
+                       </xsl:for-each>
+               </xsl:if>
+                       
+               <xsl:variable name="sbsBuckets_H_">
+                       <xsl:call-template name="F_Calc_Stack_SbsBuckets_Height">
+                               <xsl:with-param name="iStackIdx" select="$iStackIdx"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+                       
+                       <STACKSHAPE HEIGHT="{$sbsBuckets_H_}"/>
+<!--                   
+                       <xsl:message>Sbs Bucket H : <xsl:value-of select="$sbsBuckets_H_"/></xsl:message>
+-->
+               </xsl:variable>
+               
+<!--           
+               <xsl:message>vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv</xsl:message>
+-->            
+               <xsl:value-of select="sum(exsl:node-set($stack_heights_)/STACKSHAPE/@HEIGHT)"/>
+       
+</xsl:template>
+       
+
+<xsl:template name="F_Calc_Stack_SbsBuckets_Height">
+       <xsl:param name="iStackIdx"  select="1000"/>
+       
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)])">0</xsl:if>
+       
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)]">
+       
+               <!-- Store the all buckets heights in a variable -->
+               <xsl:variable name="bkt_heights_">
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)]">
+               
+                               <xsl:variable name="bkt_height_">
+                                       <xsl:call-template name="F_Calc_SbsBucket_Height">      
+                                               <xsl:with-param name="iBucketId" select="@BUS_INDEX"/>
+                                       </xsl:call-template>    
+                               </xsl:variable>
+<!--                           
+                               <xsl:message>Found shared buckets height as <xsl:value-of select="$bkt_height_"/></xsl:message>
+-->                            
+                               <BKT HEIGHT="{$bkt_height_ + $BLKD_BIF_H}"/>
+                       </xsl:for-each>
+               </xsl:variable>
+               
+               <xsl:value-of select="sum(exsl:node-set($bkt_heights_)/BKT/@HEIGHT)"/>
+       </xsl:if>
+</xsl:template>
+
+       
+<xsl:template name="F_Calc_Max_Stack_BlwSbs_Height">
+
+       <!-- Store the heights in a variable -->        
+       <xsl:variable name="blwSbs_heights_">
+               
+               <!-- Default, in case there are no modules or ports -->         
+               <BLW HEIGHT="0"/>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@EAST &lt; $G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH)]">
+       
+<!--                   
+                       <xsl:message>Found a space of index <xsl:value-of select="@EAST"/></xsl:message>
+-->    
+                       
+                       <xsl:variable name="stack_height_">
+                               <xsl:call-template name="F_Calc_Stack_BlwSbs_Height">
+                                       <xsl:with-param name="iStackIdx"  select="@EAST"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                       
+                       
+                       <BLW HEIGHT="{$stack_height_}"/>
+                       
+               </xsl:for-each>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@WEST = ($G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH -1))]">
+                       
+<!--                   
+                       <xsl:message>Last stack of index <xsl:value-of select="@WEST"/></xsl:message>
+-->                    
+                       
+                       <xsl:variable name="stack_height_">
+                               <xsl:call-template name="F_Calc_Stack_BlwSbs_Height">
+                                       <xsl:with-param name="iStackIdx"  select="@WEST"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                       
+                       
+                       <BLW HEIGHT="{$stack_height_}"/>
+                       
+               </xsl:for-each>
+               
+               
+       </xsl:variable>
+       
+<!--   
+       <xsl:message>Found Blw Sbs max as <xsl:value-of select="math:max(exsl:node-set($blwSbs_heights_)/BLW/@HEIGHT)"/></xsl:message>
+-->    
+       <!-- Return the max of them --> 
+       <xsl:value-of select="math:max(exsl:node-set($blwSbs_heights_)/BLW/@HEIGHT)"/>
+</xsl:template>
+       
+       
+<xsl:template name="F_Calc_Max_Stack_AbvSbs_Height">
+
+       <!-- Store the heights in a variable -->        
+       <xsl:variable name="abvSbs_heights_">
+               
+               <!-- Default, in case there are no modules or ports -->         
+               <ABV HEIGHT="0"/>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@EAST &lt; $G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH)]">
+                       
+<!--                   
+                       <xsl:message>Found a space of index <xsl:value-of select="@EAST"/></xsl:message>
+-->    
+                       
+                       <xsl:variable name="stack_height_">
+                               <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                                       <xsl:with-param name="iStackIdx"  select="@EAST"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                       
+<!--                   
+                       <xsl:message>Found stack of width <xsl:value-of select="$stack_width_"/></xsl:message>
+                       <xsl:message>==============================</xsl:message>
+-->                    
+                       
+                       <ABV HEIGHT="{$stack_height_}"/>
+                       
+               </xsl:for-each>
+               
+               
+       </xsl:variable>
+       
+<!--   
+       <xsl:message>Found Blw Sbs max as <xsl:value-of select="math:max(exsl:node-set($blwSbs_heights_)/BLW/@HEIGHT)"/></xsl:message>
+-->    
+       <!-- Return the max of them --> 
+       <xsl:value-of select="math:max(exsl:node-set($abvSbs_heights_)/ABV/@HEIGHT)"/>
+</xsl:template>
+       
+       
+<xsl:template name="F_Calc_MultiProc_Stack_Height">
+       <xsl:param name="iMPStack_Blkd_X"  select="100"/>
+       
+               <xsl:variable name="mpStk_ShpHeights_">
+                       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@HAS_MULTIPROCCONNS) and (@PSTACK_BLKD_X = $iMPStack_Blkd_X))])">
+                               <MPSHAPE HEIGHT="0"/>
+                       </xsl:if>
+                       
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@HAS_MULTIPROCCONNS) and (@PSTACK_BLKD_X = $iMPStack_Blkd_X))]">
+                               <xsl:variable name="shpClass_" select="@MODCLASS"/> 
+                               <xsl:variable name="shpHeight_">
+                                       <xsl:choose>
+                                               <xsl:when test="$shpClass_ = 'PERIPHERAL'">
+<!--                                                   
+                                                       <xsl:message>Found Multi Proc Peripheral</xsl:message> 
+-->    
+                                                       <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                                               <xsl:with-param name="iShapeInst" select="MODULE/@INSTANCE"/>
+                                                       </xsl:call-template>    
+                                               </xsl:when>
+                                               <xsl:when test="$shpClass_ = 'MEMORY_UNIT'">
+<!--                                                   
+                                                       <xsl:message>Found Multi Proc Memory Unit</xsl:message> 
+-->    
+                                                       <xsl:call-template name="F_Calc_MemoryUnit_Height">     
+                                                               <xsl:with-param name="iShapeIndex"  select="@CSHAPE_INDEX"/>
+                                                       </xsl:call-template>    
+                                               </xsl:when>
+                                               <xsl:otherwise>0</xsl:otherwise>
+                                       </xsl:choose>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>Found <xsl:value-of select="$shpHeight_"/></xsl:message>
+-->                            
+                               
+                               <MPSHAPE HEIGHT="{$shpHeight_}"/>
+                       </xsl:for-each>
+       </xsl:variable>
+       
+<!--   
+       <xsl:message>Found stack of height <xsl:value-of select="sum(exsl:node-set($mpStk_ShpHeights_)/MPSHAPE/@HEIGHT)"/></xsl:message>
+-->    
+       
+       <xsl:value-of select="sum(exsl:node-set($mpStk_ShpHeights_)/MPSHAPE/@HEIGHT)"/>
+</xsl:template>
+
+<xsl:template name="F_Calc_Max_MultiProc_Stack_Height">
+       
+       <!-- Store the heights in a variable -->        
+       
+       <xsl:variable name="mpStks_Heights_">
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE)">
+                       <MPSTK HEIGHT="0"/>
+               </xsl:if>
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@PSTACK_BLKD_X)]">
+                       <xsl:variable name="mpstack_height_">
+                               <xsl:call-template name="F_Calc_MultiProc_Stack_Height">
+                                       <xsl:with-param name="iMPStack_Blkd_X" select="(@PSTACK_BLKD_X + 1)"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                       
+<!--                   
+                       <xsl:message>Found <xsl:value-of select="$mpstack_height_"/></xsl:message>
+-->                    
+                       <MPSTK HEIGHT="{$mpstack_height_}"/>
+               </xsl:for-each>
+               
+       </xsl:variable>
+
+               <!-- Return the max of them --> 
+       <xsl:value-of select="math:max(exsl:node-set($mpStks_Heights_)/MPSTK/@HEIGHT)"/>
+       
+</xsl:template>
+
+
+
+<xsl:template name="F_Calc_Stack_Shape_Y">
+       
+       <xsl:param name="iHorizIdx"  select="100"/>
+       <xsl:param name="iVertiIdx"  select="100"/>
+       
+       
+<!--   
+       <xsl:param name="sbsGap"    select="0"/>
+       <xsl:variable name="numSBSs_"     select="count($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSSHAPES/MODULE)"/>       
+       <xsl:variable name="sbs_LANE_H_"    select="($numSBSs_ * $BLKD_SBS_LANE_H)"/>
+       <xsl:variable name="sbsGap_"   select="($BLKD_PROC2SBS_GAP + $sbs_LANE_H_)"/>
+-->    
+       
+       <xsl:variable name="sbsGap_" select="((count($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSSHAPES/MODULE) * $BLKD_SBS_LANE_H) + $BLKD_PROC2SBS_GAP)"/>        
+       
+       <xsl:if test="(not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))]) and  
+                          not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(  (@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))]) and
+                          not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(     (@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))]))">0</xsl:if>
+                          
+                           
+<!-- 
+       <xsl:if test="(not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))]) and  
+                          not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(  (@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))]) and
+                          not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(     (@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))]))">
+               <xsl:message>Something is missing </xsl:message>                           
+       </xsl:if>
+-->    
+       
+       <xsl:if test="(($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))])   or  
+                          ($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(  (@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))])   or
+                          ($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(     (@STACK_HORIZ_INDEX = $iHorizIdx) and ((@SHAPE_VERTI_INDEX = $iVertiIdx) or ($iVertiIdx = 100)))]))">
+               <!-- Store the spaces above this one in a variable -->
+               <xsl:variable name="spaces_above_">
+               
+                       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX &lt; $iVertiIdx))])">
+                               <SPACE HEIGHT="0"/>
+                       </xsl:if>
+                       
+                       <!-- Store the height of all peripherals and memory units above this one-->
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx)  and (@SHAPE_VERTI_INDEX &lt; $iVertiIdx))]">
+                               
+                               <xsl:if test="not(@MODCLASS='MEMORY_UNIT')">    
+                                       <xsl:variable name="peri_height_">
+                                               <xsl:call-template name="F_Calc_Shape_Height">  
+                                                       <xsl:with-param name="iShapeId" select="@SHAPE_ID"/>
+                                               </xsl:call-template>    
+                                       </xsl:variable>
+<!--                                   
+                                       <xsl:message>Found peri height <xsl:value-of select="$peri_height_"/></xsl:message>
+-->    
+                                       <SPACE HEIGHT="{$peri_height_ + $BLKD_BIF_H}"/>
+                               </xsl:if>
+                               
+                               <xsl:if test="(@MODCLASS='MEMORY_UNIT')">       
+                                       <xsl:variable name="memu_height_">
+                                               <xsl:call-template name="F_Calc_MemoryUnit_Height">     
+                                                       <xsl:with-param name="iShapeId" select="@SHAPE_ID"/>
+                                               </xsl:call-template>    
+                                       </xsl:variable>
+<!--                                   
+                                       <xsl:message>Found unit height <xsl:value-of select="$memu_height_"/></xsl:message>
+-->                                    
+                                       <SPACE HEIGHT="{$memu_height_ + $BLKD_BIF_H}"/>
+                               </xsl:if>
+                               
+                       </xsl:for-each>
+                       
+                       <!-- Store the height of all the processors above this one-->
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[((@STACK_HORIZ_INDEX = $iHorizIdx)  and (@SHAPE_VERTI_INDEX &lt; $iVertiIdx))]">
+                               <xsl:variable name="proc_height_">
+                                               <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                                       <xsl:with-param name="iShapeInst" select="@INSTANCE"/>
+                                               </xsl:call-template>    
+                               </xsl:variable>
+                               
+<!-- 
+                                       <xsl:message>Found Proc height <xsl:value-of select="$proc_height_ + $BLKD_BIF_H"/></xsl:message>
+-->                                    
+                               <SPACE HEIGHT="{$proc_height_ + $BLKD_BIF_H}"/>
+                       </xsl:for-each>
+                       
+                       <!-- If its a peripheral that is below the shared busses, or its a shared bus bucket -->
+                       <!-- add the height of the shared busses and the processor.                           -->
+                       <xsl:if  test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))]/@IS_BLWSBS)">
+                               <SPACE HEIGHT="{$sbsGap_}"/>
+                       </xsl:if>
+                       <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[((@STACK_HORIZ_INDEX = $iHorizIdx) and (@SHAPE_VERTI_INDEX = $iVertiIdx))])">
+                               <SPACE HEIGHT="{$sbsGap_}"/>
+                       </xsl:if>
+                       
+                       <!-- Store the height of all shared bus buckets above this one-->
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[((@STACK_HORIZ_INDEX = $iHorizIdx)  and (@SHAPE_VERTI_INDEX &lt; $iVertiIdx))]">
+                               <xsl:variable name="bkt_height_">
+                                       <xsl:call-template name="F_Calc_SbsBucket_Height">
+                                               <xsl:with-param name="iBucketId" select="@BUS_INDEX"/>
+                                       </xsl:call-template>
+                               </xsl:variable>
+                               
+<!-- 
+                                       <xsl:message>Found bucket height <xsl:value-of select="$bkt_height_ + $BLKD_BIF_H"/></xsl:message>
+-->                                    
+                               
+                               <SPACE HEIGHT="{$bkt_height_ + $BLKD_BIF_H}"/>
+                       </xsl:for-each>
+                       
+               </xsl:variable>
+               
+               <xsl:value-of select="sum(exsl:node-set($spaces_above_)/SPACE/@HEIGHT)"/>
+       </xsl:if>
+       
+</xsl:template>
+       
+       
+<xsl:template name="F_Calc_Max_BusConnLane_BifY">
+       
+       <xsl:param name="iBusName" select="'_busname_'"/>
+       
+       <!-- Store the heights in a variable -->        
+       <xsl:variable name="busConnYs_">
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE/BUSCONN)">
+                       <BUSCONNY HEIGHT="0"/>
+               </xsl:if>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE[(@BUSNAME = $iBusName)]/BUSCONN">
+                       
+                       <xsl:variable name="peri_cstk_y_">
+                               <xsl:call-template name="F_Calc_CStackShapesAbv_Height">
+                                       <xsl:with-param name="iCStackIndex"  select="../@CSTACK_INDEX"/>
+                                       <xsl:with-param name="ICStackModY"   select="@CSTACK_MODS_Y"/>
+                               </xsl:call-template>    
+                       </xsl:variable> 
+                               
+                               <xsl:variable name="peri_bif_dy_">
+                                       <xsl:value-of select="(($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_H)  * @BIF_Y)"/>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="peri_bc_y_">
+                                       <xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_H + $peri_bif_dy_ + ceiling($BLKD_BIF_H div 2)) - ceiling($BLKD_BIFC_H div 2)"/>
+                               </xsl:variable>
+                       
+<!--                   
+                       <xsl:message>Found a busconn lane</xsl:message>
+-->                    
+                       <BUSCONNY HEIGHT="{$peri_cstk_y_ + $peri_bif_dy_ + $peri_bc_y_}"/>
+               </xsl:for-each>
+               
+       </xsl:variable>
+
+               <!-- Return the max of them --> 
+       <xsl:value-of select="math:max(exsl:node-set($busConnYs_)/BUSCONNY/@HEIGHT)"/>
+       
+</xsl:template>
+       
+       
+<xsl:template name="F_Calc_Min_BusConnLane_BifY">
+       
+       <xsl:param name="iBusName" select="'_busname_'"/>
+       
+       <!-- Store the heights in a variable -->        
+       <xsl:variable name="busConnYs_">
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE/BUSCONN)">
+                       <BUSCONNY HEIGHT="0"/>
+               </xsl:if>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/BUSCONNS/BUSCONNLANE[(@BUSNAME = $iBusName)]/BUSCONN">
+                       
+                       <xsl:variable name="peri_cstk_y_">
+                               <xsl:call-template name="F_Calc_CStackShapesAbv_Height">
+                                       <xsl:with-param name="iCStackIndex"  select="../@CSTACK_INDEX"/>
+                                       <xsl:with-param name="iCStackModY"   select="@CSTACK_MODS_Y"/>
+                               </xsl:call-template>    
+                       </xsl:variable> 
+                               
+                               <xsl:variable name="peri_bif_dy_">
+                                       <xsl:value-of select="(($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_H)  * @BIF_Y)"/>
+                               </xsl:variable>
+                               
+                               <xsl:variable name="peri_bc_y_">
+                                       <xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_H + $peri_bif_dy_ + ceiling($BLKD_BIF_H div 2)) - ceiling($BLKD_BIFC_H div 2)"/>
+                               </xsl:variable>
+                       
+<!--                   
+                       <xsl:message>Found a busconn lane</xsl:message>
+-->                    
+                       <BUSCONNY HEIGHT="{$peri_cstk_y_ + $peri_bc_y_}"/>
+               </xsl:for-each>
+               
+       </xsl:variable>
+
+               <!-- Return the min of them --> 
+       <xsl:value-of select="math:min(exsl:node-set($busConnYs_)/BUSCONNY/@HEIGHT)"/>
+       
+</xsl:template>
+       
+<xsl:template name="F_Calc_Stack_Height">
+       <xsl:param name="iStackIdx"  select="100"/>
+       
+<!--  
+       <xsl:message>Calculating height for Stack Index <xsl:value-of select="$iStackIdx"/></xsl:message>
+-->    
+       
+       
+       <xsl:variable name="stack_height_">
+               <!-- if this is called with no vert index of a shape 
+                        it defaults to the total height of the stack -->
+               <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                       <xsl:with-param name="iHorizIdx"  select="$iStackIdx"/>
+               </xsl:call-template>
+       </xsl:variable>
+       
+<!-- 
+       <xsl:message>Calculated height for Stack as <xsl:value-of select="$stack_height_"/></xsl:message>
+-->    
+       <xsl:value-of select="$stack_height_"/>
+</xsl:template>
+       
+<!--   
+-->    
+       
+       
+<xsl:template name="F_Calc_Stack_Width">
+       <xsl:param name="iStackIdx"  select="100"/>
+       
+<!--   
+       <xsl:message>=============Stack Idx <xsl:value-of select="$iStackIdx"/>====</xsl:message>                       
+-->    
+       <xsl:variable name="shape_widths_">     
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[@STACK_HORIZ_INDEX = $iStackIdx])">
+                       <SHAPE WIDTH="0"/>
+               </xsl:if>
+                       
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[@STACK_HORIZ_INDEX = $iStackIdx])">
+                       <SHAPE WIDTH="0"/>
+               </xsl:if>
+                       
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $iStackIdx)]">
+<!--                   
+                       <xsl:variable name="proc_w_">
+                               <xsl:value-of select="$BLKD_MOD_W"/>
+                       </xsl:variable>
+                       <xsl:message>Found processor of width <xsl:value-of select="$proc_w_"/></xsl:message>
+-->    
+                       <SHAPE WIDTH="{$BLKD_MOD_W}"/>
+               </xsl:for-each>
+                       
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@STACK_HORIZ_INDEX = $iStackIdx)]">
+                               
+                       <xsl:variable name="shpClass_" select="@MODCLASS"/> 
+                       <xsl:variable name="shape_w_">
+                               <xsl:choose>
+                                               
+                                               <xsl:when test="$shpClass_ = 'PERIPHERAL'">
+                                                       <xsl:value-of select="$BLKD_MOD_W"/>
+                                               </xsl:when>
+                                               
+                                               <xsl:when test="$shpClass_ = 'MEMORY_UNIT'">
+                                                       <xsl:value-of select="($BLKD_MOD_W * @MODS_W)"/>
+                                               </xsl:when>
+                                               
+                                               <xsl:otherwise>0</xsl:otherwise>
+                                               
+                                       </xsl:choose>
+                               </xsl:variable>
+                               
+<!--           
+                       <xsl:message>Found shape width <xsl:value-of select="$shape_w_"/></xsl:message>
+-->                            
+                               
+                       <SHAPE WIDTH="{$shape_w_}"/>
+               </xsl:for-each>
+                       
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)]">
+                       <xsl:variable name="bucket_w_">
+                                 <xsl:value-of select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/>
+                       </xsl:variable>
+                       
+<!--                           
+                       <xsl:message>Found bucket of width <xsl:value-of select="$bucket_w_"/></xsl:message>
+-->                            
+                       <SHAPE WIDTH="{$bucket_w_}"/>
+               </xsl:for-each>
+                       
+       </xsl:variable>
+       
+       <xsl:value-of select="math:max(exsl:node-set($shape_widths_)/SHAPE/@WIDTH)"/>
+</xsl:template>
+       
+       
+<xsl:template name="F_Calc_Stack_X">
+       <xsl:param name="iStackIdx"  select="0"/>
+<!--   
+       <xsl:message>Looking for stack indexes less than <xsl:value-of select="$iStackIdx"/></xsl:message>
+-->    
+       
+       <!-- Store the stack widths in a variable -->   
+       <xsl:variable name="stackspace_widths_">
+       
+               <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH = $iStackIdx)">
+                       <STACKSPACE WIDTH="{$BLKD_BUS_LANE_W}"/>
+               </xsl:if>
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES[(@STACK_HORIZ_INDEX &lt; $iStackIdx)])">
+                       <STACKSPACE WIDTH="0"/>
+               </xsl:if>
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES[(@STACK_HORIZ_INDEX &lt; $iStackIdx)])">
+                       <STACKSPACE WIDTH="0"/>
+               </xsl:if>
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX &lt; $iStackIdx)])">
+                       <STACKSPACE WIDTH="0"/>
+               </xsl:if>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@EAST &lt;= $iStackIdx)]">
+                       
+<!--           
+                       <xsl:message>==============================</xsl:message>
+                       <xsl:message>Found a space of index <xsl:value-of select="@EAST"/></xsl:message>
+                       <xsl:message>Bus lane space width <xsl:value-of select="@BUSLANES_W"/></xsl:message>
+                       <xsl:message>Bus lane space is <xsl:value-of select="$space_width_"/></xsl:message>
+                       <xsl:variable name="space_width_" select="($BLKD_BUS_LANE_W * @BUSLANES_W)"/>
+-->    
+
+                       <xsl:variable name="East_">
+                               <xsl:choose>
+                                       <xsl:when test="@EAST"><xsl:value-of select="@EAST"/></xsl:when>
+                                       <xsl:otherwise>'NONE'</xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="West_">
+                               <xsl:choose>
+                                       <xsl:when test="@WEST"><xsl:value-of select="@WEST"/></xsl:when>
+                                       <xsl:otherwise>NONE</xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+<!--
+                       <xsl:message>1 - West_ <xsl:value-of select="$West_"/></xsl:message>
+                       <xsl:message>1 - East_ <xsl:value-of select="$East_"/></xsl:message>
+-->
+                       <xsl:variable name="space_width_">
+                               <xsl:call-template name="F_Calc_Space_Width">
+                                       <xsl:with-param name="iStackToWest" select="$West_"/>
+                                       <xsl:with-param name="iStackToEast" select="$East_"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="stack_width_">
+                               <xsl:if test="not(@EAST = $iStackIdx)">
+                                       <xsl:call-template name="F_Calc_Stack_Width">
+                                               <xsl:with-param name="iStackIdx"  select="@EAST"/>
+                                       </xsl:call-template>
+                               </xsl:if>
+                               <xsl:if test="(@EAST = $iStackIdx)">0</xsl:if>
+                       </xsl:variable>
+<!--                   
+                       <xsl:message>Found stack of width <xsl:value-of select="$stack_width_"/></xsl:message>
+                       <xsl:message>==============================</xsl:message>
+-->                    
+                       <STACKSPACE WIDTH="{$stack_width_ + $space_width_}"/>
+                       
+               </xsl:for-each>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(not(@EAST) and (@WEST = ($iStackIdx -1)))]">
+                       <xsl:variable name="space_width_" select="($BLKD_BUS_LANE_W * @BUSLANES_W)"/>
+<!--                   
+                       <xsl:message>Found end space of <xsl:value-of select="$space_width_"/></xsl:message>
+-->                    
+                       <STACKSPACE WIDTH="{$space_width_}"/>
+               </xsl:for-each>
+               
+               
+       </xsl:variable>
+       
+       <xsl:value-of select="sum(exsl:node-set($stackspace_widths_)/STACKSPACE/@WIDTH)"/>
+       
+</xsl:template>        
+       
+<xsl:template name="F_Calc_Space_Width">
+       
+       <xsl:param name="iStackToWest"  select="'NONE'"/>
+       <xsl:param name="iStackToEast"  select="'NONE'"/>
+       
+<!--   
+       <xsl:message>Stack to West <xsl:value-of select="$stackToWest"/></xsl:message>
+       <xsl:message>Stack to East <xsl:value-of select="$stackToEast"/></xsl:message>
+-->    
+       
+       <xsl:variable name="spaceWidth_">
+               <xsl:choose>
+                       <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (not($iStackToWest = 'NONE') and (@WEST = $iStackToWest)))]">
+                               <xsl:value-of select="((($G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[((@EAST = $iStackToEast) or (not($iStackToWest = 'NONE') and (@WEST = $iStackToWest)))]/@BUSLANES_W) + 1) * $BLKD_BUS_LANE_W)"/>
+                       </xsl:when>     
+                       <xsl:otherwise>0</xsl:otherwise>        
+               </xsl:choose>   
+       </xsl:variable> 
+       
+<!--   
+       <xsl:message>Space width <xsl:value-of select="$spaceWidth_"/></xsl:message>
+-->    
+       
+       <xsl:value-of select="$spaceWidth_"/>
+</xsl:template>
+       
+       
+<xsl:template name="F_Calc_Space_X">
+       
+       <xsl:param name="iStackToWest"  select="'NONE'"/>
+       <xsl:param name="iStackToEast"  select="'NONE'"/>
+       
+<!--   
+       <xsl:message>Stack East <xsl:value-of select="$stackToEast"/></xsl:message>
+       <xsl:message>Stack West <xsl:value-of select="$stackToWest"/></xsl:message>
+-->    
+       
+       <!-- Store the stack widths in a variable -->   
+       
+<!--   
+       <xsl:message>Looking for stack indexes less than <xsl:value-of select="$stackIdx"/></xsl:message>
+-->    
+       
+       <xsl:variable name="stackspace_widths_">
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES[(@STACK_HORIZ_INDEX &lt; $iStackToEast)])">
+                       <STACKSPACE WIDTH="0"/>
+               </xsl:if>
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES[(@STACK_HORIZ_INDEX &lt; $iStackToEast)])">
+                       <STACKSPACE WIDTH="0"/>
+               </xsl:if>
+               
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX &lt; $iStackToEast)])">
+                       <STACKSPACE WIDTH="0"/>
+               </xsl:if>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[((@EAST &lt; $iStackToEast) or (not($iStackToWest = 'NONE') and (@EAST &lt;= $iStackToWest)))]">
+                       
+<!--           
+                       <xsl:message>==============================</xsl:message>
+                       <xsl:message>Found a space of index <xsl:value-of select="@EAST"/></xsl:message>
+-->    
+
+                       <xsl:variable name="East_">
+                               <xsl:choose>
+                                       <xsl:when test="@EAST"><xsl:value-of select="@EAST"/></xsl:when>
+                                       <xsl:otherwise>'NONE'</xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="West_">
+                               <xsl:choose>
+                                       <xsl:when test="@WEST"><xsl:value-of select="@WEST"/></xsl:when>
+                                       <xsl:otherwise>NONE</xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+<!--
+                       <xsl:message>2 - West_ <xsl:value-of select="$West_"/></xsl:message>
+                       <xsl:message>2 - East_ <xsl:value-of select="$East_"/></xsl:message>
+ -->                   
+                       <xsl:variable name="space_width_">
+                               <xsl:call-template name="F_Calc_Space_Width">
+                                       <xsl:with-param name="iStackToWest" select="$West_"/>
+                                       <xsl:with-param name="iStackToEast" select="$East_"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                       
+<!--                   
+                       <xsl:variable name="space_width_" select="($BLKD_BUS_LANE_W * @BUSLANES_W)"/>
+                       <xsl:message>Bus lane space width <xsl:value-of select="@BUSLANES_W"/></xsl:message>
+                       <xsl:message>Bus lane space is <xsl:value-of select="$space_width_"/></xsl:message>
+-->    
+                       
+                       <xsl:variable name="stack_width_">
+                               <xsl:call-template name="F_Calc_Stack_Width">
+                                       <xsl:with-param name="iStackIdx"  select="@EAST"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                       
+<!--                   
+                       <xsl:message>Found stack of width <xsl:value-of select="$stack_width_"/></xsl:message>
+                       <xsl:message>==============================</xsl:message>
+-->                    
+                       
+                       <STACKSPACE WIDTH="{$stack_width_ + $space_width_}"/>
+               </xsl:for-each>
+       </xsl:variable>
+       
+       <xsl:variable name = "stackToWest_W_">
+               <xsl:choose>
+                       <xsl:when test="(($iStackToEast = '0')   and     ($iStackToWest = 'NONE'))">0</xsl:when>
+                       <xsl:when test="(($iStackToEast = 'NONE') and not($iStackToWest = 'NONE'))">
+                               <xsl:call-template name="F_Calc_Stack_Width">
+                                       <xsl:with-param name="iStackIdx"  select="$iStackToWest"/>
+                               </xsl:call-template>
+                       </xsl:when>
+                       <xsl:when test="(not($iStackToEast = '0') and ($iStackToWest = 'NONE'))">
+                               <xsl:call-template name="F_Calc_Stack_Width">
+                                       <xsl:with-param name="iStackIdx"  select="($iStackToEast - 1)"/>
+                               </xsl:call-template>
+                       </xsl:when>
+                       <xsl:otherwise>0</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+<!--   
+       <xsl:variable name = "stackToEast_W_">
+               <xsl:call-template name="F_Calc_Stack_Width">
+                       <xsl:with-param name="stackIdx"  select="$stackToEast"/>
+               </xsl:call-template>
+       </xsl:variable>
+       <xsl:variable name ="extSpaceEast_W_" select="ceiling($stackToEast_W_ div 2)"/>
+-->    
+       
+       <xsl:variable name ="extSpaceWest_W_" select="ceiling($stackToWest_W_ div 2)"/>
+        
+       <xsl:value-of select="sum(exsl:node-set($stackspace_widths_)/STACKSPACE/@WIDTH) - $extSpaceWest_W_"/>
+</xsl:template>        
+
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Globals.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Globals.xsl
new file mode 100644 (file)
index 0000000..9d6fe70
--- /dev/null
@@ -0,0 +1,115 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink">
+                
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+                  
+<!-- 
+   ===========================================================================
+                       CALCULATE GLOBAL VARIABLES BASED ON BLKDIAGRAM DEF IN INPUT XML 
+   ===========================================================================
+-->
+       
+<xsl:variable name="G_Total_StandAloneMpmc_H">
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE">
+               <xsl:value-of select="($BLKD_MPMC_MOD_H + $BLKD_MPMC2PROC_GAP)"/>       
+       </xsl:if>
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE)">0</xsl:if>
+</xsl:variable>
+       
+<xsl:variable name="G_Max_Stack_BlwSbs_H">
+       <xsl:call-template name="F_Calc_Max_Stack_BlwSbs_Height"/>
+</xsl:variable>
+
+<xsl:variable name="G_Max_Stack_AbvSbs_H">
+       <xsl:call-template name="F_Calc_Max_Stack_AbvSbs_Height"/>
+</xsl:variable>
+       
+<xsl:variable name="G_Total_Stacks_W">
+       <xsl:call-template name="F_Calc_Stack_X">
+               <xsl:with-param name="iStackIdx"    select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH)"/>
+       </xsl:call-template>
+</xsl:variable>
+       
+<xsl:variable name="G_NumOfSharedBusses"   select="count($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSSHAPES/MODULE)"/>
+<xsl:variable name="G_Total_SharedBus_H"   select="($G_NumOfSharedBusses * $BLKD_SBS_LANE_H)"/>
+
+<xsl:variable name="G_NumOfBridges"        select="count($G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE)"/>
+<xsl:variable name="G_Total_Bridges_W"     select="(($G_NumOfBridges * ($BLKD_MOD_W + ($BLKD_BUS_LANE_W * 2))) + $BLKD_BRIDGE_GAP)"/>
+       
+<xsl:variable name="G_Total_DrawArea_CLC"  select="($G_Total_Stacks_W + $G_Total_Bridges_W + ($BLKD_INNER_GAP * 2))"/>
+       
+<xsl:variable name="G_Total_DrawArea_W">
+       <xsl:if test="$G_Total_DrawArea_CLC &gt; ($BLKD_KEY_W + $BLKD_SPECS_W + $BLKD_SPECS2KEY_GAP)">
+               <xsl:value-of select="$G_Total_DrawArea_CLC"/>
+       </xsl:if>
+       <xsl:if test="not($G_Total_DrawArea_CLC &gt; ($BLKD_KEY_W + $BLKD_SPECS2KEY_GAP + $BLKD_SPECS_W))">
+               <xsl:value-of select="($BLKD_KEY_W + $BLKD_SPECS_W + $BLKD_SPECS2KEY_GAP)"/>
+       </xsl:if>
+</xsl:variable>
+       
+<xsl:variable name="G_IpBucketMods_H">
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/IPBUCKET/@MODS_H"><xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/IPBUCKET/@MODS_H"/></xsl:if>
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/IPBUCKET/@MODS_H)">0</xsl:if>
+</xsl:variable>
+<xsl:variable name="G_Total_IpBucket_H"   select="($G_IpBucketMods_H * ($BLKD_MOD_H + $BLKD_BIF_H))"/>
+       
+<xsl:variable name="G_Total_UnkBucket_H">
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET">
+       
+               <xsl:variable name="unkBucketMods_H_">
+                       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@MODS_H"><xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@MODS_H"/></xsl:if>
+                       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@MODS_H)">0</xsl:if>
+               </xsl:variable>
+               
+               <xsl:variable name="total_UnkMod_H_"       select="($unkBucketMods_H_ * ($BLKD_MOD_H + $BLKD_BIF_H))"/>         
+               
+               <xsl:variable name="unkBucketBifs_H_">
+                       <xsl:if test="/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@BIFS_H"><xsl:value-of select="/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@BIFS_H"/></xsl:if>
+                       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/@BIFS_H)">0</xsl:if>
+               </xsl:variable>
+               
+               <xsl:variable name="total_UnkBif_H_"       select="($unkBucketBifs_H_ * ($BLKD_MOD_H + $BLKD_BIF_H))"/>
+               
+               <xsl:value-of select="($total_UnkBif_H_ + $total_UnkMod_H_)"/>  
+       </xsl:if>
+       
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET)">0</xsl:if>
+</xsl:variable>
+       
+<xsl:variable name="G_SharedBus_Y"    select="($BLKD_INNER_Y + $G_Total_StandAloneMpmc_H + $G_Max_Stack_AbvSbs_H + $BLKD_PROC2SBS_GAP)"/>
+       
+<!-- ===========================================================================
+    Calculate the width of the Block Diagram based on the total number of      
+    buslanes and modules in the design. If there are no buslanes or modules,
+       a default width, just wide enough to display the KEY and SPECS is used
+   =========================================================================== -->
+<xsl:variable name="G_Total_Blkd_W"  select="($G_Total_DrawArea_W + (($BLKD_PRTCHAN_W  + $BLKD_IORCHAN_W)* 2))"/>
+<xsl:variable name="G_Total_Diag_W"  select="$G_Total_Blkd_W"/>
+       
+<!-- =========================================================================== -->
+<!-- Calculate the height of the Block Diagram based on the total number of      -->
+<!-- buslanes and modules in the design. Take into account special shapes such   -->
+<!-- as MultiProc shapes.                                                                                                           -->
+<!-- =========================================================================== -->
+       
+       
+<xsl:variable name="G_Total_DrawArea_H"  select="($G_Total_StandAloneMpmc_H + $G_Max_Stack_AbvSbs_H + $BLKD_PROC2SBS_GAP + $G_Total_SharedBus_H + $G_Max_Stack_BlwSbs_H + $BLKD_SBS2IP_GAP + $G_Total_IpBucket_H + $BLKD_IP2UNK_GAP + $G_Total_UnkBucket_H + ($BLKD_INNER_GAP * 2))"/>
+<xsl:variable name="G_Total_Blkd_H"      select="($G_Total_DrawArea_H + (($BLKD_PRTCHAN_H  + $BLKD_IORCHAN_H)* 2))"/>
+       
+<xsl:variable name="G_Total_Diag_H">
+       <xsl:if test="($IN_TESTMODE = 'TRUE')">
+               <xsl:message>Generating Blkdiagram in TestMode </xsl:message>
+       <xsl:value-of select="$G_Total_Blkd_H"/>
+       </xsl:if>
+       <xsl:if test="(not($IN_TESTMODE) or ($IN_TESTMODE = 'FALSE'))">
+       <xsl:value-of select="($G_Total_Blkd_H + $BLKD_DRAWAREA2KEY_GAP + $BLKD_KEY_H)"/>
+       </xsl:if>
+</xsl:variable>                        
+
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_IOPorts.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_IOPorts.xsl
new file mode 100644 (file)
index 0000000..ec0c0e5
--- /dev/null
@@ -0,0 +1,490 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:math="http://exslt.org/math"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink"
+           extension-element-prefixes="math">
+           
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+                       
+       
+<!-- ======================= DEF BLOCK =============================== -->
+<xsl:template name="Define_IOPorts">
+       
+       <xsl:variable name="key_col_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="'KEY'"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+               <xsl:variable name="key_lt_col_">
+                       <xsl:call-template name="F_BusStd2RGB_LT">
+                               <xsl:with-param name="iBusStd" select="'KEY'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+
+        <g id="G_IOPort">
+               <rect  
+                       x="0"  
+                       y="0" 
+                       width= "{$BLKD_IOP_W}" 
+                       height="{$BLKD_IOP_H}" style="fill:{$COL_IORING_LT}; stroke:{$COL_IORING}; stroke-width:1"/> 
+                       
+               <path class="ioport"
+                         d="M   0,0
+                                L   {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
+                                L   0,{$BLKD_IOP_H}
+                                Z" style="stroke:none; fill:{$COL_SYSPRT}"/>   
+       </g>
+
+        <g id="G_BIPort">
+               <rect  
+                       x="0"  
+                       y="0" 
+                       width= "{$BLKD_IOP_W}" 
+                       height="{$BLKD_IOP_H}" style="fill:{$COL_IORING_LT}; stroke:{$COL_IORING}; stroke-width:1"/> 
+                       
+               <path class="btop"
+                         d="M 0,{ceiling($BLKD_IOP_H div 2)}
+                                {ceiling($BLKD_IOP_W div 2)},0
+                                {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
+                                Z" style="stroke:none; fill:{$COL_SYSPRT}"/>   
+                                
+               <path class="bbot"
+                         d="M 0,{ceiling($BLKD_IOP_H div 2)}
+                                {ceiling($BLKD_IOP_W div 2)},{$BLKD_IOP_H}
+                                {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
+                                Z" style="stroke:none; fill:{$COL_SYSPRT}"/>   
+                                
+       </g>
+
+        <g id="KEY_IOPort">
+               <rect  
+                       x="0"  
+                       y="0" 
+                       width= "{$BLKD_IOP_W}" 
+                       height="{$BLKD_IOP_H}" style="fill:{$key_lt_col_}; stroke:none;"/> 
+                       
+               <path class="ioport"
+                         d="M   0,0
+                                L   {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
+                                L   0,{$BLKD_IOP_H}
+                                Z" style="stroke:none; fill:{$key_col_}"/>     
+       </g>
+       
+        <g id="KEY_BIPort">
+               <rect  
+                       x="0"  
+                       y="0" 
+                       width= "{$BLKD_IOP_W}" 
+                       height="{$BLKD_IOP_H}" style="fill:{$key_lt_col_}; stroke:none;"/> 
+                       
+               <path class="btop"
+                         d="M 0,{ceiling($BLKD_IOP_H div 2)}
+                                {ceiling($BLKD_IOP_W div 2)},0
+                                {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
+                                Z" style="stroke:none; fill:{$key_col_}"/>     
+                                
+               <path class="bbot"
+                         d="M 0,{ceiling($BLKD_IOP_H div 2)}
+                                {ceiling($BLKD_IOP_W div 2)},{$BLKD_IOP_H}
+                                {$BLKD_IOP_W},{ceiling($BLKD_IOP_H div 2)}
+                                Z" style="stroke:none; fill:{$key_col_}"/>
+       </g>
+       
+        <g id="KEY_INPort">
+               <use   x="0"   y="0"   xlink:href="#KEY_IOPort"/>
+               <rect  
+                       x="{$BLKD_IOP_W}"  
+                       y="0" 
+                       width= "{ceiling($BLKD_IOP_W div 2)}" 
+                       height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/> 
+       </g>
+       
+        <g id="KEY_OUTPort">
+               <use   x="0"   y="0"   xlink:href="#KEY_IOPort" transform="scale(-1,1) translate({$BLKD_IOP_W * -1},0)"/>
+               <rect  
+                       x="{$BLKD_IOP_W}"  
+                       y="0" 
+                       width= "{ceiling($BLKD_IOP_W div 2)}" 
+                       height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/> 
+       </g>
+
+        <g id="KEY_INOUTPort">
+               <use   x="0"   y="0"   xlink:href="#KEY_BIPort"/>
+               <rect  
+                       x="{$BLKD_IOP_W}"  
+                       y="0" 
+                       width= "{ceiling($BLKD_IOP_W div 2)}" 
+                       height="{$BLKD_IOP_H}" style="fill:{$COL_SYSPRT}; stroke:none;"/> 
+       </g>
+</xsl:template>
+
+<!-- ======================= DRAW BLOCK =============================== -->
+
+<xsl:template name="Draw_IOPorts"> 
+       
+       <xsl:variable name="ports_count_"    select="count($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT)"/>
+       
+       <xsl:if test="($ports_count_ &gt; 30)">
+               <xsl:call-template name="Draw_IOPorts_4Sides"/> 
+       </xsl:if>
+       
+       <xsl:if test="($ports_count_ &lt;= 30)">
+               <xsl:call-template name="Draw_IOPorts_2Sides"/> 
+       </xsl:if>
+</xsl:template>
+
+<xsl:template name="Draw_IOPorts_2Sides"> 
+       
+       <xsl:variable name="ports_count_"    select="count($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT)"/>
+       <xsl:variable name="ports_per_side_" select="ceiling($ports_count_ div 2)"/>
+       
+       <xsl:variable name="h_ofs_">
+               <xsl:value-of select="$BLKD_PRTCHAN_W + ceiling(($G_Total_DrawArea_W  - (($ports_per_side_ * $BLKD_IOP_W) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/>
+       </xsl:variable>
+       
+       <xsl:variable name="v_ofs_">
+               <xsl:value-of select="$BLKD_PRTCHAN_H + ceiling(($G_Total_DrawArea_H  - (($ports_per_side_ * $BLKD_IOP_H) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/>
+       </xsl:variable>
+       
+
+       <xsl:for-each select="EXTERNALPORTS/PORT">
+               <xsl:sort data-type="number" select="@INDEX" order="ascending"/>
+               
+               <xsl:variable name="poffset_" select="0"/>
+               <xsl:variable name="pcount_"  select="$poffset_ + (position() -1)"/>
+               
+               <xsl:variable name="pdir_">
+                       <xsl:choose>
+                               <xsl:when test="(@DIR='I'  or @DIR='IN'  or @DIR='INPUT')">I</xsl:when>
+                               <xsl:when test="(@DIR='O'  or @DIR='OUT' or @DIR='OUTPUT')">O</xsl:when>
+                               <xsl:when test="(@DIR='IO' or @DIR='INOUT')">B</xsl:when>
+                               <xsl:otherwise>I</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="pside_">
+                       <xsl:choose>
+                               <xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 0) and ($pcount_ &lt; ($ports_per_side_ * 1)))">W</xsl:when>
+                               <xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 1) and ($pcount_ &lt; ($ports_per_side_ * 2)))">E</xsl:when>
+                               <xsl:otherwise>D</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="pdec_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($ports_per_side_ * 0)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($ports_per_side_ * 1)"/></xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="px_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($BLKD_PRTCHAN_W - $BLKD_IOP_W)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)) - 2)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($BLKD_PRTCHAN_W + ($BLKD_IORCHAN_W * 2) + $G_Total_DrawArea_W)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'N')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)))"/></xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="py_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when>
+                               <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_PRTCHAN_H + ($BLKD_IORCHAN_H * 2) + $G_Total_DrawArea_H)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when>
+                               <xsl:when test="($pside_ = 'N')"><xsl:value-of select="($BLKD_PRTCHAN_H - $BLKD_IOP_H)"/></xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="prot_">
+                       <xsl:choose>
+                               <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'I'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'I'))">-90</xsl:when>
+                               <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'I'))">180</xsl:when>
+                               <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'I'))">90</xsl:when>
+                               
+                               <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'O'))">180</xsl:when>
+                               <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'O'))">90</xsl:when>
+                               <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'O'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'O'))">-90</xsl:when>
+                               
+                               <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'B'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'B'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'B'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'B'))">0</xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               
+               <xsl:variable name="txo_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_  = 'W')">-10</xsl:when>
+                               <xsl:when test="($pside_  = 'S')">6</xsl:when>
+                                <xsl:when test="($pside_ = 'E')"><xsl:value-of select="(($BLKD_IOP_W * 2) - 4)"/></xsl:when>
+                               <xsl:when test="($pside_  = 'N')">6</xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="tyo_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_ = 'W')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
+                               <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_IOP_H * 2) + 4"/></xsl:when>
+                               <xsl:when test="($pside_ = 'E')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
+                               <xsl:when test="($pside_ = 'N')">-2</xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+
+               <xsl:if test="$pdir_ = 'B'">       
+                       <use   x="{$px_}"  
+                              y="{$py_}"  
+                                  id="{@NAME}"
+                              xlink:href="#G_BIPort" 
+                              transform="rotate({$prot_},{$px_ + ceiling($BLKD_IOP_W div 2)},{$py_ + ceiling($BLKD_IOP_H div 2)})"/>
+               </xsl:if>
+               
+               <xsl:if test="(($pside_ = 'S') and not($pdir_ = 'B'))">    
+                       <rect  
+                               x="{$px_}"  
+                               y="{$py_}" 
+                               width= "{$BLKD_IOP_W}" 
+                               height="{$BLKD_IOP_H}" style="stroke:{$COL_IORING}; stroke-width:1"/> 
+               </xsl:if>
+               
+               <xsl:if test="not($pdir_ = 'B')">          
+                       <use   x="{$px_}"  
+                              y="{$py_}"  
+                                  id="{@NAME}"
+                              xlink:href="#G_IOPort" 
+                              transform="rotate({$prot_},{$px_ + ceiling($BLKD_IOP_W div 2)},{$py_ + ceiling($BLKD_IOP_H div 2)})"/>
+               </xsl:if>
+               
+               <text class="iopnumb"
+                       x="{$px_ + $txo_}" 
+                       y="{$py_ + $tyo_}">
+                       <xsl:value-of select="@INDEX"/><tspan class="iopgrp"><xsl:value-of select="@GROUP"/></tspan>
+               </text>
+               
+       </xsl:for-each>
+       
+</xsl:template>
+
+
+<xsl:template name="Draw_IOPorts_4Sides"> 
+       
+       <xsl:variable name="ports_count_"    select="count($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT)"/>
+       <xsl:variable name="ports_per_side_" select="ceiling($ports_count_ div 4)"/>
+       
+       <xsl:variable name="h_ofs_">
+               <xsl:value-of select="$BLKD_PRTCHAN_W + ceiling(($G_Total_DrawArea_W  - (($ports_per_side_ * $BLKD_IOP_W) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/>
+       </xsl:variable>
+       
+       <xsl:variable name="v_ofs_">
+               <xsl:value-of select="$BLKD_PRTCHAN_H + ceiling(($G_Total_DrawArea_H  - (($ports_per_side_ * $BLKD_IOP_H) + (($ports_per_side_ - 1) * $BLKD_IOP_SPC))) div 2)"/>
+       </xsl:variable>
+       
+
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT">
+               <xsl:sort data-type="number" select="@INDEX" order="ascending"/>
+               
+               <xsl:variable name="poffset_" select="0"/>
+               <xsl:variable name="pcount_"  select="$poffset_ + (position() -1)"/>
+               
+               <xsl:variable name="pdir_">
+                       <xsl:choose>
+                               <xsl:when test="(@DIR='I'  or @DIR='IN'  or @DIR='INPUT')">I</xsl:when>
+                               <xsl:when test="(@DIR='O'  or @DIR='OUT' or @DIR='OUTPUT')">O</xsl:when>
+                               <xsl:when test="(@DIR='IO' or @DIR='INOUT')">B</xsl:when>
+                               <xsl:otherwise>I</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="pside_">
+                       <xsl:choose>
+                               <xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 0) and ($pcount_ &lt; ($ports_per_side_ * 1)))">W</xsl:when>
+                               <xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 1) and ($pcount_ &lt; ($ports_per_side_ * 2)))">S</xsl:when>
+                               <xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 2) and ($pcount_ &lt; ($ports_per_side_ * 3)))">E</xsl:when>
+                               <xsl:when test="($pcount_ &gt;= ($ports_per_side_ * 3) and ($pcount_ &lt; ($ports_per_side_ * 4)))">N</xsl:when>
+                               <xsl:otherwise>D</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="pdec_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($ports_per_side_ * 0)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($ports_per_side_ * 1)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($ports_per_side_ * 2)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'N')"><xsl:value-of select="($ports_per_side_ * 3)"/></xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="px_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($BLKD_PRTCHAN_W - $BLKD_IOP_W)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)) - 2)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($BLKD_PRTCHAN_W + ($BLKD_IORCHAN_W * 2) + $G_Total_DrawArea_W)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'N')"><xsl:value-of select="($h_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_W)))"/></xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="py_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_ = 'W')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when>
+                               <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_PRTCHAN_H + ($BLKD_IORCHAN_H * 2) + $G_Total_DrawArea_H)"/></xsl:when>
+                               <xsl:when test="($pside_ = 'E')"><xsl:value-of select="($v_ofs_ + (((position() - 1) - $pdec_) * ($BLKD_IOP_SPC + $BLKD_IOP_H)))"/></xsl:when>
+                               <xsl:when test="($pside_ = 'N')"><xsl:value-of select="($BLKD_PRTCHAN_H - $BLKD_IOP_H)"/></xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+       
+               <xsl:variable name="prot_">
+                       <xsl:choose>
+                               <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'I'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'I'))">-90</xsl:when>
+                               <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'I'))">180</xsl:when>
+                               <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'I'))">90</xsl:when>
+                               
+                               <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'O'))">180</xsl:when>
+                               <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'O'))">90</xsl:when>
+                               <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'O'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'O'))">-90</xsl:when>
+                               
+                               <xsl:when test="(($pside_ = 'W') and ($pdir_ = 'B'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'S') and ($pdir_ = 'B'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'E') and ($pdir_ = 'B'))">0</xsl:when>
+                               <xsl:when test="(($pside_ = 'N') and ($pdir_ = 'B'))">0</xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="txo_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_  = 'W')">-14</xsl:when>
+                               <xsl:when test="($pside_  = 'S')">8</xsl:when>
+                                <xsl:when test="($pside_ = 'E')"><xsl:value-of select="(($BLKD_IOP_W * 2) - 4)"/></xsl:when>
+                               <xsl:when test="($pside_  = 'N')">8</xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+               
+               <xsl:variable name="tyo_">
+                       <xsl:choose>
+                               <xsl:when test="($pside_ = 'W')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
+                               <xsl:when test="($pside_ = 'S')"><xsl:value-of select="($BLKD_IOP_H * 2) + 4"/></xsl:when>
+                               <xsl:when test="($pside_ = 'E')"><xsl:value-of select="ceiling($BLKD_IOP_H div 2) + 6"/></xsl:when>
+                               <xsl:when test="($pside_ = 'N')">-2</xsl:when>
+                               <xsl:otherwise>0</xsl:otherwise>
+                       </xsl:choose>   
+               </xsl:variable>
+
+               <xsl:if test="$pdir_ = 'B'">       
+                       <use   x="{$px_}"
+                              y="{$py_}"
+                                  id="{@NAME}"
+                              xlink:href="#G_BIPort" 
+                              transform="rotate({$prot_},{$px_ + ceiling($BLKD_IOP_W div 2)},{$py_ + ceiling($BLKD_IOP_H div 2)})"/>
+               </xsl:if>
+               
+               <xsl:if test="(($pside_ = 'S') and not($pdir_ = 'B'))">    
+                       <rect  
+                               x="{$px_}"
+                               y="{$py_}"
+                               width= "{$BLKD_IOP_W}"
+                               height="{$BLKD_IOP_H}" style="stroke:{$COL_IORING}; stroke-width:1"/> 
+               </xsl:if>
+               
+               <xsl:if test="not($pdir_ = 'B')">          
+                       <use   x="{$px_}"
+                              y="{$py_}"
+                                  id="{@NAME}"
+                              xlink:href="#G_IOPort"
+                              transform="rotate({$prot_},{$px_ + ceiling($BLKD_IOP_W div 2)},{$py_ + ceiling($BLKD_IOP_H div 2)})"/>
+               </xsl:if>
+               
+               <text class="iopnumb"
+                       x="{$px_ + $txo_}" 
+                       y="{$py_ + $tyo_}"><xsl:value-of select="@INDEX"/><tspan class="iopgrp"><xsl:value-of select="@GROUP"/></tspan>
+               </text>
+
+       </xsl:for-each>
+       
+</xsl:template>
+       
+<xsl:template name="Define_ExtPortsTable">
+       
+<!--   
+               <xsl:if test="$oriented_= 'WEST'"><xsl:value-of select="$proc2procX_ - (string-length(@BUSNAME) * 6)"/></xsl:if>        
+               <xsl:variable name="max_name_" select="math:max(string-length($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT/@NAME))"/>
+               <xsl:variable name="max_sgnm_" select="math:max(string-length($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT/@SIGNAME))"/>
+       
+               <xsl:message>MAX NAME <xsl:value-of select="$max_name_"/></xsl:message>
+               <xsl:message>MAX SIG  <xsl:value-of select="$max_sgnm_"/></xsl:message>
+-->    
+       
+               <xsl:variable name="ext_ports_">        
+                       <xsl:if test="not($G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT)">
+                               <EXTPORT NAME="__none__" SIGNAME="__none_" NAMELEN="0" SIGLEN="0"/>
+                       </xsl:if>
+                       <xsl:if test="$G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT">
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/EXTERNALPORTS/PORT">
+                                       <EXTPORT  NAME="{@NAME}" SIGNAME="{@SIGNAME}" NAMELEN="{string-length(@NAME)}" SIGLEN="{string-length(@SIGNAME)}"/>
+                               </xsl:for-each>
+                       </xsl:if>
+               </xsl:variable>
+       
+               <xsl:variable name="max_name_" select="math:max(exsl:node-set($ext_ports_)/EXTPORT/@NAMELEN)"/>
+               <xsl:variable name="max_sign_" select="math:max(exsl:node-set($ext_ports_)/EXTPORT/@SIGLEN)"/>
+       
+               <xsl:variable name="h_font_" select="12"/>
+               <xsl:variable name="w_font_" select="12"/>
+       
+               <xsl:variable name="w_num_"    select="($w_font_ * 5)"/>
+               <xsl:variable name="w_dir_"    select="($w_font_ * 3)"/>
+               <xsl:variable name="w_lsbmsb_" select="($w_font_ * 9)"/>
+               <xsl:variable name="w_attr_"   select="($w_font_ * 4)"/>
+               <xsl:variable name="w_name_"   select="($w_font_ * $max_name_)"/>
+               <xsl:variable name="w_sign_"   select="($w_font_ * $max_sign_)"/>
+       
+               <xsl:variable name="w_table_" select="($w_num_ + $w_name_ + $w_dir_ + $w_sign_ + $w_attr_)"/>
+       
+<!--   
+               <xsl:message>MAX NAME <xsl:value-of select="$max_name_"/></xsl:message>
+               <xsl:message>MAX SIG  <xsl:value-of select="$max_sign_"/></xsl:message>
+       
+               <xsl:message>W NUM  <xsl:value-of select="$w_num_"/></xsl:message>
+               <xsl:message>W DIR  <xsl:value-of select="$w_dir_"/></xsl:message>
+               <xsl:message>W NAM  <xsl:value-of select="$w_name_"/></xsl:message>
+               <xsl:message>W SIG  <xsl:value-of select="$w_sign_"/></xsl:message>
+               <xsl:message>W ATT  <xsl:value-of select="$w_attr_"/></xsl:message>
+       
+               <xsl:message>W TABLE  <xsl:value-of select="$w_table_"/></xsl:message>
+-->    
+       
+        <g id="BlkDiagram_ExtPortsTable">
+               <rect  
+                       x="0"  
+                       y="0" 
+                       width= "{$w_table_}" 
+                       height="{$h_font_}"  style="fill:{$COL_RED}; stroke:none; stroke-width:1"/> 
+       </g>     
+       
+       
+       
+</xsl:template>
+
+<!-- ======================= END MAIN BLOCK =========================== -->
+
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Main.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Main.xsl
new file mode 100644 (file)
index 0000000..a2f9a44
--- /dev/null
@@ -0,0 +1,1549 @@
+<?xml version="1.0" standalone="no"?>
+
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:math="http://exslt.org/math"
+              xmlns:xlink="http://www.w3.org/1999/xlink"
+           extension-element-prefixes="math">
+           
+                  
+<!-- 
+       ===============================================
+                               INCLUDES
+       ===============================================
+ -->   
+<xsl:include href="MdtSvgBLKD_Dimensions.xsl"/>
+
+<xsl:include href="MdtSvgDiag_Colors.xsl"/>
+<xsl:include href="MdtSvgDiag_Globals.xsl"/>
+<xsl:include href="MdtSvgDiag_StyleDefs.xsl"/>
+
+<xsl:include href="MdtTinySvgDiag_BifShapes.xsl"/>
+
+<xsl:include href="MdtTinySvgBLKD_IOPorts.xsl"/>
+<xsl:include href="MdtTinySvgBLKD_Busses.xsl"/>
+<xsl:include href="MdtTinySvgBLKD_Globals.xsl"/>
+<xsl:include href="MdtTinySvgBLKD_Functions.xsl"/>
+<xsl:include href="MdtTinySvgBLKD_Peripherals.xsl"/>
+<xsl:include href="MdtTinySvgBLKD_Processors.xsl"/>
+<xsl:include href="MdtTinySvgBLKD_BusLaneSpaces.xsl"/>
+       
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="svg10.dtd"/>
+       
+<!-- 
+       ===============================================
+                               PARAMETERS
+       ===============================================
+ -->   
+<xsl:param    name="ADD_VIEWBOX"        select="'FALSE'"/>                
+<xsl:param    name="IN_TESTMODE"        select="'FALSE'"/>
+
+<!-- 
+<xsl:param    name="CSS_SVG_DIAGRAMS"   select="'MdtSvgDiag_StyleDefs.css'"/>
+<xsl:param    name="CSS_SVG_DIAGRAMS"   select="'__INTERNAL__'"/>
+ -->
+               
+<!-- 
+       ====================================================== 
+                               MAIN BLOCKDIAGRAM TEMPLATE      
+       ====================================================== 
+-->
+<xsl:template match="EDKSYSTEM[not(BLKDIAGRAM)]">
+       <xsl:message>ERROT: Project is missing BLKDIAGRAM Element. Cannot generate.</xsl:message>
+</xsl:template>
+
+<xsl:template match="EDKSYSTEM[BLKDIAGRAM]">
+       
+<!--
+<xsl:message>STCK_W is <xsl:value-of select="$G_Total_Stacks_W"/></xsl:message>
+<xsl:message>BRDG_W is <xsl:value-of select="$G_Total_Bridges_W"/></xsl:message>
+<xsl:message>MPMC is <xsl:value-of select="$G_Total_StandAloneMpmc_H"/></xsl:message>
+<xsl:message>MPMC is <xsl:value-of select="$G_Total_StandAloneMpmc_H"/></xsl:message>
+<xsl:message>MABV is <xsl:value-of select="$G_Max_Stack_AbvSbs_H"/></xsl:message>
+<xsl:message>MBLW is <xsl:value-of select="$G_Max_Stack_BlwSbs_H"/></xsl:message>
+<xsl:message>IPBK is <xsl:value-of select="$G_Total_IpBucket_H"/></xsl:message>
+<xsl:message>Blkd Total is <xsl:value-of select="$blkd_H_"/></xsl:message>
+<xsl:message>max abv is <xsl:value-of select="$max_Stack_AbvSbs_H_"/></xsl:message>
+<xsl:message>max blw is <xsl:value-of select="$max_Stack_BlwSbs_H_"/></xsl:message>
+<xsl:message>Ip Bkt is <xsl:value-of select="$totalIpBkt_H_"/></xsl:message>
+<xsl:message>Sbs is <xsl:value-of select="$totalSbs_H_"/></xsl:message>
+<xsl:message>Unk Bkt is <xsl:value-of select="$totalUnkBkt_H_"/></xsl:message>
+<xsl:message>Blkd DrawArea height as <xsl:value-of select="$total_DrawArea_H_"/></xsl:message>
+-->
+
+<!--specify a css for the file -->
+<!-- 
+<xsl:processing-instruction name="xml-stylesheet">href="<xsl:value-of select="$CSS_SVG_DIAGRAMS"/>" type="text/css"</xsl:processing-instruction>
+<xsl:variable name="BLKD_ZOOM_Y">
+       <xsl:choose>
+               <xsl:when test="($ADD_VIEWBOX = 'TRUE')">
+                       <xsl:value-of select="($G_Total_Diag_H * 2)"/>
+               </xsl:when>
+               <xsl:otherwise>0</xsl:otherwise>                
+       </xsl:choose>
+</xsl:variable>
+ -->
+       
+<xsl:text>&#10;</xsl:text>
+<!--
+<svg width="{$G_Total_Diag_W}" height="{$G_Total_Diag_H}" viewBox="0 0 0 {$BLKD_ZOOM_Y}">      
+-->
+<svg width="{$G_Total_Diag_W}" height="{$G_Total_Diag_H}">
+<!-- 
+        =============================================== 
+              Layout All the various definitions       
+        =============================================== 
+-->
+       <defs>
+               
+               <!-- IO Port Defs -->
+               <xsl:call-template name="Define_IOPorts"/>              
+               
+               <!-- BIF Defs -->
+               <xsl:call-template name="Define_ConnectedBifTypes"/>            
+               
+               <!-- Bus Defs -->
+               <xsl:call-template name="Define_Busses"/>               
+               
+               <!-- Shared Bus Buckets Defs -->
+               <xsl:call-template name="Define_SBSBuckets"/>           
+               
+               <!-- IP Bucket Defs -->
+               <xsl:call-template name="Define_IPBucket"/>             
+               
+               <!-- Stack Defs -->
+               <xsl:call-template name="Define_AllStacks"/>            
+               
+               <!-- Space Defs -->
+               <xsl:call-template name="Define_BusLaneSpaces"/>                
+               
+               <!-- Main MPMC Defs -->
+               <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE">
+                       <xsl:call-template name="Define_StandAlone_MPMC"/>      
+               </xsl:if>
+               
+               <!-- Diagram Key Definition -->
+               <xsl:call-template name="Define_BlkDiagram_Key"/>               
+               
+               <!-- Diagram Specs Definition -->
+               <xsl:call-template name="Define_BlkDiagram_Specs">              
+                       <xsl:with-param name="iArch"       select="SYSTEMINFO/@ARCH"/>
+                       <xsl:with-param name="iPart"       select="SYSTEMINFO/@PART"/>
+                       <xsl:with-param name="iTimeStamp"  select="@TIMESTAMP"/>
+                       <xsl:with-param name="iEdkVersion" select="@EDKVERSION"/>
+               </xsl:call-template>            
+               
+       </defs>
+       
+<!-- =============================================== -->
+<!--             Draw Outlines                       -->
+<!-- =============================================== -->
+       
+        <!-- The surrounding black liner -->
+     <rect x="0"  
+                  y="0" 
+                  width ="{$G_Total_Diag_W}"
+                  height="{$G_Total_Diag_H}" style="fill:{$COL_WHITE}; stroke:{$COL_BLACK};stroke-width:4"/>
+                  
+        <!-- The outer IO channel -->
+     <rect x="{$BLKD_PRTCHAN_W}"  
+                  y="{$BLKD_PRTCHAN_H}" 
+                  width= "{$G_Total_Blkd_W - ($BLKD_PRTCHAN_W * 2)}" 
+                  height="{$G_Total_Blkd_H - ($BLKD_PRTCHAN_H * 2)}" style="fill:{$COL_IORING}"/>
+                  
+        <!-- The Diagram's drawing area -->
+     <rect x="{$BLKD_PRTCHAN_W + $BLKD_IORCHAN_W}"  
+                  y="{$BLKD_PRTCHAN_H + $BLKD_IORCHAN_H}" 
+                  width= "{$G_Total_DrawArea_W}"
+                  height="{$G_Total_DrawArea_H}" rx="8" ry="8" style="fill:{$COL_BG}"/>
+                  
+<!-- =============================================== -->
+<!--        Draw All the various components          -->
+<!-- =============================================== -->
+       
+       <!--   Layout the IO Ports    -->       
+<!-- 
+       <xsl:if test="(not($IN_TESTMODE) or ($IN_TESTMODE = 'FALSE'))">
+               <xsl:call-template name="Draw_IOPorts"/>        
+       </xsl:if>
+ -->   
+       
+       <!--   Layout the Shapes      -->       
+       <xsl:call-template name="Draw_BlkDiagram_Shapes"/>              
+       
+</svg>
+       
+<!-- ======================= END MAIN SVG BLOCK =============================== -->
+</xsl:template>
+       
+<xsl:template name="Draw_BlkDiagram_Shapes">
+
+       <!-- 
+                ===========================================================
+                                               Draw the Stand Alone MPMC, (if any)
+        ===========================================================
+       -->
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE">
+       
+               <xsl:variable name="mpmc_inst_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE/@INSTANCE"/>
+               <use   x="{$BLKD_INNER_X}"  y="{$BLKD_INNER_Y}"  xlink:href="#mpmcmodule_{$mpmc_inst_}"/> 
+       
+       <!-- 
+                ===========================================================
+                                               Draw the connections to the Stand Alone MPMC
+                ===========================================================
+       -->
+               <xsl:call-template name="Draw_BlkDiagram_StandAloneMpmcConnections"/>   
+       </xsl:if>       
+       
+       <!-- 
+                ===========================================================
+                                               Draw the Stacks
+                ===========================================================
+       -->
+       <xsl:call-template name="Draw_BlkDiagram_Stacks"/>      
+       
+       
+       
+       <!-- 
+                ===========================================================
+                                               Draw the Bus Lane Spaces 
+                ===========================================================
+       -->
+       <xsl:call-template name="Draw_BlkDiagram_BusLaneSpaces"/>       
+       
+       
+       <!-- 
+                ===========================================================
+                                               Draw the shared busses 
+                ===========================================================
+       -->
+       <use   x="{$BLKD_INNER_X}"      y="{$G_SharedBus_Y}"  xlink:href="#group_sharedBusses"/> 
+       
+       <!-- 
+                ===========================================================
+                                               Draw the Bridges
+                ===========================================================
+       -->
+       <xsl:call-template name="Draw_BlkDiagram_Bridges"/>     
+       
+       
+       <!-- 
+                ===========================================================
+                                               Draw the Ip Bucket
+                ===========================================================
+       -->
+       <xsl:call-template name="Draw_BlkDiagram_IPBucket"/>
+       
+       
+       <!-- 
+                ===========================================================
+                                               Draw the Key
+                ===========================================================
+       -->
+       <xsl:if test="(not($IN_TESTMODE) or ($IN_TESTMODE = 'FALSE'))">
+               <use   x="{$G_Total_Blkd_W - $BLKD_KEY_W - $BLKD_PRTCHAN_W}" y="{$G_Total_Blkd_H + $BLKD_DRAWAREA2KEY_GAP - 8}"  xlink:href="#BlkDiagram_Key"/> 
+       </xsl:if>
+       
+       <!-- 
+                ===========================================================
+                                               Draw the Specs
+                ===========================================================
+       -->
+       <xsl:if test="(not($IN_TESTMODE) or ($IN_TESTMODE = 'FALSE'))">
+               <use   x="{$BLKD_PRTCHAN_W}"  y="{$G_Total_Blkd_H + $BLKD_DRAWAREA2KEY_GAP - 8}"  xlink:href="#BlkDiagram_Specs"/> 
+       </xsl:if>
+       
+       <!-- 
+               ************************************************************ 
+               ***************  DONE DRAWING BLOCK DIAGRAM   ************** 
+               ************************************************************ 
+       -->     
+       
+</xsl:template>        
+       
+       
+<!-- ======================================================================= -->
+<!--                         FUNCTION TEMPLATE                               -->
+<!--                                                                                                                                            -->
+<!--  Draw stacks on the Block Diagram                                                                          -->
+<!-- ======================================================================= -->
+<xsl:template name="Draw_BlkDiagram_Stacks">
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@EAST &lt; $G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH)]">
+                       
+               <xsl:variable name="stack_line_x_">
+                       <xsl:call-template name="F_Calc_Stack_X">
+                               <xsl:with-param name="iStackIdx"  select="@EAST"/>
+                       </xsl:call-template>
+               </xsl:variable>
+               
+               <xsl:variable name="stack_abv_sbs_">
+                       <xsl:call-template name="F_Calc_Stack_AbvSbs_Height">
+                               <xsl:with-param name="iStackIdx"  select="@EAST"/>
+                       </xsl:call-template>
+               </xsl:variable>
+               
+               <xsl:variable name="bridges_w_"    select="(($G_NumOfBridges * ($BLKD_MOD_W + ($BLKD_BUS_LANE_W * 2))) + $BLKD_BRIDGE_GAP)"/>
+               
+               <xsl:variable name="stack_y_" select="($G_SharedBus_Y - $stack_abv_sbs_ - $BLKD_PROC2SBS_GAP)"/>
+               <xsl:variable name="stack_x_" select="($BLKD_INNER_X + $stack_line_x_ + $bridges_w_)"/>
+               
+               <xsl:variable name="stack_name_">
+                       <xsl:call-template name="F_generate_Stack_Name"> 
+                               <xsl:with-param name="iHorizIdx" select="@EAST"/>
+                       </xsl:call-template>            
+               </xsl:variable> 
+               
+               <use   x="{$stack_x_}"    y="{$stack_y_}"  xlink:href="#{$stack_name_}"/> 
+       
+       </xsl:for-each> 
+                       
+</xsl:template>
+       
+<xsl:template name="Draw_BlkDiagram_StandAloneMpmcConnections">
+       
+       <xsl:variable name="mpmcInst_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE/@INSTANCE"/>
+       <xsl:variable name="lastStack_" select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH) - 1"/>
+       
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE">
+               <xsl:variable name="currentLane_" select="position()"/>
+<!--           
+               <xsl:message>Current lane <xsl:value-of select="$currentLane_"/></xsl:message>
+-->    
+               <xsl:variable name="stackToEast_">
+                       <xsl:choose>
+                               <xsl:when test="not(@WEST = $lastStack_)"><xsl:value-of select="@EAST"/></xsl:when>
+                               <xsl:when test="   (@WEST = $lastStack_)"><xsl:value-of select="'NONE'"/></xsl:when>
+                       </xsl:choose>
+               </xsl:variable>
+               
+               <xsl:variable name="stackToWest_">
+                       <xsl:choose>
+                               <xsl:when test="not(@WEST = $lastStack_)"><xsl:value-of select="'NONE'"/></xsl:when>
+                               <xsl:when test="   (@WEST = $lastStack_)"><xsl:value-of select="@WEST"/></xsl:when>
+                       </xsl:choose>
+               </xsl:variable>
+               
+               <xsl:variable name="spaceAbvSbs_H_">
+                       <xsl:call-template name="F_Calc_Space_AbvSbs_Height">
+                               <xsl:with-param name="iStackToEast"  select="$stackToEast_"/>
+                               <xsl:with-param name="iStackToWest"  select="$stackToWest_"/>
+                       </xsl:call-template>
+               </xsl:variable> 
+               
+               <xsl:variable name="space_y_"   select="($G_SharedBus_Y - $spaceAbvSbs_H_ - $BLKD_PROC2SBS_GAP)"/>
+       
+<!--           
+               <xsl:message>Stack To East <xsl:value-of select="$stackToEast_"/></xsl:message>
+               <xsl:message>Stack To West <xsl:value-of select="$stackToWest_"/></xsl:message>
+               <xsl:variable name="space_X_">
+                       <xsl:call-template name="F_Calc_Space_X"> 
+                               <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
+                               <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
+                       </xsl:call-template>            
+               </xsl:variable>
+               <xsl:variable name="space_y_"   select="($G_SharedBus_Y - $spaceAbvSbs_H_ - $BLKD_PROC2SBS_GAP)"/>
+               <xsl:variable name="space_x_"   select="($BLKD_INNER_X + $G_Total_Bridges_W + $space_line_x_)"/>
+-->            
+               
+       
+               <xsl:for-each select="BUSCONNLANE[@IS_MPMCCONN]">
+                       
+<!--                   
+                       <xsl:variable name="bifSide_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = BUSCONN/@INSTANCE)]/BUSINTERFACE[(@BUSNAME = @BUSNAME)]/@BIF_X"/>
+-->    
+                       <xsl:variable name="bifInst_"     select="BUSCONN/@INSTANCE"/>
+                       <xsl:variable name="busName_"     select="@BUSNAME"/>
+                       <xsl:variable name="bifSide_"     select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $bifInst_)]/BUSINTERFACE[(@BUSNAME = $busName_)]/@BIF_X"/>
+                       
+                       <xsl:variable name="mpmcBifName_">
+                               <xsl:choose>
+                                       <xsl:when test="   (@IS_SBSCONN)"><xsl:value-of select="BUSCONN/@BUSINTERFACE"/></xsl:when>
+                                       <xsl:when test="not(@IS_SBSCONN)"><xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $mpmcInst_)]/BUSINTERFACE[(@BUSNAME = $busName_)]/@NAME"/></xsl:when>
+                                       <xsl:otherwise><xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $mpmcInst_)]/BUSINTERFACE[(@BUSNAME = $busName_)]/@NAME"/></xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+<!--                   
+                       <xsl:message>MPMC Bif Name <xsl:value-of select="$mpmcBifName_"/></xsl:message>
+                       <xsl:message>Bif Side <xsl:value-of select="$bifSide_"/></xsl:message>
+                       <xsl:message>Bus Name <xsl:value-of select="@BUSNAME"/></xsl:message>
+                       <xsl:message>Instance <xsl:value-of select="$bifInst_"/></xsl:message>
+                       <xsl:message>Space line x <xsl:value-of select="$space_line_X_"/></xsl:message>
+-->    
+                       
+                       <xsl:variable name="space_line_X_">
+                               <xsl:call-template name="F_Calc_Space_X">
+                                       <xsl:with-param name="iStackToEast"  select="$stackToEast_"/>
+                                       <xsl:with-param name="iStackToWest"  select="$stackToWest_"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="space_X_"   select="($BLKD_INNER_X + $G_Total_Bridges_W + $space_line_X_)"/>
+                       
+                       <xsl:variable name = "stackToWest_W_">
+                               <xsl:choose>
+                                       <xsl:when test="(($stackToEast_ = '0')   and     ($stackToWest_ = 'NONE'))">0</xsl:when>
+                                       <xsl:when test="(($stackToEast_ = 'NONE') and not($stackToWest_ = 'NONE'))">
+                                               <xsl:call-template name="F_Calc_Stack_Width">
+                                                       <xsl:with-param name="iStackIdx"  select="$stackToWest_"/>
+                                               </xsl:call-template>
+                                       </xsl:when>
+                                       <xsl:when test="(not($stackToEast_ = '0') and not($stackToEast_ = 'NONE') and ($stackToWest_ = 'NONE'))">
+                                               <xsl:call-template name="F_Calc_Stack_Width">
+                                                       <xsl:with-param name="iStackIdx"  select="($stackToEast_ - 1)"/>
+                                               </xsl:call-template>
+                                       </xsl:when>
+                                       <xsl:otherwise>0</xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+       
+                       <xsl:variable name = "stackToEast_W_">
+                               <xsl:call-template name="F_Calc_Stack_Width">
+                                       <xsl:with-param name="iStackIdx"  select="$stackToEast_"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+       
+                       <xsl:variable name ="extSpaceWest_W_" select="ceiling($stackToWest_W_ div 2)"/>
+                       <xsl:variable name ="extSpaceEast_W_" select="ceiling($stackToEast_W_ div 2)"/>
+                       <xsl:variable name="laneInSpace_X_">
+                               <xsl:choose>
+                                  <xsl:when test="(@ORIENTED = 'EAST')">
+                                          <xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W) - $BLKD_BUS_LANE_W - $BLKD_BUS_ARROW_W - $BLKD_P2P_BUS_W)"/>
+                                  </xsl:when>
+                                  <xsl:otherwise><xsl:value-of select="($extSpaceWest_W_ + (@BUSLANE_X * $BLKD_BUS_LANE_W))"/></xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable> 
+                                               
+                       
+                       <xsl:variable name="lane_X_"        select="($space_X_ + $laneInSpace_X_)"/>
+                       
+                       <xsl:variable name="mpmcBifType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $mpmcInst_)]/BUSINTERFACE[(@NAME = $mpmcBifName_)]/@TYPE"/>
+                       
+               <!--    
+                       <xsl:variable name="bc_X_" select="($lane_X_ +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
+                       <xsl:variable name="bc_X_" select="($lane_X_ +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_W div 2))"/>
+                       <xsl:variable name="bc_X_" select="($lane_X_ + ceiling($BLKD_BIFC_W div 2))"/>
+               -->     
+                       
+                       <xsl:variable name="bc_Y_" select="($BLKD_INNER_Y + $BLKD_MPMC_MOD_H)"/>
+                       <xsl:variable name="bc_X_" >
+                               <xsl:choose>
+                                       <xsl:when test="($bifSide_ = '0')"><xsl:value-of select="($lane_X_ + ceiling($BLKD_BIFC_W div 2))"/></xsl:when>
+                                       <xsl:when test="($bifSide_ = '1')"><xsl:value-of select="($lane_X_ + $BLKD_BIFC_dx)"/></xsl:when>
+                                       <xsl:otherwise>                    <xsl:value-of select="($lane_X_ + ceiling($BLKD_BIFC_W div 2))"/></xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="busColor_">
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="@BUSSTD"/>
+                               </xsl:call-template>    
+                       </xsl:variable>
+               
+                       <!-- Place the MPMC bif label -->
+                       <xsl:variable name="bcl_X_" select="($bc_X_ + ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BIF_W div 2))"/>
+                       <xsl:variable name="bcl_Y_" select="($bc_Y_ - $BLKD_BIF_H - $BLKD_MOD_BIF_GAP_H)"/>
+                       <use  x="{$bcl_X_}"   y="{$bcl_Y_}"  xlink:href="#{@BUSSTD}_BifLabel"/>
+                       
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="($bcl_X_ + ceiling($BLKD_BIF_W div 2))"/>
+                               <xsl:with-param name="iY"               select="($bcl_Y_ + ceiling($BLKD_BIF_H div 2) + 3)"/>
+                               <xsl:with-param name="iText"    select="$mpmcBifName_"/>
+                               <xsl:with-param name="iClass"   select="'mpmc_biflabel'"/>
+                       </xsl:call-template>    
+                                 
+
+                       <!-- Place the MPMC bif -->
+                       <use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{@BUSSTD}_busconn_{$mpmcBifType_}"/>
+                       
+                       <xsl:variable name="bcArrow_X_" select="($bc_X_ +  ceiling($BLKD_BIFC_W div 2) - ceiling($BLKD_BUS_ARROW_H div 2))"/>
+                       <xsl:variable name="bcArrow_Y_" select="($bc_Y_ + $BLKD_BIFC_H - 3)"/>
+                       
+                       <!-- Place the MPMC Arrow -->
+                       <use   x="{$bcArrow_X_}"   y="{$bcArrow_Y_}"  xlink:href="#{@BUSSTD}_BusArrowNorth"/>
+                       
+                       <!-- 
+                               Place a block to cover the gap btw MPMC and top of Bus Lane Space, or to the correct SBS 
+                               For non SBS connections a vertical block will already have been drawn to the top of the
+                               space.
+                       -->
+                       
+                       <xsl:variable name="sbsDy_">
+                               <xsl:choose>
+                                       <xsl:when test="@IS_SBSCONN"><xsl:value-of select="2 + ($G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $busName_)]/@BUS_INDEX * $BLKD_SBS_LANE_H)"/></xsl:when>
+                                       <xsl:when test="not(@IS_SBSCONN)">0</xsl:when>
+                                       <xsl:otherwise>0></xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="mpmcBusHeight_">
+                               <xsl:choose>
+                                       <xsl:when    test="(@IS_SBSCONN)"><xsl:value-of select="($G_SharedBus_Y - ($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4) + $sbsDy_)"/></xsl:when>
+                                       <xsl:when test="not(@IS_SBSCONN)">
+                                               <xsl:choose>
+                                                       <xsl:when test="($space_y_ &gt;= ($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4 + $sbsDy_))">
+                                                               <xsl:value-of select="($space_y_ - ($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4 + $sbsDy_))"/>
+                                                       </xsl:when>
+                                                       <xsl:when test="($space_y_ &lt; ($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4 + $sbsDy_))">
+                                                               <xsl:value-of select="(($bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4 + $sbsDy_) - $space_y_)"/>
+                                                       </xsl:when>
+                                               </xsl:choose>
+                                       </xsl:when>
+                                       <xsl:otherwise><xsl:value-of select="$BLKD_BIFC_H"/></xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <rect x="{$bcArrow_X_ + $BLKD_BUS_ARROW_G}" 
+                                 y="{$bcArrow_Y_ + $BLKD_BUS_ARROW_W + 4}"  
+                                 width= "{$BLKD_P2P_BUS_W}" 
+                                 height="{$mpmcBusHeight_}"  
+                             style="stroke:none; fill:{$busColor_}"/>  
+                       
+                       <!-- place the bus label here -->
+
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="($bcArrow_X_ + $BLKD_BUS_ARROW_W + 6)"/>
+                               <xsl:with-param name="iY"               select="($bcArrow_Y_ + ceiling($mpmcBusHeight_ div 2) + 6)"/>
+                               <xsl:with-param name="iText"    select="$busName_"/>
+                               <xsl:with-param name="iClass"   select="'p2pbus_label'"/>
+                       </xsl:call-template>    
+                       
+               </xsl:for-each>                         
+       </xsl:for-each> 
+       
+</xsl:template>
+       
+       
+<!-- ======================================================================= -->
+<!--                         FUNCTION TEMPLATE                               -->
+<!--                                                                                                                                            -->
+<!--  Draw bus lane spaces on the Block Diagram                                                                 -->
+<!-- ======================================================================= -->
+<xsl:template name="Draw_BlkDiagram_BusLaneSpaces">
+       
+       <xsl:variable name="lastStack_" select="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH) - 1"/>
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[@EAST]">
+               <xsl:sort select="@EAST" data-type="number"/>
+                       
+               <xsl:call-template name="Draw_BlkDiagram_BusLaneSpace">
+                       <xsl:with-param name="iStackToEast"  select="@EAST"/>
+               </xsl:call-template>
+       </xsl:for-each> 
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@WEST = $lastStack_)]">
+               <xsl:call-template name="Draw_BlkDiagram_BusLaneSpace">
+                       <xsl:with-param name="iStackToWest"  select="$lastStack_"/>
+               </xsl:call-template>
+       </xsl:for-each> 
+                       
+</xsl:template>
+       
+<xsl:template name="Draw_BlkDiagram_BusLaneSpace">
+       
+       <xsl:param name="iStackToEast" select="'NONE'"/>
+       <xsl:param name="iStackToWest" select="'NONE'"/>
+       
+       <xsl:variable name="spaceAbvSbs_H_">
+               <xsl:call-template name="F_Calc_Space_AbvSbs_Height">
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>
+       </xsl:variable> 
+       
+       <xsl:variable name="spaceBlwSbs_H_">
+               <xsl:call-template name="F_Calc_Space_BlwSbs_Height">
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>
+       </xsl:variable> 
+       
+       <xsl:variable name="space_line_x_">
+               <xsl:call-template name="F_Calc_Space_X">
+                       <xsl:with-param name="iStackToEast"  select="$iStackToEast"/>
+                       <xsl:with-param name="iStackToWest"  select="$iStackToWest"/>
+               </xsl:call-template>
+       </xsl:variable>
+       
+       <xsl:variable name="space_y_"   select="($G_SharedBus_Y - $spaceAbvSbs_H_ - $BLKD_PROC2SBS_GAP)"/>
+       <xsl:variable name="space_x_"   select="($BLKD_INNER_X + $G_Total_Bridges_W + $space_line_x_)"/>
+       
+       <xsl:variable name="stackToEast_">
+               <xsl:choose>
+                       <xsl:when test="not($iStackToEast = 'NONE')"><xsl:value-of select="$iStackToEast"/></xsl:when>
+                       <xsl:otherwise>NONE</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable> 
+       
+       <xsl:variable name="stackToWest_">
+               <xsl:choose>
+                       <xsl:when test=" not($iStackToWest = 'NONE')"><xsl:value-of select="$iStackToWest"/></xsl:when>
+                       <xsl:when test="(not($iStackToEast = 'NONE') and not($iStackToEast = '0'))"><xsl:value-of select="($iStackToEast - 1)"/></xsl:when>
+                       <xsl:otherwise>NONE</xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable> 
+       
+               
+       <xsl:variable name="space_Name_">
+               <xsl:call-template name="F_generate_Space_Name"> 
+                       <xsl:with-param name="iStackToEast" select="$stackToEast_"/>
+                       <xsl:with-param name="iStackToWest" select="$stackToWest_"/>
+               </xsl:call-template>            
+       </xsl:variable> 
+       
+<!--   
+       <xsl:message>StackToEast is <xsl:value-of select="$iStackToEast"/></xsl:message>
+       <xsl:message>StackToWest is <xsl:value-of select="$iStackToWest"/></xsl:message>
+       <xsl:message>SpaceName is <xsl:value-of select="$space_Name_"/></xsl:message>
+-->    
+               
+       <use   x="{$space_x_}"    y="{$space_y_}"  xlink:href="#{$space_Name_}"/> 
+       
+</xsl:template>
+       
+       
+<!-- =========================================================================== -->
+<!--                          FUNCTION TEMPLATE                                  -->
+<!--                                                                                                                                                    -->
+<!--  Draw Bridges on the Block Diagram                                                                                         -->
+<!-- =========================================================================== -->
+<xsl:template name="Draw_BlkDiagram_Bridges">
+       
+       <!-- First save all the bridge indexs in a variable      -->
+       <xsl:variable name="bridgeShapes_">
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE/BUSCONNS[(@ORIENTED = 'WEST')]/BUSCONN"> 
+                       <BRIDGE BUS_INDEX="{@BUS_INDEX}" INSTANCE="{../../@INSTANCE}" POSITION="{(position() -1)}"/>
+                       <BRIDGECONN BUS_INDEX="{@BUS_INDEX}" INSTANCE="{../../@INSTANCE}" ORIENTED="{../@ORIENTED}" POSITION="{(position()  - 1)}" BUSSTD="{@BUSSTD}" TYPE="{@TYPE}"/>
+                       <!-- So both bus conns have same position.... -->
+                       <xsl:if test="../../BUSCONNS[(@ORIENTED = 'EAST')]">
+                               <BRIDGECONN BUS_INDEX="{../../BUSCONNS[(@ORIENTED ='EAST')]/BUSCONN/@BUS_INDEX}" INSTANCE="{../../@INSTANCE}" ORIENTED="EAST" POSITION="{(position()  - 1)}"   BUSSTD="{../../BUSCONNS[(@ORIENTED = 'EAST')]/BUSCONN/@BUSSTD}" TYPE="{../../BUSCONNS[(@ORIENTED = 'EAST')]/BUSCONN/@TYPE}"/>
+                       </xsl:if>
+               </xsl:for-each>
+       </xsl:variable>
+<!--                           
+                       <xsl:message>Found an east connection on <xsl:value-of select="../../@INSTANCE"/></xsl:message>
+-->                            
+       <!-- Now layout the bridge shapes between the shared busses      -->
+       <xsl:for-each select="exsl:node-set($bridgeShapes_)/BRIDGE">
+               <xsl:sort select="@POSITION" data-type="number"/>
+               
+               <xsl:variable name="brdgPosition_"  select="@POSITION"/>
+               <xsl:variable name="brdgInstance_"  select="@INSTANCE"/>
+               
+               <xsl:variable name="min_bus_idx_" select="math:min(exsl:node-set($bridgeShapes_)/BRIDGECONN[(@POSITION = $brdgPosition_)]/@BUS_INDEX)"/>
+<!--           
+               <xsl:variable name="max_bus_idx_" select="math:max(exsl:node-set($bridgeShapes_)/BRIDGECONN[(@POSITION = $brdgPosition_)]/@BUS_INDEX)"/>
+               
+       <xsl:message>Maximum index <xsl:value-of select="$max_bus_idx_"/></xsl:message>
+       <xsl:message>Minimum index <xsl:value-of select="$min_bus_idx_"/></xsl:message>
+-->
+               
+               
+               <xsl:variable name="brdg_X_"  select="($BLKD_INNER_X + $BLKD_BRIDGE_GAP + $BLKD_BUS_LANE_W + (@POSITION * ($BLKD_MOD_W + ($BLKD_BUS_LANE_W * 2))))"/>   
+               <xsl:variable name="brdg_Y_"  select="($G_SharedBus_Y  + ($min_bus_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_SBS_LANE_H div 2) - ceiling($BLKD_MOD_H div 2))"/>
+               
+               <use  x="{$brdg_X_}"  y="{$brdg_Y_}"  xlink:href="#symbol_{$brdgInstance_}"/>   
+       </xsl:for-each> 
+       
+               
+       
+<!--   
+       <xsl:message>Found <xsl:value-of select="count(exsl:node-set($bridgeShapes_)/BRIDGECONN)"/> busconns </xsl:message>
+               <xsl:message>Drawing connection for bridge <xsl:value-of select="$brdgInstance_"/> at <xsl:value-of select="@POSITION"/> </xsl:message>
+-->    
+       
+       <xsl:for-each select="exsl:node-set($bridgeShapes_)/BRIDGECONN">
+               <xsl:sort select="@POSITION" data-type="number"/>
+               
+               <xsl:variable name="brdgInstance_"  select="@INSTANCE"/>
+               <xsl:variable name="brdgPosition_"  select="@POSITION"/>
+               
+               <xsl:variable name="busColor_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="@BUSSTD"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+               
+               <xsl:variable name="min_bus_idx_" select="math:min(exsl:node-set($bridgeShapes_)/BRIDGECONN[(@POSITION = $brdgPosition_)]/@BUS_INDEX)"/>
+               <xsl:variable name="brdg_Y1_"     select="($G_SharedBus_Y  + ($min_bus_idx_ * $BLKD_SBS_LANE_H) + ceiling($BLKD_SBS_LANE_H div 2) - ceiling($BLKD_MOD_H div 2))"/>
+               <xsl:variable name="brdg_X_"      select="($BLKD_INNER_X   + $BLKD_BRIDGE_GAP + $BLKD_BUS_LANE_W + (@POSITION * ($BLKD_MOD_W + ($BLKD_BUS_LANE_W * 2))))"/>     
+               
+               <xsl:variable name="bc_Y_"        select="$brdg_Y1_ + $BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V + ceiling($BLKD_BIF_H div 2) - ceiling($BLKD_BIFC_H div 2)"/>  
+               <xsl:variable name="bc_X_">
+                       <xsl:choose>
+                               <xsl:when test="@ORIENTED='WEST'">
+                                       <xsl:value-of select="($brdg_X_ - $BLKD_BIFC_W)"/>
+                               </xsl:when>
+                               <xsl:when test="@ORIENTED='EAST'">
+                                       <xsl:value-of select="($brdg_X_ + $BLKD_MOD_W)"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+               
+               <!-- Layout the bus conn -->
+               <use   x="{$bc_X_}"   y="{$bc_Y_}"  xlink:href="#{@BUSSTD}_busconn_{@TYPE}"/>
+               
+               <!-- Figure out the positions of the lines -->
+               
+<!--           
+               <xsl:variable name="vert_line_x_"  select="$bc_X_    + ceiling($BLKD_BIFC_W div 2)"/>
+               <xsl:message>vert line x <xsl:value-of select="$vert_line_x_"/></xsl:message>
+               <xsl:message>bus index <xsl:value-of select="@BUS_INDEX"/></xsl:message>
+-->            
+               
+               <xsl:variable name="vert_line_x_">
+                       <xsl:choose>
+                               <xsl:when test="@ORIENTED='WEST'">
+                                       <xsl:value-of select="($bc_X_ - ($BLKD_BUS_LANE_W - $BLKD_BIFC_W))"/>
+                               </xsl:when>
+                               <xsl:when test="@ORIENTED='EAST'">
+                                       <xsl:value-of select="($bc_X_ + ($BLKD_BUS_LANE_W - $BLKD_P2P_BUS_W))"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+               
+               <!-- At least one of the points is going to be the bus -->
+<!--           
+               <xsl:variable name="vert_line_y1_" select="($G_SharedBus_Y  + $BLKD_PROC2SBS_GAP + (@BUS_INDEX * $BLKD_SBS_LANE_H))"/>
+-->            
+               <xsl:variable name="vert_line_y1_" select="($G_SharedBus_Y  + (@BUS_INDEX * $BLKD_SBS_LANE_H))"/>
+               <xsl:variable name="vert_line_y2_" select="$bc_Y_ + ceiling($BLKD_BIFC_H div 2)"/>
+               
+               <xsl:variable name="v_bus_ul_y_">
+                       <xsl:choose>
+                               <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
+                                       <xsl:value-of select="$vert_line_y2_"/>
+                               </xsl:when>
+                               <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
+                                       <xsl:value-of select="$vert_line_y1_"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+<!--           
+               <xsl:variable name="v_bus_ul_x_" select="$vert_line_x_"/>
+-->    
+               <xsl:variable name="v_bus_ul_x_">
+                       <xsl:choose>
+                               <xsl:when test="@ORIENTED='WEST'">
+                                       <xsl:value-of select="($vert_line_x_ + $BLKD_MOD_BIF_GAP_H)"/>
+                               </xsl:when>
+                               <xsl:when test="@ORIENTED='EAST'">
+                                       <xsl:value-of select="($vert_line_x_ - $BLKD_MOD_BIF_GAP_H)"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+               
+               
+               <xsl:variable name="v_bus_width_" select="$BLKD_P2P_BUS_W"/>
+               <xsl:variable name="v_bus_height_">
+                       <xsl:choose>
+                               <xsl:when test="$vert_line_y1_ &gt; $vert_line_y2_">
+                                       <xsl:value-of select="($vert_line_y1_ - $vert_line_y2_)"/>
+                               </xsl:when>
+                               <xsl:when test="$vert_line_y2_ &gt; $vert_line_y1_">
+                                       <xsl:value-of select="($vert_line_y2_ - $vert_line_y1_)"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+               
+               <xsl:variable name="h_bus_ul_x_">
+                       <xsl:choose>
+                               <xsl:when test="@ORIENTED='WEST'">
+                                       <xsl:value-of select="($bc_X_ - ($BLKD_BUS_LANE_W - $BLKD_BIFC_W) + $BLKD_MOD_BIF_GAP_H)"/>
+                               </xsl:when>
+                               <xsl:when test="@ORIENTED='EAST'">
+                                       <xsl:value-of select="($bc_X_ + $BLKD_BIFC_W - ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2))"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+               
+               <xsl:variable name="h_bus_ul_y_" select="$bc_Y_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+               <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+               
+               <xsl:variable name="h_bus_width_">
+                       <xsl:choose>
+                               <xsl:when test="@ORIENTED='WEST'">
+                                       <xsl:value-of select="(($bc_X_ + ceiling(($BLKD_BIFC_W - $BLKD_BIFC_Wi) div 2)) - $h_bus_ul_x_ + 1)"/>
+                               </xsl:when>
+                               <xsl:when test="@ORIENTED='EAST'">
+                                       <xsl:value-of select="(($v_bus_ul_x_ + $BLKD_P2P_BUS_W) - $h_bus_ul_x_)"/>
+                               </xsl:when>
+                       </xsl:choose>
+               </xsl:variable> 
+               
+               
+<!--           
+               <xsl:message>vert line y1 <xsl:value-of select="$vert_line_y1_"/></xsl:message>
+-->            
+               
+               <rect x="{$v_bus_ul_x_}" 
+                         y="{$v_bus_ul_y_ + 2}"  
+                         width= "{$v_bus_width_}" 
+                         height="{$v_bus_height_}" 
+                         style="stroke:none; fill:{$busColor_}"/>
+               
+               <rect x="{$h_bus_ul_x_}" 
+                         y="{$h_bus_ul_y_}"  
+                         width= "{$h_bus_width_}" 
+                         height="{$h_bus_height_}" 
+                         style="stroke:none; fill:{$busColor_}"/>
+               
+       </xsl:for-each> 
+       
+</xsl:template>
+       
+       
+       
+       
+<!-- =========================================================================== -->
+<!--                          FUNCTION TEMPLATE                                  -->
+<!--                                                                                                                                                    -->
+<!-- Draw the IP Bucket                                                                                                         -->
+<!-- =========================================================================== -->
+<xsl:template name="Draw_BlkDiagram_IPBucket">
+       
+       <!-- Draw IP Bucket --> 
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/IPBUCKET">
+       
+               <xsl:variable name="bucket_w_"  select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/>
+               <xsl:variable name="bucket_h_"  select="(($BLKD_MOD_BKTLANE_H * 2) + (($BLKD_MOD_H * @MODS_H) + ($BLKD_MOD_BUCKET_G * (@MODS_H - 1))))"/>
+               
+               <xsl:variable name="bucket_x_"  select="(ceiling($G_Total_Blkd_W div 2) - ceiling($bucket_w_ div 2))"/>
+               <xsl:variable name="bucket_y_"  select="($G_SharedBus_Y + $G_Total_SharedBus_H + $G_Max_Stack_BlwSbs_H + $BLKD_SBS2IP_GAP)"/>
+               
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="$bucket_x_"/>
+                       <xsl:with-param name="iY"               select="($bucket_y_ - 4)"/>
+                       <xsl:with-param name="iText"    select="'IP'"/>
+                       <xsl:with-param name="iClass"   select="'bkt_label'"/>
+               </xsl:call-template>
+               
+               <use   x="{$bucket_x_}"   y="{$bucket_y_}"  xlink:href="#ipbucket"/>
+               
+       </xsl:for-each>
+       
+</xsl:template>
+       
+       
+<xsl:template name="Draw_BlkDiagram_Key">
+       <use   x="{ceiling($G_Total_Blkd_W div 2) - ceiling($BLKD_KEY_W div 2)}"   y="0"  xlink:href="#BlkDiagram_Key"/> 
+</xsl:template>
+
+<xsl:template name="Define_BlkDiagram_Key">
+       
+       <xsl:variable name="key_col_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="'KEY'"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="key_lt_col_">
+               <xsl:call-template name="F_BusStd2RGB_LT">
+                       <xsl:with-param name="iBusStd" select="'KEY'"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <g id="KEY_IntrCntrl">
+               <rect  
+                       x="0"
+                       y="0"
+                       rx="3"
+                       ry="3"
+                       width= "{ceiling($BLKD_INTR_W div 2)}" 
+                       height="{$BLKD_INTR_H}" style="fill:{$key_lt_col_}; stroke:none; stroke-width:1"/> 
+                       
+               <line x1="0" 
+                         y1="{ceiling($BLKD_INTR_H div 4)}"
+                         x2="{ceiling($BLKD_INTR_W div 2)}" 
+                         y2="{ceiling($BLKD_INTR_H div 4)}" 
+                         style="stroke:{$COL_BLACK};stroke-width:2"/>
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="1.5"/>
+                       <xsl:with-param name="iY"               select="(7 + ceiling($BLKD_INTR_H div 2))"/>
+                       <xsl:with-param name="iText"    select="'x'"/>
+                       <xsl:with-param name="iClass"   select="'intr_symbol'"/>
+               </xsl:call-template>
+                       
+       </g>
+               
+       <g id="KEY_IntrdProc">
+               <rect  
+                       x="0"
+                       y="0"
+                       rx="3"
+                       ry="3"
+                       width= "{ceiling($BLKD_INTR_W div 2)}" 
+                       height="{$BLKD_INTR_H}" style="fill:{$key_lt_col_}; stroke:none; stroke-width:1"/> 
+                       
+               <line x1="0" 
+                         y1="{ceiling($BLKD_INTR_H div 4) - 2}"
+                         x2="{ceiling($BLKD_INTR_W div 2)}" 
+                         y2="{ceiling($BLKD_INTR_H div 4) - 2}" 
+                         style="stroke:{$COL_BLACK};stroke-width:1"/>
+                         
+               <line x1="0" 
+                         y1="{ceiling($BLKD_INTR_H div 4) + 2}"
+                         x2="{ceiling($BLKD_INTR_W div 2)}" 
+                         y2="{ceiling($BLKD_INTR_H div 4) + 2}" 
+                         style="stroke:{$COL_BLACK};stroke-width:1"/>
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="1.5"/>
+                       <xsl:with-param name="iY"               select="(7 + ceiling($BLKD_INTR_H div 2))"/>
+                       <xsl:with-param name="iText"    select="'x'"/>
+                       <xsl:with-param name="iClass"   select="'intr_symbol'"/>
+               </xsl:call-template>
+       </g>
+       
+       <g id="KEY_IntrSrc">
+               <rect  
+                       x="0"
+                       y="0"
+                       rx="3"
+                       ry="3"
+                       width= "{$BLKD_INTR_W}" 
+                       height="{ceiling($BLKD_INTR_H div 2)}" style="fill:{$key_lt_col_}; stroke:none; stroke-width:1"/> 
+                       
+               <line x1="{ceiling($BLKD_INTR_W div 2)}" 
+                         y1="0"
+                         x2="{ceiling($BLKD_INTR_W div 2)}" 
+                         y2="{ceiling($BLKD_INTR_H div 2)}" 
+                         style="stroke:{$COL_BLACK};stroke-width:1"/>
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'2'"/>
+                       <xsl:with-param name="iY"               select="'7'"/>
+                       <xsl:with-param name="iText"    select="'y'"/>
+                       <xsl:with-param name="iClass"   select="'intr_symbol'"/>
+               </xsl:call-template>
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(2 + ceiling($BLKD_INTR_W div 2))"/>
+                       <xsl:with-param name="iY"               select="'7'"/>
+                       <xsl:with-param name="iText"    select="'x'"/>
+                       <xsl:with-param name="iClass"   select="'intr_symbol'"/>
+               </xsl:call-template>
+       </g>
+       
+       
+       <g id="BlkDiagram_Key">
+               <rect 
+              x="0"
+                         y="0"
+                     width= "{$BLKD_KEY_W}"
+                     height="{$BLKD_KEY_H}"
+                         style="fill:{$COL_BG}; stroke:none;"/>                
+                         
+               <rect x="0"
+                         y="0"
+                     width= "{$BLKD_KEY_W}"
+                     height="16"
+                         style="fill:{$COL_BG}; stroke:none;"/>                
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="ceiling($BLKD_KEY_W div 2)"/>
+                       <xsl:with-param name="iY"               select="'14'"/>
+                       <xsl:with-param name="iText"    select="'KEY'"/>
+                       <xsl:with-param name="iClass"   select="'key_title'"/>
+               </xsl:call-template>
+                         
+               <rect x="0"
+                         y="16"
+                     width= "{$BLKD_KEY_W}"
+                     height="16"
+                         style="fill:{$COL_BG_LT}; stroke:none;"/>             
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="ceiling($BLKD_KEY_W div 2)"/>
+                       <xsl:with-param name="iY"               select="'30'"/>
+                       <xsl:with-param name="iText"    select="'SYMBOLS'"/>
+                       <xsl:with-param name="iClass"   select="'key_header'"/>
+               </xsl:call-template>
+                         
+               <use  x="32"  y="47"  xlink:href="#KEY_BifLabel" transform="scale(0.75)"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'12'"/>
+                       <xsl:with-param name="iY"               select="'60'"/>
+                       <xsl:with-param name="iText"    select="'bus interface'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                         
+               <use   x="20"  y="68"  xlink:href="#KEY_SharedBus"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'12'"/>
+                       <xsl:with-param name="iY"               select="'89'"/>
+                       <xsl:with-param name="iText"    select="'shared bus'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                         
+               
+<!-- 
+       ==================================                                      
+                       BUS CONNECTIONS
+       ==================================                                      
+-->            
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'110'"/>
+                       <xsl:with-param name="iY"               select="'47'"/>
+                       <xsl:with-param name="iText"    select="'Bus connections'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_ul'"/>
+               </xsl:call-template>
+                         
+               <use   x="110"  y="58"  xlink:href="#KEY_busconn_MASTER"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'140'"/>
+                       <xsl:with-param name="iY"               select="'72'"/>
+                       <xsl:with-param name="iText"    select="'master or initiator'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                         
+               <use   x="110"  y="{58 + (($BLKD_BIFC_H  + 4) * 1)}"  xlink:href="#KEY_busconn_SLAVE"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'140'"/>
+                       <xsl:with-param name="iY"               select="(72 + (($BLKD_BIFC_H + 4) * 1))"/>
+                       <xsl:with-param name="iText"    select="'slave or target'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                         
+               <use   x="110"  y="{58 + (($BLKD_BIFC_H  + 4) * 2)}"  xlink:href="#KEY_busconn_MASTER_SLAVE"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'140'"/>
+                       <xsl:with-param name="iY"               select="(72 + (($BLKD_BIFC_H + 4) * 2))"/>
+                       <xsl:with-param name="iText"    select="'master slave'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                         
+                         
+               <use   x="110"  y="{58 + (($BLKD_BIFC_H  + 4) * 3)}"  xlink:href="#KEY_busconn_MONITOR"/>
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'140'"/>
+                       <xsl:with-param name="iY"               select="(72 + (($BLKD_BIFC_H + 4) * 3))"/>
+                       <xsl:with-param name="iText"    select="'monitor'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                         
+<!-- 
+       ==================================                                      
+                       EXTERNAL PORTS
+       ==================================                                      
+-->            
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'258'"/>
+                       <xsl:with-param name="iY"               select="'47'"/>
+                       <xsl:with-param name="iText"    select="'External Ports'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_ul'"/>
+               </xsl:call-template>                      
+                         
+               <use   x="258"  y="58"  xlink:href="#KEY_INPort"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'288'"/>
+                       <xsl:with-param name="iY"               select="'72'"/>
+                       <xsl:with-param name="iText"    select="'input'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                         
+               <use   x="258"  y="{58 + ($BLKD_IOP_H * 1) + 4}"  xlink:href="#KEY_OUTPort"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'288'"/>
+                       <xsl:with-param name="iY"               select="(72 + ($BLKD_IOP_H * 1) + 4)"/>
+                       <xsl:with-param name="iText"    select="'output'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                       
+               <use   x="258"  y="{58 + ($BLKD_IOP_H * 2) + 8}"  xlink:href="#KEY_INOUTPort"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'288'"/>
+                       <xsl:with-param name="iY"               select="(72 + ($BLKD_IOP_H * 2) + 8)"/>
+                       <xsl:with-param name="iText"    select="'inout'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+               
+<!-- 
+       ==================================                                      
+                       INTERRUPTS 
+       ==================================                                      
+-->            
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'380'"/>
+                       <xsl:with-param name="iY"               select="'47'"/>
+                       <xsl:with-param name="iText"    select="'Interrupts'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_ul'"/>
+               </xsl:call-template>                      
+                         
+               <use   x="380"  y="58"  xlink:href="#KEY_IntrCntrl"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'396'"/>
+                       <xsl:with-param name="iY"               select="'64'"/>
+                       <xsl:with-param name="iText"    select="'Interrupt'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_small'"/>
+               </xsl:call-template>                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'396'"/>
+                       <xsl:with-param name="iY"               select="'74'"/>
+                       <xsl:with-param name="iText"    select="'Controller'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_small'"/>
+               </xsl:call-template>                      
+                         
+               
+               <use   x="380"  y="88"  xlink:href="#KEY_IntrdProc"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'396'"/>
+                       <xsl:with-param name="iY"               select="'94'"/>
+                       <xsl:with-param name="iText"    select="'Interrupt'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'396'"/>
+                       <xsl:with-param name="iY"               select="'104'"/>
+                       <xsl:with-param name="iText"    select="'Target'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_small'"/>
+               </xsl:call-template>                      
+               
+               
+               <use   x="380"  y="118"  xlink:href="#KEY_IntrSrc"/> 
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'400'"/>
+                       <xsl:with-param name="iY"               select="'124'"/>
+                       <xsl:with-param name="iText"    select="'Interrupt'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_small'"/>
+               </xsl:call-template>                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'400'"/>
+                       <xsl:with-param name="iY"               select="'134'"/>
+                       <xsl:with-param name="iText"    select="'Source'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_small'"/>
+               </xsl:call-template>                      
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'360'"/>
+                       <xsl:with-param name="iY"               select="'146'"/>
+                       <xsl:with-param name="iText"    select="'X = Controller ID'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_small'"/>
+               </xsl:call-template>                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'360'"/>
+                       <xsl:with-param name="iY"               select="'156'"/>
+                       <xsl:with-param name="iText"    select="'Y = Interrupt Priority'"/>
+                       <xsl:with-param name="iClass"   select="'key_label_small'"/>
+               </xsl:call-template>                      
+               
+<!-- 
+       ==================================                                      
+                       COLORS 
+       ==================================                                      
+-->            
+               <rect x="0"
+                         y="160"
+                     width= "{$BLKD_KEY_W}"
+                     height="16"
+                         style="fill:{$COL_BG_LT}; stroke:none;"/>             
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="ceiling($BLKD_KEY_W div 2)"/>
+                       <xsl:with-param name="iY"               select="'172'"/>
+                       <xsl:with-param name="iText"    select="'COLORS'"/>
+                       <xsl:with-param name="iClass"   select="'key_header'"/>
+               </xsl:call-template>
+               
+<!-- 
+               <text class="keylblul"
+              x="110"
+                         y="190">Bus Standards</text>            
+-->                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="'110'"/>
+                       <xsl:with-param name="iY"               select="'190'"/>
+                       <xsl:with-param name="iText"    select="'Bus Standard'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+               <xsl:variable name="dcr_col_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'DCR'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+               
+               <rect x="{12 + ((12 + $BLKD_BIFC_W + 36) * 0)}"
+                         y="200"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$dcr_col_}; stroke:none;"/>              
+                         
+<!-- 
+               <text class="keylabel"
+              x="{12  + $BLKD_BIFC_W + 4}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 1)}">DCR</text>
+-->                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  + $BLKD_BIFC_W + 4)"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 1))"/>
+                       <xsl:with-param name="iText"    select="'DCR'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+                         
+               <xsl:variable name="fcb_col_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'FCB'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+               
+               <rect x="{12  + ((12 + $BLKD_BIFC_W + 36) * 0)}"
+                         y="{200 + (($BLKD_BIFC_H + 4) * 1)}"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$fcb_col_}; stroke:none;"/>              
+                         
+<!-- 
+               <text class="keylabel"
+              x="{12  + $BLKD_BIFC_W + 4}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 2)}">FCB</text>                  
+-->                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  + $BLKD_BIFC_W + 4)"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 2))"/>
+                       <xsl:with-param name="iText"    select="'FCB'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+               <xsl:variable name="fsl_col_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'FSL'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+                         
+               <rect x="{12 + ((12 + $BLKD_BIFC_W + 36) * 1)}"
+                         y="200"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$fsl_col_}; stroke:none;"/>              
+<!-- 
+               <text class="keylabel"
+              x="{12  +  ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 1)}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 1)}">FSL</text>                  
+-->
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  +  ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 1))"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 1))"/>
+                       <xsl:with-param name="iText"    select="'FSL'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+               <xsl:variable name="col_lmb_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'LMB'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+                         
+               <rect x="{12 + ((12 + $BLKD_BIFC_W + 36) * 1)}"
+                         y="{200 + (($BLKD_BIFC_H + 4) * 1)}"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$col_lmb_}; stroke:none;"/>              
+<!--
+               <text class="keylabel"
+              x="{12  + ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 1)}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 2)}">LMB</text>                  
+-->                      
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  + ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 1))"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 2))"/>
+                       <xsl:with-param name="iText"    select="'LMB'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+               <xsl:variable name="opb_col_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'OPB'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+                         
+               <rect 
+              x="{12 + ((12 + $BLKD_BIFC_W + 36) * 2)}"
+                         y="200"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$opb_col_}; stroke:none;"/>              
+<!-- 
+               <text class="keylabel"
+              x="{12  +  ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 2)}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 1)}">OPB</text>
+-->                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  +  ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 2))"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 1))"/>
+                       <xsl:with-param name="iText"    select="'OPB'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+               <xsl:variable name="plb_col_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'PLB'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+               <rect 
+              x="{12 + ((12 + $BLKD_BIFC_W + 36) * 2)}"
+                         y="{200 + (($BLKD_BIFC_H + 4) * 1)}"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$plb_col_}; stroke:none;"/>              
+<!--
+               <text class="keylabel"
+              x="{12  +  ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 2)}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 2)}">PLB</text>                  
+-->                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  +  ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 2))"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 2))"/>
+                       <xsl:with-param name="iText"    select="'PLB'"/>
+                       <xsl:with-param name="iClass"   select="'key_header'"/>
+               </xsl:call-template>
+               
+                        
+               <xsl:variable name="ocm_col_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'OCM'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+                         
+               <rect 
+              x="{12 + ((12 + $BLKD_BIFC_W + 36) * 3)}"
+                         y="200"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$ocm_col_}; stroke:none;"/>              
+<!--
+               <text class="keylabel"
+              x="{12  + ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 3)}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 1)}">SOCM</text>
+ -->                     
+               
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  + ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 3))"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 1))"/>
+                       <xsl:with-param name="iText"    select="'SOCM'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+               
+               <xsl:variable name="xil_p2p_col_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'XIL'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+                         
+               <rect 
+              x="{12 + ((12 + $BLKD_BIFC_W + 36) * 3)}"
+                         y="{200 + (($BLKD_BIFC_H + 4) * 1)}"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$xil_p2p_col_}; stroke:none;"/>          
+<!--
+               <text class="keylabel"
+              x="{12  + ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 3)}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 2)}">Xilinx P2P</text>
+-->                      
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  + ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 3))"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 2))"/>
+                       <xsl:with-param name="iText"    select="'Xilinx P2P'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+                         
+               <xsl:variable name="user_p2p_col_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="'USER'"/>
+                       </xsl:call-template>    
+               </xsl:variable>
+                         
+               <rect x="{12 + ((12 + $BLKD_BIFC_W + 36) * 4)}"
+                         y="200"
+                     width= "{$BLKD_BIFC_H}"
+                     height="{$BLKD_BIFC_W}"
+                         style="fill:{$user_p2p_col_}; stroke:none;"/>         
+<!-- 
+               <text class="keylabel"
+              x="{12  + ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 4)}"
+                         y="{200 + (($BLKD_BIF_H + 4) * 1)}">USER P2P</text>             
+-->                      
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="(12  + ($BLKD_BIFC_W + 4) + ((12 + $BLKD_BIFC_W + 36) * 4))"/>
+                       <xsl:with-param name="iY"               select="(200 + (($BLKD_BIF_H + 4) * 1))"/>
+                       <xsl:with-param name="iText"    select="'USER P2P'"/>
+                       <xsl:with-param name="iClass"   select="'key_label'"/>
+               </xsl:call-template>
+               
+</g>   
+</xsl:template>
+
+<xsl:template name="Define_BlkDiagram_Specs">
+
+       <xsl:param name="iArch"       select="'NA'"/>
+       <xsl:param name="iPart"       select="'NA'"/>
+       <xsl:param name="iTimeStamp"  select="'NA'"/>
+       <xsl:param name="iEdkVersion" select="'NA'"/>
+                       
+       <g id="BlkDiagram_Specs">
+               <rect 
+              x="0"
+                         y="0"
+                     width= "{$BLKD_SPECS_W}"
+                     height="{$BLKD_SPECS_H}"
+                         style="fill:{$COL_BG}; stroke:none;"/>                
+                         
+               <rect 
+              x="0"
+                         y="0"
+                     width= "{$BLKD_SPECS_W}"
+                     height="16"
+                         style="fill:{$COL_BG}; stroke:none;"/>                
+<!-- 
+       ==================================                                      
+                                       SPEC HEADER
+       ==================================                                      
+-->            
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'key_title'"/>
+                       <xsl:with-param name="iX"               select="ceiling($BLKD_SPECS_W div 2)"/>
+                       <xsl:with-param name="iY"               select="'14'"/>
+                       <xsl:with-param name="iText"    select="'SPECS'"/>
+               </xsl:call-template>                      
+<!-- 
+               <text class="keytitle"
+              x="{ceiling($BLKD_SPECS_W div 2)} "
+                         y="14">SPECS</text>
+-->                      
+       
+<!-- 
+       ==================================                                      
+                       EDK VERSION
+       ==================================                                      
+-->            
+               <rect x="0"
+                         y="20"
+                     width= "{$BLKD_SPECS_W}"
+                     height="16"
+                         style="fill:{$COL_BG_LT}; stroke:none;"/>             
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'blkd_spec_name'"/>
+                       <xsl:with-param name="iX"               select="'4'"/>
+                       <xsl:with-param name="iY"               select="'32'"/>
+                       <xsl:with-param name="iText"    select="'EDK VERSION'"/>
+               </xsl:call-template>
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'blkd_spec_value_mid'"/>
+                       <xsl:with-param name="iX"               select="($BLKD_SPECS_W + 1) - ceiling($BLKD_SPECS_W div 5)"/>
+                       <xsl:with-param name="iY"               select="'32'"/>
+                       <xsl:with-param name="iText"    select="$iEdkVersion"/>
+               </xsl:call-template>                      
+               
+<!-- 
+       ==================================                                      
+                                       ARCH
+       ==================================                                      
+-->            
+               <rect x="0"
+                         y="40"
+                     width= "{$BLKD_SPECS_W}"
+                     height="16"
+                         style="fill:{$COL_BG_LT}; stroke:none;"/>             
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'blkd_spec_name'"/>
+                       <xsl:with-param name="iX"               select="'4'"/>
+                       <xsl:with-param name="iY"               select="'52'"/>
+                       <xsl:with-param name="iText"    select="'ARCH'"/>
+               </xsl:call-template>                      
+               
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'blkd_spec_value_mid'"/>
+                       <xsl:with-param name="iX"               select="($BLKD_SPECS_W + 1) - ceiling($BLKD_SPECS_W div 5)"/>
+                       <xsl:with-param name="iY"               select="'52'"/>
+                       <xsl:with-param name="iText"    select="$iArch"/>
+               </xsl:call-template>                      
+               
+<!--           
+               <text class="specsvalue"
+              x="{($BLKD_SPECS_W + 1) - (string-length($blkd_arch) * 6.5)}"
+                         y="52"><xsl:value-of select="$blkd_arch"/></text>
+               <text class="specsvaluemid"
+              x="{($BLKD_SPECS_W + 1) - ceiling($BLKD_SPECS_W div 5)}"
+                         y="52"><xsl:value-of select="$iArch"/></text>
+-->            
+
+<!-- 
+       ==================================                                      
+                                       PART
+       ==================================                                      
+-->            
+               <rect x="0"
+                         y="60"
+                     width= "{$BLKD_SPECS_W}"
+                     height="16"
+                         style="fill:{$COL_BG_LT}; stroke:none;"/>             
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'blkd_spec_name'"/>
+                       <xsl:with-param name="iX"               select="'4'"/>
+                       <xsl:with-param name="iY"               select="'72'"/>
+                       <xsl:with-param name="iText"    select="'PART'"/>
+               </xsl:call-template>                      
+                         
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'blkd_spec_value_mid'"/>
+                       <xsl:with-param name="iX"               select="($BLKD_SPECS_W + 1) - ceiling($BLKD_SPECS_W div 5)"/>
+                       <xsl:with-param name="iY"               select="'72'"/>
+                       <xsl:with-param name="iText"    select="$iPart"/>
+               </xsl:call-template>                      
+               
+<!-- 
+       ==================================                                      
+                                       TIMESTAMP
+       ==================================                                      
+-->            
+                         
+               <rect x="0"
+                         y="80"
+                     width= "{$BLKD_SPECS_W}"
+                     height="16"
+                         style="fill:{$COL_BG_LT}; stroke:none;"/>             
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'blkd_spec_name'"/>
+                       <xsl:with-param name="iX"               select="'4'"/>
+                       <xsl:with-param name="iY"               select="'92'"/>
+                       <xsl:with-param name="iText"    select="'GENERATED'"/>
+               </xsl:call-template>                      
+               
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iClass"   select="'blkd_spec_value_mid'"/>
+                       <xsl:with-param name="iX"               select="($BLKD_SPECS_W  + 1) - (string-length($iTimeStamp) * 3.5)"/>
+                       <xsl:with-param name="iY"               select="'92'"/>
+                       <xsl:with-param name="iText"    select="$iTimeStamp"/>
+               </xsl:call-template>                      
+       </g>    
+</xsl:template>
+       
+       
+</xsl:stylesheet>
+
+<!-- =========================================================================== -->
+<!--                          FUNCTION TEMPLATE                                  -->
+<!--                                                                                                                                                    -->
+<!-- =========================================================================== -->
\ No newline at end of file
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Peripherals.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Peripherals.xsl
new file mode 100644 (file)
index 0000000..d4c458d
--- /dev/null
@@ -0,0 +1,1582 @@
+<?xml version="1.0" standalone="no"?>
+                       
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:math="http://exslt.org/math"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink"
+           extension-element-prefixes="math">
+                               
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+                       
+<!--   
+<xsl:variable name="INF_H"   select="$BIF_H       + ceiling($BIF_H div 2)"/>                           
+<xsl:variable name="INF_W"   select="($BIF_W * 2) + $BIF_GAP"/>
+-->    
+
+
+<!-- ======================= DEF FUNCTIONS =================================== -->
+<xsl:template name="Define_IPBucket">
+                       
+       <xsl:for-each select="BLKDIAGRAM/IPBUCKET">
+               
+               <xsl:for-each select="MODULE">  
+                       <xsl:sort data-type="text" select="@MODTYPE" order="ascending"/>
+                       
+                       <xsl:call-template name="Define_IPBucketModule">
+                               <xsl:with-param name="iIPType"   select="@MODTYPE"/>
+                               <xsl:with-param name="iIPName"   select="@INSTANCE"/>
+                       </xsl:call-template>    
+                       
+               </xsl:for-each>         
+               
+               <g id="ipbucket">
+                       <xsl:variable name="bucket_w_"  select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/>
+                       <xsl:variable name="bucket_h_"  select="(($BLKD_MOD_BKTLANE_H * 2) + (($BLKD_MOD_H * @MODS_H) + ($BLKD_MOD_BUCKET_G * (@MODS_H - 1))))"/>
+               
+               <rect x="0" 
+                     y="0"  
+                         rx="4"
+                         ry="4"
+                     width= "{$bucket_w_}" 
+                     height="{$bucket_h_}" 
+                     style="stroke-width:2; stroke:{$COL_BLACK}; fill:{$COL_IORING_LT}"/>
+                                
+                       <xsl:variable name="bkt_mods_w_" select="@MODS_W"/>
+                       
+                       <xsl:for-each select="MODULE">  
+                               
+                               <xsl:variable name="clm_"   select="((     position() - 1)  mod $bkt_mods_w_)"/>
+                               <xsl:variable name="row_"   select="floor((position() - 1)  div $bkt_mods_w_)"/>
+                               
+                               <xsl:variable name="bk_x_"  select="$BLKD_MOD_BKTLANE_W + ($clm_ * ($BLKD_MOD_W + $BLKD_MOD_BUCKET_G))"/>
+                               <xsl:variable name="bk_y_"  select="$BLKD_MOD_BKTLANE_H + ($row_ * ($BLKD_MOD_H + $BLKD_MOD_BUCKET_G))"/>
+                               
+                                        
+                               <use x="{$bk_x_}"   
+                                        y="{$bk_y_}" 
+                                        xlink:href="#ipbktmodule_{@INSTANCE}"/>                                  
+                                        
+                                        
+                       </xsl:for-each>          
+                                        
+       </g>            
+       
+</xsl:for-each>        
+</xsl:template>        
+
+
+<xsl:template name="Define_UNKBucket">
+                       
+       <xsl:for-each select="BLKDIAGRAM/UNKBUCKET">
+       
+               <g id="unkbucket">
+                       <xsl:variable name="bucket_w_"  select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/>
+                       <xsl:variable name="bucket_h_"  select="(($BLKD_MOD_BKTLANE_H * 2) + (($BLKD_MOD_H * @MODS_H) + ($BLKD_MOD_BUCKET_G * (@MODS_H - 1))))"/>
+               
+               <rect x="0" 
+                     y="0"  
+                         rx="4"
+                         ry="4"
+                     width= "{$bucket_w_}" 
+                     height="{$bucket_h_}" 
+                     style="stroke-width:2; stroke:{$COL_BLACK}; fill:{$COL_BG_UNK}"/>
+                                
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@IS_PROMOTED and @IS_PENALIZED)]">   
+                       
+                       <xsl:variable name="bkt_mods_w_" select="@MODS_W"/>
+                               
+                               <xsl:variable name="mod_row_"    select="@BKTROW"/>     
+                               <xsl:variable name="row_mods_h_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/UNKBUCKET/BKTROW[(@INDEX = $mod_row_)]/@MODS_H"/> 
+
+<!--                           
+                               <xsl:message>The row module is <xsl:value-of select="@BKTROW"/></xsl:message>
+                               <xsl:message>The height of the module is <xsl:value-of select="$row_mods_h_"/></xsl:message>
+-->                            
+                               
+                               <xsl:variable name="bk_x_"  select="$BLKD_MOD_BKTLANE_W + (@MODS_X * ($BLKD_MOD_W + $BLKD_MOD_BUCKET_G))"/>
+                               <xsl:variable name="bk_y_"  select="$BLKD_MOD_BKTLANE_H + ($row_mods_h_ * ($BLKD_MOD_H + $BLKD_MOD_BUCKET_G))"/>
+                               
+                               <use x="{$bk_x_}"   
+                                        y="{$bk_y_}" 
+                                        xlink:href="#symbol_unkmodule_{@BKTROW}_{@MODS_X}"/>                             
+<!--                            
+-->                             
+
+                       </xsl:for-each>          
+
+                       
+               </g>            
+               
+       </xsl:for-each> 
+</xsl:template>        
+
+               
+<xsl:template name="Define_SBSBuckets">
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET">       
+               
+               <xsl:variable name="busStd_"    select="@BUSSTD"/>
+               <xsl:variable name="busName_"   select="@BUSNAME"/>
+<!--           
+               <xsl:variable name="busStd_"    select="BUSCONNS/BUSCONN/@BUSSTD"/>
+-->    
+               <xsl:variable name="bus_conn_w_" select="BUSCONNS/@BUSLANE_W"/>
+               
+               
+               <xsl:variable name="bktColor_">
+                       <xsl:call-template name="F_BusStd2RGB">
+                               <xsl:with-param name="iBusStd" select="$busStd_"/>
+                       </xsl:call-template>
+               </xsl:variable>
+               
+               <xsl:variable name="bktBgColor_">
+                       <xsl:call-template name="F_BusStd2RGB_LT">
+                               <xsl:with-param name="iBusStd" select="$busStd_"/>
+                       </xsl:call-template>
+               </xsl:variable>
+               
+               
+               <xsl:for-each select="MODULE">  
+                       
+                       <xsl:sort data-type="text" select="@MODTYPE" order="ascending"/>
+               
+                       <xsl:call-template name="Define_SBSBucketModule">
+                               <xsl:with-param name="iBifType"  select="$busStd_"/>
+                               <xsl:with-param name="iIPType"   select="@MODTYPE"/>
+                               <xsl:with-param name="iIPName"   select="@INSTANCE"/>
+                       </xsl:call-template>    
+                       
+               </xsl:for-each>         
+               
+               <g id="sbsbucket_{$busName_}">
+                       <xsl:variable name="bucket_w_"  select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/>
+                       <xsl:variable name="bucket_h_"  select="(($BLKD_MOD_BKTLANE_H * 2) + ((($BLKD_MOD_H + $BLKD_BIFC_H) * @MODS_H) + ($BLKD_MOD_BUCKET_G * (@MODS_H - 1))))"/>
+                       
+                       <rect x="0"
+                             y="0"  
+                                 rx="4"
+                                 ry="4"
+                             width= "{$bucket_w_}" 
+                             height="{$bucket_h_}" 
+                             style="stroke-width:2; stroke:{$bktColor_}; fill:{$bktBgColor_}"/>
+                                
+                       <xsl:variable name="bkt_mods_w_" select="@MODS_W"/>
+                       
+                       <xsl:for-each select="MODULE">  
+                               
+                               <xsl:sort data-type="text" select="@MODTYPE" order="ascending"/>
+                               
+                               <xsl:variable name="clm_"   select="((     position() - 1)  mod $bkt_mods_w_)"/>
+                               <xsl:variable name="row_"   select="floor((position() - 1)  div $bkt_mods_w_)"/>
+                               
+                               <xsl:variable name="bk_x_"  select="$BLKD_MOD_BKTLANE_W + ($clm_ * ($BLKD_MOD_W + $BLKD_MOD_BUCKET_G))"/>
+                               <xsl:variable name="bk_y_"  select="$BLKD_MOD_BKTLANE_H + ($row_ * ($BLKD_MOD_H + $BLKD_BIFC_H + $BLKD_MOD_BUCKET_G))"/>
+                                        
+                               <!-- Lay out the module in the bucket -->
+                                <use x="{$bk_x_}" y="{$bk_y_}"  xlink:href="#sbsbktmodule_{@INSTANCE}"/>                 
+                               
+                               <!-- Add its connection to the piece shared bus -->
+                               <xsl:variable name="h_bus_y_" select="$bk_y_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                               
+<!--                           
+                               <xsl:variable name="h_bus_x_" select="$bk_x_ - ($BLKD_MOD_BUCKET_G + ceiling($BLKD_MOD_W div 2))"/>
+-->    
+                               <xsl:variable name="h_bus_x_">
+                                       <xsl:choose>
+                                               <xsl:when test="($clm_ = '0')">0</xsl:when>
+                                       
+                                               <xsl:when test="not($clm_ = '0')">
+                                                       <xsl:value-of select="$bk_x_ - ($BLKD_MOD_BUCKET_G + ceiling($BLKD_MOD_W div 2))"/>
+                                               </xsl:when>
+                                       </xsl:choose>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:variable name="h_bus_y_" select="$bk_y_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W)"/>
+                               <xsl:message>h bus x <xsl:value-of select="$h_bus_x_"/></xsl:message>
+                               <xsl:message>h bus y <xsl:value-of select="$h_bus_y_"/></xsl:message>
+-->    
+                               <xsl:variable name="h_bus_height_" select="$BLKD_P2P_BUS_W"/>
+                               <xsl:variable name="h_bus_width_"  select="($bk_x_ - $h_bus_x_ + ceiling($BLKD_MOD_W div 2))"/> 
+                               
+                               <rect x="{$h_bus_x_}" 
+                                 y="{$h_bus_y_}"  
+                                 width= "{$h_bus_width_}" 
+                                 height="{$BLKD_P2P_BUS_W}" 
+                                 style="fill:{$bktColor_}"/>
+                               
+                       </xsl:for-each>
+                       
+                       <xsl:variable name="num_sbsbktmods_" select="count(MODULE)"/>
+                       <xsl:variable name="num_sbsbktrows_" select="ceiling($num_sbsbktmods_ div $BLKD_BKT_MODS_PER_ROW)"/>
+                       
+                       <!-- If there is more than one row, connect the rows with a vertical bar -->            
+                       <xsl:if test="($num_sbsbktrows_ &gt; 1)">
+                               
+                               <xsl:variable name="v_bus_x_"    select="$BLKD_MOD_BKTLANE_W + ($BLKD_MOD_W + $BLKD_MOD_BUCKET_G)"/>
+                               
+                               <xsl:variable name="bkt_top_"    select="$BLKD_MOD_BKTLANE_H + (0                      * ($BLKD_MOD_H + $BLKD_BIFC_H + $BLKD_MOD_BUCKET_G))"/>
+                               <xsl:variable name="bkt_bot_"    select="$BLKD_MOD_BKTLANE_H + (($num_sbsbktrows_ - 1) * ($BLKD_MOD_H + $BLKD_BIFC_H + $BLKD_MOD_BUCKET_G))"/>
+                               
+                               <xsl:variable name="v_bus_y_top_" select="$bkt_top_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                               <xsl:variable name="v_bus_y_bot_" select="$bkt_bot_ + ceiling($BLKD_BIFC_H div 2) - ceiling($BLKD_P2P_BUS_W div 2)"/>
+                               
+                               <xsl:variable name="v_bus_width_"   select="$BLKD_P2P_BUS_W"/>
+                               <xsl:variable name="v_bus_height_"  select="($v_bus_y_bot_ - $v_bus_y_top_)"/>
+                               <rect x="0" 
+                                 y="{$v_bus_y_top_}"  
+                                 width= "{$v_bus_width_}" 
+                                 height="{$v_bus_height_}" 
+                                 style="fill:{$bktColor_}"/>
+                       </xsl:if>
+                       
+               </g>
+               
+       </xsl:for-each>         
+       
+</xsl:template>        
+       
+       
+<xsl:template name="Define_SBSBucketModule">
+       
+       <xsl:param name="iBusStd"  select="'PLB46'"/>
+       <xsl:param name="iIPName"  select="'_ipType_'"/>
+       <xsl:param name="iIPType"  select="'_ipName_'"/>
+       
+<!--   
+       <xsl:message>The IPType is <xsl:value-of select="$iIPType"/> </xsl:message>
+-->    
+       <xsl:variable name="bif_y_">
+               <xsl:value-of select="$BLKD_MOD_LANE_H + $BLKD_BIFC_H"/>        
+       </xsl:variable>
+
+       <xsl:variable name="label_y_">
+               <xsl:value-of select="$BLKD_MOD_LANE_H + $BLKD_BIF_H + $BLKD_BIFC_H +  $BLKD_MOD_BIF_GAP_V"/>   
+       </xsl:variable>
+       
+       <xsl:variable name="modBgColor_">
+               <xsl:choose>
+                       <xsl:when test="$iIPType = 'mpmc'"><xsl:value-of select="$COL_MPMC_BG"/></xsl:when>
+                       <xsl:otherwise><xsl:value-of select="$COL_BG"/></xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+    <g id="sbsbktmodule_{$iIPName}">
+               
+               <rect x="0"
+                     y="{$BLKD_BIFC_H}"
+                         rx="6" 
+                         ry="6" 
+                     width = "{$BLKD_MOD_W}"
+                     height= "{$BLKD_MOD_H}"
+                         style="fill:{$modBgColor_}; stroke:{$COL_WHITE}; stroke-width:2"/>            
+                         
+               <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
+                     y="{$label_y_}"
+                         rx="3" 
+                         ry="3" 
+                     width= "{$BLKD_MOD_LABEL_W}"
+                     height="{$BLKD_MOD_LABEL_H}"
+                         style="fill:{$COL_WHITE}; stroke:none;"/>             
+               
+               <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/@GROUP">
+               
+                       <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
+                         y="{$label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) - 2}"
+                             rx="3" 
+                             ry="3" 
+                         width= "{$BLKD_MOD_LABEL_W}"
+                         height="{$BLKD_BIF_H}"
+                                 style="fill:{$COL_IORING_LT}; stroke:none;"/>         
+                         
+<!-- 
+                  <text class="ioplblgrp" 
+                                 x="{ceiling($BLKD_MOD_W div 2)}"
+                         y="{$label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) + 12}">
+                          <xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/@GROUP"/>
+                       </text>
+-->    
+          
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                               <xsl:with-param name="iY"               select="($label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) + 12)"/>
+                               <xsl:with-param name="iText"    select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/@GROUP"/>
+                               <xsl:with-param name="iClass"   select="'iogrp_label'"/>
+                       </xsl:call-template>    
+                               
+               </xsl:if> 
+          
+<!-- 
+               <text class="bciptype" 
+                         x="{ceiling($BLKD_MOD_W div 2)}"
+                         y="{$label_y_ + 8}">
+                               <xsl:value-of select="$iIPType"/>
+               </text>
+                               
+               <text class="bciplabel" 
+                         x="{ceiling($BLKD_MOD_W div 2)}"
+                         y="{$label_y_ + 16}">
+                               <xsl:value-of select="$iIPName"/>
+          </text>
+-->       
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                       <xsl:with-param name="iY"               select="($label_y_ + 8)"/>
+                       <xsl:with-param name="iText"    select="$iIPType"/>
+                       <xsl:with-param name="iClass"   select="'bc_iptype'"/>
+               </xsl:call-template>    
+               
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                       <xsl:with-param name="iY"               select="($label_y_ + 18)"/>
+                       <xsl:with-param name="iText"    select="$iIPName"/>
+                       <xsl:with-param name="iClass"   select="'bc_ipinst'"/>
+               </xsl:call-template>    
+                       
+          
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/BUSINTERFACE[(@IS_INMHS = 'TRUE')]">
+                       
+                       <xsl:variable name="bifBusStd_">
+                               <xsl:choose>
+                                       <xsl:when test="@BUSSTD">
+                                               <xsl:value-of select="@BUSSTD"/>        
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="'USER'"/> 
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="bifName_">
+                               <xsl:choose>
+                                       <xsl:when test="string-length(@NAME) &lt;= 5">
+                                               <xsl:value-of select="@NAME"/>  
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="substring(@NAME,0,5)"/>   
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+       
+                   <xsl:variable name="bif_x_"  select="ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_BIF_W div 2)"/>
+                       
+                       <!-- Draw the BIF -->
+                       <use  x="{$bif_x_}"   y="{$bif_y_}"  xlink:href="#{$bifBusStd_}_BifLabel"/>
+                       
+        
+                       <!-- Draw the BIF connection -->
+                       <use  x="{$bif_x_ + ceiling($BLKD_BIF_W div 2) - ceiling($BLKD_BIFC_W div 2)}"   y="{$bif_y_ - $BLKD_BIFC_H - $BLKD_MOD_LANE_H}"  xlink:href="#{$bifBusStd_}_busconn_{@TYPE}"/>
+                       
+<!--
+                       <text class="bif_label" 
+                                 x="{$bif_x_ + ceiling($BLKD_BIF_W div 2)}"
+                                 y="{$bif_y_ + ceiling($BLKD_BIF_H div 2) + 3}">
+                                       <xsl:value-of select="$bifName_"/>
+                       </text>
+-->                    
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="($bif_x_ + ceiling($BLKD_BIF_W div 2))"/>
+                               <xsl:with-param name="iY"               select="($bif_y_ + ceiling($BLKD_BIF_H div 2) + 3)"/>
+                               <xsl:with-param name="iText"    select="$bifName_"/>
+                               <xsl:with-param name="iClass"   select="'bif_label'"/>
+                       </xsl:call-template>    
+                       
+               </xsl:for-each>
+               
+               <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/INTERRUPTINFO[(@TYPE = 'CONTROLLER')]">
+               
+                       <xsl:variable name="intcIdx_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/INTERRUPTINFO[(@TYPE = 'CONTROLLER')]/@INTC_INDEX"/>
+                       
+                       <xsl:variable name="intrColor_">
+                               <xsl:call-template name="F_IntcIdx2RGB">
+                                       <xsl:with-param name="iIntcIdx" select="$intcIdx_"/>
+                               </xsl:call-template>    
+                       </xsl:variable>
+                       
+                       <xsl:call-template name="F_draw_InterruptCntrl">
+                               <xsl:with-param name="iIntr_X"   select="($BLKD_MOD_W - ceiling($BLKD_INTR_W div 2))"/>
+                               <xsl:with-param name="iIntr_Y"   select="3 + $BLKD_BIFC_H"/>
+                               <xsl:with-param name="iIntr_COL" select="$intrColor_"/>
+                               <xsl:with-param name="iIntr_IDX" select="$intcIdx_"/>
+                       </xsl:call-template>    
+               </xsl:if>
+               
+                     
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/INTERRUPTINFO[(@TYPE = 'SOURCE')]/TARGET">
+<!-- 
+                       <xsl:variable name="intcIdx_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE=$iIPName)]/INTERRUPTINFO[(@TYPE = 'SOURCE')]/@INTC_INDEX"/>
+-->                    
+                       <xsl:variable name="intrColor_">
+                               <xsl:call-template name="F_IntcIdx2RGB">
+                                       <xsl:with-param name="iIntcIdx" select="@INTC_INDEX"/>
+                               </xsl:call-template>    
+                       </xsl:variable>
+                       
+                       <xsl:call-template name="F_draw_InterruptSource">
+                               <xsl:with-param name="iIntr_X"   select="($BLKD_MOD_W - $BLKD_INTR_W)"/>
+                               <xsl:with-param name="iIntr_Y"   select="((position() - 1) * (ceiling($BLKD_INTR_H div 2) + 3)) + $BLKD_BIFC_H"/>
+                               <xsl:with-param name="iIntr_COL" select="$intrColor_"/>
+                               <xsl:with-param name="iIntr_PRI" select="@PRIORITY"/>
+                               <xsl:with-param name="iIntr_IDX" select="@INTC_INDEX"/>
+                       </xsl:call-template>    
+                       
+               </xsl:for-each>
+               
+       </g>                      
+       
+</xsl:template>        
+
+<xsl:template name="Define_IPBucketModule">
+       
+       <xsl:param name="iIPType"   select="'_ip_type_'"/>
+       <xsl:param name="iIPName"   select="'_ip_name_'"/>
+       
+       <xsl:variable name="bif_y_">
+               <xsl:value-of select="$BLKD_MOD_LANE_H"/>       
+       </xsl:variable>
+
+       <xsl:variable name="label_y_">
+               <xsl:value-of select="(ceiling($BLKD_MOD_H div 2) - ceiling($BLKD_MOD_LABEL_H div 2))"/>        
+       </xsl:variable>
+       
+    <g id="ipbktmodule_{$iIPName}">
+
+               <rect x="0"
+                     y="0"
+                         rx="6" 
+                         ry="6" 
+                     width = "{$BLKD_MOD_W}"
+                     height= "{$BLKD_MOD_H}"
+                         style="fill:{$COL_BG}; stroke:{$COL_BLACK}; stroke-width:2"/>         
+                         
+               <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
+                     y="{$label_y_}"
+                         rx="3" 
+                         ry="3" 
+                     width= "{$BLKD_MOD_LABEL_W}"
+                     height="{$BLKD_MOD_LABEL_H}"
+                         style="fill:{$COL_WHITE}; stroke:none;"/>             
+<!--
+                         y="{$label_y_ + ceiling($BLKD_MOD_LABEL_H div 2) - 4}"
+                         y="{$label_y_ + ceiling($BLKD_MOD_LABEL_H div 2) + 4}"
+-->                      
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                               <xsl:with-param name="iY"               select="($label_y_ + 8)"/>
+                               <xsl:with-param name="iText"    select="$iIPType"/>
+                               <xsl:with-param name="iClass"   select="'bc_iptype'"/>
+                       </xsl:call-template>    
+                       
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                               <xsl:with-param name="iY"               select="($label_y_ + 20)"/>
+                               <xsl:with-param name="iText"    select="$iIPName"/>
+                               <xsl:with-param name="iClass"   select="'bc_ipinst'"/>
+                       </xsl:call-template>    
+                       
+<!-- 
+               <text class="bc_iptype" 
+                         x="{ceiling($BLKD_MOD_W div 2)}"
+                         y="{$label_y_ + 8}">
+                               <xsl:value-of select="$iIPType"/>
+               </text>
+                               
+               <text class="bc_ipinst" 
+                         x="{ceiling($BLKD_MOD_W div 2)}"
+                         y="{$label_y_ + 16}">
+                               <xsl:value-of select="$iIPName"/>
+          </text>
+-->    
+          
+               <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/@GROUP">
+               
+                       <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
+                             y="{$label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) - 2}"
+                                 rx="3" 
+                                 ry="3" 
+                             width= "{$BLKD_MOD_LABEL_W}"
+                             height="{$BLKD_BIF_H}"
+                                 style="fill:{$COL_IORING_LT}; stroke:none;"/>         
+                                 
+                               <xsl:call-template name="F_WriteText">
+                                       <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                                       <xsl:with-param name="iY"               select="($label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) + 12)"/>
+                                       <xsl:with-param name="iText"    select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/@GROUP"/>
+                                       <xsl:with-param name="iClass"   select="'iogrp_label'"/>
+                               </xsl:call-template>    
+                               
+       <!-- 
+                          <text class="iogrp_label" 
+                                 x="{ceiling($BLKD_MOD_W div 2)}"
+                             y="{$label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) + 12}">
+                                  <xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/@GROUP"/>
+                               </text>
+       -->                     
+          
+               </xsl:if> 
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iIPName)]/INTERRUPTINFO[(@TYPE = 'SOURCE')]">
+                       
+                       <xsl:variable name="intrColor_">
+                               <xsl:call-template name="F_IntcIdx2RGB">
+                                       <xsl:with-param name="iIntcIdx" select="@INTC_INDEX"/>
+                               </xsl:call-template>    
+                       </xsl:variable>
+                       
+                       <xsl:call-template name="F_draw_InterruptSource">
+                               <xsl:with-param name="iIntr_X"   select="($BLKD_MOD_W - $BLKD_INTR_W)"/>
+                               <xsl:with-param name="iIntr_Y"   select="((position() - 1) * (ceiling($BLKD_INTR_H div 2) + 3))"/>
+                               <xsl:with-param name="iIntr_COL" select="$intrColor_"/>
+                               <xsl:with-param name="iIntr_PRI" select="@PRIORITY"/>
+                               <xsl:with-param name="iIntr_IDX" select="@INTC_INDEX"/>
+                       </xsl:call-template>    
+                       
+               </xsl:for-each>
+          
+       </g>                      
+       
+</xsl:template>        
+       
+       
+<xsl:template name="Define_Peripheral"> 
+<!-- 
+       when the module is oriented normal its label goes above the bifs 
+    when the module is oriented rot180, (part of a processor memory  
+       controller for example) its label goes below the bifs 
+-->    
+
+       <xsl:param name="iModVori"    select="'normal'"/>
+       <xsl:param name="iModInst"    select="'_instance_'"/>
+       <xsl:param name="iModType"    select="'_modtype_'"/>
+       <xsl:param name="iUnkInst"    select="'_unknown_'"/>
+       <xsl:param name="iHorizIdx"   select="'_unknown_'"/>
+       <xsl:param name="iVertiIdx"   select="'_unknown_'"/>
+       
+<!--   
+       <xsl:message>Stack       Y <xsl:value-of select="$cstkMods_Y"/></xsl:message>
+       <xsl:message>Stack Index Y <xsl:value-of select="$cstkIndex"/></xsl:message>
+-->    
+       
+       <xsl:variable name="modName_">
+               <xsl:choose>
+                       <xsl:when test="$iUnkInst = '_unknown_'">
+                               <xsl:value-of select="$iModInst"/>      
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$iUnkInst"/>      
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name="modSymbolName_">
+               <xsl:choose>
+                       <xsl:when test="(not($iHorizIdx = '_unknown_') and not($iVertiIdx = '_unknown_'))">
+                               <xsl:call-template name="F_generate_Stack_SymbolName"> 
+                                       <xsl:with-param name="iHorizIdx"  select="$iHorizIdx"/>
+                                       <xsl:with-param name="iVertiIdx"  select="$iVertiIdx"/>
+                               </xsl:call-template>            
+                       </xsl:when>
+                       <xsl:otherwise>symbol_<xsl:value-of select="$modName_"/></xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name="modTypeName_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/@MODTYPE"/>
+       
+<!--   
+       <xsl:message>The symbol type of the module is <xsl:value-of select="$modTypeName_"/></xsl:message>
+       <xsl:message>The symbol name of the module is <xsl:value-of select="$modSymbolName_"/></xsl:message>
+-->    
+       
+       <xsl:variable name="bifs_h_">   
+               <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H) and not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H)">0</xsl:if>
+       
+               <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H)">
+                       <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H"/>
+               </xsl:if>
+       
+               <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H)">
+                       <xsl:value-of select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE[(@INSTANCE = $iModInst)]/@BIFS_H"/>
+               </xsl:if>
+       </xsl:variable>         
+       
+       <xsl:variable name="label_y_">
+               <xsl:choose>
+                       <xsl:when test="$iModVori = 'rot180'">
+                               <xsl:value-of select="($BLKD_MOD_LANE_H + (($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * $bifs_h_))"/>  
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$BLKD_MOD_LANE_H"/>       
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name="bif_dy_">
+               <xsl:choose>
+                       <xsl:when test="$iModVori = 'rot180'">
+                               <xsl:value-of select="$BLKD_MOD_LANE_H"/>       
+                       </xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V)"/>   
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name="peri_stroke_col_">
+               <xsl:choose>
+                       <xsl:when test="((@MODCLASS = 'MASTER_SLAVE') or (@MODCLASS = 'MONITOR')) and BUSCONNS/BUSCONN">
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="BUSCONNS/BUSCONN/@BUSSTD"/>
+                               </xsl:call-template>
+                       </xsl:when>
+                       
+                       <xsl:otherwise>
+                               <xsl:value-of select="$COL_WHITE"/>
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+       <xsl:variable name="modHeight_">
+               <xsl:call-template name="F_Calc_PeriShape_Height">
+                       <xsl:with-param name="iShapeInst"  select="$modName_"/>
+               </xsl:call-template>    
+       </xsl:variable>         
+       
+    <g id="{$modSymbolName_}">
+               
+               <xsl:if test="$modTypeName_ = 'mpmc'">
+               <rect x="0"
+                     y="0"
+                         rx="6" 
+                         ry="6" 
+                     width = "{$BLKD_MOD_W}"
+                     height= "{$modHeight_}"
+                         style="fill:{$COL_MPMC_BG}; stroke:{$peri_stroke_col_}; stroke-width:2"/>             
+               </xsl:if>       
+               
+               <xsl:if test="not($modTypeName_ = 'mpmc')">
+                       <rect x="0"
+                             y="0"
+                                 rx="6" 
+                                 ry="6" 
+                             width = "{$BLKD_MOD_W}"
+                             height= "{$modHeight_}"
+                                 style="fill:{$COL_BG}; stroke:{$peri_stroke_col_}; stroke-width:2"/>          
+               </xsl:if>       
+               
+                                         
+               <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
+                     y="{$label_y_}"
+                         rx="3" 
+                         ry="3" 
+                     width= "{$BLKD_MOD_LABEL_W}"
+                     height="{$BLKD_MOD_LABEL_H}"
+                         style="fill:{$COL_WHITE}; stroke:none;"/>             
+                         
+<!--                     
+                         y="{$label_y_ + ceiling($BLKD_MOD_LABEL_H div 2) - 4}">
+                         y="{$label_y_ + ceiling($BLKD_MOD_LABEL_H div 2) + 4}">
+-->
+<!-- 
+               <text class="bc_iptype" 
+                         x="{ceiling($BLKD_MOD_W div 2)}"
+                         y="{$label_y_ + 8}">
+                               <xsl:value-of select="$iModType"/>
+               </text>
+                               
+               <text class="bc_ipinst" 
+                         x="{ceiling($BLKD_MOD_W div 2)}"
+                         y="{$label_y_ + 16}">
+                               <xsl:value-of select="$iModInst"/>
+          </text>
+-->       
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                               <xsl:with-param name="iY"               select="($label_y_ + 8)"/>
+                               <xsl:with-param name="iText"    select="$iModType"/>
+                               <xsl:with-param name="iClass"   select="'bc_iptype'"/>
+                       </xsl:call-template>    
+                       
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                               <xsl:with-param name="iY"               select="($label_y_ + 16)"/>
+                               <xsl:with-param name="iText"    select="$iModInst"/>
+                               <xsl:with-param name="iClass"   select="'bc_ipinst'"/>
+                       </xsl:call-template>    
+                       
+          
+               <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$iModInst]/@GROUP">
+               
+                       <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
+                             y="{$label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) - 2}"
+                                 rx="3" 
+                                 ry="3" 
+                             width= "{$BLKD_MOD_LABEL_W}"
+                             height="{$BLKD_BIF_H}"
+                                 style="fill:{$COL_IORING_LT}; stroke:none;"/>         
+                                 
+<!-- 
+                          <text class="iogrp_label" 
+                                 x="{ceiling($BLKD_MOD_W div 2)}"
+                             y="{$label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) + 12}">
+                                  <xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$iModInst]/@GROUP"/>
+                               </text>
+-->                            
+                               <xsl:call-template name="F_WriteText">
+                                       <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                                       <xsl:with-param name="iY"               select="($label_y_ + $BLKD_BIF_H + ceiling($BLKD_BIF_H div 3) + 12)"/>
+                                       <xsl:with-param name="iText"    select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/@GROUP"/>
+                                       <xsl:with-param name="iClass"   select="'iogrp_label'"/>
+                               </xsl:call-template>    
+                               
+          
+               </xsl:if> 
+          
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/BUSINTERFACE[(@BIF_X and @BIF_Y and not(@BUSNAME = '__NOC__'))]">
+                       
+                       <xsl:variable name="bifBusStd_">
+                               <xsl:choose>
+                                       <xsl:when test="@BUSSTD">
+                                               <xsl:value-of select="@BUSSTD"/>        
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="'TRS'"/>  
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="bif_y_">
+                               <xsl:value-of select="(($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V)  * @BIF_Y)"/>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="bif_buscol_">
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="$bifBusStd_"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+               
+                       
+                       <xsl:variable name="bifName_">
+                               <xsl:choose>
+                                       <xsl:when test="not(@NAME)">'UNK'</xsl:when>
+                                       <xsl:when test="string-length(@NAME) &lt;= 5">
+                                               <xsl:value-of select="@NAME"/>  
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="substring(@NAME,0,5)"/>   
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+       
+                       <xsl:variable name="bif_x_" >
+                               <xsl:if test="not(@ORIENTED='CENTER')">
+                                       <xsl:value-of select="(($BLKD_BIF_W * @BIF_X) + ($BLKD_MOD_BIF_GAP_H * @BIF_X) + ($BLKD_MOD_LANE_W * 1))"/>
+                               </xsl:if>
+                               <xsl:if test="(@ORIENTED='CENTER')">
+                                       <xsl:value-of select="ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_BIF_W div 2)"/>
+                               </xsl:if>
+                       </xsl:variable> 
+                       
+                       <xsl:if test="not(@IS_INTCONN)">
+                               <xsl:variable name="horz_line_y_" select="($bif_y_  + $bif_dy_ + ceiling($BLKD_BIFC_H div 2))"/>
+                       
+                               <xsl:variable name="horz_line_x1_">
+                                       <xsl:choose>
+                                               <xsl:when test="@BIF_X = '0'">0</xsl:when>
+                                               <xsl:otherwise><xsl:value-of select="($BLKD_MOD_W - $BLKD_MOD_LANE_W)"/></xsl:otherwise>
+                                       </xsl:choose>
+                               </xsl:variable>
+                       
+                               <xsl:variable name="horz_line_x2_">
+                                       <xsl:choose>
+                                               <xsl:when test="@BIF_X = '0'"><xsl:value-of select="$BLKD_MOD_LANE_W"/></xsl:when>
+                                               <xsl:otherwise><xsl:value-of select="$BLKD_MOD_W + 1"/></xsl:otherwise>
+                                       </xsl:choose>
+                               </xsl:variable>
+                       
+                       
+                               <line x1="{$horz_line_x1_}" 
+                                         y1="{$horz_line_y_ - 2}"
+                                 x2="{$horz_line_x2_}" 
+                                 y2="{$horz_line_y_ - 2}" 
+                                style="stroke:{$bif_buscol_};stroke-width:1"/>
+                         
+                       </xsl:if>
+                       
+                       <use  x="{$bif_x_}"   y="{$bif_y_ + $bif_dy_}"  xlink:href="#{$bifBusStd_}_BifLabel"/>
+<!-- 
+                       <text class="bif_label" 
+                                 x="{$bif_x_  + ceiling($BLKD_BIF_W div 2)}"
+                                 y="{$bif_y_ + $bif_dy_ + ceiling($BLKD_BIF_H div 2) + 3}">
+                                       <xsl:value-of select="$bifName_"/>
+                       </text>
+-->                    
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="($bif_x_  + ceiling($BLKD_BIF_W div 2))"/>
+                               <xsl:with-param name="iY"               select="($bif_y_ + $bif_dy_ + ceiling($BLKD_BIF_H div 2) + 3)"/>
+                               
+                               <xsl:with-param name="iText"    select="$bifName_"/>
+                               <xsl:with-param name="iClass"   select="'bif_label'"/>
+                       </xsl:call-template>    
+                               
+               </xsl:for-each>
+               
+<!--           
+               <xsl:if test="@INTC_INDEX">
+                       <xsl:variable name="intrColor_">
+                               <xsl:call-template name="F_IntcIdx2RGB">
+                                       <xsl:with-param name="intcIdx" select="@INTC_INDEX"/>
+                               </xsl:call-template>    
+                       </xsl:variable>
+                       
+                       <xsl:call-template name="F_draw_InterruptCntrl">
+                               <xsl:with-param name="intr_col" select="$intrColor_"/>
+                               <xsl:with-param name="intr_x"   select="($BLKD_MOD_W - ceiling($BLKD_INTR_W div 2))"/>
+                               <xsl:with-param name="intr_y"   select="3"/>
+                               <xsl:with-param name="intr_idx" select="@INTC_INDEX"/>
+                       </xsl:call-template>    
+               </xsl:if>
+-->            
+               <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/@INTC_INDEX">
+                       <xsl:variable name="intrColor_">
+                               <xsl:call-template name="F_IntcIdx2RGB">
+                                       <xsl:with-param name="iIntcIdx" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/@INTC_INDEX"/>
+                               </xsl:call-template>    
+                       </xsl:variable>
+                       
+                       <xsl:call-template name="F_draw_InterruptCntrl">
+                               <xsl:with-param name="iIntr_X"   select="($BLKD_MOD_W - ceiling($BLKD_INTR_W div 2))"/>
+                               <xsl:with-param name="iIntr_Y"   select="3"/>
+                               <xsl:with-param name="iIntr_COL" select="$intrColor_"/>
+                               <xsl:with-param name="iIntr_IDX" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/@INTC_INDEX"/>
+                       </xsl:call-template>    
+               </xsl:if>
+               
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iModInst)]/INTERRUPTINFO[@TYPE ='TARGET']">
+               
+                       <xsl:variable name="intrColor_">
+                               <xsl:call-template name="F_IntcIdx2RGB">
+                                       <xsl:with-param name="iIntcIdx" select="@INTC_INDEX"/>
+                               </xsl:call-template>    
+                       </xsl:variable>
+                       
+                       <xsl:call-template name="F_draw_InterruptSource">
+                               <xsl:with-param name="iIntr_X"   select="($BLKD_MOD_W - $BLKD_INTR_W)"/>
+                               <xsl:with-param name="iIntr_Y"   select="((position() - 1) * (ceiling($BLKD_INTR_H div 2) + 3))"/>
+                               <xsl:with-param name="iIntr_COL" select="$intrColor_"/>
+                               <xsl:with-param name="iIntr_PRI" select="@PRIORITY"/>
+                               <xsl:with-param name="iIntr_IDX" select="@INTC_INDEX"/>
+                       </xsl:call-template>    
+                       
+               </xsl:for-each>
+       </g>                      
+</xsl:template>        
+       
+<xsl:template name="Define_MemoryUnit"> 
+       <xsl:param name="iShapeId"  select="1000"/>
+       
+       <xsl:variable name="horiz_idx_"   select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/@STACK_HORIZ_INDEX"/>
+       <xsl:variable name="is_multistk_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/@IS_MULTISTK"/>
+       
+       <xsl:choose>
+               <xsl:when test="(($is_multistk_ = 'TRUE') or ($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $horiz_idx_)]))">
+                       <xsl:call-template name="Define_Processor_MemoryUnit"> 
+                               <xsl:with-param name="iShapeId"  select="$iShapeId"/>
+                       </xsl:call-template>
+               </xsl:when>
+               
+               <xsl:otherwise>
+                       <xsl:call-template name="Define_StandAlone_MemoryUnit"> 
+                               <xsl:with-param name="iShapeId"  select="$iShapeId"/>
+                       </xsl:call-template>
+               </xsl:otherwise>
+               
+       </xsl:choose>
+       
+</xsl:template>        
+       
+       
+<xsl:template name="Define_Processor_MemoryUnit"> 
+       <xsl:param name="iShapeId"  select="1000"/>
+       
+<!--   
+       <xsl:param name="cstkIndex"    select="'_processor_'"/>
+-->    
+       
+       <xsl:variable name="mods_h_"  select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/@MODS_H"/>
+       <xsl:variable name="mods_w_"  select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/@MODS_W"/>
+       <xsl:variable name="memW_" select="($BLKD_MOD_W * $mods_w_)"/>
+       <xsl:variable name="memH_" select="($BLKD_MOD_H * $mods_h_)"/>
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]">
+               
+               <!-- first define its symbols as individual modules --> 
+               <xsl:for-each select="MODULE[(@MODCLASS = 'MEMORY')]">
+               
+                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                       <xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
+               
+                       <xsl:call-template name="Define_Peripheral"> 
+                               <xsl:with-param name="iModVori"  select="'normal'"/>
+                               <xsl:with-param name="iModInst"  select="$modInst_"/>
+                               <xsl:with-param name="iModType"  select="$modType_"/>
+                       </xsl:call-template>            
+               </xsl:for-each> 
+       
+               <xsl:for-each select="MODULE[@MODCLASS='MEMORY_CNTLR']">
+               
+                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                       <xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
+               
+                       <xsl:call-template name="Define_Peripheral"> 
+                               <xsl:with-param name="iModVori"  select="'rot180'"/>
+                               <xsl:with-param name="iModInst"  select="$modInst_"/>
+                               <xsl:with-param name="iModType"  select="$modType_"/>
+                       </xsl:call-template>            
+               </xsl:for-each> 
+       </xsl:for-each>
+       
+<!--   
+-->    
+       
+       <xsl:variable name="symbol_name_">
+               <xsl:call-template name="F_generate_Stack_SymbolName"> 
+                       <xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
+                       <xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+<!--   
+       <xsl:message>The mp stack name is <xsl:value-of select="$mp_stack_name_"/></xsl:message>
+-->    
+               
+    <g id="{$symbol_name_}">
+
+               <rect x="0"
+                     y="0"
+                         rx="6" 
+                         ry="6" 
+                     width = "{$memW_}"
+                     height= "{$memH_}"
+                         style="fill:{$COL_BG}; stroke:{$COL_WHITE}; stroke-width:2"/>         
+                         
+               <!-- Draw the memory block-->             
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY')]">
+                       
+                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                       
+                        <use  x="{ceiling($memW_ div 2) - ($BLKD_MOD_W div 2)}"  
+                                  y="0"  
+                                  xlink:href="#symbol_{$modInst_}"/> 
+               </xsl:for-each>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[((@MODCLASS='MEMORY_CNTLR') and (@ORIENTED = 'WEST'))]">
+                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                       
+                        <use  x="0"  
+                                  y="{$BLKD_MOD_H}"  
+                                  xlink:href="#symbol_{$modInst_}"/> 
+               </xsl:for-each>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[((@MODCLASS='MEMORY_CNTLR') and (@ORIENTED = 'EAST'))]">
+                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                       
+                        <use  x="{$BLKD_MOD_W}"  
+                                  y="{$BLKD_MOD_H}"  
+                                  xlink:href="#symbol_{$modInst_}"/> 
+               </xsl:for-each>
+               
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[((@MODCLASS='MEMORY_CNTLR') and (@ORIENTED = 'CENTER'))]">
+                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                       
+                        <use  x="{ceiling($memW_ div 2) - ($BLKD_MOD_W div 2)}"  
+                                  y="{$BLKD_MOD_H}"  
+                                  xlink:href="#symbol_{$modInst_}"/> 
+               </xsl:for-each>
+               
+       </g>
+       
+</xsl:template>        
+
+       
+<xsl:template name="Define_StandAlone_MemoryUnit"> 
+       
+       <xsl:param name="iShapeId" select="0"/>
+       
+       <xsl:variable name="mods_h_"  select="@MODS_H"/>
+       <xsl:variable name="mods_w_"  select="@MODS_W"/>
+       
+       <xsl:variable name="memcName_"   select="MODULE[not(@MODCLASS = 'MEMORY')]/@INSTANCE"/>
+       <xsl:variable name="memcBusStd_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE/BUSCONNLANE[(BUSCONN[(@INSTANCE = $memcName_)])]/@BUSSTD"/>
+       
+<!--   
+       <xsl:variable name="memcBusStd_" select="/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE/BUSCONNLANE/@BUSSTD"/>
+       <xsl:variable name="memcBusStd_" select="/EDKSYSTEM/BCLANESPACES/BCLANESPACE/BUSCONNLANE[(BUSCONN[(@INSTANCE)])]/@BUSSTD"/>
+       <xsl:message>Memory cntlr name <xsl:value-of select="$memcName_"/></xsl:message>
+       <xsl:message>Memory cntlr name <xsl:value-of select="$memcName_"/></xsl:message>
+       <xsl:message>Memory cntlr busstd <xsl:value-of select="$memcBusStd_"/></xsl:message>
+-->    
+       
+       <xsl:variable name="peri_col_">
+               
+               <xsl:choose>
+                       <xsl:when test="$mods_w_ &gt; 1">
+                               <xsl:value-of select="$COL_BG"/>
+                       </xsl:when>
+                       
+                       <xsl:when test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE/BUSCONNLANE[(BUSCONN[(@INSTANCE = $memcName_)])]/@BUSSTD">
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="$memcBusStd_"/>
+                               </xsl:call-template>
+                       </xsl:when>
+               
+                       <xsl:otherwise>
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="'TRS'"/>
+                               </xsl:call-template>
+                       </xsl:otherwise>
+               </xsl:choose>           
+               
+       </xsl:variable>  
+       
+       <!-- first define its symbols as individual modules --> 
+       <xsl:for-each select="MODULE[(@MODCLASS = 'MEMORY')]">
+       
+               <xsl:variable name="modInst_" select="@INSTANCE"/>
+               <xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
+               
+               <xsl:call-template name="Define_Peripheral"> 
+                       <xsl:with-param name="iModVori"  select="'rot180'"/>
+                       <xsl:with-param name="iModInst"  select="$modInst_"/>
+                       <xsl:with-param name="iModType"  select="$modType_"/>
+               </xsl:call-template>            
+       </xsl:for-each> 
+       
+       <xsl:for-each select="MODULE[not(@MODCLASS='MEMORY')]">
+               <xsl:variable name="modInst_" select="@INSTANCE"/>
+               <xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
+               
+<!--           
+               <xsl:message>Memory cntlr inst <xsl:value-of select="$modInst_"/></xsl:message>
+-->            
+               <xsl:call-template name="Define_Peripheral"> 
+                       <xsl:with-param name="iModVori"  select="'normal'"/>
+                       <xsl:with-param name="iModInst"  select="$modInst_"/>
+                       <xsl:with-param name="iModType"  select="$modType_"/>
+               </xsl:call-template>            
+       </xsl:for-each> 
+       
+       <xsl:variable name="memW_" select="($BLKD_MOD_W * $mods_w_)"/>
+       <xsl:variable name="memH_" select="($BLKD_MOD_H * $mods_h_)"/>
+       
+       <xsl:variable name="symbol_name_">
+               <xsl:call-template name="F_generate_Stack_SymbolName"> 
+                       <xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
+                       <xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+               
+    <g id="{$symbol_name_}">
+               
+               <rect x="0"
+                     y="0"
+                         rx="6" 
+                         ry="6" 
+                     width = "{$memW_ + 4}"
+                     height= "{$memH_ + 4}"
+                         style="fill:{$peri_col_}; stroke:{$peri_col_}; stroke-width:2"/>              
+                         
+
+               <!-- Draw the memory block-->             
+               <xsl:choose>
+                       
+                       <xsl:when test="$mods_w_ = 1">
+                               
+                               <xsl:for-each select="MODULE[(@MODCLASS='MEMORY')]">    
+                                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                               
+                                       <use  x="2"  
+                                             y="{$BLKD_MOD_H + 2}"  
+                                             xlink:href="#symbol_{$modInst_}"/> 
+                               </xsl:for-each>
+                       
+                       
+                       <!-- Draw the memory controllers-->               
+                               <xsl:for-each select="MODULE[not(@MODCLASS='MEMORY')]"> 
+                                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                               
+                                       <use  x="2"  
+                                                 y="0"  
+                                             xlink:href="#symbol_{$modInst_}"/> 
+                               </xsl:for-each>
+                       </xsl:when>     
+               
+                       <xsl:when test="$mods_w_ &gt; 1">
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY')]">
+                               
+                                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                               
+                                        <use  x="{ceiling($memW_ div 2) - ($BLKD_MOD_W div 2)}"  
+                                                  y="{$BLKD_MOD_H + 2}"  
+                                                  xlink:href="#symbol_{$modInst_}"/> 
+                               </xsl:for-each>
+                       
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(not(@MODCLASS='MEMORY') and (@ORIENTED = 'WEST'))]">
+                                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                               
+                                       <use  x="0"  
+                                             y="0"  
+                                             xlink:href="#symbol_{$modInst_}"/> 
+                               </xsl:for-each>
+                       
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(not(@MODCLASS='MEMORY') and (@ORIENTED = 'EAST'))]">
+                                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                               
+                                       <use  x="{$BLKD_MOD_W}"  
+                                             y="0"  
+                                             xlink:href="#symbol_{$modInst_}"/> 
+                               </xsl:for-each>
+                       
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(not(@MODCLASS='MEMORY') and (@ORIENTED = 'CENTER'))]">       
+                                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                               
+                                       <use  x="{ceiling($memW_ div 2) - ($BLKD_MOD_W div 2)}"  
+                                             y="0"  
+                                                 xlink:href="#symbol_{$modInst_}"/> 
+                           </xsl:for-each>
+                               
+                       </xsl:when>     
+               </xsl:choose>
+                         
+       </g>                      
+       
+</xsl:template>        
+       
+       
+<xsl:template name="Define_StandAlone_MPMC"> 
+       
+<!--   
+       <xsl:param name="drawarea_w"  select="500"/>
+       <xsl:param name="drawarea_h"  select="500"/>
+-->    
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/MPMCSHAPE">
+               
+               <xsl:variable name="mpmcInst_" select="@INSTANCE"/>
+               <xsl:variable name="mpmcType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[@INSTANCE=$mpmcInst_]/@MODTYPE"/>
+<!--           
+               <xsl:message>Drawing instance <xsl:value-of select="$mpmcInst_"/></xsl:message>
+-->            
+               
+               <xsl:variable name="mpmc_w_"  select="($G_Total_DrawArea_W - ($BLKD_INNER_GAP * 2))"/>
+               <xsl:variable name="label_y_"  select="ceiling($BLKD_MPMC_MOD_H div 2) - ceiling($BLKD_MOD_LABEL_H div 2)"/>
+               
+               <g id="mpmcmodule_{$mpmcInst_}">
+                       <rect x="0"
+                         y="0"
+                         width = "{$mpmc_w_}"
+                         height= "{$BLKD_MPMC_MOD_H}"
+                             style="fill:{$COL_MPMC_BG}; stroke:{$COL_BLACK}; stroke-width:2"/>
+                         
+                   <rect x="{$BLKD_MOD_LANE_H}"
+                         y="{$label_y_}"
+                             rx="3"
+                             ry="3"
+                         width= "{$BLKD_MOD_LABEL_W}"
+                         height="{$BLKD_MOD_LABEL_H}"
+                             style="fill:{$COL_WHITE}; stroke:none;"/>
+<!-- 
+                       <text class="bc_iptype" 
+                                 x="{ceiling(($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_W) div 2)}"
+                                 y="{$label_y_ + 8}">
+                                       <xsl:value-of select="$mpmcType_"/>
+                       </text>
+                               
+                       <text class="bc_ipinst" 
+                                 x="{ceiling(($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_W) div 2)}"
+                                 y="{$label_y_ + 16}">
+                                       <xsl:value-of select="$mpmcInst_"/>
+                  </text>
+                  
+                       <text class="mpmc_title" 
+                                 x="{ceiling($mpmc_w_ div 2)}"
+                                 y="{$label_y_ + 16}">MPMC Module Interface</text>
+-->                    
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="(ceiling(($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_W) div 2))"/>
+                               <xsl:with-param name="iY"               select="($label_y_ + 8)"/>
+                               <xsl:with-param name="iText"    select="$mpmcType_"/>
+                               <xsl:with-param name="iClass"   select="'bc_iptype'"/>
+                       </xsl:call-template>    
+                       
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="(ceiling(($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_W) div 2))"/>
+                               <xsl:with-param name="iY"               select="($label_y_ + 16)"/>
+                               <xsl:with-param name="iText"    select="$mpmcInst_"/>
+                               <xsl:with-param name="iClass"   select="'bc_ipinst'"/>
+                       </xsl:call-template>    
+                       
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($mpmc_w_ div 2)"/>
+                               <xsl:with-param name="iY"               select="($label_y_ + 16)"/>
+                               <xsl:with-param name="iText"    select="'MPMC Module Interface'"/>
+                               <xsl:with-param name="iClass"   select="'mpmc_title'"/>
+                       </xsl:call-template>    
+                       
+          
+               </g>    
+               
+       </xsl:for-each>
+       
+</xsl:template>        
+       
+
+<!-- ======================= END DEF FUNCTIONS ============================ -->
+
+<!-- ======================= UTILITY FUNCTIONS ============================ -->
+
+<xsl:template name="F_draw_InterruptSource">
+
+       <xsl:param name="iIntr_X"   select="0"/>
+       <xsl:param name="iIntr_Y"   select="0"/>
+       <xsl:param name="iIntr_PRI" select="0"/>
+       <xsl:param name="iIntr_IDX" select="0"/>
+       <xsl:param name="iIntr_COL" select="$COL_INTR_0"/>
+       
+               <rect  
+                       x="{$iIntr_X}"
+                       y="{$iIntr_Y}"
+                       rx="3"
+                       ry="3"
+                       width= "{$BLKD_INTR_W}" 
+                       height="{ceiling($BLKD_INTR_H div 2)}" style="fill:{$iIntr_COL}; stroke:none; stroke-width:1"/> 
+                       
+               <line x1="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" 
+                         y1="{$iIntr_Y}"
+                         x2="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" 
+                         y2="{$iIntr_Y + ceiling($BLKD_INTR_H div 2)}" 
+                         style="stroke:{$COL_BLACK};stroke-width:1"/>
+                         
+               <xsl:variable name="txt_ofs_">
+                       <xsl:if test="($iIntr_PRI &gt; 9)">4.5</xsl:if>
+                       <xsl:if test="not($iIntr_PRI &gt; 9)">0</xsl:if>
+               </xsl:variable>   
+               
+<!-- 
+               <text class="intrsymbol" 
+                         x="{$iIntr_X + 2 - $txt_ofs_}"
+                         y="{$iIntr_Y + 8}">
+                               <xsl:value-of select="$iIntr_PRI"/>
+               </text>
+                       
+               <text class="intrsymbol" 
+                         x="{$iIntr_X + 2 + ceiling($BLKD_INTR_W div 2)}"
+                         y="{$iIntr_Y + 8}">
+                               <xsl:value-of select="$iIntr_IDX"/>
+               </text>
+-->            
+
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="($iIntr_X + 2 - $txt_ofs_)"/>
+                       <xsl:with-param name="iY"               select="($iIntr_Y + 8)"/>
+                       <xsl:with-param name="iText"    select="$iIntr_PRI"/>
+                       <xsl:with-param name="iClass"   select="'intr_symbol'"/>
+               </xsl:call-template>    
+               
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="($iIntr_X + 2 + ceiling($BLKD_INTR_W div 2))"/>
+                       <xsl:with-param name="iY"               select="($iIntr_Y + 8)"/>
+                       <xsl:with-param name="iText"    select="$iIntr_IDX"/>
+                       <xsl:with-param name="iClass"   select="'intr_symbol'"/>
+               </xsl:call-template>                    
+                       
+</xsl:template>
+
+<xsl:template name="F_draw_InterruptCntrl">
+
+       <xsl:param name="iIntr_X"   select="0"/>
+       <xsl:param name="iIntr_Y"   select="0"/>
+       <xsl:param name="iIntr_IDX" select="0"/>
+       <xsl:param name="iIntr_COL" select="$COL_INTR_0"/>
+       
+               <rect  
+                       x="{$iIntr_X}"
+                       y="{$iIntr_Y}"
+                       rx="3"
+                       ry="3"
+                       width= "{ceiling($BLKD_INTR_W div 2)}" 
+                       height="{$BLKD_INTR_H}" style="fill:{$iIntr_COL}; stroke:none; stroke-width:1"/> 
+                       
+               <line x1="{$iIntr_X}" 
+                         y1="{$iIntr_Y + ceiling($BLKD_INTR_H div 4)}"
+                         x2="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" 
+                         y2="{$iIntr_Y + ceiling($BLKD_INTR_H div 4)}" 
+                         style="stroke:{$COL_BLACK};stroke-width:2"/>
+<!-- 
+               <text class="intrsymbol" 
+                         x="{$iIntr_X + 2}"
+                         y="{$iIntr_Y + 8 + ceiling($BLKD_INTR_H div 2)}">
+                               <xsl:value-of select="$iIntr_IDX"/>
+               </text>
+-->            
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="($iIntr_X + 2)"/>
+                       <xsl:with-param name="iY"               select="($iIntr_Y + 8 + ceiling($BLKD_INTR_H div 2))"/>
+                       <xsl:with-param name="iText"    select="$iIntr_IDX"/>
+                       <xsl:with-param name="iClass"   select="'intr_symbol'"/>
+               </xsl:call-template>                    
+               
+</xsl:template>
+
+
+<xsl:template name="F_draw_InterruptedProc">
+
+       <xsl:param name="iIntr_X"   select="0"/>
+       <xsl:param name="iIntr_Y"   select="0"/>
+       <xsl:param name="iIntr_IDX" select="0"/>
+       <xsl:param name="iIntr_COL" select="$COL_INTR_0"/>
+       
+               <rect  
+                       x="{$iIntr_X}"
+                       y="{$iIntr_Y}"
+                       rx="3"
+                       ry="3"
+                       width= "{ceiling($BLKD_INTR_W div 2)}" 
+                       height="{$BLKD_INTR_H}" style="fill:{$iIntr_COL}; stroke:none; stroke-width:1"/> 
+                       
+               <line x1="{$iIntr_X}" 
+                         y1="{$iIntr_Y + ceiling($BLKD_INTR_H div 4) - 2}"
+                         x2="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" 
+                         y2="{$iIntr_Y + ceiling($BLKD_INTR_H div 4) - 2}" 
+                         style="stroke:{$COL_BLACK};stroke-width:1"/>
+                         
+               <line x1="{$iIntr_X}" 
+                         y1="{$iIntr_Y + ceiling($BLKD_INTR_H div 4) + 2}"
+                         x2="{$iIntr_X + ceiling($BLKD_INTR_W div 2)}" 
+                         y2="{$iIntr_Y + ceiling($BLKD_INTR_H div 4) + 2}" 
+                         style="stroke:{$COL_BLACK};stroke-width:1"/>
+                         
+<!--
+               <text class="intrsymbol" 
+                         x="{$iIntr_X + 2}"
+                         y="{$iIntr_Y + 8 + ceiling($BLKD_INTR_H div 2)}">
+                               <xsl:value-of select="$iIntr_IDX"/>
+               </text>
+ -->                     
+               
+               <xsl:call-template name="F_WriteText">
+                       <xsl:with-param name="iX"               select="($iIntr_X + 2)"/>
+                       <xsl:with-param name="iY"               select="($iIntr_Y + 8 + ceiling($BLKD_INTR_H div 2))"/>
+                       <xsl:with-param name="iText"    select="$iIntr_IDX"/>
+                       <xsl:with-param name="iClass"   select="'intr_symbol'"/>
+               </xsl:call-template>                    
+                       
+</xsl:template>
+
+<xsl:template name="F_Calc_CStackShapesAbv_Height">
+       <xsl:param name="iCStackIndex"  select="100"/>
+       <xsl:param name="iCStackMods_Y" select="1000"/>
+       
+<!--   
+       <xsl:message>Stack Index <xsl:value-of select="$cstackIndex"/></xsl:message>
+       
+       <xsl:message>Stack Y <xsl:value-of select="$cstackModY"/></xsl:message>
+-->    
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@CSTACK_INDEX = $iCStackIndex)])">0</xsl:if>
+       
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@CSTACK_INDEX = $iCStackIndex)]">
+       
+               <xsl:variable name="shapesAbv_Heights_">
+                       <CSTACK_MOD HEIGHT="0"/>
+                       
+                       <!-- Store the heights of all the peripherals above this one heights in a variable -->
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@CSTACK_INDEX = $iCStackIndex) and (@CSTACK_MODS_Y &lt; $iCStackMods_Y))]">
+                               
+                               <xsl:variable name="shapeHeight_">
+                                       
+                                       <xsl:choose>
+                                               
+                                               <xsl:when test="@MODCLASS = 'PERIPHERAL'">
+                                                       <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                                               <xsl:with-param name="iShapeInst" select="MODULE/@INSTANCE"/>
+                                                       </xsl:call-template>    
+                                               </xsl:when>
+                                               
+                                               <xsl:when test="@MODCLASS = 'MEMORY_UNIT'">
+                                                       <xsl:call-template name="F_Calc_MemoryUnit_Height">     
+                                                               <xsl:with-param name="iShapeId" select="@SHAPE_ID"/>
+                                                       </xsl:call-template>    
+                                               </xsl:when>
+                                               
+                                               <xsl:otherwise>0</xsl:otherwise>
+                                       </xsl:choose>
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>Calculated height of cstack shape of type <xsl:value-of select="@MODCLASS"/> as <xsl:value-of select="$shapeHeight_"/></xsl:message>
+-->                    
+                               
+                               <CSTACK_MOD HEIGHT="{$shapeHeight_ + $BLKD_BIF_H}"/>
+                       </xsl:for-each>
+               </xsl:variable>
+               
+<!--           
+               <xsl:message>Calculated height of cstack as <xsl:value-of select="sum(exsl:node-set($shapesAbv_Heights_)/CSTACK_MOD/@HEIGHT)"/></xsl:message>
+-->            
+               
+               <xsl:value-of select="sum(exsl:node-set($shapesAbv_Heights_)/CSTACK_MOD/@HEIGHT)"/>
+       </xsl:if>
+       
+</xsl:template>
+
+
+<xsl:template name="F_Calc_PeriShape_Height">
+       <xsl:param name="iShapeInst"  select="'_shape_'"/>
+       
+<!--   
+       <xsl:message>Calculating height of <xsl:value-of select="$iShapeInst"/></xsl:message>
+-->    
+       
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H) and 
+                     not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H) and 
+                     not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)">0</xsl:if>
+       
+       <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)">
+               <xsl:variable name="bifs_h_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H"/>
+               
+               <xsl:value-of select="($BLKD_MOD_LABEL_H + ($BLKD_BIF_H * $bifs_h_) + ($BLKD_MOD_BIF_GAP_V * $bifs_h_) + ($BLKD_MOD_LANE_H * 2))"/>
+       </xsl:if>
+       
+       <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)">
+               <xsl:variable name="bifs_h_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BRIDGESHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H"/>
+               
+               <xsl:value-of select="($BLKD_MOD_LABEL_H + ($BLKD_BIF_H * $bifs_h_) + ($BLKD_MOD_BIF_GAP_V * $bifs_h_) + ($BLKD_MOD_LANE_H * 2))"/>
+       </xsl:if>
+       
+       <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H)">
+               <xsl:variable name="bifs_h_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@INSTANCE = $iShapeInst)]/@BIFS_H"/>
+               
+               <xsl:value-of select="($BLKD_MOD_LABEL_H + ($BLKD_BIF_H * $bifs_h_) + ($BLKD_MOD_BIF_GAP_V * $bifs_h_) + ($BLKD_MOD_LANE_H * 2))"/>
+       </xsl:if>
+       
+</xsl:template>
+       
+<xsl:template name="F_Calc_Shape_Height">
+       <xsl:param name="iShapeId"  select="_shape_"/>
+       
+<!--   
+       <xsl:message>Calculating height of <xsl:value-of select="$shapeId"/></xsl:message>
+-->    
+       
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)])">0</xsl:if>
+       
+       <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE/@BIFS_H)">
+               <xsl:variable name="bifs_h_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE/@BIFS_H"/>
+               
+               <xsl:value-of select="($BLKD_MOD_LABEL_H + ($BIF_H * $bifs_h_) + ($BLKD_MOD_BIF_GAP_V * $bifs_h_) + ($BLKD_MOD_LANE_H * 2))"/>
+       </xsl:if>
+       
+</xsl:template>
+
+
+<xsl:template name="F_Calc_MemoryUnit_Height">
+       <xsl:param name="iShapeId"  select="1000"/>
+       
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)])">0</xsl:if>
+       
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]">
+       
+               <!-- Store the memory controller heights in a variable -->      
+               <xsl:variable name="memC_heights_">     
+                       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')])">
+                               <MEM_CNTLR INSTANCE="{@INSTANCE}" HEIGHT="0"/>
+                       </xsl:if>
+                       
+                       <xsl:if test="($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')])">
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[(@MODCLASS = 'MEMORY_CNTLR')]">
+                                       <xsl:variable name="memC_height_">
+                                               <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                                       <xsl:with-param name="iShapeInst" select="@INSTANCE"/>
+                                               </xsl:call-template>
+                                       </xsl:variable>
+                                       <MEM_CNTLR INSTANCE="{@INSTANCE}" HEIGHT="{$memC_height_}"/>
+                               </xsl:for-each>
+                       </xsl:if>
+               </xsl:variable>
+               
+               <!-- Store the bram heights in a variable -->   
+               <xsl:variable name="bram_heights_">     
+                       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')])">
+                               <BRAM INSTANCE="{@INSTANCE}" HEIGHT="0"/>
+                       </xsl:if>
+                       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')]">
+                               <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@SHAPE_ID = $iShapeId)]/MODULE[not(@MODCLASS = 'MEMORY_CNTLR')]">
+                                       <xsl:variable name="bram_height_">
+                                               <xsl:call-template name="F_Calc_PeriShape_Height">      
+                                                       <xsl:with-param name="iShapeInst" select="@INSTANCE"/>
+                                               </xsl:call-template>
+                                       </xsl:variable>
+                                       <BRAM INSTANCE="{@INSTANCE}" HEIGHT="{$bram_height_}"/>
+                               </xsl:for-each>
+                       </xsl:if>
+               </xsl:variable>
+               
+               <!-- Select the maximum of them -->
+               <xsl:variable name="max_bram_height_" select="math:max(exsl:node-set($bram_heights_)/BRAM/@HEIGHT)"/>
+               <xsl:variable name="max_memC_height_" select="math:max(exsl:node-set($memC_heights_)/MEM_CNTLR/@HEIGHT)"/>
+               
+               <xsl:value-of select="$max_bram_height_ + $max_memC_height_"/>
+       </xsl:if>
+
+</xsl:template>
+
+
+<xsl:template name="F_Calc_SbsBucket_Height">
+       <xsl:param name="iBucketId"  select="100"/>
+       
+<!--   
+       <xsl:message>Looking of height of bucket <xsl:value-of select="$iBucketId"/></xsl:message>
+-->    
+       <xsl:variable name="bkt_gap_" select="$BLKD_BIF_H"/>
+       
+       <xsl:if test="not($G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $iBucketId)])">0</xsl:if>
+       
+       <xsl:if test="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $iBucketId)]">
+               <xsl:variable name="mods_h_" select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@BUS_INDEX = $iBucketId)]/@MODS_H"/>
+               <xsl:value-of select="((($BLKD_MOD_BKTLANE_H * 2) + ((($BLKD_MOD_H + $BLKD_BIFC_H) * $mods_h_) + ($BLKD_MOD_BUCKET_G * ($mods_h_ - 1)))) + $bkt_gap_)"/>
+       </xsl:if>
+</xsl:template>
+       
+<!--
+       ===============================================
+       
+               Symbol Naming Functions
+       
+       ===============================================
+-->            
+       
+       
+<xsl:template name="F_generate_Proc_StackName">
+<xsl:param name="iProcInst"  select="'_unknown_'"/>
+symbol_STACK_<xsl:value-of select="$iProcInst"/>
+</xsl:template>
+       
+<xsl:template name="F_generate_Proc_GroupName">
+<xsl:param name="iProcInst"  select="'_unknown_'"/>
+symbol_GROUP_<xsl:value-of select="$iProcInst"/>
+</xsl:template>
+       
+       
+<xsl:template name="F_generate_Space_Name"><xsl:param name="iStackToEast"    select="'NONE'"/><xsl:param name="iStackToWest"  select="'NONE'"/>symbol_SPACE_WEST_<xsl:value-of select="$iStackToWest"/>_EAST_<xsl:value-of select="$iStackToEast"/></xsl:template>
+<xsl:template name="F_generate_Stack_Name"><xsl:param name="iHorizIdx"       select="'_unknown_'"/>symbol_STACK_<xsl:value-of select="$iHorizIdx"/></xsl:template>
+<xsl:template name="F_generate_Stack_SymbolName"><xsl:param name="iHorizIdx" select="'_unknown_'"/><xsl:param name="iVertiIdx" select="'_unknown_'"/>symbol_STACK_<xsl:value-of select="$iHorizIdx"/>_SHAPE_<xsl:value-of select="$iVertiIdx"/></xsl:template>
+       
+
+<!-- ======================= END UTILITY FUNCTIONS  ======================= -->
+</xsl:stylesheet>
+
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Processors.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgBLKD_Processors.xsl
new file mode 100644 (file)
index 0000000..9eb7a20
--- /dev/null
@@ -0,0 +1,462 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:math="http://exslt.org/math"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink"
+           extension-element-prefixes="math">
+           
+<xsl:output method="xml" 
+                       version="1.0" 
+                       encoding="UTF-8" 
+                       indent="yes"
+               doctype-public="-//W3C//DTD SVG 1.0//EN"
+                   doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+                       
+
+<!-- ======================= DEF BLOCK =================================== -->
+<xsl:template name="Define_AllStacks"> 
+       
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/BCLANESPACES/BCLANESPACE[(@EAST &lt; $G_ROOT/EDKSYSTEM/BLKDIAGRAM/@STACK_HORIZ_WIDTH)]">
+                       
+               <xsl:call-template name="Define_Stack">
+                       <xsl:with-param name="iStackIdx"  select="@EAST"/>
+               </xsl:call-template>
+               
+       </xsl:for-each> 
+</xsl:template>
+       
+       
+<xsl:template name="Define_Stack"> 
+       <xsl:param name="iStackIdx"  select="100"/>
+       
+       <!-- Define the stack's peripheral shapes-->    
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and not(@MODCLASS = 'MEMORY_UNIT'))]"> 
+                       
+               <xsl:for-each select="MODULE">
+                       <xsl:variable name="modInst_" select="@INSTANCE"/>
+                       <xsl:variable name="modType_" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $modInst_)]/@MODTYPE"/>
+                       <xsl:call-template name="Define_Peripheral"> 
+                               <xsl:with-param name="iModInst"    select="$modInst_"/>
+                               <xsl:with-param name="iModType"    select="$modType_"/>
+                               <xsl:with-param name="iShapeId"    select="../@SHAPE_ID"/>
+                               <xsl:with-param name="iHorizIdx"   select="../@STACK_HORIZ_INDEX"/>
+                               <xsl:with-param name="iVertiIdx"   select="../@SHAPE_VERTI_INDEX"/>
+                       </xsl:call-template>            
+               </xsl:for-each> 
+               
+       </xsl:for-each>
+       
+       <!-- Define the stack's memory shapes-->        
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[((@STACK_HORIZ_INDEX = $iStackIdx) and (@MODCLASS='MEMORY_UNIT'))]">
+               <xsl:call-template name="Define_MemoryUnit"> 
+                       <xsl:with-param name="iShapeId"  select="@SHAPE_ID"/>
+               </xsl:call-template>
+       </xsl:for-each>
+       
+       
+       <!-- Define the stack's processors-->   
+       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[@INSTANCE and @BIFS_W and @BIFS_H and (@STACK_HORIZ_INDEX = $iStackIdx)]"> 
+               <xsl:call-template name="Define_Processor"/>            
+       </xsl:for-each> 
+               
+       <!-- Make an inventory of all the things in this processor's stack -->
+       <xsl:variable name="pstackW_">
+               <xsl:call-template name="F_Calc_Stack_Width"> 
+                       <xsl:with-param name="iStackIdx"  select="$iStackIdx"/>
+               </xsl:call-template>            
+       </xsl:variable>
+               
+       <xsl:variable name="pstackH_">
+               <xsl:call-template name="F_Calc_Stack_Height"> 
+                       <xsl:with-param name="iStackIdx"  select="$iStackIdx"/>
+               </xsl:call-template>            
+       </xsl:variable>
+       
+<!-- 
+       <xsl:message>Proc Stack Height <xsl:value-of select="$pstackH_"/></xsl:message>
+       <xsl:message>Proc Stack Height <xsl:value-of select="$pstackH_"/></xsl:message>
+-->    
+
+       <xsl:variable name="procW_"    select="$BLKD_MOD_W"/>
+       <xsl:variable name="procX_"    select="(ceiling($pstackW_ div 2) - ceiling($procW_ div 2))"/>
+       
+       <xsl:variable name="sbsGap_"   select="($BLKD_PROC2SBS_GAP + $G_Total_SharedBus_H)"/>
+
+       <xsl:variable name="stack_name_">
+               <xsl:call-template name="F_generate_Stack_Name"> 
+                       <xsl:with-param name="iHorizIdx" select="$iStackIdx"/>
+               </xsl:call-template>            
+       </xsl:variable> 
+       
+<!--   
+               <xsl:message>Horiz index<xsl:value-of select="$stackIdx"/></xsl:message>
+               <xsl:message>Drawing stack <xsl:value-of select="$stack_name_"/></xsl:message>
+-->    
+               
+               <!-- Now use all this stuff to draw the stack-->        
+               <g id="{$stack_name_}">
+                       <rect x="0"
+                                 y="0"
+                             rx="6" 
+                             ry="6" 
+                         width = "{$pstackW_}"
+                         height= "{$pstackH_}"
+                             style="fill:{$COL_BG}; stroke:none;"/>
+                       
+               
+                       <!-- First draw the the processor's peripherals-->      
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/CMPLXSHAPES/CMPLXSHAPE[(@STACK_HORIZ_INDEX = $iStackIdx)]">
+                               <xsl:sort select="@STACK_VERTI_INDEX" data-type="number"/>
+                               
+                               
+                               <xsl:variable name="shapeW_"    select="(@MODS_W * $BLKD_MOD_W)"/>
+                               <xsl:variable name="shapeX_"    select="(ceiling($pstackW_ div 2) - ceiling($shapeW_ div 2))"/>
+                               
+                               <xsl:variable name="stack_SymName_">
+                                       <xsl:call-template name="F_generate_Stack_SymbolName"> 
+                                               <xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
+                                               <xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
+                                       </xsl:call-template>            
+                               </xsl:variable>
+                               
+<!--                           
+                               <xsl:message>Drawing stack peripheral <xsl:value-of select="$stack_SymName_"/></xsl:message>
+-->                            
+                               <xsl:variable name="shapeY_">
+                                       <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                                               <xsl:with-param name="iHorizIdx"  select="@STACK_HORIZ_INDEX"/>
+                                               <xsl:with-param name="iVertiIdx"  select="@SHAPE_VERTI_INDEX"/>
+                                       </xsl:call-template>
+                               </xsl:variable>  
+                               
+                               <use   x="{$shapeX_}"  y="{$shapeY_}"  xlink:href="#{$stack_SymName_}"/> 
+                       
+                       </xsl:for-each>
+                       
+                       
+                       <!-- Then draw the slave buckets for the shared busses that this processor is master to -->     
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/SBSBUCKETS/SBSBUCKET[(@STACK_HORIZ_INDEX = $iStackIdx)]">    
+                               <xsl:sort select="@SHAPE_VERTI_INDEX" data-type="number"/>
+                       
+                               <xsl:variable name="bucketW_"   select="(($BLKD_MOD_BKTLANE_W * 2) + (($BLKD_MOD_W * @MODS_W) + ($BLKD_MOD_BUCKET_G * (@MODS_W - 1))))"/>
+                               <xsl:variable name="bucketX_"   select="(ceiling($pstackW_ div 2) - ceiling($bucketW_ div 2))"/>
+                               
+                               <xsl:variable name="bucketY_">
+                                       <xsl:call-template  name="F_Calc_Stack_Shape_Y">
+                                               <xsl:with-param name="iHorizIdx"  select="@STACK_HORIZ_INDEX"/>
+                                               <xsl:with-param name="iVertiIdx"  select="@SHAPE_VERTI_INDEX"/>
+                                       </xsl:call-template>
+                               </xsl:variable>  
+                               
+<!--                           
+                               <xsl:message>SBS Bucket Y <xsl:value-of select="$bucketY_"/></xsl:message>
+-->                            
+                               
+                                <use  x="{$bucketX_}"  y="{$bucketY_}"  xlink:href="#sbsbucket_{@BUSNAME}"/> 
+                                
+                                <xsl:variable name="slavesOfTxt_">SLAVES OF <xsl:value-of select="@BUSNAME"/></xsl:variable>
+<!-- 
+                                <text class="bkt_label"
+                                          x="{$bucketX_}" 
+                                          y="{$bucketY_ - 4}"><xsl:value-of select="$slavesOfTxt_"/></text>    
+-->                                       
+                                          
+                               <xsl:call-template name="F_WriteText">
+                                       <xsl:with-param name="iX"               select="$bucketX_"/>
+                                       <xsl:with-param name="iY"               select="($bucketY_ - 4)"/>
+                                       <xsl:with-param name="iText"    select="$slavesOfTxt_"/>
+                                       <xsl:with-param name="iClass"   select="'bkt_label'"/>
+                               </xsl:call-template>    
+                               
+                                          
+                       </xsl:for-each>
+                       
+                       <!-- Then draw the the processor itself -->     
+                       <xsl:for-each select="$G_ROOT/EDKSYSTEM/BLKDIAGRAM/PROCSHAPES/MODULE[(@STACK_HORIZ_INDEX = $iStackIdx)]">
+                               <xsl:sort select="@SHAPE_VERTI_INDEX" data-type="number"/>
+                               
+                               <xsl:variable name="procY_">
+                                       <xsl:call-template name="F_Calc_Stack_Shape_Y">
+                                               <xsl:with-param name="iHorizIdx"  select="@STACK_HORIZ_INDEX"/>
+                                               <xsl:with-param name="iVertiIdx"  select="@SHAPE_VERTI_INDEX"/>
+                                       </xsl:call-template>
+                               </xsl:variable>  
+                               
+                               <xsl:variable name="stack_SymName_">
+                                       <xsl:call-template name="F_generate_Stack_SymbolName"> 
+                                               <xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
+                                               <xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
+                                       </xsl:call-template>            
+                               </xsl:variable>
+                               
+                               <use   x="{$procX_}"  y="{$procY_}"  xlink:href="#{$stack_SymName_}"/> 
+               
+                       
+<!-- 
+                               <xsl:if test = "not(@IS_LIKEPROC)">
+                                       <text class="ipclass_label"
+                                               x="{$procX_}" 
+                                               y="{$procY_ - 4}">PROCESSOR</text>              
+                               </xsl:if>                       
+                                 
+                               <xsl:if test = "@IS_LIKEPROC = 'TRUE'">
+                               
+                                       <text class="ipclass_label"
+                                               x="{$procX_}" 
+                                               y="{$procY_ - 4}">USER MODULE</text>            
+                               </xsl:if>                       
+                               
+-->                            
+                       
+                               <xsl:if test = "not(@IS_LIKEPROC)">
+                                       <xsl:call-template name="F_WriteText">
+                                               <xsl:with-param name="iX"               select="$procX_"/>
+                                               <xsl:with-param name="iY"               select="($procY_ - 4)"/>
+                                               <xsl:with-param name="iText"    select="'PROCESSOR'"/>
+                                               <xsl:with-param name="iClass"   select="'ipclass_label'"/>
+                                       </xsl:call-template>                    
+                               </xsl:if>                       
+                                 
+                               <xsl:if test = "@IS_LIKEPROC = 'TRUE'">
+                                       <xsl:call-template name="F_WriteText">
+                                               <xsl:with-param name="iX"               select="$procX_"/>
+                                               <xsl:with-param name="iY"               select="($procY_ - 4)"/>
+                                               <xsl:with-param name="iText"    select="'USER MODULE'"/>
+                                               <xsl:with-param name="iClass"   select="'ipclass_label'"/>
+                                       </xsl:call-template>                    
+                               </xsl:if>
+                       
+                       </xsl:for-each>
+               </g>
+               
+</xsl:template>        
+
+
+<xsl:template name="Define_Processor">
+       <xsl:param name="iProcInst"  select="@INSTANCE"/>
+       <xsl:param name="iModType"   select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/@MODTYPE"/>
+       
+       <xsl:variable name="label_y_">
+               <xsl:value-of select="$BLKD_MOD_LANE_H"/>       
+       </xsl:variable>
+       
+<!--   
+       <xsl:message>The proctype is <xsl:value-of select="$procType"/></xsl:message>   
+-->
+       
+       <xsl:variable name="procH_" select="(($BLKD_MOD_LANE_H * 2) + (($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIFS_H) + ($BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>   
+       <xsl:variable name="procW_" select="(($BLKD_MOD_LANE_W * 2) + (($BLKD_BIF_W                        * @BIFS_W) + $BLKD_MOD_BIF_GAP_H))"/>        
+       
+       <xsl:variable name="procColor_">
+               <xsl:choose>
+                       <xsl:when test="contains($iModType,'microblaze')"><xsl:value-of select="$COL_PROC_BG_MB"/></xsl:when>
+                       <xsl:when test="contains($iModType,'ppc')"><xsl:value-of select="$COL_PROC_BG_PP"/></xsl:when>
+                       <xsl:otherwise>
+                               <xsl:value-of select="$COL_PROC_BG_USR"/>       
+                       </xsl:otherwise>
+               </xsl:choose>
+       </xsl:variable>
+       
+<!--   
+       <xsl:message>The proc color is <xsl:value-of select="$procColor"/></xsl:message>        
+-->    
+       
+       <xsl:variable name="procName_">
+               <xsl:call-template name="F_generate_Stack_SymbolName"> 
+                       <xsl:with-param name="iHorizIdx" select="@STACK_HORIZ_INDEX"/>
+                       <xsl:with-param name="iVertiIdx" select="@SHAPE_VERTI_INDEX"/>
+               </xsl:call-template>            
+       </xsl:variable> 
+       
+<!--   
+       <xsl:message>The proc name is <xsl:value-of select="$procName_"/></xsl:message> 
+-->    
+       
+    <g id="{$procName_}">
+
+               <rect x="0"
+                     y="0"
+                         rx="6" 
+                         ry="6" 
+                     width = "{$procW_}"
+                     height= "{$procH_}"
+                         style="fill:{$procColor_}; stroke:{$COL_WHITE}; stroke-width:2"/>             
+                         
+                         
+               <rect x="{ceiling($procW_ div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
+                     y="{$BLKD_MOD_LANE_H}"
+                         rx="3" 
+                         ry="3" 
+                     width= "{$BLKD_MOD_LABEL_W}"
+                     height="{$BLKD_MOD_LABEL_H}"
+                         style="fill:{$COL_WHITE}; stroke:none;"/>             
+<!-- 
+               <text class="bciptype" 
+                         x="{ceiling($procW_ div 2)}"
+                         y="{$BLKD_MOD_LANE_H + 8}">
+                               <xsl:value-of select="$iModType"/>
+               </text>
+                               
+               <text class="bciplabel" 
+                         x="{ceiling($procW_ div 2)}"
+                         y="{$BLKD_MOD_LANE_H + 16}">
+                               <xsl:value-of select="$iProcInst"/>
+          </text>
+-->                      
+                         
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($procW_ div 2)"/>
+                               <xsl:with-param name="iY"               select="($BLKD_MOD_LANE_H + 8)"/>
+                               <xsl:with-param name="iText"    select="$iModType"/>
+                               <xsl:with-param name="iClass"   select="'bc_iptype'"/>
+                       </xsl:call-template>                    
+                       
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($procW_ div 2)"/>
+                               <xsl:with-param name="iY"               select="($BLKD_MOD_LANE_H + 16)"/>
+                               <xsl:with-param name="iText"    select="$iProcInst"/>
+                               <xsl:with-param name="iClass"   select="'bc_ipinst'"/>
+                       </xsl:call-template>                    
+                                       
+          
+          
+               <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/@GROUP">
+               
+                       <rect x="{ceiling($BLKD_MOD_W div 2) - ceiling($BLKD_MOD_LABEL_W div 2)}"
+                             y="{$BLKD_MOD_LANE_H + $BIF_H  + ceiling($BLKD_BIF_H div 3) - 2}"
+                                 rx="3" 
+                                 ry="3" 
+                             width= "{$BLKD_MOD_LABEL_W}"
+                             height="{$BLKD_BIF_H}"
+                                 style="fill:{$COL_IORING_LT}; stroke:none;"/>         
+<!-- 
+                          <text class="ioplblgrp"  
+                                         x="{ceiling($BLKD_MOD_W div 2)}" 
+                                         y="{$BLKD_MOD_LANE_H + $BIF_H + ceiling($BIF_H div 3) + 12}">
+                                  <xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/@GROUP"/>
+                               </text>
+-->            
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="ceiling($BLKD_MOD_W div 2)"/>
+                               <xsl:with-param name="iY"               select="($BLKD_MOD_LANE_H + $BIF_H + ceiling($BIF_H div 3) + 12)"/>
+                               <xsl:with-param name="iText"    select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/@GROUP"/>
+                               <xsl:with-param name="iClass"   select="'iogrp_label'"/>
+                       </xsl:call-template>                    
+          
+               </xsl:if> 
+          
+          
+               <xsl:for-each select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/BUSINTERFACE[(@BIF_X and @BIF_Y)]">
+                       
+                       <xsl:variable name="bifBusStd_">
+                               <xsl:choose>
+                                       <xsl:when test="@BUSSTD">
+                                               <xsl:value-of select="@BUSSTD"/>        
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="'TRS'"/>  
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="bifBusColor_">
+                               <xsl:call-template name="F_BusStd2RGB">
+                                       <xsl:with-param name="iBusStd" select="$bifBusStd_"/>
+                               </xsl:call-template>
+                       </xsl:variable>
+               
+                       
+                       <xsl:variable name="bifName_">
+                               <xsl:choose>
+                                       <xsl:when test="string-length(@NAME) &lt;= 5">
+                                               <xsl:value-of select="@NAME"/>  
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="substring(@NAME,0,5)"/>   
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="bif_x_"  select="(( $BLKD_BIF_W * @BIF_X) + ($BLKD_MOD_BIF_GAP_H * @BIF_X) + ($BLKD_MOD_LANE_W * 1))"/>
+                       <xsl:variable name="bif_y_"  select="((($BLKD_BIF_H + $BLKD_MOD_BIF_GAP_V) * @BIF_Y) + ($BLKD_MOD_LANE_H + $BLKD_MOD_LABEL_H + $BLKD_MOD_BIF_GAP_V))"/>
+                       
+                       <xsl:variable name="horz_line_y_" select="($bif_y_ + ceiling($BLKD_BIFC_H div 2))"/>
+                       
+                       <xsl:variable name="horz_line_x1_">
+                               <xsl:choose>
+                                       <xsl:when test="@BIF_X = '0'">0</xsl:when>
+                                       <xsl:otherwise><xsl:value-of select="($BLKD_MOD_W - $BLKD_MOD_LANE_W)"/></xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       <xsl:variable name="horz_line_x2_">
+                               <xsl:choose>
+                                       <xsl:when test="@BIF_X = '0'"><xsl:value-of select="$BLKD_MOD_LANE_W"/></xsl:when>
+                                       <xsl:otherwise><xsl:value-of select="$BLKD_MOD_W + 1"/></xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:variable>
+                       
+                       
+                       <line x1="{$horz_line_x1_}" 
+                                 y1="{$horz_line_y_ - 2}"
+                             x2="{$horz_line_x2_}" 
+                             y2="{$horz_line_y_ - 2}" 
+                             style="stroke:{$bifBusColor_};stroke-width:1"/>
+                         
+                       <use  x="{$bif_x_}"   y="{$bif_y_}"  xlink:href="#{$bifBusStd_}_BifLabel"/>
+                               
+<!-- 
+                       <text class="bif_label" 
+                                 x="{$bif_x_ + ceiling($BIF_W div 2)}"
+                                 y="{$bif_y_ + ceiling($BIF_H div 2) + 3}">
+                                       <xsl:value-of select="$bifName_"/>
+                       </text>
+-->                            
+                       
+                       <xsl:call-template name="F_WriteText">
+                               <xsl:with-param name="iX"               select="($bif_x_ + ceiling($BIF_W div 2))"/>
+                               <xsl:with-param name="iY"               select="($bif_y_ + ceiling($BIF_H div 2) + 3)"/>
+                               <xsl:with-param name="iText"    select="$bifName_"/>
+                               <xsl:with-param name="iClass"   select="'bif_label'"/>
+                       </xsl:call-template>                    
+                       
+               </xsl:for-each>
+               
+               <xsl:variable name="intcIdx_">
+                       <xsl:choose>
+                               <xsl:when test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/INTERRUPTINFO/@INTC_INDEX">
+                                       <xsl:value-of select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $iProcInst)]/INTERRUPTINFO/@INTC_INDEX"/>
+                               </xsl:when>
+                               <xsl:otherwise>"_no_interrupt_cntlr_"</xsl:otherwise>
+                       </xsl:choose>
+               </xsl:variable>
+                       
+<!--           
+               <xsl:message> The intc index should <xsl:value-of select="$interrupt_cntlr_"/></xsl:message>
+               <xsl:message> The intc index is <xsl:value-of select="/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $interrupt_cntlr_)]/@INTC_INDEX"/></xsl:message>
+-->            
+               <xsl:if test="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(INTERRUPTINFO[(@INTC_INDEX = $intcIdx_)])]">
+                       
+                       <xsl:variable name="intrColor_">
+                               <xsl:call-template name="F_IntcIdx2RGB">
+                                       <xsl:with-param name="iIntcIdx" select="$intcIdx_"/>
+<!-- 
+                                       <xsl:with-param name="iIntcIdx" select="$G_ROOT/EDKSYSTEM/MODULES/MODULE[(@INSTANCE = $interrupt_cntlr_)]/INTERRUPTINFO/@INTC_INDEX"/>
+ -->                           
+                               </xsl:call-template>    
+                       </xsl:variable>
+                       
+                       <xsl:call-template name="F_draw_InterruptedProc">
+                               <xsl:with-param name="iIntr_X"   select="($BLKD_MOD_W - ceiling($BLKD_INTR_W div 2))"/>
+                               <xsl:with-param name="iIntr_Y"   select="3"/>
+                               <xsl:with-param name="iIntr_COL" select="$intrColor_"/>
+                               <xsl:with-param name="iIntr_IDX" select="$intcIdx_"/>
+                       </xsl:call-template>    
+               </xsl:if>
+       </g>                      
+       
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgDiag_BifShapes.xsl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/MdtTinySvgDiag_BifShapes.xsl
new file mode 100644 (file)
index 0000000..7cbfab2
--- /dev/null
@@ -0,0 +1,241 @@
+<?xml version="1.0" standalone="no"?>
+<xsl:stylesheet version="1.0"
+           xmlns:svg="http://www.w3.org/2000/svg"
+           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+           xmlns:exsl="http://exslt.org/common"
+           xmlns:xlink="http://www.w3.org/1999/xlink">
+                
+<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
+              doctype-public="-//W3C//DTD SVG 1.0//EN"
+                  doctype-system="http://www.w3.org/TR/SVG/DTD/svg10.dtd"/>
+                       
+<!-- ======================= DEF BLOCK =================================== -->
+
+<xsl:template name="Define_ConnectedBifTypes">
+
+       <xsl:for-each select="exsl:node-set($COL_BUSSTDS)/BUSCOLOR">
+               <xsl:variable name="busStd_" select="@BUSSTD"/>
+       
+               <xsl:for-each select="exsl:node-set($G_BIFTYPES)/BIFTYPE">
+                       <xsl:variable name="bifType_" select="@TYPE"/>
+                       
+                       <xsl:variable name="connectedBifs_cnt_"  select="count($G_ROOT/EDKSYSTEM/MODULES/MODULE/BUSINTERFACE[((@IS_INMHS = 'TRUE') and (@TYPE = $bifType_) and (@BUSSTD = $busStd_))])"/>
+                       
+                       <xsl:if test="($connectedBifs_cnt_ &gt; 0)">
+<!-- 
+                               <xsl:message>DEBUG : Connected BifType : <xsl:value-of select="$busStd_"/> : <xsl:value-of select="@TYPE"/> : <xsl:value-of select="$connectedBifs_cnt_"/> </xsl:message> 
+-->                            
+                               <xsl:call-template name="Define_BifTypeConnector"> 
+                                       <xsl:with-param name="iBusStd"  select="$busStd_"/>
+                                       <xsl:with-param name="iBifType" select="$bifType_"/>
+                               </xsl:call-template>
+                               
+                               <xsl:call-template name="Define_BifLabel"> 
+                                       <xsl:with-param name="iBusStd"  select="$busStd_"/>
+                               </xsl:call-template>
+                               
+                       </xsl:if>
+                       
+               </xsl:for-each>
+               
+       </xsl:for-each>
+       
+       <xsl:for-each select="exsl:node-set($G_BIFTYPES)/BIFTYPE">
+               <xsl:variable name="bifType_" select="@TYPE"/>
+       
+               <xsl:call-template name="Define_BifTypeConnector"> 
+                       <xsl:with-param name="iBusStd"  select="'KEY'"/>
+                       <xsl:with-param name="iBifType" select="$bifType_"/>
+               </xsl:call-template>
+                       
+               <xsl:call-template name="Define_BifLabel"> 
+                       <xsl:with-param name="iBusStd"  select="'KEY'"/>
+               </xsl:call-template>
+       </xsl:for-each> 
+       
+</xsl:template>
+
+<xsl:template name="Define_BifLabel"> 
+       
+       <xsl:param name="iBusStd"    select="'OPB'"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+                       
+    <g id="{$iBusStd}_BifLabel">
+               <rect x="0"  
+                         y="0" 
+                         rx="3"
+                         ry="3"
+                         width= "{$BIF_W}" 
+                         height="{$BIF_H}" 
+                         style="fill:{$busStdColor_}; stroke:black; stroke-width:1"/> 
+       </g>
+       
+</xsl:template>
+
+
+<xsl:template name="Define_BifTypeConnector"> 
+       
+       <xsl:param name="iBusStd"     select="'OPB'"/>
+       <xsl:param name="iBifType"    select="'USER'"/>
+       
+       <xsl:variable name="busStdColor_">
+               <xsl:call-template name="F_BusStd2RGB">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="busStdColor_lt_">
+               <xsl:call-template name="F_BusStd2RGB_LT">
+                       <xsl:with-param name="iBusStd" select="$iBusStd"/>
+               </xsl:call-template>    
+       </xsl:variable>
+       
+       <xsl:variable name="bifc_wi_" select="ceiling($BIFC_W div 3)"/>
+       <xsl:variable name="bifc_hi_" select="ceiling($BIFC_H div 3)"/>
+       
+       <xsl:choose>
+       
+               <xsl:when test="$iBifType = 'SLAVE'">
+               <g id="{$iBusStd}_busconn_{$iBifType}">
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2)}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_W  div 2)}" 
+                                       style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/> 
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2) + 0.5}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_Wi div 2)}" 
+                                       style="fill:{$busStdColor_}; stroke:none;"/> 
+                       </g>
+               </xsl:when>
+       
+               <xsl:when test="$iBifType = 'MASTER'">
+               <g id="{$iBusStd}_busconn_{$iBifType}">
+                               <rect x="0"  
+                                         y="0" 
+                                         width= "{$BIFC_W}" 
+                                         height="{$BIFC_H}" 
+                                         style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/> 
+                               <rect x="{$BIFC_dx + 0.5}"  
+                                         y="{$BIFC_dy}" 
+                                         width= "{$BIFC_Wi}" 
+                                         height="{$BIFC_Hi}" 
+                                         style="fill:{$busStdColor_}; stroke:none;"/> 
+                       </g>
+               </xsl:when>
+               
+               <xsl:when test="$iBifType = 'INITIATOR'">
+               <g id="{$iBusStd}_busconn_{$iBifType}">
+                               <rect x="0"  
+                                         y="0" 
+                                 width= "{$BIFC_W}" 
+                                 height="{$BIFC_H}" 
+                                 style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/> 
+                               <rect x="{$BIFC_dx + 0.5}"  
+                                         y="{$BIFC_dy}" 
+                                 width= "{$BIFC_Wi}" 
+                                 height="{$BIFC_Hi}" 
+                                     style="fill:{$busStdColor_}; stroke:none;"/> 
+                       </g>
+               </xsl:when>
+               
+               <xsl:when test="$iBifType = 'TARGET'">
+               <g id="{$iBusStd}_busconn_{$iBifType}">
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2)}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_W  div 2)}" 
+                                       style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/> 
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2) + 0.5}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_Wi div 2)}" 
+                                       style="fill:{$busStdColor_}; stroke:none;"/> 
+                       </g>
+               </xsl:when>
+               
+               <xsl:when test="$iBifType = 'MASTER_SLAVE'">
+               <g id="{$iBusStd}_busconn_{$iBifType}">
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2)}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_W  div 2)}" 
+                                       style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/> 
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2) + 0.5}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_Wi div 2)}" 
+                                       style="fill:{$busStdColor_}; stroke:none;"/> 
+                               <rect 
+                                       x="0"  
+                                       y="{ceiling($BIFC_H div 2)}" 
+                                       width= "{$BIFC_W}" 
+                                       height="{ceiling($BIFC_H div 2)}" 
+                                       style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/> 
+                               <rect 
+                                       x="{$BIFC_dx + 0.5}"  
+                                       y="{ceiling($BIFC_H div 2)}" 
+                                       width= "{$BIFC_Wi}" 
+                                       height="{ceiling($BIFC_Hi div 2)}" 
+                                       style="fill:{$busStdColor_}; stroke:none;"/> 
+                       </g>
+               </xsl:when>
+               
+               <xsl:when test="$iBifType = 'MONITOR'">
+                       <g id="{$iBusStd}_busconn_{$iBifType}">
+                               <rect 
+                                       x="0"  
+                                       y="0.5" 
+                                       width= "{$BIFC_W}" 
+                                       height="{ceiling($BIFC_Hi div 2)}" 
+                                       style="fill:{$busStdColor_}; stroke:none;"/> 
+                               <rect 
+                                       x="0"  
+                                       y="{ceiling($BIFC_H div 2) + 4}" 
+                                       width= "{$BIFC_W}" 
+                                       height="{ceiling($BIFC_Hi div 2)}" 
+                                       style="fill:{$busStdColor_}; stroke:none;"/> 
+                       </g>
+               </xsl:when>
+               
+               <xsl:when test="$iBifType  = 'USER'">
+               <g id="{$iBusStd}_busconn_USER">
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2)}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_W  div 2)}" 
+                                       style="fill:{$busStdColor_lt_}; stroke:{$busStdColor_}; stroke-width:1"/> 
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2) + 0.5}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_Wi div 2)}" 
+                                       style="fill:{$busStdColor_}; stroke:none;"/> 
+                       </g>
+               </xsl:when>
+               
+               <xsl:otherwise>
+               <g id="{$iBusStd}_busconn_{$iBifType}">
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2)}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_W  div 2)}" 
+                                       style="fill:{$COL_WHITE}; stroke:{$busStdColor_}; stroke-width:1"/> 
+                               <circle 
+                                       cx="{ceiling($BIFC_W div 2) + 0.5}"  
+                                       cy="{ceiling($BIFC_H div 2)}" 
+                                       r="{ceiling($BIFC_Wi div 2)}" 
+                                       style="fill:{$COL_WHITE}; stroke:none;"/> 
+                       </g>
+               </xsl:otherwise>
+       </xsl:choose>
+       
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/svg10.dtd b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/.dswkshop/svg10.dtd
new file mode 100644 (file)
index 0000000..110f5ce
--- /dev/null
@@ -0,0 +1,1704 @@
+<!-- =====================================================================
+  This is the DTD for SVG 1.0.
+
+  The specification for SVG that corresponds to this DTD is available at:
+
+    http://www.w3.org/TR/2001/REC-SVG-20010904/
+
+  Copyright (c) 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+  For SVG 1.0:
+
+    Namespace:
+      http://www.w3.org/2000/svg  
+
+    Public identifier:
+      PUBLIC "-//W3C//DTD SVG 1.0//EN"
+
+    URI for the DTD:
+      http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd
+============================================================================= -->
+
+
+<!-- ==============================================================
+     ENTITY DECLARATIONS: Data types 
+     ============================================================== -->
+
+<!ENTITY % BaselineShiftValue "CDATA">
+    <!-- 'baseline-shift' property/attribute value (e.g., 'baseline', 'sub', etc.) -->
+
+<!ENTITY % Boolean "(false | true)">
+    <!-- feature specification -->
+
+<!ENTITY % ClassList "CDATA">
+    <!-- list of classes -->
+
+<!ENTITY % ClipValue "CDATA">
+    <!-- 'clip' property/attribute value (e.g., 'auto', rect(...)) -->
+
+<!ENTITY % ClipPathValue "CDATA">
+    <!-- 'clip-path' property/attribute value (e.g., 'none', %URI;) -->
+
+<!ENTITY % ClipFillRule "(nonzero | evenodd | inherit)">
+    <!-- 'clip-rule' or fill-rule property/attribute value -->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % Coordinate "CDATA">
+    <!-- a <coordinate> -->
+
+<!ENTITY % Coordinates "CDATA">
+    <!-- a list of <coordinate>s -->
+
+<!ENTITY % Color "CDATA">
+    <!-- a <color> value -->
+
+<!ENTITY % CursorValue "CDATA">
+    <!-- 'cursor' property/attribute value (e.g., 'crosshair', %URI;) -->
+
+<!ENTITY % EnableBackgroundValue "CDATA">
+    <!-- 'enable-background' property/attribute value (e.g., 'new', 'accumulate') -->
+
+<!ENTITY % ExtensionList "CDATA">
+    <!-- extension list specification -->
+
+<!ENTITY % FeatureList "CDATA">
+    <!-- feature list specification -->
+
+<!ENTITY % FilterValue "CDATA">
+    <!-- 'filter' property/attribute value (e.g., 'none', %URI;) -->
+
+<!ENTITY % FontFamilyValue "CDATA">
+    <!-- 'font-family' property/attribute value (i.e., list of fonts) -->
+
+<!ENTITY % FontSizeValue "CDATA">
+    <!-- 'font-size' property/attribute value -->
+
+<!ENTITY % FontSizeAdjustValue "CDATA">
+    <!-- 'font-size-adjust' property/attribute value -->
+
+<!ENTITY % GlyphOrientationHorizontalValue "CDATA">
+    <!-- 'glyph-orientation-horizontal' property/attribute value (e.g., <angle>) -->
+
+<!ENTITY % GlyphOrientationVerticalValue "CDATA">
+    <!-- 'glyph-orientation-vertical' property/attribute value (e.g., 'auto', <angle>) -->
+
+<!ENTITY % Integer "CDATA">
+    <!-- a <integer> -->
+
+<!ENTITY % KerningValue "CDATA">
+    <!-- 'kerning' property/attribute value (e.g., auto | <length>) -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC3066] -->
+
+<!ENTITY % LanguageCodes "CDATA">
+    <!-- comma-separated list of language codes, as per [RFC3066] -->
+
+<!ENTITY % Length "CDATA">
+    <!-- a <length> -->
+
+<!ENTITY % Lengths "CDATA">
+    <!-- a list of <length>s -->
+
+<!ENTITY % LinkTarget "NMTOKEN">
+    <!-- link to this target -->
+
+<!ENTITY % MarkerValue "CDATA">
+    <!-- 'marker' property/attribute value (e.g., 'none', %URI;) -->
+
+<!ENTITY % MaskValue "CDATA">
+    <!-- 'mask' property/attribute value (e.g., 'none', %URI;) -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- comma-separated list of media descriptors. -->
+
+<!ENTITY % Number "CDATA">
+    <!-- a <number> -->
+
+<!ENTITY % NumberOptionalNumber "CDATA">
+    <!-- list of <number>s, but at least one and at most two -->
+
+<!ENTITY % NumberOrPercentage "CDATA">
+    <!-- a <number> or a  <percentage> -->
+
+<!ENTITY % Numbers "CDATA">
+    <!-- a list of <number>s -->
+
+<!ENTITY % OpacityValue "CDATA">
+    <!-- opacity value (e.g., <number>) -->
+
+<!ENTITY % Paint "CDATA">
+    <!-- a 'fill' or 'stroke' property/attribute value: <paint> -->
+
+<!ENTITY % PathData "CDATA">
+    <!-- a path data specification -->
+
+<!ENTITY % Points "CDATA">
+    <!-- a list of points -->
+
+<!ENTITY % PreserveAspectRatioSpec "CDATA">
+    <!-- 'preserveAspectRatio' attribute specification -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % SpacingValue "CDATA">
+    <!-- 'letter-spacing' or 'word-spacing' property/attribute value (e.g., normal | <length>) -->
+
+<!ENTITY % StrokeDashArrayValue "CDATA">
+    <!-- 'stroke-dasharray' property/attribute value (e.g., 'none', list of <number>s) -->
+
+<!ENTITY % StrokeDashOffsetValue "CDATA">
+    <!-- 'stroke-dashoffset' property/attribute value (e.g., 'none', <legnth>) -->
+
+<!ENTITY % StrokeMiterLimitValue "CDATA">
+    <!-- 'stroke-miterlimit' property/attribute value (e.g., <number>) -->
+
+<!ENTITY % StrokeWidthValue "CDATA">
+    <!-- 'stroke-width' property/attribute value (e.g., <length>) -->
+
+<!ENTITY % StructuredText
+  "content CDATA #FIXED 'structured text'" >
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % SVGColor "CDATA">
+    <!-- An SVG color value (RGB plus optional ICC) -->
+
+<!ENTITY % Text "CDATA">
+    <!-- arbitrary text string -->
+
+<!ENTITY % TextDecorationValue "CDATA">
+    <!-- 'text-decoration' property/attribute value (e.g., 'none', 'underline') -->
+
+<!ENTITY % TransformList "CDATA">
+    <!-- list of transforms -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [URI] -->
+
+<!ENTITY % ViewBoxSpec "CDATA">
+    <!-- 'viewBox' attribute specification -->
+
+
+<!-- ==============================================================
+     ENTITY DECLARATIONS: Collections of common attributes 
+     ============================================================== -->
+
+<!-- All elements have an ID. -->
+<!ENTITY % stdAttrs
+ "id ID #IMPLIED
+  xml:base %URI; #IMPLIED" >
+
+<!-- Common attributes for elements that might contain character data content. -->
+<!ENTITY % langSpaceAttrs
+ "xml:lang %LanguageCode; #IMPLIED
+  xml:space (default|preserve) #IMPLIED" >
+
+<!-- Common attributes to check for system capabilities. -->
+<!ENTITY % testAttrs
+ "requiredFeatures %FeatureList; #IMPLIED
+  requiredExtensions %ExtensionList; #IMPLIED
+  systemLanguage %LanguageCodes; #IMPLIED" >
+
+<!-- For most uses of URI referencing:
+        standard XLink attributes other than xlink:href. -->
+<!ENTITY % xlinkRefAttrs
+ "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
+  xlink:type (simple) #FIXED 'simple' 
+  xlink:role %URI; #IMPLIED
+  xlink:arcrole %URI; #IMPLIED
+  xlink:title CDATA #IMPLIED
+  xlink:show (other) 'other'
+  xlink:actuate (onLoad) #FIXED 'onLoad'" >
+
+<!-- Standard XLink attributes for uses of URI referencing where xlink:show is 'embed' -->
+<!ENTITY % xlinkRefAttrsEmbed
+ "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
+  xlink:type (simple) #FIXED 'simple' 
+  xlink:role %URI; #IMPLIED
+  xlink:arcrole %URI; #IMPLIED
+  xlink:title CDATA #IMPLIED
+  xlink:show (embed) 'embed'
+  xlink:actuate (onLoad) #FIXED 'onLoad'" >
+
+<!ENTITY % graphicsElementEvents
+  "onfocusin %Script; #IMPLIED
+   onfocusout %Script; #IMPLIED
+   onactivate %Script; #IMPLIED
+   onclick %Script; #IMPLIED
+   onmousedown %Script; #IMPLIED
+   onmouseup %Script; #IMPLIED
+   onmouseover %Script; #IMPLIED
+   onmousemove %Script; #IMPLIED
+   onmouseout %Script; #IMPLIED
+   onload %Script; #IMPLIED" >
+
+<!ENTITY % documentEvents
+  "onunload %Script; #IMPLIED
+   onabort %Script; #IMPLIED
+   onerror %Script; #IMPLIED
+   onresize %Script; #IMPLIED
+   onscroll %Script; #IMPLIED
+   onzoom %Script; #IMPLIED" >
+
+<!ENTITY % animationEvents
+  "onbegin %Script; #IMPLIED
+   onend %Script; #IMPLIED
+   onrepeat %Script; #IMPLIED" >
+
+<!-- This entity allows for at most one of desc, title and metadata,
+     supplied in any order -->
+<!ENTITY % descTitleMetadata
+          "(((desc,((title,metadata?)|(metadata,title?))?)|
+          (title,((desc,metadata?)|(metadata,desc?))?)|
+          (metadata,((desc,title?)|(title,desc?))?))?)" >
+
+
+<!-- ==============================================================
+     ENTITY DECLARATIONS: Collections of presentation attributes 
+     ============================================================== -->
+
+<!-- The following presentation attributes have to do with specifying color. -->
+<!ENTITY % PresentationAttributes-Color
+  "color %Color; #IMPLIED
+   color-interpolation (auto | sRGB | linearRGB | inherit) #IMPLIED
+   color-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes apply to container elements. -->
+<!ENTITY % PresentationAttributes-Containers
+  "enable-background %EnableBackgroundValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to 'feFlood' elements. -->
+<!ENTITY % PresentationAttributes-feFlood
+  "flood-color %SVGColor; #IMPLIED
+   flood-opacity %OpacityValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to filling and stroking operations. -->
+<!ENTITY % PresentationAttributes-FillStroke
+  "fill %Paint; #IMPLIED
+   fill-opacity %OpacityValue; #IMPLIED
+   fill-rule %ClipFillRule; #IMPLIED
+   stroke %Paint; #IMPLIED
+   stroke-dasharray %StrokeDashArrayValue; #IMPLIED
+   stroke-dashoffset %StrokeDashOffsetValue; #IMPLIED
+   stroke-linecap (butt | round | square | inherit) #IMPLIED
+   stroke-linejoin (miter | round | bevel | inherit) #IMPLIED
+   stroke-miterlimit %StrokeMiterLimitValue; #IMPLIED
+   stroke-opacity %OpacityValue; #IMPLIED
+   stroke-width %StrokeWidthValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to filter primitives. -->
+<!ENTITY % PresentationAttributes-FilterPrimitives
+  "color-interpolation-filters (auto | sRGB | linearRGB | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes have to do with selecting a font to use. -->
+<!ENTITY % PresentationAttributes-FontSpecification
+  "font-family %FontFamilyValue; #IMPLIED
+   font-size %FontSizeValue; #IMPLIED
+   font-size-adjust %FontSizeAdjustValue; #IMPLIED
+   font-stretch (normal | wider | narrower | ultra-condensed | extra-condensed |
+                 condensed | semi-condensed | semi-expanded | expanded |
+                 extra-expanded | ultra-expanded | inherit) #IMPLIED
+   font-style (normal | italic | oblique | inherit) #IMPLIED
+   font-variant (normal | small-caps | inherit) #IMPLIED
+   font-weight (normal | bold | bolder | lighter | 100 | 200 | 300 |
+               400 | 500 | 600 | 700 | 800 | 900 | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes apply to gradient 'stop' elements. -->
+<!ENTITY % PresentationAttributes-Gradients
+  "stop-color %SVGColor; #IMPLIED
+   stop-opacity %OpacityValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to graphics elements. -->
+<!ENTITY % PresentationAttributes-Graphics
+  "clip-path %ClipPathValue; #IMPLIED
+   clip-rule %ClipFillRule; #IMPLIED
+   cursor %CursorValue; #IMPLIED
+   display (inline | block | list-item | run-in | compact | marker |
+            table | inline-table | table-row-group | table-header-group |
+            table-footer-group | table-row | table-column-group | table-column |
+            table-cell | table-caption | none | inherit) #IMPLIED
+   filter %FilterValue; #IMPLIED
+   image-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED
+   mask %MaskValue; #IMPLIED
+   opacity %OpacityValue; #IMPLIED
+   pointer-events (visiblePainted | visibleFill | visibleStroke | visible |
+                   painted | fill | stroke | all | none | inherit) #IMPLIED
+   shape-rendering (auto | optimizeSpeed | crispEdges | geometricPrecision | inherit) #IMPLIED
+   text-rendering (auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit) #IMPLIED
+   visibility (visible | hidden | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes apply to 'image' elements. -->
+<!ENTITY % PresentationAttributes-Images
+  "color-profile CDATA #IMPLIED " >
+
+<!--The following presentation attributes apply to 'feDiffuseLighting' and 'feSpecularLighting' elements. -->
+<!ENTITY % PresentationAttributes-LightingEffects
+  "lighting-color %SVGColor; #IMPLIED " >
+
+<!-- The following presentation attributes apply to marker operations. -->
+<!ENTITY % PresentationAttributes-Markers
+  "marker-start %MarkerValue; #IMPLIED
+   marker-mid %MarkerValue; #IMPLIED
+   marker-end %MarkerValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to text content elements. -->
+<!ENTITY % PresentationAttributes-TextContentElements
+  "alignment-baseline (baseline | top | before-edge | text-top | text-before-edge |
+                        middle | bottom | after-edge | text-bottom | text-after-edge |
+                        ideographic | lower | hanging | mathematical | inherit) #IMPLIED
+   baseline-shift %BaselineShiftValue; #IMPLIED
+   direction (ltr | rtl | inherit) #IMPLIED
+   dominant-baseline (auto | autosense-script | no-change | reset|
+                      ideographic | lower | hanging | mathematical | inherit ) #IMPLIED
+   glyph-orientation-horizontal %GlyphOrientationHorizontalValue; #IMPLIED
+   glyph-orientation-vertical %GlyphOrientationVerticalValue; #IMPLIED
+   kerning %KerningValue; #IMPLIED
+   letter-spacing %SpacingValue; #IMPLIED
+   text-anchor (start | middle | end | inherit) #IMPLIED
+   text-decoration %TextDecorationValue; #IMPLIED
+   unicode-bidi (normal | embed | bidi-override | inherit) #IMPLIED
+   word-spacing %SpacingValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to 'text' elements. -->
+<!ENTITY % PresentationAttributes-TextElements
+  "writing-mode (lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes apply to elements that establish viewports. -->
+<!ENTITY % PresentationAttributes-Viewports
+  "clip %ClipValue; #IMPLIED
+   overflow (visible | hidden | scroll | auto | inherit) #IMPLIED " >
+
+<!--The following represents the complete list of presentation attributes. -->
+<!ENTITY % PresentationAttributes-All
+  "%PresentationAttributes-Color;
+   %PresentationAttributes-Containers;
+   %PresentationAttributes-feFlood;
+   %PresentationAttributes-FillStroke;
+   %PresentationAttributes-FilterPrimitives;
+   %PresentationAttributes-FontSpecification;
+   %PresentationAttributes-Gradients;
+   %PresentationAttributes-Graphics;
+   %PresentationAttributes-Images;
+   %PresentationAttributes-LightingEffects;
+   %PresentationAttributes-Markers;
+   %PresentationAttributes-TextContentElements;
+   %PresentationAttributes-TextElements;
+   %PresentationAttributes-Viewports;" >
+
+
+
+<!-- ==============================================================
+     ENTITY DECLARATIONS: DTD extensions 
+     ============================================================== -->
+
+<!-- Allow for extending the DTD with internal subset for 
+     container and graphics elements -->
+<!ENTITY % ceExt "" >
+<!ENTITY % geExt "" >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Document Structure 
+     ============================================================== -->
+
+<!ENTITY % svgExt "" >
+<!ELEMENT svg (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%svgExt;)* >
+<!ATTLIST svg
+  xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
+  xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED 
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  zoomAndPan (disable | magnify) 'magnify'
+  %graphicsElementEvents;
+  %documentEvents;
+  version %Number; #FIXED "1.0"
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED
+  contentScriptType %ContentType; "text/ecmascript"
+  contentStyleType %ContentType; "text/css" >
+
+<!ENTITY % gExt "" >
+<!ELEMENT g (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%gExt;)* >
+<!ATTLIST g
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;  >
+
+<!ENTITY % defsExt "" >
+<!ELEMENT defs (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%defsExt;)* >
+<!ATTLIST defs
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;  >
+
+<!ENTITY % descExt "" >
+<!ELEMENT desc (#PCDATA %descExt;)* >
+<!ATTLIST desc
+  %stdAttrs;
+  %langSpaceAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %StructuredText; >
+
+<!ENTITY % titleExt "" >
+<!ELEMENT title (#PCDATA %titleExt;)* >
+<!ATTLIST title
+  %stdAttrs;
+  %langSpaceAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %StructuredText; >
+
+<!ENTITY % symbolExt "" >
+<!ELEMENT symbol (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%symbolExt;)* >
+<!ATTLIST symbol
+  %stdAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  %graphicsElementEvents; >
+
+<!ENTITY % useExt "" >
+<!ELEMENT use (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                   %geExt;%useExt;)*) >
+<!ATTLIST use
+  %stdAttrs;
+  %xlinkRefAttrsEmbed;
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED >
+
+<!ENTITY % imageExt "" >
+<!ELEMENT image (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                   %geExt;%imageExt;)*) >
+<!ATTLIST image
+  %stdAttrs;
+  %xlinkRefAttrsEmbed;
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Images;
+  %PresentationAttributes-Viewports;
+  transform %TransformList; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  %graphicsElementEvents;
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #REQUIRED
+  height %Length; #REQUIRED >
+
+<!ENTITY % switchExt "" >
+<!ELEMENT switch (%descTitleMetadata;,
+                  (path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|switch|a|foreignObject|
+                   animate|set|animateMotion|animateColor|animateTransform
+                   %ceExt;%switchExt;)*) >
+<!ATTLIST switch
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents; >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Styling 
+     ============================================================== -->
+
+<!ELEMENT style (#PCDATA) >
+<!ATTLIST style 
+  %stdAttrs;
+  xml:space (preserve) #FIXED "preserve"
+  type %ContentType; #REQUIRED
+  media %MediaDesc; #IMPLIED
+  title %Text; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Paths
+     ============================================================== -->
+
+<!ENTITY % pathExt "" >
+<!ELEMENT path (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%pathExt;)*) >
+<!ATTLIST path
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Markers;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  d %PathData; #REQUIRED
+  pathLength %Number; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Basic Shapes
+     ============================================================== -->
+
+<!ENTITY % rectExt "" >
+<!ELEMENT rect (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%rectExt;)*) >
+<!ATTLIST rect
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #REQUIRED
+  height %Length; #REQUIRED
+  rx %Length; #IMPLIED
+  ry %Length; #IMPLIED >
+
+<!ENTITY % circleExt "" >
+<!ELEMENT circle (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%circleExt;)*) >
+<!ATTLIST circle
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  cx %Coordinate; #IMPLIED
+  cy %Coordinate; #IMPLIED
+  r %Length; #REQUIRED >
+
+<!ENTITY % ellipseExt "" >
+<!ELEMENT ellipse (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%ellipseExt;)*) >
+<!ATTLIST ellipse
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  cx %Coordinate; #IMPLIED
+  cy %Coordinate; #IMPLIED
+  rx %Length; #REQUIRED
+  ry %Length; #REQUIRED >
+
+<!ENTITY % lineExt "" >
+<!ELEMENT line (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%lineExt;)*) >
+<!ATTLIST line
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Markers;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x1 %Coordinate; #IMPLIED
+  y1 %Coordinate; #IMPLIED
+  x2 %Coordinate; #IMPLIED
+  y2 %Coordinate; #IMPLIED >
+
+<!ENTITY % polylineExt "" >
+<!ELEMENT polyline (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%polylineExt;)*) >
+<!ATTLIST polyline
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Markers;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  points %Points; #REQUIRED >
+
+<!ENTITY % polygonExt "" >
+<!ELEMENT polygon (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%polygonExt;)*) >
+<!ATTLIST polygon
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Markers;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  points %Points; #REQUIRED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Text
+     ============================================================== -->
+
+<!ENTITY % textExt "" >
+<!ELEMENT text (#PCDATA|desc|title|metadata|
+                tspan|tref|textPath|altGlyph|a|animate|set|
+                animateMotion|animateColor|animateTransform
+                %geExt;%textExt;)* >
+<!ATTLIST text
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %PresentationAttributes-TextElements;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x %Coordinates; #IMPLIED
+  y %Coordinates; #IMPLIED
+  dx %Lengths; #IMPLIED
+  dy %Lengths; #IMPLIED
+  rotate %Numbers; #IMPLIED
+  textLength %Length; #IMPLIED
+  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >
+
+<!ENTITY % tspanExt "" >
+<!ELEMENT tspan (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
+                %tspanExt;)* >
+<!ATTLIST tspan
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %graphicsElementEvents;
+  x %Coordinates; #IMPLIED
+  y %Coordinates; #IMPLIED
+  dx %Lengths; #IMPLIED
+  dy %Lengths; #IMPLIED
+  rotate %Numbers; #IMPLIED
+  textLength %Length; #IMPLIED
+  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >
+
+<!ENTITY % trefExt "" >
+<!ELEMENT tref (desc|title|metadata|animate|set|animateColor
+                %trefExt;)* >
+<!ATTLIST tref
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %graphicsElementEvents;
+  x %Coordinates; #IMPLIED
+  y %Coordinates; #IMPLIED
+  dx %Lengths; #IMPLIED
+  dy %Lengths; #IMPLIED
+  rotate %Numbers; #IMPLIED
+  textLength %Length; #IMPLIED
+  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >
+
+<!ENTITY % textPathExt "" >
+<!ELEMENT textPath (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
+                %textPathExt;)* >
+<!ATTLIST textPath
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED
+  %langSpaceAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %graphicsElementEvents;
+  startOffset %Length; #IMPLIED
+  textLength %Length; #IMPLIED
+  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED
+  method (align|stretch) #IMPLIED
+  spacing (auto|exact) #IMPLIED >
+
+<!ENTITY % altGlyphExt "" >
+<!ELEMENT altGlyph (#PCDATA %altGlyphExt;)* >
+<!ATTLIST altGlyph
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED 
+  glyphRef CDATA #IMPLIED
+  format CDATA #IMPLIED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %graphicsElementEvents;
+  x %Coordinates; #IMPLIED
+  y %Coordinates; #IMPLIED
+  dx %Lengths; #IMPLIED
+  dy %Lengths; #IMPLIED
+  rotate %Numbers; #IMPLIED >
+
+<!ENTITY % altGlyphDefExt "" >
+<!ELEMENT altGlyphDef ((glyphRef+|altGlyphItem+) %altGlyphDefExt;) >
+<!ATTLIST altGlyphDef
+  %stdAttrs; >
+
+<!ENTITY % altGlyphItemExt "" >
+<!ELEMENT altGlyphItem (glyphRef+ %altGlyphItemExt;) >
+<!ATTLIST altGlyphItem
+  %stdAttrs; >
+
+<!ELEMENT glyphRef EMPTY >
+<!ATTLIST glyphRef
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-FontSpecification;
+  glyphRef CDATA #IMPLIED
+  format CDATA #IMPLIED
+  x %Number; #IMPLIED
+  y %Number; #IMPLIED
+  dx %Number; #IMPLIED
+  dy %Number; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Painting: Filling, Stroking and Marker Symbols 
+     ============================================================== -->
+
+<!ENTITY % markerExt "" >
+<!ELEMENT marker (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%markerExt;)* >
+<!ATTLIST marker
+  %stdAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  refX %Coordinate; #IMPLIED
+  refY %Coordinate; #IMPLIED
+  markerUnits (strokeWidth | userSpaceOnUse) #IMPLIED
+  markerWidth  %Length; #IMPLIED
+  markerHeight %Length; #IMPLIED
+  orient CDATA #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Color 
+     ============================================================== -->
+
+<!ELEMENT color-profile (%descTitleMetadata;) >
+<!ATTLIST color-profile 
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  local CDATA #IMPLIED  
+  name CDATA #REQUIRED
+  rendering-intent (auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric) "auto" >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Gradients and Patterns 
+     ============================================================== -->
+
+<!ENTITY % linearGradientExt "" >
+<!ELEMENT linearGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
+                   %linearGradientExt;)*) >
+<!ATTLIST linearGradient
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-Gradients;
+  gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  gradientTransform %TransformList; #IMPLIED
+  x1 %Coordinate; #IMPLIED
+  y1 %Coordinate; #IMPLIED
+  x2 %Coordinate; #IMPLIED
+  y2 %Coordinate; #IMPLIED
+  spreadMethod (pad | reflect | repeat) #IMPLIED >
+
+
+<!ENTITY % radialGradientExt "" >
+<!ELEMENT radialGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
+                   %radialGradientExt;)*) >
+<!ATTLIST radialGradient
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-Gradients;
+  gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  gradientTransform %TransformList; #IMPLIED
+  cx %Coordinate; #IMPLIED
+  cy %Coordinate; #IMPLIED
+  r %Length; #IMPLIED
+  fx %Coordinate; #IMPLIED
+  fy %Coordinate; #IMPLIED
+  spreadMethod (pad | reflect | repeat) #IMPLIED >
+
+
+<!ENTITY % stopExt "" >
+<!ELEMENT stop (animate|set|animateColor
+                   %stopExt;)* >
+<!ATTLIST stop
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-Gradients;
+  offset %NumberOrPercentage; #REQUIRED >
+
+<!ENTITY % patternExt "" >
+<!ELEMENT pattern (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%patternExt;)* >
+<!ATTLIST pattern
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  patternUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  patternContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  patternTransform %TransformList; #IMPLIED
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Clipping, Masking and Compositing 
+     ============================================================== -->
+
+<!ENTITY % clipPathExt "" >
+<!ELEMENT clipPath (%descTitleMetadata;,
+                    (path|text|rect|circle|ellipse|line|polyline|polygon|
+                     use|animate|set|animateMotion|animateColor|animateTransform
+                     %ceExt;%clipPathExt;)*) >
+<!ATTLIST clipPath
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %PresentationAttributes-TextElements;
+  transform %TransformList; #IMPLIED
+  clipPathUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED >
+
+<!ENTITY % maskExt "" >
+<!ELEMENT mask (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%maskExt;)*  >
+<!ATTLIST mask
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  maskUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  maskContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Filter Effects
+     ============================================================== -->
+
+<!ENTITY % filterExt "" >
+<!ELEMENT filter (%descTitleMetadata;,(feBlend|feFlood|
+  feColorMatrix|feComponentTransfer|
+  feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|
+  feGaussianBlur|feImage|feMerge|
+  feMorphology|feOffset|feSpecularLighting|
+  feTile|feTurbulence|
+  animate|set
+  %filterExt;)*) >
+<!ATTLIST filter
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  filterUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  primitiveUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED
+  filterRes %NumberOptionalNumber; #IMPLIED >
+
+<!ENTITY % filter_primitive_attributes
+  "x %Coordinate; #IMPLIED
+   y %Coordinate; #IMPLIED
+   width %Length; #IMPLIED
+   height %Length; #IMPLIED
+   result CDATA #IMPLIED" >
+
+<!ENTITY % filter_primitive_attributes_with_in
+  "%filter_primitive_attributes;
+   in CDATA #IMPLIED">
+
+<!ELEMENT feDistantLight (animate|set)* >
+<!ATTLIST feDistantLight
+  %stdAttrs;
+  azimuth %Number; #IMPLIED
+  elevation %Number; #IMPLIED >
+
+<!ELEMENT fePointLight (animate|set)* >
+<!ATTLIST fePointLight
+  %stdAttrs;
+  x %Number; #IMPLIED
+  y %Number; #IMPLIED
+  z %Number; #IMPLIED >
+
+<!ELEMENT feSpotLight (animate|set)* >
+<!ATTLIST feSpotLight
+  %stdAttrs;
+  x %Number; #IMPLIED
+  y %Number; #IMPLIED
+  z %Number; #IMPLIED
+  pointsAtX %Number; #IMPLIED
+  pointsAtY %Number; #IMPLIED
+  pointsAtZ %Number; #IMPLIED
+  specularExponent %Number; #IMPLIED
+  limitingConeAngle %Number; #IMPLIED >
+
+<!ELEMENT feBlend (animate|set)* >
+<!ATTLIST feBlend
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  in2 CDATA #REQUIRED
+  mode (normal | multiply | screen | darken | lighten) "normal" >
+
+<!ELEMENT feColorMatrix (animate|set)* >
+<!ATTLIST feColorMatrix
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  type (matrix | saturate | hueRotate | luminanceToAlpha) "matrix"
+  values CDATA #IMPLIED >
+
+<!ELEMENT feComponentTransfer (feFuncR?,feFuncG?,feFuncB?,feFuncA?) >
+<!ATTLIST feComponentTransfer
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in; >
+
+<!ENTITY % component_transfer_function_attributes
+  "type (identity | table | discrete | linear | gamma) #REQUIRED
+   tableValues CDATA #IMPLIED
+   slope %Number; #IMPLIED
+   intercept %Number; #IMPLIED
+   amplitude %Number; #IMPLIED
+   exponent %Number; #IMPLIED
+   offset %Number; #IMPLIED" >
+
+<!ELEMENT feFuncR (animate|set)* >
+<!ATTLIST feFuncR
+  %stdAttrs;
+  %component_transfer_function_attributes; >
+
+<!ELEMENT feFuncG (animate|set)* >
+<!ATTLIST feFuncG
+  %stdAttrs;
+  %component_transfer_function_attributes; >
+
+<!ELEMENT feFuncB (animate|set)* >
+<!ATTLIST feFuncB
+  %stdAttrs;
+  %component_transfer_function_attributes; >
+
+<!ELEMENT feFuncA (animate|set)* >
+<!ATTLIST feFuncA
+  %stdAttrs;
+  %component_transfer_function_attributes; >
+
+<!ELEMENT feComposite (animate|set)* >
+<!ATTLIST feComposite
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  in2 CDATA #REQUIRED
+  operator (over | in | out | atop | xor | arithmetic) "over"
+  k1 %Number; #IMPLIED
+  k2 %Number; #IMPLIED
+  k3 %Number; #IMPLIED
+  k4 %Number; #IMPLIED >
+
+<!ELEMENT feConvolveMatrix (animate|set)* >
+<!ATTLIST feConvolveMatrix
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  order %NumberOptionalNumber; #REQUIRED
+  kernelMatrix CDATA #REQUIRED
+  divisor %Number; #IMPLIED
+  bias %Number; #IMPLIED
+  targetX %Integer; #IMPLIED
+  targetY %Integer; #IMPLIED
+  edgeMode (duplicate|wrap|none) "duplicate" 
+  kernelUnitLength %NumberOptionalNumber; #IMPLIED 
+  preserveAlpha %Boolean; #IMPLIED >
+
+<!ELEMENT feDiffuseLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
+<!ATTLIST feDiffuseLighting
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FilterPrimitives;
+  %PresentationAttributes-LightingEffects;
+  %filter_primitive_attributes_with_in;
+  surfaceScale %Number; #IMPLIED
+  diffuseConstant %Number; #IMPLIED 
+  kernelUnitLength %NumberOptionalNumber; #IMPLIED >
+
+<!ELEMENT feDisplacementMap (animate|set)* >
+<!ATTLIST feDisplacementMap
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  in2 CDATA #REQUIRED
+  scale %Number; #IMPLIED
+  xChannelSelector (R | G | B | A) "A"
+  yChannelSelector (R | G | B | A) "A" >
+
+<!ELEMENT feFlood (animate|set|animateColor)* >
+<!ATTLIST feFlood
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-feFlood;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in; >
+
+<!ELEMENT feGaussianBlur (animate|set)* >
+<!ATTLIST feGaussianBlur
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  stdDeviation %NumberOptionalNumber; #IMPLIED >
+
+<!ELEMENT feImage (animate|set|animateTransform)* >
+<!ATTLIST feImage
+  %stdAttrs;
+  %xlinkRefAttrsEmbed;
+  xlink:href %URI; #REQUIRED
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  %filter_primitive_attributes;
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet' >
+
+<!ELEMENT feMerge (feMergeNode)* >
+<!ATTLIST feMerge
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes; >
+
+<!ELEMENT feMergeNode (animate|set)* >
+<!ATTLIST feMergeNode
+  %stdAttrs;
+  in CDATA #IMPLIED >
+
+<!ELEMENT feMorphology (animate|set)* >
+<!ATTLIST feMorphology
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  operator (erode | dilate) "erode"
+  radius %NumberOptionalNumber; #IMPLIED >
+
+<!ELEMENT feOffset (animate|set)* >
+<!ATTLIST feOffset
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  dx %Number; #IMPLIED
+  dy %Number; #IMPLIED >
+
+<!ELEMENT feSpecularLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
+<!ATTLIST feSpecularLighting
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FilterPrimitives;
+  %PresentationAttributes-LightingEffects;
+  %filter_primitive_attributes_with_in;
+  surfaceScale %Number; #IMPLIED
+  specularConstant %Number; #IMPLIED
+  specularExponent %Number; #IMPLIED 
+  kernelUnitLength %NumberOptionalNumber; #IMPLIED >
+
+<!ELEMENT feTile (animate|set)* >
+<!ATTLIST feTile
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in; >
+
+<!ELEMENT feTurbulence (animate|set)* >
+<!ATTLIST feTurbulence
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes;
+  baseFrequency %NumberOptionalNumber; #IMPLIED
+  numOctaves %Integer; #IMPLIED
+  seed %Number; #IMPLIED
+  stitchTiles (stitch | noStitch) "noStitch"
+  type (fractalNoise | turbulence) "turbulence" >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Interactivity 
+     ============================================================== -->
+
+<!ELEMENT cursor (%descTitleMetadata;) >
+<!ATTLIST cursor
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Linking
+     ============================================================== -->
+
+<!ENTITY % aExt "" >
+<!ELEMENT a       (#PCDATA|desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%aExt;)* >
+<!ATTLIST a
+  %stdAttrs;
+  xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
+  xlink:type (simple) #FIXED "simple" 
+  xlink:role %URI; #IMPLIED
+  xlink:arcrole %URI; #IMPLIED
+  xlink:title CDATA #IMPLIED
+  xlink:show (new|replace) 'replace'
+  xlink:actuate (onRequest) #FIXED 'onRequest'
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  target %LinkTarget; #IMPLIED >
+
+<!ENTITY % viewExt "" >
+<!ELEMENT view (%descTitleMetadata;%viewExt;) >
+<!ATTLIST view
+  %stdAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  zoomAndPan (disable | magnify) 'magnify' 
+  viewTarget CDATA #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Scripting 
+     ============================================================== -->
+
+<!ELEMENT script (#PCDATA) >
+<!ATTLIST script
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  externalResourcesRequired %Boolean; #IMPLIED
+  type %ContentType; #REQUIRED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Animation 
+     ============================================================== -->
+
+<!ENTITY % animElementAttrs
+ "%xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED" >
+
+<!ENTITY % animAttributeAttrs
+ "attributeName  CDATA  #REQUIRED
+  attributeType  CDATA  #IMPLIED" >
+
+<!ENTITY % animTimingAttrs
+ "begin CDATA #IMPLIED 
+  dur CDATA #IMPLIED
+  end CDATA #IMPLIED
+  min CDATA #IMPLIED
+  max CDATA #IMPLIED
+  restart (always | never | whenNotActive) 'always'
+  repeatCount CDATA #IMPLIED 
+  repeatDur CDATA #IMPLIED
+  fill (remove | freeze) 'remove'" >
+
+<!ENTITY % animValueAttrs
+ "calcMode (discrete | linear | paced | spline) 'linear'
+  values CDATA #IMPLIED
+  keyTimes CDATA #IMPLIED
+  keySplines CDATA #IMPLIED
+  from CDATA #IMPLIED
+  to CDATA #IMPLIED
+  by CDATA #IMPLIED" >
+
+<!ENTITY % animAdditionAttrs
+ "additive       (replace | sum) 'replace'
+  accumulate     (none | sum) 'none'" >
+
+<!ENTITY % animateExt "" >
+<!ELEMENT animate (%descTitleMetadata;%animateExt;) >
+<!ATTLIST animate
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animAttributeAttrs;
+  %animTimingAttrs;
+  %animValueAttrs;
+  %animAdditionAttrs; >
+
+<!ENTITY % setExt "" >
+<!ELEMENT set (%descTitleMetadata;%setExt;) >
+<!ATTLIST set
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animAttributeAttrs;
+  %animTimingAttrs;
+  to CDATA #IMPLIED >
+
+<!ENTITY % animateMotionExt "" >
+<!ELEMENT animateMotion (%descTitleMetadata;,mpath? %animateMotionExt;) >
+<!ATTLIST animateMotion
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animTimingAttrs;
+  calcMode (discrete | linear | paced | spline) 'paced'
+  values CDATA #IMPLIED
+  keyTimes CDATA #IMPLIED
+  keySplines CDATA #IMPLIED
+  from CDATA #IMPLIED
+  to CDATA #IMPLIED
+  by CDATA #IMPLIED
+  %animAdditionAttrs;
+  path CDATA #IMPLIED
+  keyPoints CDATA #IMPLIED
+  rotate CDATA #IMPLIED
+  origin CDATA #IMPLIED >
+
+<!ENTITY % mpathExt "" >
+<!ELEMENT mpath (%descTitleMetadata;%mpathExt;) >
+<!ATTLIST mpath
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED
+  externalResourcesRequired %Boolean; #IMPLIED >
+
+<!ENTITY % animateColorExt "" >
+<!ELEMENT animateColor (%descTitleMetadata;%animateColorExt;) >
+<!ATTLIST animateColor
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animAttributeAttrs;
+  %animTimingAttrs;
+  %animValueAttrs;
+  %animAdditionAttrs; >
+
+<!ENTITY % animateTransformExt "" >
+<!ELEMENT animateTransform (%descTitleMetadata;%animateTransformExt;) >
+<!ATTLIST animateTransform
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animAttributeAttrs;
+  %animTimingAttrs;
+  %animValueAttrs;
+  %animAdditionAttrs;
+  type (translate | scale | rotate | skewX | skewY) "translate" >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Fonts 
+     ============================================================== -->
+
+<!ENTITY % fontExt "" >
+<!ELEMENT font (%descTitleMetadata;,font-face,
+                   missing-glyph,(glyph|hkern|vkern %fontExt;)*) >
+<!ATTLIST font
+  %stdAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  horiz-origin-x %Number; #IMPLIED
+  horiz-origin-y %Number; #IMPLIED
+  horiz-adv-x %Number; #REQUIRED
+  vert-origin-x %Number; #IMPLIED
+  vert-origin-y %Number; #IMPLIED
+  vert-adv-y %Number; #IMPLIED >
+
+<!ENTITY % glyphExt "" >
+<!ELEMENT glyph (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %glyphExt;)* >
+<!ATTLIST glyph
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  unicode CDATA #IMPLIED
+  glyph-name CDATA #IMPLIED
+  d %PathData; #IMPLIED
+  orientation CDATA #IMPLIED
+  arabic-form CDATA #IMPLIED
+  lang %LanguageCodes; #IMPLIED
+  horiz-adv-x %Number; #IMPLIED
+  vert-origin-x %Number; #IMPLIED
+  vert-origin-y %Number; #IMPLIED
+  vert-adv-y %Number; #IMPLIED >
+
+<!ENTITY % missing-glyphExt "" >
+<!ELEMENT missing-glyph (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %missing-glyphExt;)* >
+<!ATTLIST missing-glyph
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  d %PathData; #IMPLIED
+  horiz-adv-x %Number; #IMPLIED
+  vert-origin-x %Number; #IMPLIED
+  vert-origin-y %Number; #IMPLIED
+  vert-adv-y %Number; #IMPLIED >
+
+<!ELEMENT hkern EMPTY >
+<!ATTLIST hkern
+  %stdAttrs;
+  u1 CDATA #IMPLIED
+  g1 CDATA #IMPLIED
+  u2 CDATA #IMPLIED
+  g2 CDATA #IMPLIED
+  k %Number; #REQUIRED >
+
+<!ELEMENT vkern EMPTY >
+<!ATTLIST vkern
+  %stdAttrs;
+  u1 CDATA #IMPLIED
+  g1 CDATA #IMPLIED
+  u2 CDATA #IMPLIED
+  g2 CDATA #IMPLIED
+  k %Number; #REQUIRED >
+
+<!ELEMENT font-face (%descTitleMetadata;,font-face-src?,definition-src?) >
+<!ATTLIST font-face 
+  %stdAttrs;
+  font-family CDATA #IMPLIED
+  font-style CDATA #IMPLIED
+  font-variant CDATA #IMPLIED
+  font-weight CDATA #IMPLIED
+  font-stretch CDATA #IMPLIED
+  font-size CDATA #IMPLIED
+  unicode-range CDATA #IMPLIED
+  units-per-em %Number; #IMPLIED
+  panose-1 CDATA #IMPLIED
+  stemv %Number; #IMPLIED
+  stemh %Number; #IMPLIED
+  slope %Number; #IMPLIED
+  cap-height %Number; #IMPLIED
+  x-height %Number; #IMPLIED
+  accent-height %Number; #IMPLIED
+  ascent %Number; #IMPLIED
+  descent %Number; #IMPLIED
+  widths CDATA #IMPLIED
+  bbox CDATA #IMPLIED
+  ideographic %Number; #IMPLIED
+  alphabetic %Number; #IMPLIED
+  mathematical %Number; #IMPLIED
+  hanging %Number; #IMPLIED
+  v-ideographic %Number; #IMPLIED
+  v-alphabetic %Number; #IMPLIED
+  v-mathematical %Number; #IMPLIED
+  v-hanging %Number; #IMPLIED
+  underline-position %Number; #IMPLIED
+  underline-thickness %Number; #IMPLIED
+  strikethrough-position %Number; #IMPLIED
+  strikethrough-thickness %Number; #IMPLIED
+  overline-position %Number; #IMPLIED
+  overline-thickness %Number; #IMPLIED >
+
+<!ELEMENT font-face-src (font-face-uri|font-face-name)+ >
+<!ATTLIST font-face-src 
+  %stdAttrs; >
+
+<!ELEMENT font-face-uri (font-face-format*) >
+<!ATTLIST font-face-uri 
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED >
+
+<!ELEMENT font-face-format EMPTY >
+<!ATTLIST font-face-format 
+  %stdAttrs;
+  string CDATA #IMPLIED >
+
+<!ELEMENT font-face-name EMPTY >
+<!ATTLIST font-face-name 
+  %stdAttrs;
+  name CDATA #IMPLIED >
+
+<!ELEMENT definition-src EMPTY >
+<!ATTLIST definition-src 
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Metadata 
+     ============================================================== -->
+
+<!ENTITY % metadataExt "" >
+<!ELEMENT metadata (#PCDATA %metadataExt;)* >
+<!ATTLIST metadata
+  %stdAttrs; >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Extensibility 
+     ============================================================== -->
+
+<!ENTITY % foreignObjectExt "" >
+<!ELEMENT foreignObject (#PCDATA %ceExt;%foreignObjectExt;)* >
+<!ATTLIST foreignObject
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #REQUIRED
+  height %Length; #REQUIRED
+  %StructuredText; >
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/bitinit.opt b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/bitinit.opt
new file mode 100644 (file)
index 0000000..a0575e4
--- /dev/null
@@ -0,0 +1 @@
+   $(PPC440_0_BOOTLOOP) \r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.gise b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.gise
new file mode 100644 (file)
index 0000000..fb514ec
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>\r
+<generated_project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">\r
+\r
+  <!--                                                          -->\r
+\r
+  <!--             For tool use only. Do not edit.              -->\r
+\r
+  <!--                                                          -->\r
+\r
+  <!-- ProjectNavigator created generated project file.         -->\r
+\r
+  <!-- For use in tracking generated file and other information -->\r
+\r
+  <!-- allowing preservation of process status.                 -->\r
+\r
+  <!--                                                          -->\r
+\r
+  <!-- Copyright (c) 1995-2009 Xilinx, Inc.  All rights reserved. -->\r
+\r
+  <version xmlns="http://www.xilinx.com/XMLSchema">11.1</version>\r
+\r
+  <files xmlns="http://www.xilinx.com/XMLSchema"/>\r
+\r
+  <transforms xmlns="http://www.xilinx.com/XMLSchema"/>\r
+\r
+</generated_project>\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.ise b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.ise
new file mode 100644 (file)
index 0000000..adb01a8
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.ise differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.xise b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system.xise
new file mode 100644 (file)
index 0000000..510ac7e
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<project xmlns="http://www.xilinx.com/XMLSchema" xmlns:xil_pn="http://www.xilinx.com/XMLSchema">
+
+  <header>
+    <!-- ISE source project file created by Project Navigator.             -->
+    <!--                                                                   -->
+    <!-- This file contains project source information including a list of -->
+    <!-- project source files, project and process properties.  This file, -->
+    <!-- along with the project source files, is sufficient to open and    -->
+    <!-- implement in ISE Project Navigator.                               -->
+    <!--                                                                   -->
+    <!-- Copyright (c) 1995-2009 Xilinx, Inc.  All rights reserved. -->
+  </header>
+
+  <version xil_pn:ise_version="11.1" xil_pn:schema_version="2"/>
+
+  <files/>
+
+  <properties>
+    <property xil_pn:name="Device" xil_pn:value="xa2c*"/>
+    <property xil_pn:name="Device Family" xil_pn:value="Automotive CoolRunner2"/>
+    <property xil_pn:name="PROP_DesignName" xil_pn:value="system"/>
+    <property xil_pn:name="PROP_Enable_Incremental_Messaging" xil_pn:value="true"/>
+    <property xil_pn:name="PROP_Enable_Message_Filtering" xil_pn:value="true"/>
+    <property xil_pn:name="Package" xil_pn:value="*"/>
+    <property xil_pn:name="Preferred Language" xil_pn:value="Verilog"/>
+    <property xil_pn:name="Simulator" xil_pn:value="ISim (VHDL/Verilog)"/>
+    <property xil_pn:name="Speed Grade" xil_pn:value="-*"/>
+    <property xil_pn:name="Synthesis Tool" xil_pn:value="XST (VHDL/Verilog)"/>
+    <property xil_pn:name="Top-Level Source Type" xil_pn:value="HDL"/>
+    <property xil_pn:name="Verbose Property Persistence" xil_pn:value="false"/>
+  </properties>
+
+  <bindings/>
+
+  <libraries/>
+
+  <partitions>
+    <partition xil_pn:name="/"/>
+  </partitions>
+
+</project>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise.lock b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise.lock
new file mode 100644 (file)
index 0000000..94c543b
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise.lock differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject
new file mode 100644 (file)
index 0000000..4627dbf
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject_StrTbl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject_StrTbl
new file mode 100644 (file)
index 0000000..1bc056b
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/HDProject/HDProject_StrTbl differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/__stored_object_table__ b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/__stored_object_table__
new file mode 100644 (file)
index 0000000..0af2e0d
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/HierarchicalDesign/__stored_object_table__ differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl
new file mode 100644 (file)
index 0000000..8947873
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl_StrTbl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl_StrTbl
new file mode 100644 (file)
index 0000000..bb5db76
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/PnAutoRun/Scripts/RunOnce_tcl_StrTbl differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main
new file mode 100644 (file)
index 0000000..336370f
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main_StrTbl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main_StrTbl
new file mode 100644 (file)
index 0000000..359501c
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/ProjectNavigator/dpm_project_main/dpm_project_main_StrTbl differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Current-Module b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Current-Module
new file mode 100644 (file)
index 0000000..8947873
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Current-Module differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Current-Module_StrTbl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Current-Module_StrTbl
new file mode 100644 (file)
index 0000000..76b14bd
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Current-Module_StrTbl differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-Data-system b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-Data-system
new file mode 100644 (file)
index 0000000..e13f50d
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-Data-system differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-Data-system_StrTbl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-Data-system_StrTbl
new file mode 100644 (file)
index 0000000..286be7a
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-Data-system_StrTbl differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-DataFactory-Default b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-DataFactory-Default
new file mode 100644 (file)
index 0000000..7417703
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-DataFactory-Default differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-DataFactory-Default_StrTbl b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-DataFactory-Default_StrTbl
new file mode 100644 (file)
index 0000000..77989b7
Binary files /dev/null and b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__OBJSTORE__/xreport/Gc_RvReportViewer-Module-DataFactory-Default_StrTbl differ
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/Autonym/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/Autonym/regkeys
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/HierarchicalDesign/HDProject/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/HierarchicalDesign/HDProject/regkeys
new file mode 100644 (file)
index 0000000..0da60f5
--- /dev/null
@@ -0,0 +1,24 @@
+CommandLine-Map
+
+s
+CommandLine-Ngdbuild
+
+s
+CommandLine-Par
+
+s
+CommandLine-Xst
+
+s
+Previous-NGD
+
+s
+Previous-NGM
+
+s
+Previous-Packed-NCD
+
+s
+Previous-Routed-NCD
+
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ProjectNavigator/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ProjectNavigator/regkeys
new file mode 100644 (file)
index 0000000..4bd7af1
--- /dev/null
@@ -0,0 +1,3 @@
+ISE_VERSION_LAST_SAVED_WITH
+11.1
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ProjectNavigator11/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ProjectNavigator11/regkeys
new file mode 100644 (file)
index 0000000..f90e060
--- /dev/null
@@ -0,0 +1,6 @@
+ISE_VERSION_LAST_SAVED_WITH
+11.1
+s
+XISE_FILE
+system.xise
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/XSLTProcess/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/XSLTProcess/regkeys
new file mode 100644 (file)
index 0000000..87cda85
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/XSLTProcess.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/_ProjRepoInternal_/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/_ProjRepoInternal_/regkeys
new file mode 100644 (file)
index 0000000..c29a7fc
--- /dev/null
@@ -0,0 +1,21 @@
+ISE_VERSION_CREATED_WITH
+11.1
+s
+ISE_VERSION_LAST_SAVED_WITH
+11.1
+s
+LastRepoDir
+E:\my_projects\Wittenstein\release\svn\main2\FreeRTOS\Demo\PPC440_FPU_Xilinx_Virtex5_GCC\__xps\ise\
+s
+OBJSTORE_VERSION
+1.3
+s
+PROJECT_CREATION_TIMESTAMP
+2009-06-13T13:10:25
+s
+REGISTRY_VERSION
+1.1
+s
+REPOSITORY_VERSION
+1.1
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/bitgen/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/bitgen/regkeys
new file mode 100644 (file)
index 0000000..949818c
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/bitgen.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/bitinit/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/bitinit/regkeys
new file mode 100644 (file)
index 0000000..dae1ec7
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/bitinit.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/common/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/common/regkeys
new file mode 100644 (file)
index 0000000..fac2f6e
--- /dev/null
@@ -0,0 +1,12 @@
+IncrementalMessagingEnabled
+true
+s
+MessageCaptureEnabled
+true
+s
+MessageFilterFile
+filter.filter
+s
+MessageFilteringEnabled
+true
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/cpldfit/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/cpldfit/regkeys
new file mode 100644 (file)
index 0000000..f3969b3
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/cpldfit.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/dumpngdio/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/dumpngdio/regkeys
new file mode 100644 (file)
index 0000000..7e5b4bb
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/dumpngdio.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/fuse/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/fuse/regkeys
new file mode 100644 (file)
index 0000000..77fa32d
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/fuse.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/hprep6/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/hprep6/regkeys
new file mode 100644 (file)
index 0000000..e654ecd
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/hprep6.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/idem/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/idem/regkeys
new file mode 100644 (file)
index 0000000..7b9c321
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/idem.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/libgen/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/libgen/regkeys
new file mode 100644 (file)
index 0000000..a2612da
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/libgen.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/map/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/map/regkeys
new file mode 100644 (file)
index 0000000..447e64c
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/map.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/netgen/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/netgen/regkeys
new file mode 100644 (file)
index 0000000..b15e57f
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/netgen.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngc2edif/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngc2edif/regkeys
new file mode 100644 (file)
index 0000000..2cb66e4
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/ngc2edif.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngcbuild/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngcbuild/regkeys
new file mode 100644 (file)
index 0000000..af67ad1
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/ngcbuild.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngdbuild/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/ngdbuild/regkeys
new file mode 100644 (file)
index 0000000..47ac460
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/ngdbuild.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/par/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/par/regkeys
new file mode 100644 (file)
index 0000000..17ae8fb
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/par.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/platgen/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/platgen/regkeys
new file mode 100644 (file)
index 0000000..d4497d2
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/platgen.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/runner/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/runner/regkeys
new file mode 100644 (file)
index 0000000..d5e13d0
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/runner.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/simgen/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/simgen/regkeys
new file mode 100644 (file)
index 0000000..e12ea38
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/simgen.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/taengine/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/taengine/regkeys
new file mode 100644 (file)
index 0000000..fc0b038
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/taengine.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/trce/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/trce/regkeys
new file mode 100644 (file)
index 0000000..cffe0cf
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/trce.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/tsim/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/tsim/regkeys
new file mode 100644 (file)
index 0000000..52a3e8b
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/tsim.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/vhpcomp/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/vhpcomp/regkeys
new file mode 100644 (file)
index 0000000..2d5cd6a
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/vhpcomp.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/vlogcomp/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/vlogcomp/regkeys
new file mode 100644 (file)
index 0000000..9a5c2fa
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/vlogcomp.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xpwr/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xpwr/regkeys
new file mode 100644 (file)
index 0000000..c3f895c
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/xpwr.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xreport/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xreport/regkeys
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xst/regkeys b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/__REGISTRY__/xst/regkeys
new file mode 100644 (file)
index 0000000..5b1ae90
--- /dev/null
@@ -0,0 +1,3 @@
+ClientMessageOutputFile
+_xmsgs/xst.xmsgs
+s
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/version b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/system_xdb/tmp/ise/version
new file mode 100644 (file)
index 0000000..eec4d22
--- /dev/null
@@ -0,0 +1,10 @@
+REPOSITORY_VERSION\r
+1.1\r
+REGISTRY_VERSION\r
+1.1\r
+OBJSTORE_VERSION\r
+1.3\r
+ISE_VERSION_CREATED_WITH\r
+11.1\r
+ISE_VERSION_LAST_SAVED_WITH\r
+11.1\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/xmsgprops.lst b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/ise/xmsgprops.lst
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/libgen.opt b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/libgen.opt
new file mode 100644 (file)
index 0000000..5588007
--- /dev/null
@@ -0,0 +1 @@
+ -p virtex5 -msg __xps/ise/xmsgprops.lst\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/platgen.opt b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/platgen.opt
new file mode 100644 (file)
index 0000000..58d8103
--- /dev/null
@@ -0,0 +1,2 @@
+ -p xc5vfx70tff1136-1 -lang vhdl -msg __xps/ise/xmsgprops.lst
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/rtosdemo_compiler.opt b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/rtosdemo_compiler.opt
new file mode 100644 (file)
index 0000000..f81b922
--- /dev/null
@@ -0,0 +1,20 @@
+ppc440_0\r
+RTOSDEMO_SOURCES = /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/BlockQ.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/blocktim.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/comtest.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/countsem.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/death.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/dynamic.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/flash.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/GenQTest.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/integer.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/QPeek.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/recmutex.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/semtest.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/tasks.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/list.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/queue.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/croutine.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/portable/GCC/PPC440_Xilinx/portasm.S /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/portable/GCC/PPC440_Xilinx/port.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/portable/MemMang/heap_2.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop-reg-test.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/partest/partest.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/serial/serial.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/main.c \r
+RTOSDEMO_HEADERS = \r
+RTOSDEMO_CC = powerpc-eabi-gcc\r
+RTOSDEMO_CC_SIZE = powerpc-eabi-size\r
+RTOSDEMO_CC_OPT = -O0\r
+RTOSDEMO_CFLAGS = -D GCC_PPC440 -mregnames\r
+RTOSDEMO_CC_SEARCH = # -B\r
+RTOSDEMO_LIBPATH = -L./ppc440_0/lib/ # -L\r
+RTOSDEMO_INCLUDES = -I./ppc440_0/include/   -I../../Source/include -I../../Source/portable/GCC/PPC440_Xilinx -I../Common/include -I./RTOSDemo -I./RTOSDemo/flop \r
+RTOSDEMO_LFLAGS = # -l\r
+RTOSDEMO_LINKER_SCRIPT = /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/RTOSDemo_linker_script.ld\r
+RTOSDEMO_CC_DEBUG_FLAG =  -g \r
+RTOSDEMO_CC_PROFILE_FLAG = # -pg\r
+RTOSDEMO_CC_GLOBPTR_FLAG= # -msdata=eabi\r
+RTOSDEMO_CC_INFERRED_FLAGS= -mfpu=sp_full -mcpu=440 \r
+RTOSDEMO_CC_START_ADDR_FLAG=  #  # -Wl,-defsym -Wl,_START_ADDR=\r
+RTOSDEMO_CC_STACK_SIZE_FLAG=  #  # -Wl,-defsym -Wl,_STACK_SIZE=\r
+RTOSDEMO_CC_HEAP_SIZE_FLAG=  #  # -Wl,-defsym -Wl,_HEAP_SIZE=\r
+                  $(RTOSDEMO_CC_INFERRED_FLAGS)  \\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/simgen.opt b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/simgen.opt
new file mode 100644 (file)
index 0000000..d15e8cc
--- /dev/null
@@ -0,0 +1 @@
+ -p virtex5 -lang vhdl   $(PPC440_0_BOOTLOOP)  -msg __xps/ise/xmsgprops.lst -s mti -X C:/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/system.filters b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/system.filters
new file mode 100644 (file)
index 0000000..a1a9109
--- /dev/null
@@ -0,0 +1,121 @@
+
+<FILTERS>
+
+  <SET CLASS="PROJECT" VIEW_ID="BUSINTERFACE">
+    <HEADERS HSCROLL="0" VSCROLL="0">
+      <VARIABLE COL_INDEX="0" COL_WIDTH="146" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="HEADER"/>
+    </HEADERS>
+    <SET CLASS="FILTER_GROUP" ID="By Connection" IS_EXPANDED="TRUE">
+      <VARIABLE NAME="By Connection" VALUE="By Connection" VIEWDISP="Bus Interface Filters" VIEWTYPE="STATIC"/>
+      <SET CLASS="FILTER" ID="Connected" ROW_INDEX="0">
+        <VARIABLE IS_LABELED="TRUE" NAME="Connected" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Unconnected" ROW_INDEX="1">
+        <VARIABLE IS_LABELED="TRUE" NAME="Unconnected" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+    </SET>
+    <SET CLASS="FILTER_GROUP" ID="By Bus Standard" IS_EXPANDED="TRUE">
+      <VARIABLE COLINDEX="0" NAME="By Bus Standard" VALUE="By Bus Standard" VIEWDISP="Bus Interface Filters" VIEWTYPE="STATIC"/>
+      <SET CLASS="FILTER" ID="OPB" IS_VISIBLE="FALSE" ROW_INDEX="0">
+        <VARIABLE IS_LABELED="TRUE" NAME="OPB" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="LMB" IS_VISIBLE="FALSE" ROW_INDEX="1">
+        <VARIABLE IS_LABELED="TRUE" NAME="LMB" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="PLBV34" IS_VISIBLE="FALSE" ROW_INDEX="2">
+        <VARIABLE IS_LABELED="TRUE" NAME="PLBV34" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="PLBV46" ROW_INDEX="3">
+        <VARIABLE IS_LABELED="TRUE" NAME="PLBV46" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="OCM" IS_VISIBLE="FALSE" ROW_INDEX="4">
+        <VARIABLE IS_LABELED="TRUE" NAME="OCM" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="FSL" IS_VISIBLE="FALSE" ROW_INDEX="5">
+        <VARIABLE IS_LABELED="TRUE" NAME="FSL" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="DCR" ROW_INDEX="6">
+        <VARIABLE IS_LABELED="TRUE" NAME="DCR" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="FCB" ROW_INDEX="7">
+        <VARIABLE IS_LABELED="TRUE" NAME="FCB" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="XIL" ROW_INDEX="8">
+        <VARIABLE IS_LABELED="TRUE" NAME="Xilinx Point To Point" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="USER" IS_VISIBLE="FALSE" ROW_INDEX="9">
+        <VARIABLE IS_LABELED="TRUE" NAME="User Defined" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="XCL" IS_VISIBLE="FALSE" ROW_INDEX="10">
+        <VARIABLE IS_LABELED="TRUE" NAME="XCL" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+    </SET>
+    <SET CLASS="FILTER_GROUP" ID="By Interface Type" IS_EXPANDED="TRUE">
+      <VARIABLE NAME="By Interface Type" VALUE="By Interface Type" VIEWDISP="Bus Interface Filters" VIEWTYPE="STATIC"/>
+      <SET CLASS="FILTER" ID="Slaves" ROW_INDEX="0">
+        <VARIABLE IS_LABELED="TRUE" NAME="Slaves" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Masters" ROW_INDEX="1">
+        <VARIABLE IS_LABELED="TRUE" NAME="Masters" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Master Slaves" ROW_INDEX="2">
+        <VARIABLE IS_LABELED="TRUE" NAME="Master Slaves" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Monitors" ROW_INDEX="3">
+        <VARIABLE IS_LABELED="TRUE" NAME="Monitors" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Targets" ROW_INDEX="4">
+        <VARIABLE IS_LABELED="TRUE" NAME="Targets" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Initiators" ROW_INDEX="5">
+        <VARIABLE IS_LABELED="TRUE" NAME="Initiators" VALUE="TRUE" VIEWDISP="Bus Interface Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+    </SET>
+  </SET>
+
+  <SET CLASS="PROJECT" VIEW_ID="PORT">
+    <HEADERS>
+      <VARIABLE COL_WIDTH="50" IS_VISIBLE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="HEADER"/>
+    </HEADERS>
+    <SET CLASS="FILTER_GROUP" ID="By Connection" IS_EXPANDED="TRUE">
+      <VARIABLE NAME="By Connection" VALUE="By Connection" VIEWDISP="Port Filters" VIEWTYPE="STATIC"/>
+      <SET CLASS="FILTER" ID="Defaults" ROW_INDEX="0">
+        <VARIABLE IS_LABELED="TRUE" NAME="Defaults" VALUE="FALSE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Connected" ROW_INDEX="1">
+        <VARIABLE IS_LABELED="TRUE" NAME="Connected" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Unconnected" ROW_INDEX="2">
+        <VARIABLE IS_LABELED="TRUE" NAME="Unconnected" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+    </SET>
+    <SET CLASS="FILTER_GROUP" ID="By Class" IS_EXPANDED="TRUE">
+      <VARIABLE COL_INDEX="0" NAME="By Class" VALUE="By Class" VIEWDISP="Port Filters" VIEWTYPE="STATIC"/>
+      <SET CLASS="FILTER" ID="Clocks" ROW_INDEX="0">
+        <VARIABLE IS_LABELED="TRUE" NAME="Clocks" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Resets" ROW_INDEX="1">
+        <VARIABLE IS_LABELED="TRUE" NAME="Resets" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Interrupts" ROW_INDEX="2">
+        <VARIABLE IS_LABELED="TRUE" NAME="Interrupts" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Others" ROW_INDEX="3">
+        <VARIABLE IS_LABELED="TRUE" NAME="Others" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+    </SET>
+    <SET CLASS="FILTER_GROUP" ID="By Direction" IS_EXPANDED="TRUE">
+      <VARIABLE NAME="By Direction" VALUE="By Direction" VIEWDISP="Port Filters" VIEWTYPE="STATIC"/>
+      <SET CLASS="FILTER" ID="Inputs" ROW_INDEX="0">
+        <VARIABLE IS_LABELED="TRUE" NAME="Inputs" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="Outputs" ROW_INDEX="1">
+        <VARIABLE IS_LABELED="TRUE" NAME="Outputs" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+      <SET CLASS="FILTER" ID="InOuts" ROW_INDEX="2">
+        <VARIABLE IS_LABELED="TRUE" NAME="InOuts" VALUE="TRUE" VIEWDISP="Port Filters" VIEWTYPE="CHECKBOX"/>
+      </SET>
+    </SET>
+  </SET>
+
+</FILTERS>
\ No newline at end of file
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/system.gui b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/system.gui
new file mode 100644 (file)
index 0000000..82e9658
--- /dev/null
@@ -0,0 +1,103 @@
+
+<SETTINGS>
+
+  <SET CLASS="PROJECT" DISPLAYMODE="TREE" VIEW_ID="BUSINTERFACE">
+    <HEADERS HSCROLL="0" VSCROLL="0">
+      <VARIABLE COL_INDEX="0" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="1" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="2" IS_VISIBLE="FALSE" VIEWDISP="Bus Standard" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="3" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="4" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="5" COL_WIDTH="327" IS_VISIBLE="TRUE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="6" IS_VISIBLE="FALSE" VIEWDISP="Type" VIEWTYPE="HEADER"/>
+    </HEADERS>
+    <SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="144,735,295" VERSION="0"/>
+    <STATUS>
+      <SELECTIONS/>
+    </STATUS>
+  </SET>
+
+  <SET CLASS="PROJECT" DISPLAYMODE="FLAT" VIEW_ID="BUSINTERFACE">
+    <HEADERS>
+      <VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="3" IS_VISIBLE="FALSE" VIEWDISP="Bus Standard" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="6" IS_VISIBLE="TRUE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="7" IS_VISIBLE="FALSE" VIEWDISP="Type" VIEWTYPE="HEADER"/>
+    </HEADERS>
+    <SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="180,450,180" VERSION="0"/>
+  </SET>
+
+  <SET CLASS="PROJECT" DISPLAYMODE="TREE" VIEW_ID="PORT">
+    <HEADERS HSCROLL="0" VSCROLL="67">
+      <VARIABLE COL_INDEX="0" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="1" COL_WIDTH="252" IS_VISIBLE="TRUE" VIEWDISP="Net" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="2" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Direction" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="3" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Range" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="4" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Class" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="5" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Frequency" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="6" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Reset Polarity" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="7" COL_WIDTH="100" IS_VISIBLE="TRUE" VIEWDISP="Sensitivity" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="8" COL_WIDTH="25" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="9" IS_VISIBLE="FALSE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="10" IS_VISIBLE="TRUE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
+    </HEADERS>
+    <SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="0,475,117" VERSION="0"/>
+    <SET ID="RS232_Uart_1" IS_EXPANDED="TRUE"/>
+    <SET ID="xps_intc_0" IS_EXPANDED="TRUE"/>
+  </SET>
+
+  <SET CLASS="PROJECT" DISPLAYMODE="FLAT" VIEW_ID="PORT">
+    <HEADERS>
+      <VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Port Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Net" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="3" IS_VISIBLE="TRUE" VIEWDISP="Direction" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="Range" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="Class" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="6" IS_VISIBLE="TRUE" VIEWDISP="Frequency" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="7" IS_VISIBLE="TRUE" VIEWDISP="Reset Polarity" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="8" IS_VISIBLE="TRUE" VIEWDISP="Sensitivity" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="9" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="10" IS_VISIBLE="FALSE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="11" IS_VISIBLE="TRUE" VIEWDISP="IP Classification" VIEWTYPE="HEADER"/>
+    </HEADERS>
+    <SPLITTERS COLLAPSIBLE="1" HANDLEWIDTH="4" MARKER="255" ORIENTATION="1" RESIZE="1" SIZES="0,630,180" VERSION="0"/>
+  </SET>
+
+  <SET CLASS="PROJECT" DISPLAYMODE="TREE" VIEW_ID="ADDRESS">
+    <HEADERS>
+      <VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Base Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Base Address" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="3" IS_VISIBLE="TRUE" VIEWDISP="High Address" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="Size" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface(s)" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="6" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="7" IS_VISIBLE="TRUE" VIEWDISP="ICache" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="8" IS_VISIBLE="TRUE" VIEWDISP="DCache" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="9" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="10" IS_VISIBLE="TRUE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
+    </HEADERS>
+  </SET>
+
+  <SET CLASS="PROJECT" DISPLAYMODE="FLAT" VIEW_ID="ADDRESS">
+    <HEADERS>
+      <VARIABLE COL_INDEX="0" IS_VISIBLE="TRUE" VIEWDISP="Instance" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="1" IS_VISIBLE="TRUE" VIEWDISP="Base Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="2" IS_VISIBLE="TRUE" VIEWDISP="Base Address" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="3" IS_VISIBLE="TRUE" VIEWDISP="High Address" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="4" IS_VISIBLE="TRUE" VIEWDISP="Size" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="5" IS_VISIBLE="TRUE" VIEWDISP="Bus Interface(s)" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="6" IS_VISIBLE="TRUE" VIEWDISP="Bus Name" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="7" IS_VISIBLE="TRUE" VIEWDISP="ICache" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="8" IS_VISIBLE="TRUE" VIEWDISP="DCache" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="9" IS_VISIBLE="TRUE" VIEWDISP="IP Type" VIEWTYPE="HEADER"/>
+      <VARIABLE COL_INDEX="10" IS_VISIBLE="TRUE" VIEWDISP="IP Version" VIEWTYPE="HEADER"/>
+    </HEADERS>
+  </SET>
+
+</SETTINGS>
\ No newline at end of file
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/xplorer.opt b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/xplorer.opt
new file mode 100644 (file)
index 0000000..53ea0c7
--- /dev/null
@@ -0,0 +1 @@
+ -device xc5vfx70tff1136-1 data/system.ucf 7 0\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/xpsxflow.opt b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/__xps/xpsxflow.opt
new file mode 100644 (file)
index 0000000..b8fbf7a
--- /dev/null
@@ -0,0 +1 @@
+ -device xc5vfx70tff1136-1 data/system.ucf 0\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/svg10.dtd b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/svg10.dtd
new file mode 100644 (file)
index 0000000..110f5ce
--- /dev/null
@@ -0,0 +1,1704 @@
+<!-- =====================================================================
+  This is the DTD for SVG 1.0.
+
+  The specification for SVG that corresponds to this DTD is available at:
+
+    http://www.w3.org/TR/2001/REC-SVG-20010904/
+
+  Copyright (c) 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+
+  For SVG 1.0:
+
+    Namespace:
+      http://www.w3.org/2000/svg  
+
+    Public identifier:
+      PUBLIC "-//W3C//DTD SVG 1.0//EN"
+
+    URI for the DTD:
+      http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd
+============================================================================= -->
+
+
+<!-- ==============================================================
+     ENTITY DECLARATIONS: Data types 
+     ============================================================== -->
+
+<!ENTITY % BaselineShiftValue "CDATA">
+    <!-- 'baseline-shift' property/attribute value (e.g., 'baseline', 'sub', etc.) -->
+
+<!ENTITY % Boolean "(false | true)">
+    <!-- feature specification -->
+
+<!ENTITY % ClassList "CDATA">
+    <!-- list of classes -->
+
+<!ENTITY % ClipValue "CDATA">
+    <!-- 'clip' property/attribute value (e.g., 'auto', rect(...)) -->
+
+<!ENTITY % ClipPathValue "CDATA">
+    <!-- 'clip-path' property/attribute value (e.g., 'none', %URI;) -->
+
+<!ENTITY % ClipFillRule "(nonzero | evenodd | inherit)">
+    <!-- 'clip-rule' or fill-rule property/attribute value -->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % Coordinate "CDATA">
+    <!-- a <coordinate> -->
+
+<!ENTITY % Coordinates "CDATA">
+    <!-- a list of <coordinate>s -->
+
+<!ENTITY % Color "CDATA">
+    <!-- a <color> value -->
+
+<!ENTITY % CursorValue "CDATA">
+    <!-- 'cursor' property/attribute value (e.g., 'crosshair', %URI;) -->
+
+<!ENTITY % EnableBackgroundValue "CDATA">
+    <!-- 'enable-background' property/attribute value (e.g., 'new', 'accumulate') -->
+
+<!ENTITY % ExtensionList "CDATA">
+    <!-- extension list specification -->
+
+<!ENTITY % FeatureList "CDATA">
+    <!-- feature list specification -->
+
+<!ENTITY % FilterValue "CDATA">
+    <!-- 'filter' property/attribute value (e.g., 'none', %URI;) -->
+
+<!ENTITY % FontFamilyValue "CDATA">
+    <!-- 'font-family' property/attribute value (i.e., list of fonts) -->
+
+<!ENTITY % FontSizeValue "CDATA">
+    <!-- 'font-size' property/attribute value -->
+
+<!ENTITY % FontSizeAdjustValue "CDATA">
+    <!-- 'font-size-adjust' property/attribute value -->
+
+<!ENTITY % GlyphOrientationHorizontalValue "CDATA">
+    <!-- 'glyph-orientation-horizontal' property/attribute value (e.g., <angle>) -->
+
+<!ENTITY % GlyphOrientationVerticalValue "CDATA">
+    <!-- 'glyph-orientation-vertical' property/attribute value (e.g., 'auto', <angle>) -->
+
+<!ENTITY % Integer "CDATA">
+    <!-- a <integer> -->
+
+<!ENTITY % KerningValue "CDATA">
+    <!-- 'kerning' property/attribute value (e.g., auto | <length>) -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC3066] -->
+
+<!ENTITY % LanguageCodes "CDATA">
+    <!-- comma-separated list of language codes, as per [RFC3066] -->
+
+<!ENTITY % Length "CDATA">
+    <!-- a <length> -->
+
+<!ENTITY % Lengths "CDATA">
+    <!-- a list of <length>s -->
+
+<!ENTITY % LinkTarget "NMTOKEN">
+    <!-- link to this target -->
+
+<!ENTITY % MarkerValue "CDATA">
+    <!-- 'marker' property/attribute value (e.g., 'none', %URI;) -->
+
+<!ENTITY % MaskValue "CDATA">
+    <!-- 'mask' property/attribute value (e.g., 'none', %URI;) -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- comma-separated list of media descriptors. -->
+
+<!ENTITY % Number "CDATA">
+    <!-- a <number> -->
+
+<!ENTITY % NumberOptionalNumber "CDATA">
+    <!-- list of <number>s, but at least one and at most two -->
+
+<!ENTITY % NumberOrPercentage "CDATA">
+    <!-- a <number> or a  <percentage> -->
+
+<!ENTITY % Numbers "CDATA">
+    <!-- a list of <number>s -->
+
+<!ENTITY % OpacityValue "CDATA">
+    <!-- opacity value (e.g., <number>) -->
+
+<!ENTITY % Paint "CDATA">
+    <!-- a 'fill' or 'stroke' property/attribute value: <paint> -->
+
+<!ENTITY % PathData "CDATA">
+    <!-- a path data specification -->
+
+<!ENTITY % Points "CDATA">
+    <!-- a list of points -->
+
+<!ENTITY % PreserveAspectRatioSpec "CDATA">
+    <!-- 'preserveAspectRatio' attribute specification -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % SpacingValue "CDATA">
+    <!-- 'letter-spacing' or 'word-spacing' property/attribute value (e.g., normal | <length>) -->
+
+<!ENTITY % StrokeDashArrayValue "CDATA">
+    <!-- 'stroke-dasharray' property/attribute value (e.g., 'none', list of <number>s) -->
+
+<!ENTITY % StrokeDashOffsetValue "CDATA">
+    <!-- 'stroke-dashoffset' property/attribute value (e.g., 'none', <legnth>) -->
+
+<!ENTITY % StrokeMiterLimitValue "CDATA">
+    <!-- 'stroke-miterlimit' property/attribute value (e.g., <number>) -->
+
+<!ENTITY % StrokeWidthValue "CDATA">
+    <!-- 'stroke-width' property/attribute value (e.g., <length>) -->
+
+<!ENTITY % StructuredText
+  "content CDATA #FIXED 'structured text'" >
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % SVGColor "CDATA">
+    <!-- An SVG color value (RGB plus optional ICC) -->
+
+<!ENTITY % Text "CDATA">
+    <!-- arbitrary text string -->
+
+<!ENTITY % TextDecorationValue "CDATA">
+    <!-- 'text-decoration' property/attribute value (e.g., 'none', 'underline') -->
+
+<!ENTITY % TransformList "CDATA">
+    <!-- list of transforms -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [URI] -->
+
+<!ENTITY % ViewBoxSpec "CDATA">
+    <!-- 'viewBox' attribute specification -->
+
+
+<!-- ==============================================================
+     ENTITY DECLARATIONS: Collections of common attributes 
+     ============================================================== -->
+
+<!-- All elements have an ID. -->
+<!ENTITY % stdAttrs
+ "id ID #IMPLIED
+  xml:base %URI; #IMPLIED" >
+
+<!-- Common attributes for elements that might contain character data content. -->
+<!ENTITY % langSpaceAttrs
+ "xml:lang %LanguageCode; #IMPLIED
+  xml:space (default|preserve) #IMPLIED" >
+
+<!-- Common attributes to check for system capabilities. -->
+<!ENTITY % testAttrs
+ "requiredFeatures %FeatureList; #IMPLIED
+  requiredExtensions %ExtensionList; #IMPLIED
+  systemLanguage %LanguageCodes; #IMPLIED" >
+
+<!-- For most uses of URI referencing:
+        standard XLink attributes other than xlink:href. -->
+<!ENTITY % xlinkRefAttrs
+ "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
+  xlink:type (simple) #FIXED 'simple' 
+  xlink:role %URI; #IMPLIED
+  xlink:arcrole %URI; #IMPLIED
+  xlink:title CDATA #IMPLIED
+  xlink:show (other) 'other'
+  xlink:actuate (onLoad) #FIXED 'onLoad'" >
+
+<!-- Standard XLink attributes for uses of URI referencing where xlink:show is 'embed' -->
+<!ENTITY % xlinkRefAttrsEmbed
+ "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
+  xlink:type (simple) #FIXED 'simple' 
+  xlink:role %URI; #IMPLIED
+  xlink:arcrole %URI; #IMPLIED
+  xlink:title CDATA #IMPLIED
+  xlink:show (embed) 'embed'
+  xlink:actuate (onLoad) #FIXED 'onLoad'" >
+
+<!ENTITY % graphicsElementEvents
+  "onfocusin %Script; #IMPLIED
+   onfocusout %Script; #IMPLIED
+   onactivate %Script; #IMPLIED
+   onclick %Script; #IMPLIED
+   onmousedown %Script; #IMPLIED
+   onmouseup %Script; #IMPLIED
+   onmouseover %Script; #IMPLIED
+   onmousemove %Script; #IMPLIED
+   onmouseout %Script; #IMPLIED
+   onload %Script; #IMPLIED" >
+
+<!ENTITY % documentEvents
+  "onunload %Script; #IMPLIED
+   onabort %Script; #IMPLIED
+   onerror %Script; #IMPLIED
+   onresize %Script; #IMPLIED
+   onscroll %Script; #IMPLIED
+   onzoom %Script; #IMPLIED" >
+
+<!ENTITY % animationEvents
+  "onbegin %Script; #IMPLIED
+   onend %Script; #IMPLIED
+   onrepeat %Script; #IMPLIED" >
+
+<!-- This entity allows for at most one of desc, title and metadata,
+     supplied in any order -->
+<!ENTITY % descTitleMetadata
+          "(((desc,((title,metadata?)|(metadata,title?))?)|
+          (title,((desc,metadata?)|(metadata,desc?))?)|
+          (metadata,((desc,title?)|(title,desc?))?))?)" >
+
+
+<!-- ==============================================================
+     ENTITY DECLARATIONS: Collections of presentation attributes 
+     ============================================================== -->
+
+<!-- The following presentation attributes have to do with specifying color. -->
+<!ENTITY % PresentationAttributes-Color
+  "color %Color; #IMPLIED
+   color-interpolation (auto | sRGB | linearRGB | inherit) #IMPLIED
+   color-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes apply to container elements. -->
+<!ENTITY % PresentationAttributes-Containers
+  "enable-background %EnableBackgroundValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to 'feFlood' elements. -->
+<!ENTITY % PresentationAttributes-feFlood
+  "flood-color %SVGColor; #IMPLIED
+   flood-opacity %OpacityValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to filling and stroking operations. -->
+<!ENTITY % PresentationAttributes-FillStroke
+  "fill %Paint; #IMPLIED
+   fill-opacity %OpacityValue; #IMPLIED
+   fill-rule %ClipFillRule; #IMPLIED
+   stroke %Paint; #IMPLIED
+   stroke-dasharray %StrokeDashArrayValue; #IMPLIED
+   stroke-dashoffset %StrokeDashOffsetValue; #IMPLIED
+   stroke-linecap (butt | round | square | inherit) #IMPLIED
+   stroke-linejoin (miter | round | bevel | inherit) #IMPLIED
+   stroke-miterlimit %StrokeMiterLimitValue; #IMPLIED
+   stroke-opacity %OpacityValue; #IMPLIED
+   stroke-width %StrokeWidthValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to filter primitives. -->
+<!ENTITY % PresentationAttributes-FilterPrimitives
+  "color-interpolation-filters (auto | sRGB | linearRGB | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes have to do with selecting a font to use. -->
+<!ENTITY % PresentationAttributes-FontSpecification
+  "font-family %FontFamilyValue; #IMPLIED
+   font-size %FontSizeValue; #IMPLIED
+   font-size-adjust %FontSizeAdjustValue; #IMPLIED
+   font-stretch (normal | wider | narrower | ultra-condensed | extra-condensed |
+                 condensed | semi-condensed | semi-expanded | expanded |
+                 extra-expanded | ultra-expanded | inherit) #IMPLIED
+   font-style (normal | italic | oblique | inherit) #IMPLIED
+   font-variant (normal | small-caps | inherit) #IMPLIED
+   font-weight (normal | bold | bolder | lighter | 100 | 200 | 300 |
+               400 | 500 | 600 | 700 | 800 | 900 | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes apply to gradient 'stop' elements. -->
+<!ENTITY % PresentationAttributes-Gradients
+  "stop-color %SVGColor; #IMPLIED
+   stop-opacity %OpacityValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to graphics elements. -->
+<!ENTITY % PresentationAttributes-Graphics
+  "clip-path %ClipPathValue; #IMPLIED
+   clip-rule %ClipFillRule; #IMPLIED
+   cursor %CursorValue; #IMPLIED
+   display (inline | block | list-item | run-in | compact | marker |
+            table | inline-table | table-row-group | table-header-group |
+            table-footer-group | table-row | table-column-group | table-column |
+            table-cell | table-caption | none | inherit) #IMPLIED
+   filter %FilterValue; #IMPLIED
+   image-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED
+   mask %MaskValue; #IMPLIED
+   opacity %OpacityValue; #IMPLIED
+   pointer-events (visiblePainted | visibleFill | visibleStroke | visible |
+                   painted | fill | stroke | all | none | inherit) #IMPLIED
+   shape-rendering (auto | optimizeSpeed | crispEdges | geometricPrecision | inherit) #IMPLIED
+   text-rendering (auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit) #IMPLIED
+   visibility (visible | hidden | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes apply to 'image' elements. -->
+<!ENTITY % PresentationAttributes-Images
+  "color-profile CDATA #IMPLIED " >
+
+<!--The following presentation attributes apply to 'feDiffuseLighting' and 'feSpecularLighting' elements. -->
+<!ENTITY % PresentationAttributes-LightingEffects
+  "lighting-color %SVGColor; #IMPLIED " >
+
+<!-- The following presentation attributes apply to marker operations. -->
+<!ENTITY % PresentationAttributes-Markers
+  "marker-start %MarkerValue; #IMPLIED
+   marker-mid %MarkerValue; #IMPLIED
+   marker-end %MarkerValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to text content elements. -->
+<!ENTITY % PresentationAttributes-TextContentElements
+  "alignment-baseline (baseline | top | before-edge | text-top | text-before-edge |
+                        middle | bottom | after-edge | text-bottom | text-after-edge |
+                        ideographic | lower | hanging | mathematical | inherit) #IMPLIED
+   baseline-shift %BaselineShiftValue; #IMPLIED
+   direction (ltr | rtl | inherit) #IMPLIED
+   dominant-baseline (auto | autosense-script | no-change | reset|
+                      ideographic | lower | hanging | mathematical | inherit ) #IMPLIED
+   glyph-orientation-horizontal %GlyphOrientationHorizontalValue; #IMPLIED
+   glyph-orientation-vertical %GlyphOrientationVerticalValue; #IMPLIED
+   kerning %KerningValue; #IMPLIED
+   letter-spacing %SpacingValue; #IMPLIED
+   text-anchor (start | middle | end | inherit) #IMPLIED
+   text-decoration %TextDecorationValue; #IMPLIED
+   unicode-bidi (normal | embed | bidi-override | inherit) #IMPLIED
+   word-spacing %SpacingValue; #IMPLIED " >
+
+<!-- The following presentation attributes apply to 'text' elements. -->
+<!ENTITY % PresentationAttributes-TextElements
+  "writing-mode (lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit) #IMPLIED " >
+
+<!-- The following presentation attributes apply to elements that establish viewports. -->
+<!ENTITY % PresentationAttributes-Viewports
+  "clip %ClipValue; #IMPLIED
+   overflow (visible | hidden | scroll | auto | inherit) #IMPLIED " >
+
+<!--The following represents the complete list of presentation attributes. -->
+<!ENTITY % PresentationAttributes-All
+  "%PresentationAttributes-Color;
+   %PresentationAttributes-Containers;
+   %PresentationAttributes-feFlood;
+   %PresentationAttributes-FillStroke;
+   %PresentationAttributes-FilterPrimitives;
+   %PresentationAttributes-FontSpecification;
+   %PresentationAttributes-Gradients;
+   %PresentationAttributes-Graphics;
+   %PresentationAttributes-Images;
+   %PresentationAttributes-LightingEffects;
+   %PresentationAttributes-Markers;
+   %PresentationAttributes-TextContentElements;
+   %PresentationAttributes-TextElements;
+   %PresentationAttributes-Viewports;" >
+
+
+
+<!-- ==============================================================
+     ENTITY DECLARATIONS: DTD extensions 
+     ============================================================== -->
+
+<!-- Allow for extending the DTD with internal subset for 
+     container and graphics elements -->
+<!ENTITY % ceExt "" >
+<!ENTITY % geExt "" >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Document Structure 
+     ============================================================== -->
+
+<!ENTITY % svgExt "" >
+<!ELEMENT svg (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%svgExt;)* >
+<!ATTLIST svg
+  xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
+  xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED 
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  zoomAndPan (disable | magnify) 'magnify'
+  %graphicsElementEvents;
+  %documentEvents;
+  version %Number; #FIXED "1.0"
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED
+  contentScriptType %ContentType; "text/ecmascript"
+  contentStyleType %ContentType; "text/css" >
+
+<!ENTITY % gExt "" >
+<!ELEMENT g (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%gExt;)* >
+<!ATTLIST g
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;  >
+
+<!ENTITY % defsExt "" >
+<!ELEMENT defs (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%defsExt;)* >
+<!ATTLIST defs
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;  >
+
+<!ENTITY % descExt "" >
+<!ELEMENT desc (#PCDATA %descExt;)* >
+<!ATTLIST desc
+  %stdAttrs;
+  %langSpaceAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %StructuredText; >
+
+<!ENTITY % titleExt "" >
+<!ELEMENT title (#PCDATA %titleExt;)* >
+<!ATTLIST title
+  %stdAttrs;
+  %langSpaceAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %StructuredText; >
+
+<!ENTITY % symbolExt "" >
+<!ELEMENT symbol (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%symbolExt;)* >
+<!ATTLIST symbol
+  %stdAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  %graphicsElementEvents; >
+
+<!ENTITY % useExt "" >
+<!ELEMENT use (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                   %geExt;%useExt;)*) >
+<!ATTLIST use
+  %stdAttrs;
+  %xlinkRefAttrsEmbed;
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED >
+
+<!ENTITY % imageExt "" >
+<!ELEMENT image (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                   %geExt;%imageExt;)*) >
+<!ATTLIST image
+  %stdAttrs;
+  %xlinkRefAttrsEmbed;
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Images;
+  %PresentationAttributes-Viewports;
+  transform %TransformList; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  %graphicsElementEvents;
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #REQUIRED
+  height %Length; #REQUIRED >
+
+<!ENTITY % switchExt "" >
+<!ELEMENT switch (%descTitleMetadata;,
+                  (path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|switch|a|foreignObject|
+                   animate|set|animateMotion|animateColor|animateTransform
+                   %ceExt;%switchExt;)*) >
+<!ATTLIST switch
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents; >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Styling 
+     ============================================================== -->
+
+<!ELEMENT style (#PCDATA) >
+<!ATTLIST style 
+  %stdAttrs;
+  xml:space (preserve) #FIXED "preserve"
+  type %ContentType; #REQUIRED
+  media %MediaDesc; #IMPLIED
+  title %Text; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Paths
+     ============================================================== -->
+
+<!ENTITY % pathExt "" >
+<!ELEMENT path (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%pathExt;)*) >
+<!ATTLIST path
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Markers;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  d %PathData; #REQUIRED
+  pathLength %Number; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Basic Shapes
+     ============================================================== -->
+
+<!ENTITY % rectExt "" >
+<!ELEMENT rect (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%rectExt;)*) >
+<!ATTLIST rect
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #REQUIRED
+  height %Length; #REQUIRED
+  rx %Length; #IMPLIED
+  ry %Length; #IMPLIED >
+
+<!ENTITY % circleExt "" >
+<!ELEMENT circle (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%circleExt;)*) >
+<!ATTLIST circle
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  cx %Coordinate; #IMPLIED
+  cy %Coordinate; #IMPLIED
+  r %Length; #REQUIRED >
+
+<!ENTITY % ellipseExt "" >
+<!ELEMENT ellipse (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%ellipseExt;)*) >
+<!ATTLIST ellipse
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  cx %Coordinate; #IMPLIED
+  cy %Coordinate; #IMPLIED
+  rx %Length; #REQUIRED
+  ry %Length; #REQUIRED >
+
+<!ENTITY % lineExt "" >
+<!ELEMENT line (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%lineExt;)*) >
+<!ATTLIST line
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Markers;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x1 %Coordinate; #IMPLIED
+  y1 %Coordinate; #IMPLIED
+  x2 %Coordinate; #IMPLIED
+  y2 %Coordinate; #IMPLIED >
+
+<!ENTITY % polylineExt "" >
+<!ELEMENT polyline (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%polylineExt;)*) >
+<!ATTLIST polyline
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Markers;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  points %Points; #REQUIRED >
+
+<!ENTITY % polygonExt "" >
+<!ELEMENT polygon (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
+                %geExt;%polygonExt;)*) >
+<!ATTLIST polygon
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-Markers;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  points %Points; #REQUIRED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Text
+     ============================================================== -->
+
+<!ENTITY % textExt "" >
+<!ELEMENT text (#PCDATA|desc|title|metadata|
+                tspan|tref|textPath|altGlyph|a|animate|set|
+                animateMotion|animateColor|animateTransform
+                %geExt;%textExt;)* >
+<!ATTLIST text
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %PresentationAttributes-TextElements;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x %Coordinates; #IMPLIED
+  y %Coordinates; #IMPLIED
+  dx %Lengths; #IMPLIED
+  dy %Lengths; #IMPLIED
+  rotate %Numbers; #IMPLIED
+  textLength %Length; #IMPLIED
+  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >
+
+<!ENTITY % tspanExt "" >
+<!ELEMENT tspan (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
+                %tspanExt;)* >
+<!ATTLIST tspan
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %graphicsElementEvents;
+  x %Coordinates; #IMPLIED
+  y %Coordinates; #IMPLIED
+  dx %Lengths; #IMPLIED
+  dy %Lengths; #IMPLIED
+  rotate %Numbers; #IMPLIED
+  textLength %Length; #IMPLIED
+  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >
+
+<!ENTITY % trefExt "" >
+<!ELEMENT tref (desc|title|metadata|animate|set|animateColor
+                %trefExt;)* >
+<!ATTLIST tref
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %graphicsElementEvents;
+  x %Coordinates; #IMPLIED
+  y %Coordinates; #IMPLIED
+  dx %Lengths; #IMPLIED
+  dy %Lengths; #IMPLIED
+  rotate %Numbers; #IMPLIED
+  textLength %Length; #IMPLIED
+  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >
+
+<!ENTITY % textPathExt "" >
+<!ELEMENT textPath (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
+                %textPathExt;)* >
+<!ATTLIST textPath
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED
+  %langSpaceAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %graphicsElementEvents;
+  startOffset %Length; #IMPLIED
+  textLength %Length; #IMPLIED
+  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED
+  method (align|stretch) #IMPLIED
+  spacing (auto|exact) #IMPLIED >
+
+<!ENTITY % altGlyphExt "" >
+<!ELEMENT altGlyph (#PCDATA %altGlyphExt;)* >
+<!ATTLIST altGlyph
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED 
+  glyphRef CDATA #IMPLIED
+  format CDATA #IMPLIED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %graphicsElementEvents;
+  x %Coordinates; #IMPLIED
+  y %Coordinates; #IMPLIED
+  dx %Lengths; #IMPLIED
+  dy %Lengths; #IMPLIED
+  rotate %Numbers; #IMPLIED >
+
+<!ENTITY % altGlyphDefExt "" >
+<!ELEMENT altGlyphDef ((glyphRef+|altGlyphItem+) %altGlyphDefExt;) >
+<!ATTLIST altGlyphDef
+  %stdAttrs; >
+
+<!ENTITY % altGlyphItemExt "" >
+<!ELEMENT altGlyphItem (glyphRef+ %altGlyphItemExt;) >
+<!ATTLIST altGlyphItem
+  %stdAttrs; >
+
+<!ELEMENT glyphRef EMPTY >
+<!ATTLIST glyphRef
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-FontSpecification;
+  glyphRef CDATA #IMPLIED
+  format CDATA #IMPLIED
+  x %Number; #IMPLIED
+  y %Number; #IMPLIED
+  dx %Number; #IMPLIED
+  dy %Number; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Painting: Filling, Stroking and Marker Symbols 
+     ============================================================== -->
+
+<!ENTITY % markerExt "" >
+<!ELEMENT marker (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%markerExt;)* >
+<!ATTLIST marker
+  %stdAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  refX %Coordinate; #IMPLIED
+  refY %Coordinate; #IMPLIED
+  markerUnits (strokeWidth | userSpaceOnUse) #IMPLIED
+  markerWidth  %Length; #IMPLIED
+  markerHeight %Length; #IMPLIED
+  orient CDATA #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Color 
+     ============================================================== -->
+
+<!ELEMENT color-profile (%descTitleMetadata;) >
+<!ATTLIST color-profile 
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  local CDATA #IMPLIED  
+  name CDATA #REQUIRED
+  rendering-intent (auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric) "auto" >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Gradients and Patterns 
+     ============================================================== -->
+
+<!ENTITY % linearGradientExt "" >
+<!ELEMENT linearGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
+                   %linearGradientExt;)*) >
+<!ATTLIST linearGradient
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-Gradients;
+  gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  gradientTransform %TransformList; #IMPLIED
+  x1 %Coordinate; #IMPLIED
+  y1 %Coordinate; #IMPLIED
+  x2 %Coordinate; #IMPLIED
+  y2 %Coordinate; #IMPLIED
+  spreadMethod (pad | reflect | repeat) #IMPLIED >
+
+
+<!ENTITY % radialGradientExt "" >
+<!ELEMENT radialGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
+                   %radialGradientExt;)*) >
+<!ATTLIST radialGradient
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-Gradients;
+  gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  gradientTransform %TransformList; #IMPLIED
+  cx %Coordinate; #IMPLIED
+  cy %Coordinate; #IMPLIED
+  r %Length; #IMPLIED
+  fx %Coordinate; #IMPLIED
+  fy %Coordinate; #IMPLIED
+  spreadMethod (pad | reflect | repeat) #IMPLIED >
+
+
+<!ENTITY % stopExt "" >
+<!ELEMENT stop (animate|set|animateColor
+                   %stopExt;)* >
+<!ATTLIST stop
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-Gradients;
+  offset %NumberOrPercentage; #REQUIRED >
+
+<!ENTITY % patternExt "" >
+<!ELEMENT pattern (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%patternExt;)* >
+<!ATTLIST pattern
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  patternUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  patternContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  patternTransform %TransformList; #IMPLIED
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Clipping, Masking and Compositing 
+     ============================================================== -->
+
+<!ENTITY % clipPathExt "" >
+<!ELEMENT clipPath (%descTitleMetadata;,
+                    (path|text|rect|circle|ellipse|line|polyline|polygon|
+                     use|animate|set|animateMotion|animateColor|animateTransform
+                     %ceExt;%clipPathExt;)*) >
+<!ATTLIST clipPath
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FillStroke;
+  %PresentationAttributes-FontSpecification;
+  %PresentationAttributes-Graphics;
+  %PresentationAttributes-TextContentElements;
+  %PresentationAttributes-TextElements;
+  transform %TransformList; #IMPLIED
+  clipPathUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED >
+
+<!ENTITY % maskExt "" >
+<!ELEMENT mask (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%maskExt;)*  >
+<!ATTLIST mask
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  maskUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  maskContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Filter Effects
+     ============================================================== -->
+
+<!ENTITY % filterExt "" >
+<!ELEMENT filter (%descTitleMetadata;,(feBlend|feFlood|
+  feColorMatrix|feComponentTransfer|
+  feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|
+  feGaussianBlur|feImage|feMerge|
+  feMorphology|feOffset|feSpecularLighting|
+  feTile|feTurbulence|
+  animate|set
+  %filterExt;)*) >
+<!ATTLIST filter
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  filterUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  primitiveUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #IMPLIED
+  height %Length; #IMPLIED
+  filterRes %NumberOptionalNumber; #IMPLIED >
+
+<!ENTITY % filter_primitive_attributes
+  "x %Coordinate; #IMPLIED
+   y %Coordinate; #IMPLIED
+   width %Length; #IMPLIED
+   height %Length; #IMPLIED
+   result CDATA #IMPLIED" >
+
+<!ENTITY % filter_primitive_attributes_with_in
+  "%filter_primitive_attributes;
+   in CDATA #IMPLIED">
+
+<!ELEMENT feDistantLight (animate|set)* >
+<!ATTLIST feDistantLight
+  %stdAttrs;
+  azimuth %Number; #IMPLIED
+  elevation %Number; #IMPLIED >
+
+<!ELEMENT fePointLight (animate|set)* >
+<!ATTLIST fePointLight
+  %stdAttrs;
+  x %Number; #IMPLIED
+  y %Number; #IMPLIED
+  z %Number; #IMPLIED >
+
+<!ELEMENT feSpotLight (animate|set)* >
+<!ATTLIST feSpotLight
+  %stdAttrs;
+  x %Number; #IMPLIED
+  y %Number; #IMPLIED
+  z %Number; #IMPLIED
+  pointsAtX %Number; #IMPLIED
+  pointsAtY %Number; #IMPLIED
+  pointsAtZ %Number; #IMPLIED
+  specularExponent %Number; #IMPLIED
+  limitingConeAngle %Number; #IMPLIED >
+
+<!ELEMENT feBlend (animate|set)* >
+<!ATTLIST feBlend
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  in2 CDATA #REQUIRED
+  mode (normal | multiply | screen | darken | lighten) "normal" >
+
+<!ELEMENT feColorMatrix (animate|set)* >
+<!ATTLIST feColorMatrix
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  type (matrix | saturate | hueRotate | luminanceToAlpha) "matrix"
+  values CDATA #IMPLIED >
+
+<!ELEMENT feComponentTransfer (feFuncR?,feFuncG?,feFuncB?,feFuncA?) >
+<!ATTLIST feComponentTransfer
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in; >
+
+<!ENTITY % component_transfer_function_attributes
+  "type (identity | table | discrete | linear | gamma) #REQUIRED
+   tableValues CDATA #IMPLIED
+   slope %Number; #IMPLIED
+   intercept %Number; #IMPLIED
+   amplitude %Number; #IMPLIED
+   exponent %Number; #IMPLIED
+   offset %Number; #IMPLIED" >
+
+<!ELEMENT feFuncR (animate|set)* >
+<!ATTLIST feFuncR
+  %stdAttrs;
+  %component_transfer_function_attributes; >
+
+<!ELEMENT feFuncG (animate|set)* >
+<!ATTLIST feFuncG
+  %stdAttrs;
+  %component_transfer_function_attributes; >
+
+<!ELEMENT feFuncB (animate|set)* >
+<!ATTLIST feFuncB
+  %stdAttrs;
+  %component_transfer_function_attributes; >
+
+<!ELEMENT feFuncA (animate|set)* >
+<!ATTLIST feFuncA
+  %stdAttrs;
+  %component_transfer_function_attributes; >
+
+<!ELEMENT feComposite (animate|set)* >
+<!ATTLIST feComposite
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  in2 CDATA #REQUIRED
+  operator (over | in | out | atop | xor | arithmetic) "over"
+  k1 %Number; #IMPLIED
+  k2 %Number; #IMPLIED
+  k3 %Number; #IMPLIED
+  k4 %Number; #IMPLIED >
+
+<!ELEMENT feConvolveMatrix (animate|set)* >
+<!ATTLIST feConvolveMatrix
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  order %NumberOptionalNumber; #REQUIRED
+  kernelMatrix CDATA #REQUIRED
+  divisor %Number; #IMPLIED
+  bias %Number; #IMPLIED
+  targetX %Integer; #IMPLIED
+  targetY %Integer; #IMPLIED
+  edgeMode (duplicate|wrap|none) "duplicate" 
+  kernelUnitLength %NumberOptionalNumber; #IMPLIED 
+  preserveAlpha %Boolean; #IMPLIED >
+
+<!ELEMENT feDiffuseLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
+<!ATTLIST feDiffuseLighting
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FilterPrimitives;
+  %PresentationAttributes-LightingEffects;
+  %filter_primitive_attributes_with_in;
+  surfaceScale %Number; #IMPLIED
+  diffuseConstant %Number; #IMPLIED 
+  kernelUnitLength %NumberOptionalNumber; #IMPLIED >
+
+<!ELEMENT feDisplacementMap (animate|set)* >
+<!ATTLIST feDisplacementMap
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  in2 CDATA #REQUIRED
+  scale %Number; #IMPLIED
+  xChannelSelector (R | G | B | A) "A"
+  yChannelSelector (R | G | B | A) "A" >
+
+<!ELEMENT feFlood (animate|set|animateColor)* >
+<!ATTLIST feFlood
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-feFlood;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in; >
+
+<!ELEMENT feGaussianBlur (animate|set)* >
+<!ATTLIST feGaussianBlur
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  stdDeviation %NumberOptionalNumber; #IMPLIED >
+
+<!ELEMENT feImage (animate|set|animateTransform)* >
+<!ATTLIST feImage
+  %stdAttrs;
+  %xlinkRefAttrsEmbed;
+  xlink:href %URI; #REQUIRED
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  %filter_primitive_attributes;
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet' >
+
+<!ELEMENT feMerge (feMergeNode)* >
+<!ATTLIST feMerge
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes; >
+
+<!ELEMENT feMergeNode (animate|set)* >
+<!ATTLIST feMergeNode
+  %stdAttrs;
+  in CDATA #IMPLIED >
+
+<!ELEMENT feMorphology (animate|set)* >
+<!ATTLIST feMorphology
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  operator (erode | dilate) "erode"
+  radius %NumberOptionalNumber; #IMPLIED >
+
+<!ELEMENT feOffset (animate|set)* >
+<!ATTLIST feOffset
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in;
+  dx %Number; #IMPLIED
+  dy %Number; #IMPLIED >
+
+<!ELEMENT feSpecularLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
+<!ATTLIST feSpecularLighting
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-Color;
+  %PresentationAttributes-FilterPrimitives;
+  %PresentationAttributes-LightingEffects;
+  %filter_primitive_attributes_with_in;
+  surfaceScale %Number; #IMPLIED
+  specularConstant %Number; #IMPLIED
+  specularExponent %Number; #IMPLIED 
+  kernelUnitLength %NumberOptionalNumber; #IMPLIED >
+
+<!ELEMENT feTile (animate|set)* >
+<!ATTLIST feTile
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes_with_in; >
+
+<!ELEMENT feTurbulence (animate|set)* >
+<!ATTLIST feTurbulence
+  %stdAttrs;
+  %PresentationAttributes-FilterPrimitives;
+  %filter_primitive_attributes;
+  baseFrequency %NumberOptionalNumber; #IMPLIED
+  numOctaves %Integer; #IMPLIED
+  seed %Number; #IMPLIED
+  stitchTiles (stitch | noStitch) "noStitch"
+  type (fractalNoise | turbulence) "turbulence" >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Interactivity 
+     ============================================================== -->
+
+<!ELEMENT cursor (%descTitleMetadata;) >
+<!ATTLIST cursor
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Linking
+     ============================================================== -->
+
+<!ENTITY % aExt "" >
+<!ELEMENT a       (#PCDATA|desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %ceExt;%aExt;)* >
+<!ATTLIST a
+  %stdAttrs;
+  xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
+  xlink:type (simple) #FIXED "simple" 
+  xlink:role %URI; #IMPLIED
+  xlink:arcrole %URI; #IMPLIED
+  xlink:title CDATA #IMPLIED
+  xlink:show (new|replace) 'replace'
+  xlink:actuate (onRequest) #FIXED 'onRequest'
+  xlink:href %URI; #REQUIRED
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  target %LinkTarget; #IMPLIED >
+
+<!ENTITY % viewExt "" >
+<!ELEMENT view (%descTitleMetadata;%viewExt;) >
+<!ATTLIST view
+  %stdAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  viewBox %ViewBoxSpec; #IMPLIED
+  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
+  zoomAndPan (disable | magnify) 'magnify' 
+  viewTarget CDATA #IMPLIED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Scripting 
+     ============================================================== -->
+
+<!ELEMENT script (#PCDATA) >
+<!ATTLIST script
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED
+  externalResourcesRequired %Boolean; #IMPLIED
+  type %ContentType; #REQUIRED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Animation 
+     ============================================================== -->
+
+<!ENTITY % animElementAttrs
+ "%xlinkRefAttrs;
+  xlink:href %URI; #IMPLIED" >
+
+<!ENTITY % animAttributeAttrs
+ "attributeName  CDATA  #REQUIRED
+  attributeType  CDATA  #IMPLIED" >
+
+<!ENTITY % animTimingAttrs
+ "begin CDATA #IMPLIED 
+  dur CDATA #IMPLIED
+  end CDATA #IMPLIED
+  min CDATA #IMPLIED
+  max CDATA #IMPLIED
+  restart (always | never | whenNotActive) 'always'
+  repeatCount CDATA #IMPLIED 
+  repeatDur CDATA #IMPLIED
+  fill (remove | freeze) 'remove'" >
+
+<!ENTITY % animValueAttrs
+ "calcMode (discrete | linear | paced | spline) 'linear'
+  values CDATA #IMPLIED
+  keyTimes CDATA #IMPLIED
+  keySplines CDATA #IMPLIED
+  from CDATA #IMPLIED
+  to CDATA #IMPLIED
+  by CDATA #IMPLIED" >
+
+<!ENTITY % animAdditionAttrs
+ "additive       (replace | sum) 'replace'
+  accumulate     (none | sum) 'none'" >
+
+<!ENTITY % animateExt "" >
+<!ELEMENT animate (%descTitleMetadata;%animateExt;) >
+<!ATTLIST animate
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animAttributeAttrs;
+  %animTimingAttrs;
+  %animValueAttrs;
+  %animAdditionAttrs; >
+
+<!ENTITY % setExt "" >
+<!ELEMENT set (%descTitleMetadata;%setExt;) >
+<!ATTLIST set
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animAttributeAttrs;
+  %animTimingAttrs;
+  to CDATA #IMPLIED >
+
+<!ENTITY % animateMotionExt "" >
+<!ELEMENT animateMotion (%descTitleMetadata;,mpath? %animateMotionExt;) >
+<!ATTLIST animateMotion
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animTimingAttrs;
+  calcMode (discrete | linear | paced | spline) 'paced'
+  values CDATA #IMPLIED
+  keyTimes CDATA #IMPLIED
+  keySplines CDATA #IMPLIED
+  from CDATA #IMPLIED
+  to CDATA #IMPLIED
+  by CDATA #IMPLIED
+  %animAdditionAttrs;
+  path CDATA #IMPLIED
+  keyPoints CDATA #IMPLIED
+  rotate CDATA #IMPLIED
+  origin CDATA #IMPLIED >
+
+<!ENTITY % mpathExt "" >
+<!ELEMENT mpath (%descTitleMetadata;%mpathExt;) >
+<!ATTLIST mpath
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED
+  externalResourcesRequired %Boolean; #IMPLIED >
+
+<!ENTITY % animateColorExt "" >
+<!ELEMENT animateColor (%descTitleMetadata;%animateColorExt;) >
+<!ATTLIST animateColor
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animAttributeAttrs;
+  %animTimingAttrs;
+  %animValueAttrs;
+  %animAdditionAttrs; >
+
+<!ENTITY % animateTransformExt "" >
+<!ELEMENT animateTransform (%descTitleMetadata;%animateTransformExt;) >
+<!ATTLIST animateTransform
+  %stdAttrs;
+  %testAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  %animationEvents;
+  %animElementAttrs;
+  %animAttributeAttrs;
+  %animTimingAttrs;
+  %animValueAttrs;
+  %animAdditionAttrs;
+  type (translate | scale | rotate | skewX | skewY) "translate" >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Fonts 
+     ============================================================== -->
+
+<!ENTITY % fontExt "" >
+<!ELEMENT font (%descTitleMetadata;,font-face,
+                   missing-glyph,(glyph|hkern|vkern %fontExt;)*) >
+<!ATTLIST font
+  %stdAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  horiz-origin-x %Number; #IMPLIED
+  horiz-origin-y %Number; #IMPLIED
+  horiz-adv-x %Number; #REQUIRED
+  vert-origin-x %Number; #IMPLIED
+  vert-origin-y %Number; #IMPLIED
+  vert-adv-y %Number; #IMPLIED >
+
+<!ENTITY % glyphExt "" >
+<!ELEMENT glyph (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %glyphExt;)* >
+<!ATTLIST glyph
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  unicode CDATA #IMPLIED
+  glyph-name CDATA #IMPLIED
+  d %PathData; #IMPLIED
+  orientation CDATA #IMPLIED
+  arabic-form CDATA #IMPLIED
+  lang %LanguageCodes; #IMPLIED
+  horiz-adv-x %Number; #IMPLIED
+  vert-origin-x %Number; #IMPLIED
+  vert-origin-y %Number; #IMPLIED
+  vert-adv-y %Number; #IMPLIED >
+
+<!ENTITY % missing-glyphExt "" >
+<!ELEMENT missing-glyph (desc|title|metadata|defs|
+                   path|text|rect|circle|ellipse|line|polyline|polygon|
+                   use|image|svg|g|view|switch|a|altGlyphDef|
+                   script|style|symbol|marker|clipPath|mask|
+                   linearGradient|radialGradient|pattern|filter|cursor|font|
+                   animate|set|animateMotion|animateColor|animateTransform|
+                   color-profile|font-face
+                   %missing-glyphExt;)* >
+<!ATTLIST missing-glyph
+  %stdAttrs;
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  d %PathData; #IMPLIED
+  horiz-adv-x %Number; #IMPLIED
+  vert-origin-x %Number; #IMPLIED
+  vert-origin-y %Number; #IMPLIED
+  vert-adv-y %Number; #IMPLIED >
+
+<!ELEMENT hkern EMPTY >
+<!ATTLIST hkern
+  %stdAttrs;
+  u1 CDATA #IMPLIED
+  g1 CDATA #IMPLIED
+  u2 CDATA #IMPLIED
+  g2 CDATA #IMPLIED
+  k %Number; #REQUIRED >
+
+<!ELEMENT vkern EMPTY >
+<!ATTLIST vkern
+  %stdAttrs;
+  u1 CDATA #IMPLIED
+  g1 CDATA #IMPLIED
+  u2 CDATA #IMPLIED
+  g2 CDATA #IMPLIED
+  k %Number; #REQUIRED >
+
+<!ELEMENT font-face (%descTitleMetadata;,font-face-src?,definition-src?) >
+<!ATTLIST font-face 
+  %stdAttrs;
+  font-family CDATA #IMPLIED
+  font-style CDATA #IMPLIED
+  font-variant CDATA #IMPLIED
+  font-weight CDATA #IMPLIED
+  font-stretch CDATA #IMPLIED
+  font-size CDATA #IMPLIED
+  unicode-range CDATA #IMPLIED
+  units-per-em %Number; #IMPLIED
+  panose-1 CDATA #IMPLIED
+  stemv %Number; #IMPLIED
+  stemh %Number; #IMPLIED
+  slope %Number; #IMPLIED
+  cap-height %Number; #IMPLIED
+  x-height %Number; #IMPLIED
+  accent-height %Number; #IMPLIED
+  ascent %Number; #IMPLIED
+  descent %Number; #IMPLIED
+  widths CDATA #IMPLIED
+  bbox CDATA #IMPLIED
+  ideographic %Number; #IMPLIED
+  alphabetic %Number; #IMPLIED
+  mathematical %Number; #IMPLIED
+  hanging %Number; #IMPLIED
+  v-ideographic %Number; #IMPLIED
+  v-alphabetic %Number; #IMPLIED
+  v-mathematical %Number; #IMPLIED
+  v-hanging %Number; #IMPLIED
+  underline-position %Number; #IMPLIED
+  underline-thickness %Number; #IMPLIED
+  strikethrough-position %Number; #IMPLIED
+  strikethrough-thickness %Number; #IMPLIED
+  overline-position %Number; #IMPLIED
+  overline-thickness %Number; #IMPLIED >
+
+<!ELEMENT font-face-src (font-face-uri|font-face-name)+ >
+<!ATTLIST font-face-src 
+  %stdAttrs; >
+
+<!ELEMENT font-face-uri (font-face-format*) >
+<!ATTLIST font-face-uri 
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED >
+
+<!ELEMENT font-face-format EMPTY >
+<!ATTLIST font-face-format 
+  %stdAttrs;
+  string CDATA #IMPLIED >
+
+<!ELEMENT font-face-name EMPTY >
+<!ATTLIST font-face-name 
+  %stdAttrs;
+  name CDATA #IMPLIED >
+
+<!ELEMENT definition-src EMPTY >
+<!ATTLIST definition-src 
+  %stdAttrs;
+  %xlinkRefAttrs;
+  xlink:href %URI; #REQUIRED >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Metadata 
+     ============================================================== -->
+
+<!ENTITY % metadataExt "" >
+<!ELEMENT metadata (#PCDATA %metadataExt;)* >
+<!ATTLIST metadata
+  %stdAttrs; >
+
+
+<!-- ==============================================================
+     DECLARATIONS CORRESPONDING TO: Extensibility 
+     ============================================================== -->
+
+<!ENTITY % foreignObjectExt "" >
+<!ELEMENT foreignObject (#PCDATA %ceExt;%foreignObjectExt;)* >
+<!ATTLIST foreignObject
+  %stdAttrs;
+  %testAttrs;
+  %langSpaceAttrs;
+  externalResourcesRequired %Boolean; #IMPLIED
+  class %ClassList; #IMPLIED
+  style %StyleSheet; #IMPLIED
+  %PresentationAttributes-All;
+  transform %TransformList; #IMPLIED
+  %graphicsElementEvents;
+  x %Coordinate; #IMPLIED
+  y %Coordinate; #IMPLIED
+  width %Length; #REQUIRED
+  height %Length; #REQUIRED
+  %StructuredText; >
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/system.css b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/system.css
new file mode 100644 (file)
index 0000000..0d7b46b
--- /dev/null
@@ -0,0 +1,446 @@
+
+       text.bif_label {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.debug_label {
+               fill:        #555555;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Times Arial Helvetica sans-serif;
+       }
+
+       text.ionum_label {
+               fill:        #555555;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.iogrp_label {
+               fill:        #000088;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       tspan.iogrp_label_super {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               baseline-shift:super;
+               font-family: Arial Courier san-serif;
+       }
+
+       text.p2pbus_label {
+               fill:         #000000;
+               stroke:       none;
+               font-size:    10pt; 
+               font-style:   italic;
+               font-weight:  bold; 
+               text-anchor:  start;
+               writing-mode: tb;
+               font-family:  Verdana Arial Helvetica sans-serif;
+       }
+
+       text.multip_label {
+               fill:         #000000;
+               stroke:       none;
+               font-size:    6pt; 
+               font-style:   italic;
+               font-weight:  bold; 
+               text-anchor:  start;
+               writing-mode: tb;
+               font-family:  Verdana Arial Helvetica sans-serif;
+       }
+
+
+
+       text.bc_iplabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  italic;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Courier Arial Helvetica sans-serif;
+       }
+               
+       text.bc_iptype {
+               fill:        #AA0017;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  italic;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.splitbus_label {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: sans-serif;
+       }
+       
+       text.sharedbus_label {
+               fill:         #000000;
+               stroke:       none;
+               font-size:    10pt; 
+               font-style:   italic;
+               font-weight:  bold; 
+               text-anchor:  start;
+               font-family:  Verdana Arial Helvetica sans-serif;
+       }
+
+
+       text.p2pbus_label_horiz {
+               fill:         #000000;
+               stroke:       none;
+               font-size:    6pt; 
+               font-style:   italic;
+               font-weight:  bold; 
+               text-anchor:  start;
+               font-family:  Verdana Arial Helvetica sans-serif;
+       }
+
+
+
+       text.key_title {
+               fill:        #AA0017;
+               stroke:      none;
+               font-size:   12pt; 
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Arial Helvetica sans-serif;
+       }
+
+       text.key_header {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   10pt; 
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Arial Helvetica sans-serif;
+       }
+
+       text.key_label {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic; 
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.key_label_ul {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic; 
+               font-weight: bold;
+               text-anchor: start;
+               text-decoration: underline;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.specs_header {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   10pt; 
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Arial Helvetica sans-serif;
+       }
+
+       text.specs_start {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic; 
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.specs_middle {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic; 
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.intr_symbol {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Arial Helvetica sans-serif;
+       }
+
+       text.busintlabel {
+               fill:        #810017;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  italic;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.mpmctitle {
+               fill:        #FFFFFF;
+               stroke:      none;
+               font-size:   16pt; 
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Arial Verdana Helvetica sans-serif;
+       }
+       
+       text.mpmcbiflabel {
+               fill:        #FFFFFF;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+
+       }
+
+       text.buslabel {
+               fill:        #CC3333;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+                       
+       text.iplabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: 800;
+               text-anchor: middle;
+               font-family: Courier Arial Helvetica sans-serif;
+       }
+               
+       text.iptype {
+               fill:        #AA0017;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.ipclass {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Times Arial Helvetica sans-serif;
+       }
+
+       text.procclass {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Times Arial Helvetica sans-serif;
+       }
+               
+               
+       text.portlabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.ipdbiflbl {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: bold;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+               
+       text.mmMHeader {
+               fill:        #FFFFFF;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.mmSHeader {
+               fill:        #810017;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.busintlabel {
+               fill:        #810017;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  italic;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.mpmctitle {
+               fill:        #FFFFFF;
+               stroke:      none;
+               font-size:   16pt; 
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Arial Verdana Helvetica sans-serif;
+       }
+       
+       text.mpmcbiflabel {
+               fill:        #FFFFFF;
+               stroke:      none;
+               font-size:   6pt; 
+               font-style:  normal;
+               font-weight: 900;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+
+       }
+
+       text.buslabel {
+               fill:        #CC3333;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+                       
+       text.iplabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: 800;
+               text-anchor: middle;
+               font-family: Courier Arial Helvetica sans-serif;
+       }
+               
+       text.iptype {
+               fill:        #AA0017;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  italic;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.ipclass {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: start;
+               font-family: Times Arial Helvetica sans-serif;
+       }
+
+       text.procclass {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   7pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Times Arial Helvetica sans-serif;
+       }
+               
+               
+       text.portlabel {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.ipdbiflbl {
+               fill:        #000000;
+               stroke:      none;
+               font-size:   8pt; 
+               font-style:  normal;
+               font-weight: bold;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+               
+       text.mmMHeader {
+               fill:        #FFFFFF;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
+       text.mmSHeader {
+               fill:        #810017;
+               stroke:      none;
+               font-size:   10pt; 
+               font-style:  normal;
+               font-weight: bold;
+               text-anchor: middle;
+               font-family: Verdana Arial Helvetica sans-serif;
+       }
+
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/system.svg b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/blockdiagram/system.svg
new file mode 100644 (file)
index 0000000..5e75ba4
--- /dev/null
@@ -0,0 +1,1113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "svg10.dtd">
+<?xml-stylesheet href="system.css" type="text/css"?>
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns:exsl="http://exslt.org/common" xmlns:xlink="http://www.w3.org/1999/xlink" width="1322" height="1923">
+  <defs>
+    <g id="G_IOPort">
+      <rect x="0" y="0" width="16" height="16" style="fill:#CCCCFF; stroke:#000088; stroke-width:1"/>
+      <path class="ioport" d="M   0,0      L   16,8      L   0,16      Z" style="stroke:none; fill:#0000BB"/>
+    </g>
+    <g id="G_BIPort">
+      <rect x="0" y="0" width="16" height="16" style="fill:#CCCCFF; stroke:#000088; stroke-width:1"/>
+      <path class="btop" d="M 0,8      8,0      16,8      Z" style="stroke:none; fill:#0000BB"/>
+      <path class="bbot" d="M 0,8      8,16      16,8      Z" style="stroke:none; fill:#0000BB"/>
+    </g>
+    <g id="KEY_IOPort">
+      <rect x="0" y="0" width="16" height="16" style="fill:#888888; stroke:none;"/>
+      <path class="ioport" d="M   0,0      L   16,8      L   0,16      Z" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="KEY_BIPort">
+      <rect x="0" y="0" width="16" height="16" style="fill:#888888; stroke:none;"/>
+      <path class="btop" d="M 0,8      8,0      16,8      Z" style="stroke:none; fill:#444444"/>
+      <path class="bbot" d="M 0,8      8,16      16,8      Z" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="KEY_INPort">
+      <use x="0" y="0" xlink:href="#KEY_IOPort"/>
+      <rect x="16" y="0" width="8" height="16" style="fill:#0000BB; stroke:none;"/>
+    </g>
+    <g id="KEY_OUTPort">
+      <use x="0" y="0" xlink:href="#KEY_IOPort" transform="scale(-1,1) translate(-16,0)"/>
+      <rect x="16" y="0" width="8" height="16" style="fill:#0000BB; stroke:none;"/>
+    </g>
+    <g id="KEY_INOUTPort">
+      <use x="0" y="0" xlink:href="#KEY_BIPort"/>
+      <rect x="16" y="0" width="8" height="16" style="fill:#0000BB; stroke:none;"/>
+    </g>
+    <g id="XIL_busconn_TARGET">
+      <circle cx="12" cy="12" r="12" style="fill:#CC3399; stroke:#990066; stroke-width:1"/>
+      <circle cx="12.5" cy="12" r="7" style="fill:#990066; stroke:none;"/>
+    </g>
+    <g id="XIL_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#990066; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="XIL_busconn_INITIATOR">
+      <rect x="0" y="0" width="24" height="24" style="fill:#CC3399; stroke:#990066; stroke-width:1"/>
+      <rect x="5.5" y="5" width="14" height="14" style="fill:#990066; stroke:none;"/>
+    </g>
+    <g id="XIL_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#990066; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="FCB_busconn_SLAVE">
+      <circle cx="12" cy="12" r="12" style="fill:#CCCCFF; stroke:#8C00FF; stroke-width:1"/>
+      <circle cx="12.5" cy="12" r="7" style="fill:#8C00FF; stroke:none;"/>
+    </g>
+    <g id="FCB_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#8C00FF; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="FCB_busconn_MASTER">
+      <rect x="0" y="0" width="24" height="24" style="fill:#CCCCFF; stroke:#8C00FF; stroke-width:1"/>
+      <rect x="5.5" y="5" width="14" height="14" style="fill:#8C00FF; stroke:none;"/>
+    </g>
+    <g id="FCB_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#8C00FF; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="PLBV46_busconn_SLAVE">
+      <circle cx="12" cy="12" r="12" style="fill:#FFFFDD; stroke:#BB9955; stroke-width:1"/>
+      <circle cx="12.5" cy="12" r="7" style="fill:#BB9955; stroke:none;"/>
+    </g>
+    <g id="PLBV46_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#BB9955; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="PLBV46_busconn_MASTER">
+      <rect x="0" y="0" width="24" height="24" style="fill:#FFFFDD; stroke:#BB9955; stroke-width:1"/>
+      <rect x="5.5" y="5" width="14" height="14" style="fill:#BB9955; stroke:none;"/>
+    </g>
+    <g id="PLBV46_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#BB9955; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="PLBV46_P2P_busconn_SLAVE">
+      <circle cx="12" cy="12" r="12" style="fill:#FFFFDD; stroke:#BB9955; stroke-width:1"/>
+      <circle cx="12.5" cy="12" r="7" style="fill:#BB9955; stroke:none;"/>
+    </g>
+    <g id="PLBV46_P2P_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#BB9955; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="PLBV46_P2P_busconn_MASTER">
+      <rect x="0" y="0" width="24" height="24" style="fill:#FFFFDD; stroke:#BB9955; stroke-width:1"/>
+      <rect x="5.5" y="5" width="14" height="14" style="fill:#BB9955; stroke:none;"/>
+    </g>
+    <g id="PLBV46_P2P_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#BB9955; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="KEY_busconn_SLAVE">
+      <circle cx="12" cy="12" r="12" style="fill:#888888; stroke:#444444; stroke-width:1"/>
+      <circle cx="12.5" cy="12" r="7" style="fill:#444444; stroke:none;"/>
+    </g>
+    <g id="KEY_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#444444; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="KEY_busconn_MASTER">
+      <rect x="0" y="0" width="24" height="24" style="fill:#888888; stroke:#444444; stroke-width:1"/>
+      <rect x="5.5" y="5" width="14" height="14" style="fill:#444444; stroke:none;"/>
+    </g>
+    <g id="KEY_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#444444; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="KEY_busconn_MASTER_SLAVE">
+      <circle cx="12" cy="12" r="12" style="fill:#888888; stroke:#444444; stroke-width:1"/>
+      <circle cx="12.5" cy="12" r="7" style="fill:#444444; stroke:none;"/>
+      <rect x="0" y="12" width="24" height="12" style="fill:#888888; stroke:#444444; stroke-width:1"/>
+      <rect x="5.5" y="12" width="14" height="7" style="fill:#444444; stroke:none;"/>
+    </g>
+    <g id="KEY_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#444444; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="KEY_busconn_TARGET">
+      <circle cx="12" cy="12" r="12" style="fill:#888888; stroke:#444444; stroke-width:1"/>
+      <circle cx="12.5" cy="12" r="7" style="fill:#444444; stroke:none;"/>
+    </g>
+    <g id="KEY_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#444444; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="KEY_busconn_INITIATOR">
+      <rect x="0" y="0" width="24" height="24" style="fill:#888888; stroke:#444444; stroke-width:1"/>
+      <rect x="5.5" y="5" width="14" height="14" style="fill:#444444; stroke:none;"/>
+    </g>
+    <g id="KEY_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#444444; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="KEY_busconn_MONITOR">
+      <rect x="0" y="0.5" width="24" height="7" style="fill:#444444; stroke:none;"/>
+      <rect x="0" y="16" width="24" height="7" style="fill:#444444; stroke:none;"/>
+    </g>
+    <g id="KEY_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#444444; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="KEY_busconn_USER">
+      <circle cx="12" cy="12" r="12" style="fill:#888888; stroke:#444444; stroke-width:1"/>
+      <circle cx="12.5" cy="12" r="7" style="fill:#444444; stroke:none;"/>
+    </g>
+    <g id="KEY_BifLabel">
+      <rect x="0" y="0" rx="3" ry="3" width="32" height="16" style="fill:#444444; stroke:black; stroke-width:1"/>
+    </g>
+    <g id="XIL_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#990066"/>
+    </g>
+    <g id="XIL_BusArrowWest">
+      <use x="0" y="0" xlink:href="#XIL_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="XIL_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#990066"/>
+    </g>
+    <g id="XIL_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#990066"/>
+    </g>
+    <g id="XIL_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#XIL_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="XIL_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#990066"/>
+    </g>
+    <g id="XIL_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#XIL_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#990066"/>
+    </g>
+    <g id="XIL_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#XIL_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="XIL_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#990066"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#990066"/>
+    </g>
+    <g id="OCM_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#0000DD"/>
+    </g>
+    <g id="OCM_BusArrowWest">
+      <use x="0" y="0" xlink:href="#OCM_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="OCM_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#0000DD"/>
+    </g>
+    <g id="OCM_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#0000DD"/>
+    </g>
+    <g id="OCM_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#OCM_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="OCM_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#0000DD"/>
+    </g>
+    <g id="OCM_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#OCM_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#0000DD"/>
+    </g>
+    <g id="OCM_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#OCM_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="OCM_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#0000DD"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#0000DD"/>
+    </g>
+    <g id="OPB_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#339900"/>
+    </g>
+    <g id="OPB_BusArrowWest">
+      <use x="0" y="0" xlink:href="#OPB_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="OPB_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#339900"/>
+    </g>
+    <g id="OPB_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#339900"/>
+    </g>
+    <g id="OPB_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#OPB_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="OPB_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#339900"/>
+    </g>
+    <g id="OPB_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#OPB_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#339900"/>
+    </g>
+    <g id="OPB_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#OPB_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="OPB_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#339900"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#339900"/>
+    </g>
+    <g id="LMB_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#7777FF"/>
+    </g>
+    <g id="LMB_BusArrowWest">
+      <use x="0" y="0" xlink:href="#LMB_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="LMB_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#7777FF"/>
+    </g>
+    <g id="LMB_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#7777FF"/>
+    </g>
+    <g id="LMB_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#LMB_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="LMB_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#7777FF"/>
+    </g>
+    <g id="LMB_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#LMB_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#7777FF"/>
+    </g>
+    <g id="LMB_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#LMB_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="LMB_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#7777FF"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#7777FF"/>
+    </g>
+    <g id="FSL_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#CC00CC"/>
+    </g>
+    <g id="FSL_BusArrowWest">
+      <use x="0" y="0" xlink:href="#FSL_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="FSL_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#CC00CC"/>
+    </g>
+    <g id="FSL_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#CC00CC"/>
+    </g>
+    <g id="FSL_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#FSL_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="FSL_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#CC00CC"/>
+    </g>
+    <g id="FSL_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#FSL_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#CC00CC"/>
+    </g>
+    <g id="FSL_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#FSL_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="FSL_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#CC00CC"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#CC00CC"/>
+    </g>
+    <g id="DCR_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#6699FF"/>
+    </g>
+    <g id="DCR_BusArrowWest">
+      <use x="0" y="0" xlink:href="#DCR_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="DCR_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#6699FF"/>
+    </g>
+    <g id="DCR_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#6699FF"/>
+    </g>
+    <g id="DCR_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#DCR_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="DCR_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#6699FF"/>
+    </g>
+    <g id="DCR_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#DCR_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#6699FF"/>
+    </g>
+    <g id="DCR_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#DCR_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="DCR_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#6699FF"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#6699FF"/>
+    </g>
+    <g id="FCB_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#8C00FF"/>
+    </g>
+    <g id="FCB_BusArrowWest">
+      <use x="0" y="0" xlink:href="#FCB_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="FCB_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#8C00FF"/>
+    </g>
+    <g id="FCB_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#8C00FF"/>
+    </g>
+    <g id="FCB_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#FCB_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="FCB_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#8C00FF"/>
+    </g>
+    <g id="FCB_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#FCB_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#8C00FF"/>
+    </g>
+    <g id="FCB_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#FCB_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="FCB_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#8C00FF"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#8C00FF"/>
+    </g>
+    <g id="PLB_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#FF5500"/>
+    </g>
+    <g id="PLB_BusArrowWest">
+      <use x="0" y="0" xlink:href="#PLB_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="PLB_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#FF5500"/>
+    </g>
+    <g id="PLB_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#FF5500"/>
+    </g>
+    <g id="PLB_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#PLB_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="PLB_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#FF5500"/>
+    </g>
+    <g id="PLB_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#PLB_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#FF5500"/>
+    </g>
+    <g id="PLB_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#PLB_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="PLB_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#FF5500"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#FF5500"/>
+    </g>
+    <g id="PLBV46_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_BusArrowWest">
+      <use x="0" y="0" xlink:href="#PLBV46_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="PLBV46_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#PLBV46_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="PLBV46_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#PLBV46_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#PLBV46_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="PLBV46_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#BB9955"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_P2P_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_P2P_BusArrowWest">
+      <use x="0" y="0" xlink:href="#PLBV46_P2P_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="PLBV46_P2P_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_P2P_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_P2P_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#PLBV46_P2P_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="PLBV46_P2P_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_P2P_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#PLBV46_P2P_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="PLBV46_P2P_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#PLBV46_P2P_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="PLBV46_P2P_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#BB9955"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="TARGET_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="TARGET_BusArrowWest">
+      <use x="0" y="0" xlink:href="#TARGET_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="TARGET_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="TARGET_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="TARGET_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#TARGET_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="TARGET_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="TARGET_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#TARGET_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="TARGET_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#TARGET_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="TARGET_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#009999"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="INITIATOR_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="INITIATOR_BusArrowWest">
+      <use x="0" y="0" xlink:href="#INITIATOR_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="INITIATOR_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="INITIATOR_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="INITIATOR_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#INITIATOR_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="INITIATOR_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="INITIATOR_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#INITIATOR_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="INITIATOR_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#INITIATOR_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="INITIATOR_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#009999"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="USER_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="USER_BusArrowWest">
+      <use x="0" y="0" xlink:href="#USER_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="USER_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="USER_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="USER_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#USER_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="USER_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="USER_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#USER_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="USER_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#USER_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="USER_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#009999"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#009999"/>
+    </g>
+    <g id="KEY_BusArrowEast">
+      <path class="bus" d="M   0,0      L     8, 6      L   0,12,       Z" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="KEY_BusArrowWest">
+      <use x="0" y="0" xlink:href="#KEY_BusArrowEast" transform="scale(-1,1) translate(-8,0)"/>
+    </g>
+    <g id="KEY_BusArrowHInitiator">
+      <rect x="0" y="2" width="8" height="8" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="KEY_BusArrowSouth">
+      <path class="bus" d="M   0,0      L   12,0      L   6, 8      Z" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="KEY_BusArrowNorth">
+      <use x="0" y="0" xlink:href="#KEY_BusArrowSouth" transform="scale(1,-1) translate(0,-12)"/>
+    </g>
+    <g id="KEY_BusArrowInitiator">
+      <rect x="2" y="0" width="4" height="12" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="KEY_SplitBus_EAST">
+      <use x="0" y="0" xlink:href="#KEY_BusArrowWest"/>
+      <rect x="8" y="2" width="24" height="8" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="KEY_SplitBus_WEST">
+      <use x="0" y="0" xlink:href="#KEY_SplitBus_EAST" transform="scale(-1,1) translate(-46,0)"/>
+    </g>
+    <g id="KEY_SplitBus_OneWay">
+      <rect x="0" y="2" width="16" height="8" style="stroke:none; fill:#444444"/>
+      <rect x="16" y="0" width="12" height="12" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="PLB_SharedBus">
+      <use x="0" y="0" xlink:href="#PLB_BusArrowWest"/>
+      <use x="1096" y="0" xlink:href="#PLB_BusArrowEast"/>
+      <rect x="8" y="2" width="1088" height="8" style="stroke:none; fill:#FF5500"/>
+    </g>
+    <g id="PLBV46_SharedBus">
+      <use x="0" y="0" xlink:href="#PLBV46_BusArrowWest"/>
+      <use x="1096" y="0" xlink:href="#PLBV46_BusArrowEast"/>
+      <rect x="8" y="2" width="1088" height="8" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="OPB_SharedBus">
+      <use x="0" y="0" xlink:href="#OPB_BusArrowWest"/>
+      <use x="1096" y="0" xlink:href="#OPB_BusArrowEast"/>
+      <rect x="8" y="2" width="1088" height="8" style="stroke:none; fill:#339900"/>
+    </g>
+    <g id="group_sharedBusses">
+      <use x="0" y="0" xlink:href="#PLBV46_SharedBus"/>
+      <text x="8" y="22" fill="#000000" stroke="none" font-size="12pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Courier Arial Helvetica san-serif">plb_v46_0</text>
+    </g>
+    <g id="KEY_SharedBus">
+      <use x="0" y="0" xlink:href="#KEY_BusArrowWest"/>
+      <use x="30" y="0" xlink:href="#KEY_BusArrowEast"/>
+      <rect x="8" y="2" width="22" height="8" style="stroke:none; fill:#444444"/>
+    </g>
+    <g id="sbsbktmodule_Ethernet_MAC">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_ethernetlite</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">Ethernet_MAC</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+    </g>
+    <g id="sbsbktmodule_LEDs_8Bit">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_gpio</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">LEDs_8Bit</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+    </g>
+    <g id="sbsbktmodule_LEDs_Positions">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_gpio</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">LEDs_Positions</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+    </g>
+    <g id="sbsbktmodule_Push_Buttons_5Bit">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_gpio</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">Push_Buttons_5Bit</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+    </g>
+    <g id="sbsbktmodule_DIP_Switches_8Bit">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_gpio</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">DIP_Switches_8Bit</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+    </g>
+    <g id="sbsbktmodule_IIC_EEPROM">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_iic</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">IIC_EEPROM</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+    </g>
+    <g id="sbsbktmodule_xps_intc_0">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_intc</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">xps_intc_0</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+      <rect x="81" y="27" rx="3" ry="3" width="9" height="18" style="fill:#FF9900; stroke:none; stroke-width:1"/>
+      <line x1="81" y1="32" x2="90" y2="32" style="stroke:#000000;stroke-width:2"/>
+      <text x="83" y="44" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">0</text>
+    </g>
+    <g id="sbsbktmodule_SRAM">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_mch_emc</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">SRAM</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+    </g>
+    <g id="sbsbktmodule_SysACE_CompactFlash">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_sysace</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">SysACE_CompactFlash</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+    </g>
+    <g id="sbsbktmodule_RS232_Uart_1">
+      <rect x="0" y="24" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="56" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="64" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_uartlite</text>
+      <text x="45" y="74" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">RS232_Uart_1</text>
+      <use x="29" y="28" xlink:href="#PLBV46_BifLabel"/>
+      <use x="33" y="0" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <text x="45" y="39" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+      <rect x="72" y="24" rx="3" ry="3" width="18" height="9" style="fill:#FF9900; stroke:none; stroke-width:1"/>
+      <line x1="81" y1="24" x2="81" y2="33" style="stroke:#000000;stroke-width:1"/>
+      <text x="74" y="32" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">1</text>
+      <text x="83" y="32" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">0</text>
+    </g>
+    <g id="sbsbucket_plb_v46_0">
+      <rect x="0" y="0" rx="4" ry="4" width="334" height="472" style="stroke-width:2; stroke:#BB9955; fill:#FFFFDD"/>
+      <use x="16" y="16" xlink:href="#sbsbktmodule_Ethernet_MAC"/>
+      <rect x="0" y="24" width="61" height="8" style="fill:#BB9955"/>
+      <use x="122" y="16" xlink:href="#sbsbktmodule_LEDs_8Bit"/>
+      <rect x="61" y="24" width="106" height="8" style="fill:#BB9955"/>
+      <use x="228" y="16" xlink:href="#sbsbktmodule_LEDs_Positions"/>
+      <rect x="167" y="24" width="106" height="8" style="fill:#BB9955"/>
+      <use x="16" y="130" xlink:href="#sbsbktmodule_Push_Buttons_5Bit"/>
+      <rect x="0" y="138" width="61" height="8" style="fill:#BB9955"/>
+      <use x="122" y="130" xlink:href="#sbsbktmodule_DIP_Switches_8Bit"/>
+      <rect x="61" y="138" width="106" height="8" style="fill:#BB9955"/>
+      <use x="228" y="130" xlink:href="#sbsbktmodule_IIC_EEPROM"/>
+      <rect x="167" y="138" width="106" height="8" style="fill:#BB9955"/>
+      <use x="16" y="244" xlink:href="#sbsbktmodule_xps_intc_0"/>
+      <rect x="0" y="252" width="61" height="8" style="fill:#BB9955"/>
+      <use x="122" y="244" xlink:href="#sbsbktmodule_SRAM"/>
+      <rect x="61" y="252" width="106" height="8" style="fill:#BB9955"/>
+      <use x="228" y="244" xlink:href="#sbsbktmodule_SysACE_CompactFlash"/>
+      <rect x="167" y="252" width="106" height="8" style="fill:#BB9955"/>
+      <use x="16" y="358" xlink:href="#sbsbktmodule_RS232_Uart_1"/>
+      <rect x="0" y="366" width="61" height="8" style="fill:#BB9955"/>
+      <rect x="0" y="24" width="8" height="342" style="fill:#BB9955"/>
+    </g>
+    <g id="ipbktmodule_clock_generator_0">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#000000; stroke-width:2"/>
+      <rect x="11" y="18" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="26" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">clock_generator</text>
+      <text x="45" y="38" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">clock_generator_0</text>
+    </g>
+    <g id="ipbucket">
+      <rect x="0" y="0" rx="4" ry="4" width="122" height="106" style="stroke-width:2; stroke:#000000; fill:#CCCCFF"/>
+      <use x="16" y="16" xlink:href="#ipbktmodule_clock_generator_0"/>
+    </g>
+    <g id="symbol_STACK_0_SHAPE_5">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="4" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="12" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">plbv46_pcie</text>
+      <text x="45" y="20" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">PCIe_Bridge</text>
+      <line x1="79" y1="64" x2="91" y2="64" style="stroke:#BB9955;stroke-width:1"/>
+      <use x="47" y="54" xlink:href="#PLBV46_BifLabel"/>
+      <text x="63" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+      <line x1="0" y1="64" x2="11" y2="64" style="stroke:#BB9955;stroke-width:1"/>
+      <use x="11" y="54" xlink:href="#PLBV46_P2P_BifLabel"/>
+      <text x="27" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">MPLB</text>
+    </g>
+    <g id="symbol_STACK_0_SHAPE_1">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="4" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="12" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">ppc440mc_ddr2</text>
+      <text x="45" y="20" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">DDR2_SDRAM</text>
+      <line x1="0" y1="64" x2="11" y2="64" style="stroke:#990066;stroke-width:1"/>
+      <use x="11" y="54" xlink:href="#XIL_BifLabel"/>
+      <text x="27" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">PPC4</text>
+    </g>
+    <g id="symbol_STACK_0_SHAPE_3">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="4" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="12" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">apu_fpu_virtex5</text>
+      <text x="45" y="20" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">ppc440_0_apu_fpu_virtex5</text>
+      <line x1="79" y1="64" x2="91" y2="64" style="stroke:#8C00FF;stroke-width:1"/>
+      <use x="47" y="54" xlink:href="#FCB_BifLabel"/>
+      <text x="63" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SFCB2</text>
+    </g>
+    <g id="symbol_STACK_0_SHAPE_2">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="4" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="12" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">jtagppc_cntlr</text>
+      <text x="45" y="20" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">jtagppc_cntlr_inst</text>
+      <line x1="79" y1="64" x2="91" y2="64" style="stroke:#990066;stroke-width:1"/>
+      <use x="47" y="54" xlink:href="#XIL_BifLabel"/>
+      <text x="63" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">JTAG</text>
+    </g>
+    <g id="symbol_STACK_0_SHAPE_0">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="4" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="12" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">proc_sys_reset</text>
+      <text x="45" y="20" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">proc_sys_reset_0</text>
+      <line x1="0" y1="64" x2="11" y2="64" style="stroke:#990066;stroke-width:1"/>
+      <use x="11" y="54" xlink:href="#XIL_BifLabel"/>
+      <text x="27" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">RESE</text>
+    </g>
+    <g id="symbol_STACK_0_SHAPE_4">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="142" style="fill:#90001C; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="4" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="12" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">ppc440_virtex5</text>
+      <text x="45" y="20" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">ppc440_0</text>
+      <line x1="79" y1="120" x2="91" y2="120" style="stroke:#BB9955;stroke-width:1"/>
+      <use x="47" y="110" xlink:href="#PLBV46_BifLabel"/>
+      <text x="63" y="121" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">MPLB</text>
+      <line x1="0" y1="92" x2="11" y2="92" style="stroke:#BB9955;stroke-width:1"/>
+      <use x="11" y="82" xlink:href="#PLBV46_P2P_BifLabel"/>
+      <text x="27" y="93" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB0</text>
+      <line x1="0" y1="64" x2="11" y2="64" style="stroke:#990066;stroke-width:1"/>
+      <use x="11" y="54" xlink:href="#XIL_BifLabel"/>
+      <text x="27" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">PPC4</text>
+      <line x1="79" y1="64" x2="91" y2="64" style="stroke:#8C00FF;stroke-width:1"/>
+      <use x="47" y="54" xlink:href="#FCB_BifLabel"/>
+      <text x="63" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">MFCB</text>
+      <line x1="79" y1="92" x2="91" y2="92" style="stroke:#990066;stroke-width:1"/>
+      <use x="47" y="82" xlink:href="#XIL_BifLabel"/>
+      <text x="63" y="93" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">JTAG</text>
+      <line x1="0" y1="120" x2="11" y2="120" style="stroke:#990066;stroke-width:1"/>
+      <use x="11" y="110" xlink:href="#XIL_BifLabel"/>
+      <text x="27" y="121" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">RESE</text>
+      <rect x="81" y="3" rx="3" ry="3" width="9" height="18" style="fill:#FF9900; stroke:none; stroke-width:1"/>
+      <line x1="81" y1="6" x2="90" y2="6" style="stroke:#000000;stroke-width:1"/>
+      <line x1="81" y1="10" x2="90" y2="10" style="stroke:#000000;stroke-width:1"/>
+      <text x="83" y="20" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">0</text>
+    </g>
+    <g id="symbol_STACK_0">
+      <rect x="0" y="0" rx="6" ry="6" width="334" height="1100" style="fill:#CCCCCC; stroke:none;"/>
+      <use x="122" y="644" xlink:href="#symbol_STACK_0_SHAPE_5"/>
+      <use x="122" y="90" xlink:href="#symbol_STACK_0_SHAPE_1"/>
+      <use x="122" y="270" xlink:href="#symbol_STACK_0_SHAPE_3"/>
+      <use x="122" y="180" xlink:href="#symbol_STACK_0_SHAPE_2"/>
+      <use x="122" y="0" xlink:href="#symbol_STACK_0_SHAPE_0"/>
+      <use x="0" y="734" xlink:href="#sbsbucket_plb_v46_0"/>
+      <text x="0" y="730" fill="#000000" stroke="none" font-size="9pt" font-style="normal" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">SLAVES OF plb_v46_0</text>
+      <use x="122" y="360" xlink:href="#symbol_STACK_0_SHAPE_4"/>
+      <text x="122" y="356" fill="#000000" stroke="none" font-size="9pt" font-style="normal" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">PROCESSOR</text>
+    </g>
+    <g id="symbol_xps_bram_if_cntlr_1_bram">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="32" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="40" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">bram_block</text>
+      <text x="45" y="48" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">xps_bram_if_cntlr_1_bram</text>
+      <use x="47" y="4" xlink:href="#XIL_BifLabel"/>
+      <text x="63" y="15" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">PORTA</text>
+    </g>
+    <g id="symbol_xps_bram_if_cntlr_1">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="74" style="fill:#CCCCCC; stroke:#FFFFFF; stroke-width:2"/>
+      <rect x="11" y="4" rx="3" ry="3" width="68" height="38" style="fill:#FFFFFF; stroke:none;"/>
+      <text x="45" y="12" fill="#AA0017" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Arial Helvetica san-serif">xps_bram_if_cntlr</text>
+      <text x="45" y="20" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Courier Arial Helvetica san-serif">xps_bram_if_cntlr_1</text>
+      <line x1="0" y1="64" x2="11" y2="64" style="stroke:#BB9955;stroke-width:1"/>
+      <use x="11" y="54" xlink:href="#PLBV46_BifLabel"/>
+      <text x="27" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">SPLB</text>
+      <use x="47" y="54" xlink:href="#XIL_BifLabel"/>
+      <text x="63" y="65" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="middle" font-family="Verdana Courier Arial Helvetica san-serif">PORTA</text>
+    </g>
+    <g id="symbol_STACK_1_SHAPE_0">
+      <rect x="0" y="0" rx="6" ry="6" width="94" height="152" style="fill:#BB9955; stroke:#BB9955; stroke-width:2"/>
+      <use x="2" y="76" xlink:href="#symbol_xps_bram_if_cntlr_1_bram"/>
+      <use x="2" y="0" xlink:href="#symbol_xps_bram_if_cntlr_1"/>
+    </g>
+    <g id="symbol_STACK_1">
+      <rect x="0" y="0" rx="6" ry="6" width="90" height="164" style="fill:#CCCCCC; stroke:none;"/>
+      <use x="0" y="138" xlink:href="#symbol_STACK_1_SHAPE_0"/>
+    </g>
+    <g id="symbol_SPACE_WEST_NONE_EAST_0">
+      <rect x="40" y="446" width="8" height="264" style="stroke:#FFFFFF;stroke-width:1.5;fill:#BB9955"/>
+      <text x="52" y="474" fill="#000000" stroke="none" font-size="8pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Courier Arial Helvetica san-serif">ppc440_0_SPLB0</text>
+      <use x="298" y="438" xlink:href="#PLBV46_P2P_busconn_SLAVE"/>
+      <use x="290" y="444" xlink:href="#PLBV46_P2P_BusArrowEast"/>
+      <rect x="44" y="446" width="246" height="8" style="stroke:none; fill:#BB9955"/>
+      <use x="298" y="694" xlink:href="#PLBV46_P2P_busconn_MASTER"/>
+      <use x="290" y="700" xlink:href="#PLBV46_P2P_BusArrowEast"/>
+      <rect x="44" y="702" width="246" height="8" style="stroke:none; fill:#BB9955"/>
+      <rect x="40" y="148" width="8" height="278" style="stroke:none;fill:#990066"/>
+      <text x="52" y="176" fill="#000000" stroke="none" font-size="8pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Courier Arial Helvetica san-serif">ppc440_0_PPC440MC</text>
+      <use x="298" y="410" xlink:href="#XIL_busconn_INITIATOR"/>
+      <use x="290" y="416" xlink:href="#XIL_BusArrowEast"/>
+      <rect x="44" y="418" width="246" height="8" style="stroke:none; fill:#990066"/>
+      <use x="298" y="140" xlink:href="#XIL_busconn_TARGET"/>
+      <use x="290" y="146" xlink:href="#XIL_BusArrowEast"/>
+      <rect x="44" y="148" width="246" height="8" style="stroke:none; fill:#990066"/>
+      <rect x="0" y="58" width="8" height="424" style="stroke:none;fill:#990066"/>
+      <text x="12" y="86" fill="#000000" stroke="none" font-size="8pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Courier Arial Helvetica san-serif">ppc_reset_bus</text>
+      <use x="298" y="466" xlink:href="#XIL_busconn_TARGET"/>
+      <use x="290" y="472" xlink:href="#XIL_BusArrowEast"/>
+      <rect x="4" y="474" width="286" height="8" style="stroke:none; fill:#990066"/>
+      <use x="298" y="50" xlink:href="#XIL_busconn_INITIATOR"/>
+      <use x="290" y="56" xlink:href="#XIL_BusArrowEast"/>
+      <rect x="4" y="58" width="286" height="8" style="stroke:none; fill:#990066"/>
+      <rect x="-4" y="548" width="8" height="217" style="stroke:none; fill:#BB9955"/>
+      <rect x="-4" y="758" width="267" height="8" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="symbol_SPACE_WEST_0_EAST_1">
+      <use x="45" y="466" xlink:href="#PLBV46_busconn_MASTER"/>
+      <rect x="223" y="480" width="8" height="64" style="stroke:none; fill:#BB9955"/>
+      <rect x="64" y="474" width="167" height="8" style="stroke:none; fill:#BB9955"/>
+      <rect x="263" y="328" width="8" height="98" style="stroke:none;fill:#8C00FF"/>
+      <text x="275" y="356" fill="#000000" stroke="none" font-size="8pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Courier Arial Helvetica san-serif">ppc440_0_fcb_v20</text>
+      <use x="45" y="410" xlink:href="#FCB_busconn_MASTER"/>
+      <use x="69" y="416" xlink:href="#FCB_BusArrowWest"/>
+      <rect x="76" y="418" width="192" height="8" style="stroke:none; fill:#8C00FF"/>
+      <use x="45" y="320" xlink:href="#FCB_busconn_SLAVE"/>
+      <use x="69" y="326" xlink:href="#FCB_BusArrowWest"/>
+      <rect x="76" y="328" width="192" height="8" style="stroke:none; fill:#8C00FF"/>
+      <rect x="303" y="238" width="8" height="216" style="stroke:none;fill:#990066"/>
+      <text x="315" y="266" fill="#000000" stroke="none" font-size="8pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Courier Arial Helvetica san-serif">ppc440_0_jtagppc_bus</text>
+      <use x="45" y="438" xlink:href="#XIL_busconn_TARGET"/>
+      <use x="69" y="444" xlink:href="#XIL_BusArrowWest"/>
+      <rect x="76" y="446" width="232" height="8" style="stroke:none; fill:#990066"/>
+      <use x="45" y="230" xlink:href="#XIL_busconn_INITIATOR"/>
+      <use x="69" y="236" xlink:href="#XIL_BusArrowWest"/>
+      <rect x="76" y="238" width="232" height="8" style="stroke:none; fill:#990066"/>
+      <use x="45" y="694" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <rect x="263" y="548" width="8" height="156" style="stroke:none; fill:#BB9955"/>
+      <rect x="64" y="702" width="207" height="8" style="stroke:none; fill:#BB9955"/>
+      <use x="383" y="662" xlink:href="#PLBV46_busconn_SLAVE"/>
+      <rect x="239" y="548" width="8" height="124" style="stroke:none; fill:#BB9955"/>
+      <rect x="239" y="670" width="150" height="8" style="stroke:none; fill:#BB9955"/>
+    </g>
+    <g id="symbol_SPACE_WEST_1_EAST_NONE"/>
+    <g id="KEY_IntrCntrl">
+      <rect x="0" y="0" rx="3" ry="3" width="9" height="18" style="fill:#888888; stroke:none; stroke-width:1"/>
+      <line x1="0" y1="5" x2="9" y2="5" style="stroke:#000000;stroke-width:2"/>
+      <text x="1.5" y="16" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">x</text>
+    </g>
+    <g id="KEY_IntrdProc">
+      <rect x="0" y="0" rx="3" ry="3" width="9" height="18" style="fill:#888888; stroke:none; stroke-width:1"/>
+      <line x1="0" y1="3" x2="9" y2="3" style="stroke:#000000;stroke-width:1"/>
+      <line x1="0" y1="7" x2="9" y2="7" style="stroke:#000000;stroke-width:1"/>
+      <text x="1.5" y="16" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">x</text>
+    </g>
+    <g id="KEY_IntrSrc">
+      <rect x="0" y="0" rx="3" ry="3" width="18" height="9" style="fill:#888888; stroke:none; stroke-width:1"/>
+      <line x1="9" y1="0" x2="9" y2="9" style="stroke:#000000;stroke-width:1"/>
+      <text x="2" y="7" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">y</text>
+      <text x="11" y="7" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">x</text>
+    </g>
+    <g id="BlkDiagram_Key">
+      <rect x="0" y="0" width="468" height="250" style="fill:#CCCCCC; stroke:none;"/>
+      <rect x="0" y="0" width="468" height="16" style="fill:#CCCCCC; stroke:none;"/>
+      <text x="234" y="14" fill="#AA0017" stroke="none" font-size="14pt" font-weight="900" text-anchor="middle" font-family="Arial Helvetica san-serif">KEY</text>
+      <rect x="0" y="16" width="468" height="16" style="fill:#EEEEEE; stroke:none;"/>
+      <text x="234" y="30" fill="#000000" stroke="none" font-size="10pt" font-weight="900" text-anchor="middle" font-family="Arial Helvetica san-serif">SYMBOLS</text>
+      <use x="32" y="47" xlink:href="#KEY_BifLabel" transform="scale(0.75)"/>
+      <text x="12" y="60" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Arial Helvetica san-serif">bus interface</text>
+      <use x="20" y="68" xlink:href="#KEY_SharedBus"/>
+      <text x="12" y="85" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Arial Helvetica san-serif">shared bus</text>
+      <text class="keylblul" x="110" y="47">Bus connections</text>
+      <use x="110" y="58" xlink:href="#KEY_busconn_MASTER"/>
+      <text x="140" y="72" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Arial Helvetica san-serif">master or initiator</text>
+      <use x="110" y="86" xlink:href="#KEY_busconn_SLAVE"/>
+      <text x="140" y="100" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Arial Helvetica san-serif">slave or target</text>
+      <use x="110" y="114" xlink:href="#KEY_busconn_MASTER_SLAVE"/>
+      <text x="140" y="128" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Arial Helvetica san-serif">master slave</text>
+      <use x="110" y="142" xlink:href="#KEY_busconn_MONITOR"/>
+      <text x="140" y="156" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Arial Helvetica san-serif">monitor</text>
+      <text class="keylblul" x="258" y="47">External Ports</text>
+      <use x="258" y="58" xlink:href="#KEY_INPort"/>
+      <text x="288" y="72" fill="#000000" stroke="none" font-size="10pt" font-style="italic" font-weight="900" text-anchor="start" font-family="Verdana Arial Helvetica san-serif">monitor</text>
+      <use x="258" y="78" xlink:href="#KEY_OUTPort"/>
+      <text class="keylabel" x="288" y="92">output</text>
+      <use x="258" y="98" xlink:href="#KEY_INOUTPort"/>
+      <text class="keylabel" x="288" y="112">inout</text>
+      <text class="keylblul" x="380" y="47">Interrupts</text>
+      <use x="380" y="58" xlink:href="#KEY_IntrCntrl"/>
+      <text class="keylabel" x="396" y="64">interrupt</text>
+      <text class="keylabel" x="396" y="74">controller</text>
+      <use x="380" y="88" xlink:href="#KEY_IntrdProc"/>
+      <text class="keylabel" x="396" y="94">interrupted</text>
+      <text class="keylabel" x="396" y="104">processor</text>
+      <use x="380" y="118" xlink:href="#KEY_IntrSrc"/>
+      <text class="keylabel" x="400" y="124">interrupt</text>
+      <text class="keylabel" x="400" y="134">source</text>
+      <text class="keylabel" x="360" y="146">x = controller ID</text>
+      <text class="keylabel" x="360" y="156">y = priority</text>
+      <rect x="0" y="160" width="468" height="16" style="fill:#EEEEEE; stroke:none;"/>
+      <text class="keyheader" x="234 " y="172">COLORS</text>
+      <text class="keylblul" x="110" y="190">Bus Standards</text>
+      <rect x="12" y="200" width="24" height="24" style="fill:#6699FF; stroke:none;"/>
+      <text class="keylabel" x="40" y="220">DCR</text>
+      <rect x="12" y="228" width="24" height="24" style="fill:#8C00FF; stroke:none;"/>
+      <text class="keylabel" x="40" y="240">FCB</text>
+      <rect x="84" y="200" width="24" height="24" style="fill:#CC00CC; stroke:none;"/>
+      <text class="keylabel" x="112" y="220">FSL</text>
+      <rect x="84" y="228" width="24" height="24" style="fill:#7777FF; stroke:none;"/>
+      <text class="keylabel" x="112" y="240">LMB</text>
+      <rect x="156" y="200" width="24" height="24" style="fill:#339900; stroke:none;"/>
+      <text class="keylabel" x="184" y="220">OPB</text>
+      <rect x="156" y="228" width="24" height="24" style="fill:#FF5500; stroke:none;"/>
+      <text class="keylabel" x="184" y="240">PLB</text>
+      <rect x="228" y="200" width="24" height="24" style="fill:#0000DD; stroke:none;"/>
+      <text class="keylabel" x="256" y="220">SOCM</text>
+      <rect x="228" y="228" width="24" height="24" style="fill:#990066; stroke:none;"/>
+      <text class="keylabel" x="256" y="240">Xilinx P2P</text>
+      <rect x="300" y="200" width="24" height="24" style="fill:#009999; stroke:none;"/>
+      <text class="keylabel" x="328" y="220">USER P2P</text>
+    </g>
+    <g id="BlkDiagram_Specs">
+      <rect x="0" y="0" width="300" height="100" style="fill:#CCCCCC; stroke:none;"/>
+      <rect x="0" y="0" width="300" height="16" style="fill:#CCCCCC; stroke:none;"/>
+      <text class="keytitle" x="150 " y="14">SPECS</text>
+      <rect x="0" y="20" width="300" height="16" style="fill:#EEEEEE; stroke:none;"/>
+      <text class="specsheader" x="4" y="32">EDK VERSION</text>
+      <text class="specsvaluemid" x="241" y="32">11.1</text>
+      <rect x="0" y="40" width="300" height="16" style="fill:#EEEEEE; stroke:none;"/>
+      <text class="specsheader" x="4" y="52">ARCH</text>
+      <text class="specsvaluemid" x="241" y="52">virtex5</text>
+      <rect x="0" y="60" width="300" height="16" style="fill:#EEEEEE; stroke:none;"/>
+      <text class="specsheader" x="4" y="72">PART</text>
+      <text class="specsvaluemid" x="241" y="72">xc5vfx70tff1136-1</text>
+      <rect x="0" y="80" width="300" height="16" style="fill:#EEEEEE; stroke:none;"/>
+      <text class="specsheader" x="4" y="92">GENERATED</text>
+      <text class="specsvalue" x="145" y="92">Tue Jun 23 13:32:12 2009</text>
+    </g>
+  </defs>
+  <rect x="0" y="0" width="1322" height="1923" style="fill:#FFFFFF; stroke:#000000;stroke-width:4"/>
+  <rect x="48" y="40" width="1226" height="1582" style="fill:#000088"/>
+  <rect x="64" y="56" width="1194" height="1550" rx="8" ry="8" style="fill:#CCCCCC"/>
+  <use x="32" y="611" id="fpga_0_RS232_Uart_1_RX_pin" xlink:href="#G_IOPort" transform="rotate(0,40,619)"/>
+  <text class="iopnumb" x="18" y="625"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="639" id="fpga_0_RS232_Uart_1_TX_pin" xlink:href="#G_IOPort" transform="rotate(180,40,647)"/>
+  <text class="iopnumb" x="18" y="653"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="667" id="fpga_0_LEDs_8Bit_GPIO_IO_pin" xlink:href="#G_BIPort" transform="rotate(0,40,675)"/>
+  <text class="iopnumb" x="18" y="681"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="695" id="fpga_0_LEDs_Positions_GPIO_IO_pin" xlink:href="#G_BIPort" transform="rotate(0,40,703)"/>
+  <text class="iopnumb" x="18" y="709"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="723" id="fpga_0_Push_Buttons_5Bit_GPIO_IO_pin" xlink:href="#G_BIPort" transform="rotate(0,40,731)"/>
+  <text class="iopnumb" x="18" y="737"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="751" id="fpga_0_DIP_Switches_8Bit_GPIO_IO_pin" xlink:href="#G_BIPort" transform="rotate(0,40,759)"/>
+  <text class="iopnumb" x="18" y="765"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="779" id="fpga_0_IIC_EEPROM_Sda_pin" xlink:href="#G_BIPort" transform="rotate(0,40,787)"/>
+  <text class="iopnumb" x="18" y="793"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="807" id="fpga_0_IIC_EEPROM_Scl_pin" xlink:href="#G_BIPort" transform="rotate(0,40,815)"/>
+  <text class="iopnumb" x="18" y="821"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="835" id="fpga_0_SRAM_Mem_A_pin" xlink:href="#G_IOPort" transform="rotate(180,40,843)"/>
+  <text class="iopnumb" x="18" y="849"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="863" id="fpga_0_SRAM_Mem_CEN_pin" xlink:href="#G_IOPort" transform="rotate(180,40,871)"/>
+  <text class="iopnumb" x="18" y="877"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="891" id="fpga_0_SRAM_Mem_OEN_pin" xlink:href="#G_IOPort" transform="rotate(180,40,899)"/>
+  <text class="iopnumb" x="18" y="905"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="919" id="fpga_0_SRAM_Mem_WEN_pin" xlink:href="#G_IOPort" transform="rotate(180,40,927)"/>
+  <text class="iopnumb" x="18" y="933"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="947" id="fpga_0_SRAM_Mem_BEN_pin" xlink:href="#G_IOPort" transform="rotate(180,40,955)"/>
+  <text class="iopnumb" x="18" y="961"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="975" id="fpga_0_SRAM_Mem_ADV_LDN_pin" xlink:href="#G_IOPort" transform="rotate(180,40,983)"/>
+  <text class="iopnumb" x="18" y="989"><tspan class="iopgrp"></tspan></text>
+  <use x="32" y="1003" id="fpga_0_SRAM_Mem_DQ_pin" xlink:href="#G_BIPort" transform="rotate(0,40,1011)"/>
+  <text class="iopnumb" x="18" y="1017"><tspan class="iopgrp"></tspan></text>
+  <rect x="439" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="439" y="1622" id="fpga_0_SRAM_ZBT_CLK_OUT_pin" xlink:href="#G_IOPort" transform="rotate(90,447,1630)"/>
+  <text class="iopnumb" x="447" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="467" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="467" y="1622" id="fpga_0_SRAM_ZBT_CLK_FB_pin" xlink:href="#G_IOPort" transform="rotate(-90,475,1630)"/>
+  <text class="iopnumb" x="475" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="495" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="495" y="1622" id="fpga_0_PCIe_Bridge_RXN_pin" xlink:href="#G_IOPort" transform="rotate(-90,503,1630)"/>
+  <text class="iopnumb" x="503" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="523" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="523" y="1622" id="fpga_0_PCIe_Bridge_RXP_pin" xlink:href="#G_IOPort" transform="rotate(-90,531,1630)"/>
+  <text class="iopnumb" x="531" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="551" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="551" y="1622" id="fpga_0_PCIe_Bridge_TXN_pin" xlink:href="#G_IOPort" transform="rotate(90,559,1630)"/>
+  <text class="iopnumb" x="559" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="579" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="579" y="1622" id="fpga_0_PCIe_Bridge_TXP_pin" xlink:href="#G_IOPort" transform="rotate(90,587,1630)"/>
+  <text class="iopnumb" x="587" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="607" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="607" y="1622" id="fpga_0_Ethernet_MAC_PHY_tx_clk_pin" xlink:href="#G_IOPort" transform="rotate(-90,615,1630)"/>
+  <text class="iopnumb" x="615" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="635" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="635" y="1622" id="fpga_0_Ethernet_MAC_PHY_rx_clk_pin" xlink:href="#G_IOPort" transform="rotate(-90,643,1630)"/>
+  <text class="iopnumb" x="643" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="663" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="663" y="1622" id="fpga_0_Ethernet_MAC_PHY_crs_pin" xlink:href="#G_IOPort" transform="rotate(-90,671,1630)"/>
+  <text class="iopnumb" x="671" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="691" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="691" y="1622" id="fpga_0_Ethernet_MAC_PHY_dv_pin" xlink:href="#G_IOPort" transform="rotate(-90,699,1630)"/>
+  <text class="iopnumb" x="699" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="719" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="719" y="1622" id="fpga_0_Ethernet_MAC_PHY_rx_data_pin" xlink:href="#G_IOPort" transform="rotate(-90,727,1630)"/>
+  <text class="iopnumb" x="727" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="747" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="747" y="1622" id="fpga_0_Ethernet_MAC_PHY_col_pin" xlink:href="#G_IOPort" transform="rotate(-90,755,1630)"/>
+  <text class="iopnumb" x="755" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="775" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="775" y="1622" id="fpga_0_Ethernet_MAC_PHY_rx_er_pin" xlink:href="#G_IOPort" transform="rotate(-90,783,1630)"/>
+  <text class="iopnumb" x="783" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="803" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="803" y="1622" id="fpga_0_Ethernet_MAC_PHY_rst_n_pin" xlink:href="#G_IOPort" transform="rotate(90,811,1630)"/>
+  <text class="iopnumb" x="811" y="1658"><tspan class="iopgrp"></tspan></text>
+  <rect x="831" y="1622" width="16" height="16" style="stroke:#000088; stroke-width:1"/>
+  <use x="831" y="1622" id="fpga_0_Ethernet_MAC_PHY_tx_en_pin" xlink:href="#G_IOPort" transform="rotate(90,839,1630)"/>
+  <text class="iopnumb" x="839" y="1658"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="611" id="fpga_0_Ethernet_MAC_PHY_tx_data_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,619)"/>
+  <text class="iopnumb" x="1302" y="625"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="639" id="fpga_0_Ethernet_MAC_MDINT_pin" xlink:href="#G_IOPort" transform="rotate(180,1282,647)"/>
+  <text class="iopnumb" x="1302" y="653"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="667" id="fpga_0_DDR2_SDRAM_DDR2_DQ_pin" xlink:href="#G_BIPort" transform="rotate(0,1282,675)"/>
+  <text class="iopnumb" x="1302" y="681"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="695" id="fpga_0_DDR2_SDRAM_DDR2_DQS_pin" xlink:href="#G_BIPort" transform="rotate(0,1282,703)"/>
+  <text class="iopnumb" x="1302" y="709"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="723" id="fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin" xlink:href="#G_BIPort" transform="rotate(0,1282,731)"/>
+  <text class="iopnumb" x="1302" y="737"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="751" id="fpga_0_DDR2_SDRAM_DDR2_A_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,759)"/>
+  <text class="iopnumb" x="1302" y="765"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="779" id="fpga_0_DDR2_SDRAM_DDR2_BA_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,787)"/>
+  <text class="iopnumb" x="1302" y="793"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="807" id="fpga_0_DDR2_SDRAM_DDR2_RAS_N_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,815)"/>
+  <text class="iopnumb" x="1302" y="821"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="835" id="fpga_0_DDR2_SDRAM_DDR2_CAS_N_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,843)"/>
+  <text class="iopnumb" x="1302" y="849"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="863" id="fpga_0_DDR2_SDRAM_DDR2_WE_N_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,871)"/>
+  <text class="iopnumb" x="1302" y="877"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="891" id="fpga_0_DDR2_SDRAM_DDR2_CS_N_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,899)"/>
+  <text class="iopnumb" x="1302" y="905"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="919" id="fpga_0_DDR2_SDRAM_DDR2_ODT_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,927)"/>
+  <text class="iopnumb" x="1302" y="933"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="947" id="fpga_0_DDR2_SDRAM_DDR2_CKE_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,955)"/>
+  <text class="iopnumb" x="1302" y="961"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="975" id="fpga_0_DDR2_SDRAM_DDR2_DM_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,983)"/>
+  <text class="iopnumb" x="1302" y="989"><tspan class="iopgrp"></tspan></text>
+  <use x="1274" y="1003" id="fpga_0_DDR2_SDRAM_DDR2_CK_pin" xlink:href="#G_IOPort" transform="rotate(0,1282,1011)"/>
+  <text class="iopnumb" x="1302" y="1017"><tspan class="iopgrp"></tspan></text>
+  <use x="441" y="24" id="fpga_0_DDR2_SDRAM_DDR2_CK_N_pin" xlink:href="#G_IOPort" transform="rotate(-90,449,32)"/>
+  <text class="iopnumb" x="449" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="469" y="24" id="fpga_0_SysACE_CompactFlash_SysACE_MPA_pin" xlink:href="#G_IOPort" transform="rotate(-90,477,32)"/>
+  <text class="iopnumb" x="477" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="497" y="24" id="fpga_0_SysACE_CompactFlash_SysACE_CLK_pin" xlink:href="#G_IOPort" transform="rotate(90,505,32)"/>
+  <text class="iopnumb" x="505" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="525" y="24" id="fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin" xlink:href="#G_IOPort" transform="rotate(90,533,32)"/>
+  <text class="iopnumb" x="533" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="553" y="24" id="fpga_0_SysACE_CompactFlash_SysACE_CEN_pin" xlink:href="#G_IOPort" transform="rotate(-90,561,32)"/>
+  <text class="iopnumb" x="561" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="581" y="24" id="fpga_0_SysACE_CompactFlash_SysACE_OEN_pin" xlink:href="#G_IOPort" transform="rotate(-90,589,32)"/>
+  <text class="iopnumb" x="589" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="609" y="24" id="fpga_0_SysACE_CompactFlash_SysACE_WEN_pin" xlink:href="#G_IOPort" transform="rotate(-90,617,32)"/>
+  <text class="iopnumb" x="617" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="637" y="24" id="fpga_0_SysACE_CompactFlash_SysACE_MPD_pin" xlink:href="#G_BIPort" transform="rotate(0,645,32)"/>
+  <text class="iopnumb" x="645" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="665" y="24" id="fpga_0_clk_1_sys_clk_pin" xlink:href="#G_IOPort" transform="rotate(90,673,32)"/>
+  <text class="iopnumb" x="673" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="693" y="24" id="fpga_0_rst_1_sys_rst_pin" xlink:href="#G_IOPort" transform="rotate(90,701,32)"/>
+  <text class="iopnumb" x="701" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="721" y="24" id="fpga_0_PCIe_Diff_Clk_IBUF_DS_P_pin" xlink:href="#G_IOPort" transform="rotate(90,729,32)"/>
+  <text class="iopnumb" x="729" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="749" y="24" id="fpga_0_PCIe_Diff_Clk_IBUF_DS_N_pin" xlink:href="#G_IOPort" transform="rotate(90,757,32)"/>
+  <text class="iopnumb" x="757" y="22"><tspan class="iopgrp"></tspan></text>
+  <use x="469" y="101" xlink:href="#symbol_STACK_0"/>
+  <use x="1043" y="575" xlink:href="#symbol_STACK_1"/>
+  <use x="269" y="101" xlink:href="#symbol_SPACE_WEST_NONE_EAST_0"/>
+  <use x="636" y="101" xlink:href="#symbol_SPACE_WEST_0_EAST_1"/>
+  <use x="1088" y="575" xlink:href="#symbol_SPACE_WEST_1_EAST_NONE"/>
+  <use x="109" y="639" xlink:href="#group_sharedBusses"/>
+  <text x="600" y="1393" fill="#000000" stroke="none" font-size="9pt" font-style="normal" font-weight="900" text-anchor="start" font-family="Arial Helvetica san-serif">IP</text>
+  <use x="600" y="1397" xlink:href="#ipbucket"/>
+  <use x="806" y="1665" xlink:href="#BlkDiagram_Key"/>
+  <use x="48" y="1665" xlink:href="#BlkDiagram_Specs"/>
+</svg>
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/data/system.ucf b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/data/system.ucf
new file mode 100644 (file)
index 0000000..fd1b9bd
--- /dev/null
@@ -0,0 +1,495 @@
+Net fpga_0_RS232_Uart_1_RX_pin LOC = AG15  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_RS232_Uart_1_TX_pin LOC = AG20  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_LEDs_8Bit_GPIO_IO_pin<0> LOC = AE24  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_8Bit_GPIO_IO_pin<1> LOC = AD24  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_8Bit_GPIO_IO_pin<2> LOC = AD25  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_8Bit_GPIO_IO_pin<3> LOC = G16  |  IOSTANDARD=LVCMOS25  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_8Bit_GPIO_IO_pin<4> LOC = AD26  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_8Bit_GPIO_IO_pin<5> LOC = G15  |  IOSTANDARD=LVCMOS25  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_8Bit_GPIO_IO_pin<6> LOC = L18  |  IOSTANDARD=LVCMOS25  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_8Bit_GPIO_IO_pin<7> LOC = H18  |  IOSTANDARD=LVCMOS25  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<0> LOC=E8  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<1> LOC=AF23  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<2> LOC=AG12  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<3> LOC=AG23  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_LEDs_Positions_GPIO_IO_pin<4> LOC=AF13  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_Push_Buttons_5Bit_GPIO_IO_pin<0> LOC = AJ6  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_Push_Buttons_5Bit_GPIO_IO_pin<1> LOC = AJ7  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_Push_Buttons_5Bit_GPIO_IO_pin<2> LOC = V8  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_Push_Buttons_5Bit_GPIO_IO_pin<3> LOC = AK7  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_Push_Buttons_5Bit_GPIO_IO_pin<4> LOC = U8  |  IOSTANDARD=LVCMOS33  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_DIP_Switches_8Bit_GPIO_IO_pin<0> LOC=U25  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_DIP_Switches_8Bit_GPIO_IO_pin<1> LOC=AG27  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_DIP_Switches_8Bit_GPIO_IO_pin<2> LOC=AF25  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_DIP_Switches_8Bit_GPIO_IO_pin<3> LOC=AF26  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_DIP_Switches_8Bit_GPIO_IO_pin<4> LOC=AE27  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_DIP_Switches_8Bit_GPIO_IO_pin<5> LOC=AE26  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_DIP_Switches_8Bit_GPIO_IO_pin<6> LOC=AC25  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_DIP_Switches_8Bit_GPIO_IO_pin<7> LOC=AC24  |  IOSTANDARD=LVCMOS18  |  PULLDOWN  |  SLEW=SLOW  |  DRIVE=2;
+Net fpga_0_IIC_EEPROM_Sda_pin LOC=F8  |  SLEW = SLOW  |  DRIVE = 6  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_IIC_EEPROM_Scl_pin LOC=F9  |  SLEW = SLOW  |  DRIVE = 6  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<30> LOC=K12  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<29> LOC=K13  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<28> LOC=H23  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<27> LOC=G23  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<26> LOC=H12  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<25> LOC=J12  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<24> LOC=K22  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<23> LOC=K23  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<22> LOC=K14  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<21> LOC=L14  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<20> LOC=H22  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<19> LOC=G22  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<18> LOC=J15  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<17> LOC=K16  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<16> LOC=K21  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<15> LOC=J22  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<14> LOC=L16  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<13> LOC=L15  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<12> LOC=L20  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<11> LOC=L21  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<10> LOC=AE23  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<9> LOC=AE22  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<8> LOC=AE12  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_A_pin<7> LOC=AE13  |  SLEW = FAST  |  DRIVE = 8  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_CEN_pin LOC=J10  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_OEN_pin LOC=B12  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_WEN_pin LOC=AF20  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_BEN_pin<3> LOC=J11  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_BEN_pin<2> LOC=K11  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_BEN_pin<1> LOC=D10  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_BEN_pin<0> LOC=D11  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_ADV_LDN_pin LOC=H8  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<0> LOC=AG22  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<1> LOC=AH22  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<2> LOC=AH12  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<3> LOC=AG13  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<4> LOC=AH20  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<5> LOC=AH19  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<6> LOC=AH14  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<7> LOC=AH13  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<8> LOC=AF15  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<9> LOC=AE16  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<10> LOC=AE21  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<11> LOC=AD20  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<12> LOC=AF16  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<13> LOC=AE17  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<14> LOC=AE19  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<15> LOC=AD19  |  PULLDOWN  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_Mem_DQ_pin<16> LOC=J9  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<17> LOC=K8  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<18> LOC=K9  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<19> LOC=B13  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<20> LOC=C13  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<21> LOC=G11  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<22> LOC=G12  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<23> LOC=M8  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<24> LOC=L8  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<25> LOC=F11  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<26> LOC=E11  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<27> LOC=M10  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<28> LOC=L9  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<29> LOC=E12  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<30> LOC=E13  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_Mem_DQ_pin<31> LOC=N10  |  PULLDOWN  |  IOSTANDARD=LVDCI_33;
+Net fpga_0_SRAM_ZBT_CLK_OUT_pin LOC=G8  |  SLEW = FAST  |  DRIVE = 12  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_SRAM_ZBT_CLK_FB_pin LOC=AG21  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_PCIe_Bridge_RXN_pin LOC=AF1  |  IOSTANDARD = LVDS_25;
+Net fpga_0_PCIe_Bridge_RXP_pin LOC=AE1  |  IOSTANDARD = LVDS_25;
+Net fpga_0_PCIe_Bridge_TXN_pin LOC=AE2  |  IOSTANDARD = LVDS_25;
+Net fpga_0_PCIe_Bridge_TXP_pin LOC=AD2  |  IOSTANDARD = LVDS_25;
+Net "pcie_bridge/*SPLB_Clk" TNM_NET = "SPLB_Clk";
+Net "pcie_bridge/*Bridge_Clk" TNM_NET = "Bridge_Clk";
+
+## Timing constraints between clock-domain boundaries
+#
+TIMESPEC "TS_PLB_PCIe" = FROM "SPLB_Clk" TO "Bridge_Clk" 8 ns datapathonly;
+TIMESPEC "TS_PCIe_PLB" = FROM "Bridge_Clk" TO "SPLB_Clk" 8 ns datapathonly;
+
+Net fpga_0_Ethernet_MAC_PHY_tx_clk_pin LOC=K17  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_rx_clk_pin LOC=H17  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_crs_pin LOC=E34  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_dv_pin LOC=E32  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_rx_data_pin<0> LOC=A33  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_rx_data_pin<1> LOC=B33  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_rx_data_pin<2> LOC=C33  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_rx_data_pin<3> LOC=C32  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_col_pin LOC=B32  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_rx_er_pin LOC=E33  |  IOSTANDARD = LVCMOS25;
+Net fpga_0_Ethernet_MAC_PHY_rst_n_pin LOC=J14  |  IOSTANDARD = LVCMOS25  |  TIG;
+Net fpga_0_Ethernet_MAC_PHY_tx_en_pin LOC=AJ10  |  IOSTANDARD = LVDCI_33;
+Net fpga_0_Ethernet_MAC_PHY_tx_data_pin<3> LOC=AH10  |  IOSTANDARD = LVDCI_33;
+Net fpga_0_Ethernet_MAC_PHY_tx_data_pin<2> LOC=AH9  |  IOSTANDARD = LVDCI_33;
+Net fpga_0_Ethernet_MAC_PHY_tx_data_pin<1> LOC=AE11  |  IOSTANDARD = LVDCI_33;
+Net fpga_0_Ethernet_MAC_PHY_tx_data_pin<0> LOC=AF11  |  IOSTANDARD = LVDCI_33;
+Net fpga_0_Ethernet_MAC_MDINT_pin LOC=H20  |  IOSTANDARD = LVCMOS25  |  TIG;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<0> LOC=AF30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<1> LOC=AK31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<2> LOC=AF31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<3> LOC=AD30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<4> LOC=AJ30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<5> LOC=AF29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<6> LOC=AD29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<7> LOC=AE29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<8> LOC=AH27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<9> LOC=AF28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<10> LOC=AH28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<11> LOC=AA28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<12> LOC=AG25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<13> LOC=AJ26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<14> LOC=AG28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<15> LOC=AB28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<16> LOC=AC28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<17> LOC=AB25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<18> LOC=AC27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<19> LOC=AA26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<20> LOC=AB26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<21> LOC=AA24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<22> LOC=AB27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<23> LOC=AA25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<24> LOC=AC29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<25> LOC=AB30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<26> LOC=W31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<27> LOC=V30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<28> LOC=AC30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<29> LOC=W29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<30> LOC=V27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<31> LOC=W27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<32> LOC=V29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<33> LOC=Y27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<34> LOC=Y26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<35> LOC=W24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<36> LOC=V28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<37> LOC=W25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<38> LOC=W26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<39> LOC=V24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<40> LOC=R24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<41> LOC=P25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<42> LOC=N24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<43> LOC=P26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<44> LOC=T24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<45> LOC=N25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<46> LOC=P27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<47> LOC=N28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<48> LOC=M28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<49> LOC=L28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<50> LOC=F25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<51> LOC=H25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<52> LOC=K27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<53> LOC=K28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<54> LOC=H24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<55> LOC=G26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<56> LOC=G25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<57> LOC=M26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<58> LOC=J24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<59> LOC=L26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<60> LOC=J27  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<61> LOC=M25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<62> LOC=L25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQ_pin<63> LOC=L24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_pin<0> LOC=AA29  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_pin<1> LOC=AK28  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_pin<2> LOC=AK26  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_pin<3> LOC=AB31  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_pin<4> LOC=Y28  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_pin<5> LOC=E26  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_pin<6> LOC=H28  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_pin<7> LOC=G27  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin<0> LOC=AA30  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin<1> LOC=AK27  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin<2> LOC=AJ27  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin<3> LOC=AA31  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin<4> LOC=Y29  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin<5> LOC=E27  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin<6> LOC=G28  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin<7> LOC=H27  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<0> LOC=L30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<1> LOC=M30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<2> LOC=N29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<3> LOC=P29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<4> LOC=K31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<5> LOC=L31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<6> LOC=P31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<7> LOC=P30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<8> LOC=M31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<9> LOC=R28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<10> LOC=J31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<11> LOC=R29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_A_pin<12> LOC=T31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_BA_pin<0> LOC=G31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_BA_pin<1> LOC=J30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_RAS_N_pin LOC=H30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_CAS_N_pin LOC=E31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_WE_N_pin LOC=K29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_CS_N_pin LOC=L29  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_ODT_pin<0> LOC=F31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_ODT_pin<1> LOC=F30  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_CKE_pin LOC=T28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DM_pin<0> LOC=AJ31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DM_pin<1> LOC=AE28  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DM_pin<2> LOC=Y24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DM_pin<3> LOC=Y31  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DM_pin<4> LOC=V25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DM_pin<5> LOC=P24  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DM_pin<6> LOC=F26  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_DM_pin<7> LOC=J25  |  IOSTANDARD = SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_CK_pin<0> LOC=AK29  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_CK_pin<1> LOC=E28  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_CK_N_pin<0> LOC=AJ29  |  IOSTANDARD = DIFF_SSTL18_II;
+Net fpga_0_DDR2_SDRAM_DDR2_CK_N_pin<1> LOC=F28  |  IOSTANDARD = DIFF_SSTL18_II;
+############################################################################
+#
+#  PPC440MC_DDR2 BRAM Location Constraints
+#
+############################################################################
+
+##------------------------------------------------------------------------------
+## MIG 2.0 Constraints
+##------------------------------------------------------------------------------
+###########################################################################
+## Define multicycle paths - these paths may take longer because additional
+## time allowed for logic to settle in calibration/initialization FSM
+###########################################################################
+
+NET "DDR2_SDRAM*/mc_mibclk" TNM = FFS "TNM_CLK0";
+NET "DDR2_SDRAM*/mi_mcclk90" TNM = FFS "TNM_CLK90";
+
+NET "DDR2_SDRAM*/mc_mibclk" TNM_NET =  "mc_clk";
+TIMESPEC "TS_MC_CLK" = PERIOD "mc_clk" 5.000 ns;
+
+
+## MUX Select for either rising/falling CLK0 for 2nd stage read capture
+INST "*/u_phy_calib/gen_rd_data_sel*.u_ff_rd_data_sel" TNM = "TNM_RD_DATA_SEL";
+TIMESPEC "TS_MC_RD_DATA_SEL" = FROM "TNM_RD_DATA_SEL" TO "TNM_CLK0"
+"TS_clk_div_slow_0_clk_div_slow_0_DDR2_CLK_i" * 4;
+
+## Calibration/Initialization complete status flag (for PHY logic only)
+INST "*/u_phy_init/u_ff_phy_init_data_sel" TNM = "TNM_PHY_INIT_DATA_SEL";
+TIMESPEC "TS_MC_PHY_INIT_DATA_SEL_0" = FROM "TNM_PHY_INIT_DATA_SEL" TO
+ "TNM_CLK0"
+"TS_MC_CLK" * 4;
+
+TIMESPEC "TS_MC_PHY_INIT_DATA_SEL_90" = FROM "TNM_PHY_INIT_DATA_SEL" TO
+  "TNM_CLK90" "TS_MC_CLK" * 4;
+
+## Select (address) bits for SRL32 shift registers used in stage3/stage4
+## calibration
+INST "*/u_phy_calib/gen_gate_dly*.u_ff_gate_dly" TNM = "TNM_GATE_DLY";
+TIMESPEC "TS_MC_GATE_DLY" = FROM "TNM_GATE_DLY" TO "TNM_CLK0"
+"TS_MC_CLK" * 4;
+
+INST "*/u_phy_calib/gen_rden_dly*.u_ff_rden_dly" TNM = "TNM_RDEN_DLY";
+TIMESPEC "TS_MC_RDEN_DLY" = FROM "TNM_RDEN_DLY" TO "TNM_CLK0"
+"TS_MC_CLK" * 4;
+
+INST "*/u_phy_calib/gen_cal_rden_dly*.u_ff_cal_rden_dly"
+  TNM = "TNM_CAL_RDEN_DLY";
+TIMESPEC "TS_MC_CAL_RDEN_DLY" = FROM "TNM_CAL_RDEN_DLY" TO "TNM_CLK0"
+"TS_MC_CLK" * 4;
+
+## MUX select for read data - optional delay on data to account for byte skews
+INST "*/usr_rd/gen_rden_sel_mux*.u_ff_rden_sel_mux" TNM = "TNM_RDEN_SEL_MUX";
+TIMESPEC "TS_MC_RDEN_SEL_MUX" = FROM "TNM_RDEN_SEL_MUX" TO "TNM_CLK0"
+"TS_MC_CLK" * 4;
+
+###########################################################################
+## LOC placment of DQS-squelch related IDDR and IDELAY elements
+## Each circuit can be located at any of the following locations:
+## 1. Ununsed "N"-side of DQS diff pair I/O
+## 2. DM data mask (output only, input side is free for use)
+## 3. Any output-only site
+###########################################################################
+
+INST "*/gen_dqs[0].u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y96";
+INST "*/gen_dqs[0].u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y96";
+INST "*/gen_dqs[1].u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y58";
+INST "*/gen_dqs[1].u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y58";
+INST "*/gen_dqs[2].u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y62";
+INST "*/gen_dqs[2].u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y62";
+INST "*/gen_dqs[3].u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y100";
+INST "*/gen_dqs[3].u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y100";
+INST "*/gen_dqs[4].u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y102";
+INST "*/gen_dqs[4].u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y102";
+INST "*/gen_dqs[5].u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y256";
+INST "*/gen_dqs[5].u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y256";
+INST "*/gen_dqs[6].u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y260";
+INST "*/gen_dqs[6].u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y260";
+INST "*/gen_dqs[7].u_iob_dqs/u_iddr_dq_ce" LOC = "ILOGIC_X0Y262";
+INST "*/gen_dqs[7].u_iob_dqs/u_iodelay_dq_ce" LOC = "IODELAY_X0Y262";
+
+###########################################################################
+## DQS Squelch-related timing constraints
+###########################################################################
+
+###########################################################################
+## Half-cycle path constraint from IDDR to CE pin for all DQ IDDRs
+## for DQS Read Postamble Glitch Squelch circuit
+###########################################################################
+## Max delay from output of IDDR to CE input of DQ IDDRs = tRPST + some slack
+## where slack account for rise-time of DQS on board. For now assume slack =
+## 0.400ns (based on initial SPICE simulations, assumes use of ODT), so
+## time = 0.4*Tcyc + 0.40ns = 1.6ns @333MHz
+INST "*/gen_dqs[*].u_iob_dqs/u_iddr_dq_ce" TNM = "TNM_DQ_CE_IDDR";
+INST "*/gen_dq[*].u_iob_dq/gen_stg2_*.u_iddr_dq" TNM = "TNM_DQS_FLOPS";
+TIMESPEC "TS_DQ_CE" = FROM "TNM_DQ_CE_IDDR" TO "TNM_DQS_FLOPS" 1.9 ns;
+
+###########################################################################
+## LOC and timing constraints for flop driving DQS CE enable signal
+## from fabric logic. Even though the absolute delay on this path is
+## calibrated out (when synchronizing this output to DQS), the delay
+## should still be kept as low as possible to reduce post-calibration
+## voltage/temp variations - these are roughly proportional to the
+## absolute delay of the path
+###########################################################################
+
+INST "*/u_phy_calib/gen_gate[0].u_en_dqs_ff" LOC = SLICE_X0Y48;
+INST "*/u_phy_calib/gen_gate[1].u_en_dqs_ff" LOC = SLICE_X0Y29;
+INST "*/u_phy_calib/gen_gate[2].u_en_dqs_ff" LOC = SLICE_X0Y31;
+INST "*/u_phy_calib/gen_gate[3].u_en_dqs_ff" LOC = SLICE_X0Y50;
+INST "*/u_phy_calib/gen_gate[4].u_en_dqs_ff" LOC = SLICE_X0Y51;
+INST "*/u_phy_calib/gen_gate[5].u_en_dqs_ff" LOC = SLICE_X0Y128;
+INST "*/u_phy_calib/gen_gate[6].u_en_dqs_ff" LOC = SLICE_X0Y130;
+INST "*/u_phy_calib/gen_gate[7].u_en_dqs_ff" LOC = SLICE_X0Y131;
+
+###########################################################################
+## Control for DQS gate - from fabric flop. Prevent runaway delay -
+## two parts to this path: (1) from fabric flop to IDELAY, (2) from
+## IDELAY to asynchronous reset of IDDR that drives the DQ CEs
+## A single number is used for all speed grades - value based on 333MHz.
+## This can be relaxed for lower frequencies.
+###########################################################################
+
+NET "*/u_phy_io/en_dqs*" MAXDELAY = 600 ps;
+NET "*/u_phy_io/gen_dqs*.u_iob_dqs/en_dqs_sync" MAXDELAY = 850 ps;
+
+###########################################################################
+
+INST "*/gen_dq[0].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y42;
+INST "*/gen_dq[1].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y43;
+INST "*/gen_dq[2].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y45;
+INST "*/gen_dq[3].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y46;
+INST "*/gen_dq[4].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y41;
+INST "*/gen_dq[5].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y42;
+INST "*/gen_dq[6].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y44;
+INST "*/gen_dq[7].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y44;
+INST "*/gen_dq[8].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y28;
+INST "*/gen_dq[9].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y32;
+INST "*/gen_dq[10].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y33;
+INST "*/gen_dq[11].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y34;
+INST "*/gen_dq[12].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y26;
+INST "*/gen_dq[13].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y28;
+INST "*/gen_dq[14].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y33;
+INST "*/gen_dq[15].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y34;
+INST "*/gen_dq[16].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y35;
+INST "*/gen_dq[17].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y36;
+INST "*/gen_dq[18].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y38;
+INST "*/gen_dq[19].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y39;
+INST "*/gen_dq[20].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y36;
+INST "*/gen_dq[21].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y37;
+INST "*/gen_dq[22].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y38;
+INST "*/gen_dq[23].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y39;
+INST "*/gen_dq[24].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y46;
+INST "*/gen_dq[25].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y49;
+INST "*/gen_dq[26].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y53;
+INST "*/gen_dq[27].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y55;
+INST "*/gen_dq[28].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y49;
+INST "*/gen_dq[29].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y52;
+INST "*/gen_dq[30].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y54;
+INST "*/gen_dq[31].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y56;
+INST "*/gen_dq[32].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y52;
+INST "*/gen_dq[33].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y56;
+INST "*/gen_dq[34].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y58;
+INST "*/gen_dq[35].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y59;
+INST "*/gen_dq[36].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y54;
+INST "*/gen_dq[37].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y57;
+INST "*/gen_dq[38].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y58;
+INST "*/gen_dq[39].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y59;
+INST "*/gen_dq[40].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y120;
+INST "*/gen_dq[41].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y121;
+INST "*/gen_dq[42].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y122;
+INST "*/gen_dq[43].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y123;
+INST "*/gen_dq[44].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y120;
+INST "*/gen_dq[45].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y121;
+INST "*/gen_dq[46].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y123;
+INST "*/gen_dq[47].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y124;
+INST "*/gen_dq[48].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y124;
+INST "*/gen_dq[49].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y126;
+INST "*/gen_dq[50].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y132;
+INST "*/gen_dq[51].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y133;
+INST "*/gen_dq[52].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y125;
+INST "*/gen_dq[53].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y126;
+INST "*/gen_dq[54].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y133;
+INST "*/gen_dq[55].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y134;
+INST "*/gen_dq[56].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y134;
+INST "*/gen_dq[57].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y136;
+INST "*/gen_dq[58].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y137;
+INST "*/gen_dq[59].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y138;
+INST "*/gen_dq[60].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y135;
+INST "*/gen_dq[61].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y136;
+INST "*/gen_dq[62].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y138;
+INST "*/gen_dq[63].u_iob_dq/gen_stg2_*.u_ff_stg2a_rise" RLOC_ORIGIN = X0Y139;
+
+
+INST "DDR2_SDRAM/*/*u_rdf" LOC = RAMB36_X0Y19;
+INST "DDR2_SDRAM/*/*u_rdf1" LOC = RAMB36_X0Y18;
+INST "DDR2_SDRAM/*/*gen_wdf[0]*u_wdf" LOC = RAMB36_X0Y17;
+INST "DDR2_SDRAM/*/*gen_wdf[1]*u_wdf" LOC = RAMB36_X0Y16;
+
+
+###############################################################################
+
+# Prevent unrelated logic from being packed into any slices used
+
+# by read data capture RPM's - if unrelated logic gets packed into
+
+# these slices, it could cause the DIRT strings that define the
+
+# IDDR -> fabric flop routing to become unroutable during PAR stage
+
+# (unrelated logic may require routing resources required by the
+
+# DIRT strings - MAP does not currently take into account DIRT
+
+# strings when placing logic
+
+###############################################################################
+
+AREA_GROUP "DDR_CAPTURE_FFS" GROUP = CLOSED;
+
+
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<0> LOC=G5  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<1> LOC=N7  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<2> LOC=N5  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<3> LOC=P5  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<4> LOC=R6  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<5> LOC=M6  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPA_pin<6> LOC=L6  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_CLK_pin LOC=AH17  |  IOSTANDARD = LVCMOS33  |  PERIOD = 30000 ps;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin LOC=M7  |  IOSTANDARD = LVCMOS33  |  TIG;
+Net fpga_0_SysACE_CompactFlash_SysACE_CEN_pin LOC=M5  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_OEN_pin LOC=N8  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_WEN_pin LOC=R9  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<0> LOC=P9  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<1> LOC=T8  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<2> LOC=J7  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<3> LOC=H7  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<4> LOC=R7  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<5> LOC=U7  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<6> LOC=P7  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<7> LOC=P6  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<8> LOC=R8  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<9> LOC=L5  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<10> LOC=L4  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<11> LOC=K6  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<12> LOC=J5  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<13> LOC=T6  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<14> LOC=K7  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_SysACE_CompactFlash_SysACE_MPD_pin<15> LOC=J6  |  IOSTANDARD = LVCMOS33;
+Net fpga_0_clk_1_sys_clk_pin TNM_NET = sys_clk_pin;
+TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100000 kHz;
+Net fpga_0_clk_1_sys_clk_pin LOC = AH15  |  IOSTANDARD=LVCMOS33;
+Net fpga_0_rst_1_sys_rst_pin TIG;
+Net fpga_0_rst_1_sys_rst_pin LOC = E9  |  IOSTANDARD=LVCMOS33  |  PULLUP;
+Net fpga_0_PCIe_Diff_Clk_IBUF_DS_P_pin LOC=AF4  |  IOSTANDARD = LVDS_25;
+Net fpga_0_PCIe_Diff_Clk_IBUF_DS_N_pin LOC=AF3  |  IOSTANDARD = LVDS_25;
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/bitgen.ut b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/bitgen.ut
new file mode 100644 (file)
index 0000000..9bdebfc
--- /dev/null
@@ -0,0 +1,14 @@
+-g TdoPin:PULLNONE
+-g DriveDone:No
+-g StartUpClk:JTAGCLK
+-g DONE_cycle:4
+-g GTS_cycle:5
+-g TckPin:PULLUP
+-g TdiPin:PULLUP
+-g TmsPin:PULLUP
+-g DonePipe:No
+-g GWE_cycle:6
+-g LCK_cycle:NoWait
+-g Security:NONE
+-g Persist:No
+
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/download.cmd b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/download.cmd
new file mode 100644 (file)
index 0000000..f460373
--- /dev/null
@@ -0,0 +1,6 @@
+setMode -bscan\r
+setCable -p auto\r
+identify\r
+assignfile -p 5 -file implementation/download.bit\r
+program -p 5\r
+quit\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/fast_runtime.opt b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/etc/fast_runtime.opt
new file mode 100644 (file)
index 0000000..52396f1
--- /dev/null
@@ -0,0 +1,83 @@
+FLOWTYPE = FPGA;
+###############################################################
+## Filename: fast_runtime.opt
+##
+## Option File For Xilinx FPGA Implementation Flow for Fast
+## Runtime.
+## 
+## Version: 4.1.1
+###############################################################
+#
+# Options for Translator
+#
+# Type "ngdbuild -h" for a detailed list of ngdbuild command line options
+#
+Program ngdbuild 
+-p <partname>;        # Partname to use - picked from xflow commandline
+-nt timestamp;        # NGO File generation. Regenerate only when
+                      # source netlist is newer than existing 
+                      # NGO file (default)
+-bm <design>.bmm     # Block RAM memory map file
+<userdesign>;         # User design - pick from xflow command line
+-uc <design>.ucf;     # ucf constraints
+<design>.ngd;         # Name of NGD file. Filebase same as design filebase
+End Program ngdbuild
+
+#
+# Options for Mapper
+#
+# Type "map -h <arch>" for a detailed list of map command line options
+#
+Program map
+-o <design>_map.ncd;     # Output Mapped ncd file
+-w;                     # Overwrite output files.
+-pr b;                   # Pack internal FF/latches into IOBs
+#-fp <design>.mfp;       # Floorplan file
+-ol high;
+-timing;
+<inputdir><design>.ngd;  # Input NGD file
+<inputdir><design>.pcf;  # Physical constraints file
+END Program map
+
+#
+# Options for Post Map Trace
+#
+# Type "trce -h" for a detailed list of trce command line options
+#
+Program post_map_trce
+-e 3;                 # Produce error report limited to 3 items per constraint
+#-o <design>_map.twr;  # Output trace report file
+-xml <design>_map.twx;     # Output XML version of the timing report
+#-tsi <design>_map.tsi; # Produce Timing Specification Interaction report
+<inputdir><design>_map.ncd;  # Input mapped ncd
+<inputdir><design>.pcf;      # Physical constraints file
+END Program post_map_trce
+
+#
+# Options for Place and Route
+#
+# Type "par -h" for a detailed list of par command line options
+#
+Program par
+-w;                 # Overwrite existing placed and routed ncd
+-ol high;              # Overall effort level
+<inputdir><design>_map.ncd;  # Input mapped NCD file
+<design>.ncd;                # Output placed and routed NCD
+<inputdir><design>.pcf;      # Input physical constraints file
+END Program par
+
+#
+# Options for Post Par Trace
+#
+# Type "trce -h" for a detailed list of trce command line options
+#
+Program post_par_trce
+-e 3;                 # Produce error report limited to 3 items per constraint
+#-o <design>.twr;     # Output trace report file
+-xml <design>.twx;    # Output XML version of the timing report
+#-tsi <design>.tsi;  # Produce Timing Specification Interaction report
+<inputdir><design>.ncd;   # Input placed and routed ncd
+<inputdir><design>.pcf;   # Physical constraints file
+END Program post_par_trce
+
+
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_mhs.11.1 b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_mhs.11.1
new file mode 100644 (file)
index 0000000..597527e
--- /dev/null
@@ -0,0 +1,474 @@
+\r
+# ##############################################################################\r
+# Created by Base System Builder Wizard for Xilinx EDK 11.1 Build EDK_L.29.1\r
+# Sat Jun 13 13:14:11 2009\r
+# Target Board:  Xilinx Virtex 5 ML507 Evaluation Platform Rev A\r
+# Family:    virtex5\r
+# Device:    xc5vfx70t\r
+# Package:   ff1136\r
+# Speed Grade:  -1\r
+# Processor number: 1\r
+# Processor 1: ppc440_0\r
+# Processor clock frequency: 125.0\r
+# Bus clock frequency: 125.0\r
+# Debug Interface: FPGA JTAG\r
+# ##############################################################################\r
+ PARAMETER VERSION = 2.1.0\r
+\r
+\r
+ PORT fpga_0_RS232_Uart_1_RX_pin = fpga_0_RS232_Uart_1_RX_pin, DIR = I\r
+ PORT fpga_0_RS232_Uart_1_TX_pin = fpga_0_RS232_Uart_1_TX_pin, DIR = O\r
+ PORT fpga_0_LEDs_8Bit_GPIO_IO_pin = fpga_0_LEDs_8Bit_GPIO_IO_pin, DIR = IO, VEC = [0:7]\r
+ PORT fpga_0_LEDs_Positions_GPIO_IO_pin = fpga_0_LEDs_Positions_GPIO_IO_pin, DIR = IO, VEC = [0:4]\r
+ PORT fpga_0_Push_Buttons_5Bit_GPIO_IO_pin = fpga_0_Push_Buttons_5Bit_GPIO_IO_pin, DIR = IO, VEC = [0:4]\r
+ PORT fpga_0_DIP_Switches_8Bit_GPIO_IO_pin = fpga_0_DIP_Switches_8Bit_GPIO_IO_pin, DIR = IO, VEC = [0:7]\r
+ PORT fpga_0_IIC_EEPROM_Sda_pin = fpga_0_IIC_EEPROM_Sda_pin, DIR = IO\r
+ PORT fpga_0_IIC_EEPROM_Scl_pin = fpga_0_IIC_EEPROM_Scl_pin, DIR = IO\r
+ PORT fpga_0_SRAM_Mem_A_pin = fpga_0_SRAM_Mem_A_pin_vslice_7_30_concat, DIR = O, VEC = [7:30]\r
+ PORT fpga_0_SRAM_Mem_CEN_pin = fpga_0_SRAM_Mem_CEN_pin, DIR = O\r
+ PORT fpga_0_SRAM_Mem_OEN_pin = fpga_0_SRAM_Mem_OEN_pin, DIR = O\r
+ PORT fpga_0_SRAM_Mem_WEN_pin = fpga_0_SRAM_Mem_WEN_pin, DIR = O\r
+ PORT fpga_0_SRAM_Mem_BEN_pin = fpga_0_SRAM_Mem_BEN_pin, DIR = O, VEC = [0:3]\r
+ PORT fpga_0_SRAM_Mem_ADV_LDN_pin = fpga_0_SRAM_Mem_ADV_LDN_pin, DIR = O\r
+ PORT fpga_0_SRAM_Mem_DQ_pin = fpga_0_SRAM_Mem_DQ_pin, DIR = IO, VEC = [0:31]\r
+ PORT fpga_0_SRAM_ZBT_CLK_OUT_pin = SRAM_CLK_OUT_s, DIR = O\r
+ PORT fpga_0_SRAM_ZBT_CLK_FB_pin = SRAM_CLK_FB_s, DIR = I, SIGIS = CLK, CLK_FREQ = 125000000\r
+ PORT fpga_0_PCIe_Bridge_RXN_pin = fpga_0_PCIe_Bridge_RXN_pin, DIR = I\r
+ PORT fpga_0_PCIe_Bridge_RXP_pin = fpga_0_PCIe_Bridge_RXP_pin, DIR = I\r
+ PORT fpga_0_PCIe_Bridge_TXN_pin = fpga_0_PCIe_Bridge_TXN_pin, DIR = O\r
+ PORT fpga_0_PCIe_Bridge_TXP_pin = fpga_0_PCIe_Bridge_TXP_pin, DIR = O\r
+ PORT fpga_0_Ethernet_MAC_PHY_tx_clk_pin = fpga_0_Ethernet_MAC_PHY_tx_clk_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_rx_clk_pin = fpga_0_Ethernet_MAC_PHY_rx_clk_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_crs_pin = fpga_0_Ethernet_MAC_PHY_crs_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_dv_pin = fpga_0_Ethernet_MAC_PHY_dv_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_rx_data_pin = fpga_0_Ethernet_MAC_PHY_rx_data_pin, DIR = I, VEC = [3:0]\r
+ PORT fpga_0_Ethernet_MAC_PHY_col_pin = fpga_0_Ethernet_MAC_PHY_col_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_rx_er_pin = fpga_0_Ethernet_MAC_PHY_rx_er_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_rst_n_pin = fpga_0_Ethernet_MAC_PHY_rst_n_pin, DIR = O\r
+ PORT fpga_0_Ethernet_MAC_PHY_tx_en_pin = fpga_0_Ethernet_MAC_PHY_tx_en_pin, DIR = O\r
+ PORT fpga_0_Ethernet_MAC_PHY_tx_data_pin = fpga_0_Ethernet_MAC_PHY_tx_data_pin, DIR = O, VEC = [3:0]\r
+ PORT fpga_0_Ethernet_MAC_MDINT_pin = fpga_0_Ethernet_MAC_MDINT_pin, DIR = I, SIGIS = INTERRUPT, SENSITIVITY = LEVEL_LOW, INTERRUPT_PRIORITY = MEDIUM\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_DQ_pin = fpga_0_DDR2_SDRAM_DDR2_DQ_pin, DIR = IO, VEC = [63:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_DQS_pin = fpga_0_DDR2_SDRAM_DDR2_DQS_pin, DIR = IO, VEC = [7:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin = fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin, DIR = IO, VEC = [7:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_A_pin = fpga_0_DDR2_SDRAM_DDR2_A_pin, DIR = O, VEC = [12:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_BA_pin = fpga_0_DDR2_SDRAM_DDR2_BA_pin, DIR = O, VEC = [1:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_RAS_N_pin = fpga_0_DDR2_SDRAM_DDR2_RAS_N_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CAS_N_pin = fpga_0_DDR2_SDRAM_DDR2_CAS_N_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_WE_N_pin = fpga_0_DDR2_SDRAM_DDR2_WE_N_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CS_N_pin = fpga_0_DDR2_SDRAM_DDR2_CS_N_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_ODT_pin = fpga_0_DDR2_SDRAM_DDR2_ODT_pin, DIR = O, VEC = [1:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CKE_pin = fpga_0_DDR2_SDRAM_DDR2_CKE_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_DM_pin = fpga_0_DDR2_SDRAM_DDR2_DM_pin, DIR = O, VEC = [7:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CK_pin = fpga_0_DDR2_SDRAM_DDR2_CK_pin, DIR = O, VEC = [1:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CK_N_pin = fpga_0_DDR2_SDRAM_DDR2_CK_N_pin, DIR = O, VEC = [1:0]\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPA_pin = fpga_0_SysACE_CompactFlash_SysACE_MPA_pin, DIR = O, VEC = [6:0]\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_CLK_pin = fpga_0_SysACE_CompactFlash_SysACE_CLK_pin, DIR = I\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin = fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin, DIR = I\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_CEN_pin = fpga_0_SysACE_CompactFlash_SysACE_CEN_pin, DIR = O\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_OEN_pin = fpga_0_SysACE_CompactFlash_SysACE_OEN_pin, DIR = O\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_WEN_pin = fpga_0_SysACE_CompactFlash_SysACE_WEN_pin, DIR = O\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPD_pin = fpga_0_SysACE_CompactFlash_SysACE_MPD_pin, DIR = IO, VEC = [15:0]\r
+ PORT fpga_0_clk_1_sys_clk_pin = dcm_clk_s, DIR = I, SIGIS = CLK, CLK_FREQ = 100000000\r
+ PORT fpga_0_rst_1_sys_rst_pin = sys_rst_s, DIR = I, SIGIS = RST, RST_POLARITY = 0\r
+ PORT fpga_0_PCIe_Diff_Clk_IBUF_DS_P_pin = PCIe_Diff_Clk, DIR = I, DIFFERENTIAL_POLARITY = P, SIGIS = CLK\r
+ PORT fpga_0_PCIe_Diff_Clk_IBUF_DS_N_pin = PCIe_Diff_Clk, DIR = I, DIFFERENTIAL_POLARITY = N, SIGIS = CLK\r
+\r
+\r
+BEGIN ppc440_virtex5\r
+ PARAMETER INSTANCE = ppc440_0\r
+ PARAMETER C_IDCR_BASEADDR = 0b0000000000\r
+ PARAMETER C_IDCR_HIGHADDR = 0b0011111111\r
+ PARAMETER C_APU_CONTROL = 0b00000010000000001\r
+ PARAMETER C_PPC440MC_ROW_CONFLICT_MASK = 0x003FFE00\r
+ PARAMETER C_PPC440MC_BANK_CONFLICT_MASK = 0x00C00000\r
+ PARAMETER C_PPC440MC_CONTROL = 0xF810008F\r
+ PARAMETER C_SPLB0_USE_MPLB_ADDR = 1\r
+ PARAMETER C_SPLB0_NUM_MPLB_ADDR_RNG = 1\r
+ PARAMETER C_SPLB1_NUM_MPLB_ADDR_RNG = 0\r
+ PARAMETER HW_VER = 1.01.a\r
+ PARAMETER C_SPLB0_RNG0_MPLB_BASEADDR = 0x80000000\r
+ PARAMETER C_SPLB0_RNG0_MPLB_HIGHADDR = 0xffffffff\r
+ PARAMETER C_SPLB0_RNG_MC_BASEADDR = 0x00000000\r
+ PARAMETER C_SPLB0_RNG_MC_HIGHADDR = 0x0fffffff\r
+ BUS_INTERFACE MPLB = plb_v46_0\r
+ BUS_INTERFACE SPLB0 = ppc440_0_SPLB0\r
+ BUS_INTERFACE PPC440MC = ppc440_0_PPC440MC\r
+ BUS_INTERFACE MFCB = ppc440_0_fcb_v20\r
+ BUS_INTERFACE JTAGPPC = ppc440_0_jtagppc_bus\r
+ BUS_INTERFACE RESETPPC = ppc_reset_bus\r
+ PORT CPMC440CLK = clk_125_0000MHzPLL0\r
+ PORT CPMINTERCONNECTCLK = clk_125_0000MHzPLL0\r
+ PORT CPMINTERCONNECTCLKNTO1 = net_vcc\r
+ PORT EICC440EXTIRQ = ppc440_0_EICC440EXTIRQ\r
+ PORT CPMMCCLK = clk_125_0000MHzPLL0_ADJUST\r
+ PORT CPMPPCMPLBCLK = clk_125_0000MHzPLL0_ADJUST\r
+ PORT CPMPPCS0PLBCLK = clk_125_0000MHzPLL0_ADJUST\r
+END\r
+\r
+BEGIN plb_v46\r
+ PARAMETER INSTANCE = plb_v46_0\r
+ PARAMETER C_DCR_INTFCE = 0\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.04.a\r
+ PORT PLB_Clk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT SYS_Rst = sys_bus_reset\r
+END\r
+\r
+BEGIN xps_bram_if_cntlr\r
+ PARAMETER INSTANCE = xps_bram_if_cntlr_1\r
+ PARAMETER C_SPLB_NATIVE_DWIDTH = 64\r
+ PARAMETER C_SPLB_SUPPORT_BURSTS = 1\r
+ PARAMETER C_SPLB_P2P = 0\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.00.b\r
+ PARAMETER C_BASEADDR = 0xffffe000\r
+ PARAMETER C_HIGHADDR = 0xffffffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ BUS_INTERFACE PORTA = xps_bram_if_cntlr_1_port\r
+END\r
+\r
+BEGIN bram_block\r
+ PARAMETER INSTANCE = xps_bram_if_cntlr_1_bram\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.00.a\r
+ BUS_INTERFACE PORTA = xps_bram_if_cntlr_1_port\r
+END\r
+\r
+BEGIN xps_uartlite\r
+ PARAMETER INSTANCE = RS232_Uart_1\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_BAUDRATE = 9600\r
+ PARAMETER C_DATA_BITS = 8\r
+ PARAMETER C_USE_PARITY = 0\r
+ PARAMETER C_ODD_PARITY = 0\r
+ PARAMETER HW_VER = 1.01.a\r
+ PARAMETER C_BASEADDR = 0x84000000\r
+ PARAMETER C_HIGHADDR = 0x8400ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT RX = fpga_0_RS232_Uart_1_RX_pin\r
+ PORT TX = fpga_0_RS232_Uart_1_TX_pin\r
+ PORT Interrupt = RS232_Uart_1_Interrupt\r
+END\r
+\r
+BEGIN xps_gpio\r
+ PARAMETER INSTANCE = LEDs_8Bit\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_ALL_INPUTS = 0\r
+ PARAMETER C_GPIO_WIDTH = 8\r
+ PARAMETER C_INTERRUPT_PRESENT = 0\r
+ PARAMETER C_IS_DUAL = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81440000\r
+ PARAMETER C_HIGHADDR = 0x8144ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT GPIO_IO = fpga_0_LEDs_8Bit_GPIO_IO_pin\r
+END\r
+\r
+BEGIN xps_gpio\r
+ PARAMETER INSTANCE = LEDs_Positions\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_ALL_INPUTS = 0\r
+ PARAMETER C_GPIO_WIDTH = 5\r
+ PARAMETER C_INTERRUPT_PRESENT = 0\r
+ PARAMETER C_IS_DUAL = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81420000\r
+ PARAMETER C_HIGHADDR = 0x8142ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT GPIO_IO = fpga_0_LEDs_Positions_GPIO_IO_pin\r
+END\r
+\r
+BEGIN xps_gpio\r
+ PARAMETER INSTANCE = Push_Buttons_5Bit\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_ALL_INPUTS = 1\r
+ PARAMETER C_GPIO_WIDTH = 5\r
+ PARAMETER C_INTERRUPT_PRESENT = 0\r
+ PARAMETER C_IS_DUAL = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81400000\r
+ PARAMETER C_HIGHADDR = 0x8140ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT GPIO_IO = fpga_0_Push_Buttons_5Bit_GPIO_IO_pin\r
+END\r
+\r
+BEGIN xps_gpio\r
+ PARAMETER INSTANCE = DIP_Switches_8Bit\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_ALL_INPUTS = 1\r
+ PARAMETER C_GPIO_WIDTH = 8\r
+ PARAMETER C_INTERRUPT_PRESENT = 0\r
+ PARAMETER C_IS_DUAL = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81460000\r
+ PARAMETER C_HIGHADDR = 0x8146ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT GPIO_IO = fpga_0_DIP_Switches_8Bit_GPIO_IO_pin\r
+END\r
+\r
+BEGIN xps_iic\r
+ PARAMETER INSTANCE = IIC_EEPROM\r
+ PARAMETER C_IIC_FREQ = 100000\r
+ PARAMETER C_TEN_BIT_ADR = 0\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 2.01.a\r
+ PARAMETER C_BASEADDR = 0x81600000\r
+ PARAMETER C_HIGHADDR = 0x8160ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT Sda = fpga_0_IIC_EEPROM_Sda_pin\r
+ PORT Scl = fpga_0_IIC_EEPROM_Scl_pin\r
+END\r
+\r
+BEGIN xps_mch_emc\r
+ PARAMETER INSTANCE = SRAM\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_NUM_BANKS_MEM = 1\r
+ PARAMETER C_NUM_CHANNELS = 0\r
+ PARAMETER C_MEM0_WIDTH = 32\r
+ PARAMETER C_MAX_MEM_WIDTH = 32\r
+ PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 0\r
+ PARAMETER C_SYNCH_MEM_0 = 1\r
+ PARAMETER C_TCEDV_PS_MEM_0 = 0\r
+ PARAMETER C_TAVDV_PS_MEM_0 = 0\r
+ PARAMETER C_THZCE_PS_MEM_0 = 0\r
+ PARAMETER C_THZOE_PS_MEM_0 = 0\r
+ PARAMETER C_TWC_PS_MEM_0 = 0\r
+ PARAMETER C_TWP_PS_MEM_0 = 0\r
+ PARAMETER C_TLZWE_PS_MEM_0 = 0\r
+ PARAMETER HW_VER = 3.00.a\r
+ PARAMETER C_MEM0_BASEADDR = 0xf8000000\r
+ PARAMETER C_MEM0_HIGHADDR = 0xf80fffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT RdClk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT Mem_A = 0b0000000 & fpga_0_SRAM_Mem_A_pin_vslice_7_30_concat & 0b0\r
+ PORT Mem_CEN = fpga_0_SRAM_Mem_CEN_pin\r
+ PORT Mem_OEN = fpga_0_SRAM_Mem_OEN_pin\r
+ PORT Mem_WEN = fpga_0_SRAM_Mem_WEN_pin\r
+ PORT Mem_BEN = fpga_0_SRAM_Mem_BEN_pin\r
+ PORT Mem_ADV_LDN = fpga_0_SRAM_Mem_ADV_LDN_pin\r
+ PORT Mem_DQ = fpga_0_SRAM_Mem_DQ_pin\r
+END\r
+\r
+BEGIN plbv46_pcie\r
+ PARAMETER INSTANCE = PCIe_Bridge\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_IPIFBAR_NUM = 2\r
+ PARAMETER C_PCIBAR_NUM = 1\r
+ PARAMETER C_DEVICE_ID = 0x0505\r
+ PARAMETER C_VENDOR_ID = 0x10EE\r
+ PARAMETER C_CLASS_CODE = 0x058000\r
+ PARAMETER C_REV_ID = 0x00\r
+ PARAMETER C_SUBSYSTEM_ID = 0x0000\r
+ PARAMETER C_SUBSYSTEM_VENDOR_ID = 0x0000\r
+ PARAMETER C_COMP_TIMEOUT = 1\r
+ PARAMETER C_IPIFBAR2PCIBAR_0 = 0x00000000\r
+ PARAMETER C_IPIFBAR2PCIBAR_1 = 0x00000000\r
+ PARAMETER C_PCIBAR2IPIFBAR_0 = 0xf8000000\r
+ PARAMETER C_PCIBAR2IPIFBAR_1 = 0x00000000\r
+ PARAMETER C_PCIBAR_LEN_0 = 20\r
+ PARAMETER C_PCIBAR_LEN_1 = 28\r
+ PARAMETER C_BOARD = ml507\r
+ PARAMETER HW_VER = 3.00.b\r
+ PARAMETER C_BASEADDR = 0x85c00000\r
+ PARAMETER C_HIGHADDR = 0x85c0ffff\r
+ PARAMETER C_IPIFBAR_0 = 0xc0000000\r
+ PARAMETER C_IPIFBAR_HIGHADDR_0 = 0xdfffffff\r
+ PARAMETER C_IPIFBAR_1 = 0xe0000000\r
+ PARAMETER C_IPIFBAR_HIGHADDR_1 = 0xefffffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ BUS_INTERFACE MPLB = ppc440_0_SPLB0\r
+ PORT PERSTN = net_vcc\r
+ PORT REFCLK = PCIe_Diff_Clk\r
+ PORT RXN = fpga_0_PCIe_Bridge_RXN_pin\r
+ PORT RXP = fpga_0_PCIe_Bridge_RXP_pin\r
+ PORT TXN = fpga_0_PCIe_Bridge_TXN_pin\r
+ PORT TXP = fpga_0_PCIe_Bridge_TXP_pin\r
+ PORT MSI_request = net_gnd\r
+END\r
+\r
+BEGIN plb_v46\r
+ PARAMETER INSTANCE = ppc440_0_SPLB0\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.04.a\r
+ PORT PLB_Clk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT SYS_Rst = sys_bus_reset\r
+END\r
+\r
+BEGIN xps_ethernetlite\r
+ PARAMETER INSTANCE = Ethernet_MAC\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 2.01.a\r
+ PARAMETER C_BASEADDR = 0x81000000\r
+ PARAMETER C_HIGHADDR = 0x8100ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT PHY_tx_clk = fpga_0_Ethernet_MAC_PHY_tx_clk_pin\r
+ PORT PHY_rx_clk = fpga_0_Ethernet_MAC_PHY_rx_clk_pin\r
+ PORT PHY_crs = fpga_0_Ethernet_MAC_PHY_crs_pin\r
+ PORT PHY_dv = fpga_0_Ethernet_MAC_PHY_dv_pin\r
+ PORT PHY_rx_data = fpga_0_Ethernet_MAC_PHY_rx_data_pin\r
+ PORT PHY_col = fpga_0_Ethernet_MAC_PHY_col_pin\r
+ PORT PHY_rx_er = fpga_0_Ethernet_MAC_PHY_rx_er_pin\r
+ PORT PHY_rst_n = fpga_0_Ethernet_MAC_PHY_rst_n_pin\r
+ PORT PHY_tx_en = fpga_0_Ethernet_MAC_PHY_tx_en_pin\r
+ PORT PHY_tx_data = fpga_0_Ethernet_MAC_PHY_tx_data_pin\r
+END\r
+\r
+BEGIN ppc440mc_ddr2\r
+ PARAMETER INSTANCE = DDR2_SDRAM\r
+ PARAMETER C_DDR_BAWIDTH = 2\r
+ PARAMETER C_NUM_CLK_PAIRS = 2\r
+ PARAMETER C_DDR_DWIDTH = 64\r
+ PARAMETER C_DDR_CAWIDTH = 10\r
+ PARAMETER C_NUM_RANKS_MEM = 1\r
+ PARAMETER C_CS_BITS = 0\r
+ PARAMETER C_DDR_DM_WIDTH = 8\r
+ PARAMETER C_DQ_BITS = 8\r
+ PARAMETER C_DDR2_ODT_WIDTH = 2\r
+ PARAMETER C_DDR2_ADDT_LAT = 0\r
+ PARAMETER C_INCLUDE_ECC_SUPPORT = 0\r
+ PARAMETER C_DDR2_ODT_SETTING = 1\r
+ PARAMETER C_DQS_BITS = 3\r
+ PARAMETER C_DDR_DQS_WIDTH = 8\r
+ PARAMETER C_DDR_RAWIDTH = 13\r
+ PARAMETER C_DDR_BURST_LENGTH = 4\r
+ PARAMETER C_DDR_CAS_LAT = 4\r
+ PARAMETER C_REG_DIMM = 0\r
+ PARAMETER C_MIB_MC_CLOCK_RATIO = 1\r
+ PARAMETER C_DDR_TREFI = 3900\r
+ PARAMETER C_DDR_TRAS = 40000\r
+ PARAMETER C_DDR_TRCD = 15000\r
+ PARAMETER C_DDR_TRFC = 75000\r
+ PARAMETER C_DDR_TRP = 15000\r
+ PARAMETER C_DDR_TRTP = 7500\r
+ PARAMETER C_DDR_TWR = 15000\r
+ PARAMETER C_DDR_TWTR = 7500\r
+ PARAMETER C_MC_MIBCLK_PERIOD_PS = 8000\r
+ PARAMETER C_IDEL_HIGH_PERF = TRUE\r
+ PARAMETER C_NUM_IDELAYCTRL = 3\r
+ PARAMETER C_IDELAYCTRL_LOC = IDELAYCTRL_X0Y6-IDELAYCTRL_X0Y2-IDELAYCTRL_X0Y1\r
+ PARAMETER C_DQS_IO_COL = 0b000000000000000000\r
+ PARAMETER C_DQ_IO_MS = 0b000000000111010100111101000011110001111000101110110000111100000110111100\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_MEM_BASEADDR = 0x00000000\r
+ PARAMETER C_MEM_HIGHADDR = 0x0fffffff\r
+ BUS_INTERFACE PPC440MC = ppc440_0_PPC440MC\r
+ PORT mc_mibclk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT mi_mcclk90 = clk_125_0000MHz90PLL0_ADJUST\r
+ PORT mi_mcreset = sys_bus_reset\r
+ PORT mi_mcclkdiv2 = clk_62_5000MHzPLL0_ADJUST\r
+ PORT mi_mcclk_200 = clk_200_0000MHz\r
+ PORT DDR2_DQ = fpga_0_DDR2_SDRAM_DDR2_DQ_pin\r
+ PORT DDR2_DQS = fpga_0_DDR2_SDRAM_DDR2_DQS_pin\r
+ PORT DDR2_DQS_N = fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin\r
+ PORT DDR2_A = fpga_0_DDR2_SDRAM_DDR2_A_pin\r
+ PORT DDR2_BA = fpga_0_DDR2_SDRAM_DDR2_BA_pin\r
+ PORT DDR2_RAS_N = fpga_0_DDR2_SDRAM_DDR2_RAS_N_pin\r
+ PORT DDR2_CAS_N = fpga_0_DDR2_SDRAM_DDR2_CAS_N_pin\r
+ PORT DDR2_WE_N = fpga_0_DDR2_SDRAM_DDR2_WE_N_pin\r
+ PORT DDR2_CS_N = fpga_0_DDR2_SDRAM_DDR2_CS_N_pin\r
+ PORT DDR2_ODT = fpga_0_DDR2_SDRAM_DDR2_ODT_pin\r
+ PORT DDR2_CKE = fpga_0_DDR2_SDRAM_DDR2_CKE_pin\r
+ PORT DDR2_DM = fpga_0_DDR2_SDRAM_DDR2_DM_pin\r
+ PORT DDR2_CK = fpga_0_DDR2_SDRAM_DDR2_CK_pin\r
+ PORT DDR2_CK_N = fpga_0_DDR2_SDRAM_DDR2_CK_N_pin\r
+END\r
+\r
+BEGIN xps_sysace\r
+ PARAMETER INSTANCE = SysACE_CompactFlash\r
+ PARAMETER C_MEM_WIDTH = 16\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.01.a\r
+ PARAMETER C_BASEADDR = 0x83600000\r
+ PARAMETER C_HIGHADDR = 0x8360ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT SysACE_MPA = fpga_0_SysACE_CompactFlash_SysACE_MPA_pin\r
+ PORT SysACE_CLK = fpga_0_SysACE_CompactFlash_SysACE_CLK_pin\r
+ PORT SysACE_MPIRQ = fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin\r
+ PORT SysACE_CEN = fpga_0_SysACE_CompactFlash_SysACE_CEN_pin\r
+ PORT SysACE_OEN = fpga_0_SysACE_CompactFlash_SysACE_OEN_pin\r
+ PORT SysACE_WEN = fpga_0_SysACE_CompactFlash_SysACE_WEN_pin\r
+ PORT SysACE_MPD = fpga_0_SysACE_CompactFlash_SysACE_MPD_pin\r
+END\r
+\r
+BEGIN fcb_v20\r
+ PARAMETER INSTANCE = ppc440_0_fcb_v20\r
+ PARAMETER HW_VER = 1.00.a\r
+ PORT FCB_CLK = clk_125_0000MHzPLL0_ADJUST\r
+ PORT SYS_RST = sys_bus_reset\r
+END\r
+\r
+BEGIN apu_fpu_virtex5\r
+ PARAMETER INSTANCE = ppc440_0_apu_fpu_virtex5\r
+ PARAMETER C_DOUBLE_PRECISION = 0\r
+ PARAMETER HW_VER = 1.01.a\r
+ BUS_INTERFACE SFCB2 = ppc440_0_fcb_v20\r
+END\r
+\r
+BEGIN clock_generator\r
+ PARAMETER INSTANCE = clock_generator_0\r
+ PARAMETER C_CLKIN_FREQ = 100000000\r
+ PARAMETER C_CLKFBIN_FREQ = 125000000\r
+ PARAMETER C_CLKOUT0_FREQ = 125000000\r
+ PARAMETER C_CLKOUT0_PHASE = 90\r
+ PARAMETER C_CLKOUT0_GROUP = PLL0_ADJUST\r
+ PARAMETER C_CLKOUT0_BUF = TRUE\r
+ PARAMETER C_CLKOUT1_FREQ = 125000000\r
+ PARAMETER C_CLKOUT1_PHASE = 0\r
+ PARAMETER C_CLKOUT1_GROUP = PLL0\r
+ PARAMETER C_CLKOUT1_BUF = TRUE\r
+ PARAMETER C_CLKOUT2_FREQ = 125000000\r
+ PARAMETER C_CLKOUT2_PHASE = 0\r
+ PARAMETER C_CLKOUT2_GROUP = PLL0_ADJUST\r
+ PARAMETER C_CLKOUT2_BUF = TRUE\r
+ PARAMETER C_CLKOUT3_FREQ = 200000000\r
+ PARAMETER C_CLKOUT3_PHASE = 0\r
+ PARAMETER C_CLKOUT3_GROUP = NONE\r
+ PARAMETER C_CLKOUT3_BUF = TRUE\r
+ PARAMETER C_CLKOUT4_FREQ = 62500000\r
+ PARAMETER C_CLKOUT4_PHASE = 0\r
+ PARAMETER C_CLKOUT4_GROUP = PLL0_ADJUST\r
+ PARAMETER C_CLKOUT4_BUF = TRUE\r
+ PARAMETER C_CLKFBOUT_FREQ = 125000000\r
+ PARAMETER C_CLKFBOUT_BUF = TRUE\r
+ PARAMETER HW_VER = 3.00.a\r
+ PORT CLKIN = dcm_clk_s\r
+ PORT CLKFBIN = SRAM_CLK_FB_s\r
+ PORT CLKOUT0 = clk_125_0000MHz90PLL0_ADJUST\r
+ PORT CLKOUT1 = clk_125_0000MHzPLL0\r
+ PORT CLKOUT2 = clk_125_0000MHzPLL0_ADJUST\r
+ PORT CLKOUT3 = clk_200_0000MHz\r
+ PORT CLKOUT4 = clk_62_5000MHzPLL0_ADJUST\r
+ PORT CLKFBOUT = SRAM_CLK_OUT_s\r
+ PORT RST = net_gnd\r
+ PORT LOCKED = Dcm_all_locked\r
+END\r
+\r
+BEGIN jtagppc_cntlr\r
+ PARAMETER INSTANCE = jtagppc_cntlr_inst\r
+ PARAMETER HW_VER = 2.01.c\r
+ BUS_INTERFACE JTAGPPC0 = ppc440_0_jtagppc_bus\r
+END\r
+\r
+BEGIN proc_sys_reset\r
+ PARAMETER INSTANCE = proc_sys_reset_0\r
+ PARAMETER C_EXT_RESET_HIGH = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ BUS_INTERFACE RESETPPC0 = ppc_reset_bus\r
+ PORT Slowest_sync_clk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT Ext_Reset_In = sys_rst_s\r
+ PORT Dcm_locked = Dcm_all_locked\r
+ PORT Bus_Struct_Reset = sys_bus_reset\r
+ PORT Peripheral_Reset = sys_periph_reset\r
+END\r
+\r
+BEGIN xps_intc\r
+ PARAMETER INSTANCE = xps_intc_0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81800000\r
+ PARAMETER C_HIGHADDR = 0x8180ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT Intr = fpga_0_Ethernet_MAC_MDINT_pin&RS232_Uart_1_Interrupt\r
+ PORT Irq = ppc440_0_EICC440EXTIRQ\r
+END\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_mss.11.1 b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_mss.11.1
new file mode 100644 (file)
index 0000000..aa363ea
--- /dev/null
@@ -0,0 +1,131 @@
+\r
+ PARAMETER VERSION = 2.2.0\r
+\r
+\r
+BEGIN OS\r
+ PARAMETER OS_NAME = standalone\r
+ PARAMETER OS_VER = 2.00.a\r
+ PARAMETER PROC_INSTANCE = ppc440_0\r
+ PARAMETER STDIN = RS232_Uart_1\r
+ PARAMETER STDOUT = RS232_Uart_1\r
+END\r
+\r
+\r
+BEGIN PROCESSOR\r
+ PARAMETER DRIVER_NAME = cpu_ppc440\r
+ PARAMETER DRIVER_VER = 1.00.b\r
+ PARAMETER HW_INSTANCE = ppc440_0\r
+ PARAMETER COMPILER = powerpc-eabi-gcc\r
+ PARAMETER ARCHIVER = powerpc-eabi-ar\r
+END\r
+\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = bram\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = xps_bram_if_cntlr_1\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = generic\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = xps_bram_if_cntlr_1_bram\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = uartlite\r
+ PARAMETER DRIVER_VER = 1.14.a\r
+ PARAMETER HW_INSTANCE = RS232_Uart_1\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = gpio\r
+ PARAMETER DRIVER_VER = 2.13.a\r
+ PARAMETER HW_INSTANCE = LEDs_8Bit\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = gpio\r
+ PARAMETER DRIVER_VER = 2.13.a\r
+ PARAMETER HW_INSTANCE = LEDs_Positions\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = gpio\r
+ PARAMETER DRIVER_VER = 2.13.a\r
+ PARAMETER HW_INSTANCE = Push_Buttons_5Bit\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = gpio\r
+ PARAMETER DRIVER_VER = 2.13.a\r
+ PARAMETER HW_INSTANCE = DIP_Switches_8Bit\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = iic\r
+ PARAMETER DRIVER_VER = 1.14.a\r
+ PARAMETER HW_INSTANCE = IIC_EEPROM\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = emc\r
+ PARAMETER DRIVER_VER = 2.00.a\r
+ PARAMETER HW_INSTANCE = SRAM\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = pcie\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = PCIe_Bridge\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = emaclite\r
+ PARAMETER DRIVER_VER = 1.14.a\r
+ PARAMETER HW_INSTANCE = Ethernet_MAC\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = memcon\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = DDR2_SDRAM\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = sysace\r
+ PARAMETER DRIVER_VER = 1.12.a\r
+ PARAMETER HW_INSTANCE = SysACE_CompactFlash\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = apu_fpu_virtex5\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = ppc440_0_apu_fpu_virtex5\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = generic\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = clock_generator_0\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = generic\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = jtagppc_cntlr_inst\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = generic\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = proc_sys_reset_0\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = intc\r
+ PARAMETER DRIVER_VER = 1.11.a\r
+ PARAMETER HW_INSTANCE = xps_intc_0\r
+END\r
+\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_xmp.11.1 b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/revup/system_xmp.11.1
new file mode 100644 (file)
index 0000000..8f5b600
--- /dev/null
@@ -0,0 +1,69 @@
+#Please do not modify this file by hand\r
+XmpVersion: 11.1\r
+VerMgmt: 11.1\r
+IntStyle: default\r
+MHS File: system.mhs\r
+MSS File: system.mss\r
+Architecture: virtex5\r
+Device: xc5vfx70t\r
+Package: ff1136\r
+SpeedGrade: -1\r
+UserCmd1: \r
+UserCmd1Type: 0\r
+UserCmd2: \r
+UserCmd2Type: 0\r
+GenSimTB: 0\r
+SdkExportBmmBit: 1\r
+SdkExportDir: SDK/SDK_Export\r
+InsertNoPads: 0\r
+WarnForEAArch: 1\r
+HdlLang: VHDL\r
+SimModel: BEHAVIORAL\r
+UcfFile: data/system.ucf\r
+EnableParTimingError: 1\r
+ShowLicenseDialog: 1\r
+Processor: ppc440_0\r
+BootLoop: 1\r
+XmdStub: 0\r
+SwProj: RTOSDemo\r
+Processor: ppc440_0\r
+Executable: RTOSDemo/executable.elf\r
+Source: RTOSDemo/../../Common/Minimal/BlockQ.c\r
+Source: RTOSDemo/../../Common/Minimal/blocktim.c\r
+Source: RTOSDemo/../../Common/Minimal/comtest.c\r
+Source: RTOSDemo/../../Common/Minimal/countsem.c\r
+Source: RTOSDemo/../../Common/Minimal/death.c\r
+Source: RTOSDemo/../../Common/Minimal/dynamic.c\r
+Source: RTOSDemo/../../Common/Minimal/flash.c\r
+Source: RTOSDemo/../../Common/Minimal/GenQTest.c\r
+Source: RTOSDemo/../../Common/Minimal/integer.c\r
+Source: RTOSDemo/../../Common/Minimal/QPeek.c\r
+Source: RTOSDemo/../../Common/Minimal/recmutex.c\r
+Source: RTOSDemo/../../Common/Minimal/semtest.c\r
+Source: RTOSDemo/../../../Source/tasks.c\r
+Source: RTOSDemo/../../../Source/list.c\r
+Source: RTOSDemo/../../../Source/queue.c\r
+Source: RTOSDemo/../../../Source/croutine.c\r
+Source: RTOSDemo/../../../Source/portable/GCC/PPC440_Xilinx/portasm.S\r
+Source: RTOSDemo/../../../Source/portable/GCC/PPC440_Xilinx/port.c\r
+Source: RTOSDemo/../../../Source/portable/MemMang/heap_2.c\r
+Source: RTOSDemo/flop/flop-reg-test.c\r
+Source: RTOSDemo/flop/flop.c\r
+Source: RTOSDemo/partest/partest.c\r
+Source: RTOSDemo/serial/serial.c\r
+Source: RTOSDemo/main.c\r
+DefaultInit: EXECUTABLE\r
+InitBram: 0\r
+Active: 1\r
+CompilerOptLevel: 0\r
+GlobPtrOpt: 0\r
+DebugSym: 1\r
+ProfileFlag: 0\r
+SearchIncl: ../../Source/include ../../Source/portable/GCC/PPC440_Xilinx ../Common/include ./RTOSDemo ./RTOSDemo/flop\r
+ProgStart: \r
+StackSize: \r
+HeapSize: \r
+LinkerScript: RTOSDemo/RTOSDemo_linker_script.ld\r
+ProgCCFlags: -D GCC_PPC440 -mregnames\r
+CompileInXps: 1\r
+NonXpsApp: 0\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.bsb b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.bsb
new file mode 100644 (file)
index 0000000..19ffa7e
--- /dev/null
@@ -0,0 +1 @@
+\1d\84æÄ®Òôtt¦Êè¬ÊäæÒÞÜ@Dbb\b\`bDvC\84æÄ®Òôtt¦Êè\84ÞÂäÈ@D°ÒØÒÜðD@D¬ÒäèÊð@j@\9a\98j`n@\8aìÂØêÂèÒÞÜ@ ØÂèÌÞäÚD@D\82Dv-\84æÄ®ÒôttªàÈÂèÊ\84ÞÂäÈ@D\82¤\86\90\92¨\8a\86¨ª¤\8aD@DìÒäèÊðjDv.\84æÄ®ÒôttªàÈÂèÊ\84ÞÂäÈ@D\88\8a¬\92\86\8a¾¦\92´\8aD@DðÆjìÌðn`èDv'\84æÄ®ÒôttªàÈÂèÊ\84ÞÂäÈ@D \82\86\96\82\8e\8aD@DÌÌbbflDv'\84æÄ®ÒôttªàÈÂèÊ\84ÞÂäÈ@D¤¦¨¾ \9e\98\82¤\92¨²D@D`Dv&\84æÄ®ÒôttªàÈÂèÊ\84ÞÂäÈ@D¦ \8a\8a\88\8e¤\82\88\8aD@DZbDv$\84æÄ®Òôtt¦Êè¦òæèÊÚ@DààÆhh`D@Db\``\ÂDv8\84æÄ®ÒôttªàÈÂèʦòæèÊÚ@D\84ª¦¾\8c¤\8a¢D@Dbdj\``````D@DààÆhh`¾`Dv8\84æÄ®ÒôttªàÈÂèʦòæèÊÚ@D\86\98\96¾\8c¤\8a¢D@Db``\``````D@DààÆhh`¾`Dv9\84æÄ®ÒôttªàÈÂèʦòæèÊÚ@D ¤\9e\86¾\8c¤\8a¢D@Dbdj\``````D@DààÆhh`¾`Dv4\84æÄ®Òôtt\82ÈÈ äÞÆÊææÞä@DààÆhh`¾`D@D  \86hh`D@DààÆhh`¾`Dv6\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@DààÆhh`¾`D@D\86\82\86\90\8aD@D\9c\9e@\86\82\86\90\8aDv3\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@DààÆhh`¾`D@D\86¾ª¦\8a¾\8c ªD@DbDv6\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@DààÆhh`¾`D@D\88\9e\86\9a\92´\8aD@D\9cÞÜÊDv6\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@DààÆhh`¾`D@D\92\9e\86\9a\92´\8aD@D\9cÞÜÊDv>\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D\88\88¤d¾¦\88¤\82\9aD@DààÆhh`ÚƾÈÈädD@DààÆhh`¾`Dv@\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D\88\92 ¾¦îÒèÆÐÊæ¾p\84ÒèD@Dðàæ¾ÎàÒÞD@DààÆhh`¾`DvF\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D\88\92 ¾¦îÒèÆÐÊæ¾p\84ÒèD@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDvC\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D\8aèÐÊäÜÊè¾\9a\82\86D@Dðàæ¾ÊèÐÊäÜÊèØÒèÊD@DààÆhh`¾`DvA\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D\8aèÐÊäÜÊè¾\9a\82\86D@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDv8\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D\92\92\86¾\8a\8a ¤\9e\9aD@Dðàæ¾ÒÒÆD@DààÆhh`¾`Dv?\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D\92\92\86¾\8a\8a ¤\9e\9aD@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDv8\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D\98\8a\88æ¾p\84ÒèD@Dðàæ¾ÎàÒÞD@DààÆhh`¾`Dv>\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D\98\8a\88æ¾p\84ÒèD@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDv=\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D\98\8a\88æ¾ ÞæÒèÒÞÜæD@Dðàæ¾ÎàÒÞD@DààÆhh`¾`DvC\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D\98\8a\88æ¾ ÞæÒèÒÞÜæD@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDv=\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D \86\92ʾ\84äÒÈÎÊD@DàØÄìhl¾àÆÒÊD@DààÆhh`¾`Dv:\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D \86\92ʾ\84äÒÈÎÊD@D\8e¾ª¦\8a¾\88\9a\82D@D\8c\82\98¦\8aDv@\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D \86\92ʾ\84äÒÈÎÊD@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDv@\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D êæо\84êèèÞÜæ¾j\84ÒèD@Dðàæ¾ÎàÒÞD@DààÆhh`¾`DvF\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D êæо\84êèèÞÜæ¾j\84ÒèD@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDv?\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D¤¦dfd¾ªÂäè¾bD@Dðàæ¾êÂäèØÒèÊD@DààÆhh`¾`Dv;\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D¤¦dfd¾ªÂäè¾bD@D\86¾\84\82ª\88¤\82¨\8aD@Drl``Dv9\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D¤¦dfd¾ªÂäè¾bD@D\86¾\88\82¨\82¾\84\92¨¦D@DpDv9\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D¤¦dfd¾ªÂäè¾bD@D\8e¾ \82¤\92¨²D@D\9cÞÜÊDvA\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D¤¦dfd¾ªÂäè¾bD@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDv6\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D¦¤\82\9aD@Dðàæ¾ÚÆоÊÚÆD@DààÆhh`¾`DvD\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@D¦òæ\82\86\8a¾\86ÞÚàÂÆè\8cØÂæÐD@Dðàæ¾æòæÂÆÊD@DààÆhh`¾`DvH\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@D¦òæ\82\86\8a¾\86ÞÚàÂÆè\8cØÂæÐD@D\8e¾ª¦\8a¾\92\9c¨\8a¤¤ª ¨D@D\8c\82\98¦\8aDvK\84æÄ®Òôtt\82ÈÈ ÊäÒàÐÊäÂØ@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØä¾bD@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØäD@DààÆhh`¾`DvB\84æÄ®ÒôttªàÈÂèÊ\86ÞÚàÞÜÊÜè@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØä¾bD@D\8e¾\9a\8a\9a¾¦\92´\8aD@Dp@\96\84DvS\84æÄ®ÒôttªàÈÂèʦ®@D¦®¾\8e\8a\9c\8a¤\82¨\8a¾\9a\8a\9a¨\8a¦¨D@D¨¤ª\8aD@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@DààÆhh`¾`DvS\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾\84\9e\9e¨\9a\8a\9aD@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØä¾bDvK\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾\84\9e\9e¨¾ \82¤D@D\86¾\84\82¦\8a\82\88\88¤DvT\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾\88\82¨\82¾\92\9c¦D@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØä¾bDvK\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾\88\82¨\82¾ \82¤D@D\86¾\84\82¦\8a\82\88\88¤DvT\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾\90\8a\82 ¾\92\9c¦D@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØä¾bDvK\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾\90\8a\82 ¾ \82¤D@D\86¾\84\82¦\8a\82\88\88¤DvW\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾ ¤\9e\8e¤\82\9a¾\92\9c¦D@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØä¾bDvN\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾ ¤\9e\8e¤\82\9a¾ \82¤D@D\86¾\84\82¦\8a\82\88\88¤DvU\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾¦¨\82\86\96¾\92\9c¦D@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØä¾bDvL\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾¦¨\82\86\96¾ \82¤D@D\86¾\84\82¦\8a\82\88\88¤DvJ\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾¦¨\88\92\9cD@D¤¦dfd¾ªÂäè¾bDvK\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾¦¨\88\9eª¨D@D¤¦dfd¾ªÂäè¾bDvH\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾¬\8a\86¨\9e¤¦¾\92\9c¦D@D¦¤\82\9aDvS\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àà¾\9aÊÚÞäò¾ààÆhh`¾`D@D¦®¾¬\8a\86¨\9e¤¦¾ \82¤D@D\86¾\9a\8a\9a\84\82¦\8a\82\88\88¤DvZ\84æÄ®ÒôttªàÈÂèʦ®@D¦®¾\8e\8a\9c\8a¤\82¨\8a¾ \8a¤\92 \90¨\8a¦¨D@D¨¤ª\8aD@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@DààÆhh`¾`DvW\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾\84\9e\9e¨\9a\8a\9aD@Dðàæ¾ÄäÂÚ¾Ò̾ÆÜèØä¾bDvO\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾\84\9e\9e¨¾ \82¤D@D\86¾\84\82¦\8a\82\88\88¤DvI\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾\88\82¨\82¾\92\9c¦D@D¦¤\82\9aDvT\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾\88\82¨\82¾ \82¤D@D\86¾\9a\8a\9a\84\82¦\8a\82\88\88¤DvI\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾\90\8a\82 ¾\92\9c¦D@D¦¤\82\9aDvT\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾\90\8a\82 ¾ \82¤D@D\86¾\9a\8a\9a\84\82¦\8a\82\88\88¤DvL\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾ ¤\9e\8e¤\82\9a¾\92\9c¦D@D¦¤\82\9aDvW\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾ ¤\9e\8e¤\82\9a¾ \82¤D@D\86¾\9a\8a\9a\84\82¦\8a\82\88\88¤DvJ\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾¦¨\82\86\96¾\92\9c¦D@D¦¤\82\9aDvU\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾¦¨\82\86\96¾ \82¤D@D\86¾\9a\8a\9a\84\82¦\8a\82\88\88¤DvN\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾¦¨\88\92\9cD@D¤¦dfd¾ªÂäè¾bDvO\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾¦¨\88\9eª¨D@D¤¦dfd¾ªÂäè¾bDvL\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾¬\8a\86¨\9e¤¦¾\92\9c¦D@D¦¤\82\9aDvW\84æÄ®ÒôttªàÈÂèʨÊæè\82àà@D¨Êæè\82àྠÊäÒàÐÊäÂؾààÆhh`¾`D@D¦®¾¬\8a\86¨\9e¤¦¾ \82¤D@D\86¾\9a\8a\9a\84\82¦\8a\82\88\88¤Dv
\ No newline at end of file
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.log b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.log
new file mode 100644 (file)
index 0000000..6c00f76
--- /dev/null
@@ -0,0 +1,99 @@
+No logfile was found.\r
+\r
+WARNING:EDK:1582 - IPNAME:plbv46_pcie INSTANCE:PCIe_Bridge - C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\system.mhs line 253 - deprecated core for architecture 'virtex5fx'!
+\r
+WARNING:EDK:1582 - IPNAME:xps_ethernetlite INSTANCE:Ethernet_MAC - C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\system.mhs line 298 - deprecated core for architecture 'virtex5fx'!
+\r
+Generating Block Diagram to Buffer 
+\r
+Generated Block Diagram SVG
+\r
+The project file (XMP) has changed on disk.
+\r
+WARNING:EDK:1582 - IPNAME:plbv46_pcie INSTANCE:PCIe_Bridge - C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\system.mhs line 253 - deprecated core for architecture 'virtex5fx'!
+\r
+WARNING:EDK:1582 - IPNAME:xps_ethernetlite INSTANCE:Ethernet_MAC - C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\system.mhs line 298 - deprecated core for architecture 'virtex5fx'!
+\r
+WARNING:EDK:1582 - IPNAME:plbv46_pcie INSTANCE:PCIe_Bridge - C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\_xps_tempmhsfilename.mhs line 239 - deprecated core for architecture 'virtex5fx'!
+\r
+WARNING:EDK:1582 - IPNAME:xps_ethernetlite INSTANCE:Ethernet_MAC - C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\_xps_tempmhsfilename.mhs line 284 - deprecated core for architecture 'virtex5fx'!
+\r
+At Local date and time: Tue Jun 30 18:34:41 2009
+ make -f system.make hwclean started...
+\r
+rm -f implementation/system.ngc\r
+rm -f platgen.log\r
+rm -f __xps/ise/_xmsgs/platgen.xmsgs\r
+rm -f implementation/system.bmm\r
+rm -f implementation/system.bit\r
+rm -f implementation/system.ncd\r
+rm -f implementation/system_bd.bmm \r
+rm -f implementation/system_map.ncd \r
+rm -f __xps/system_routed\r
+rm -rf implementation synthesis xst hdl\r
+rm -rf xst.srp system.srp\r
+rm -f __xps/ise/_xmsgs/bitinit.xmsgs\r
+\r
+\r
+Done!
+\r
+At Local date and time: Tue Jun 30 18:34:46 2009
+ make -f system.make bitsclean started...
+\r
+rm -f implementation/system.bit\r
+rm -f implementation/system.ncd\r
+rm -f implementation/system_bd.bmm \r
+rm -f implementation/system_map.ncd \r
+rm -f __xps/system_routed\r
+\r
+\r
+Done!
+\r
+At Local date and time: Tue Jun 30 18:34:52 2009
+ make -f system.make netlistclean started...
+\r
+rm -f implementation/system.ngc\r
+rm -f platgen.log\r
+rm -f __xps/ise/_xmsgs/platgen.xmsgs\r
+rm -f implementation/system.bmm\r
+\r
+\r
+Done!
+\r
+At Local date and time: Tue Jun 30 18:34:57 2009
+ make -f system.make libsclean started...
+\r
+rm -rf ppc440_0/\r
+rm -f libgen.log\r
+rm -f __xps/ise/_xmsgs/libgen.xmsgs\r
+\r
+\r
+Done!
+\r
+At Local date and time: Tue Jun 30 18:35:02 2009
+ make -f system.make programclean started...
+\r
+rm -f RTOSDemo/executable.elf \r
+\r
+\r
+Done!
+\r
+At Local date and time: Tue Jun 30 18:35:08 2009
+ make -f system.make swclean started...
+\r
+rm -rf ppc440_0/\r
+rm -f libgen.log\r
+rm -f __xps/ise/_xmsgs/libgen.xmsgs\r
+rm -f RTOSDemo/executable.elf \r
+\r
+\r
+Done!
+\r
+Writing filter settings....
+\r
+Done writing filter settings to:
+       C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\__xps\system.filters
+\r
+Done writing Tab View settings to:
+       C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\__xps\system.gui
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.make b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.make
new file mode 100644 (file)
index 0000000..1d8de4e
--- /dev/null
@@ -0,0 +1,277 @@
+#################################################################\r
+# Makefile generated by Xilinx Platform Studio \r
+# Project:C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\system.xmp\r
+#\r
+# WARNING : This file will be re-generated every time a command\r
+# to run a make target is invoked. So, any changes made to this  \r
+# file manually, will be lost when make is invoked next. \r
+#################################################################\r
+\r
+# Name of the Microprocessor system\r
+# The hardware specification of the system is in file :\r
+# C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\system.mhs\r
+# The software specification of the system is in file :\r
+# C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\system.mss\r
+\r
+include system_incl.make\r
+\r
+#################################################################\r
+# PHONY TARGETS\r
+#################################################################\r
+.PHONY: dummy\r
+.PHONY: netlistclean\r
+.PHONY: bitsclean\r
+.PHONY: simclean\r
+.PHONY: exporttosdk\r
+\r
+#################################################################\r
+# EXTERNAL TARGETS\r
+#################################################################\r
+all:\r
+       @echo "Makefile to build a Microprocessor system :"\r
+       @echo "Run make with any of the following targets"\r
+       @echo " "\r
+       @echo "  netlist  : Generates the netlist for the given MHS "\r
+       @echo "  bits     : Runs Implementation tools to generate the bitstream"\r
+       @echo "  exporttosdk: Export files to SDK"\r
+       @echo " "\r
+       @echo "  libs     : Configures the sw libraries for this system"\r
+       @echo "  program  : Compiles the program sources for all the processor instances"\r
+       @echo " "\r
+       @echo "  init_bram: Initializes bitstream with BRAM data"\r
+       @echo "  ace      : Generate ace file from bitstream and elf"\r
+       @echo "  download : Downloads the bitstream onto the board"\r
+       @echo " "\r
+       @echo "  sim      : Generates HDL simulation models and runs simulator for chosen simulation mode"\r
+       @echo "  simmodel : Generates HDL simulation models for chosen simulation mode"\r
+       @echo "  behavioral_model : Generates behavioral HDL models with BRAM initialization"\r
+       @echo "  structural_model : Generates structural simulation HDL models with BRAM initialization"\r
+       @echo "  timing   : Generates timing simulation HDL models with BRAM initialization"\r
+       @echo " "\r
+       @echo "  netlistclean: Deletes netlist"\r
+       @echo "  bitsclean: Deletes bit, ncd, bmm files"\r
+       @echo "  hwclean  : Deletes implementation dir"\r
+       @echo "  libsclean: Deletes sw libraries"\r
+       @echo "  programclean: Deletes compiled ELF files"\r
+       @echo "  swclean  : Deletes sw libraries and ELF files"\r
+       @echo "  simclean : Deletes simulation dir"\r
+       @echo "  clean    : Deletes all generated files/directories"\r
+       @echo " "\r
+       @echo "  make <target> : (Default)"\r
+       @echo "      Creates a Microprocessor system using default initializations"\r
+       @echo "      specified for each processor in MSS file"\r
+\r
+\r
+bits: $(SYSTEM_BIT)\r
+\r
+ace: $(SYSTEM_ACE)\r
+\r
+exporttosdk: $(SYSTEM_HW_HANDOFF_DEP)\r
+\r
+netlist: $(POSTSYN_NETLIST)\r
+\r
+libs: $(LIBRARIES)\r
+\r
+program: $(ALL_USER_ELF_FILES)\r
+\r
+download: $(DOWNLOAD_BIT) dummy\r
+       @echo "*********************************************"\r
+       @echo "Downloading Bitstream onto the target board"\r
+       @echo "*********************************************"\r
+       impact -batch etc/download.cmd\r
+\r
+init_bram: $(DOWNLOAD_BIT)\r
+\r
+sim: $(DEFAULT_SIM_SCRIPT)\r
+       cd simulation/behavioral; \\r
+       $(SIM_CMD)  &\r
+\r
+simmodel: $(DEFAULT_SIM_SCRIPT)\r
+\r
+behavioral_model: $(BEHAVIORAL_SIM_SCRIPT)\r
+\r
+structural_model: $(STRUCTURAL_SIM_SCRIPT)\r
+\r
+clean: hwclean libsclean programclean simclean\r
+       rm -f _impact.cmd\r
+\r
+hwclean: netlistclean bitsclean\r
+       rm -rf implementation synthesis xst hdl\r
+       rm -rf xst.srp $(SYSTEM).srp\r
+       rm -f __xps/ise/_xmsgs/bitinit.xmsgs\r
+\r
+netlistclean:\r
+       rm -f $(POSTSYN_NETLIST)\r
+       rm -f platgen.log\r
+       rm -f __xps/ise/_xmsgs/platgen.xmsgs\r
+       rm -f $(BMM_FILE)\r
+\r
+bitsclean:\r
+       rm -f $(SYSTEM_BIT)\r
+       rm -f implementation/$(SYSTEM).ncd\r
+       rm -f implementation/$(SYSTEM)_bd.bmm \r
+       rm -f implementation/$(SYSTEM)_map.ncd \r
+       rm -f __xps/$(SYSTEM)_routed\r
+\r
+simclean: \r
+       rm -rf simulation/behavioral\r
+       rm -f simgen.log\r
+       rm -f __xps/ise/_xmsgs/simgen.xmsgs\r
+\r
+swclean: libsclean programclean\r
+       @echo ""\r
+\r
+libsclean: $(LIBSCLEAN_TARGETS)\r
+       rm -f libgen.log\r
+       rm -f __xps/ise/_xmsgs/libgen.xmsgs\r
+\r
+programclean: $(PROGRAMCLEAN_TARGETS)\r
+\r
+#################################################################\r
+# SOFTWARE PLATFORM FLOW\r
+#################################################################\r
+\r
+\r
+$(LIBRARIES): $(MHSFILE) $(MSSFILE) __xps/libgen.opt\r
+       @echo "*********************************************"\r
+       @echo "Creating software libraries..."\r
+       @echo "*********************************************"\r
+       libgen $(LIBGEN_OPTIONS) $(MSSFILE)\r
+\r
+\r
+ppc440_0_libsclean:\r
+       rm -rf ppc440_0/\r
+\r
+#################################################################\r
+# SOFTWARE APPLICATION RTOSDEMO\r
+#################################################################\r
+\r
+RTOSDemo_program: $(RTOSDEMO_OUTPUT) \r
+\r
+$(RTOSDEMO_OUTPUT) : $(RTOSDEMO_SOURCES) $(RTOSDEMO_HEADERS) $(RTOSDEMO_LINKER_SCRIPT) \\r
+                    $(LIBRARIES) __xps/rtosdemo_compiler.opt\r
+       @mkdir -p $(RTOSDEMO_OUTPUT_DIR) \r
+       $(RTOSDEMO_CC) $(RTOSDEMO_CC_OPT) $(RTOSDEMO_SOURCES) -o $(RTOSDEMO_OUTPUT) \\r
+       $(RTOSDEMO_OTHER_CC_FLAGS) $(RTOSDEMO_INCLUDES) $(RTOSDEMO_LIBPATH) \\r
+       $(RTOSDEMO_CFLAGS) $(RTOSDEMO_LFLAGS) \r
+       $(RTOSDEMO_CC_SIZE) $(RTOSDEMO_OUTPUT) \r
+       @echo ""\r
+\r
+RTOSDemo_programclean:\r
+       rm -f $(RTOSDEMO_OUTPUT) \r
+\r
+#################################################################\r
+# BOOTLOOP ELF FILES\r
+#################################################################\r
+\r
+\r
+\r
+$(PPC440_0_BOOTLOOP): $(PPC440_BOOTLOOP)\r
+       @mkdir -p $(BOOTLOOP_DIR)\r
+       cp -f $(PPC440_BOOTLOOP) $(PPC440_0_BOOTLOOP)\r
+\r
+#################################################################\r
+# HARDWARE IMPLEMENTATION FLOW\r
+#################################################################\r
+\r
+\r
+$(BMM_FILE) \\r
+$(WRAPPER_NGC_FILES): $(MHSFILE) __xps/platgen.opt \\r
+                      $(CORE_STATE_DEVELOPMENT_FILES)\r
+       @echo "****************************************************"\r
+       @echo "Creating system netlist for hardware specification.."\r
+       @echo "****************************************************"\r
+       platgen $(PLATGEN_OPTIONS) $(MHSFILE)\r
+\r
+$(POSTSYN_NETLIST): $(WRAPPER_NGC_FILES)\r
+       @echo "Running synthesis..."\r
+       bash -c "cd synthesis; ./synthesis.sh"\r
+\r
+__xps/$(SYSTEM)_routed: $(FPGA_IMP_DEPENDENCY)\r
+       @echo "*********************************************"\r
+       @echo "Running Xilinx Implementation tools.."\r
+       @echo "*********************************************"\r
+       @cp -f $(UCF_FILE) implementation/$(SYSTEM).ucf\r
+       @cp -f etc/fast_runtime.opt implementation/xflow.opt\r
+       xflow -wd implementation -p $(DEVICE) -implement xflow.opt -ise ../__xps/ise/$(SYSTEM).ise $(SYSTEM).ngc\r
+       touch __xps/$(SYSTEM)_routed\r
+\r
+$(SYSTEM_BIT): __xps/$(SYSTEM)_routed $(BITGEN_UT_FILE)\r
+       xilperl $(NON_CYG_XILINX_EDK_DIR)/data/fpga_impl/observe_par.pl $(OBSERVE_PAR_OPTIONS) implementation/$(SYSTEM).par\r
+       @echo "*********************************************"\r
+       @echo "Running Bitgen.."\r
+       @echo "*********************************************"\r
+       @cp -f $(BITGEN_UT_FILE) implementation/bitgen.ut\r
+       cd implementation; bitgen -w -f bitgen.ut $(SYSTEM); cd ..\r
+\r
+$(DOWNLOAD_BIT): $(SYSTEM_BIT) $(BRAMINIT_ELF_FILES) __xps/bitinit.opt\r
+       @cp -f implementation/$(SYSTEM)_bd.bmm .\r
+       @echo "*********************************************"\r
+       @echo "Initializing BRAM contents of the bitstream"\r
+       @echo "*********************************************"\r
+       bitinit -p $(DEVICE) $(MHSFILE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_FILE_ARGS) \\r
+       -bt $(SYSTEM_BIT) -o $(DOWNLOAD_BIT)\r
+       @rm -f $(SYSTEM)_bd.bmm\r
+\r
+$(SYSTEM_ACE): $(DOWNLOAD_BIT) $(RTOSDEMO_OUTPUT) \r
+       @echo "*********************************************"\r
+       @echo "Creating system ace file"\r
+       @echo "*********************************************"\r
+       xmd -tcl genace.tcl -jprog -hw $(DOWNLOAD_BIT) -elf $(RTOSDEMO_OUTPUT)  -target ppc_hw  -ace $(SYSTEM_ACE)\r
+\r
+#################################################################\r
+# EXPORT_TO_SDK FLOW\r
+#################################################################\r
+\r
+\r
+$(SYSTEM_HW_HANDOFF): $(MHSFILE) __xps/platgen.opt\r
+       mkdir -p $(SDK_EXPORT_DIR)\r
+       psf2Edward.exe -inp $(SYSTEM).xmp -xml $(SDK_EXPORT_DIR)/$(SYSTEM).xml $(SEARCHPATHOPT)\r
+       xdsgen.exe -inp $(SYSTEM).xmp -report $(SDK_EXPORT_DIR)/$(SYSTEM).html $(SEARCHPATHOPT) -make_docs_local\r
+\r
+$(SYSTEM_HW_HANDOFF_BIT): $(SYSTEM_BIT)\r
+       @rm -rf $(SYSTEM_HW_HANDOFF_BIT)\r
+       @cp -f $(SYSTEM_BIT) $(SDK_EXPORT_DIR)/\r
+\r
+$(SYSTEM_HW_HANDOFF_BMM): implementation/$(SYSTEM)_bd.bmm\r
+       @rm -rf $(SYSTEM_HW_HANDOFF_BMM)\r
+       @cp -f implementation/$(SYSTEM)_bd.bmm $(SDK_EXPORT_DIR)/\r
+\r
+#################################################################\r
+# SIMULATION FLOW\r
+#################################################################\r
+\r
+\r
+################## BEHAVIORAL SIMULATION ##################\r
+\r
+$(BEHAVIORAL_SIM_SCRIPT): $(MHSFILE) __xps/simgen.opt \\r
+                          $(BRAMINIT_ELF_FILES)\r
+       @echo "*********************************************"\r
+       @echo "Creating behavioral simulation models..."\r
+       @echo "*********************************************"\r
+       simgen $(SIMGEN_OPTIONS) -m behavioral $(MHSFILE)\r
+\r
+################## STRUCTURAL SIMULATION ##################\r
+\r
+$(STRUCTURAL_SIM_SCRIPT): $(WRAPPER_NGC_FILES) __xps/simgen.opt \\r
+                          $(BRAMINIT_ELF_FILES)\r
+       @echo "*********************************************"\r
+       @echo "Creating structural simulation models..."\r
+       @echo "*********************************************"\r
+       simgen $(SIMGEN_OPTIONS) -sd implementation -m structural $(MHSFILE)\r
+\r
+\r
+################## TIMING SIMULATION ##################\r
+\r
+implementation/$(SYSTEM).ncd: __xps/$(SYSTEM)_routed\r
+\r
+$(TIMING_SIM_SCRIPT): implementation/$(SYSTEM).ncd __xps/simgen.opt \\r
+                      $(BRAMINIT_ELF_FILES)\r
+       @echo "*********************************************"\r
+       @echo "Creating timing simulation models..."\r
+       @echo "*********************************************"\r
+       simgen $(SIMGEN_OPTIONS) -sd implementation -m timing $(MHSFILE)\r
+\r
+dummy:\r
+       @echo ""\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.mhs b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.mhs
new file mode 100644 (file)
index 0000000..8431bfd
--- /dev/null
@@ -0,0 +1,474 @@
+\r
+# ##############################################################################\r
+# Created by Base System Builder Wizard for Xilinx EDK 11.1 Build EDK_L.29.1\r
+# Sat Jun 13 13:14:11 2009\r
+# Target Board:  Xilinx Virtex 5 ML507 Evaluation Platform Rev A\r
+# Family:    virtex5\r
+# Device:    xc5vfx70t\r
+# Package:   ff1136\r
+# Speed Grade:  -1\r
+# Processor number: 1\r
+# Processor 1: ppc440_0\r
+# Processor clock frequency: 125.0\r
+# Bus clock frequency: 125.0\r
+# Debug Interface: FPGA JTAG\r
+# ##############################################################################\r
+ PARAMETER VERSION = 2.1.0\r
+\r
+\r
+ PORT fpga_0_RS232_Uart_1_RX_pin = fpga_0_RS232_Uart_1_RX_pin, DIR = I\r
+ PORT fpga_0_RS232_Uart_1_TX_pin = fpga_0_RS232_Uart_1_TX_pin, DIR = O\r
+ PORT fpga_0_LEDs_8Bit_GPIO_IO_pin = fpga_0_LEDs_8Bit_GPIO_IO_pin, DIR = IO, VEC = [0:7]\r
+ PORT fpga_0_LEDs_Positions_GPIO_IO_pin = fpga_0_LEDs_Positions_GPIO_IO_pin, DIR = IO, VEC = [0:4]\r
+ PORT fpga_0_Push_Buttons_5Bit_GPIO_IO_pin = fpga_0_Push_Buttons_5Bit_GPIO_IO_pin, DIR = IO, VEC = [0:4]\r
+ PORT fpga_0_DIP_Switches_8Bit_GPIO_IO_pin = fpga_0_DIP_Switches_8Bit_GPIO_IO_pin, DIR = IO, VEC = [0:7]\r
+ PORT fpga_0_IIC_EEPROM_Sda_pin = fpga_0_IIC_EEPROM_Sda_pin, DIR = IO\r
+ PORT fpga_0_IIC_EEPROM_Scl_pin = fpga_0_IIC_EEPROM_Scl_pin, DIR = IO\r
+ PORT fpga_0_SRAM_Mem_A_pin = fpga_0_SRAM_Mem_A_pin_vslice_7_30_concat, DIR = O, VEC = [7:30]\r
+ PORT fpga_0_SRAM_Mem_CEN_pin = fpga_0_SRAM_Mem_CEN_pin, DIR = O\r
+ PORT fpga_0_SRAM_Mem_OEN_pin = fpga_0_SRAM_Mem_OEN_pin, DIR = O\r
+ PORT fpga_0_SRAM_Mem_WEN_pin = fpga_0_SRAM_Mem_WEN_pin, DIR = O\r
+ PORT fpga_0_SRAM_Mem_BEN_pin = fpga_0_SRAM_Mem_BEN_pin, DIR = O, VEC = [0:3]\r
+ PORT fpga_0_SRAM_Mem_ADV_LDN_pin = fpga_0_SRAM_Mem_ADV_LDN_pin, DIR = O\r
+ PORT fpga_0_SRAM_Mem_DQ_pin = fpga_0_SRAM_Mem_DQ_pin, DIR = IO, VEC = [0:31]\r
+ PORT fpga_0_SRAM_ZBT_CLK_OUT_pin = SRAM_CLK_OUT_s, DIR = O\r
+ PORT fpga_0_SRAM_ZBT_CLK_FB_pin = SRAM_CLK_FB_s, DIR = I, SIGIS = CLK, CLK_FREQ = 125000000\r
+ PORT fpga_0_PCIe_Bridge_RXN_pin = fpga_0_PCIe_Bridge_RXN_pin, DIR = I\r
+ PORT fpga_0_PCIe_Bridge_RXP_pin = fpga_0_PCIe_Bridge_RXP_pin, DIR = I\r
+ PORT fpga_0_PCIe_Bridge_TXN_pin = fpga_0_PCIe_Bridge_TXN_pin, DIR = O\r
+ PORT fpga_0_PCIe_Bridge_TXP_pin = fpga_0_PCIe_Bridge_TXP_pin, DIR = O\r
+ PORT fpga_0_Ethernet_MAC_PHY_tx_clk_pin = fpga_0_Ethernet_MAC_PHY_tx_clk_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_rx_clk_pin = fpga_0_Ethernet_MAC_PHY_rx_clk_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_crs_pin = fpga_0_Ethernet_MAC_PHY_crs_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_dv_pin = fpga_0_Ethernet_MAC_PHY_dv_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_rx_data_pin = fpga_0_Ethernet_MAC_PHY_rx_data_pin, DIR = I, VEC = [3:0]\r
+ PORT fpga_0_Ethernet_MAC_PHY_col_pin = fpga_0_Ethernet_MAC_PHY_col_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_rx_er_pin = fpga_0_Ethernet_MAC_PHY_rx_er_pin, DIR = I\r
+ PORT fpga_0_Ethernet_MAC_PHY_rst_n_pin = fpga_0_Ethernet_MAC_PHY_rst_n_pin, DIR = O\r
+ PORT fpga_0_Ethernet_MAC_PHY_tx_en_pin = fpga_0_Ethernet_MAC_PHY_tx_en_pin, DIR = O\r
+ PORT fpga_0_Ethernet_MAC_PHY_tx_data_pin = fpga_0_Ethernet_MAC_PHY_tx_data_pin, DIR = O, VEC = [3:0]\r
+ PORT fpga_0_Ethernet_MAC_MDINT_pin = fpga_0_Ethernet_MAC_MDINT_pin, DIR = I, SIGIS = INTERRUPT, SENSITIVITY = LEVEL_LOW, INTERRUPT_PRIORITY = MEDIUM\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_DQ_pin = fpga_0_DDR2_SDRAM_DDR2_DQ_pin, DIR = IO, VEC = [63:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_DQS_pin = fpga_0_DDR2_SDRAM_DDR2_DQS_pin, DIR = IO, VEC = [7:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin = fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin, DIR = IO, VEC = [7:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_A_pin = fpga_0_DDR2_SDRAM_DDR2_A_pin, DIR = O, VEC = [12:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_BA_pin = fpga_0_DDR2_SDRAM_DDR2_BA_pin, DIR = O, VEC = [1:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_RAS_N_pin = fpga_0_DDR2_SDRAM_DDR2_RAS_N_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CAS_N_pin = fpga_0_DDR2_SDRAM_DDR2_CAS_N_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_WE_N_pin = fpga_0_DDR2_SDRAM_DDR2_WE_N_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CS_N_pin = fpga_0_DDR2_SDRAM_DDR2_CS_N_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_ODT_pin = fpga_0_DDR2_SDRAM_DDR2_ODT_pin, DIR = O, VEC = [1:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CKE_pin = fpga_0_DDR2_SDRAM_DDR2_CKE_pin, DIR = O\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_DM_pin = fpga_0_DDR2_SDRAM_DDR2_DM_pin, DIR = O, VEC = [7:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CK_pin = fpga_0_DDR2_SDRAM_DDR2_CK_pin, DIR = O, VEC = [1:0]\r
+ PORT fpga_0_DDR2_SDRAM_DDR2_CK_N_pin = fpga_0_DDR2_SDRAM_DDR2_CK_N_pin, DIR = O, VEC = [1:0]\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPA_pin = fpga_0_SysACE_CompactFlash_SysACE_MPA_pin, DIR = O, VEC = [6:0]\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_CLK_pin = fpga_0_SysACE_CompactFlash_SysACE_CLK_pin, DIR = I\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin = fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin, DIR = I\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_CEN_pin = fpga_0_SysACE_CompactFlash_SysACE_CEN_pin, DIR = O\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_OEN_pin = fpga_0_SysACE_CompactFlash_SysACE_OEN_pin, DIR = O\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_WEN_pin = fpga_0_SysACE_CompactFlash_SysACE_WEN_pin, DIR = O\r
+ PORT fpga_0_SysACE_CompactFlash_SysACE_MPD_pin = fpga_0_SysACE_CompactFlash_SysACE_MPD_pin, DIR = IO, VEC = [15:0]\r
+ PORT fpga_0_clk_1_sys_clk_pin = dcm_clk_s, DIR = I, SIGIS = CLK, CLK_FREQ = 100000000\r
+ PORT fpga_0_rst_1_sys_rst_pin = sys_rst_s, DIR = I, SIGIS = RST, RST_POLARITY = 0\r
+ PORT fpga_0_PCIe_Diff_Clk_IBUF_DS_P_pin = PCIe_Diff_Clk, DIR = I, DIFFERENTIAL_POLARITY = P, SIGIS = CLK\r
+ PORT fpga_0_PCIe_Diff_Clk_IBUF_DS_N_pin = PCIe_Diff_Clk, DIR = I, DIFFERENTIAL_POLARITY = N, SIGIS = CLK\r
+\r
+\r
+BEGIN ppc440_virtex5\r
+ PARAMETER INSTANCE = ppc440_0\r
+ PARAMETER C_IDCR_BASEADDR = 0b0000000000\r
+ PARAMETER C_IDCR_HIGHADDR = 0b0011111111\r
+ PARAMETER C_APU_CONTROL = 0b00000010000000001\r
+ PARAMETER C_PPC440MC_ROW_CONFLICT_MASK = 0x003FFE00\r
+ PARAMETER C_PPC440MC_BANK_CONFLICT_MASK = 0x00C00000\r
+ PARAMETER C_PPC440MC_CONTROL = 0xF810008F\r
+ PARAMETER C_SPLB0_USE_MPLB_ADDR = 1\r
+ PARAMETER C_SPLB0_NUM_MPLB_ADDR_RNG = 1\r
+ PARAMETER C_SPLB1_NUM_MPLB_ADDR_RNG = 0\r
+ PARAMETER HW_VER = 1.01.a\r
+ PARAMETER C_SPLB0_RNG0_MPLB_BASEADDR = 0x80000000\r
+ PARAMETER C_SPLB0_RNG0_MPLB_HIGHADDR = 0xffffffff\r
+ PARAMETER C_SPLB0_RNG_MC_BASEADDR = 0x00000000\r
+ PARAMETER C_SPLB0_RNG_MC_HIGHADDR = 0x0fffffff\r
+ BUS_INTERFACE MPLB = plb_v46_0\r
+ BUS_INTERFACE SPLB0 = ppc440_0_SPLB0\r
+ BUS_INTERFACE PPC440MC = ppc440_0_PPC440MC\r
+ BUS_INTERFACE MFCB = ppc440_0_fcb_v20\r
+ BUS_INTERFACE JTAGPPC = ppc440_0_jtagppc_bus\r
+ BUS_INTERFACE RESETPPC = ppc_reset_bus\r
+ PORT CPMC440CLK = clk_125_0000MHzPLL0\r
+ PORT CPMINTERCONNECTCLK = clk_125_0000MHzPLL0\r
+ PORT CPMINTERCONNECTCLKNTO1 = net_vcc\r
+ PORT EICC440EXTIRQ = ppc440_0_EICC440EXTIRQ\r
+ PORT CPMMCCLK = clk_125_0000MHzPLL0_ADJUST\r
+ PORT CPMPPCMPLBCLK = clk_125_0000MHzPLL0_ADJUST\r
+ PORT CPMPPCS0PLBCLK = clk_125_0000MHzPLL0_ADJUST\r
+END\r
+\r
+BEGIN plb_v46\r
+ PARAMETER INSTANCE = plb_v46_0\r
+ PARAMETER C_DCR_INTFCE = 0\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.04.a\r
+ PORT PLB_Clk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT SYS_Rst = sys_bus_reset\r
+END\r
+\r
+BEGIN xps_bram_if_cntlr\r
+ PARAMETER INSTANCE = xps_bram_if_cntlr_1\r
+ PARAMETER C_SPLB_NATIVE_DWIDTH = 64\r
+ PARAMETER C_SPLB_SUPPORT_BURSTS = 1\r
+ PARAMETER C_SPLB_P2P = 0\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.00.b\r
+ PARAMETER C_BASEADDR = 0xffffe000\r
+ PARAMETER C_HIGHADDR = 0xffffffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ BUS_INTERFACE PORTA = xps_bram_if_cntlr_1_port\r
+END\r
+\r
+BEGIN bram_block\r
+ PARAMETER INSTANCE = xps_bram_if_cntlr_1_bram\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.00.a\r
+ BUS_INTERFACE PORTA = xps_bram_if_cntlr_1_port\r
+END\r
+\r
+BEGIN xps_uartlite\r
+ PARAMETER INSTANCE = RS232_Uart_1\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_BAUDRATE = 9600\r
+ PARAMETER C_DATA_BITS = 8\r
+ PARAMETER C_USE_PARITY = 0\r
+ PARAMETER C_ODD_PARITY = 0\r
+ PARAMETER HW_VER = 1.01.a\r
+ PARAMETER C_BASEADDR = 0x84000000\r
+ PARAMETER C_HIGHADDR = 0x8400ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT RX = fpga_0_RS232_Uart_1_RX_pin\r
+ PORT TX = fpga_0_RS232_Uart_1_TX_pin\r
+ PORT Interrupt = RS232_Uart_1_Interrupt\r
+END\r
+\r
+BEGIN xps_gpio\r
+ PARAMETER INSTANCE = LEDs_8Bit\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_ALL_INPUTS = 0\r
+ PARAMETER C_GPIO_WIDTH = 8\r
+ PARAMETER C_INTERRUPT_PRESENT = 0\r
+ PARAMETER C_IS_DUAL = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81440000\r
+ PARAMETER C_HIGHADDR = 0x8144ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT GPIO_IO = fpga_0_LEDs_8Bit_GPIO_IO_pin\r
+END\r
+\r
+BEGIN xps_gpio\r
+ PARAMETER INSTANCE = LEDs_Positions\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_ALL_INPUTS = 0\r
+ PARAMETER C_GPIO_WIDTH = 5\r
+ PARAMETER C_INTERRUPT_PRESENT = 0\r
+ PARAMETER C_IS_DUAL = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81420000\r
+ PARAMETER C_HIGHADDR = 0x8142ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT GPIO_IO = fpga_0_LEDs_Positions_GPIO_IO_pin\r
+END\r
+\r
+BEGIN xps_gpio\r
+ PARAMETER INSTANCE = Push_Buttons_5Bit\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_ALL_INPUTS = 1\r
+ PARAMETER C_GPIO_WIDTH = 5\r
+ PARAMETER C_INTERRUPT_PRESENT = 0\r
+ PARAMETER C_IS_DUAL = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81400000\r
+ PARAMETER C_HIGHADDR = 0x8140ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT GPIO_IO = fpga_0_Push_Buttons_5Bit_GPIO_IO_pin\r
+END\r
+\r
+BEGIN xps_gpio\r
+ PARAMETER INSTANCE = DIP_Switches_8Bit\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_ALL_INPUTS = 1\r
+ PARAMETER C_GPIO_WIDTH = 8\r
+ PARAMETER C_INTERRUPT_PRESENT = 0\r
+ PARAMETER C_IS_DUAL = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81460000\r
+ PARAMETER C_HIGHADDR = 0x8146ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT GPIO_IO = fpga_0_DIP_Switches_8Bit_GPIO_IO_pin\r
+END\r
+\r
+BEGIN xps_iic\r
+ PARAMETER INSTANCE = IIC_EEPROM\r
+ PARAMETER C_IIC_FREQ = 100000\r
+ PARAMETER C_TEN_BIT_ADR = 0\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 2.01.a\r
+ PARAMETER C_BASEADDR = 0x81600000\r
+ PARAMETER C_HIGHADDR = 0x8160ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT Sda = fpga_0_IIC_EEPROM_Sda_pin\r
+ PORT Scl = fpga_0_IIC_EEPROM_Scl_pin\r
+END\r
+\r
+BEGIN xps_mch_emc\r
+ PARAMETER INSTANCE = SRAM\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_NUM_BANKS_MEM = 1\r
+ PARAMETER C_NUM_CHANNELS = 0\r
+ PARAMETER C_MEM0_WIDTH = 32\r
+ PARAMETER C_MAX_MEM_WIDTH = 32\r
+ PARAMETER C_INCLUDE_DATAWIDTH_MATCHING_0 = 0\r
+ PARAMETER C_SYNCH_MEM_0 = 1\r
+ PARAMETER C_TCEDV_PS_MEM_0 = 0\r
+ PARAMETER C_TAVDV_PS_MEM_0 = 0\r
+ PARAMETER C_THZCE_PS_MEM_0 = 0\r
+ PARAMETER C_THZOE_PS_MEM_0 = 0\r
+ PARAMETER C_TWC_PS_MEM_0 = 0\r
+ PARAMETER C_TWP_PS_MEM_0 = 0\r
+ PARAMETER C_TLZWE_PS_MEM_0 = 0\r
+ PARAMETER HW_VER = 3.00.a\r
+ PARAMETER C_MEM0_BASEADDR = 0xf8000000\r
+ PARAMETER C_MEM0_HIGHADDR = 0xf80fffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT RdClk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT Mem_A = 0b0000000 & fpga_0_SRAM_Mem_A_pin_vslice_7_30_concat & 0b0\r
+ PORT Mem_CEN = fpga_0_SRAM_Mem_CEN_pin\r
+ PORT Mem_OEN = fpga_0_SRAM_Mem_OEN_pin\r
+ PORT Mem_WEN = fpga_0_SRAM_Mem_WEN_pin\r
+ PORT Mem_BEN = fpga_0_SRAM_Mem_BEN_pin\r
+ PORT Mem_ADV_LDN = fpga_0_SRAM_Mem_ADV_LDN_pin\r
+ PORT Mem_DQ = fpga_0_SRAM_Mem_DQ_pin\r
+END\r
+\r
+BEGIN plbv46_pcie\r
+ PARAMETER INSTANCE = PCIe_Bridge\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER C_IPIFBAR_NUM = 2\r
+ PARAMETER C_PCIBAR_NUM = 1\r
+ PARAMETER C_DEVICE_ID = 0x0505\r
+ PARAMETER C_VENDOR_ID = 0x10EE\r
+ PARAMETER C_CLASS_CODE = 0x058000\r
+ PARAMETER C_REV_ID = 0x00\r
+ PARAMETER C_SUBSYSTEM_ID = 0x0000\r
+ PARAMETER C_SUBSYSTEM_VENDOR_ID = 0x0000\r
+ PARAMETER C_COMP_TIMEOUT = 1\r
+ PARAMETER C_IPIFBAR2PCIBAR_0 = 0x00000000\r
+ PARAMETER C_IPIFBAR2PCIBAR_1 = 0x00000000\r
+ PARAMETER C_PCIBAR2IPIFBAR_0 = 0xf8000000\r
+ PARAMETER C_PCIBAR2IPIFBAR_1 = 0x00000000\r
+ PARAMETER C_PCIBAR_LEN_0 = 20\r
+ PARAMETER C_PCIBAR_LEN_1 = 28\r
+ PARAMETER C_BOARD = ml507\r
+ PARAMETER HW_VER = 3.00.b\r
+ PARAMETER C_BASEADDR = 0x85c00000\r
+ PARAMETER C_HIGHADDR = 0x85c0ffff\r
+ PARAMETER C_IPIFBAR_0 = 0xc0000000\r
+ PARAMETER C_IPIFBAR_HIGHADDR_0 = 0xdfffffff\r
+ PARAMETER C_IPIFBAR_1 = 0xe0000000\r
+ PARAMETER C_IPIFBAR_HIGHADDR_1 = 0xefffffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ BUS_INTERFACE MPLB = ppc440_0_SPLB0\r
+ PORT PERSTN = net_vcc\r
+ PORT REFCLK = PCIe_Diff_Clk\r
+ PORT RXN = fpga_0_PCIe_Bridge_RXN_pin\r
+ PORT RXP = fpga_0_PCIe_Bridge_RXP_pin\r
+ PORT TXN = fpga_0_PCIe_Bridge_TXN_pin\r
+ PORT TXP = fpga_0_PCIe_Bridge_TXP_pin\r
+ PORT MSI_request = net_gnd\r
+END\r
+\r
+BEGIN plb_v46\r
+ PARAMETER INSTANCE = ppc440_0_SPLB0\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.04.a\r
+ PORT PLB_Clk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT SYS_Rst = sys_bus_reset\r
+END\r
+\r
+BEGIN xps_ethernetlite\r
+ PARAMETER INSTANCE = Ethernet_MAC\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 2.01.a\r
+ PARAMETER C_BASEADDR = 0x81000000\r
+ PARAMETER C_HIGHADDR = 0x8100ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT PHY_tx_clk = fpga_0_Ethernet_MAC_PHY_tx_clk_pin\r
+ PORT PHY_rx_clk = fpga_0_Ethernet_MAC_PHY_rx_clk_pin\r
+ PORT PHY_crs = fpga_0_Ethernet_MAC_PHY_crs_pin\r
+ PORT PHY_dv = fpga_0_Ethernet_MAC_PHY_dv_pin\r
+ PORT PHY_rx_data = fpga_0_Ethernet_MAC_PHY_rx_data_pin\r
+ PORT PHY_col = fpga_0_Ethernet_MAC_PHY_col_pin\r
+ PORT PHY_rx_er = fpga_0_Ethernet_MAC_PHY_rx_er_pin\r
+ PORT PHY_rst_n = fpga_0_Ethernet_MAC_PHY_rst_n_pin\r
+ PORT PHY_tx_en = fpga_0_Ethernet_MAC_PHY_tx_en_pin\r
+ PORT PHY_tx_data = fpga_0_Ethernet_MAC_PHY_tx_data_pin\r
+END\r
+\r
+BEGIN ppc440mc_ddr2\r
+ PARAMETER INSTANCE = DDR2_SDRAM\r
+ PARAMETER C_DDR_BAWIDTH = 2\r
+ PARAMETER C_NUM_CLK_PAIRS = 2\r
+ PARAMETER C_DDR_DWIDTH = 64\r
+ PARAMETER C_DDR_CAWIDTH = 10\r
+ PARAMETER C_NUM_RANKS_MEM = 1\r
+ PARAMETER C_CS_BITS = 0\r
+ PARAMETER C_DDR_DM_WIDTH = 8\r
+ PARAMETER C_DQ_BITS = 8\r
+ PARAMETER C_DDR2_ODT_WIDTH = 2\r
+ PARAMETER C_DDR2_ADDT_LAT = 0\r
+ PARAMETER C_INCLUDE_ECC_SUPPORT = 0\r
+ PARAMETER C_DDR2_ODT_SETTING = 1\r
+ PARAMETER C_DQS_BITS = 3\r
+ PARAMETER C_DDR_DQS_WIDTH = 8\r
+ PARAMETER C_DDR_RAWIDTH = 13\r
+ PARAMETER C_DDR_BURST_LENGTH = 4\r
+ PARAMETER C_DDR_CAS_LAT = 4\r
+ PARAMETER C_REG_DIMM = 0\r
+ PARAMETER C_MIB_MC_CLOCK_RATIO = 1\r
+ PARAMETER C_DDR_TREFI = 3900\r
+ PARAMETER C_DDR_TRAS = 40000\r
+ PARAMETER C_DDR_TRCD = 15000\r
+ PARAMETER C_DDR_TRFC = 75000\r
+ PARAMETER C_DDR_TRP = 15000\r
+ PARAMETER C_DDR_TRTP = 7500\r
+ PARAMETER C_DDR_TWR = 15000\r
+ PARAMETER C_DDR_TWTR = 7500\r
+ PARAMETER C_MC_MIBCLK_PERIOD_PS = 8000\r
+ PARAMETER C_IDEL_HIGH_PERF = TRUE\r
+ PARAMETER C_NUM_IDELAYCTRL = 3\r
+ PARAMETER C_IDELAYCTRL_LOC = IDELAYCTRL_X0Y6-IDELAYCTRL_X0Y2-IDELAYCTRL_X0Y1\r
+ PARAMETER C_DQS_IO_COL = 0b000000000000000000\r
+ PARAMETER C_DQ_IO_MS = 0b000000000111010100111101000011110001111000101110110000111100000110111100\r
+ PARAMETER HW_VER = 2.00.b\r
+ PARAMETER C_MEM_BASEADDR = 0x00000000\r
+ PARAMETER C_MEM_HIGHADDR = 0x0fffffff\r
+ BUS_INTERFACE PPC440MC = ppc440_0_PPC440MC\r
+ PORT mc_mibclk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT mi_mcclk90 = clk_125_0000MHz90PLL0_ADJUST\r
+ PORT mi_mcreset = sys_bus_reset\r
+ PORT mi_mcclkdiv2 = clk_62_5000MHzPLL0_ADJUST\r
+ PORT mi_mcclk_200 = clk_200_0000MHz\r
+ PORT DDR2_DQ = fpga_0_DDR2_SDRAM_DDR2_DQ_pin\r
+ PORT DDR2_DQS = fpga_0_DDR2_SDRAM_DDR2_DQS_pin\r
+ PORT DDR2_DQS_N = fpga_0_DDR2_SDRAM_DDR2_DQS_N_pin\r
+ PORT DDR2_A = fpga_0_DDR2_SDRAM_DDR2_A_pin\r
+ PORT DDR2_BA = fpga_0_DDR2_SDRAM_DDR2_BA_pin\r
+ PORT DDR2_RAS_N = fpga_0_DDR2_SDRAM_DDR2_RAS_N_pin\r
+ PORT DDR2_CAS_N = fpga_0_DDR2_SDRAM_DDR2_CAS_N_pin\r
+ PORT DDR2_WE_N = fpga_0_DDR2_SDRAM_DDR2_WE_N_pin\r
+ PORT DDR2_CS_N = fpga_0_DDR2_SDRAM_DDR2_CS_N_pin\r
+ PORT DDR2_ODT = fpga_0_DDR2_SDRAM_DDR2_ODT_pin\r
+ PORT DDR2_CKE = fpga_0_DDR2_SDRAM_DDR2_CKE_pin\r
+ PORT DDR2_DM = fpga_0_DDR2_SDRAM_DDR2_DM_pin\r
+ PORT DDR2_CK = fpga_0_DDR2_SDRAM_DDR2_CK_pin\r
+ PORT DDR2_CK_N = fpga_0_DDR2_SDRAM_DDR2_CK_N_pin\r
+END\r
+\r
+BEGIN xps_sysace\r
+ PARAMETER INSTANCE = SysACE_CompactFlash\r
+ PARAMETER C_MEM_WIDTH = 16\r
+ PARAMETER C_FAMILY = virtex5\r
+ PARAMETER HW_VER = 1.01.a\r
+ PARAMETER C_BASEADDR = 0x83600000\r
+ PARAMETER C_HIGHADDR = 0x8360ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT SysACE_MPA = fpga_0_SysACE_CompactFlash_SysACE_MPA_pin\r
+ PORT SysACE_CLK = fpga_0_SysACE_CompactFlash_SysACE_CLK_pin\r
+ PORT SysACE_MPIRQ = fpga_0_SysACE_CompactFlash_SysACE_MPIRQ_pin\r
+ PORT SysACE_CEN = fpga_0_SysACE_CompactFlash_SysACE_CEN_pin\r
+ PORT SysACE_OEN = fpga_0_SysACE_CompactFlash_SysACE_OEN_pin\r
+ PORT SysACE_WEN = fpga_0_SysACE_CompactFlash_SysACE_WEN_pin\r
+ PORT SysACE_MPD = fpga_0_SysACE_CompactFlash_SysACE_MPD_pin\r
+END\r
+\r
+BEGIN fcb_v20\r
+ PARAMETER INSTANCE = ppc440_0_fcb_v20\r
+ PARAMETER HW_VER = 1.00.a\r
+ PORT FCB_CLK = clk_125_0000MHzPLL0_ADJUST\r
+ PORT SYS_RST = sys_bus_reset\r
+END\r
+\r
+BEGIN apu_fpu_virtex5\r
+ PARAMETER INSTANCE = ppc440_0_apu_fpu_virtex5\r
+ PARAMETER C_DOUBLE_PRECISION = 0\r
+ PARAMETER HW_VER = 1.01.a\r
+ BUS_INTERFACE SFCB2 = ppc440_0_fcb_v20\r
+END\r
+\r
+BEGIN clock_generator\r
+ PARAMETER INSTANCE = clock_generator_0\r
+ PARAMETER C_CLKIN_FREQ = 100000000\r
+ PARAMETER C_CLKFBIN_FREQ = 125000000\r
+ PARAMETER C_CLKOUT0_FREQ = 125000000\r
+ PARAMETER C_CLKOUT0_PHASE = 90\r
+ PARAMETER C_CLKOUT0_GROUP = PLL0_ADJUST\r
+ PARAMETER C_CLKOUT0_BUF = TRUE\r
+ PARAMETER C_CLKOUT1_FREQ = 125000000\r
+ PARAMETER C_CLKOUT1_PHASE = 0\r
+ PARAMETER C_CLKOUT1_GROUP = PLL0\r
+ PARAMETER C_CLKOUT1_BUF = TRUE\r
+ PARAMETER C_CLKOUT2_FREQ = 125000000\r
+ PARAMETER C_CLKOUT2_PHASE = 0\r
+ PARAMETER C_CLKOUT2_GROUP = PLL0_ADJUST\r
+ PARAMETER C_CLKOUT2_BUF = TRUE\r
+ PARAMETER C_CLKOUT3_FREQ = 200000000\r
+ PARAMETER C_CLKOUT3_PHASE = 0\r
+ PARAMETER C_CLKOUT3_GROUP = NONE\r
+ PARAMETER C_CLKOUT3_BUF = TRUE\r
+ PARAMETER C_CLKOUT4_FREQ = 62500000\r
+ PARAMETER C_CLKOUT4_PHASE = 0\r
+ PARAMETER C_CLKOUT4_GROUP = PLL0_ADJUST\r
+ PARAMETER C_CLKOUT4_BUF = TRUE\r
+ PARAMETER C_CLKFBOUT_FREQ = 125000000\r
+ PARAMETER C_CLKFBOUT_BUF = TRUE\r
+ PARAMETER HW_VER = 3.01.a\r
+ PORT CLKIN = dcm_clk_s\r
+ PORT CLKFBIN = SRAM_CLK_FB_s\r
+ PORT CLKOUT0 = clk_125_0000MHz90PLL0_ADJUST\r
+ PORT CLKOUT1 = clk_125_0000MHzPLL0\r
+ PORT CLKOUT2 = clk_125_0000MHzPLL0_ADJUST\r
+ PORT CLKOUT3 = clk_200_0000MHz\r
+ PORT CLKOUT4 = clk_62_5000MHzPLL0_ADJUST\r
+ PORT CLKFBOUT = SRAM_CLK_OUT_s\r
+ PORT RST = net_gnd\r
+ PORT LOCKED = Dcm_all_locked\r
+END\r
+\r
+BEGIN jtagppc_cntlr\r
+ PARAMETER INSTANCE = jtagppc_cntlr_inst\r
+ PARAMETER HW_VER = 2.01.c\r
+ BUS_INTERFACE JTAGPPC0 = ppc440_0_jtagppc_bus\r
+END\r
+\r
+BEGIN proc_sys_reset\r
+ PARAMETER INSTANCE = proc_sys_reset_0\r
+ PARAMETER C_EXT_RESET_HIGH = 0\r
+ PARAMETER HW_VER = 2.00.a\r
+ BUS_INTERFACE RESETPPC0 = ppc_reset_bus\r
+ PORT Slowest_sync_clk = clk_125_0000MHzPLL0_ADJUST\r
+ PORT Ext_Reset_In = sys_rst_s\r
+ PORT Dcm_locked = Dcm_all_locked\r
+ PORT Bus_Struct_Reset = sys_bus_reset\r
+ PORT Peripheral_Reset = sys_periph_reset\r
+END\r
+\r
+BEGIN xps_intc\r
+ PARAMETER INSTANCE = xps_intc_0\r
+ PARAMETER HW_VER = 2.00.a\r
+ PARAMETER C_BASEADDR = 0x81800000\r
+ PARAMETER C_HIGHADDR = 0x8180ffff\r
+ BUS_INTERFACE SPLB = plb_v46_0\r
+ PORT Intr = fpga_0_Ethernet_MAC_MDINT_pin&RS232_Uart_1_Interrupt\r
+ PORT Irq = ppc440_0_EICC440EXTIRQ\r
+END\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.mss b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.mss
new file mode 100644 (file)
index 0000000..ce5c2f7
--- /dev/null
@@ -0,0 +1,131 @@
+\r
+ PARAMETER VERSION = 2.2.0\r
+\r
+\r
+BEGIN OS\r
+ PARAMETER OS_NAME = standalone\r
+ PARAMETER OS_VER = 2.00.a\r
+ PARAMETER PROC_INSTANCE = ppc440_0\r
+ PARAMETER STDIN = RS232_Uart_1\r
+ PARAMETER STDOUT = RS232_Uart_1\r
+END\r
+\r
+\r
+BEGIN PROCESSOR\r
+ PARAMETER DRIVER_NAME = cpu_ppc440\r
+ PARAMETER DRIVER_VER = 1.01.a\r
+ PARAMETER HW_INSTANCE = ppc440_0\r
+ PARAMETER COMPILER = powerpc-eabi-gcc\r
+ PARAMETER ARCHIVER = powerpc-eabi-ar\r
+END\r
+\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = bram\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = xps_bram_if_cntlr_1\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = generic\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = xps_bram_if_cntlr_1_bram\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = uartlite\r
+ PARAMETER DRIVER_VER = 1.14.a\r
+ PARAMETER HW_INSTANCE = RS232_Uart_1\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = gpio\r
+ PARAMETER DRIVER_VER = 2.13.a\r
+ PARAMETER HW_INSTANCE = LEDs_8Bit\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = gpio\r
+ PARAMETER DRIVER_VER = 2.13.a\r
+ PARAMETER HW_INSTANCE = LEDs_Positions\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = gpio\r
+ PARAMETER DRIVER_VER = 2.13.a\r
+ PARAMETER HW_INSTANCE = Push_Buttons_5Bit\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = gpio\r
+ PARAMETER DRIVER_VER = 2.13.a\r
+ PARAMETER HW_INSTANCE = DIP_Switches_8Bit\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = iic\r
+ PARAMETER DRIVER_VER = 1.15.a\r
+ PARAMETER HW_INSTANCE = IIC_EEPROM\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = emc\r
+ PARAMETER DRIVER_VER = 2.00.a\r
+ PARAMETER HW_INSTANCE = SRAM\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = pcie\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = PCIe_Bridge\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = emaclite\r
+ PARAMETER DRIVER_VER = 1.14.a\r
+ PARAMETER HW_INSTANCE = Ethernet_MAC\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = memcon\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = DDR2_SDRAM\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = sysace\r
+ PARAMETER DRIVER_VER = 1.12.a\r
+ PARAMETER HW_INSTANCE = SysACE_CompactFlash\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = apu_fpu_virtex5\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = ppc440_0_apu_fpu_virtex5\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = generic\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = clock_generator_0\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = generic\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = jtagppc_cntlr_inst\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = generic\r
+ PARAMETER DRIVER_VER = 1.00.a\r
+ PARAMETER HW_INSTANCE = proc_sys_reset_0\r
+END\r
+\r
+BEGIN DRIVER\r
+ PARAMETER DRIVER_NAME = intc\r
+ PARAMETER DRIVER_VER = 1.11.a\r
+ PARAMETER HW_INSTANCE = xps_intc_0\r
+END\r
+\r
+\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.xmp b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system.xmp
new file mode 100644 (file)
index 0000000..177a41c
--- /dev/null
@@ -0,0 +1,69 @@
+#Please do not modify this file by hand\r
+XmpVersion: 11.2\r
+VerMgmt: 11.2\r
+IntStyle: default\r
+MHS File: system.mhs\r
+MSS File: system.mss\r
+Architecture: virtex5\r
+Device: xc5vfx70t\r
+Package: ff1136\r
+SpeedGrade: -1\r
+UserCmd1: \r
+UserCmd1Type: 0\r
+UserCmd2: \r
+UserCmd2Type: 0\r
+GenSimTB: 0\r
+SdkExportBmmBit: 1\r
+SdkExportDir: SDK/SDK_Export\r
+InsertNoPads: 0\r
+WarnForEAArch: 1\r
+HdlLang: VHDL\r
+SimModel: BEHAVIORAL\r
+UcfFile: data/system.ucf\r
+EnableParTimingError: 1\r
+ShowLicenseDialog: 1\r
+Processor: ppc440_0\r
+BootLoop: 1\r
+XmdStub: 0\r
+SwProj: RTOSDemo\r
+Processor: ppc440_0\r
+Executable: RTOSDemo/executable.elf\r
+Source: RTOSDemo/../../Common/Minimal/BlockQ.c\r
+Source: RTOSDemo/../../Common/Minimal/blocktim.c\r
+Source: RTOSDemo/../../Common/Minimal/comtest.c\r
+Source: RTOSDemo/../../Common/Minimal/countsem.c\r
+Source: RTOSDemo/../../Common/Minimal/death.c\r
+Source: RTOSDemo/../../Common/Minimal/dynamic.c\r
+Source: RTOSDemo/../../Common/Minimal/flash.c\r
+Source: RTOSDemo/../../Common/Minimal/GenQTest.c\r
+Source: RTOSDemo/../../Common/Minimal/integer.c\r
+Source: RTOSDemo/../../Common/Minimal/QPeek.c\r
+Source: RTOSDemo/../../Common/Minimal/recmutex.c\r
+Source: RTOSDemo/../../Common/Minimal/semtest.c\r
+Source: RTOSDemo/../../../Source/tasks.c\r
+Source: RTOSDemo/../../../Source/list.c\r
+Source: RTOSDemo/../../../Source/queue.c\r
+Source: RTOSDemo/../../../Source/croutine.c\r
+Source: RTOSDemo/../../../Source/portable/GCC/PPC440_Xilinx/portasm.S\r
+Source: RTOSDemo/../../../Source/portable/GCC/PPC440_Xilinx/port.c\r
+Source: RTOSDemo/../../../Source/portable/MemMang/heap_2.c\r
+Source: RTOSDemo/flop/flop-reg-test.c\r
+Source: RTOSDemo/flop/flop.c\r
+Source: RTOSDemo/partest/partest.c\r
+Source: RTOSDemo/serial/serial.c\r
+Source: RTOSDemo/main.c\r
+DefaultInit: EXECUTABLE\r
+InitBram: 0\r
+Active: 1\r
+CompilerOptLevel: 0\r
+GlobPtrOpt: 0\r
+DebugSym: 1\r
+ProfileFlag: 0\r
+SearchIncl: ../../Source/include ../../Source/portable/GCC/PPC440_Xilinx ../Common/include ./RTOSDemo ./RTOSDemo/flop\r
+ProgStart: \r
+StackSize: \r
+HeapSize: \r
+LinkerScript: RTOSDemo/RTOSDemo_linker_script.ld\r
+ProgCCFlags: -D GCC_PPC440 -mregnames\r
+CompileInXps: 1\r
+NonXpsApp: 0\r
diff --git a/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system_incl.make b/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/system_incl.make
new file mode 100644 (file)
index 0000000..71c6546
--- /dev/null
@@ -0,0 +1,153 @@
+#################################################################\r
+# Makefile generated by Xilinx Platform Studio \r
+# Project:C:\E\Dev\FreeRTOS\WorkingCopy3\Demo\PPC440_SP_FPU_Xilinx_Virtex5_GCC\system.xmp\r
+#\r
+# WARNING : This file will be re-generated every time a command\r
+# to run a make target is invoked. So, any changes made to this  \r
+# file manually, will be lost when make is invoked next. \r
+#################################################################\r
+\r
+XILINX_EDK_DIR = /cygdrive/c/devtools/Xilinx/11.1/EDK\r
+NON_CYG_XILINX_EDK_DIR = C:/devtools/Xilinx/11.1/EDK\r
+\r
+SYSTEM = system\r
+\r
+MHSFILE = system.mhs\r
+\r
+MSSFILE = system.mss\r
+\r
+FPGA_ARCH = virtex5\r
+\r
+DEVICE = xc5vfx70tff1136-1\r
+\r
+LANGUAGE = vhdl\r
+\r
+SEARCHPATHOPT = \r
+\r
+SUBMODULE_OPT = \r
+\r
+PLATGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(SUBMODULE_OPT) -msg __xps/ise/xmsgprops.lst\r
+\r
+LIBGEN_OPTIONS = -mhs $(MHSFILE) -p $(DEVICE) $(SEARCHPATHOPT) -msg __xps/ise/xmsgprops.lst\r
+\r
+OBSERVE_PAR_OPTIONS = -error yes\r
+\r
+RTOSDEMO_OUTPUT_DIR = RTOSDemo\r
+RTOSDEMO_OUTPUT = $(RTOSDEMO_OUTPUT_DIR)/executable.elf\r
+\r
+MICROBLAZE_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/microblaze/mb_bootloop.elf\r
+PPC405_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/ppc405/ppc_bootloop.elf\r
+PPC440_BOOTLOOP = $(XILINX_EDK_DIR)/sw/lib/ppc440/ppc440_bootloop.elf\r
+BOOTLOOP_DIR = bootloops\r
+\r
+PPC440_0_BOOTLOOP = $(BOOTLOOP_DIR)/ppc440_0.elf\r
+\r
+BRAMINIT_ELF_FILES =   $(PPC440_0_BOOTLOOP) \r
+BRAMINIT_ELF_FILE_ARGS =   -pe ppc440_0  $(PPC440_0_BOOTLOOP) \r
+\r
+ALL_USER_ELF_FILES = $(RTOSDEMO_OUTPUT) \r
+\r
+SIM_CMD = vsim\r
+\r
+BEHAVIORAL_SIM_SCRIPT = simulation/behavioral/$(SYSTEM)_setup.do\r
+\r
+STRUCTURAL_SIM_SCRIPT = simulation/structural/$(SYSTEM)_setup.do\r
+\r
+TIMING_SIM_SCRIPT = simulation/timing/$(SYSTEM)_setup.do\r
+\r
+DEFAULT_SIM_SCRIPT = $(BEHAVIORAL_SIM_SCRIPT)\r
+\r
+MIX_LANG_SIM_OPT = -mixed yes\r
+\r
+SIMGEN_OPTIONS = -p $(DEVICE) -lang $(LANGUAGE) $(SEARCHPATHOPT) $(BRAMINIT_ELF_FILE_ARGS) $(MIX_LANG_SIM_OPT) -msg __xps/ise/xmsgprops.lst -s mti -X C:/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/\r
+\r
+\r
+LIBRARIES =  \\r
+       ppc440_0/lib/libxil.a \r
+\r
+LIBSCLEAN_TARGETS = ppc440_0_libsclean \r
+\r
+PROGRAMCLEAN_TARGETS = RTOSDemo_programclean \r
+\r
+CORE_STATE_DEVELOPMENT_FILES = \r
+\r
+WRAPPER_NGC_FILES = implementation/ppc440_0_wrapper.ngc \
+implementation/plb_v46_0_wrapper.ngc \
+implementation/xps_bram_if_cntlr_1_wrapper.ngc \
+implementation/xps_bram_if_cntlr_1_bram_wrapper.ngc \
+implementation/rs232_uart_1_wrapper.ngc \
+implementation/leds_8bit_wrapper.ngc \
+implementation/leds_positions_wrapper.ngc \
+implementation/push_buttons_5bit_wrapper.ngc \
+implementation/dip_switches_8bit_wrapper.ngc \
+implementation/iic_eeprom_wrapper.ngc \
+implementation/sram_wrapper.ngc \
+implementation/pcie_bridge_wrapper.ngc \
+implementation/ppc440_0_splb0_wrapper.ngc \
+implementation/ethernet_mac_wrapper.ngc \
+implementation/ddr2_sdram_wrapper.ngc \
+implementation/sysace_compactflash_wrapper.ngc \
+implementation/ppc440_0_fcb_v20_wrapper.ngc \
+implementation/ppc440_0_apu_fpu_virtex5_wrapper.ngc \
+implementation/clock_generator_0_wrapper.ngc \
+implementation/jtagppc_cntlr_inst_wrapper.ngc \
+implementation/proc_sys_reset_0_wrapper.ngc \
+implementation/xps_intc_0_wrapper.ngc\r
+\r
+POSTSYN_NETLIST = implementation/$(SYSTEM).ngc\r
+\r
+SYSTEM_BIT = implementation/$(SYSTEM).bit\r
+\r
+DOWNLOAD_BIT = implementation/download.bit\r
+\r
+SYSTEM_ACE = implementation/$(SYSTEM).ace\r
+\r
+UCF_FILE = data/system.ucf\r
+\r
+BMM_FILE = implementation/$(SYSTEM).bmm\r
+\r
+BITGEN_UT_FILE = etc/bitgen.ut\r
+\r
+XFLOW_OPT_FILE = etc/fast_runtime.opt\r
+XFLOW_DEPENDENCY = __xps/xpsxflow.opt $(XFLOW_OPT_FILE)\r
+\r
+XPLORER_DEPENDENCY = __xps/xplorer.opt\r
+XPLORER_OPTIONS = -p $(DEVICE) -uc $(SYSTEM).ucf -bm $(SYSTEM).bmm -max_runs 7\r
+\r
+FPGA_IMP_DEPENDENCY = $(BMM_FILE) $(POSTSYN_NETLIST) $(UCF_FILE) $(XFLOW_DEPENDENCY)\r
+\r
+SDK_EXPORT_DIR = SDK/SDK_Export/hw\r
+SYSTEM_HW_HANDOFF = $(SDK_EXPORT_DIR)/$(SYSTEM).xml\r
+SYSTEM_HW_HANDOFF_BIT = $(SDK_EXPORT_DIR)/$(SYSTEM).bit\r
+SYSTEM_HW_HANDOFF_BMM = $(SDK_EXPORT_DIR)/$(SYSTEM)_bd.bmm\r
+SYSTEM_HW_HANDOFF_DEP = $(SYSTEM_HW_HANDOFF) $(SYSTEM_HW_HANDOFF_BIT) $(SYSTEM_HW_HANDOFF_BMM)\r
+\r
+#################################################################\r
+# SOFTWARE APPLICATION RTOSDEMO\r
+#################################################################\r
+\r
+RTOSDEMO_SOURCES = /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/BlockQ.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/blocktim.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/comtest.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/countsem.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/death.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/dynamic.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/flash.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/GenQTest.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/integer.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/QPeek.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/recmutex.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../Common/Minimal/semtest.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/tasks.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/list.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/queue.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/croutine.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/portable/GCC/PPC440_Xilinx/portasm.S /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/portable/GCC/PPC440_Xilinx/port.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/../../../Source/portable/MemMang/heap_2.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop-reg-test.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/flop/flop.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/partest/partest.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/serial/serial.c /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/main.c \r
+\r
+RTOSDEMO_HEADERS = \r
+\r
+RTOSDEMO_CC = powerpc-eabi-gcc\r
+RTOSDEMO_CC_SIZE = powerpc-eabi-size\r
+RTOSDEMO_CC_OPT = -O0\r
+RTOSDEMO_CFLAGS = -D GCC_PPC440 -mregnames\r
+RTOSDEMO_CC_SEARCH = # -B\r
+RTOSDEMO_LIBPATH = -L./ppc440_0/lib/ # -L\r
+RTOSDEMO_INCLUDES = -I./ppc440_0/include/   -I../../Source/include -I../../Source/portable/GCC/PPC440_Xilinx -I../Common/include -I./RTOSDemo -I./RTOSDemo/flop \r
+RTOSDEMO_LFLAGS = # -l\r
+RTOSDEMO_LINKER_SCRIPT = /cygdrive/c/E/Dev/FreeRTOS/WorkingCopy3/Demo/PPC440_SP_FPU_Xilinx_Virtex5_GCC/RTOSDemo/RTOSDemo_linker_script.ld\r
+RTOSDEMO_LINKER_SCRIPT_FLAG = -Wl,-T -Wl,$(RTOSDEMO_LINKER_SCRIPT) \r
+RTOSDEMO_CC_DEBUG_FLAG =  -g \r
+RTOSDEMO_CC_PROFILE_FLAG = # -pg\r
+RTOSDEMO_CC_GLOBPTR_FLAG= # -msdata=eabi\r
+RTOSDEMO_CC_INFERRED_FLAGS= -mfpu=sp_full -mcpu=440 \r
+RTOSDEMO_CC_START_ADDR_FLAG=  #  # -Wl,-defsym -Wl,_START_ADDR=\r
+RTOSDEMO_CC_STACK_SIZE_FLAG=  #  # -Wl,-defsym -Wl,_STACK_SIZE=\r
+RTOSDEMO_CC_HEAP_SIZE_FLAG=  #  # -Wl,-defsym -Wl,_HEAP_SIZE=\r
+RTOSDEMO_OTHER_CC_FLAGS= $(RTOSDEMO_CC_GLOBPTR_FLAG)  \\r
+                  $(RTOSDEMO_CC_START_ADDR_FLAG) $(RTOSDEMO_CC_STACK_SIZE_FLAG) $(RTOSDEMO_CC_HEAP_SIZE_FLAG)  \\r
+                  $(RTOSDEMO_CC_INFERRED_FLAGS)  \\r
+                  $(RTOSDEMO_LINKER_SCRIPT_FLAG) $(RTOSDEMO_CC_DEBUG_FLAG) $(RTOSDEMO_CC_PROFILE_FLAG) \r